Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9fdfc54c24 | ||
|
|
dfd98e303c | ||
|
|
bcd8d0053e | ||
|
|
d2b651bcf9 | ||
|
|
1a778d9699 | ||
|
|
36d1b59544 | ||
|
|
5eefa3f4b5 | ||
|
|
4f06d070a8 | ||
|
|
4d16e0edad | ||
|
|
16d9b8d65c | ||
|
|
14e05ae658 | ||
|
|
11b232540f | ||
|
|
b72842f931 | ||
|
|
1cc7bcded6 | ||
|
|
02cb27d095 | ||
|
|
e875b8eef6 | ||
|
|
2a8b403901 | ||
|
|
33c59eb1b9 | ||
|
|
c5bbafc13a | ||
|
|
05b9cf3a6d | ||
|
|
84f4779a19 | ||
|
|
e1ed1298a8 | ||
|
|
d3eeda1ad1 | ||
|
|
595e5828bc | ||
|
|
e544b389ce | ||
|
|
bb9f8914c8 | ||
|
|
2b72547f1c | ||
|
|
d4d8bedc3f | ||
|
|
c9ee51457d |
No files matched your search
@@ -2,3 +2,7 @@
|
|||||||
The official windows launcher source for XPS
|
The official windows launcher source for XPS
|
||||||
|
|
||||||
More information coming soon
|
More information coming soon
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# If you wish to use this launcher for your project, fork the repo please!
|
||||||
@@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||||||
# Visual Studio Version 17
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 17.8.34511.84
|
VisualStudioVersion = 17.8.34511.84
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XPSLauncher", "XPSLauncher\XPSLauncher.csproj", "{A9B79EA0-39D4-47E9-A506-05BE547D83C1}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XPSLauncher", "XPSLauncher\XPSLauncher.csproj", "{1DFB73E7-C99E-43E8-A0AB-F271D8F36C80}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{17082187-CDB9-4EDA-9617-B06AACFC731E}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
@@ -11,15 +13,15 @@ Global
|
|||||||
Release|Any CPU = Release|Any CPU
|
Release|Any CPU = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{A9B79EA0-39D4-47E9-A506-05BE547D83C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{1DFB73E7-C99E-43E8-A0AB-F271D8F36C80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{A9B79EA0-39D4-47E9-A506-05BE547D83C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{1DFB73E7-C99E-43E8-A0AB-F271D8F36C80}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{A9B79EA0-39D4-47E9-A506-05BE547D83C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{1DFB73E7-C99E-43E8-A0AB-F271D8F36C80}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{A9B79EA0-39D4-47E9-A506-05BE547D83C1}.Release|Any CPU.Build.0 = Release|Any CPU
|
{1DFB73E7-C99E-43E8-A0AB-F271D8F36C80}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {18E8BD81-78AC-4652-B81A-25117C7B197C}
|
SolutionGuid = {8069D002-54EA-4D55-8E41-E575FC45A6D8}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
||||||
|
</startup>
|
||||||
|
</configuration>
|
||||||
@@ -0,0 +1,570 @@
|
|||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace XPSLauncher
|
||||||
|
{
|
||||||
|
partial class Form1
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
|
||||||
|
this.button1 = new System.Windows.Forms.Button();
|
||||||
|
this.button2 = new System.Windows.Forms.Button();
|
||||||
|
this.button3 = new System.Windows.Forms.Button();
|
||||||
|
this.button4 = new System.Windows.Forms.Button();
|
||||||
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
|
this.button5 = new System.Windows.Forms.Button();
|
||||||
|
this.button6 = new System.Windows.Forms.Button();
|
||||||
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.label3 = new System.Windows.Forms.Label();
|
||||||
|
this.label4 = new System.Windows.Forms.Label();
|
||||||
|
this.panel2 = new System.Windows.Forms.Panel();
|
||||||
|
this.label5 = new System.Windows.Forms.Label();
|
||||||
|
this.panel3 = new System.Windows.Forms.Panel();
|
||||||
|
this.label6 = new System.Windows.Forms.Label();
|
||||||
|
this.panel4 = new System.Windows.Forms.Panel();
|
||||||
|
this.button7 = new System.Windows.Forms.Button();
|
||||||
|
this.button8 = new System.Windows.Forms.Button();
|
||||||
|
this.label7 = new System.Windows.Forms.Label();
|
||||||
|
this.label8 = new System.Windows.Forms.Label();
|
||||||
|
this.pictureBox13 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.pictureBox12 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.pictureBox11 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.pictureBox10 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.pictureBox9 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.pictureBox8 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.pictureBox7 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.pictureBox6 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.pictureBox5 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.pictureBox4 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.pictureBox3 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.pictureBox2 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox13)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox12)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox11)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox10)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox9)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox8)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox7)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// button1
|
||||||
|
//
|
||||||
|
this.button1.Cursor = System.Windows.Forms.Cursors.WaitCursor;
|
||||||
|
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.button1.ForeColor = System.Drawing.SystemColors.ButtonFace;
|
||||||
|
this.button1.Location = new System.Drawing.Point(240, 176);
|
||||||
|
this.button1.Name = "button1";
|
||||||
|
this.button1.Size = new System.Drawing.Size(120, 40);
|
||||||
|
this.button1.TabIndex = 0;
|
||||||
|
this.button1.Text = "2.2";
|
||||||
|
this.button1.UseVisualStyleBackColor = true;
|
||||||
|
this.button1.UseWaitCursor = true;
|
||||||
|
//
|
||||||
|
// button2
|
||||||
|
//
|
||||||
|
this.button2.Cursor = System.Windows.Forms.Cursors.WaitCursor;
|
||||||
|
this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.button2.ForeColor = System.Drawing.SystemColors.ButtonFace;
|
||||||
|
this.button2.Location = new System.Drawing.Point(240, 275);
|
||||||
|
this.button2.Name = "button2";
|
||||||
|
this.button2.Size = new System.Drawing.Size(120, 40);
|
||||||
|
this.button2.TabIndex = 1;
|
||||||
|
this.button2.Text = "2.1";
|
||||||
|
this.button2.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// button3
|
||||||
|
//
|
||||||
|
this.button3.Cursor = System.Windows.Forms.Cursors.WaitCursor;
|
||||||
|
this.button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.button3.ForeColor = System.Drawing.SystemColors.ButtonFace;
|
||||||
|
this.button3.Location = new System.Drawing.Point(240, 374);
|
||||||
|
this.button3.Name = "button3";
|
||||||
|
this.button3.Size = new System.Drawing.Size(120, 40);
|
||||||
|
this.button3.TabIndex = 2;
|
||||||
|
this.button3.Text = "2.0";
|
||||||
|
this.button3.UseVisualStyleBackColor = true;
|
||||||
|
this.button3.UseWaitCursor = true;
|
||||||
|
//
|
||||||
|
// button4
|
||||||
|
//
|
||||||
|
this.button4.Cursor = System.Windows.Forms.Cursors.WaitCursor;
|
||||||
|
this.button4.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.button4.ForeColor = System.Drawing.SystemColors.ButtonFace;
|
||||||
|
this.button4.Location = new System.Drawing.Point(240, 473);
|
||||||
|
this.button4.Name = "button4";
|
||||||
|
this.button4.Size = new System.Drawing.Size(120, 40);
|
||||||
|
this.button4.TabIndex = 3;
|
||||||
|
this.button4.Text = "1.9";
|
||||||
|
this.button4.UseVisualStyleBackColor = true;
|
||||||
|
this.button4.UseWaitCursor = true;
|
||||||
|
//
|
||||||
|
// label1
|
||||||
|
//
|
||||||
|
this.label1.AutoSize = true;
|
||||||
|
this.label1.ForeColor = System.Drawing.SystemColors.ButtonFace;
|
||||||
|
this.label1.Location = new System.Drawing.Point(96, 111);
|
||||||
|
this.label1.Name = "label1";
|
||||||
|
this.label1.Size = new System.Drawing.Size(172, 13);
|
||||||
|
this.label1.TabIndex = 4;
|
||||||
|
this.label1.Text = "What version do you want to load?";
|
||||||
|
//
|
||||||
|
// button5
|
||||||
|
//
|
||||||
|
this.button5.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.button5.ForeColor = System.Drawing.SystemColors.ButtonFace;
|
||||||
|
this.button5.Location = new System.Drawing.Point(190, 452);
|
||||||
|
this.button5.Name = "button5";
|
||||||
|
this.button5.Size = new System.Drawing.Size(222, 40);
|
||||||
|
this.button5.TabIndex = 14;
|
||||||
|
this.button5.Text = "Open App Folder";
|
||||||
|
this.button5.UseVisualStyleBackColor = true;
|
||||||
|
this.button5.Visible = false;
|
||||||
|
this.button5.Click += new System.EventHandler(this.OpenAppFolderButton);
|
||||||
|
//
|
||||||
|
// button6
|
||||||
|
//
|
||||||
|
this.button6.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.button6.ForeColor = System.Drawing.SystemColors.ButtonFace;
|
||||||
|
this.button6.Location = new System.Drawing.Point(190, 498);
|
||||||
|
this.button6.Name = "button6";
|
||||||
|
this.button6.Size = new System.Drawing.Size(222, 40);
|
||||||
|
this.button6.TabIndex = 15;
|
||||||
|
this.button6.Text = "Open AppData Folder";
|
||||||
|
this.button6.UseVisualStyleBackColor = true;
|
||||||
|
this.button6.Visible = false;
|
||||||
|
this.button6.Click += new System.EventHandler(this.OpenAppDataButton);
|
||||||
|
//
|
||||||
|
// label2
|
||||||
|
//
|
||||||
|
this.label2.AutoSize = true;
|
||||||
|
this.label2.ForeColor = System.Drawing.SystemColors.ButtonFace;
|
||||||
|
this.label2.Location = new System.Drawing.Point(243, 278);
|
||||||
|
this.label2.Name = "label2";
|
||||||
|
this.label2.Size = new System.Drawing.Size(45, 13);
|
||||||
|
this.label2.TabIndex = 17;
|
||||||
|
this.label2.Text = "Themes";
|
||||||
|
this.label2.Visible = false;
|
||||||
|
//
|
||||||
|
// panel1
|
||||||
|
//
|
||||||
|
this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
|
||||||
|
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.panel1.Location = new System.Drawing.Point(150, 328);
|
||||||
|
this.panel1.Name = "panel1";
|
||||||
|
this.panel1.Size = new System.Drawing.Size(64, 64);
|
||||||
|
this.panel1.TabIndex = 18;
|
||||||
|
this.panel1.Visible = false;
|
||||||
|
this.panel1.Click += new System.EventHandler(this.DarkThemeButton);
|
||||||
|
//
|
||||||
|
// label3
|
||||||
|
//
|
||||||
|
this.label3.AutoSize = true;
|
||||||
|
this.label3.ForeColor = System.Drawing.SystemColors.ButtonFace;
|
||||||
|
this.label3.Location = new System.Drawing.Point(156, 400);
|
||||||
|
this.label3.Name = "label3";
|
||||||
|
this.label3.Size = new System.Drawing.Size(30, 13);
|
||||||
|
this.label3.TabIndex = 19;
|
||||||
|
this.label3.Text = "Dark";
|
||||||
|
this.label3.Visible = false;
|
||||||
|
//
|
||||||
|
// label4
|
||||||
|
//
|
||||||
|
this.label4.AutoSize = true;
|
||||||
|
this.label4.ForeColor = System.Drawing.SystemColors.ButtonFace;
|
||||||
|
this.label4.Location = new System.Drawing.Point(224, 400);
|
||||||
|
this.label4.Name = "label4";
|
||||||
|
this.label4.Size = new System.Drawing.Size(42, 13);
|
||||||
|
this.label4.TabIndex = 21;
|
||||||
|
this.label4.Text = "Amoled";
|
||||||
|
this.label4.Visible = false;
|
||||||
|
//
|
||||||
|
// panel2
|
||||||
|
//
|
||||||
|
this.panel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
|
||||||
|
this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.panel2.Location = new System.Drawing.Point(229, 328);
|
||||||
|
this.panel2.Name = "panel2";
|
||||||
|
this.panel2.Size = new System.Drawing.Size(64, 64);
|
||||||
|
this.panel2.TabIndex = 20;
|
||||||
|
this.panel2.Visible = false;
|
||||||
|
this.panel2.Click += new System.EventHandler(this.AmoledThemeButton);
|
||||||
|
//
|
||||||
|
// label5
|
||||||
|
//
|
||||||
|
this.label5.AutoSize = true;
|
||||||
|
this.label5.ForeColor = System.Drawing.SystemColors.ButtonFace;
|
||||||
|
this.label5.Location = new System.Drawing.Point(304, 400);
|
||||||
|
this.label5.Name = "label5";
|
||||||
|
this.label5.Size = new System.Drawing.Size(37, 13);
|
||||||
|
this.label5.TabIndex = 23;
|
||||||
|
this.label5.Text = "Purple";
|
||||||
|
this.label5.Visible = false;
|
||||||
|
//
|
||||||
|
// panel3
|
||||||
|
//
|
||||||
|
this.panel3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(0)))), ((int)(((byte)(50)))));
|
||||||
|
this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.panel3.Location = new System.Drawing.Point(309, 328);
|
||||||
|
this.panel3.Name = "panel3";
|
||||||
|
this.panel3.Size = new System.Drawing.Size(64, 64);
|
||||||
|
this.panel3.TabIndex = 22;
|
||||||
|
this.panel3.Visible = false;
|
||||||
|
this.panel3.Click += new System.EventHandler(this.PurpleThemeButton);
|
||||||
|
//
|
||||||
|
// label6
|
||||||
|
//
|
||||||
|
this.label6.AutoSize = true;
|
||||||
|
this.label6.ForeColor = System.Drawing.SystemColors.ButtonFace;
|
||||||
|
this.label6.Location = new System.Drawing.Point(399, 400);
|
||||||
|
this.label6.Name = "label6";
|
||||||
|
this.label6.Size = new System.Drawing.Size(27, 13);
|
||||||
|
this.label6.TabIndex = 25;
|
||||||
|
this.label6.Text = "Red";
|
||||||
|
this.label6.Visible = false;
|
||||||
|
//
|
||||||
|
// panel4
|
||||||
|
//
|
||||||
|
this.panel4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
|
||||||
|
this.panel4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.panel4.Location = new System.Drawing.Point(388, 328);
|
||||||
|
this.panel4.Name = "panel4";
|
||||||
|
this.panel4.Size = new System.Drawing.Size(64, 64);
|
||||||
|
this.panel4.TabIndex = 24;
|
||||||
|
this.panel4.Visible = false;
|
||||||
|
this.panel4.Click += new System.EventHandler(this.RedThemeButton);
|
||||||
|
//
|
||||||
|
// button7
|
||||||
|
//
|
||||||
|
this.button7.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.button7.ForeColor = System.Drawing.SystemColors.ButtonFace;
|
||||||
|
this.button7.Location = new System.Drawing.Point(190, 544);
|
||||||
|
this.button7.Name = "button7";
|
||||||
|
this.button7.Size = new System.Drawing.Size(222, 40);
|
||||||
|
this.button7.TabIndex = 26;
|
||||||
|
this.button7.Text = "Restart Launcher";
|
||||||
|
this.button7.UseVisualStyleBackColor = true;
|
||||||
|
this.button7.Visible = false;
|
||||||
|
this.button7.Click += new System.EventHandler(this.RestartButton);
|
||||||
|
//
|
||||||
|
// button8
|
||||||
|
//
|
||||||
|
this.button8.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.button8.ForeColor = System.Drawing.SystemColors.ButtonFace;
|
||||||
|
this.button8.Location = new System.Drawing.Point(190, 590);
|
||||||
|
this.button8.Name = "button8";
|
||||||
|
this.button8.Size = new System.Drawing.Size(222, 40);
|
||||||
|
this.button8.TabIndex = 27;
|
||||||
|
this.button8.Text = "Reset Launcher Settings";
|
||||||
|
this.button8.UseVisualStyleBackColor = true;
|
||||||
|
this.button8.Visible = false;
|
||||||
|
this.button8.Click += new System.EventHandler(this.ResetConfigButton);
|
||||||
|
//
|
||||||
|
// label7
|
||||||
|
//
|
||||||
|
this.label7.AutoSize = true;
|
||||||
|
this.label7.ForeColor = System.Drawing.SystemColors.ButtonFace;
|
||||||
|
this.label7.Location = new System.Drawing.Point(141, 123);
|
||||||
|
this.label7.Name = "label7";
|
||||||
|
this.label7.Size = new System.Drawing.Size(144, 13);
|
||||||
|
this.label7.TabIndex = 29;
|
||||||
|
this.label7.Text = "Close launcher on game load";
|
||||||
|
this.label7.Visible = false;
|
||||||
|
this.label7.Click += new System.EventHandler(this.ToggleCloseOnLoad);
|
||||||
|
//
|
||||||
|
// label8
|
||||||
|
//
|
||||||
|
this.label8.AutoSize = true;
|
||||||
|
this.label8.ForeColor = System.Drawing.SystemColors.ButtonFace;
|
||||||
|
this.label8.Location = new System.Drawing.Point(166, 174);
|
||||||
|
this.label8.Name = "label8";
|
||||||
|
this.label8.Size = new System.Drawing.Size(118, 13);
|
||||||
|
this.label8.TabIndex = 30;
|
||||||
|
this.label8.Text = "Allow multiple instances";
|
||||||
|
this.label8.Visible = false;
|
||||||
|
this.label8.Click += new System.EventHandler(this.ToggleMultiInstance);
|
||||||
|
//
|
||||||
|
// pictureBox13
|
||||||
|
//
|
||||||
|
this.pictureBox13.Image = global::XPS.Properties.Resources.Checked;
|
||||||
|
this.pictureBox13.Location = new System.Drawing.Point(109, 119);
|
||||||
|
this.pictureBox13.Name = "pictureBox13";
|
||||||
|
this.pictureBox13.Size = new System.Drawing.Size(31, 31);
|
||||||
|
this.pictureBox13.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||||
|
this.pictureBox13.TabIndex = 34;
|
||||||
|
this.pictureBox13.TabStop = false;
|
||||||
|
this.pictureBox13.Visible = false;
|
||||||
|
this.pictureBox13.Click += new System.EventHandler(this.ToggleCloseOnLoad);
|
||||||
|
//
|
||||||
|
// pictureBox12
|
||||||
|
//
|
||||||
|
this.pictureBox12.Image = global::XPS.Properties.Resources.Checked;
|
||||||
|
this.pictureBox12.Location = new System.Drawing.Point(135, 170);
|
||||||
|
this.pictureBox12.Name = "pictureBox12";
|
||||||
|
this.pictureBox12.Size = new System.Drawing.Size(31, 31);
|
||||||
|
this.pictureBox12.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||||
|
this.pictureBox12.TabIndex = 33;
|
||||||
|
this.pictureBox12.TabStop = false;
|
||||||
|
this.pictureBox12.Visible = false;
|
||||||
|
this.pictureBox12.Click += new System.EventHandler(this.ToggleMultiInstance);
|
||||||
|
//
|
||||||
|
// pictureBox11
|
||||||
|
//
|
||||||
|
this.pictureBox11.Image = global::XPS.Properties.Resources.Unchecked;
|
||||||
|
this.pictureBox11.Location = new System.Drawing.Point(112, 120);
|
||||||
|
this.pictureBox11.Name = "pictureBox11";
|
||||||
|
this.pictureBox11.Size = new System.Drawing.Size(28, 28);
|
||||||
|
this.pictureBox11.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||||
|
this.pictureBox11.TabIndex = 32;
|
||||||
|
this.pictureBox11.TabStop = false;
|
||||||
|
this.pictureBox11.Visible = false;
|
||||||
|
this.pictureBox11.Click += new System.EventHandler(this.ToggleCloseOnLoad);
|
||||||
|
//
|
||||||
|
// pictureBox10
|
||||||
|
//
|
||||||
|
this.pictureBox10.Image = global::XPS.Properties.Resources.Unchecked;
|
||||||
|
this.pictureBox10.Location = new System.Drawing.Point(137, 171);
|
||||||
|
this.pictureBox10.Name = "pictureBox10";
|
||||||
|
this.pictureBox10.Size = new System.Drawing.Size(28, 28);
|
||||||
|
this.pictureBox10.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||||
|
this.pictureBox10.TabIndex = 31;
|
||||||
|
this.pictureBox10.TabStop = false;
|
||||||
|
this.pictureBox10.Visible = false;
|
||||||
|
this.pictureBox10.Click += new System.EventHandler(this.ToggleMultiInstance);
|
||||||
|
//
|
||||||
|
// pictureBox9
|
||||||
|
//
|
||||||
|
this.pictureBox9.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
|
this.pictureBox9.Image = global::XPS.Properties.Resources.Exit;
|
||||||
|
this.pictureBox9.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.pictureBox9.Name = "pictureBox9";
|
||||||
|
this.pictureBox9.Size = new System.Drawing.Size(84, 93);
|
||||||
|
this.pictureBox9.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||||
|
this.pictureBox9.TabIndex = 28;
|
||||||
|
this.pictureBox9.TabStop = false;
|
||||||
|
this.pictureBox9.Click += new System.EventHandler(this.ExitButton);
|
||||||
|
//
|
||||||
|
// pictureBox8
|
||||||
|
//
|
||||||
|
this.pictureBox8.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
|
this.pictureBox8.Image = global::XPS.Properties.Resources.Settings;
|
||||||
|
this.pictureBox8.Location = new System.Drawing.Point(500, 0);
|
||||||
|
this.pictureBox8.Name = "pictureBox8";
|
||||||
|
this.pictureBox8.Size = new System.Drawing.Size(84, 93);
|
||||||
|
this.pictureBox8.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||||
|
this.pictureBox8.TabIndex = 12;
|
||||||
|
this.pictureBox8.TabStop = false;
|
||||||
|
this.pictureBox8.Click += new System.EventHandler(this.SettingsButton);
|
||||||
|
//
|
||||||
|
// pictureBox7
|
||||||
|
//
|
||||||
|
this.pictureBox7.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
|
this.pictureBox7.Image = global::XPS.Properties.Resources.Dashboard;
|
||||||
|
this.pictureBox7.Location = new System.Drawing.Point(4, 520);
|
||||||
|
this.pictureBox7.Name = "pictureBox7";
|
||||||
|
this.pictureBox7.Size = new System.Drawing.Size(155, 62);
|
||||||
|
this.pictureBox7.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||||
|
this.pictureBox7.TabIndex = 11;
|
||||||
|
this.pictureBox7.TabStop = false;
|
||||||
|
this.pictureBox7.Click += new System.EventHandler(this.DashboardButton);
|
||||||
|
//
|
||||||
|
// pictureBox6
|
||||||
|
//
|
||||||
|
this.pictureBox6.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
|
this.pictureBox6.Image = global::XPS.Properties.Resources.Website;
|
||||||
|
this.pictureBox6.Location = new System.Drawing.Point(4, 575);
|
||||||
|
this.pictureBox6.Name = "pictureBox6";
|
||||||
|
this.pictureBox6.Size = new System.Drawing.Size(155, 62);
|
||||||
|
this.pictureBox6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||||
|
this.pictureBox6.TabIndex = 10;
|
||||||
|
this.pictureBox6.TabStop = false;
|
||||||
|
this.pictureBox6.Click += new System.EventHandler(this.WebsiteButton);
|
||||||
|
//
|
||||||
|
// pictureBox5
|
||||||
|
//
|
||||||
|
this.pictureBox5.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
|
this.pictureBox5.Image = global::XPS.Properties.Resources.Twitch;
|
||||||
|
this.pictureBox5.Location = new System.Drawing.Point(517, 571);
|
||||||
|
this.pictureBox5.Name = "pictureBox5";
|
||||||
|
this.pictureBox5.Size = new System.Drawing.Size(64, 64);
|
||||||
|
this.pictureBox5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||||
|
this.pictureBox5.TabIndex = 9;
|
||||||
|
this.pictureBox5.TabStop = false;
|
||||||
|
this.pictureBox5.Click += new System.EventHandler(this.TwitchButton);
|
||||||
|
//
|
||||||
|
// pictureBox4
|
||||||
|
//
|
||||||
|
this.pictureBox4.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
|
this.pictureBox4.Image = global::XPS.Properties.Resources.YouTube;
|
||||||
|
this.pictureBox4.Location = new System.Drawing.Point(447, 571);
|
||||||
|
this.pictureBox4.Name = "pictureBox4";
|
||||||
|
this.pictureBox4.Size = new System.Drawing.Size(64, 64);
|
||||||
|
this.pictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||||
|
this.pictureBox4.TabIndex = 8;
|
||||||
|
this.pictureBox4.TabStop = false;
|
||||||
|
this.pictureBox4.Click += new System.EventHandler(this.YoutubeButton);
|
||||||
|
//
|
||||||
|
// pictureBox3
|
||||||
|
//
|
||||||
|
this.pictureBox3.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
|
this.pictureBox3.Image = global::XPS.Properties.Resources.Twitter;
|
||||||
|
this.pictureBox3.Location = new System.Drawing.Point(376, 571);
|
||||||
|
this.pictureBox3.Name = "pictureBox3";
|
||||||
|
this.pictureBox3.Size = new System.Drawing.Size(64, 64);
|
||||||
|
this.pictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||||
|
this.pictureBox3.TabIndex = 7;
|
||||||
|
this.pictureBox3.TabStop = false;
|
||||||
|
this.pictureBox3.Click += new System.EventHandler(this.TwitterButton);
|
||||||
|
//
|
||||||
|
// pictureBox2
|
||||||
|
//
|
||||||
|
this.pictureBox2.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
|
this.pictureBox2.Image = global::XPS.Properties.Resources.Discord;
|
||||||
|
this.pictureBox2.Location = new System.Drawing.Point(306, 571);
|
||||||
|
this.pictureBox2.Name = "pictureBox2";
|
||||||
|
this.pictureBox2.Size = new System.Drawing.Size(64, 64);
|
||||||
|
this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||||
|
this.pictureBox2.TabIndex = 6;
|
||||||
|
this.pictureBox2.TabStop = false;
|
||||||
|
this.pictureBox2.Click += new System.EventHandler(this.DiscordButton);
|
||||||
|
//
|
||||||
|
// pictureBox1
|
||||||
|
//
|
||||||
|
this.pictureBox1.Cursor = System.Windows.Forms.Cursors.Default;
|
||||||
|
this.pictureBox1.Image = global::XPS.Properties.Resources.logoPng;
|
||||||
|
this.pictureBox1.Location = new System.Drawing.Point(172, -60);
|
||||||
|
this.pictureBox1.Name = "pictureBox1";
|
||||||
|
this.pictureBox1.Size = new System.Drawing.Size(256, 256);
|
||||||
|
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||||
|
this.pictureBox1.TabIndex = 5;
|
||||||
|
this.pictureBox1.TabStop = false;
|
||||||
|
//
|
||||||
|
// Form1
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
|
||||||
|
this.ClientSize = new System.Drawing.Size(584, 636);
|
||||||
|
this.Controls.Add(this.pictureBox13);
|
||||||
|
this.Controls.Add(this.pictureBox12);
|
||||||
|
this.Controls.Add(this.pictureBox11);
|
||||||
|
this.Controls.Add(this.pictureBox10);
|
||||||
|
this.Controls.Add(this.label8);
|
||||||
|
this.Controls.Add(this.label7);
|
||||||
|
this.Controls.Add(this.pictureBox9);
|
||||||
|
this.Controls.Add(this.button8);
|
||||||
|
this.Controls.Add(this.button7);
|
||||||
|
this.Controls.Add(this.label6);
|
||||||
|
this.Controls.Add(this.label5);
|
||||||
|
this.Controls.Add(this.panel4);
|
||||||
|
this.Controls.Add(this.label4);
|
||||||
|
this.Controls.Add(this.panel3);
|
||||||
|
this.Controls.Add(this.label3);
|
||||||
|
this.Controls.Add(this.panel2);
|
||||||
|
this.Controls.Add(this.panel1);
|
||||||
|
this.Controls.Add(this.label2);
|
||||||
|
this.Controls.Add(this.button6);
|
||||||
|
this.Controls.Add(this.button5);
|
||||||
|
this.Controls.Add(this.pictureBox8);
|
||||||
|
this.Controls.Add(this.pictureBox7);
|
||||||
|
this.Controls.Add(this.pictureBox6);
|
||||||
|
this.Controls.Add(this.pictureBox5);
|
||||||
|
this.Controls.Add(this.pictureBox4);
|
||||||
|
this.Controls.Add(this.pictureBox3);
|
||||||
|
this.Controls.Add(this.pictureBox2);
|
||||||
|
this.Controls.Add(this.label1);
|
||||||
|
this.Controls.Add(this.button4);
|
||||||
|
this.Controls.Add(this.button3);
|
||||||
|
this.Controls.Add(this.button2);
|
||||||
|
this.Controls.Add(this.button1);
|
||||||
|
this.Controls.Add(this.pictureBox1);
|
||||||
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||||
|
this.Name = "Form1";
|
||||||
|
this.Text = "XPS";
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox13)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox12)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox11)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox10)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox9)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox8)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox7)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.Button button1;
|
||||||
|
private System.Windows.Forms.Button button2;
|
||||||
|
private System.Windows.Forms.Button button3;
|
||||||
|
private System.Windows.Forms.Button button4;
|
||||||
|
private System.Windows.Forms.Label label1;
|
||||||
|
private System.Windows.Forms.PictureBox pictureBox1;
|
||||||
|
private System.Windows.Forms.PictureBox pictureBox2;
|
||||||
|
private PictureBox pictureBox3;
|
||||||
|
private PictureBox pictureBox4;
|
||||||
|
private PictureBox pictureBox5;
|
||||||
|
private PictureBox pictureBox6;
|
||||||
|
private PictureBox pictureBox7;
|
||||||
|
private PictureBox pictureBox8;
|
||||||
|
private Button button5;
|
||||||
|
private Button button6;
|
||||||
|
private Label label2;
|
||||||
|
private Panel panel1;
|
||||||
|
private Label label3;
|
||||||
|
private Label label4;
|
||||||
|
private Panel panel2;
|
||||||
|
private Label label5;
|
||||||
|
private Panel panel3;
|
||||||
|
private Label label6;
|
||||||
|
private Panel panel4;
|
||||||
|
private Button button7;
|
||||||
|
private Button button8;
|
||||||
|
private PictureBox pictureBox9;
|
||||||
|
private Label label7;
|
||||||
|
private Label label8;
|
||||||
|
private PictureBox pictureBox10;
|
||||||
|
private PictureBox pictureBox11;
|
||||||
|
private PictureBox pictureBox12;
|
||||||
|
private PictureBox pictureBox13;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,894 @@
|
|||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Drawing.Text;
|
||||||
|
using System.IO;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Security.Principal;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using System.IO.Compression;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace XPSLauncher
|
||||||
|
{
|
||||||
|
public partial class Form1 : Form
|
||||||
|
{
|
||||||
|
private static readonly HttpClient client = new HttpClient();
|
||||||
|
private static readonly string currentVersion = "2.3.9";
|
||||||
|
private PrivateFontCollection privateFonts = new PrivateFontCollection();
|
||||||
|
private Dictionary<string, bool> downloadingVersions = new Dictionary<string, bool>()
|
||||||
|
{
|
||||||
|
{ "2.2", false },
|
||||||
|
{ "2.1", false },
|
||||||
|
{ "2.0", false },
|
||||||
|
{ "1.9", false }
|
||||||
|
};
|
||||||
|
private Dictionary<string, bool> errorVersions = new Dictionary<string, bool>()
|
||||||
|
{
|
||||||
|
{ "2.2", false },
|
||||||
|
{ "2.1", false },
|
||||||
|
{ "2.0", false },
|
||||||
|
{ "1.9", false }
|
||||||
|
};
|
||||||
|
private Dictionary<string, bool> launcheQueue = new Dictionary<string, bool>()
|
||||||
|
{
|
||||||
|
{ "2.2", false },
|
||||||
|
{ "2.1", false },
|
||||||
|
{ "2.0", false },
|
||||||
|
{ "1.9", false }
|
||||||
|
};
|
||||||
|
private static bool settingsOpen = false;
|
||||||
|
private static bool settingCloseOnLoad = false;
|
||||||
|
private static bool settingAllowMultipleInstances = false;
|
||||||
|
|
||||||
|
public Form1()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!IsRunningAsAdministrator())
|
||||||
|
{
|
||||||
|
MessageBox.Show($"XPS requires administrator due to how the installer works. Please re-run XPS with administrator to continue", $"Administrator Required", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
InitializeComponent();
|
||||||
|
FormBorderStyle = FormBorderStyle.FixedSingle;
|
||||||
|
MaximizeBox = false;
|
||||||
|
pictureBox1.SendToBack();
|
||||||
|
ConvertOnLoad();
|
||||||
|
LoadFontFromFile();
|
||||||
|
CheckVersion();
|
||||||
|
CheckDownloaded();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show($"Error loading XPS. Error message: {ex.Message}", $"Error loading XPS", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadFontFromFile()
|
||||||
|
{
|
||||||
|
string fontPath = "Pusab.ttf";
|
||||||
|
privateFonts.AddFontFile(fontPath);
|
||||||
|
button1.Font = new Font(privateFonts.Families[0], 17.5F);
|
||||||
|
button2.Font = new Font(privateFonts.Families[0], 17.5F);
|
||||||
|
button3.Font = new Font(privateFonts.Families[0], 17.5F);
|
||||||
|
button4.Font = new Font(privateFonts.Families[0], 17.5F);
|
||||||
|
button5.Font = new Font(privateFonts.Families[0], 14.5F);
|
||||||
|
button6.Font = new Font(privateFonts.Families[0], 12.5F);
|
||||||
|
button7.Font = new Font(privateFonts.Families[0], 13.5F);
|
||||||
|
button8.Font = new Font(privateFonts.Families[0], 10.5F);
|
||||||
|
label1.Font = new Font(privateFonts.Families[0], 15.75F);
|
||||||
|
label7.Font = new Font(privateFonts.Families[0], 15.75F);
|
||||||
|
label8.Font = new Font(privateFonts.Families[0], 15.75F);
|
||||||
|
label2.Font = new Font(privateFonts.Families[0], 20.0F);
|
||||||
|
label3.Font = new Font(privateFonts.Families[0], 13.5F);
|
||||||
|
label4.Font = new Font(privateFonts.Families[0], 13.5F);
|
||||||
|
label5.Font = new Font(privateFonts.Families[0], 13.5F);
|
||||||
|
label6.Font = new Font(privateFonts.Families[0], 13.5F);
|
||||||
|
button7.Font = new Font(privateFonts.Families[0], 13.5F);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void load22(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
launchGDPS("2.2");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void load21(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
launchGDPS("2.1");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void load20(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
launchGDPS("2.0");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void load19(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
launchGDPS("1.9");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OpenUrl(string url)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Process.Start(new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = url,
|
||||||
|
UseShellExecute = true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show($"Failed to open URL: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void launchGDPS(string version, bool forceOpen = false)
|
||||||
|
{
|
||||||
|
if (!button1.Visible || !button2.Visible || !button3.Visible || !button4.Visible)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
string executionPath = GetExecutionPath();
|
||||||
|
string path = "";
|
||||||
|
|
||||||
|
if (ModifierKeys == Keys.Shift)
|
||||||
|
{
|
||||||
|
ResetGDPS(version);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (launcheQueue[version])
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (downloadingVersions[version])
|
||||||
|
{
|
||||||
|
DialogResult dialogResult = MessageBox.Show($"Version {version} is currently being downloaded. Would you like to add it to the launch queue?", $"Downloading {version}", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
|
||||||
|
if (dialogResult == DialogResult.Yes && downloadingVersions[version])
|
||||||
|
{
|
||||||
|
launcheQueue[version] = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (errorVersions[version])
|
||||||
|
{
|
||||||
|
MessageBox.Show($"Version {version} had an issue while downloading and cannot be launched. Please create a support ticket in our Discord server for assistance.", $"Error downloading {version}", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (version)
|
||||||
|
{
|
||||||
|
case "2.2":
|
||||||
|
path = Path.Combine(executionPath, "gdps", "2.2", "XPS.exe");
|
||||||
|
break;
|
||||||
|
case "2.1":
|
||||||
|
path = Path.Combine(executionPath, "gdps", "2.1", "XPS.exe");
|
||||||
|
break;
|
||||||
|
case "2.0":
|
||||||
|
path = Path.Combine(executionPath, "gdps", "2.0", "XPS.exe");
|
||||||
|
break;
|
||||||
|
case "1.9":
|
||||||
|
path = Path.Combine(executionPath, "gdps", "1.9", "XPS.exe");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (File.Exists(path) && !downloadingVersions[version] && !errorVersions[version])
|
||||||
|
{
|
||||||
|
if ((settingAllowMultipleInstances && !IsProcessOpen(path)) || forceOpen)
|
||||||
|
{
|
||||||
|
StartProcess(path);
|
||||||
|
if(version == "1.9") {
|
||||||
|
StartProcess(Path.Combine(executionPath, "gdps", "1.9", "XPS-Proxy.exe"));
|
||||||
|
}
|
||||||
|
if (settingCloseOnLoad && !downloadingVersions["2.2"] && !downloadingVersions["2.1"] && !downloadingVersions["2.0"] && !downloadingVersions["1.9"])
|
||||||
|
{
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DialogResult result = MessageBox.Show($"XPS is already running. Would you like to force open XPS?\n\nContinuing can result in save data loss.", "XPS already open", MessageBoxButtons.YesNo, MessageBoxIcon.Error);
|
||||||
|
if (result == DialogResult.Yes)
|
||||||
|
{
|
||||||
|
launchGDPS(version, true);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show($"Error loading version {version}. Create a support ticket in the Discord and we will try to help you.", $"Error loading {version}", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ResetGDPS(string version)
|
||||||
|
{
|
||||||
|
if (downloadingVersions[version])
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
DialogResult dialogResult = MessageBox.Show($"Are you sure you would like to reset {version}? This will delete all game files and replace them with fresh ones. This will not effect save files.", $"Reset keybind pressed", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||||
|
if (dialogResult == DialogResult.Yes)
|
||||||
|
{
|
||||||
|
downloadingVersions[version] = true;
|
||||||
|
string executionPath = GetExecutionPath();
|
||||||
|
string path = Path.Combine(executionPath, "gdps", version);
|
||||||
|
if (Directory.Exists(path))
|
||||||
|
{
|
||||||
|
Directory.Delete(path, true);
|
||||||
|
}
|
||||||
|
DownloadAndExtractFiles(version);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DiscordButton(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OpenUrl("https://xps.xytriza.com/discord");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TwitterButton(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OpenUrl("https://xps.xytriza.com/twitter");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void YoutubeButton(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OpenUrl("https://xps.xytriza.com/youtube");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TwitchButton(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OpenUrl("https://xps.xytriza.com/twitch");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void WebsiteButton(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OpenUrl("https://xps.xytriza.com");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DashboardButton(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OpenUrl("https://dashboard.xps.xytriza.com");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SettingsButton(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ToggleSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ExitButton(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RestartButton(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Application.Restart();
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ResetConfigButton(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ResetConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DarkThemeButton(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
WriteConfig("theme", 0);
|
||||||
|
LoadTheme();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AmoledThemeButton(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
WriteConfig("theme", 1);
|
||||||
|
LoadTheme();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PurpleThemeButton(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
WriteConfig("theme", 2);
|
||||||
|
LoadTheme();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RedThemeButton(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
WriteConfig("theme", 3);
|
||||||
|
LoadTheme();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OpenAppDataButton(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string localAppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
|
||||||
|
string xpsPath = Path.Combine(localAppDataPath, "XPS");
|
||||||
|
if (!Directory.Exists(xpsPath))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(xpsPath);
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Process.Start("explorer.exe", xpsPath);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show($"Error opening the XPS folder. Create a support ticket in the Discord and we will try to help you.\n\nError message: {ex.Message}", $"Error opening XPS folder", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OpenAppFolderButton(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string executionPath = GetExecutionPath();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Process.Start("explorer.exe", executionPath);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show($"Error opening the XPS folder. Create a support ticket in the Discord and we will try to help you.\n\nError message: {ex.Message}", $"Error opening XPS folder", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void CheckVersion()
|
||||||
|
{
|
||||||
|
var versionCheckResult = await CheckVersionAsync();
|
||||||
|
button1.UseWaitCursor = false;
|
||||||
|
button2.UseWaitCursor = false;
|
||||||
|
button3.UseWaitCursor = false;
|
||||||
|
button4.UseWaitCursor = false;
|
||||||
|
if (versionCheckResult.HasError)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Error checking version. Check your internet connection or try again later", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
else if (versionCheckResult.IsNewVersionAvailable)
|
||||||
|
{
|
||||||
|
MessageBox.Show("New version released! Click \"OK\" to download the update", "Update Required", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
|
OpenUrl("https://xps.xytriza.com/download/windows");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
button1.Cursor = Cursors.Hand;
|
||||||
|
button2.Cursor = Cursors.Hand;
|
||||||
|
button3.Cursor = Cursors.Hand;
|
||||||
|
button4.Cursor = Cursors.Hand;
|
||||||
|
button1.Click += new EventHandler(load22);
|
||||||
|
button2.Click += new EventHandler(load21);
|
||||||
|
button3.Click += new EventHandler(load20);
|
||||||
|
button4.Click += new EventHandler(this.load19);
|
||||||
|
KeyPreview = true;
|
||||||
|
KeyPress += MainForm_KeyPress;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckDownloaded()
|
||||||
|
{
|
||||||
|
string executionPath = GetExecutionPath();
|
||||||
|
string[] versions = { "2.2", "2.1", "2.0", "1.9" };
|
||||||
|
foreach (string version in versions)
|
||||||
|
{
|
||||||
|
string folder = Path.Combine(executionPath, "gdps", version);
|
||||||
|
string path = Path.Combine(executionPath, "gdps", version, "XPS.exe");
|
||||||
|
if (!Directory.Exists(folder) || !File.Exists(path))
|
||||||
|
{
|
||||||
|
downloadingVersions[version] = true;
|
||||||
|
Directory.CreateDirectory(folder);
|
||||||
|
DownloadAndExtractFiles(version);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void DownloadAndExtractFiles(string version)
|
||||||
|
{
|
||||||
|
string executionPath = GetExecutionPath();
|
||||||
|
string zipPath = Path.Combine(executionPath, $"pkg-{version}.zip");
|
||||||
|
string extractPath = Path.Combine(executionPath, "gdps", version);
|
||||||
|
string downloadUrl = $"https://xps.xytriza.com/assets/package-win-{version}.zip";
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var client = new HttpClient())
|
||||||
|
{
|
||||||
|
var response = await client.GetAsync(downloadUrl, HttpCompletionOption.ResponseHeadersRead);
|
||||||
|
if (response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
using (var fileStream = File.Create(zipPath))
|
||||||
|
{
|
||||||
|
await response.Content.CopyToAsync(fileStream);
|
||||||
|
}
|
||||||
|
if (Directory.Exists(extractPath))
|
||||||
|
{
|
||||||
|
DirectoryInfo di = new DirectoryInfo(extractPath);
|
||||||
|
foreach (FileInfo file in di.GetFiles())
|
||||||
|
{
|
||||||
|
file.Delete();
|
||||||
|
}
|
||||||
|
foreach (DirectoryInfo dir in di.GetDirectories())
|
||||||
|
{
|
||||||
|
dir.Delete(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ZipFile.ExtractToDirectory(zipPath, extractPath);
|
||||||
|
if (File.Exists(zipPath))
|
||||||
|
{
|
||||||
|
File.Delete(zipPath);
|
||||||
|
}
|
||||||
|
downloadingVersions[version] = false;
|
||||||
|
errorVersions[version] = false;
|
||||||
|
if (launcheQueue[version])
|
||||||
|
{
|
||||||
|
launcheQueue[version] = false;
|
||||||
|
launchGDPS(version);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
errorVersions[version] = true;
|
||||||
|
downloadingVersions[version] = false;
|
||||||
|
if (Directory.Exists(extractPath))
|
||||||
|
{
|
||||||
|
Directory.Delete(extractPath);
|
||||||
|
}
|
||||||
|
if (File.Exists(zipPath))
|
||||||
|
{
|
||||||
|
File.Delete(zipPath);
|
||||||
|
}
|
||||||
|
MessageBox.Show($"Error downloading files for version {version}. Create a support ticket in the Discord and we will try to help you.", $"Error downloading {version}", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
errorVersions[version] = true;
|
||||||
|
downloadingVersions[version] = false;
|
||||||
|
if (Directory.Exists(extractPath))
|
||||||
|
{
|
||||||
|
Directory.Delete(extractPath);
|
||||||
|
}
|
||||||
|
if (File.Exists(zipPath))
|
||||||
|
{
|
||||||
|
File.Delete(zipPath);
|
||||||
|
}
|
||||||
|
MessageBox.Show($"Error downloading files for version {version}. Create a support ticket in the Discord and we will try to help you.\n\nError message: {ex.Message}", $"Error downloading {version}", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async Task<VersionCheckResult> CheckVersionAsync()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
HttpResponseMessage response = await client.GetAsync("https://xps.xytriza.com/getLatestWindowsVersion.php");
|
||||||
|
if (response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
string latestVersion = await response.Content.ReadAsStringAsync();
|
||||||
|
return new VersionCheckResult
|
||||||
|
{
|
||||||
|
IsNewVersionAvailable = IsNewerVersion(currentVersion, latestVersion.Trim()),
|
||||||
|
HasError = false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return new VersionCheckResult { HasError = true };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return new VersionCheckResult { HasError = true };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool IsNewerVersion(string currentVersion, string latestVersion)
|
||||||
|
{
|
||||||
|
Version currentVer, latestVer;
|
||||||
|
if (Version.TryParse(currentVersion, out currentVer) && Version.TryParse(latestVersion, out latestVer))
|
||||||
|
{
|
||||||
|
return latestVer > currentVer;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
static string GetExecutionPath() => AppDomain.CurrentDomain.BaseDirectory;
|
||||||
|
|
||||||
|
static void StartProcess(string path)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ProcessStartInfo startInfo = new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = path,
|
||||||
|
WorkingDirectory = Path.GetDirectoryName(path),
|
||||||
|
UseShellExecute = false
|
||||||
|
};
|
||||||
|
|
||||||
|
Process.Start(startInfo);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show($"Error launching that GDPS version. Create a support ticket in the Discord and we will try to help you.\n\nError message: {ex.Message}", $"Error laucnhing GDPS", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool IsRunningAsAdministrator()
|
||||||
|
{
|
||||||
|
using (WindowsIdentity identity = WindowsIdentity.GetCurrent())
|
||||||
|
{
|
||||||
|
WindowsPrincipal principal = new WindowsPrincipal(identity);
|
||||||
|
return principal.IsInRole(WindowsBuiltInRole.Administrator);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void MainForm_KeyPress(object sender, KeyPressEventArgs e)
|
||||||
|
{
|
||||||
|
switch (e.KeyChar)
|
||||||
|
{
|
||||||
|
//will fix this later
|
||||||
|
case '1':
|
||||||
|
button1.Focus();
|
||||||
|
button1.PerformClick();
|
||||||
|
break;
|
||||||
|
case '!':
|
||||||
|
button1.Focus();
|
||||||
|
ResetGDPS("2.2");
|
||||||
|
break;
|
||||||
|
case '2':
|
||||||
|
button2.Focus();
|
||||||
|
button2.PerformClick();
|
||||||
|
break;
|
||||||
|
case '@':
|
||||||
|
button2.Focus();
|
||||||
|
ResetGDPS("2.1");
|
||||||
|
break;
|
||||||
|
case '3':
|
||||||
|
button3.Focus();
|
||||||
|
button3.PerformClick();
|
||||||
|
break;
|
||||||
|
case '#':
|
||||||
|
button3.Focus();
|
||||||
|
ResetGDPS("2.0");
|
||||||
|
break;
|
||||||
|
case '4':
|
||||||
|
button4.Focus();
|
||||||
|
button4.PerformClick();
|
||||||
|
break;
|
||||||
|
case '$':
|
||||||
|
button4.Focus();
|
||||||
|
ResetGDPS("1.9");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ToggleSettings()
|
||||||
|
{
|
||||||
|
if (settingsOpen)
|
||||||
|
{
|
||||||
|
//enable stuff
|
||||||
|
button1.Visible = true;
|
||||||
|
button2.Visible = true;
|
||||||
|
button3.Visible = true;
|
||||||
|
button4.Visible = true;
|
||||||
|
label1.Visible = true;
|
||||||
|
pictureBox7.Visible = true;
|
||||||
|
pictureBox6.Visible = true;
|
||||||
|
pictureBox5.Visible = true;
|
||||||
|
pictureBox4.Visible = true;
|
||||||
|
pictureBox3.Visible = true;
|
||||||
|
pictureBox2.Visible = true;
|
||||||
|
|
||||||
|
//disable stuff
|
||||||
|
button5.Visible = false;
|
||||||
|
button6.Visible = false;
|
||||||
|
button7.Visible = false;
|
||||||
|
button8.Visible = false;
|
||||||
|
label2.Visible = false;
|
||||||
|
panel1.Visible = false;
|
||||||
|
label3.Visible = false;
|
||||||
|
panel2.Visible = false;
|
||||||
|
label4.Visible = false;
|
||||||
|
panel3.Visible = false;
|
||||||
|
label5.Visible = false;
|
||||||
|
panel4.Visible = false;
|
||||||
|
label6.Visible = false;
|
||||||
|
label7.Visible = false;
|
||||||
|
label8.Visible = false;
|
||||||
|
pictureBox10.Visible = false;
|
||||||
|
pictureBox11.Visible = false;
|
||||||
|
pictureBox12.Visible = false;
|
||||||
|
pictureBox13.Visible = false;
|
||||||
|
button1.Focus();
|
||||||
|
settingsOpen = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//disable stuff
|
||||||
|
button1.Visible = false;
|
||||||
|
button2.Visible = false;
|
||||||
|
button3.Visible = false;
|
||||||
|
button4.Visible = false;
|
||||||
|
label1.Visible = false;
|
||||||
|
pictureBox7.Visible = false;
|
||||||
|
pictureBox6.Visible = false;
|
||||||
|
pictureBox5.Visible = false;
|
||||||
|
pictureBox4.Visible = false;
|
||||||
|
pictureBox3.Visible = false;
|
||||||
|
pictureBox2.Visible = false;
|
||||||
|
|
||||||
|
//enable stuff
|
||||||
|
button5.Visible = true;
|
||||||
|
button6.Visible = true;
|
||||||
|
button7.Visible = true;
|
||||||
|
button8.Visible = true;
|
||||||
|
label2.Visible = true;
|
||||||
|
panel1.Visible = true;
|
||||||
|
label3.Visible = true;
|
||||||
|
panel2.Visible = true;
|
||||||
|
label4.Visible = true;
|
||||||
|
panel3.Visible = true;
|
||||||
|
label5.Visible = true;
|
||||||
|
panel4.Visible = true;
|
||||||
|
label6.Visible = true;
|
||||||
|
label7.Visible = true;
|
||||||
|
label8.Visible = true;
|
||||||
|
if (!settingCloseOnLoad)
|
||||||
|
{
|
||||||
|
pictureBox11.Visible = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pictureBox13.Visible = true;
|
||||||
|
}
|
||||||
|
if (!settingAllowMultipleInstances)
|
||||||
|
{
|
||||||
|
pictureBox10.Visible = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pictureBox12.Visible = true;
|
||||||
|
}
|
||||||
|
button5.Focus();
|
||||||
|
settingsOpen = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ResetConfig()
|
||||||
|
{
|
||||||
|
string userPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
|
||||||
|
string xpsPath = Path.Combine(userPath, "Xytriza", "XPS");
|
||||||
|
string configPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "xytriza", "xpslauncher.json");
|
||||||
|
if (!Directory.Exists(xpsPath))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(xpsPath);
|
||||||
|
}
|
||||||
|
if (File.Exists(configPath))
|
||||||
|
{
|
||||||
|
File.Delete(configPath);
|
||||||
|
}
|
||||||
|
if (settingsOpen && settingCloseOnLoad)
|
||||||
|
{
|
||||||
|
pictureBox13.Visible = false;
|
||||||
|
pictureBox11.Visible = true;
|
||||||
|
}
|
||||||
|
if (settingsOpen && settingAllowMultipleInstances)
|
||||||
|
{
|
||||||
|
pictureBox12.Visible = false;
|
||||||
|
pictureBox10.Visible = true;
|
||||||
|
}
|
||||||
|
settingAllowMultipleInstances = false;
|
||||||
|
settingAllowMultipleInstances = false;
|
||||||
|
SetThemeColor(Color.FromArgb(50, 50, 50));
|
||||||
|
dynamic json = new
|
||||||
|
{
|
||||||
|
lastVersion = currentVersion,
|
||||||
|
closeOnLoad = false,
|
||||||
|
allowMultipleInstances = false,
|
||||||
|
theme = 0
|
||||||
|
};
|
||||||
|
string jsonText = Newtonsoft.Json.JsonConvert.SerializeObject(json, Newtonsoft.Json.Formatting.Indented);
|
||||||
|
File.WriteAllText(configPath, jsonText);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void WriteConfig<T>(string key, T value)
|
||||||
|
{
|
||||||
|
dynamic json = ReadConfig();
|
||||||
|
json[key] = value;
|
||||||
|
string jsonText = Newtonsoft.Json.JsonConvert.SerializeObject(json, Newtonsoft.Json.Formatting.Indented);
|
||||||
|
string configPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "xytriza", "xpslauncher.json");
|
||||||
|
File.WriteAllText(configPath, jsonText);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RemoveConfigValue(string key)
|
||||||
|
{
|
||||||
|
dynamic json = ReadConfig();
|
||||||
|
json.Remove(key);
|
||||||
|
string jsonText = Newtonsoft.Json.JsonConvert.SerializeObject(json, Newtonsoft.Json.Formatting.Indented);
|
||||||
|
string configPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "xytriza", "xpslauncher.json");
|
||||||
|
File.WriteAllText(configPath, jsonText);
|
||||||
|
}
|
||||||
|
|
||||||
|
private dynamic ReadConfig()
|
||||||
|
{
|
||||||
|
string configPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "xytriza", "xpslauncher.json");
|
||||||
|
string oldConfigFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "XPS");
|
||||||
|
string oldConfigPath = Path.Combine(oldConfigFolder, "launcher.json");
|
||||||
|
if (!File.Exists(configPath))
|
||||||
|
{
|
||||||
|
ResetConfig();
|
||||||
|
}
|
||||||
|
if (Directory.Exists(oldConfigFolder) && File.Exists(oldConfigPath))
|
||||||
|
{
|
||||||
|
string oldConfigText = File.ReadAllText(oldConfigPath);
|
||||||
|
File.WriteAllText(configPath, oldConfigText);
|
||||||
|
File.Delete(oldConfigPath);
|
||||||
|
}
|
||||||
|
string jsonText = File.ReadAllText(configPath);
|
||||||
|
dynamic json = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonText);
|
||||||
|
return json ?? new { };
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool IsProcessOpen(string filePath)
|
||||||
|
{
|
||||||
|
var processes = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(filePath));
|
||||||
|
return processes.Any(p => p.MainModule.FileName.Equals(filePath, StringComparison.OrdinalIgnoreCase));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ConvertOnLoad()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
dynamic config = ReadConfig();
|
||||||
|
|
||||||
|
if (config.lastVersion == "2.2.0")
|
||||||
|
{
|
||||||
|
RemoveConfigValue("closeOnExit");
|
||||||
|
WriteConfig("closeOnLoad", config.closeOnExit ?? false);
|
||||||
|
WriteConfig("allowMultipleInstances", false);
|
||||||
|
WriteConfig("theme", 0);
|
||||||
|
config.allowMultipleInstances = false;
|
||||||
|
config.closeOnLoad = config.closeOnExit ?? false;
|
||||||
|
}
|
||||||
|
|
||||||
|
settingCloseOnLoad = config.closeOnLoad;
|
||||||
|
settingAllowMultipleInstances = config.allowMultipleInstances;
|
||||||
|
if (settingsOpen && settingCloseOnLoad)
|
||||||
|
{
|
||||||
|
pictureBox13.Visible = false;
|
||||||
|
pictureBox11.Visible = true;
|
||||||
|
}
|
||||||
|
if (settingsOpen && settingAllowMultipleInstances)
|
||||||
|
{
|
||||||
|
pictureBox12.Visible = false;
|
||||||
|
pictureBox10.Visible = true;
|
||||||
|
}
|
||||||
|
LoadTheme();
|
||||||
|
WriteConfig("lastVersion", currentVersion);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
ResetConfig();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadTheme()
|
||||||
|
{
|
||||||
|
dynamic config = ReadConfig();
|
||||||
|
int theme = config.theme;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
switch (theme)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
SetThemeColor(Color.FromArgb(0, 0, 0));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
SetThemeColor(Color.FromArgb(25, 0, 50));
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
SetThemeColor(Color.FromArgb(35, 0, 0));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
SetThemeColor(Color.FromArgb(50, 50, 50));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show($"Error loading theme. Error message: {ex.Message}", $"Error loading theme", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetThemeColor(Color color)
|
||||||
|
{
|
||||||
|
this.BackColor = color;
|
||||||
|
pictureBox8.BackColor = color;
|
||||||
|
pictureBox7.BackColor = color;
|
||||||
|
pictureBox6.BackColor = color;
|
||||||
|
pictureBox5.BackColor = color;
|
||||||
|
pictureBox4.BackColor = color;
|
||||||
|
pictureBox3.BackColor = color;
|
||||||
|
pictureBox2.BackColor = color;
|
||||||
|
pictureBox1.BackColor = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ToggleCloseOnLoad(object sender = null, EventArgs e = null)
|
||||||
|
{
|
||||||
|
if (settingCloseOnLoad)
|
||||||
|
{
|
||||||
|
settingCloseOnLoad = false;
|
||||||
|
pictureBox13.Visible = false;
|
||||||
|
pictureBox11.Visible = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
settingCloseOnLoad = true;
|
||||||
|
pictureBox13.Visible = true;
|
||||||
|
pictureBox11.Visible = false;
|
||||||
|
}
|
||||||
|
WriteConfig("closeOnLoad", settingCloseOnLoad);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ToggleMultiInstance(object sender = null, EventArgs e = null)
|
||||||
|
{
|
||||||
|
if (settingAllowMultipleInstances)
|
||||||
|
{
|
||||||
|
settingAllowMultipleInstances = false;
|
||||||
|
pictureBox12.Visible = false;
|
||||||
|
pictureBox10.Visible = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
settingAllowMultipleInstances = true;
|
||||||
|
pictureBox12.Visible = true;
|
||||||
|
pictureBox10.Visible = false;
|
||||||
|
}
|
||||||
|
WriteConfig("allowMultipleInstances", settingAllowMultipleInstances);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<int> GetPIDsByApplicationPath(string applicationPath)
|
||||||
|
{
|
||||||
|
var pids = new List<int>();
|
||||||
|
var query = $"Get-WmiObject Win32_Process | Where-Object {{$_.ExecutablePath -eq '{applicationPath}'}} | Select-Object ProcessId";
|
||||||
|
var startInfo = new ProcessStartInfo("powershell", $"-Command \"{query}\"")
|
||||||
|
{
|
||||||
|
RedirectStandardOutput = true,
|
||||||
|
UseShellExecute = false,
|
||||||
|
CreateNoWindow = true
|
||||||
|
};
|
||||||
|
|
||||||
|
using (var process = Process.Start(startInfo))
|
||||||
|
{
|
||||||
|
if (process != null)
|
||||||
|
{
|
||||||
|
string output = process.StandardOutput.ReadToEnd();
|
||||||
|
process.WaitForExit();
|
||||||
|
|
||||||
|
var lines = output.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
foreach (var line in lines)
|
||||||
|
{
|
||||||
|
if (int.TryParse(line, out var pid))
|
||||||
|
{
|
||||||
|
pids.Add(pid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pids;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class VersionCheckResult
|
||||||
|
{
|
||||||
|
public bool IsNewVersionAvailable { get; set; }
|
||||||
|
public bool HasError { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,511 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<metadata name="button1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button3.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button4.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="label1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button5.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button6.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="label2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="panel1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="label3.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="label4.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="panel2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="label5.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="panel3.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="label6.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="panel4.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button7.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button8.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="label7.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="label8.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="pictureBox13.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="pictureBox12.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="pictureBox11.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="pictureBox10.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="pictureBox9.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="pictureBox8.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="pictureBox7.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="pictureBox6.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="pictureBox5.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="pictureBox4.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="pictureBox3.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="pictureBox2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="pictureBox1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
AAABAAEAQEAAAAEAIABgQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP7+/gDt7e0A7OzsAOzs7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs
|
||||||
|
7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs
|
||||||
|
7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs
|
||||||
|
7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs7ADs7OwA7OzsAO3t7QD+/v4A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wDt7e0AJSUlAA8PDwATExMAExMTABMT
|
||||||
|
EwATExMAExMTABMTEwATExMAExMTABMTEwATExMAExMTABMTEwATExMAExMTABMTEwATExMAExMTABMT
|
||||||
|
EwATExMAExMTABMTEwATExMAExMTABMTEwATExMAExMTABMTEwATExMAExMTABMTEwATExMAExMTABMT
|
||||||
|
EwATExMAExMTABMTEwATExMAExMTABMTEwATExMAExMTABMTEwATExMAExMTAA8PDwAlJSUA7e3tAP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A7OzsAA8P
|
||||||
|
DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAADw8PAOzs7AD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AOzs7AATExMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABMTEwDs7OwA////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wDs7OwAExMTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATExMA7OzsAP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A7OzsABMTEwAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExMTAOzs
|
||||||
|
7AD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AOzs
|
||||||
|
7AATExMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAABMTEwDs7OwA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wDs7OwAExMTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATExMA7OzsAP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A7OzsABMTEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExMTAOzs7AD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AOzs7AATExMAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMT
|
||||||
|
EwDs7OwA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wDs7OwAExMTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAATExMA7OzsAP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A7OzsABMTEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExMTAOzs7AD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AOzs7AATExMAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMTEwDs7OwA////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wDs7OwAExMTAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAATExMA7OzsAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A7OzsABMTEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAExMTAOzs7AD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AOzs7AATExMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMTEwDs7OwA////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wDs7OwAExMTAAAAAAAAAAAAAAAABQAA
|
||||||
|
AAgAAAALAAAACgAAAAIAAAAAAAAAAAAAAAAAAAALAAAAEAAAAA8AAAAPAAAADQAAAAgAAAAAAAAAAAAA
|
||||||
|
AAQAAAAKAAAACwAAAA0AAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAACAAAABEAAAAWAAAAFQAAABIAAAAOAAAABwAAAAAAAAAAAAAAAAAAAAATExMA7OzsAP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A7OzsABMT
|
||||||
|
EwAAAAAHAAAASgAAAGgAAABzAAAAawAAAEoAAAApAAAAAAAAAB0AAABxAAAAiwAAAI0AAACKAAAAfwAA
|
||||||
|
AGMAAAA8AAAAIAAAAEYAAABwAAAAewAAAH0AAABtAAAATwAAADAAAAATAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAUAAAAyAAAAZwAAAI0AAAChAAAAogAAAJYAAACAAAAAXQAAADoAAAAjAAAACwAA
|
||||||
|
AAAAAAAAExMTAOzs7AD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AOzs7AASEREFAAcIrB1NU/wlY2z/Km55/yRdZf8FDxDaAAAAVAAAAE0IGBrcLXR//zaN
|
||||||
|
m/81jJn/MoaR/y53gf8bR037AAEBtAADA7sbR036Km55/y12gP8ud4L/JF9o/w0jJuoAAACUAAAAOQAA
|
||||||
|
AAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUAAACpDykt7CZkbf82jZr/PZ+v/z2gr/83kqD/LHN9/xc+
|
||||||
|
Q/cBBQXKAAAAcwAAADYAAAAQAAAAABMTEwDs7OwA////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wDs7OwAEA0MFwsnK/Bc6///XfL//13x//9g9///PJqo/wAA
|
||||||
|
AMMHFRbhS8LU/1/1//9d8f//XfD//13x//9e9P//WOL4/wUWGP8ud4L/XvP//13x//9d8f//XfH//13x
|
||||||
|
//9W3fP/FTtB/QAAAGYAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAFgPKS3wP6Ox/1jj+v9d8f//XfH//1zv
|
||||||
|
//9c7///XfD//13x//9b6///R7nK/xIxNvgAAACFAAAAMAAAAAUTExMA7OzsAP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A7OzsABMSEgAAAACNN5Gg/1vv
|
||||||
|
//9W5P//VuX//1np//8ZSlL/NpCf/1vw//9W4///VuT//1bk//9W5P//Wu3//z6ktP8ABAX/Sb7T/1nr
|
||||||
|
//9W5P//V+T//1fk//9W5P//XPL//zGCjv8AAACJAAAADQAAAAAAAAAAAAAAAAAAABELIyfnUdXr/1rv
|
||||||
|
//9X5v//V+b//1bk//9W5P//VuP//1bj//9W5P//VuT//1ru//9Q0+r/CiAj7gAAAFgAAAATExMTAOzs
|
||||||
|
7AD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AOzs
|
||||||
|
7AATExMAAAAAEgcZHN5Kzef/UuT//1Df//9R4v//TdXy/0/d/P9Q4P//UN///1Df//9Q3///UeL//1Db
|
||||||
|
+P8NKi/vAwgI40jK5P9S4///UN///1Df//9Q3///UN///1Tq//8vgI7/AAAAiAAAABQAAAAGAAAABAAA
|
||||||
|
AAAAAAAWETU87lTn//9S5v//UeL//0vT8P9Q3/7/UN///1Df//9Q3///UN///1Df//9Q3///Vez//yx8
|
||||||
|
i/8AAACRAAAAGhMTEwDs7OwA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wDs7OwAExMTAAAAAAAAAABTG1Rg/07j//9K2///Str//0vd//9L3P//Stv//0rb
|
||||||
|
//9K2///Stv//0/m//8odof/AAAAiQcXGsVFzez/TN7//0vb//9L2///S9v//0vb//9O5v//LYCR/wAA
|
||||||
|
AKoAAABeAAAATAAAADUAAAAiAAAADAADBKgzmK3/Qb3Y/xZCS/8NLDP/SdT1/0vd//9K2///Stv//0rb
|
||||||
|
//9L2///Stv//03j//85pLv/AAAAsAAAABoTExMA7OzsAP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A7OzsABMTEwAAAAAAAAAAAAAAAKIvkqv/SOD//0TW
|
||||||
|
//9E1v//RNb//0TW//9E1v//RNb//0fd//86s9P/AQoM0QAAABoIHSLMQszx/0XZ//9E1v//Rdb//0XW
|
||||||
|
//9F1v//Rtn//z/E6P8gbH//FklW+w0sM+wCCQrMAAAAigAAAEAAAAA2AQUFqQAAAPkFFhr/LpOt/0ba
|
||||||
|
//9F1///Rdb//0XW//9F1v//Rdb//0XW//9H3v//NqTA/wAAAK8AAAARExMTAOzs7AD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AOzs7AATExMAAAAAAAAA
|
||||||
|
AAAAAAATBBUZ2jm63/9A1v//PtL//z7S//8+0v//PtL//z/U//8/0Pv/DjZA+AAAAEoAAAAACB8l0T3J
|
||||||
|
8/8/1P//PtL//z7S//8+0v//P9L//z7S//8/1f//Qtz//0Ha//8+0v3/NbXa/xpbbf8AAAC8AAAAOwAA
|
||||||
|
AIYVTl37PMny/0Lb//8+0v//PtL//z/S//8+0v//PtL//z7S//8+0v//Q9///yJyif8AAAB+AAAAABMT
|
||||||
|
EwDs7OwA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wDs7OwAExMTAAAAAAAAAAAAAAAADwIRFdcytN3/OdH//zjN//84zf//OM3//zjN//871v//H3OM/wAA
|
||||||
|
AKoAAAAeAAAACAcfJtI3xvT/Oc///zjO//84zv//OM3//zjN//84zf7/OM///zrV//861v//OdH//zrT
|
||||||
|
//892v//GV1y/wAAALoRRFP9O9P//zrS//84zf7/OM7//zjO//85zv//Oc7//zjO/v85zv//O9j//zGv
|
||||||
|
1v8DEhfdAAAAHgAAAAATExMA7OzsAP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A7OzsABMTEwAAAAAAAAAAAAAAAJcfgKD/NdL//zHJ/v8yyf//Msn//zLJ
|
||||||
|
//8yyf//NM///yWVu/8ABAbOAAAASQAAAB4GHSXPMMHz/zLL//8yyf//Msn+/zLJ//8yyf//Msr//zHF
|
||||||
|
+f8jjrD/IYio/y++8P8yyv//NM///yqn0v8ABwr/KaPL/zTR//8yyf7/Msn//zLJ//8yyf//Msn+/zLJ
|
||||||
|
/v8zy///NND//yWVuv8EFBjwAAAAaAAAAR4AAAAEExMTAOzs7AD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AOzs7AATExMAAAAAAAAAAEYMP1H8Lcn//yvF
|
||||||
|
//8rxP//K8T//yvE//8rxP//K8T//yvE//8uzv//F2yL/wAAAKkAAAA4BBoi0ym68f8rxv//K8T//yvE
|
||||||
|
//8rxP//K8T//y3N//8dfqD/AAAAwAAAAK0RVmz/L83//yzI//8msOL/ByIr/yi16f8tx///LMX//yzF
|
||||||
|
//8sxf//LMX//yzF//8sx///K770/xBKXv8AAAD/BRoi9wEJC8UAAABWAAAAGhMTEwDs7OwA////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wDs7OwAExMTAAAA
|
||||||
|
AAoADRLTIKfb/yXF//8kv///JMD//yTA//8kv///JML//yTC//8kv/7/JMH//yXC//8IOEn7AAAAdgMU
|
||||||
|
GtIhs+v/JML//yTA//8kv///JMD//yTA//8lxf//HJTD/wQjLugEHCXgFXec/ybG//8lxP//H6ba/wIW
|
||||||
|
Hf8hrOL/JcT//yXA//8lwP//JMD//yXA//8lwP//JsX//x+j1/8EKDX/FXWZ/ybD//8WdZn/AAAAqgAA
|
||||||
|
ACkTExMA7OzsAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A7OzsABMTEwAAAACAD2qP/x7E//8cu///HLv//xy7//8cu///Hb7//xip5f8Zq+f/Hb7//xy6
|
||||||
|
//8dwf//GaHZ/wAJDdoCCQzWGKnk/x2+//8cu///HLv//xy7//8cu///HLr//x2+//8cuvz/G7j5/x2+
|
||||||
|
//8buv//Hsb//xN3oP8AAAD1Foe0/x/F//8du///Hbz//x28//8dvP//Hbz//x28//8dvP//Hr7//x/D
|
||||||
|
//8ewf//HLLv/wEQFtsAAAAoExMTAOzs7AD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AOzs7AASDgwZACEw6xa3/f8Tuf//FLf//xS3//8Ut///E7r//xW7
|
||||||
|
//8DNEj/BkRe/xW+//8UuP//FLf//xXB//8KZo3/AAAA/BGW0P8UwP//FLj//xO3//8Ut///E7f//xO3
|
||||||
|
//8Ut///FLj//xS5//8Uu///FMH//xKd2P8BFyDkAAAAVgMpOPMWsfT/Fr///xa4//8Vt///Fbf//xW3
|
||||||
|
//8Wt///Frf//xW5//8WvP//F8H//w59q/8AAwSzAAAABRMTEwDs7OwA////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wDs7OwAEw4LIgAmN/kLp+z/CbL9/wm1
|
||||||
|
//8Jtf//CbT//wqs8/8FU3b/AAAAigAAAKkIfK//Crf//wm0//8Jtf//CZra/wAGCf4DOE//CZjX/wmr
|
||||||
|
9P8Jsvz/CbT//wm0//8JtP//CbT//wmy/f8JrPT/CJfX/wZhif8AEBfXAAAAOwAAAAAAAABeAik59QqJ
|
||||||
|
wP8Msfr/DLr//wy7//8Muv//DLv//wy6//8MtP//C5fU/wVObf8AAgS2AAAAGwAAAAATExMA7OzsAP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A7OzsABMT
|
||||||
|
EwAAAABjABIazAAlNOYBMEbvADFH7wEqPewAFh/UAAAAegAAAAAAAAAYAAYJtQEoOekALEDsACU15gAW
|
||||||
|
H9QAAABbAAAATgAFB60AGSTTACU15gAtQe0AL0XuAC9F7gAtQu4AJjbpABom1gAGCLAAAABnAAAAEAAA
|
||||||
|
AAAAAAAAAAAAAAAAADIAAACiASEv5AJCXf0CV3z/AmGN/wJdh/8CSWf/ASg66gAFCLMAAABUAAAAAQAA
|
||||||
|
AAAAAAAAExMTAOzs7AD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AOzs7AATExMAAAAAAAAAAAMAAAAUAAAAHAAAABwAAAAYAAAABwAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAWAAAAGQAAABQAAAAHAAAAAAAAAAAAAAAAAAAABgAAABMAAAAZAAAAGgAAABoAAAAaAAAAFgAA
|
||||||
|
AAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAyAAAASgAAAFcAAABRAAAAOQAA
|
||||||
|
ABgAAAAAAAAAAAAAAAAAAAAAAAAAABMTEwDs7OwA////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wDs7OwAExMTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATExMA7OzsAP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A7OzsABMTEwAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExMTAOzs
|
||||||
|
7AD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AOzs
|
||||||
|
7AATExMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAABMTEwDs7OwA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wDs7OwAExMTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATExMA7OzsAP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A7OzsABMTEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExMTAOzs7AD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AOzs7AATExMAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMT
|
||||||
|
EwDs7OwA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wDs7OwAExMTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAATExMA7OzsAP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A7OzsABMTEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExMTAOzs7AD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AOzs7AATExMAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMTEwDs7OwA////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wDs7OwAExMTAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAATExMA7OzsAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A7OzsABMTEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAExMTAOzs7AD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AOzs7AATExMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMTEwDs7OwA////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wDs7OwAExMTAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATExMA7OzsAP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A7OzsAA8P
|
||||||
|
DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAADw8PAOzs7AD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AO3t7QAlJSUADw8PABMTEwATExMAExMTABMTEwATExMAExMTABMTEwATExMAExMTABMT
|
||||||
|
EwATExMAExMTABMTEwATExMAExMTABMTEwATExMAExMTABMTEwATExMAExMTABMTEwATExMAExMTABMT
|
||||||
|
EwATExMAExMTABMTEwATExMAExMTABMTEwATExMAExMTABMTEwATExMAExMTABMTEwATExMAExMTABMT
|
||||||
|
EwATExMAExMTABMTEwATExMADw8PACUlJQDt7e0A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD+/v4A7e3tAOzs7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs
|
||||||
|
7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs
|
||||||
|
7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs
|
||||||
|
7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs7ADs7OwA7OzsAOzs7ADt7e0A/v7+AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -1,190 +1,19 @@
|
|||||||
using Newtonsoft.Json;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
class Program
|
namespace XPSLauncher
|
||||||
{
|
{
|
||||||
private static readonly HttpClient client = new HttpClient();
|
internal static class Program
|
||||||
private static readonly string currentVersion = "1.0.300";
|
|
||||||
|
|
||||||
static async Task Main(string[] args)
|
|
||||||
{
|
{
|
||||||
Console.WriteLine("Loading...");
|
/// <summary>
|
||||||
|
/// The main entry point for the application.
|
||||||
var versions = LoadVersionConfig();
|
/// </summary>
|
||||||
|
[STAThread]
|
||||||
var versionCheckResult = await CheckVersionAsync();
|
static void Main()
|
||||||
if (versionCheckResult.HasError || versionCheckResult.IsNewVersionAvailable)
|
|
||||||
{
|
{
|
||||||
Console.Clear();
|
Application.EnableVisualStyles();
|
||||||
if (versionCheckResult.HasError)
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
{
|
Application.Run(new Form1());
|
||||||
Console.WriteLine("Error checking version. Check your internet connection or try again later");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Console.WriteLine("New version available! Download it here: https://xps.xytriza.com/download/windows");
|
|
||||||
}
|
|
||||||
Console.ReadLine();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Console.Clear();
|
|
||||||
Console.WriteLine("Welcome to Xytriza's GDPS!\n");
|
|
||||||
|
|
||||||
if (versions.Versions.Count == 0)
|
|
||||||
{
|
|
||||||
Console.WriteLine("No versions to load.");
|
|
||||||
Console.ReadLine();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < versions.Versions.Count; i++)
|
|
||||||
{
|
|
||||||
Console.WriteLine($"{i + 1}: Load {versions.Versions[i].name}");
|
|
||||||
}
|
|
||||||
Console.WriteLine();
|
|
||||||
|
|
||||||
if (int.TryParse(Console.ReadLine(), out int choice) && choice >= 1 && choice <= versions.Versions.Count)
|
|
||||||
{
|
|
||||||
var selectedVersion = versions.Versions[choice - 1];
|
|
||||||
string executionPath = GetExecutionPath();
|
|
||||||
string path = Path.Combine(executionPath, selectedVersion.path);
|
|
||||||
if (FileExists(path) && path.StartsWith(Path.Combine(executionPath, "gdps"), StringComparison.OrdinalIgnoreCase))
|
|
||||||
{
|
|
||||||
StartProcess(path);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Console.WriteLine("File does not exist.");
|
|
||||||
Console.ReadLine();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Console.WriteLine("Invalid choice.");
|
|
||||||
Console.ReadLine();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static async Task<VersionCheckResult> CheckVersionAsync()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
HttpResponseMessage response = await client.GetAsync("https://xps.xytriza.com/getLatestWindowsVersion.php");
|
|
||||||
if (response.IsSuccessStatusCode)
|
|
||||||
{
|
|
||||||
string latestVersion = await response.Content.ReadAsStringAsync();
|
|
||||||
return new VersionCheckResult
|
|
||||||
{
|
|
||||||
IsNewVersionAvailable = IsNewerVersion(currentVersion, latestVersion.Trim()),
|
|
||||||
HasError = false
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return new VersionCheckResult { HasError = true };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return new VersionCheckResult { HasError = true };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool IsNewerVersion(string currentVersion, string latestVersion)
|
|
||||||
{
|
|
||||||
Version currentVer, latestVer;
|
|
||||||
if (Version.TryParse(currentVersion, out currentVer) && Version.TryParse(latestVersion, out latestVer))
|
|
||||||
{
|
|
||||||
return latestVer > currentVer;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool FileExists(string path) => File.Exists(path);
|
|
||||||
|
|
||||||
static string GetExecutionPath() => AppDomain.CurrentDomain.BaseDirectory;
|
|
||||||
|
|
||||||
static void StartProcess(string path)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
ProcessStartInfo startInfo = new ProcessStartInfo
|
|
||||||
{
|
|
||||||
FileName = path,
|
|
||||||
WorkingDirectory = Path.GetDirectoryName(path),
|
|
||||||
UseShellExecute = false
|
|
||||||
};
|
|
||||||
|
|
||||||
Console.Clear();
|
|
||||||
Process.Start(startInfo);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Console.WriteLine($"An error occurred: {ex.Message}");
|
|
||||||
Console.ReadLine();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static VersionConfig LoadVersionConfig()
|
|
||||||
{
|
|
||||||
string filePath = Path.Combine(GetExecutionPath(), "versions.json");
|
|
||||||
if (!File.Exists(filePath) || !TryReadConfig(filePath, out VersionConfig? config))
|
|
||||||
{
|
|
||||||
config = ResetConfig(filePath);
|
|
||||||
}
|
|
||||||
|
|
||||||
config.Versions = config.Versions.Where(v => FileExists(Path.Combine(GetExecutionPath(), v.path))).ToList();
|
|
||||||
|
|
||||||
return config!;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool TryReadConfig(string filePath, out VersionConfig? config)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
string json = File.ReadAllText(filePath);
|
|
||||||
config = JsonConvert.DeserializeObject<VersionConfig>(json);
|
|
||||||
return config != null;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
config = null;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static VersionConfig ResetConfig(string filePath)
|
|
||||||
{
|
|
||||||
var config = new VersionConfig
|
|
||||||
{
|
|
||||||
Versions = new List<VersionInfo>
|
|
||||||
{
|
|
||||||
new VersionInfo { name = "GD 2.2", path = @"gdps/2.2/XPS.exe" },
|
|
||||||
new VersionInfo { name = "GD 2.1", path = @"gdps/2.1/XPS.exe" },
|
|
||||||
new VersionInfo { name = "GD 2.0", path = @"gdps/2.0/XPS.exe" },
|
|
||||||
new VersionInfo { name = "GD 1.9", path = @"gdps/1.9/XPS.exe" }
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
File.WriteAllText(filePath, JsonConvert.SerializeObject(config, Formatting.Indented));
|
|
||||||
return config;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class VersionConfig
|
|
||||||
{
|
|
||||||
public List<VersionInfo> Versions { get; set; } = new List<VersionInfo>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public class VersionInfo
|
|
||||||
{
|
|
||||||
public string? name { get; set; }
|
|
||||||
public string? path { get; set; }
|
|
||||||
}
|
|
||||||
public class VersionCheckResult
|
|
||||||
{
|
|
||||||
public bool IsNewVersionAvailable { get; set; }
|
|
||||||
public bool HasError { get; set; }
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
[assembly: AssemblyTitle("XPS")]
|
||||||
|
[assembly: AssemblyDescription("Xytriza's Geometry Dash Private Server")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("XPS")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © Xytriza 2024")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
|
// to COM components. If you need to access a type in this assembly from
|
||||||
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
|
[assembly: Guid("1dfb73e7-c99e-43e8-a0ab-f271d8f36c80")]
|
||||||
|
|
||||||
|
// Version information for an assembly consists of the following four values:
|
||||||
|
//
|
||||||
|
// Major Version
|
||||||
|
// Minor Version
|
||||||
|
// Build Number
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
// by using the '*' as shown below:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("2.3.8")]
|
||||||
|
[assembly: AssemblyFileVersion("2.3.8")]
|
||||||
@@ -0,0 +1,183 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Runtime Version:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace XPS.Properties {
|
||||||
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
/// </summary>
|
||||||
|
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||||
|
// class via a tool like ResGen or Visual Studio.
|
||||||
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
|
// with the /str option, or rebuild your VS project.
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class Resources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal Resources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the cached ResourceManager instance used by this class.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
|
get {
|
||||||
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("XPS.Properties.Resources", typeof(Resources).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Overrides the current thread's CurrentUICulture property for all
|
||||||
|
/// resource lookups using this strongly typed resource class.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
|
get {
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap Checked {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Checked", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap Dashboard {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Dashboard", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap Discord {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Discord", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap Exit {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Exit", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap logoIco {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("logoIco", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap logoPng {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("logoPng", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap Settings {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Settings", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap Twitch {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Twitch", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap Twitter {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Twitter", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap Unchecked {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Unchecked", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap Website {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Website", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap YouTube {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("YouTube", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,157 @@
|
|||||||
|
<?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.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="Exit" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Exit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="YouTube" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\YouTube.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="Twitch" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Twitch.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="logoIco" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\XPS.ico;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="logoPng" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\XPS.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="Twitter" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Twitter.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="Dashboard" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Dashboard.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="Unchecked" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Unchecked.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="Discord" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Discord.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="Website" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Website.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="Settings" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Settings.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="Checked" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Checked.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Runtime Version:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace XPS.Properties {
|
||||||
|
|
||||||
|
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.8.0.0")]
|
||||||
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||||
|
|
||||||
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
|
|
||||||
|
public static Settings Default {
|
||||||
|
get {
|
||||||
|
return defaultInstance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||||
|
<Profiles>
|
||||||
|
<Profile Name="(Default)" />
|
||||||
|
</Profiles>
|
||||||
|
<Settings />
|
||||||
|
</SettingsFile>
|
||||||
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 19 KiB |
@@ -1,23 +1,116 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<?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>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<TargetFramework>net8.0-windows10.0.17763.0</TargetFramework>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ProjectGuid>{1DFB73E7-C99E-43E8-A0AB-F271D8F36C80}</ProjectGuid>
|
||||||
<Nullable>enable</Nullable>
|
<OutputType>WinExe</OutputType>
|
||||||
<ApplicationIcon>XPS.ico</ApplicationIcon>
|
<RootNamespace>XPS</RootNamespace>
|
||||||
<DebugType>none</DebugType>
|
<AssemblyName>XPS</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
|
<Deterministic>true</Deterministic>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<PlatformTarget>x64</PlatformTarget>
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>none</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugType>none</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<ApplicationIcon>XPS.ico</ApplicationIcon>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
||||||
|
<Exec Command="del $(TargetDir)Newtonsoft.Json.xml" />
|
||||||
|
<Exec Command="del $(TargetDir)$(TargetName).exe.config" />
|
||||||
|
</Target>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="XPS.ico" />
|
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<Content Include="versions.json">
|
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
</Reference>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.IO.Compression.FileSystem" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Deployment" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Content Include="Pusab.ttf">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<Compile Include="Form1.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Form1.Designer.cs">
|
||||||
|
<DependentUpon>Form1.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<EmbeddedResource Include="Form1.resx">
|
||||||
|
<DependentUpon>Form1.cs</DependentUpon>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
<None Include="Properties\Settings.settings">
|
||||||
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Properties\Settings.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
|
</Compile>
|
||||||
|
<None Include="XPSLauncher_TemporaryKey.pfx" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="App.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Resources\XPS.png" />
|
||||||
|
<None Include="discord.png" />
|
||||||
|
<None Include="Resources\Discord.png" />
|
||||||
|
<None Include="Resources\Twitter.png" />
|
||||||
|
<None Include="Resources\YouTube.png" />
|
||||||
|
<None Include="Resources\Twitch.png" />
|
||||||
|
<None Include="Resources\Tools.png" />
|
||||||
|
<None Include="Resources\Website.png" />
|
||||||
|
<None Include="Resources\Settings.png" />
|
||||||
|
<None Include="Resources\Exit.png" />
|
||||||
|
<None Include="Resources\Unchecked.png" />
|
||||||
|
<None Include="Resources\Checked.png" />
|
||||||
|
<Content Include="XPS.ico" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
</Project>
|
</Project>
|
||||||
@@ -1 +0,0 @@
|
|||||||
dotnet publish -r win-x64 -c Release --self-contained true
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net472" />
|
||||||
|
</packages>
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
"Versions": [
|
|
||||||
{
|
|
||||||
"name": "GD 2.2",
|
|
||||||
"path": "gdps/2.2/XPS.exe"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "GD 2.1",
|
|
||||||
"path": "gdps/2.1/XPS.exe"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "GD 2.0",
|
|
||||||
"path": "gdps/2.0/XPS.exe"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "GD 1.9",
|
|
||||||
"path": "gdps/1.9/XPS.exe"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||