remove wpf reference

This commit is contained in:
2019-11-27 09:26:49 +01:00
parent 1d640d2352
commit 85b0603409
75 changed files with 408 additions and 2413 deletions

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<startup> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
</startup> </startup>
</configuration> </configuration>

View File

@@ -12,7 +12,7 @@
<AssemblyName>Pilz.Collections</AssemblyName> <AssemblyName>Pilz.Collections</AssemblyName>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<MyType>Windows</MyType> <MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<TargetFrameworkProfile /> <TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

View File

@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------

View File

@@ -1,27 +1,28 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
Option Strict On Option Strict On
Option Explicit On Option Explicit On
Imports System
Namespace My.Resources Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
'class via a tool like ResGen or Visual Studio. '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
'To add or remove a member, edit your .ResX file then rerun ResGen 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
'with the /str option, or rebuild your VS project. 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
'''<summary> '''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc. ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary> '''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _ <Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _ Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _ Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
@@ -32,7 +33,7 @@ Namespace My.Resources
Private resourceCulture As Global.System.Globalization.CultureInfo Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary> '''<summary>
''' Returns the cached ResourceManager instance used by this class. ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
'''</summary> '''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
@@ -46,15 +47,15 @@ Namespace My.Resources
End Property End Property
'''<summary> '''<summary>
''' Overrides the current thread's CurrentUICulture property for all ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
''' resource lookups using this strongly typed resource class. ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
'''</summary> '''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo Friend Property Culture() As Global.System.Globalization.CultureInfo
Get Get
Return resourceCulture Return resourceCulture
End Get End Get
Set(ByVal value As Global.System.Globalization.CultureInfo) Set
resourceCulture = value resourceCulture = value
End Set End Set
End Property End Property

View File

@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
@@ -15,21 +15,21 @@ Option Explicit On
Namespace My Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ <Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _ Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
#Region "My.Settings Auto-Save Functionality" #Region "Automatische My.Settings-Speicherfunktion"
#If _MyType = "WindowsForms" Then #If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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 If My.Application.SaveMySettingsOnExit Then
My.Settings.Save() My.Settings.Save()
End If End If

View File

@@ -10,8 +10,9 @@
<AssemblyName>Pilz.Configuration</AssemblyName> <AssemblyName>Pilz.Configuration</AssemblyName>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<MyType>Windows</MyType> <MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>

View File

@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------

View File

@@ -1,27 +1,28 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
Option Strict On Option Strict On
Option Explicit On Option Explicit On
Imports System
Namespace My.Resources Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
'class via a tool like ResGen or Visual Studio. '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
'To add or remove a member, edit your .ResX file then rerun ResGen 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
'with the /str option, or rebuild your VS project. 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
'''<summary> '''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc. ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary> '''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _ <Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _ Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _ Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
@@ -32,7 +33,7 @@ Namespace My.Resources
Private resourceCulture As Global.System.Globalization.CultureInfo Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary> '''<summary>
''' Returns the cached ResourceManager instance used by this class. ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
'''</summary> '''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
@@ -46,15 +47,15 @@ Namespace My.Resources
End Property End Property
'''<summary> '''<summary>
''' Overrides the current thread's CurrentUICulture property for all ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
''' resource lookups using this strongly typed resource class. ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
'''</summary> '''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo Friend Property Culture() As Global.System.Globalization.CultureInfo
Get Get
Return resourceCulture Return resourceCulture
End Get End Get
Set(ByVal value As Global.System.Globalization.CultureInfo) Set
resourceCulture = value resourceCulture = value
End Set End Set
End Property End Property

View File

@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
@@ -15,21 +15,21 @@ Option Explicit On
Namespace My Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ <Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _ Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
#Region "My.Settings Auto-Save Functionality" #Region "Automatische My.Settings-Speicherfunktion"
#If _MyType = "WindowsForms" Then #If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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 If My.Application.SaveMySettingsOnExit Then
My.Settings.Save() My.Settings.Save()
End If End If

View File

@@ -10,8 +10,9 @@
<AssemblyName>Pilz.Cryptography</AssemblyName> <AssemblyName>Pilz.Cryptography</AssemblyName>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<MyType>Windows</MyType> <MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>

View File

@@ -10,7 +10,8 @@
<AssemblyName>Pilz.Drawing.Drawing3D.OpenGLFactory</AssemblyName> <AssemblyName>Pilz.Drawing.Drawing3D.OpenGLFactory</AssemblyName>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<MyType>Windows</MyType> <MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@@ -49,13 +50,12 @@
<Reference Include="OpenTK.GLControl, Version=3.1.0.0, Culture=neutral, PublicKeyToken=bad199fe84eb3df4, processorArchitecture=MSIL"> <Reference Include="OpenTK.GLControl, Version=3.1.0.0, Culture=neutral, PublicKeyToken=bad199fe84eb3df4, processorArchitecture=MSIL">
<HintPath>..\packages\OpenTK.GLControl.3.1.0\lib\net20\OpenTK.GLControl.dll</HintPath> <HintPath>..\packages\OpenTK.GLControl.3.1.0\lib\net20\OpenTK.GLControl.dll</HintPath>
</Reference> </Reference>
<Reference Include="PresentationCore" />
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.Numerics" /> <Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\portable-net45+win8+wp8+wpa81\System.Numerics.Vectors.dll</HintPath> <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />

View File

@@ -9,6 +9,7 @@ Imports Point = System.Drawing.Point
Imports KeyboardState = OpenTK.Input.KeyboardState Imports KeyboardState = OpenTK.Input.KeyboardState
Imports Keyboard = OpenTK.Input.Keyboard Imports Keyboard = OpenTK.Input.Keyboard
Imports Key = OpenTK.Input.Key Imports Key = OpenTK.Input.Key
Imports Color = System.Drawing.Color
Namespace PreviewN Namespace PreviewN
@@ -25,12 +26,22 @@ Namespace PreviewN
Private _isMouseDown As Boolean = False Private _isMouseDown As Boolean = False
Private isDeactivated As Boolean = False Private isDeactivated As Boolean = False
Private ReadOnly myModels As New Dictionary(Of Object3D, Renderer) Private ReadOnly myModels As New Dictionary(Of Object3D, Renderer)
Private WithEvents RenderTimer As New Timers.Timer(1) With {.AutoReset = True}
Public Property RenderWhenWindowsIsInactive As Boolean = False Public Property RenderWhenWindowsIsInactive As Boolean = False
Public Property EnableCameraControlling As Boolean = True Public Property EnableCameraControlling As Boolean = True
Public Property Scaling As Single = 500.0F Public Property Scaling As Single = 500.0F
Public Property ClearColor As Color = Color.CornflowerBlue Public Property ClearColor As Color = Color.CornflowerBlue
Public Property RenderInterval As Double
Get
Return renderTimer.Interval
End Get
Set
renderTimer.Interval = Value
End Set
End Property
Public ReadOnly Property Camera As Camera Public ReadOnly Property Camera As Camera
Get Get
Return MyCamera Return MyCamera
@@ -111,7 +122,7 @@ Namespace PreviewN
Me.glControl1.VSync = False Me.glControl1.VSync = False
Me.Controls.Add(Me.glControl1) Me.Controls.Add(Me.glControl1)
Me.ResumeLayout(False) Me.ResumeLayout(False)
AddHandler Windows.Media.CompositionTarget.Rendering, AddressOf CompositionTarget_Rendering renderTimer.Start()
Scaling = scale Scaling = scale
@@ -194,7 +205,7 @@ Namespace PreviewN
isDeactivated = True isDeactivated = True
End Sub End Sub
Private Sub CompositionTarget_Rendering(sender As Object, e As EventArgs) Private Sub RenderTimer_Elapsed(sender As Object, e As Timers.ElapsedEventArgs) Handles RenderTimer.Elapsed
If Not isDeactivated OrElse RenderWhenWindowsIsInactive Then If Not isDeactivated OrElse RenderWhenWindowsIsInactive Then
RaiseEvent WandUpdateView() RaiseEvent WandUpdateView()
glControl1.Invalidate() glControl1.Invalidate()

View File

@@ -3,6 +3,7 @@ Imports OpenTK
Imports OpenTK.Graphics.OpenGL Imports OpenTK.Graphics.OpenGL
Imports System.Drawing Imports System.Drawing
Imports System.Drawing.Imaging Imports System.Drawing.Imaging
Imports Bitmap = System.Drawing.Bitmap
Namespace RenderingN Namespace RenderingN

View File

@@ -4,6 +4,9 @@ Imports System.Windows.Forms
Imports OpenTK Imports OpenTK
Imports OpenTK.Graphics.OpenGL Imports OpenTK.Graphics.OpenGL
Imports Pilz.S3DFileParser Imports Pilz.S3DFileParser
Imports Bitmap = System.Drawing.Bitmap
Imports Color = System.Drawing.Color
Imports Image = System.Drawing.Image
Namespace RenderingN Namespace RenderingN
@@ -391,7 +394,8 @@ Namespace RenderingN
GL.BindBuffer(BufferTarget.ElementArrayBuffer, IndicesBuffers(mesh)(iFace)) GL.BindBuffer(BufferTarget.ElementArrayBuffer, IndicesBuffers(mesh)(iFace))
GL.Color4(Color.FromArgb(&H20000000 + (iMesh << 16) + iFace)) 'Color: "2f ff xx xx" -> where 'f' = mesh index and where 'x' is face index Dim colorCode As Integer = &H20000000 + (iMesh << 16) + iFace
GL.Color4(OpenTK.Color.FromArgb((colorCode >> 24) And &HFF, (colorCode >> 16) And &HFF, (colorCode >> 8) And &HFF, colorCode And &HFF)) 'Color: "2f ff xx xx" -> where 'f' = mesh index and where 'x' is face index
GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill) GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill)

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<runtime> <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="OpenTK" publicKeyToken="bad199fe84eb3df4" culture="neutral" /> <assemblyIdentity name="OpenTK" publicKeyToken="bad199fe84eb3df4" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0"/>
</dependentAssembly> </dependentAssembly>
</assemblyBinding> </assemblyBinding>
</runtime> </runtime>
</configuration> <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/></startup></configuration>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="OpenTK" version="3.1.0" targetFramework="net45" /> <package id="OpenTK" version="3.1.0" targetFramework="net472" />
<package id="OpenTK.GLControl" version="3.1.0" targetFramework="net45" /> <package id="OpenTK.GLControl" version="3.1.0" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net45" /> <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
</packages> </packages>

View File

@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------

View File

@@ -1,27 +1,28 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
Option Strict On Option Strict On
Option Explicit On Option Explicit On
Imports System
Namespace My.Resources Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
'class via a tool like ResGen or Visual Studio. '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
'To add or remove a member, edit your .ResX file then rerun ResGen 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
'with the /str option, or rebuild your VS project. 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
'''<summary> '''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc. ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary> '''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _ <Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _ Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _ Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
@@ -32,7 +33,7 @@ Namespace My.Resources
Private resourceCulture As Global.System.Globalization.CultureInfo Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary> '''<summary>
''' Returns the cached ResourceManager instance used by this class. ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
'''</summary> '''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
@@ -46,15 +47,15 @@ Namespace My.Resources
End Property End Property
'''<summary> '''<summary>
''' Overrides the current thread's CurrentUICulture property for all ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
''' resource lookups using this strongly typed resource class. ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
'''</summary> '''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo Friend Property Culture() As Global.System.Globalization.CultureInfo
Get Get
Return resourceCulture Return resourceCulture
End Get End Get
Set(ByVal value As Global.System.Globalization.CultureInfo) Set
resourceCulture = value resourceCulture = value
End Set End Set
End Property End Property

View File

@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
@@ -15,21 +15,21 @@ Option Explicit On
Namespace My Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ <Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _ Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
#Region "My.Settings Auto-Save Functionality" #Region "Automatische My.Settings-Speicherfunktion"
#If _MyType = "WindowsForms" Then #If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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 If My.Application.SaveMySettingsOnExit Then
My.Settings.Save() My.Settings.Save()
End If End If

View File

@@ -10,8 +10,9 @@
<AssemblyName>Pilz.Drawing</AssemblyName> <AssemblyName>Pilz.Drawing</AssemblyName>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<MyType>Windows</MyType> <MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>

View File

@@ -10,8 +10,9 @@
<AssemblyName>Pilz.IO</AssemblyName> <AssemblyName>Pilz.IO</AssemblyName>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<MyType>Windows</MyType> <MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>

View File

@@ -9,8 +9,9 @@
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Pilz.LicenseHelper</RootNamespace> <RootNamespace>Pilz.LicenseHelper</RootNamespace>
<AssemblyName>Pilz.LicenseHelper</AssemblyName> <AssemblyName>Pilz.LicenseHelper</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>

View File

@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------

View File

@@ -1,27 +1,28 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
Option Strict On Option Strict On
Option Explicit On Option Explicit On
Imports System
Namespace My.Resources Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
'class via a tool like ResGen or Visual Studio. '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
'To add or remove a member, edit your .ResX file then rerun ResGen 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
'with the /str option, or rebuild your VS project. 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
'''<summary> '''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc. ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary> '''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _ <Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _ Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _ Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
@@ -32,7 +33,7 @@ Namespace My.Resources
Private resourceCulture As Global.System.Globalization.CultureInfo Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary> '''<summary>
''' Returns the cached ResourceManager instance used by this class. ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
'''</summary> '''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
@@ -46,15 +47,15 @@ Namespace My.Resources
End Property End Property
'''<summary> '''<summary>
''' Overrides the current thread's CurrentUICulture property for all ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
''' resource lookups using this strongly typed resource class. ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
'''</summary> '''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo Friend Property Culture() As Global.System.Globalization.CultureInfo
Get Get
Return resourceCulture Return resourceCulture
End Get End Get
Set(ByVal value As Global.System.Globalization.CultureInfo) Set
resourceCulture = value resourceCulture = value
End Set End Set
End Property End Property

View File

@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
@@ -15,21 +15,21 @@ Option Explicit On
Namespace My Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ <Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _ Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
#Region "My.Settings Auto-Save Functionality" #Region "Automatische My.Settings-Speicherfunktion"
#If _MyType = "WindowsForms" Then #If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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 If My.Application.SaveMySettingsOnExit Then
My.Settings.Save() My.Settings.Save()
End If End If

View File

@@ -10,8 +10,9 @@
<AssemblyName>Pilz.Networking</AssemblyName> <AssemblyName>Pilz.Networking</AssemblyName>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<MyType>Windows</MyType> <MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@@ -49,9 +50,6 @@
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\..\ConsoleApp2\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml.Linq" />

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Newtonsoft.Json" version="12.0.2" targetFramework="net45" /> <package id="Newtonsoft.Json" version="12.0.2" targetFramework="net45" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net45" />
</packages> </packages>

View File

@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------

View File

@@ -1,27 +1,28 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
Option Strict On Option Strict On
Option Explicit On Option Explicit On
Imports System
Namespace My.Resources Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
'class via a tool like ResGen or Visual Studio. '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
'To add or remove a member, edit your .ResX file then rerun ResGen 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
'with the /str option, or rebuild your VS project. 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
'''<summary> '''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc. ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary> '''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _ <Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _ Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _ Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
@@ -32,7 +33,7 @@ Namespace My.Resources
Private resourceCulture As Global.System.Globalization.CultureInfo Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary> '''<summary>
''' Returns the cached ResourceManager instance used by this class. ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
'''</summary> '''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
@@ -46,15 +47,15 @@ Namespace My.Resources
End Property End Property
'''<summary> '''<summary>
''' Overrides the current thread's CurrentUICulture property for all ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
''' resource lookups using this strongly typed resource class. ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
'''</summary> '''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo Friend Property Culture() As Global.System.Globalization.CultureInfo
Get Get
Return resourceCulture Return resourceCulture
End Get End Get
Set(ByVal value As Global.System.Globalization.CultureInfo) Set
resourceCulture = value resourceCulture = value
End Set End Set
End Property End Property

View File

@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
@@ -15,21 +15,21 @@ Option Explicit On
Namespace My Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ <Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _ Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
#Region "My.Settings Auto-Save Functionality" #Region "Automatische My.Settings-Speicherfunktion"
#If _MyType = "WindowsForms" Then #If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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 If My.Application.SaveMySettingsOnExit Then
My.Settings.Save() My.Settings.Save()
End If End If

View File

@@ -10,8 +10,9 @@
<AssemblyName>Pilz.Reflection.PluginSystem</AssemblyName> <AssemblyName>Pilz.Reflection.PluginSystem</AssemblyName>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<MyType>Windows</MyType> <MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<startup> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
</startup> </startup>
</configuration> </configuration>

View File

@@ -12,9 +12,10 @@
<AssemblyName>Pilz.Simple3DFileParser</AssemblyName> <AssemblyName>Pilz.Simple3DFileParser</AssemblyName>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<MyType>Windows</MyType> <MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<NuGetPackageImportStamp> <NuGetPackageImportStamp>
</NuGetPackageImportStamp> </NuGetPackageImportStamp>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
@@ -62,8 +63,9 @@
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Deployment" /> <Reference Include="System.Deployment" />
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\portable-net45+win8+wp8+wpa81\System.Numerics.Vectors.dll</HintPath> <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Aspose.3D" version="18.4.0" targetFramework="net45" /> <package id="Aspose.3D" version="18.4.0" targetFramework="net45" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net45" /> <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
</packages> </packages>

View File

@@ -10,8 +10,9 @@
<AssemblyName>Pilz.Threading</AssemblyName> <AssemblyName>Pilz.Threading</AssemblyName>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<MyType>Windows</MyType> <MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>

View File

@@ -10,7 +10,7 @@
<AssemblyName>Pilz.UI</AssemblyName> <AssemblyName>Pilz.UI</AssemblyName>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<MyType>Windows</MyType> <MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<TargetFrameworkProfile /> <TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>

View File

@@ -1,38 +0,0 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
'HINWEIS: Diese Datei wird automatisch generiert und darf nicht direkt bearbeitet werden. Wenn Sie Änderungen vornehmen möchten
' oder in dieser Datei Buildfehler auftreten, wechseln Sie zum Projekt-Designer.
' (Wechseln Sie dazu zu den Projekteigenschaften, oder doppelklicken Sie auf den Knoten "Mein Projekt" im
' Projektmappen-Explorer). Nehmen Sie auf der Registerkarte "Anwendung" entsprechende Änderungen vor.
'
Partial Friend Class MyApplication
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Public Sub New()
MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
Me.IsSingleInstance = false
Me.EnableVisualStyles = true
Me.SaveMySettingsOnExit = true
Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
End Sub
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.Pilz.Updating.UpdateInstaller.Form1
End Sub
End Class
End Namespace

View File

@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>true</MySubMain>
<MainForm>Form1</MainForm>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<ApplicationType>0</ApplicationType>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@@ -1,35 +0,0 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' Allgemeine Informationen über eine Assembly werden über die folgenden
' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
' die einer Assembly zugeordnet sind.
' Werte der Assemblyattribute überprüfen
<Assembly: AssemblyTitle("Pilz.Updating.Updater")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("DRSN")>
<Assembly: AssemblyProduct("Pilz.Updating.Updater")>
<Assembly: AssemblyCopyright("Copyright © DRSN 2019")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird.
<Assembly: Guid("861f6a7b-a698-4b10-b8e9-465e81609dc3")>
' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
'
' Hauptversion
' Nebenversion
' Buildnummer
' Revision
'
' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@@ -1,63 +0,0 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Imports System
Namespace My.Resources
'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
'-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
'''<summary>
''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Pilz.Updating.UpdateInstaller.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set
resourceCulture = value
End Set
End Property
End Module
End Namespace

View File

@@ -1,117 +0,0 @@
<?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>

View File

@@ -1,73 +0,0 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
#Region "Automatische My.Settings-Speicherfunktion"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.Pilz.Updating.UpdateInstaller.My.MySettings
Get
Return Global.Pilz.Updating.UpdateInstaller.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

@@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@@ -1,136 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" 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>{1BA3D8E8-C514-4182-9E6E-9E6BB7AF0403}</ProjectGuid>
<OutputType>WinExe</OutputType>
<StartupObject>Pilz.Updating.UpdateInstaller.My.MyApplication</StartupObject>
<RootNamespace>Pilz.Updating.UpdateInstaller</RootNamespace>
<AssemblyName>Pilz.Updating.UpdateInstaller</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>WindowsForms</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>Pilz.Updating.UpdateInstaller.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>Pilz.Updating.UpdateInstaller.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Drawing" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows.Forms" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="UpdateInstaller.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="UpdateInstaller.Designer.vb">
<DependentUpon>UpdateInstaller.vb</DependentUpon>
<SubType>Form</SubType>
</Compile>
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="UpdateInstaller.resx">
<DependentUpon>UpdateInstaller.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Pilz.Updating\Pilz.Updating.vbproj">
<Project>{354255d9-9536-4400-b915-ffc49c2ce93f}</Project>
<Name>Pilz.Updating</Name>
</ProjectReference>
<ProjectReference Include="..\Pilz\Pilz.vbproj">
<Project>{277d2b83-7613-4c49-9cab-e080195a6e0c}</Project>
<Name>Pilz</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
</Project>

View File

@@ -1,65 +0,0 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class UpdateInstaller
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(UpdateInstaller))
Me.ProgressBar1 = New System.Windows.Forms.ProgressBar()
Me.Label1 = New System.Windows.Forms.Label()
Me.SuspendLayout()
'
'ProgressBar1
'
Me.ProgressBar1.Location = New System.Drawing.Point(15, 25)
Me.ProgressBar1.Name = "ProgressBar1"
Me.ProgressBar1.Size = New System.Drawing.Size(390, 16)
Me.ProgressBar1.TabIndex = 0
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(12, 9)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(62, 13)
Me.Label1.TabIndex = 1
Me.Label1.Text = "Updating ..."
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(417, 55)
Me.ControlBox = False
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.ProgressBar1)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "Form1"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "Updater"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents ProgressBar1 As ProgressBar
Friend WithEvents Label1 As Label
End Class

View File

@@ -1,643 +0,0 @@
<?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>
<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>
AAABAAkAICAQAAEABADoAgAAlgAAABAQEAABAAQAKAEAAH4DAAAwMAAAAQAIAKgOAACmBAAAICAAAAEA
CACoCAAAThMAABAQAAABAAgAaAUAAPYbAAAAAAAAAQAgAEIdAABeIQAAMDAAAAEAIACoJQAAoD4AACAg
AAABACAAqBAAAEhkAAAQEAAAAQAgAGgEAADwdAAAKAAAACAAAABAAAAAAQAEAAAAAACAAgAAAAAAAAAA
AAAQAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8A
AAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIiIiIiIiIiIgAAACHd3d3d3d3d3d3d3d3
gAAAh3d3d3d3d3d3d3d3d4AAAId3d3d3d3d3d3d3d3iAAACHd3d3d3d3d3d3d3d3gAAAh3d3d3d3d3d3
d3d3d4AAAIh4eHh3h3h3h3h3h3iAAACIeHh3h4eHh4eHh4eIgAAAiHd3d4eHh4eHh4eHh4AAAIiId0Z3
h4h4d4h4d4iAAACId3Z2d4eHiIiHiIiHgAAAiHZ2ZnZ4h4eHh4eHiIAAAIh3ZnZ2d4iIiIiIiIiAAACI
d3Z2Z3eIiIiIiIiIgAAAiIh2xneIiIiIiIiIiIAAAIh4dnZniIiIiIiIiIiAAACIiHZ8d4iIiIiIiIiI
gAAACIhnZneIiIiIiIiIiIAAAAh3dmdnh4iIeHh4eHgAAAAIh3Z8Z4iIiHh4eHiIAAAACIh2dneHiIiI
iIiIiAAAAACIdnZniIiIiIiIiIAAAAAAiHZnx3iIiIiIiIiAAAAAAAiHZ2dniIiIiIiIAAAAAAAAB2dn
ZnZ2dnZ2doAAAAAAAABnx2dnZ2dmdsaAAAAAAAAAB2dnxnxnZ2dngAAAAAAAAAB2dnZ2fGfHZoAAAAAA
AAAACHZ2dnZ2ZmeAAAAAAAAAAAAAAAAIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAP/////gAAAPwAAAB8AA
AAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB+AA
AAfgAAAP4AAAD+AAAA/wAAAf8AAAH/gAAD/+AAAf/wAAH/+AAB//wAAf/+AAH///4P//////KAAAABAA
AAAgAAAAAQAEAAAAAADAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA
AACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAh3d3d3d3cACHd3d3d3
dwAId3h3d3d4AAiHd4eHh3gACHdnh4d4eAAIdmd4iIiIAAh3Z3iIiIgACIdniIiIiAAId2eIh4eIAACH
d3iIiIgAAIdmiIiIgAAACHZ3d3dwAAAAdnZ2Z2AAAAAIZ2dnYAAAAAAAAAAAAP////+AA///gAP//4AD
//+AA///gAP//4AD//+AA///gAP//4AD///AA///wAf//+AH///wB///+Af///////8oAAAAMAAAAGAA
AAABAAgAAAAAAIAKAAAAAAAAAAAAAAABAAAAAAAAAAAAAJ5gLgCbYjEAnWMyAJpjNACbZDUAnGQ1AJ1n
OQChYi8Ao2MwAKJkMQClZDAAomY0AKVnNACoZjEApmg1AKpoMgCtaTMAqWk1AK5qNAClaTkApWs8AKZs
PACtbDgAqW09ALBqNACybDUAtW01ALhvNwCwbTgArnA+ALlwNwC2cDoAsnE/ALtxOAC9cjgAwHM5AMF0
OQDEdjsAxXc8AJxqQAClbUAAs3JAALRzQQC1dkUAvXlFALJ5TQC0e08AsHpQAI1+bQCRf20Ax3tBAMh/
RgC6hl0AvoleAJOAbgCKg3gAjIN4AI6FegCVgnAAl4RxAJmFcgCRiHwAmYx+AKCCZwCogmQAoYNoAKOE
aAClhWkAqYdqAK2JawCsiWwAsYVjALCGZADHgEoAz4xaAMCKYADJlm4AzJdvAM2YbwDSlGUAyZlyAM+Z
cADKmnQA0JlwANKddADWnnQA1aB4ANejfABokKkAapKsAGyUrQBvl7AAcZmyAHOatAB0nLYAfZ+zAHqf
tgB3nrgAeJ+5AH2gtQB5oLoAfqK4AHuivAB8o70AfaS+AH6lwACVjoQAkY+IAJyTigCNkZQAlpaSAJGU
mACVmpsAkpmdAJacnQCYn58AnJ+fAKmWhQCim5IAvaKLAImYpACPnKgAkZ6qAI+iqwCaoKAAkaKsAJOl
rQCVpq8Am6etAIGjtwCOpbIAgaS5AIWmuwCCprwAhai9AImqvgCRpbAAlKazAJaosACZqrIAn6uxAJOt
vwDbqYMA3K6LANWwkwDftpcAgKfBAIOnxACBqMIAhqnBAIOqxACEqMUAhazGAIiswgCJr8cAh6vIAIau
yACJq8gAia7KAImwygCKsswAjLHMAI20zgCbtMMAkbHKAJK0ywCTs8wAlLPNAJO0zgCUtM4Am7jNAJy5
zgCPt9AAkLbQAJa20ACRudIAlbrSAJS81ACYudIAnbrQAJi80wCfvNEAmr3VAJ2/1ACgvdIAnMDWAJvB
2ACgwdYAocPYAKXD2ACuyNsArczfALPL3QC1z98AuMzcALTQ4QC40uEAwdPiAMDW5QDL2eIAyd3pAP9R
xwD/cdEA/5HcAP+x5QD/0fAA////AAAAAAAsAC8ASwBQAGkAcACHAJAApQCwAMQAzwDhAPAA8BH/APIx
/wD0Uf8A9nH/APeR/wD5sf8A+9H/AP///wAAAAAAGwAvAC0AUAA/AHAAUgCQAGMAsAB2AM8AiADwAJkR
/wCmMf8AtFH/AMJx/wDPkf8A3LH/AOvR/wD///8AAAAAAAgALwAOAFAAFQBwABsAkAAhALAAJgDPACwA
8AA+Ef8AWDH/AHFR/wCMcf8AppH/AL+x/wDa0f8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAC0rKysrKysrKysrKysq6usrKysq6urq6urq6urq6urq6urrKurq8MAAAAAAAAA
AABeWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZW6sAAAAAAAAAAABfWVlZWVlZWVlZ
WVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWqsAAAAAAAAAAABfW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1taW6wAAAAAAAAAAABfW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbXKwAAAAAAAAAAABiXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXawAAAAAAAAA
AABlXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXqwAAAAAAAAAAABlXl9eXl5eXl5e
X15fXl5eXl9eX19fX19fX19fX19fX15fXl9fX6wAAAAAAAAAAABnYmJiYmJiYmJfYl9iYmJiYmJfYl9i
X2JfYl9iX2JfYl9iX2JfYrQAAAAAAAAAAABnY2NjYmNjY2NjY2NjY2NjY2NjZWVlZWVlZWVlZWVlY2Nj
ZWNjZbQAAAAAAAAAAABpZWdlZ2VlZ2FlZWdlZWdlZ2VlZWVlZWVlZWVlZWVlZ2VlZWdlZbQAAAAAAAAA
AABpaGhoaGhoYDE4ZGhoaGhoaGhpaGhoaGhoaGhoaGhoaGhoaGhoaLQAAAAAAAAAAABqaWlqaWlkMgIF
OWZpaWpqaWpqampqampqampqampqampqamlpabYAAAAAAAAAAACTk5OTk4IyAwEBBTqGk5OTk5OTk5OT
k5OTk5OTk5OTk5OTk5OTk7QAAAAAAAAAAACVlZeVhDcDCAEBAQU6hpWVl5WVlZWVlZWVlZWVlZWVl5WX
l5WVlbQAAAAAAAAAAACVl5eFOwwICAgIAQEFPoeXmZeXl5eXl5eXl5eXl5eXl5eXl5eXl7YAAAAAAAAA
AACVnYc9DAgJCAgICAEIBj6amZ2dnZ2dnZ2dnZ2dnZ2dmZ2ZnZ2ZmbYAAAAAAAAAAACXiD0PCwsKCQgJ
CAgBAQY+mpudm5ubm5udm52bnZudm6CdoJ2bnbYAAAAAAAAAAACWPykVFAsLCwoJCggIBgcobJugoKGg
oKGgoaChoKGgoaChoaChn7kAAAAAAAAAAACWiX5+bxULCwsKCgkKa3x8g6Kjo6OjoaOho6GjoaOhoaGj
oaOhoLkAAAAAAAAAAACdo6OjfxYODg4LCwoMcaOjraOjo6Ojo6Ojo6Ojo6Oto6Ojo62jobkAAAAAAAAA
AACdra2tgBgSDg4LCwsMc62tra2xsbWxra2tra2wrbCtra2wrbCto7kAAAAAAAAAAACfsLCwixgQEBAO
DgsNc7CtsLrFxcXFu7CwrbCtsK2wsLCwsLCwrbkAAAAAAAAAAACfsLKyjB4SEBAQDg4PdLKwsrvExMXE
u7KysrKysrKysrCysrCyrbkAAAAAAAAAAAChsrKyjB4TEREREBISfbKysrvAwMDAu7KysrKysrKysrKy
srKysrkAAAAAAAAAAACdo62jih4TExMRERASc62to7G9vr29saOto62tra2tra6jraOuobkAAAAAAAAA
AACYampqeR4aGRkTEREXbmqTk5inqKinlJRqampqampqamqUampqarkAAAAAAAAAAAC0mJiceiEaGhoZ
GRMXcJiYmJ6or6qonpyYnJicmJyYnJicmJicmAAAAAAAAAAAAADGnJyceysbGxoaGhkXcpycnJ+qr6+q
opycnJycnJycnJycnJycpwAAAAAAAAAAAAAAqZ+ffiscHBsbGhodcZ+fn6Kzs6+vop+fn5+fn5+fn5+f
n5+fwQAAAAAAAAAAAAAAv6KiiiwcHBwbGxoabaKioqmzs7Ozo6KioqKioqKioqOioqKjAAAAAAAAAAAA
AAAAAKOuji8fHxwcHBsbQaWjo663t7e3rq6jrqOuo66jrqOuo66+AAAAAAAAAAAAAAAAAL2tpkgjIiIf
HBwcKnWusLC3t7q3sq2wrbCtsK2wra2wra0AAAAAAAAAAAAAAAAAAMewsHYkIyIiIh8cHDCBsLK8urq7
srGwsrCysLCysLKwsLoAAAAAAAAAAAAAAAAAAAC6so0tJCQjIiIiHBwud6S8uLy8tbKxsbGxsbGxsbGx
scIAAAAAAAAAAAAAAAAAAAAAychTJSQkJCMiHx8fIC5JRkZHRUVFRERERENDQ0NCQHgAAAAAAAAAAAAA
AAAAAAAAAAAASiUlJCQjIyIfHxwcHBsbGhoaGRMTEREQEBAODjUAAAAAAAAAAAAAAAAAAAAAAAAAkicm
JSUkIyMjIh8cHBsbGxoaGhkTExEREBAQEDUAAAAAAAAAAAAAAAAAAAAAAAAAAFgmJiYlJSQkIyIiHxwc
HBsbGhoaGhMTEREREDUAAAAAAAAAAAAAAAAAAAAAAAAAAABWJyYmJSUkJCMjIh8fHBwbGxsaGhoZExMR
ETYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjzMnJiYlJSQkIyMiIh8cHBsbGhoaGRkTETYAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABLJyYmJiUkJCQjIyIiHBwcGxsaGhoZGUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAFA0JiYlJSQkIyMiHx8cHBsbGxoaGUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBYV1dX
VVRST09PTk5NTU1NUZEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
/////wAA////////AADwAAAAAB8AAPAAAAAAHwAA8AAAAAAfAADwAAAAAB8AAPAAAAAAHwAA8AAAAAAf
AADwAAAAAB8AAPAAAAAAHwAA8AAAAAAfAADwAAAAAB8AAPAAAAAAHwAA8AAAAAAfAADwAAAAAB8AAPAA
AAAAHwAA8AAAAAAfAADwAAAAAB8AAPAAAAAAHwAA8AAAAAAfAADwAAAAAB8AAPAAAAAAHwAA8AAAAAAf
AADwAAAAAB8AAPAAAAAAHwAA8AAAAAAfAADwAAAAAB8AAPAAAAAAHwAA8AAAAAAfAADwAAAAAD8AAPAA
AAAAPwAA+AAAAAA/AAD4AAAAAH8AAPwAAAAAfwAA/AAAAAD/AAD8AAAAAP8AAP4AAAAA/wAA/wAAAAD/
AAD/4AAAAP8AAP/gAAAA/wAA//AAAAD/AAD/+AAAAP8AAP/8AAAA/wAA//8AAAD/AAD//8AAAP8AAP//
+AAA/wAA////////AAD///////8AACgAAAAgAAAAQAAAAAEACAAAAAAAgAQAAAAAAAAAAAAAAAEAAAAA
AAAAAAAAnmEuAJtjNACcYzUAnWQ1AJtoPgCdaj8AoWIvAKNjMACjZDAApWQwAKhmMQCqaDIArWkzAK9q
NACkajsApWs8AKZtPQCpbj4AsGs0ALJsNQC1bTUAuG83AK1wPwC5cDcAtnA6ALZxPAC6cTgAvXI4AL91
PADAczkAwXQ6AMR2OwDFdzwAl2pDAJtrQgCgbEAAqW9AAK1xQAChdE4AsnJBALRzQQC0dkYArXpTALR8
UADGe0IAyX9IAJmCbACLgnYAjoV5AJGHfACZhngAmYl6AJyLfQCdjX0Aq4hrALCJagCiiHMApY98AMiA
SgDOi1gAzoxZAM6SZABpkasAa5OtAGyUrQB/l6MAbpawAHCYsQBzm7QAdJy1AHuftQB3n7gAeqG6AH6i
uAB8pL0Af6fBAIeOjgCRkIoAipCQAI2TkgCQlZUAlZqaALCnnQCPm6EAjJ2rAJChrwCPo7AAj6WxAI6o
tgCBpbsAgKe/AISovgCNqboAkaaxAJKmtQCTqLMAlqq1AJirtQCZrLYAkq2/AJituACfr7gAo6alAKOw
twCjsrkAzaiLANCqjADNrJEA37OSANq1mQDct5oAg6fEAICowQCHq8EAg6vEAISpxACFrcYAia/HAIat
yACIrcoAjK3JAJOuwQCJsMoAjLLKAIuxzACPscwAjrbPAJS0ygCRtc4AlbXOAJm3zwCOtdAAk7fQAJa3
0ACRuNIAlbnSAJO71ACZudEAmbzUAJ2+1ACdwNcAosTaAKTF2gCtyt0AuMzaALrO3AC80N4AsM3gALbR
4QC90eAA8GkAAP95EQD/ijEA/51RAP+vcQD/wZEA/9KxAP/l0QD///8AAAAAAC8DAABQBAAAcAYAAJAJ
AACwCgAAzwwAAPAOAAD/IBIA/z4xAP9cUQD/enEA/5eRAP+2sQD/1NEA////AAAAAAAvAA4AUAAXAHAA
IQCQACsAsAA2AM8AQADwAEkA/xFaAP8xcAD/UYYA/3GcAP+RsgD/scgA/9HfAP///wAAAAAALwAgAFAA
NgBwAEwAkABiALAAeADPAI4A8ACkAP8RswD/Mb4A/1HHAP9x0QD/kdwA/7HlAP/R8AD///8AAAAAACwA
LwBLAFAAaQBwAIcAkAClALAAxADPAOEA8ADwEf8A8jH/APRR/wD2cf8A95H/APmx/wD70f8A////AAAA
AAAbAC8ALQBQAD8AcABSAJAAYwCwAHYAzwCIAPAAmRH/AKYx/wC0Uf8AwnH/AM+R/wDcsf8A69H/AP//
/wAAAAAACAAvAA4AUAAVAHAAGwCQACEAsAAmAM8ALADwAD4R/wBYMf8AcVH/AIxx/wCmkf8Av7H/ANrR
/wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRkZGRkZGRkZGRkZGRkZGRkZGR
kZGRkZGRAAAAAAAAkUE/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/P0CRAAAAAACSQT8/P0A/QD8/Pz9APz8/
Pz8/Pz8/Pz9AQZEAAAAAAJFDQUNBQ0FDQ0NBQ0NDQ0NDQ0NDQ0NDQUNDkgAAAAAAkUVERERERERERERE
REREREREREREREREREWSAAAAAACSRkVGRUVFRkZFRUVGRkZGRkZGRkVGRUZGRpIAAAAAAJJISEhISEhI
SEhISEhISEhISEhISEhISEhIkgAAAAAAkktLSUlJQkdLSUtJS0lLSUlJS0lLSUtJS0mSAAAAAACTS0tL
S00iMEpLW0tLTEtMS0xLW0tMS0xLS5MAAAAAAJNMcVtPBQECMVpxcXFxcXFxcXFxcXFxcXFMkgAAAAAA
k3NzUAYHAQEDMlxzc3N1c3N1c3Nzc3Nzc3OTAAAAAACTc1EkCAkHBwcEMnJ3dXZ1dnV2dXZ1dnZ3dZMA
AAAAAJNUJxAKCQgJBwQjTnZ7e3t7e317e317e3t2lgAAAAAAk11eUhAKCgkJL1hZfH99fX1/fX1/fX1/
fH2WAAAAAACWfX9gJQsLCgk0f4SHiIiHf39/f39/f39/fZYAAAAAAJZ/h2ElDAwLCjaHiY+VlY+Hh4eH
h4eHh4mElgAAAAAAloeJZSYODAwMNomJj5SUj4mJiYmJiYmJiYeWAAAAAAAAeHtXJg4NDQ00e3uFjIyF
e3t7e3t7e3t7d5MAAAAAAAB0cFUmFBMODTNwcHmCgnlwcHBwcHBwcHB0AAAAAAAAAIp4VigVFRQTNXh4
foaGfnh4eXh4eHh4eIMAAAAAAAAAln1fKhYVFRU5fH2BioiFfX19fX19fX19lgAAAAAAAAAAiHosGxgW
FSt6hIiLi4iEhISEhISEhIgAAAAAAAAAAACQhTgcGxgWGTqAi42Ni4mIh4mHiIeIkAAAAAAAAAAAAACO
Ux0eHBsYGjdnaGlmY2NjY2NiYmEAAAAAAAAAAAAAAAAAPh8eHBwbGBopKSgmFxcXEhIREWwAAAAAAAAA
AAAAAAAAOyAfHhwcGxYWFRUUFA4NDQwMagAAAAAAAAAAAAAAAAAALiAfHx4cGxsWFRUUFBQODQ1rAAAA
AAAAAAAAAAAAAAAAPCEgHx4eHBsYFhUVFBMTDWsAAAAAAAAAAAAAAAAAAAAAbT0tHx8eHBwbGBYVFRQT
awAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9vbm5uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP/////gAAAPwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AA
AAfAAAAHwAAAB8AAAAfAAAAHwAAAB+AAAAfgAAAP4AAAD+AAAA/wAAAf8AAAH/gAAD/+AAAf/wAAH/+A
AB//wAAf/+AAH///4P//////KAAAABAAAAAgAAAAAQAIAAAAAABAAQAAAAAAAAAAAAAAAQAAAAAAAAAA
AACcZDUAnWc5AKFiLwCjZTIApWUwAKlnMgCuajMArGs2AKVtPwCxazQAtW01ALlwNwC1cDoAs3I+ALpx
OQC+cjkAu3M8AL52PgDAdDkAl3RWAJ52VACpcUMArXJDALF1RQC0ek0AontbAKd8WwChfF0AtH5UAJp/
ZwDCeUEAjoR4AKyOdQChjXoApI57AKmSfQDJg08A0ZZpAG6VrQBvl7AAc5qyAHSasgB1nbYAeZ+4AHyg
tgB7o7wAfqW9AIaKiACQj4oAgJmoAIafrQCUoKQAmaSqAI2isgCCprwAkaa1AJCptgCVrboAy6iMANur
hgCBqcIAh67GAIiqwwCMq8QAhq3IAImuyQCNtM0AkrbOAJW2zwCZtskAnLnMAJ+8zwCQttAAkbjRAJi7
0gCYvNQAornJAKi7yACiv9IAoL3UAKnC0QCnx9sAqsfaAK3H2QAKsAAAC88AAA7wAAAg/xIAPf8xAFv/
UQB5/3EAmP+RALX/sQDU/9EA////AAAAAAAULwAAIlAAADBwAAA9kAAATLAAAFnPAABn8AAAeP8RAIr/
MQCc/1EArv9xAMD/kQDS/7EA5P/RAP///wAAAAAAJi8AAEBQAABacAAAdJAAAI6wAACpzwAAwvAAANH/
EQDY/zEA3v9RAOP/cQDp/5EA7/+xAPb/0QD///8AAAAAAC8mAABQQQAAcFsAAJB0AACwjgAAz6kAAPDD
AAD/0hEA/9gxAP/dUQD/5HEA/+qRAP/wsQD/9tEA////AAAAAAAvFAAAUCIAAHAwAACQPgAAsE0AAM9b
AADwaQAA/3kRAP+KMQD/nVEA/69xAP/BkQD/0rEA/+XRAP///wAAAAAALwMAAFAEAABwBgAAkAkAALAK
AADPDAAA8A4AAP8gEgD/PjEA/1xRAP96cQD/l5EA/7axAP/U0QD///8AAAAAAC8ADgBQABcAcAAhAJAA
KwCwADYAzwBAAPAASQD/EVoA/zFwAP9RhgD/cZwA/5GyAP+xyAD/0d8A////AAAAAAAvACAAUAA2AHAA
TACQAGIAsAB4AM8AjgDwAKQA/xGzAP8xvgD/UccA/3HRAP+R3AD/seUA/9HwAP///wAAAAAALAAvAEsA
UABpAHAAhwCQAKUAsADEAM8A4QDwAPAR/wDyMf8A9FH/APZx/wD3kf8A+bH/APvR/wD///8AAAAAABsA
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAH9//wJ/n78If5+/CH+fvwh/n78If5+/CH+fvwh/n78If5+/CH+fvwh/n78I
f5+/CH+fvwh/n78If5+/CH+fvwh/n78If5+/CH+fvwh/n78If5+/CH+fvwh/n78If5+/CH+fvwh/n78I
f5+/CH+fvwh/n78If5+/CH+fvwh/n78If5+/CH+fvwh/n78If5+/CH+fvwh/n78If5+/CH+qqgYAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHWcujR1nbuydZ26t3Wdurd1nbq3dZ26t3Wdurd1nbq3
dZ26t3Wdurd1nbq3dZ26t3Wdurd1nbq3dZ26t3Wdurd1nbq3dZ26t3Wdurd1nbq3dZ26t3Wdurd1nbq3
dZ26t3Wdurd1nbq3dZ26t3Wdurd1nbq3dZ26t3Wdurd1nbq3dZ26t3Wdurd1nbq3dZ26t3Wdurd1nbq3
dZ26t3eevYR/qqoGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHifu0hvl7P3aJCq/2iQqv9okKr/
aJCq/2iQqv9okKr/aJCq/2iQqv9okKr/aJCq/2iQqv9okKr/aJCq/2iQqv9okKr/aJCq/2iQqv9okKr/
aJCq/2iQqv9okKr/aJCq/2iQqv9okKr/aJCq/2iQqv9okKr/aJCq/2iQqv9okKr/aJCq/2iQqv9okKr/
aJCq/2iQqv9okKr/apKt/3Wdurd/n78IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHifu0hvl7P3
aJCp/2iQqf9okKn/aJCp/2iQqf9okKn/aJCp/2iQqf9okKn/aJCp/2iQqf9okKn/aJCp/2iQqf9okKn/
aJCp/2iQqf9okKn/aJCp/2iQqf9okKn/aJCp/2iQqf9okKn/aJCp/2iQqf9okKn/aJCp/2iQqf9okKn/
aJCp/2iQqf9okKn/aJCp/2iQqf9okKn/apKs/3Wdurd/n78IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAHifu0hxmbT3a5Os/2uTrP9rk6z/a5Os/2uTrP9rk6z/a5Os/2uTrP9rk6z/a5Os/2uTrP9rk6z/
a5Os/2uTrP9rk6z/a5Os/2uTrP9rk6z/a5Os/2uTrP9rk6z/a5Os/2uTrP9rk6z/a5Os/2uTrP9rk6z/
a5Os/2uTrP9rk6z/a5Os/2uTrP9rk6z/a5Os/2uTrP9rk6z/bZWu/3adurd/n78IAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAHifu0hxmbX3bJSt/2yUrf9slK3/bJSt/2yUrf9slK3/bJSt/2yUrf9slK3/
bJSt/2yUrf9slK3/bJSt/2yUrf9slK3/bJSt/2yUrf9slK3/bJSt/2yUrf9slK3/bJSt/2yUrf9slK3/
bJSt/2yUrf9slK3/bJSt/2yUrf9slK3/bJSt/2yUrf9slK3/bJSt/2yUrf9slK3/bpav/3aeurd/n78I
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHifu0hzm7b3b5ew/2+XsP9vl7D/b5ew/2+XsP9vl7D/
b5ew/2+XsP9vl7D/b5ew/2+XsP9vl7D/b5ew/2+XsP9vl7D/b5ew/2+XsP9vl7D/b5ew/2+XsP9vl7D/
b5ew/2+XsP9vl7D/b5ew/2+XsP9vl7D/b5ew/2+XsP9vl7D/b5ew/2+XsP9vl7D/b5ew/2+XsP9vl7D/
cJiy/3aevLd/n78IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHifu0h0nLf3cZmy/3GZsv9xmbL/
cZmy/3GZsv9xmbL/cZmy/3GZsv9xmbL/cZmy/3GZsv9xmbL/cZmy/3GZsv9xmbL/cZmy/3GZsv9xmbL/
cZmy/3GZsv9xmbL/cZmy/3GZsv9xmbL/cZmy/3GZsv9xmbL/cZmy/3GZsv9xmbL/cZmy/3GZsv9xmbL/
cZmy/3GZsv9xmbL/cpqz/3aevLd/n78IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHifu0h1nbj3
c5u0/3ObtP9zm7T/c5u0/3ObtP9zm7T/c5u0/3ObtP9zm7T/c5u0/3ObtP9zm7T/c5u0/3ObtP9zm7T/
c5u0/3ObtP9zm7T/c5u0/3ObtP9zm7T/c5u0/3ObtP9zm7T/c5u0/3ObtP9zm7T/c5u0/3ObtP9zm7T/
c5u0/3ObtP9zm7T/c5u0/3ObtP9zm7T/dJy1/3eevLd/n78IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAHifu0h2nrn3dZ22/3Wdtv91nbb/dZ22/3Wdtv91nbb/dZ22/3Wdtv91nbb/dZ22/3Wdtv91nbb/
dZ22/3Wdtv91nbb/dZ22/3Wdtv91nbb/dZ22/3Wdtv91nbb/dZ22/3Wdtv91nbb/dZ22/3Wdtv91nbb/
dZ22/3Wdtv91nbb/dZ22/3Wdtv91nbb/dZ22/3Wdtv91nbb/dZ23/3egvbd/n78IAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAHifu0h3oLr3d5+4/3efuP93n7j/d5+4/3efuP93n7j/d5+4/3efuP93n7j/
d5+4/3efuP93n7j/d5+4/3efuP93n7j/d5+4/3efuP93n7j/d5+4/3efuP93n7j/d5+4/3efuP93n7j/
d5+4/3efuP93n7j/d5+4/3efuP93n7j/d5+4/3efuP93n7j/d5+4/3efuP93n7j/d5+5/3egvbd/n78I
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHifu0h4obv3eaG6/3mhuv95obr/eaG6/3mhuv95obr/
eaG6/3qftv96n7f/eaG6/3mhuv95obr/eaG6/3mhuv95obr/eaG6/3mhuv95obr/eaG6/3mhuv95obr/
eaG6/3mhuv95obr/eaG6/3mhuv95obr/eaG6/3mhuv95obr/eaG6/3mhuv95obr/eaG6/3mhuv95obr/
eaG7/3egvbd/n78IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHifu0h5orz3e6O8/3ujvP97o7z/
e6O8/3ujvP97o7z/fZ+z/4x+b/+Kg3j/fKC2/3ujvP97o7z/e6O8/3ujvP97o7z/e6O8/3ujvP97o7z/
e6O8/3ujvP97o7z/e6O8/3ujvP97o7z/e6O8/3ujvP97o7z/e6O8/3ujvP97o7z/e6O8/3ujvP97o7z/
e6O8/3ujvP97o7z/e6O8/3mgvbd/n78IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHifu0h6o733
faW+/32lvv99pb7/faW+/32lvv9/obX/j35s/5tiMf+aYzT/jIN4/36iuP99pb7/faW+/32lvv99pb7/
faW+/32lvv99pb7/faW+/32lvv99pb7/faW+/32lvv99pb7/faW+/32lvv99pb7/faW+/32lvv99pb7/
faW+/32lvv99pb7/faW+/32lvv99pb7/fKS+/3mhvrd/n78IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAHifu0h7pL73f6fA/3+nwP9/p8D/f6fA/4Gjt/+Rf23/nWMy/51gLv+cYC3/m2M0/42Eef+ApLr/
f6fA/3+nwP9/p8D/f6fA/3+nwP9/p8D/f6fA/3+nwP9/p8D/f6fA/3+nwP9/p8D/f6fA/3+nwP9/p8D/
f6fA/3+nwP9/p8D/f6fA/3+nwP9/p8D/f6fA/3+nwP9/p8D/fqbA/3mhvrd/n78IAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAHifu0h8pcD3ganC/4Gpwv+BqcL/g6W5/5OAbv+eYzP/n2Eu/55hLv+eYC7/
nWAu/5tkNf+Ohnr/gqa8/4Gpwv+BqcL/ganC/4Gpwv+BqcL/ganC/4Gpwv+BqcL/ganC/4Gpwv+BqcL/
ganC/4Gpwv+BqcL/ganC/4Gpwv+BqcL/ganC/4Gpwv+BqcL/ganC/4Gpwv+BqcL/gKjC/3mhvrd/n78I
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHifu0h9psH3g6vE/4OrxP+Fprv/lYJw/6BlM/+hYi//
oGIv/59hLv+fYS7/nmEu/51gLv+cZDX/j4d7/4Sovv+Dq8T/g6vE/4OrxP+Dq8T/g6vE/4OrxP+Dq8T/
g6vE/4OrxP+Dq8T/g6vE/4OrxP+Dq8T/g6vE/4OrxP+Dq8T/g6vE/4OrxP+Dq8T/g6vE/4OrxP+Dq8T/
gqrD/3qhvrd/n78IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHifu0h+p8L3ha3G/4epvP+XhHH/
omY0/6JjL/+iYy//oWIv/6BiL/+gYi//n2Eu/55hLv+eYS7/nGQ1/5GIfP+GqsD/ha3G/4Wtxv+Frcb/
ha3G/4Wtxv+Frcb/ha3G/4Wtxv+Frcb/ha3G/4Wtxv+Frcb/ha3G/4Wtxv+Frcb/ha3G/4Wtxv+Frcb/
ha3G/4Wtxv+Frcb/hKzF/3qjwLd/n78IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHifu0iAqMP3
iaq+/5mFcv+lZzX/pWQw/6RkMP+jZDD/omMv/6JjL/+hYi//oGIv/59iL/+fYS7/nmEu/5xkNf+SiX3/
iKzC/4evyP+Hr8j/h6/I/4evyP+Hr8j/h6/I/4evyP+Hr8j/h6/I/4evyP+Hr8j/h6/I/4evyP+Hr8j/
h6/I/4evyP+Hr8j/h6/I/4evyP+Hr8j/ha3H/3qjwLd/n78IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAHifu0iCpr33mYx+/6VtQP+lazz/pWk5/6VlMf+lZDD/pGQw/6NjMP+iYy//oWMv/6FiL/+gYi//
nmU1/51nOf+cakD/kY+I/4mvx/+Jscr/ibHK/4mxyv+Jscr/ibHK/4mxyv+Jscr/ibHK/4mxyv+Jscr/
ibHK/4mxyv+Jscr/ibHK/4mxyv+Jscr/ibHK/4mxyv+Jscr/h6/J/3qjwLd/n78IAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAHifu0iDp8H3kaWw/5GjrP+Ro6z/lpaS/6VqOv+mZTH/pWUw/6RkMP+jZDD/
o2Mw/6JjL/+hZDL/lY6E/4+iq/+Poqv/jqWy/4uxyf+Ls8z/i7PM/4uzzP+Ls8z/i7PM/4uzzP+Ls8z/
i7PM/4uzzP+Ls8z/i7PM/4uzzP+Ls8z/i7PM/4uzzP+Ls8z/i7PM/4uzzP+Ls8z/ibHK/3yjwLd/n78I
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHifu0iDq8b3jbXO/421zv+Ntc7/k6Wt/6ZsPP+nZjH/
p2Ux/6ZlMf+lZTD/pGQw/6NkMP+iZTP/lJub/421zv+Ntc7/jbXO/421zv+Ntc7/jbXO/421zv+Ntc7/
jbXO/421zv+Ntc7/jbXO/421zv+Ntc7/jbXO/421zv+Ntc7/jbXO/421zv+Ntc7/jbXO/421zv+Ntc7/
irLM/3ykwbd/n78IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHifu0iErMf3j7fQ/4+30P+Pt9D/
laav/6htPf+pZzL/qGYx/6dmMf+mZTH/pWUw/6VkMP+jZjT/lZyc/4+30P+Pt9D/j7fQ/5C40P+Vu9L/
lbvS/5W70v+Vu9L/kLjQ/4+30P+Pt9D/j7fQ/4+30P+Pt9D/j7fQ/4+30P+Pt9D/j7fQ/4+30P+Pt9D/
j7fQ/4+30P+Pt9D/jLTO/3ykwbd/n78IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHifu0iErMj3
kLjR/5C40f+QuNH/lqiw/6ltPf+raDL/qmcy/6lnMv+oZjH/p2Yx/6ZlMf+lZzT/l52e/5C40f+QuNH/
kLjR/5zA1v+40uH/udLi/7nS4v+40uH/nMDW/5C40f+QuNH/kLjR/5C40f+QuNH/kLjR/5C40f+QuNH/
kLjR/5C40f+QuNH/kLjR/5C40f+QuNH/jbXP/3ykwbd/n78IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAHifu0iFrcn3krrT/5K60/+SutP/mKmy/6tuPv+saTP/q2gy/6poMv+pZzL/qGcy/6hmMf+maDX/
mJ+f/5K60/+SutP/krrT/5zA1/+00OH/tdHh/7XR4f+00OH/nMDX/5K60/+SutP/krrT/5K60/+SutP/
krrT/5K60/+SutP/krrT/5K60/+SutP/krrT/5K60/+SutP/j7fQ/32kwbd/n78IAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAHifu0iGrsr3lLzV/5S81f+UvNX/mquz/61wP/+uajP/rWkz/6xoM/+raDL/
qmcy/6lnMv+oaDX/mqCg/5S81f+UvNX/lLzV/5vB2P+tzN//rszf/67M3/+tzN//m8HY/5S81f+UvNX/
lLzV/5S81f+UvNX/lLzV/5S81f+UvNX/lLzV/5S81f+UvNX/lLzV/5S81f+UvNX/kbnS/32lwbd/n78I
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHifu0iDq8f3jbXP/421z/+Ntc//laav/65wP/+vajT/
rmoz/65pM/+taTP/rGgz/6toMv+paTb/lpyd/421z/+Ntc//jbXP/5O50v+hw9j/osPY/6LD2P+hw9j/
k7nS/421z/+Ntc//jbXP/421z/+Ntc//jbXP/421z/+Ntc//jbXP/421z/+Ntc//jbXP/421z/+Ntc//
irLN/3ykwbd/n78IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHufv0B9o8HyfqTC/36kwv9+pML/
iZik/69wPv+xazT/sGs0/69qNP+uajP/rWkz/6xpM/+qajb/jZGU/36kwv9+pML/fqTC/4SoxP+Sssv/
lLTN/5OzzP+Rssv/hKjE/36kwv9+pML/fqTC/36kwv9+pML/fqTC/36kwv9+pML/fqTC/36kwv9+pML/
fqTC/36kwv9+pML/fqTC/3yjwbKRttoHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH+qyRiEqMXM
hajG/4Woxv+FqMb/j5yo/7FxP/+zbDX/smw1/7FrNP+wazT/r2o0/65qM/+sazf/kZSY/4Woxv+FqMb/
hajG/4mryP+Vs83/l7bQ/5W0zv+Us83/iavI/4Woxv+FqMb/hajG/4Woxv+FqMb/hajG/4Woxv+FqMb/
hajG/4Woxv+FqMb/hajG/4Woxv+FqMb/hKfF/IOnw3T///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAH9//wKHqsiCh6vI/YeryP+Hq8j/kZ6q/7NyQP+1bTb/tG01/7NsNf+ybDX/sWs0/7BqNP+tbDj/
kpmd/4eryP+Hq8j/h6vI/4uuyv+Vtc7/l7fQ/5W1z/+Vtc7/i67K/4eryP+Hq8j/h6vI/4eryP+Hq8j/
h6vI/4eryP+Hq8j/h6vI/4eryP+Hq8j/h6vI/4eryP+Hq8j/hqrH4oirySsAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACIrss2ia7K6Ymuyv+Jrsr/k6Gs/7RzQf+3bjb/tm42/7VtNv+0bTX/
s2w1/7JrNf+wbTj/lpmb/4muyv+Jrsr/ia7K/42xzP+Wt9D/l7jR/5a30P+Wt9D/jbHM/4muyv+Jrsr/
ia7K/4muyv+Jrsr/ia7K/4muyv+Jrsr/ia7K/4muyv+Jrsr/ia7K/4muyv+Jrsr/iK7LopG22gcAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLudALi7HMsYyxzf+Msc3/lKaz/7V2Rf+5bzf/
t282/7ZuNv+1bjb/tG01/7NsNf+ybDb/nJOK/4yxzP+Msc3/jLHN/4+zzv+YudL/mbrT/5i50v+YudL/
j7PO/4yxzf+Msc3/jLHN/4yxzf+Msc3/jLHN/4yxzf+Msc3/jLHN/4yxzf+Msc3/jLHN/4yxzf+LsMv1
jLLMUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj7HPYI2zzvmOtM//
k62//7R7T/+6cDf/uXA3/7hvN/+3bzb/tm42/7VtNv+0bTX/qIJk/5CxyP+OtM//jrTP/5G20P+avNT/
mbvT/5q81P+avNT/kbbQ/460z/+OtM//jrTP/460z/+OtM//jrTP/460z/+OtM//jrTP/460z/+OtM//
jrTP/460z/+OtM/KkLHHFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
j7fPIJC20NeQt9H/krTL/7GFY/+8cjj/u3E4/7pwN/+5cDf/uG83/7dvNv+2bjb/s3I//5yfn/+QttD/
kLfR/5O50v+bvtb/mr3V/5u+1v+bvtb/k7nS/5C30f+Qt9H/kLfR/5C30f+Qt9H/kLfR/5C30f+Qt9H/
kLfR/5C30f+Qt9H/kLfR/5C20P2PttB+f39/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAf7+/BJK505KSudP+k7nT/6mWhf++czr/vXI4/7xxOP+7cTj/unA3/7lwN/+4bzf/
t242/7B6UP+bp63/k7nS/5W81P+dwdf/m7/W/53B1/+dwdf/lbzU/5K60/+SutP/krrT/5K60/+SutP/
krrT/5K60/+SutP/krrT/5K60/+SutP/krrT/5G50ueTvNYyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJK91EKUu9XvlLzV/5+rsf+9eUX/v3M5/75yOf+9cjj/
vHE4/7txOP+6cDf/uG83/7dvN/+yeUz/opuS/5u0w/+gv9P/nb/U/5/B1v+gwdb/mLzT/5W60/+VutP/
lbrS/5W60v+VutL/lbrS/5W60v+VutL/lbrS/5W60v+VutL/lbrS/5S60a6ZsswKAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJzE1w2WvNZrlb3VgJq1x4G8fk3G
wXQ6/8B0Of+/czn/vnI5/71yOP+8cTj/unA3/7lwN/+4bzf/tnA6/7J6Tv+whmT/rYlr/62JbP+siWz/
qYdq/6eGav+nhmr/poVp/6WFaf+lhWn/pIRo/6SEaP+jhGj/ooNo/6KDaP+hg2j/oIJn/6B5WLCiXC4L
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAADDdDxEw3U66sJ1Ov/BdDr/wHM5/79zOf+9cjn/vHE4/7txOP+6cDf/uXA3/7hvN/+3bzb/
tm42/7VtNv+0bTX/s2w1/7JsNf+xazT/sGo0/69qNP+uaTP/rWkz/6xoM/+raDL/qmcy/6lnMv+oZjH/
p2Yx/6ZlMMevXy8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAC2bUgHxHU6hsN1OvrDdTr/wnQ6/8B0Of+/czn/vnI5/71yOP+8cTj/
u3E4/7pwN/+5bzf/t282/7ZuNv+1bjb/tG01/7NsNf+ybDX/sWs0/7BrNP+vajT/rmoz/61pM/+saTP/
q2gy/6poMv+qZzL/qWcy/6dmMMevXy8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxXM5FsV2O6zEdTr9xHY7/8N1Ov/BdDr/
wHQ5/79zOf++czn/vXI4/7xxOP+7cTj/uXA3/7hvN/+3bzf/tm42/7VuNv+0bTX/s2w1/7JsNf+xazT/
sGs0/69qNP+uajP/rWkz/6xpM/+raDL/qmgy/6lmMcevby8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMN4PCLGdju0
xXY6/MV2O//Ddjv/wnU6/8F0Ov/AdDn/v3M5/75yOf+9cjj/u3E4/7pwN/+5cDf/uG83/7dvNv+2bjb/
tW02/7RtNf+zbDX/smw1/7FrNP+wazT/r2o0/65pM/+taTP/rGgz/6tnMcevby8QAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAADFczkfx3c6oMV3O/bFdzv/xHY7/8N1Ov/CdTr/wXQ6/8BzOf++czn/vXI4/7xxOP+7cTj/
unA3/7lwN/+4bzf/t242/7ZuNv+1bTb/s201/7JsNf+xbDX/sGs0/69qNP+uajT/rWkz/6xpM8evby8Q
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzHczD8d4PGrGdzvWxnY7/MV2O//Edjv/w3U6/8J0Ov/AdDr/
v3M5/75zOf+9cjj/vHE4/7txOP+6cDf/uW83/7hvN/+3bjb/tW42/7RtNf+zbTX/smw1/7FrNP+wazT/
r2o0/65qM8evby8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9/fwLHdT4lxnY7ecZ3O8jFdzvw
xHU6/cR2O//CdTr/wXQ6/8B0Of+/czn/vnI5/71yOP+8cTj/unA3/7lwN/+4bzf/t282/7ZuNv+1bjb/
tG01/7NsNf+ybDX/sWs0/69qNMevby8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
f38AAsJ5PBXFdzk+xXU7b8R2OpXEdTqpwnQ5rcF0Oa3BdDmtv3Q5sr5yObe9cjm3vHA3t7pwN7e6cDe3
uW83t7dvNre2bja3tW42t7VsNLezbTS0smw0sLFrNIeicy4LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9/AALMZjMF1H8qBtR/KgbUfyoGtm1IB79/Pwi/fz8I
v38/CL9/Pwi/fz8Iv38/CL9fPwi/Xz8Iv18/CL9fPwi2bUgHtm0kB5lmMwUAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////34J4AAAAAAffgngAAAAAA9+CeAAAAAAD34J
4AAAAAAPfgngAAAAAA9+CeAAAAAAD34J4AAAAAAPfgngAAAAAA9+CeAAAAAAD34J4AAAAAAPfgngAAAA
AA9+CeAAAAAAD34J4AAAAAAPfgngAAAAAA9+CeAAAAAAD34J4AAAAAAPfgngAAAAAA9+CeAAAAAAD34J
4AAAAAAPfgngAAAAAA9+CeAAAAAAD34J4AAAAAAPfgngAAAAAA9+CeAAAAAAD34J4AAAAAAPfgngAAAA
AA9+CeAAAAAAD34J4AAAAAAPfgngAAAAAA9+CeAAAAAAH34J8AAAAAAffgnwAAAAAD9+CfgAAAAAP34J
+AAAAAA/fgn4AAAAAH9+CfwAAAAAf34J/AAAAAB/fgn/wAAAAH9+Cf/AAAAAf34J/+AAAAB/fgn/8AAA
AH9+Cf/4AAAAf34J//wAAAB/fgn//gAAAH9+Cf//gAAAf34J///4AAD/fgn///////9+CSgAAAAgAAAA
QAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5+7QHObt4Bzm7eA
c5u3gHObt4Bzm7eAc5u3gHObt4Bzm7eAc5u3gHObt4Bzm7eAc5u3gHObt4Bzm7eAc5u3gHObt4Bzm7eA
c5u3gHObt4Bzm7eAc5u3gHObt4Bzm7eAc5u3gHObt4B3n7tAAAAAAAAAAAAAAAAAAAAAAAAAAABzm7eA
a5Ot/2mRq/9pkav/aZGr/2mRq/9pkav/aZGr/2mRq/9pkav/aZGr/2mRq/9pkav/aZGr/2mRq/9pkav/
aZGr/2mRq/9pkav/aZGr/2mRq/9pkav/aZGr/2mRq/9pkav/a5Ot/3Obt4AAAAAAAAAAAAAAAAAAAAAA
AAAAAHObuYBslK3/apKr/2qSq/9qkqv/apKr/2qSq/9qkqv/apKr/2qSq/9qkqv/apKr/2qSq/9qkqv/
apKr/2qSq/9qkqv/apKr/2qSq/9qkqv/apKr/2qSq/9qkqv/apKr/2qSq/9slK3/c5u5gAAAAAAAAAAA
AAAAAAAAAAAAAAAAdZ25gG6WsP9tla7/bZWu/22Vrv9tla7/bZWu/22Vrv9tla7/bZWu/22Vrv9tla7/
bZWu/22Vrv9tla7/bZWu/22Vrv9tla7/bZWu/22Vrv9tla7/bZWu/22Vrv9tla7/bZWu/26WsP91nbmA
AAAAAAAAAAAAAAAAAAAAAAAAAAB1nbmAcZmz/3CYsf9wmLH/cJix/3CYsf9wmLH/cJix/3CYsf9wmLH/
cJix/3CYsf9wmLH/cJix/3CYsf9wmLH/cJix/3CYsf9wmLH/cJix/3CYsf9wmLH/cJix/3CYsf9wmLH/
cZmz/3WduYAAAAAAAAAAAAAAAAAAAAAAAAAAAHefu4B0nLX/c5u0/3ObtP9zm7T/c5u0/3ObtP9zm7T/
c5u0/3ObtP9zm7T/c5u0/3ObtP9zm7T/c5u0/3ObtP9zm7T/c5u0/3ObtP9zm7T/c5u0/3ObtP9zm7T/
c5u0/3ObtP90nLX/d5+7gAAAAAAAAAAAAAAAAAAAAAAAAAAAd5+7gHefuf93n7j/d5+4/3efuP93n7j/
d5+4/3efuP93n7j/d5+4/3efuP93n7j/d5+4/3efuP93n7j/d5+4/3efuP93n7j/d5+4/3efuP93n7j/
d5+4/3efuP93n7j/d5+4/3efuf93n7uAAAAAAAAAAAAAAAAAAAAAAAAAAAB3n72AeqK7/3qiu/96orv/
eqK7/3qhuf9/l6P/e5+1/3qiu/96orv/eqK7/3qiu/96orv/eqK7/3qiu/96orv/eqK7/3qiu/96orv/
eqK7/3qiu/96orv/eqK7/3qiu/96orv/eqK7/3efvYAAAAAAAAAAAAAAAAAAAAAAAAAAAHmhvYB8pL7/
faW+/32lvv99pLz/h46O/5dqQ/+Lgnb/fqK4/32lvv99pb7/faW+/32lvv99pb7/faW+/32lvv99pb7/
faW+/32lvv99pb7/faW+/32lvv99pb7/faW+/32lvv98pL7/eaG9gAAAAAAAAAAAAAAAAAAAAAAAAAAA
eaG9gH+nwf+AqMH/gKe//4qQkP+baD7/nWAu/5tjNP+NhHj/gaW7/4Cowf+AqMH/gKjB/4Cowf+AqMH/
gKjB/4Cowf+AqMH/gKjB/4Cowf+AqMH/gKjB/4Cowf+AqMH/gKjB/3+nwf95ob2AAAAAAAAAAAAAAAAA
AAAAAAAAAAB5ob+AgqrD/4Oqwv+Nk5L/nWo//6BiL/+fYS7/nmEu/5xjNf+Phnr/hKi+/4OrxP+Dq8T/
g6vE/4OrxP+Dq8T/g6vE/4OrxP+Dq8T/g6vE/4OrxP+Dq8T/g6vE/4OrxP+Dq8T/gqrD/3mhv4AAAAAA
AAAAAAAAAAAAAAAAAAAAAHujv4CEq8T/kJWV/6BsQP+jYzD/omMv/6FiL/+fYi//n2Eu/51kNf+Rh3z/
h6vB/4aux/+Grsf/hq7H/4aux/+Grsf/hq7H/4aux/+Grsf/hq7H/4aux/+Grsf/hq7H/4aux/+ErMb/
e6O/gAAAAAAAAAAAAAAAAAAAAAAAAAAAe6O/gI+bof+hdE7/pGo7/6VlMf+kZDD/o2Mw/6FjL/+gYi//
nmU1/5trQv+RkIr/ia/H/4mxyv+Jscr/ibHK/4mxyv+Jscr/ibHK/4mxyv+Jscr/ibHK/4mxyv+Jscr/
ibHK/4evyP97o8GAAAAAAAAAAAAAAAAAAAAAAAAAAAB9o7+Ajam6/5Gmsf+Vmpr/pWs8/6ZlMf+lZDD/
o2Qw/6JjL/+Zgmz/j6Wx/46otv+Mssr/i7PM/4uzzP+Ls8z/i7PM/4uzzP+Ls8z/i7PM/4uzzP+Ls8z/
i7PM/4uzzP+Ls8z/ibHL/32lwYAAAAAAAAAAAAAAAAAAAAAAAAAAAH2lwYCLs83/jrbP/5Oos/+nbj//
qGYx/6dlMf+lZTH/pGQw/5mKe/+Ots//jrbP/5G40f+VutL/lbrS/5G40f+Ots//jrbP/462z/+Ots//
jrbP/462z/+Ots//jrbP/462z/+Ls83/faXBgAAAAAAAAAAAAAAAAAAAAAAAAAAAfaXDgI620P+RudL/
lqu2/6lvQP+qaDL/qWcy/6hmMf+mZTH/nI18/5G50v+RudL/pMXa/7bR4f+20eH/pMXa/5G50v+RudL/
kbnS/5G50v+RudL/kbnS/5G50v+RudL/kbnS/4620P99pcOAAAAAAAAAAAAAAAAAAAAAAAAAAAB/p8OA
kLjR/5O71P+Yrbj/rHFB/61pM/+raDL/qmcy/6lnMv+ejn7/k7vU/5O71P+ixdr/sM3g/7DN4P+ixdr/
k7vU/5O71P+Tu9T/k7vU/5O71P+Tu9T/k7vU/5O71P+Tu9T/kLjR/3+nw4AAAAAAAAAAAAAAAAAAAAAA
AAAAAHyiwH+Grcn/iK/L/4+jsP+tcUH/r2o0/65pM/+saTP/q2gy/5qJev+Ir8v/iK/L/5O30P+evtT/
nb7U/5O30P+Ir8v/iK/L/4ivy/+Ir8v/iK/L/4ivy/+Ir8v/iK/L/4ivy/+Grcn/faPBgAAAAAAAAAAA
AAAAAAAAAAAAAAAAgqXCWIKmxPiDp8T/jJ2r/69xQf+ybDX/sGs0/69qNP+taTP/mYZ4/4OnxP+Dp8T/
jK3J/5W1zv+VtM3/jK3J/4OnxP+Dp8T/g6fE/4OnxP+Dp8T/g6fE/4OnxP+Dp8T/g6fE/4OmxPmCpcNe
AAAAAAAAAAAAAAAAAAAAAAAAAACDp8Edh6zI1Iisyf+Qoa//snNC/7VtNv+zbDX/sms1/7BrNP+ci33/
iKzJ/4isyf+Pscz/lrfQ/5W2z/+Pscz/iKzJ/4isyf+IrMn/iKzJ/4isyf+IrMn/iKzJ/4isyf+IrMn/
h6vH2IenxyAAAAAAAAAAAAAAAAAAAAAAAAAAAKqqqgOKsMuMi7DL/pKmtf+0dkb/t282/7ZuNv+0bTX/
s2w1/6KIc/+LsMv/i7DM/5G1z/+YudL/l7nR/5G1z/+LsMz/i7DM/4uwzP+LsMz/i7DM/4uwzP+LsMz/
i7DM/4uwzP6Kr8uRf7+/BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI6z0T2Os87uk67B/7R8UP+6cDf/
uW83/7dvNv+1bjb/rXpT/5Ktv/+PtdD/lbnT/5q81P+avNX/lbnT/4+10P+PtdD/j7XQ/4+10P+PtdD/
j7XQ/4+10P+PtdD/jrTQ74+zz0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkbbaDpC40buTt87/
sIlq/71yOP+7cTj/unA3/7hvN/+2cDn/pY98/5S0yv+YvdX/nL/W/53A1/+YvdX/krnT/5K50/+SudP/
krnT/5K50/+SudP/krnT/5K50/+RuNK9iLvMDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8B
lbzVY5S81d2nnZLkv3Q6/L5zOf+9cjj/u3E4/7lwN/+2cTz/q4hr/6Ompf+jsLf/o7K5/5+vuP+arLb/
mqy2/5mstv+ZrLb/mau2/5irtf+Yq7X/l6q0/piosHz/AP8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACZsswKlL3VH6uWgjHBdTrIwXQ6/8BzOf++cjn/vHI4/7pxOP+5cDf/tnE7/7RzQf+zc0H/
sXJA/69xQP+ucD//rHA//6tvPv+qbj7/qG0+/6dtPf+mbDz/pWg3i/8AAAEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAcR1Ok7EdTrqw3U6/8F0Ov+/czn/vXI5/7xxOP+6cDf/
uG83/7duNv+1bjb/tG01/7JsNf+xazT/r2o0/65pM/+saTP/q2gy/6lnMv+nZTGP/wAAAQAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzGYzBcV3O2vFdjvtxHY7/8J1Ov/AdDr/
v3M5/71yOP+7cTj/unA3/7hvN/+2bjb/tW02/7NsNf+ybDX/sGs0/69qNP+taTP/rGgz/6lnMY//AAAB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtm1IB8Z3O17GdzvZ
xXY7/cN1O//CdTr/wHQ5/75zOf+8cjj/u3E4/7lwN/+4bzf/tm42/7RtNf+zbDX/sWs0/7BrNP+uajP/
rGkzj/8AAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
/39/AsVzOSzGdzuNxnc718R2O/XCdDr9wXQ6/r9zOf+9cjn/vHE4/7pxOP+5cDf/t282/7ZuNv+0bTX/
smw1/7FrNP+uaTOP/wAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAL9/PwTMdzsexng8SMV1OWrCdTl3wXQ5eL5yN3u+cjh/u3E3gLlvN4C3bzWA
t201gLVtNYC0bDZ/sms1e7JqNUP/AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////8AAAAfAAAAH
wAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAH
wAAAB8AAAAfAAAAHwAAAB+AAAA/gAAAP4AAAD/AAAA/8AAAP/gAAD/8AAA//gAAP/+AAD/////8oAAAA
EAAAACAAAAABACAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAf3//AnObuTNxmLRIcZi0SHGYtEhxmLRI
cZi0SHGYtEhxmLRIcZi0SHGYtEhxmLRIcZi0SHKbtUVymb8UAAAAAH+fvwhul7KxapKr92qSq/dqkqv3
apKr92qSq/dqkqv3apKr92qSq/dqkqv3apKr92qSq/drlK3vcJi2RgAAAAB/n78Icpq1t2+XsP9vl7D/
b5ew/2+XsP9vl7D/b5ew/2+XsP9vl7D/b5ew/2+XsP9vl7D/b5ew93SbuEgAAAAAf5+/CHaeubd1nbb/
dZ22/3Wdtv91nbb/dZ22/3Wdtv91nbb/dZ22/3Wdtv91nbb/dZ22/3Wctvd0n7hIAAAAAH+fvwh6o723
e6O8/4CZqP+Gioj/fKC2/3ujvP97o7z/e6O8/3ujvP97o7z/e6O8/3ujvP96o7v3eJ+7SAAAAAB/n78I
fqfBt4afrf+XdFb/nGQ1/46EeP+Cprz/ganC/4Gpwv+BqcL/ganC/4Gpwv+BqcL/gKjC93uiv0gAAAAA
f5+/CIehs7eaf2f/o2Uy/6FiL/+dZzn/kI+K/4euxv+Hr8j/h6/I/4evyP+Hr8j/h6/I/4atx/d/psJI
AAAAAH+fvwiIq8C3lKCk/6VtP/+lZTD/nnZU/5Cptv+Rt87/kbjQ/421zv+Ntc7/jbXO/421zv+Lssz3
f6nCSAAAAAB/n78IibLMt5Wtuv+pcUP/qWcy/6F8Xf+Tt83/p8fb/6fH2/+SutP/kbnS/5G50v+RudL/
jrbQ94OpxkgAAAAAf6qqBoSrx6qNorL/rXJD/65qM/+ie1v/iKrD/5W2z/+Vts//h6zI/4asyP+GrMj/
hqzI/4Wrx/OBqcY/AAAAAAAAAACJrclkj6W0+rF1Rv+0bTX/p3xb/4yrxP+Ttc//k7XP/4muyv+Jrsr/
ia7K/4muyv+JrcrMhabHFwAAAAAAAAAAjrTSIpOuwdu0flT/uXA3/7J1Rf+ZpKr/mLvS/5i81P+Qt9H/
kLfR/5C30f+QttD9jrTQf39/fwIAAAAAAAAAAH+/vwSWuM5atoRcs75yOP27cTj/tHpN/6yOdf+pkn3/
pI57/6KNev+hjXr/n4t4+J2JdUwAAAAAAAAAAAAAAAAAAAAAAAAAAMN4PCLDdTrBwHQ5/r5yOf+7cTj/
t282/7RtNf+xazT/rmoz/6toMvmpaDFOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyXg8JsV3OpzDdDrj
wHQ59LxyN/a5bzb3tm4197NsNPevajPxrWkySwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADakUgH
xXI5KMR1OkHAcjtFu3E4SLhtNUi0bTVIsWszRbZtMBUAAAAAAAAAAAABJgAAASYAAAEmAAABJgAAASYA
AAEmAAABJgAAASYAAAEmAAABJgCAASYAgAEmAIADJgDgAyYA8AMmAPgDJgA=
</value>
</data>
</root>

View File

@@ -1,115 +0,0 @@
Imports System.IO
Imports Newtonsoft.Json.Linq
Imports Pilz.Updating.Model
Imports Pilz.Updating.Scripts
Public Class UpdateInstaller
Private restartHostApplication As Boolean
Private autoCloseHostApplication As Boolean
Private packageDir As String
Private appExePath As String
Private Sub UpdateInstaller_Shown(sender As Object, e As EventArgs) Handles Me.Shown
CheckCommandLines()
If autoCloseHostApplication Then
CloseHostApplication()
End If
InstallUpdates()
If restartHostApplication Then
StartHostApplication()
End If
End Sub
Private Sub CloseHostApplication()
Dim myProcesses As New List(Of Process)
For Each p As Process In Process.GetProcesses
If p.MainModule.FileName = appExePath Then
myProcesses.Add(p)
End If
Next
For Each p As Process In myProcesses
p.Close()
Next
Dim waited As Byte = 5
Do While myProcesses.Where(Function(n) Not n.HasExited).Any AndAlso waited > 0
Sleep(1000)
waited -= 1
Loop
For Each p As Process In myProcesses
If Not p.HasExited Then
p.Kill()
End If
Next
End Sub
Private Sub StartHostApplication()
Process.Start(appExePath)
End Sub
Private Sub CheckCommandLines()
For Each cmd As String In My.Application.CommandLineArgs
Dim splitted As String() = cmd.Split("#")
If splitted.Length = 2 Then
Select Case splitted(0).ToLower
Case "restartHostApp".ToLower
restartHostApplication = splitted(1)
Case "autoCloseHostApp".ToLower
autoCloseHostApplication = splitted(1)
Case "updatePackage".ToLower
packageDir = splitted(1)
Case "applicationPath"
appExePath = splitted(1)
End Select
End If
Next
End Sub
Private Sub InstallUpdates()
Dim packagePath As String = Path.Combine(packageDir, "package.json")
Dim packageFilesDir As String = Path.Combine(packageDir, "files")
Dim systemFilesDir As String = Path.GetDirectoryName(appExePath)
'Load update package
Dim package As UpdatePackage = JObject.Parse(File.ReadAllText(packagePath)).ToObject(Of UpdatePackage)
'Execute ScriptBefore
ExecuteScriptsWithPriority(ScriptPriority.Before, package.Scripts, systemFilesDir, packageFilesDir)
'Update Files
For Each rFile As String In package.Fileupdates
Dim packageFile As String = Path.Combine(packageFilesDir, rFile)
Dim systemFile As String = Path.Combine(systemFilesDir, rFile)
Dim systemFileDir As String = Path.GetDirectoryName(systemFile)
'Create destination directory if not exists
If Not Directory.Exists(systemFileDir) Then
Directory.CreateDirectory(systemFileDir)
End If
'Copy package file to system file
File.Copy(packageFile, systemFile, True)
Next
'ExecuteScriptAfter
ExecuteScriptsWithPriority(ScriptPriority.After, package.Scripts, systemFilesDir, packageFilesDir)
End Sub
Private Sub ExecuteScriptsWithPriority(priority As ScriptPriority, scripts As IEnumerable(Of Script), applicationPath As String, updatePackagePath As String)
For Each script As Script In scripts
If script.Priority = priority Then
Dim mgr As New ScriptManager(applicationPath, updatePackagePath)
mgr.ExecuteScript(script)
End If
Next
End Sub
End Class

View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="12.0.2" targetFramework="net45" />
</packages>

View File

@@ -1,21 +0,0 @@
Imports System.IO
Public Module General
Public ReadOnly Property MyTempPath As String
Get
Static p As String = String.Empty
If String.IsNullOrEmpty(p) Then
p = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Pilz.Updating")
If Not Directory.Exists(p) Then
Directory.CreateDirectory(p)
End If
End If
Return p
End Get
End Property
End Module

View File

@@ -1,10 +0,0 @@
Namespace Model
Public Enum BuildState
Release
ReleaseCandidate
Beta
Alpha
End Enum
End Namespace

View File

@@ -1,8 +0,0 @@
Namespace Model
Public Enum CodeLanguage
VB
CSharp
End Enum
End Namespace

View File

@@ -1,13 +0,0 @@
Namespace Model
Public Class UpdateInfo
Public Property Name As String
Public Property Version As Version
Public Property State As BuildState
Public Property Build As UInteger
Public Property Changelog As String
End Class
End Namespace

View File

@@ -1,12 +0,0 @@
Imports Pilz.Updating.Scripts
Namespace Model
Public Class UpdatePackage
Public ReadOnly Property Fileupdates As New List(Of String)
Public ReadOnly Property Scripts As New List(Of Script)
End Class
End Namespace

View File

@@ -1,13 +0,0 @@
'------------------------------------------------------------------------------
' <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>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>false</MySubMain>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<ApplicationType>1</ApplicationType>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@@ -1,35 +0,0 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' Allgemeine Informationen über eine Assembly werden über die folgenden
' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
' die einer Assembly zugeordnet sind.
' Werte der Assemblyattribute überprüfen
<Assembly: AssemblyTitle("Pilz.Updating")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("DRSN")>
<Assembly: AssemblyProduct("Pilz.Updating")>
<Assembly: AssemblyCopyright("Copyright © DRSN 2019")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird.
<Assembly: Guid("31dc53da-f8fd-459b-b1d5-b2ab13f6b910")>
' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
'
' Hauptversion
' Nebenversion
' Buildnummer
' Revision
'
' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@@ -1,62 +0,0 @@
'------------------------------------------------------------------------------
' <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>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My.Resources
'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.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Pilz.Updating.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<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)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set(ByVal value As Global.System.Globalization.CultureInfo)
resourceCulture = value
End Set
End Property
End Module
End Namespace

View File

@@ -1,117 +0,0 @@
<?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>

View File

@@ -1,73 +0,0 @@
'------------------------------------------------------------------------------
' <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>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
#Region "My.Settings Auto-Save Functionality"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.Pilz.Updating.My.MySettings
Get
Return Global.Pilz.Updating.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

@@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@@ -1,17 +0,0 @@
Imports Pilz.Updating.Model
Namespace MyEventArgs
Public Class UpdatesFoundEventArgs
Inherits EventArgs
Public Property Cancel As Boolean = False
Public Property Updates As UpdateInfo()
Public Sub New(updates As UpdateInfo())
Me.Updates = updates
End Sub
End Class
End Namespace

View File

@@ -1,119 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" 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>{354255D9-9536-4400-B915-FFC49C2CE93F}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>Pilz.Updating</RootNamespace>
<AssemblyName>Pilz.Updating</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>Pilz.Updating.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>Pilz.Updating.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Diagnostics" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="General.vb" />
<Compile Include="Model\UpdateInfo.vb" />
<Compile Include="MyEventArgs\UpdatesFoundEventArgs.vb" />
<Compile Include="Model\BuildState.vb" />
<Compile Include="Model\CodeLanguage.vb" />
<Compile Include="Scripts\Script.vb" />
<Compile Include="Model\UpdatePackage.vb" />
<Compile Include="Scripts\ScriptManager.vb" />
<Compile Include="Scripts\ScriptPriority.vb" />
<Compile Include="Updater.vb" />
<None Include="packages.config" />
<None Include="UpdateManager" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
</Project>

View File

@@ -1,13 +0,0 @@
Imports Pilz.Updating.Model
Namespace Scripts
Public Class Script
Public Property Priority As ScriptPriority = ScriptPriority.Before
Public Property Language As CodeLanguage = CodeLanguage.CSharp
Public Property Code As String
End Class
End Namespace

View File

@@ -1,71 +0,0 @@
Imports System.CodeDom.Compiler
Imports System.Reflection
Imports Microsoft.CSharp
Imports Pilz.Updating.Model
Imports Pilz.Updating.Scripts
Namespace Scripts
Public Class ScriptManager
Public Property ApplicationPath As String
Public Property UpdatePackagePath As String
Public Sub New(applicationPath As String, updatePackagePath As String)
Me.ApplicationPath = applicationPath
Me.UpdatePackagePath = updatePackagePath
End Sub
Private Function CompileScript(script As Script) As CompilerResults
Dim provider As CodeDomProvider = Nothing
Dim params As New CompilerParameters
'Create code provider
Select Case script.Language
Case CodeLanguage.CSharp
provider = New CSharpCodeProvider
Case CodeLanguage.VB
provider = New VBCodeProvider
End Select
'Set general options
params.GenerateExecutable = False
params.GenerateInMemory = True
'Set references
params.ReferencedAssemblies.Add()
'Compile
Dim res As CompilerResults = provider.CompileAssemblyFromSource(params, script.Code)
Return res
End Function
Public Function CheckScriptForErrors(script As Script) As CompilerErrorCollection
Return CompileScript(script).Errors
End Function
Public Sub ExecuteScript(script As Script)
'Compile script
Dim res As CompilerResults = CompileScript(script)
If Not res.Errors.HasErrors Then
'Get Method
Dim mi As MethodInfo = res.CompiledAssembly.GetType("Program")?.GetMethod("Main")
If mi IsNot Nothing Then
'Create params
Dim params As New Dictionary(Of String, String) From {
{"ApplicationPath", ApplicationPath},
{"UpdatePackagePath", UpdatePackagePath}
}
'Execute method
mi.Invoke(Nothing, {params})
End If
End If
End Sub
End Class
End Namespace

View File

@@ -1,8 +0,0 @@
Namespace Scripts
Public Enum ScriptPriority
Before
After
End Enum
End Namespace

View File

@@ -1,3 +0,0 @@
Public Class Class1
End Class

View File

@@ -1,86 +0,0 @@
Imports System.IO
Imports System.IO.Compression
Imports System.Net
Imports System.Reflection
Imports Newtonsoft.Json.Linq
Imports Pilz.Updating.Model
Imports Pilz.Updating.MyEventArgs
Public Class Updater
Public Event UpdatesFound(sender As Object, e As UpdatesFoundEventArgs)
Public Event NoUpdatesFound(sender As Object, e As EventArgs)
Public Event UpdateInstallerStarted(Sender As Object, e As EventArgs)
Public Property InstallAsAdmin As Boolean = True
Public Property RestartHostApplication As Boolean = True
Public Property AutomaticlyCloseHostApplication As Boolean = True
Public Property UpdateDirURL As String
Public Property UpdateInfoURL As String
Public Sub New(updateUrl As String)
UpdateInfoURL = updateUrl
UpdateDirURL = updateUrl.Remove(updateUrl.LastIndexOf("/"c))
End Sub
Public Async Function Update() As Task
Dim wc As New WebClient
Dim updateInstallerZipPath As String = Path.Combine(MyTempPath, "Pilz.Updating.UpdateInstaller.zip")
Dim updateInstallerPath As String = updateInstallerZipPath & "_unpacked"
Dim updateInstallerExePath As String = Path.Combine(updateInstallerPath, "Pilz.Updating.UpdateInstaller.exe")
'Clean AppData
For Each dir As String In Directory.GetDirectories(MyTempPath, "*", SearchOption.TopDirectoryOnly)
Directory.Delete(dir, True)
Next
'Download UpdateInfos
Dim strUpdateInfos As String = Await wc.DownloadStringTaskAsync(UpdateInfoURL)
Dim updateInfos As UpdateInfo() = JArray.Parse(strUpdateInfos).ToObject(Of UpdateInfo())
If updateInfos.Any Then
'Order update infos from newest to oldest
updateInfos = updateInfos.OrderByDescending(
Function(n)
Return n.Version.ToString &
(Byte.MaxValue - n.State).ToString("X2") &
n.Build.ToString("X4")
End Function).ToArray
'Interagate with user
Dim e As New UpdatesFoundEventArgs(updateInfos)
RaiseEvent UpdatesFound(Me, e)
'Install updates
If Not e.Cancel Then
Dim updateInfo As UpdateInfo = updateInfos(0)
Dim updatePackageZipFilename As String = $"{updateInfo.Version.ToString} {CByte(updateInfo.State)} {updateInfo.Build}.zip"
Dim updatePackageZipPath As String = Path.Combine(MyTempPath, updatePackageZipFilename)
Dim updatePackagePath As String = updatePackageZipPath & "_unpacked"
'Download UpdateInstaller
Await wc.DownloadFileTaskAsync(UpdateDirURL & "/Pilz.Updating.UpdateInstaller.zip", updateInstallerZipPath)
ZipFile.ExtractToDirectory(updateInstallerZipPath, updateInstallerPath)
'Download Update Package
Await wc.DownloadFileTaskAsync(UpdateDirURL & "/" & updatePackageZipFilename, updatePackageZipPath)
ZipFile.ExtractToDirectory(updatePackageZipFilename, updatePackagePath)
'Build process arguments
Dim applicationExePath As String = Assembly.GetExecutingAssembly.Location
Dim procArgs As String = $"restartHostApp#{RestartHostApplication} autoCloseHostApp#{AutomaticlyCloseHostApplication} ""updatePackage#{updatePackagePath}"" ""applicationPath#{applicationExePath}"""
'Finally start update installer to install updates
Process.Start(updateInstallerExePath, procArgs)
'Interagate with user
RaiseEvent UpdateInstallerStarted(Me, New EventArgs)
End If
Else
RaiseEvent NoUpdatesFound(Me, New EventArgs)
End If
wc.Dispose()
End Function
End Class

View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="12.0.2" targetFramework="net45" />
</packages>

View File

@@ -10,8 +10,9 @@
<AssemblyName>Pilz.Win32</AssemblyName> <AssemblyName>Pilz.Win32</AssemblyName>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<MyType>Windows</MyType> <MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>

View File

@@ -29,10 +29,6 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Simple3DFileParser", "
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pilz.LicenseHelper", "Pilz.LicenseHelper\Pilz.LicenseHelper.csproj", "{67593FF7-C1D1-4529-98C4-61CBD0615F08}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pilz.LicenseHelper", "Pilz.LicenseHelper\Pilz.LicenseHelper.csproj", "{67593FF7-C1D1-4529-98C4-61CBD0615F08}"
EndProject EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Updating", "Pilz.Updating\Pilz.Updating.vbproj", "{354255D9-9536-4400-B915-FFC49C2CE93F}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Updating.UpdateInstaller", "Pilz.Updating.Updater\Pilz.Updating.UpdateInstaller.vbproj", "{1BA3D8E8-C514-4182-9E6E-9E6BB7AF0403}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Networking", "Pilz.Networking\Pilz.Networking.vbproj", "{4584B121-09C6-40AC-849B-7E410125EF66}" Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Pilz.Networking", "Pilz.Networking\Pilz.Networking.vbproj", "{4584B121-09C6-40AC-849B-7E410125EF66}"
EndProject EndProject
Global Global
@@ -147,22 +143,6 @@ Global
{67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|Any CPU.Build.0 = Release|Any CPU {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|Any CPU.Build.0 = Release|Any CPU
{67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|x86.ActiveCfg = Release|Any CPU {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|x86.ActiveCfg = Release|Any CPU
{67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|x86.Build.0 = Release|Any CPU {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|x86.Build.0 = Release|Any CPU
{354255D9-9536-4400-B915-FFC49C2CE93F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{354255D9-9536-4400-B915-FFC49C2CE93F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{354255D9-9536-4400-B915-FFC49C2CE93F}.Debug|x86.ActiveCfg = Debug|Any CPU
{354255D9-9536-4400-B915-FFC49C2CE93F}.Debug|x86.Build.0 = Debug|Any CPU
{354255D9-9536-4400-B915-FFC49C2CE93F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{354255D9-9536-4400-B915-FFC49C2CE93F}.Release|Any CPU.Build.0 = Release|Any CPU
{354255D9-9536-4400-B915-FFC49C2CE93F}.Release|x86.ActiveCfg = Release|Any CPU
{354255D9-9536-4400-B915-FFC49C2CE93F}.Release|x86.Build.0 = Release|Any CPU
{1BA3D8E8-C514-4182-9E6E-9E6BB7AF0403}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1BA3D8E8-C514-4182-9E6E-9E6BB7AF0403}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1BA3D8E8-C514-4182-9E6E-9E6BB7AF0403}.Debug|x86.ActiveCfg = Debug|Any CPU
{1BA3D8E8-C514-4182-9E6E-9E6BB7AF0403}.Debug|x86.Build.0 = Debug|Any CPU
{1BA3D8E8-C514-4182-9E6E-9E6BB7AF0403}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1BA3D8E8-C514-4182-9E6E-9E6BB7AF0403}.Release|Any CPU.Build.0 = Release|Any CPU
{1BA3D8E8-C514-4182-9E6E-9E6BB7AF0403}.Release|x86.ActiveCfg = Release|Any CPU
{1BA3D8E8-C514-4182-9E6E-9E6BB7AF0403}.Release|x86.Build.0 = Release|Any CPU
{4584B121-09C6-40AC-849B-7E410125EF66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4584B121-09C6-40AC-849B-7E410125EF66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4584B121-09C6-40AC-849B-7E410125EF66}.Debug|Any CPU.Build.0 = Debug|Any CPU {4584B121-09C6-40AC-849B-7E410125EF66}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4584B121-09C6-40AC-849B-7E410125EF66}.Debug|x86.ActiveCfg = Debug|Any CPU {4584B121-09C6-40AC-849B-7E410125EF66}.Debug|x86.ActiveCfg = Debug|Any CPU

View File

@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------

View File

@@ -1,27 +1,28 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
Option Strict On Option Strict On
Option Explicit On Option Explicit On
Imports System
Namespace My.Resources Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
'class via a tool like ResGen or Visual Studio. '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
'To add or remove a member, edit your .ResX file then rerun ResGen 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
'with the /str option, or rebuild your VS project. 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
'''<summary> '''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc. ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary> '''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _ <Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _ Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _ Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
@@ -32,7 +33,7 @@ Namespace My.Resources
Private resourceCulture As Global.System.Globalization.CultureInfo Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary> '''<summary>
''' Returns the cached ResourceManager instance used by this class. ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
'''</summary> '''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
@@ -46,15 +47,15 @@ Namespace My.Resources
End Property End Property
'''<summary> '''<summary>
''' Overrides the current thread's CurrentUICulture property for all ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
''' resource lookups using this strongly typed resource class. ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
'''</summary> '''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo Friend Property Culture() As Global.System.Globalization.CultureInfo
Get Get
Return resourceCulture Return resourceCulture
End Get End Get
Set(ByVal value As Global.System.Globalization.CultureInfo) Set
resourceCulture = value resourceCulture = value
End Set End Set
End Property End Property

View File

@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
@@ -15,21 +15,21 @@ Option Explicit On
Namespace My Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ <Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _ Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
#Region "My.Settings Auto-Save Functionality" #Region "Automatische My.Settings-Speicherfunktion"
#If _MyType = "WindowsForms" Then #If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ <Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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 If My.Application.SaveMySettingsOnExit Then
My.Settings.Save() My.Settings.Save()
End If End If

View File

@@ -10,8 +10,9 @@
<AssemblyName>Pilz</AssemblyName> <AssemblyName>Pilz</AssemblyName>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<MyType>Windows</MyType> <MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>