diff --git a/ADB.cs b/ADB.cs
index 3c080b3..f00c6c3 100644
--- a/ADB.cs
+++ b/ADB.cs
@@ -305,7 +305,7 @@ namespace AndroidSideloader
_ = ADB.RunAdbCommandToString($"pull \"/sdcard/Android/data/{MainForm.CurrPCKG}\" \"{Environment.CurrentDirectory}\"");
Program.form.changeTitle("Uninstalling game...");
_ = Sideloader.UninstallGame(MainForm.CurrPCKG);
- Program.form.changeTitle("Reinstalling Game");
+ Program.form.changeTitle("Reinstalling game...");
ret += ADB.RunAdbCommandToString($"install -g \"{path}\"");
_ = ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\{MainForm.CurrPCKG}\" /sdcard/Android/data/");
string directoryToDelete = Path.Combine(Environment.CurrentDirectory, MainForm.CurrPCKG);
@@ -317,7 +317,7 @@ namespace AndroidSideloader
}
}
- Program.form.changeTitle(" \n\n");
+ Program.form.changeTitle("");
return ret;
}
}
diff --git a/AndroidSideloader.csproj b/AndroidSideloader.csproj
index 406308c..f18d336 100644
--- a/AndroidSideloader.csproj
+++ b/AndroidSideloader.csproj
@@ -155,7 +155,7 @@
.\SergeUtils.dll
- C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.dll
+ ..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.dll
@@ -172,7 +172,7 @@
- C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Drawing.dll
+ ..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Drawing.dll
@@ -211,6 +211,9 @@
NewApps.cs
+
+ Component
+
Form
diff --git a/App.config b/App.config
index 519115b..32efb8b 100644
--- a/App.config
+++ b/App.config
@@ -33,7 +33,7 @@
True
- Microsoft Sans Serif, 9pt
+ Microsoft Sans Serif, 10pt
@@ -135,13 +135,13 @@
False
- DarkGray
+ White
25, 25, 25
- 25, 25, 25
+ 42, 45, 58
25, 25, 25
diff --git a/FlexibleMessageBox.cs b/FlexibleMessageBox.cs
index 587e65a..299d746 100644
--- a/FlexibleMessageBox.cs
+++ b/FlexibleMessageBox.cs
@@ -1,246 +1,72 @@
using System;
+using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
+using System.Drawing.Drawing2D;
using System.Globalization;
using System.Linq;
+using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace JR.Utils.GUI.Forms
{
- /* FlexibleMessageBox – A flexible replacement for the .NET MessageBox
- *
- * Author: Jörg Reichert (public@jreichert.de)
- * Contributors: Thanks to: David Hall, Roink
- * Version: 1.3
- * Published at: http://www.codeproject.com/Articles/601900/FlexibleMessageBox
- *
- ************************************************************************************************************
- * Features:
- * - It can be simply used instead of MessageBox since all important static "Show"-Functions are supported
- * - It is small, only one source file, which could be added easily to each solution
- * - It can be resized and the content is correctly word-wrapped
- * - It tries to auto-size the width to show the longest text row
- * - It never exceeds the current desktop working area
- * - It displays a vertical scrollbar when needed
- * - It does support hyperlinks in text
- *
- * Because the interface is identical to MessageBox, you can add this single source file to your project
- * and use the FlexibleMessageBox almost everywhere you use a standard MessageBox.
- * The goal was NOT to produce as many features as possible but to provide a simple replacement to fit my
- * own needs. Feel free to add additional features on your own, but please left my credits in this class.
- *
- ************************************************************************************************************
- * Usage examples:
- *
- * FlexibleMessageBox.Show("Just a text");
- *
- * FlexibleMessageBox.Show("A text",
- * "A caption");
- *
- * FlexibleMessageBox.Show("Some text with a link: www.google.com",
- * "Some caption",
- * MessageBoxButton
- *
- *
- *
- *
- *
- * s.AbortRetryIgnore,
- * MessageBoxIcon.Information,
- * MessageBoxDefaultButton.Button2);
- *
- * var dialogResult = FlexibleMessageBox.Show("Do you know the answer to life the universe and everything?",
- * "One short question",
- * MessageBoxButtons.YesNo);
- *
- ************************************************************************************************************
- * THE SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS", WITHOUT WARRANTY
- * OF ANY KIND, EXPRESS OR IMPLIED. IN NO EVENT SHALL THE AUTHOR BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF THIS
- * SOFTWARE.
- *
- ************************************************************************************************************
- * History:
- * Version 1.3 - 19.Dezember 2014
- * - Added refactoring function GetButtonText()
- * - Used CurrentUICulture instead of InstalledUICulture
- * - Added more button localizations. Supported languages are now: ENGLISH, GERMAN, SPANISH, ITALIAN
- * - Added standard MessageBox handling for "copy to clipboard" with + and +
- * - Tab handling is now corrected (only tabbing over the visible buttons)
- * - Added standard MessageBox handling for ALT-Keyboard shortcuts
- * - SetDialogSizes: Refactored completely: Corrected sizing and added caption driven sizing
- *
- * Version 1.2 - 10.August 2013
- * - Do not ShowInTaskbar anymore (original MessageBox is also hidden in taskbar)
- * - Added handling for Escape-Button
- * - Adapted top right close button (red X) to behave like MessageBox (but hidden instead of deactivated)
- *
- * Version 1.1 - 14.June 2013
- * - Some Refactoring
- * - Added internal form class
- * - Added missing code comments, etc.
- *
- * Version 1.0 - 15.April 2013
- * - Initial Version
- */
public class FlexibleMessageBox
{
#region Public statics
- ///
- /// Defines the maximum width for all FlexibleMessageBox instances in percent of the working area.
- ///
- /// Allowed values are 0.2 - 1.0 where:
- /// 0.2 means: The FlexibleMessageBox can be at most half as wide as the working area.
- /// 1.0 means: The FlexibleMessageBox can be as wide as the working area.
- ///
- /// Default is: 70% of the working area width.
- ///
public static double MAX_WIDTH_FACTOR = 0.7;
-
- ///
- /// Defines the maximum height for all FlexibleMessageBox instances in percent of the working area.
- ///
- /// Allowed values are 0.2 - 1.0 where:
- /// 0.2 means: The FlexibleMessageBox can be at most half as high as the working area.
- /// 1.0 means: The FlexibleMessageBox can be as high as the working area.
- ///
- /// Default is: 90% of the working area height.
- ///
public static double MAX_HEIGHT_FACTOR = 0.9;
-
- ///
- /// Defines the font for all FlexibleMessageBox instances.
- ///
- /// Default is: SystemFonts.MessageBoxFont
- ///
public static Font FONT = SystemFonts.MessageBoxFont;
#endregion
#region Public show functions
- ///
- /// Shows the specified message box.
- ///
- /// The text.
- /// The dialog result.
public static DialogResult Show(string text)
{
return FlexibleMessageBoxForm.Show(null, text, string.Empty, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
}
- ///
- /// Shows the specified message box.
- ///
- /// The owner.
- /// The text.
- /// The dialog result.
public static DialogResult Show(IWin32Window owner, string text)
{
return FlexibleMessageBoxForm.Show(owner, text, string.Empty, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
}
- ///
- /// Shows the specified message box.
- ///
- /// The text.
- /// The caption.
- /// The dialog result.
public static DialogResult Show(string text, string caption)
{
return FlexibleMessageBoxForm.Show(null, text, caption, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
}
- ///
- /// Shows the specified message box.
- ///
- /// The owner.
- /// The text.
- /// The caption.
- /// The dialog result.
public static DialogResult Show(IWin32Window owner, string text, string caption)
{
return FlexibleMessageBoxForm.Show(owner, text, caption, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
}
- ///
- /// Shows the specified message box.
- ///
- /// The text.
- /// The caption.
- /// The buttons.
- /// The dialog result.
public static DialogResult Show(string text, string caption, MessageBoxButtons buttons)
{
return FlexibleMessageBoxForm.Show(null, text, caption, buttons, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
}
- ///
- /// Shows the specified message box.
- ///
- /// The owner.
- /// The text.
- /// The caption.
- /// The buttons.
- /// The dialog result.
public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons)
{
return FlexibleMessageBoxForm.Show(owner, text, caption, buttons, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
}
- ///
- /// Shows the specified message box.
- ///
- /// The text.
- /// The caption.
- /// The buttons.
- /// The icon.
- ///
public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)
{
return FlexibleMessageBoxForm.Show(null, text, caption, buttons, icon, MessageBoxDefaultButton.Button1);
}
- ///
- /// Shows the specified message box.
- ///
- /// The owner.
- /// The text.
- /// The caption.
- /// The buttons.
- /// The icon.
- /// The dialog result.
public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)
{
return FlexibleMessageBoxForm.Show(owner, text, caption, buttons, icon, MessageBoxDefaultButton.Button1);
}
- ///
- /// Shows the specified message box.
- ///
- /// The text.
- /// The caption.
- /// The buttons.
- /// The icon.
- /// The default button.
- /// The dialog result.
public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton)
{
return FlexibleMessageBoxForm.Show(null, text, caption, buttons, icon, defaultButton);
}
- ///
- /// Shows the specified message box.
- ///
- /// The owner.
- /// The text.
- /// The caption.
- /// The buttons.
- /// The icon.
- /// The default button.
- /// The dialog result.
public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton)
{
return FlexibleMessageBoxForm.Show(owner, text, caption, buttons, icon, defaultButton);
@@ -250,23 +76,37 @@ namespace JR.Utils.GUI.Forms
#region Internal form class
- ///
- /// The form to show the customized message box.
- /// It is defined as an internal class to keep the public interface of the FlexibleMessageBox clean.
- ///
private class FlexibleMessageBoxForm : Form
{
+ #region Constants and P/Invoke
+
+ private const int CS_DROPSHADOW = 0x00020000;
+ private const int WM_NCLBUTTONDOWN = 0xA1;
+ private const int HT_CAPTION = 0x2;
+ private const int BORDER_RADIUS = 12;
+
+ [DllImport("user32.dll")]
+ private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
+
+ [DllImport("user32.dll")]
+ private static extern bool ReleaseCapture();
+
+ protected override CreateParams CreateParams
+ {
+ get
+ {
+ CreateParams cp = base.CreateParams;
+ cp.ClassStyle |= CS_DROPSHADOW;
+ return cp;
+ }
+ }
+
+ #endregion
+
#region Form-Designer generated code
- ///
- /// Erforderliche Designervariable.
- ///
private System.ComponentModel.IContainer components = null;
- ///
- /// Verwendete Ressourcen bereinigen.
- ///
- /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
@@ -276,10 +116,21 @@ namespace JR.Utils.GUI.Forms
base.Dispose(disposing);
}
- ///
- /// Erforderliche Methode für die Designerunterstützung.
- /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
- ///
+ private void CloseButton_Click(object sender, EventArgs e)
+ {
+ this.DialogResult = DialogResult.Cancel;
+ this.Close();
+ }
+
+ private void TitlePanel_MouseDown(object sender, MouseEventArgs e)
+ {
+ if (e.Button == MouseButtons.Left)
+ {
+ ReleaseCapture();
+ SendMessage(this.Handle, WM_NCLBUTTONDOWN, (IntPtr)HT_CAPTION, IntPtr.Zero);
+ }
+ }
+
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
@@ -290,23 +141,75 @@ namespace JR.Utils.GUI.Forms
pictureBoxForIcon = new System.Windows.Forms.PictureBox();
button2 = new System.Windows.Forms.Button();
button3 = new System.Windows.Forms.Button();
+ titlePanel = new System.Windows.Forms.Panel();
+ titleLabel = new System.Windows.Forms.Label();
+ closeButton = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)FlexibleMessageBoxFormBindingSource).BeginInit();
panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureBoxForIcon).BeginInit();
+ titlePanel.SuspendLayout();
SuspendLayout();
//
+ // titlePanel
+ //
+ titlePanel.BackColor = System.Drawing.Color.FromArgb(20, 24, 29);
+ titlePanel.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
+ titlePanel.Location = new System.Drawing.Point(6, 6);
+ titlePanel.Name = "titlePanel";
+ titlePanel.Size = new System.Drawing.Size(248, 28);
+ titlePanel.TabIndex = 10;
+ titlePanel.Controls.Add(closeButton);
+ titlePanel.Controls.Add(titleLabel);
+ titlePanel.MouseDown += TitlePanel_MouseDown;
+ //
+ // titleLabel
+ //
+ titleLabel.AutoSize = false;
+ titleLabel.Dock = System.Windows.Forms.DockStyle.Fill;
+ titleLabel.ForeColor = System.Drawing.Color.White;
+ titleLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ titleLabel.Location = new System.Drawing.Point(0, 0);
+ titleLabel.Name = "titleLabel";
+ titleLabel.Padding = new System.Windows.Forms.Padding(18, 0, 0, 0);
+ titleLabel.Size = new System.Drawing.Size(218, 28);
+ titleLabel.TabIndex = 0;
+ titleLabel.Text = "";
+ titleLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ titleLabel.MouseDown += TitlePanel_MouseDown;
+ //
+ // closeButton
+ //
+ closeButton.Dock = System.Windows.Forms.DockStyle.Right;
+ closeButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ closeButton.FlatAppearance.BorderSize = 0;
+ closeButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(200, 60, 60);
+ closeButton.BackColor = System.Drawing.Color.FromArgb(20, 24, 29);
+ closeButton.ForeColor = System.Drawing.Color.White;
+ closeButton.Font = new System.Drawing.Font("Segoe UI", 9F);
+ closeButton.Location = new System.Drawing.Point(218, 0);
+ closeButton.Name = "closeButton";
+ closeButton.Size = new System.Drawing.Size(30, 28);
+ closeButton.TabIndex = 1;
+ closeButton.TabStop = false;
+ closeButton.Text = "✕";
+ closeButton.Click += CloseButton_Click;
+ //
// button1
//
button1.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right;
- button1.AutoSize = true;
button1.DialogResult = System.Windows.Forms.DialogResult.OK;
- button1.Location = new System.Drawing.Point(11, 67);
- button1.MinimumSize = new System.Drawing.Size(0, 24);
+ button1.Location = new System.Drawing.Point(16, 80);
button1.Name = "button1";
- button1.Size = new System.Drawing.Size(75, 24);
+ button1.Size = new System.Drawing.Size(75, 28);
button1.TabIndex = 2;
button1.Text = "OK";
- button1.UseVisualStyleBackColor = true;
+ button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ button1.FlatAppearance.BorderSize = 0;
+ button1.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(60, 65, 80);
+ button1.BackColor = System.Drawing.Color.FromArgb(42, 45, 58);
+ button1.ForeColor = System.Drawing.Color.White;
+ button1.Font = new System.Drawing.Font("Segoe UI", 9F);
+ button1.Cursor = System.Windows.Forms.Cursors.Hand;
button1.Visible = false;
//
// richTextBoxMessage
@@ -314,16 +217,17 @@ namespace JR.Utils.GUI.Forms
richTextBoxMessage.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom
| System.Windows.Forms.AnchorStyles.Left
| System.Windows.Forms.AnchorStyles.Right;
- richTextBoxMessage.BackColor = System.Drawing.Color.White;
+ richTextBoxMessage.BackColor = System.Drawing.Color.FromArgb(20, 24, 29);
+ richTextBoxMessage.ForeColor = System.Drawing.Color.White;
richTextBoxMessage.BorderStyle = System.Windows.Forms.BorderStyle.None;
richTextBoxMessage.DataBindings.Add(new System.Windows.Forms.Binding("Text", FlexibleMessageBoxFormBindingSource, "MessageText", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
richTextBoxMessage.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 0);
- richTextBoxMessage.Location = new System.Drawing.Point(50, 26);
+ richTextBoxMessage.Location = new System.Drawing.Point(52, 6);
richTextBoxMessage.Margin = new System.Windows.Forms.Padding(0);
richTextBoxMessage.Name = "richTextBoxMessage";
richTextBoxMessage.ReadOnly = true;
richTextBoxMessage.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
- richTextBoxMessage.Size = new System.Drawing.Size(200, 20);
+ richTextBoxMessage.Size = new System.Drawing.Size(190, 20);
richTextBoxMessage.TabIndex = 0;
richTextBoxMessage.TabStop = false;
richTextBoxMessage.Text = "";
@@ -334,18 +238,18 @@ namespace JR.Utils.GUI.Forms
panel1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom
| System.Windows.Forms.AnchorStyles.Left
| System.Windows.Forms.AnchorStyles.Right;
- panel1.BackColor = System.Drawing.Color.White;
+ panel1.BackColor = System.Drawing.Color.FromArgb(20, 24, 29);
panel1.Controls.Add(pictureBoxForIcon);
panel1.Controls.Add(richTextBoxMessage);
- panel1.Location = new System.Drawing.Point(-3, -4);
+ panel1.Location = new System.Drawing.Point(6, 34);
panel1.Name = "panel1";
- panel1.Size = new System.Drawing.Size(268, 59);
+ panel1.Size = new System.Drawing.Size(248, 59);
panel1.TabIndex = 1;
//
// pictureBoxForIcon
//
pictureBoxForIcon.BackColor = System.Drawing.Color.Transparent;
- pictureBoxForIcon.Location = new System.Drawing.Point(15, 19);
+ pictureBoxForIcon.Location = new System.Drawing.Point(15, 15);
pictureBoxForIcon.Name = "pictureBoxForIcon";
pictureBoxForIcon.Size = new System.Drawing.Size(32, 32);
pictureBoxForIcon.TabIndex = 8;
@@ -355,80 +259,273 @@ namespace JR.Utils.GUI.Forms
//
button2.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right;
button2.DialogResult = System.Windows.Forms.DialogResult.OK;
- button2.Location = new System.Drawing.Point(92, 67);
- button2.MinimumSize = new System.Drawing.Size(0, 24);
+ button2.Location = new System.Drawing.Point(97, 80);
button2.Name = "button2";
- button2.Size = new System.Drawing.Size(75, 24);
+ button2.Size = new System.Drawing.Size(75, 28);
button2.TabIndex = 3;
button2.Text = "OK";
- button2.UseVisualStyleBackColor = true;
+ button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ button2.FlatAppearance.BorderSize = 0;
+ button2.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(60, 65, 80);
+ button2.BackColor = System.Drawing.Color.FromArgb(42, 45, 58);
+ button2.ForeColor = System.Drawing.Color.White;
+ button2.Font = new System.Drawing.Font("Segoe UI", 9F);
+ button2.Cursor = System.Windows.Forms.Cursors.Hand;
button2.Visible = false;
//
// button3
//
button3.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right;
- button3.AutoSize = true;
button3.DialogResult = System.Windows.Forms.DialogResult.OK;
- button3.Location = new System.Drawing.Point(173, 67);
- button3.MinimumSize = new System.Drawing.Size(0, 24);
+ button3.Location = new System.Drawing.Point(178, 80);
button3.Name = "button3";
- button3.Size = new System.Drawing.Size(75, 24);
+ button3.Size = new System.Drawing.Size(75, 28);
button3.TabIndex = 0;
button3.Text = "OK";
- button3.UseVisualStyleBackColor = true;
+ button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ button3.FlatAppearance.BorderSize = 0;
+ button3.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(60, 65, 80);
+ button3.BackColor = System.Drawing.Color.FromArgb(42, 45, 58);
+ button3.ForeColor = System.Drawing.Color.White;
+ button3.Font = new System.Drawing.Font("Segoe UI", 9F);
+ button3.Cursor = System.Windows.Forms.Cursors.Hand;
button3.Visible = false;
//
// FlexibleMessageBoxForm
//
AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- ClientSize = new System.Drawing.Size(260, 102);
+ BackColor = System.Drawing.Color.FromArgb(25, 25, 30);
+ ForeColor = System.Drawing.Color.White;
+ FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+ ClientSize = new System.Drawing.Size(260, 115);
+ Padding = new System.Windows.Forms.Padding(5);
+ Controls.Add(titlePanel);
Controls.Add(button3);
Controls.Add(button2);
Controls.Add(panel1);
Controls.Add(button1);
- DataBindings.Add(new System.Windows.Forms.Binding("Text", FlexibleMessageBoxFormBindingSource, "CaptionText", true));
MaximizeBox = false;
MinimizeBox = false;
- MinimumSize = new System.Drawing.Size(276, 140);
+ MinimumSize = new System.Drawing.Size(276, 120);
Name = "FlexibleMessageBoxForm";
ShowIcon = false;
- SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
+ SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
Text = "";
Shown += new System.EventHandler(FlexibleMessageBoxForm_Shown);
((System.ComponentModel.ISupportInitialize)FlexibleMessageBoxFormBindingSource).EndInit();
panel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)pictureBoxForIcon).EndInit();
+ titlePanel.ResumeLayout(false);
ResumeLayout(false);
- PerformLayout();
+
+ // Apply rounded corners and custom painting
+ this.Paint += FlexibleMessageBoxForm_Paint;
+ button1.Paint += RoundedButton_Paint;
+ button2.Paint += RoundedButton_Paint;
+ button3.Paint += RoundedButton_Paint;
+
+ // Setup hover effects for buttons
+ SetupButtonHover(button1);
+ SetupButtonHover(button2);
+ SetupButtonHover(button3);
Activate();
}
- private System.Windows.Forms.Button button1;
- private System.Windows.Forms.BindingSource FlexibleMessageBoxFormBindingSource;
- private System.Windows.Forms.RichTextBox richTextBoxMessage;
- private System.Windows.Forms.Panel panel1;
- private System.Windows.Forms.PictureBox pictureBoxForIcon;
- private System.Windows.Forms.Button button2;
- private System.Windows.Forms.Button button3;
+ private Button button1;
+ private BindingSource FlexibleMessageBoxFormBindingSource;
+ private RichTextBox richTextBoxMessage;
+ private Panel panel1;
+ private PictureBox pictureBoxForIcon;
+ private Button button2;
+ private Button button3;
+ private Panel titlePanel;
+ private Label titleLabel;
+ private Button closeButton;
+
+ #endregion
+
+ #region Custom Painting
+
+ private Dictionary _buttonHoverState = new Dictionary();
+ private const int SHADOW_SIZE = 2;
+ private const int CONTENT_RADIUS = 10;
+
+ private void FlexibleMessageBoxForm_Paint(object sender, PaintEventArgs e)
+ {
+ e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
+ e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
+
+ int w = this.Width;
+ int h = this.Height;
+
+ // Draw shadow gradient layers around the content area
+ for (int i = SHADOW_SIZE; i >= 1; i--)
+ {
+ int alpha = (SHADOW_SIZE - i + 1) * 12; // 12, 24, 36, 48, 60
+ Rectangle shadowRect = new Rectangle(
+ SHADOW_SIZE - i,
+ SHADOW_SIZE - i,
+ w - (SHADOW_SIZE - i) * 2 - 1,
+ h - (SHADOW_SIZE - i) * 2 - 1);
+
+ using (Pen shadowPen = new Pen(Color.FromArgb(alpha, 0, 0, 0), 1))
+ using (GraphicsPath shadowPath = GetRoundedRectPath(shadowRect, CONTENT_RADIUS + i))
+ {
+ e.Graphics.DrawPath(shadowPen, shadowPath);
+ }
+ }
+
+ // Draw content background
+ Rectangle contentRect = new Rectangle(SHADOW_SIZE, SHADOW_SIZE, w - SHADOW_SIZE * 2, h - SHADOW_SIZE * 2);
+ using (GraphicsPath contentPath = GetRoundedRectPath(contentRect, CONTENT_RADIUS))
+ {
+ using (SolidBrush bgBrush = new SolidBrush(Color.FromArgb(20, 24, 29)))
+ {
+ e.Graphics.FillPath(bgBrush, contentPath);
+ }
+
+ // Draw thin border
+ using (Pen borderPen = new Pen(Color.FromArgb(70, 80, 100), 1f))
+ {
+ e.Graphics.DrawPath(borderPen, contentPath);
+ }
+ }
+
+ // Apply rounded region to form (with shadow area)
+ using (GraphicsPath regionPath = GetRoundedRectPath(new Rectangle(0, 0, w, h), CONTENT_RADIUS + SHADOW_SIZE))
+ {
+ this.Region = new Region(regionPath);
+ }
+ }
+
+ private void SetupButtonHover(Button btn)
+ {
+ _buttonHoverState[btn] = false;
+
+ btn.MouseEnter += (s, e) =>
+ {
+ _buttonHoverState[btn] = true;
+ btn.Invalidate();
+ };
+
+ btn.MouseLeave += (s, e) =>
+ {
+ _buttonHoverState[btn] = false;
+ btn.Invalidate();
+ };
+ }
+
+ private void RoundedButton_Paint(object sender, PaintEventArgs e)
+ {
+ Button btn = sender as Button;
+ if (btn == null) return;
+
+ e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
+ e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
+
+ bool isHovered = _buttonHoverState.ContainsKey(btn) && _buttonHoverState[btn];
+
+ int radius = 4;
+
+ // Use a rect that's 1 pixel smaller to avoid edge clipping
+ Rectangle drawRect = new Rectangle(1, 1, btn.Width - 2, btn.Height - 2);
+
+ // Fill entire button area with parent background first to clear previous state
+ using (SolidBrush clearBrush = new SolidBrush(Color.FromArgb(20, 24, 29)))
+ {
+ e.Graphics.FillRectangle(clearBrush, 0, 0, btn.Width, btn.Height);
+ }
+
+ using (GraphicsPath path = GetRoundedRectPath(drawRect, radius))
+ {
+ // Determine colors based on hover state
+ Color bgColor = isHovered
+ ? Color.FromArgb(93, 203, 173) // Accent color on hover
+ : btn.BackColor;
+
+ Color textColor = isHovered
+ ? Color.FromArgb(20, 20, 20) // Dark text on accent
+ : btn.ForeColor;
+
+ // Draw background
+ using (SolidBrush brush = new SolidBrush(bgColor))
+ {
+ e.Graphics.FillPath(brush, path);
+ }
+
+ // Draw subtle border on normal state
+ if (!isHovered)
+ {
+ using (Pen borderPen = new Pen(Color.FromArgb(70, 75, 90), 1))
+ {
+ e.Graphics.DrawPath(borderPen, path);
+ }
+ }
+
+ // Draw text centered in original button bounds
+ TextRenderer.DrawText(e.Graphics, btn.Text, btn.Font,
+ new Rectangle(0, 0, btn.Width, btn.Height), textColor,
+ TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
+ }
+
+ // Set region to full button size (not the draw rect)
+ using (GraphicsPath regionPath = GetRoundedRectPath(new Rectangle(0, 0, btn.Width, btn.Height), radius))
+ {
+ btn.Region = new Region(regionPath);
+ }
+ }
+
+ private GraphicsPath GetRoundedRectPath(Rectangle rect, int radius)
+ {
+ GraphicsPath path = new GraphicsPath();
+
+ if (radius <= 0)
+ {
+ path.AddRectangle(rect);
+ return path;
+ }
+
+ int diameter = radius * 2;
+
+ // Ensure diameter doesn't exceed rect dimensions
+ diameter = Math.Min(diameter, Math.Min(rect.Width, rect.Height));
+ radius = diameter / 2;
+
+ Rectangle arcRect = new Rectangle(rect.Location, new Size(diameter, diameter));
+
+ // Top left arc
+ path.AddArc(arcRect, 180, 90);
+
+ // Top right arc
+ arcRect.X = rect.Right - diameter;
+ path.AddArc(arcRect, 270, 90);
+
+ // Bottom right arc
+ arcRect.Y = rect.Bottom - diameter;
+ path.AddArc(arcRect, 0, 90);
+
+ // Bottom left arc
+ arcRect.X = rect.Left;
+ path.AddArc(arcRect, 90, 90);
+
+ path.CloseFigure();
+ return path;
+ }
#endregion
#region Private constants
- //These separators are used for the "copy to clipboard" standard operation, triggered by Ctrl + C (behavior and clipboard format is like in a standard MessageBox)
private static readonly string STANDARD_MESSAGEBOX_SEPARATOR_LINES = "---------------------------\n";
private static readonly string STANDARD_MESSAGEBOX_SEPARATOR_SPACES = " ";
- //These are the possible buttons (in a standard MessageBox)
private enum ButtonID { OK = 0, CANCEL, YES, NO, ABORT, RETRY, IGNORE };
- //These are the buttons texts for different languages.
- //If you want to add a new language, add it here and in the GetButtonText-Function
private enum TwoLetterISOLanguageID { en, de, es, it };
- private static readonly string[] BUTTON_TEXTS_ENGLISH_EN = { "OK", "Cancel", "&Yes", "&No", "&Abort", "&Retry", "&Ignore" }; //Note: This is also the fallback language
+ private static readonly string[] BUTTON_TEXTS_ENGLISH_EN = { "OK", "Cancel", "&Yes", "&No", "&Abort", "&Retry", "&Ignore" };
private static readonly string[] BUTTON_TEXTS_GERMAN_DE = { "OK", "Abbrechen", "&Ja", "&Nein", "&Abbrechen", "&Wiederholen", "&Ignorieren" };
private static readonly string[] BUTTON_TEXTS_SPANISH_ES = { "Aceptar", "Cancelar", "&Sí", "&No", "&Abortar", "&Reintentar", "&Ignorar" };
private static readonly string[] BUTTON_TEXTS_ITALIAN_IT = { "OK", "Annulla", "&Sì", "&No", "&Interrompi", "&Riprova", "&Ignora" };
@@ -445,16 +542,10 @@ namespace JR.Utils.GUI.Forms
#region Private constructor
- ///
- /// Initializes a new instance of the class.
- ///
private FlexibleMessageBoxForm()
{
InitializeComponent();
-
- //Try to evaluate the language. If this fails, the fallback language English will be used
_ = Enum.TryParse(CultureInfo.CurrentUICulture.TwoLetterISOLanguageName, out languageID);
-
KeyPreview = true;
KeyUp += FlexibleMessageBoxForm_KeyUp;
}
@@ -463,120 +554,104 @@ namespace JR.Utils.GUI.Forms
#region Private helper functions
- ///
- /// Gets the string rows.
- ///
- /// The message.
- /// The string rows as 1-dimensional array
private static string[] GetStringRows(string message)
{
if (string.IsNullOrEmpty(message))
{
return null;
}
-
- string[] messageRows = message.Split(new char[] { '\n' }, StringSplitOptions.None);
- return messageRows;
+ return message.Split(new char[] { '\n' }, StringSplitOptions.None);
}
- ///
- /// Gets the button text for the CurrentUICulture language.
- /// Note: The fallback language is English
- ///
- /// The ID of the button.
- /// The button text
private string GetButtonText(ButtonID buttonID)
{
int buttonTextArrayIndex = Convert.ToInt32(buttonID);
-
switch (languageID)
{
case TwoLetterISOLanguageID.de: return BUTTON_TEXTS_GERMAN_DE[buttonTextArrayIndex];
case TwoLetterISOLanguageID.es: return BUTTON_TEXTS_SPANISH_ES[buttonTextArrayIndex];
case TwoLetterISOLanguageID.it: return BUTTON_TEXTS_ITALIAN_IT[buttonTextArrayIndex];
-
default: return BUTTON_TEXTS_ENGLISH_EN[buttonTextArrayIndex];
}
}
- ///
- /// Ensure the given working area factor in the range of 0.2 - 1.0 where:
- ///
- /// 0.2 means: 20 percent of the working area height or width.
- /// 1.0 means: 100 percent of the working area height or width.
- ///
- /// The given working area factor.
- /// The corrected given working area factor.
private static double GetCorrectedWorkingAreaFactor(double workingAreaFactor)
{
const double MIN_FACTOR = 0.2;
const double MAX_FACTOR = 1.0;
-
return workingAreaFactor < MIN_FACTOR ? MIN_FACTOR : workingAreaFactor > MAX_FACTOR ? MAX_FACTOR : workingAreaFactor;
}
- ///
- /// Set the dialogs start position when given.
- /// Otherwise center the dialog on the current screen.
- ///
- /// The FlexibleMessageBox dialog.
- /// The owner.
private static void SetDialogStartPosition(FlexibleMessageBoxForm flexibleMessageBoxForm, IWin32Window owner)
{
- //If no owner given: Center on current screen
- if (owner == null)
+ flexibleMessageBoxForm.StartPosition = FormStartPosition.Manual;
+
+ // Try to get owner form, fallback to active form if owner is null
+ Form ownerForm = null;
+ if (owner != null)
{
- Screen screen = Screen.FromPoint(Cursor.Position);
- flexibleMessageBoxForm.StartPosition = FormStartPosition.Manual;
- flexibleMessageBoxForm.Left = screen.Bounds.Left + (screen.Bounds.Width / 2) - (flexibleMessageBoxForm.Width / 2);
- flexibleMessageBoxForm.Top = screen.Bounds.Top + (screen.Bounds.Height / 2) - (flexibleMessageBoxForm.Height / 2);
+ ownerForm = owner as Form;
+ if (ownerForm == null)
+ {
+ Control ownerControl = Control.FromHandle(owner.Handle);
+ ownerForm = ownerControl?.FindForm();
+ }
+ }
+
+ // Fallback to active form if no owner specified
+ if (ownerForm == null)
+ {
+ ownerForm = Form.ActiveForm;
+ }
+
+ if (ownerForm != null && ownerForm.Visible)
+ {
+ // Center relative to owner window
+ int x = ownerForm.Left + (ownerForm.Width - flexibleMessageBoxForm.Width) / 2;
+ int y = ownerForm.Top + (ownerForm.Height - flexibleMessageBoxForm.Height) / 2;
+
+ // Ensure the dialog stays within screen bounds
+ Screen screen = Screen.FromControl(ownerForm);
+ x = Math.Max(screen.WorkingArea.Left, Math.Min(x, screen.WorkingArea.Right - flexibleMessageBoxForm.Width));
+ y = Math.Max(screen.WorkingArea.Top, Math.Min(y, screen.WorkingArea.Bottom - flexibleMessageBoxForm.Height));
+
+ flexibleMessageBoxForm.Left = x;
+ flexibleMessageBoxForm.Top = y;
+ }
+ else
+ {
+ // No owner found: center on current screen
+ CenterOnScreen(flexibleMessageBoxForm);
}
}
- ///
- /// Calculate the dialogs start size (Try to auto-size width to show longest text row).
- /// Also set the maximum dialog size.
- ///
- /// The FlexibleMessageBox dialog.
- /// The text (the longest text row is used to calculate the dialog width).
- /// The caption (this can also affect the dialog width).
+ private static void CenterOnScreen(FlexibleMessageBoxForm form)
+ {
+ Screen screen = Screen.FromPoint(Cursor.Position);
+ form.Left = screen.WorkingArea.Left + (screen.WorkingArea.Width - form.Width) / 2;
+ form.Top = screen.WorkingArea.Top + (screen.WorkingArea.Height - form.Height) / 2;
+ }
+
private static void SetDialogSizes(FlexibleMessageBoxForm flexibleMessageBoxForm, string text, string caption)
{
- //First set the bounds for the maximum dialog size
flexibleMessageBoxForm.MaximumSize = new Size(Convert.ToInt32(SystemInformation.WorkingArea.Width * FlexibleMessageBoxForm.GetCorrectedWorkingAreaFactor(MAX_WIDTH_FACTOR)),
Convert.ToInt32(SystemInformation.WorkingArea.Height * FlexibleMessageBoxForm.GetCorrectedWorkingAreaFactor(MAX_HEIGHT_FACTOR)));
- //Get rows. Exit if there are no rows to render...
string[] stringRows = GetStringRows(text);
- if (stringRows == null)
- {
- return;
- }
+ if (stringRows == null) return;
- //Calculate whole text height
int textHeight = TextRenderer.MeasureText(text, FONT).Height;
-
- //Calculate width for longest text line
const int SCROLLBAR_WIDTH_OFFSET = 15;
int longestTextRowWidth = stringRows.Max(textForRow => TextRenderer.MeasureText(textForRow, FONT).Width);
int captionWidth = TextRenderer.MeasureText(caption, SystemFonts.CaptionFont).Width;
int textWidth = Math.Max(longestTextRowWidth + SCROLLBAR_WIDTH_OFFSET, captionWidth);
- //Calculate margins
int marginWidth = flexibleMessageBoxForm.Width - flexibleMessageBoxForm.richTextBoxMessage.Width;
int marginHeight = flexibleMessageBoxForm.Height - flexibleMessageBoxForm.richTextBoxMessage.Height;
- //Set calculated dialog size (if the calculated values exceed the maximums, they were cut by windows forms automatically)
- flexibleMessageBoxForm.Size = new Size(textWidth + marginWidth,
- textHeight + marginHeight);
+ flexibleMessageBoxForm.Size = new Size(textWidth + marginWidth, textHeight + marginHeight);
}
- ///
- /// Set the dialogs icon.
- /// When no icon is used: Correct placement and width of rich text box.
- ///
- /// The FlexibleMessageBox dialog.
- /// The MessageBoxIcon.
private static void SetDialogIcon(FlexibleMessageBoxForm flexibleMessageBoxForm, MessageBoxIcon icon)
{
switch (icon)
@@ -594,7 +669,6 @@ namespace JR.Utils.GUI.Forms
flexibleMessageBoxForm.pictureBoxForIcon.Image = SystemIcons.Question.ToBitmap();
break;
default:
- //When no icon is used: Correct placement and width of rich text box.
flexibleMessageBoxForm.pictureBoxForIcon.Visible = false;
flexibleMessageBoxForm.richTextBoxMessage.Left -= flexibleMessageBoxForm.pictureBoxForIcon.Width;
flexibleMessageBoxForm.richTextBoxMessage.Width += flexibleMessageBoxForm.pictureBoxForIcon.Width;
@@ -602,93 +676,68 @@ namespace JR.Utils.GUI.Forms
}
}
- ///
- /// Set dialog buttons visibilities and texts.
- /// Also set a default button.
- ///
- /// The FlexibleMessageBox dialog.
- /// The buttons.
- /// The default button.
private static void SetDialogButtons(FlexibleMessageBoxForm flexibleMessageBoxForm, MessageBoxButtons buttons, MessageBoxDefaultButton defaultButton)
{
- //Set the buttons visibilities and texts
switch (buttons)
{
case MessageBoxButtons.AbortRetryIgnore:
flexibleMessageBoxForm.visibleButtonsCount = 3;
-
flexibleMessageBoxForm.button1.Visible = true;
flexibleMessageBoxForm.button1.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.ABORT);
flexibleMessageBoxForm.button1.DialogResult = DialogResult.Abort;
-
flexibleMessageBoxForm.button2.Visible = true;
flexibleMessageBoxForm.button2.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.RETRY);
flexibleMessageBoxForm.button2.DialogResult = DialogResult.Retry;
-
flexibleMessageBoxForm.button3.Visible = true;
flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.IGNORE);
flexibleMessageBoxForm.button3.DialogResult = DialogResult.Ignore;
-
flexibleMessageBoxForm.ControlBox = false;
break;
case MessageBoxButtons.OKCancel:
flexibleMessageBoxForm.visibleButtonsCount = 2;
-
flexibleMessageBoxForm.button2.Visible = true;
flexibleMessageBoxForm.button2.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.OK);
flexibleMessageBoxForm.button2.DialogResult = DialogResult.OK;
-
flexibleMessageBoxForm.button3.Visible = true;
flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.CANCEL);
flexibleMessageBoxForm.button3.DialogResult = DialogResult.Cancel;
-
flexibleMessageBoxForm.CancelButton = flexibleMessageBoxForm.button3;
break;
case MessageBoxButtons.RetryCancel:
flexibleMessageBoxForm.visibleButtonsCount = 2;
-
flexibleMessageBoxForm.button2.Visible = true;
flexibleMessageBoxForm.button2.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.RETRY);
flexibleMessageBoxForm.button2.DialogResult = DialogResult.Retry;
-
flexibleMessageBoxForm.button3.Visible = true;
flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.CANCEL);
flexibleMessageBoxForm.button3.DialogResult = DialogResult.Cancel;
-
flexibleMessageBoxForm.CancelButton = flexibleMessageBoxForm.button3;
break;
case MessageBoxButtons.YesNo:
flexibleMessageBoxForm.visibleButtonsCount = 2;
-
flexibleMessageBoxForm.button2.Visible = true;
flexibleMessageBoxForm.button2.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.YES);
flexibleMessageBoxForm.button2.DialogResult = DialogResult.Yes;
-
flexibleMessageBoxForm.button3.Visible = true;
flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.NO);
flexibleMessageBoxForm.button3.DialogResult = DialogResult.No;
-
flexibleMessageBoxForm.ControlBox = false;
break;
case MessageBoxButtons.YesNoCancel:
flexibleMessageBoxForm.visibleButtonsCount = 3;
-
flexibleMessageBoxForm.button1.Visible = true;
flexibleMessageBoxForm.button1.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.YES);
flexibleMessageBoxForm.button1.DialogResult = DialogResult.Yes;
-
flexibleMessageBoxForm.button2.Visible = true;
flexibleMessageBoxForm.button2.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.NO);
flexibleMessageBoxForm.button2.DialogResult = DialogResult.No;
-
flexibleMessageBoxForm.button3.Visible = true;
flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.CANCEL);
flexibleMessageBoxForm.button3.DialogResult = DialogResult.Cancel;
-
flexibleMessageBoxForm.CancelButton = flexibleMessageBoxForm.button3;
break;
@@ -698,12 +747,9 @@ namespace JR.Utils.GUI.Forms
flexibleMessageBoxForm.button3.Visible = true;
flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.OK);
flexibleMessageBoxForm.button3.DialogResult = DialogResult.OK;
-
flexibleMessageBoxForm.CancelButton = flexibleMessageBoxForm.button3;
break;
}
-
- //Set default button (used in FlexibleMessageBoxForm_Shown)
flexibleMessageBoxForm.defaultButton = defaultButton;
}
@@ -711,17 +757,9 @@ namespace JR.Utils.GUI.Forms
#region Private event handlers
- ///
- /// Handles the Shown event of the FlexibleMessageBoxForm control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
private void FlexibleMessageBoxForm_Shown(object sender, EventArgs e)
{
- Button buttonToFocus;
-
int buttonIndexToFocus;
- //Set the default button...
switch (defaultButton)
{
case MessageBoxDefaultButton.Button1:
@@ -737,20 +775,12 @@ namespace JR.Utils.GUI.Forms
}
if (buttonIndexToFocus > visibleButtonsCount)
- {
buttonIndexToFocus = visibleButtonsCount;
- }
-
- buttonToFocus = buttonIndexToFocus == 3 ? button3 : buttonIndexToFocus == 2 ? button2 : button1;
+ Button buttonToFocus = buttonIndexToFocus == 3 ? button3 : buttonIndexToFocus == 2 ? button2 : button1;
_ = buttonToFocus.Focus();
}
- ///
- /// Handles the LinkClicked event of the richTextBoxMessage control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
private void richTextBoxMessage_LinkClicked(object sender, LinkClickedEventArgs e)
{
try
@@ -758,33 +788,20 @@ namespace JR.Utils.GUI.Forms
Cursor.Current = Cursors.WaitCursor;
_ = Process.Start(e.LinkText);
}
- catch (Exception)
- {
- //Let the caller of FlexibleMessageBoxForm decide what to do with this exception...
- throw;
- }
finally
{
Cursor.Current = Cursors.Default;
}
-
}
- ///
- /// Handles the KeyUp event of the richTextBoxMessage control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
private void FlexibleMessageBoxForm_KeyUp(object sender, KeyEventArgs e)
{
- //Handle standard key strikes for clipboard copy: "Ctrl + C" and "Ctrl + Insert"
if (e.Control && (e.KeyCode == Keys.C || e.KeyCode == Keys.Insert))
{
string buttonsTextLine = (button1.Visible ? button1.Text + STANDARD_MESSAGEBOX_SEPARATOR_SPACES : string.Empty)
+ (button2.Visible ? button2.Text + STANDARD_MESSAGEBOX_SEPARATOR_SPACES : string.Empty)
+ (button3.Visible ? button3.Text + STANDARD_MESSAGEBOX_SEPARATOR_SPACES : string.Empty);
- //Build same clipboard text like the standard .Net MessageBox
string textForClipboard = STANDARD_MESSAGEBOX_SEPARATOR_LINES
+ Text + Environment.NewLine
+ STANDARD_MESSAGEBOX_SEPARATOR_LINES
@@ -793,75 +810,47 @@ namespace JR.Utils.GUI.Forms
+ buttonsTextLine.Replace("&", string.Empty) + Environment.NewLine
+ STANDARD_MESSAGEBOX_SEPARATOR_LINES;
- //Set text in clipboard
Clipboard.SetText(textForClipboard);
}
}
#endregion
- #region Properties (only used for binding)
+ #region Properties
- ///
- /// The text that is been used for the heading.
- ///
public string CaptionText { get; set; }
-
- ///
- /// The text that is been used in the FlexibleMessageBoxForm.
- ///
public string MessageText { get; set; }
#endregion
#region Public show function
- ///
- /// Shows the specified message box.
- ///
- /// The owner.
- /// The text.
- /// The caption.
- /// The buttons.
- /// The icon.
- /// The default button.
- /// The dialog result.
public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton)
{
- //Create a new instance of the FlexibleMessageBox form
FlexibleMessageBoxForm flexibleMessageBoxForm = new FlexibleMessageBoxForm
{
ShowInTaskbar = false,
-
- //Bind the caption and the message text
CaptionText = caption,
MessageText = text
};
flexibleMessageBoxForm.FlexibleMessageBoxFormBindingSource.DataSource = flexibleMessageBoxForm;
+ flexibleMessageBoxForm.titleLabel.Text = caption;
- //Set the buttons visibilities and texts. Also set a default button.
SetDialogButtons(flexibleMessageBoxForm, buttons, defaultButton);
-
- //Set the dialogs icon. When no icon is used: Correct placement and width of rich text box.
SetDialogIcon(flexibleMessageBoxForm, icon);
- //Set the font for all controls
flexibleMessageBoxForm.Font = FONT;
flexibleMessageBoxForm.richTextBoxMessage.Font = FONT;
- //Calculate the dialogs start size (Try to auto-size width to show longest text row). Also set the maximum dialog size.
SetDialogSizes(flexibleMessageBoxForm, text, caption);
-
- //Set the dialogs start position when given. Otherwise center the dialog on the current screen.
SetDialogStartPosition(flexibleMessageBoxForm, owner);
- //Show the dialog
return flexibleMessageBoxForm.ShowDialog(owner);
}
#endregion
- } //class FlexibleMessageBoxForm
+ }
#endregion
}
-}
+}
\ No newline at end of file
diff --git a/GalleryView.cs b/GalleryView.cs
index 58c838e..85853f2 100644
--- a/GalleryView.cs
+++ b/GalleryView.cs
@@ -1,4 +1,5 @@
using AndroidSideloader;
+using AndroidSideloader.Utilities;
using System;
using System.Collections.Generic;
using System.Drawing;
@@ -53,6 +54,11 @@ public class FastGalleryPanel : Control
private int _selectedIndex = -1;
private bool _isHoveringDeleteButton = false;
+ // Context Menu & Favorites
+ private ContextMenuStrip _contextMenu;
+ private int _rightClickedIndex = -1;
+ private HashSet _favoritesCache;
+
// Rendering
private Bitmap _backBuffer;
@@ -68,8 +74,9 @@ public class FastGalleryPanel : Control
// Theme colors
private static readonly Color TileBorderHover = Color.FromArgb(93, 203, 173);
private static readonly Color TileBorderSelected = Color.FromArgb(200, 200, 200);
+ private static readonly Color TileBorderFavorite = Color.FromArgb(255, 215, 0);
+ private static readonly Color BadgeFavoriteBg = Color.FromArgb(200, 255, 180, 0);
private static readonly Color TextColor = Color.FromArgb(245, 255, 255, 255);
- private static readonly Color BadgeUpdateBg = Color.FromArgb(180, 76, 175, 80);
private static readonly Color BadgeInstalledBg = Color.FromArgb(180, 60, 145, 230);
private static readonly Color DeleteButtonBg = Color.FromArgb(200, 180, 50, 50);
private static readonly Color DeleteButtonHoverBg = Color.FromArgb(255, 220, 70, 70);
@@ -80,6 +87,7 @@ public class FastGalleryPanel : Control
public event EventHandler TileClicked;
public event EventHandler TileDoubleClicked;
public event EventHandler TileDeleteClicked;
+ public event EventHandler TileRightClicked;
public event EventHandler SortChanged;
private class TileAnimationState
@@ -96,6 +104,8 @@ public class FastGalleryPanel : Control
public float TargetTooltipOpacity = 0f;
public float DeleteButtonOpacity = 0f;
public float TargetDeleteButtonOpacity = 0f;
+ public float FavoriteOpacity = 0f;
+ public float TargetFavoriteOpacity = 0f;
}
public FastGalleryPanel(List items, int tileWidth, int tileHeight, int spacing, int initialWidth, int initialHeight)
@@ -109,6 +119,11 @@ public class FastGalleryPanel : Control
_cacheOrder = new Queue();
_tileStates = new Dictionary();
_sortButtons = new List();
+ RefreshFavoritesCache();
+
+ // Avoid any implicit padding from the control container
+ Padding = Padding.Empty;
+ Margin = Padding.Empty;
Size = new Size(initialWidth, initialHeight);
@@ -124,6 +139,9 @@ public class FastGalleryPanel : Control
for (int i = 0; i < _items.Count; i++)
_tileStates[i] = new TileAnimationState();
+ // Create context menu
+ CreateContextMenu();
+
// Create sort panel
_sortPanel = CreateSortPanel();
Controls.Add(_sortPanel);
@@ -446,7 +464,8 @@ public class FastGalleryPanel : Control
_targetScrollY = 0;
_isScrolling = false;
- // Re-apply current sort
+ // Refresh favorites cache and re-apply sort
+ RefreshFavoritesCache();
ApplySort();
}
@@ -460,10 +479,10 @@ public class FastGalleryPanel : Control
private bool IsItemInstalled(ListViewItem item)
{
if (item == null) return false;
- // Check if the item has the installed or update available color
- bool hasUpdate = item.ForeColor.ToArgb() == ColorTranslator.FromHtml("#4daa57").ToArgb();
- bool installed = item.ForeColor.ToArgb() == ColorTranslator.FromHtml("#3c91e6").ToArgb();
- return installed || hasUpdate;
+
+ return item.ForeColor.ToArgb() == MainForm.ColorInstalled.ToArgb() ||
+ item.ForeColor.ToArgb() == MainForm.ColorUpdateAvailable.ToArgb() ||
+ item.ForeColor.ToArgb() == MainForm.ColorDonateGame.ToArgb();
}
private Rectangle GetDeleteButtonRect(int index, int row, int col, int scrollY)
@@ -535,6 +554,9 @@ public class FastGalleryPanel : Control
bool isHovered = index == _hoveredIndex;
bool isSelected = index == _selectedIndex;
bool isInstalled = IsItemInstalled(_items[index]);
+ string pkgName = _items[index].SubItems.Count > 2 ? _items[index].SubItems[1].Text : "";
+ bool isFavorite = _favoritesCache.Contains(pkgName);
+ state.TargetFavoriteOpacity = isFavorite ? 1.0f : 0f;
state.TargetScale = isHovered ? HOVER_SCALE : 1.0f;
state.TargetBorderOpacity = isHovered ? 1.0f : 0f;
@@ -584,6 +606,10 @@ public class FastGalleryPanel : Control
needsRedraw = true;
}
else state.DeleteButtonOpacity = state.TargetDeleteButtonOpacity;
+
+ if (Math.Abs(state.FavoriteOpacity - state.TargetFavoriteOpacity) > 0.01f)
+ { state.FavoriteOpacity += (state.TargetFavoriteOpacity - state.FavoriteOpacity) * 0.35f; needsRedraw = true; }
+ else state.FavoriteOpacity = state.TargetFavoriteOpacity;
}
}
@@ -756,6 +782,13 @@ public class FastGalleryPanel : Control
using (var borderPen = new Pen(Color.FromArgb((int)(200 * state.BorderOpacity), TileBorderHover), 2f))
g.DrawPath(borderPen, tilePath);
}
+
+ // Favorite border (golden)
+ if (state.FavoriteOpacity > 0.5f)
+ {
+ using (var favPen = new Pen(Color.FromArgb((int)(180 * state.FavoriteOpacity), TileBorderFavorite), 1.0f))
+ g.DrawPath(favPen, tilePath);
+ }
}
// Thumbnail
@@ -795,15 +828,31 @@ public class FastGalleryPanel : Control
// Status badges (left side)
int badgeY = y + thumbPadding + 4;
- bool hasUpdate = item.ForeColor.ToArgb() == ColorTranslator.FromHtml("#4daa57").ToArgb();
- bool installed = item.ForeColor.ToArgb() == ColorTranslator.FromHtml("#3c91e6").ToArgb();
+
+ // Favorite badge
+ if (state.FavoriteOpacity > 0.5f)
+ {
+ DrawBadge(g, "★", x + thumbPadding + 4, badgeY, BadgeFavoriteBg);
+ badgeY += 18;
+ }
+
+ bool hasUpdate = item.ForeColor.ToArgb() == MainForm.ColorUpdateAvailable.ToArgb();
+ bool installed = item.ForeColor.ToArgb() == MainForm.ColorInstalled.ToArgb();
+ bool canDonate = item.ForeColor.ToArgb() == MainForm.ColorDonateGame.ToArgb();
if (hasUpdate)
{
- DrawBadge(g, "UPDATE AVAILABLE", x + thumbPadding + 4, badgeY, BadgeUpdateBg);
+ DrawBadge(g, "UPDATE AVAILABLE", x + thumbPadding + 4, badgeY, Color.FromArgb(180, MainForm.ColorUpdateAvailable.R, MainForm.ColorUpdateAvailable.G, MainForm.ColorUpdateAvailable.B));
badgeY += 18;
}
- if (installed || hasUpdate)
+
+ if (canDonate)
+ {
+ DrawBadge(g, "NEWER THAN LIST", x + thumbPadding + 4, badgeY, Color.FromArgb(180, MainForm.ColorDonateGame.R, MainForm.ColorDonateGame.G, MainForm.ColorDonateGame.B));
+ badgeY += 18;
+ }
+
+ if (installed || hasUpdate || canDonate)
DrawBadge(g, "INSTALLED", x + thumbPadding + 4, badgeY, BadgeInstalledBg);
// Right-side badges (top-right of thumbnail)
@@ -1088,6 +1137,13 @@ public class FastGalleryPanel : Control
protected override void OnMouseClick(MouseEventArgs e)
{
base.OnMouseClick(e);
+
+ // Take focus to unfocus any other control (like search text box)
+ if (!Focused)
+ {
+ Focus();
+ }
+
if (e.Button == MouseButtons.Left)
{
int i = GetIndexAtPoint(e.X, e.Y);
@@ -1111,6 +1167,19 @@ public class FastGalleryPanel : Control
TileClicked?.Invoke(this, i);
}
}
+ else if (e.Button == MouseButtons.Right)
+ {
+ int i = GetIndexAtPoint(e.X, e.Y);
+ if (i >= 0)
+ {
+ _rightClickedIndex = i;
+ _selectedIndex = i;
+ Invalidate();
+ TileClicked?.Invoke(this, i);
+ TileRightClicked?.Invoke(this, i);
+ _contextMenu.Show(this, e.Location);
+ }
+ }
}
protected override void OnMouseDoubleClick(MouseEventArgs e)
@@ -1139,12 +1208,64 @@ public class FastGalleryPanel : Control
_isScrolling = true;
}
+ private void CreateContextMenu()
+ {
+ _contextMenu = new ContextMenuStrip();
+ _contextMenu.BackColor = Color.FromArgb(40, 42, 48);
+ _contextMenu.ForeColor = Color.White;
+ _contextMenu.ShowImageMargin = false;
+ _contextMenu.Renderer = new MainForm.CenteredMenuRenderer();
+
+ var favoriteItem = new ToolStripMenuItem("★ Add to Favorites");
+ favoriteItem.Click += ContextMenu_FavoriteClick;
+ _contextMenu.Items.Add(favoriteItem);
+ _contextMenu.Opening += ContextMenu_Opening;
+ }
+
+ private void ContextMenu_Opening(object sender, System.ComponentModel.CancelEventArgs e)
+ {
+ if (_rightClickedIndex < 0 || _rightClickedIndex >= _items.Count) { e.Cancel = true; return; }
+ var item = _items[_rightClickedIndex];
+ string packageName = item.SubItems.Count > 2 ? item.SubItems[1].Text : "";
+ if (string.IsNullOrEmpty(packageName)) { e.Cancel = true; return; }
+
+ bool isFavorite = _favoritesCache.Contains(packageName);
+ ((ToolStripMenuItem)_contextMenu.Items[0]).Text = isFavorite ? "Remove from Favorites" : "★ Add to Favorites";
+ }
+
+ private void ContextMenu_FavoriteClick(object sender, EventArgs e)
+ {
+ if (_rightClickedIndex < 0 || _rightClickedIndex >= _items.Count) return;
+ var item = _items[_rightClickedIndex];
+ string packageName = item.SubItems.Count > 1 ? item.SubItems[1].Text : "";
+ if (string.IsNullOrEmpty(packageName)) return;
+
+ var settings = SettingsManager.Instance;
+ if (_favoritesCache.Contains(packageName))
+ {
+ settings.RemoveFavoriteGame(packageName);
+ _favoritesCache.Remove(packageName);
+ }
+ else
+ {
+ settings.AddFavoriteGame(packageName);
+ _favoritesCache.Add(packageName);
+ }
+ Invalidate();
+ }
+
+ public void RefreshFavoritesCache()
+ {
+ _favoritesCache = new HashSet(SettingsManager.Instance.FavoritedGames, StringComparer.OrdinalIgnoreCase);
+ }
+
protected override void Dispose(bool disposing)
{
if (disposing)
{
_animationTimer?.Stop();
_animationTimer?.Dispose();
+ _contextMenu?.Dispose();
foreach (var img in _imageCache.Values) { try { img?.Dispose(); } catch { } }
_imageCache.Clear();
diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs
index 7f75e6c..4d328e7 100644
--- a/MainForm.Designer.cs
+++ b/MainForm.Designer.cs
@@ -1,4 +1,4 @@
-using AndroidSideloader.Properties;
+using AndroidSideloader.Properties;
using System.Drawing;
using System.Windows.Forms;
@@ -49,19 +49,13 @@ namespace AndroidSideloader
this.ReleaseAPKPathIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.VersionNameIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.DownloadsIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
- this.searchTextBox = new System.Windows.Forms.TextBox();
this.gamesQueueLabel = new System.Windows.Forms.Label();
- this.ProgressText = new System.Windows.Forms.Label();
this.notesRichTextBox = new System.Windows.Forms.RichTextBox();
this.DragDropLbl = new System.Windows.Forms.Label();
this.lblNotes = new System.Windows.Forms.Label();
this.adbCmd_background = new System.Windows.Forms.Label();
- this.lblUpdateAvailable = new System.Windows.Forms.Label();
- this.lblUpToDate = new System.Windows.Forms.Label();
- this.lblMirror = new System.Windows.Forms.Label();
this.adbCmd_CommandBox = new System.Windows.Forms.TextBox();
this.adbCmd_Label = new System.Windows.Forms.Label();
- this.lblNeedsDonate = new System.Windows.Forms.Label();
this.gamesPictureBox = new System.Windows.Forms.PictureBox();
this.startsideloadbutton_Tooltip = new System.Windows.Forms.ToolTip(this.components);
this.startsideloadbutton = new System.Windows.Forms.Button();
@@ -93,10 +87,8 @@ namespace AndroidSideloader
this.btnOpenDownloads = new System.Windows.Forms.Button();
this.btnRunAdbCmd_Tooltip = new System.Windows.Forms.ToolTip(this.components);
this.btnRunAdbCmd = new System.Windows.Forms.Button();
- this.ADBWirelessDisable_Tooltip = new System.Windows.Forms.ToolTip(this.components);
- this.ADBWirelessDisable = new System.Windows.Forms.Button();
- this.ADBWirelessEnable_Tooltip = new System.Windows.Forms.ToolTip(this.components);
- this.ADBWirelessEnable = new System.Windows.Forms.Button();
+ this.ADBWirelessToggle_Tooltip = new System.Windows.Forms.ToolTip(this.components);
+ this.ADBWirelessToggle = new System.Windows.Forms.Button();
this.UpdateGamesButton_Tooltip = new System.Windows.Forms.ToolTip(this.components);
this.UpdateGamesButton = new System.Windows.Forms.Button();
this.listApkButton_Tooltip = new System.Windows.Forms.ToolTip(this.components);
@@ -104,94 +96,66 @@ namespace AndroidSideloader
this.speedLabel_Tooltip = new System.Windows.Forms.ToolTip(this.components);
this.etaLabel_Tooltip = new System.Windows.Forms.ToolTip(this.components);
this.progressDLbtnContainer = new System.Windows.Forms.Panel();
- this.bottomContainer = new System.Windows.Forms.Panel();
this.diskLabel = new System.Windows.Forms.Label();
+ this.questStorageProgressBar = new System.Windows.Forms.Panel();
+ this.batteryLevImg = new System.Windows.Forms.PictureBox();
this.deviceDrop = new System.Windows.Forms.Button();
this.deviceDropContainer = new System.Windows.Forms.Panel();
+ this.mountDeviceButton = new System.Windows.Forms.Button();
+ this.selectDeviceButton = new System.Windows.Forms.Button();
this.sideloadDrop = new System.Windows.Forms.Button();
this.sideloadContainer = new System.Windows.Forms.Panel();
+ this.btnNoDevice = new System.Windows.Forms.Button();
this.installedAppsMenu = new System.Windows.Forms.Button();
this.installedAppsMenuContainer = new System.Windows.Forms.Panel();
this.backupDrop = new System.Windows.Forms.Button();
this.backupContainer = new System.Windows.Forms.Panel();
this.otherDrop = new System.Windows.Forms.Button();
this.otherContainer = new System.Windows.Forms.Panel();
+ this.selectMirrorButton = new System.Windows.Forms.Button();
this.questInfoPanel = new System.Windows.Forms.Panel();
- this.questStorageProgressBar = new System.Windows.Forms.Panel();
this.batteryLabel = new System.Windows.Forms.Label();
- this.batteryLevImg = new System.Windows.Forms.PictureBox();
this.questInfoLabel = new System.Windows.Forms.Label();
this.ULLabel = new System.Windows.Forms.Label();
- this.verLabel = new System.Windows.Forms.Label();
this.leftNavContainer = new System.Windows.Forms.Panel();
+ this.sidebarMediaPanel = new System.Windows.Forms.Panel();
+ this.selectedGameLabel = new System.Windows.Forms.Label();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.webView21 = new Microsoft.Web.WebView2.WinForms.WebView2();
this.favoriteGame = new System.Windows.Forms.ContextMenuStrip(this.components);
this.favoriteButton = new System.Windows.Forms.ToolStripMenuItem();
- this.favoriteSwitcher = new AndroidSideloader.RoundButton();
+ this.gamesGalleryView = new System.Windows.Forms.FlowLayoutPanel();
+ this.btnViewToggle_Tooltip = new System.Windows.Forms.ToolTip(this.components);
+ this.webViewPlaceholderPanel = new System.Windows.Forms.Panel();
this.adbCmd_btnSend = new AndroidSideloader.RoundButton();
this.adbCmd_btnToggleUpdates = new AndroidSideloader.RoundButton();
+ this.searchPanel = new AndroidSideloader.RoundButton();
+ this.searchIconPictureBox = new System.Windows.Forms.PictureBox();
+ this.searchTextBox = new System.Windows.Forms.TextBox();
+ this.btnViewToggle = new AndroidSideloader.RoundButton();
+ this.favoriteSwitcher = new AndroidSideloader.RoundButton();
+ this.btnInstalled = new AndroidSideloader.RoundButton();
+ this.btnUpdateAvailable = new AndroidSideloader.RoundButton();
+ this.btnNewerThanList = new AndroidSideloader.RoundButton();
this.downloadInstallGameButton = new AndroidSideloader.RoundButton();
- this.MountButton = new AndroidSideloader.RoundButton();
- this.btnNoDevice = new AndroidSideloader.RoundButton();
- this.gamesGalleryView = new System.Windows.Forms.FlowLayoutPanel();
- this.btnViewToggle = new RoundButton();
- this.btnViewToggle_Tooltip = new System.Windows.Forms.ToolTip(this.components);
- //
- // gamesGalleryView
- //
- this.gamesGalleryView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.gamesGalleryView.AutoScroll = false;
- this.gamesGalleryView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(15)))), ((int)(((byte)(15)))), ((int)(((byte)(15)))));
- this.gamesGalleryView.Location = new System.Drawing.Point(224, 98);
- this.gamesGalleryView.Name = "gamesGalleryView";
- this.gamesGalleryView.Padding = new System.Windows.Forms.Padding(0);
- this.gamesGalleryView.Size = new System.Drawing.Size(1145, 350);
- this.gamesGalleryView.TabIndex = 102;
- this.gamesGalleryView.Visible = false;
- //
- // btnViewToggle
- //
- this.btnViewToggle.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnViewToggle.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnViewToggle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.btnViewToggle.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
- this.btnViewToggle.Cursor = System.Windows.Forms.Cursors.Default;
- this.btnViewToggle.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.btnViewToggle.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.btnViewToggle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
- this.btnViewToggle.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.btnViewToggle.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.btnViewToggle.Location = new System.Drawing.Point(960, 34);
- this.btnViewToggle.Name = "btnViewToggle";
- this.btnViewToggle.Radius = 5;
- this.btnViewToggle.Size = new System.Drawing.Size(75, 28);
- this.btnViewToggle.Stroke = true;
- this.btnViewToggle.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.btnViewToggle.TabIndex = 103;
- this.btnViewToggle.Text = "Gallery";
- this.btnViewToggle.Transparency = false;
- this.btnViewToggle.Click += new System.EventHandler(this.btnViewToggle_Click);
-
- // Ensure proper z-order
- this.gamesGalleryView.BringToFront();
- this.btnViewToggle.BringToFront();
-
((System.ComponentModel.ISupportInitialize)(this.gamesPictureBox)).BeginInit();
+ this.gamesPictureBox.SuspendLayout();
this.progressDLbtnContainer.SuspendLayout();
+ this.questStorageProgressBar.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.batteryLevImg)).BeginInit();
this.deviceDropContainer.SuspendLayout();
this.sideloadContainer.SuspendLayout();
this.installedAppsMenuContainer.SuspendLayout();
this.backupContainer.SuspendLayout();
this.otherContainer.SuspendLayout();
this.questInfoPanel.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.batteryLevImg)).BeginInit();
this.leftNavContainer.SuspendLayout();
+ this.sidebarMediaPanel.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.webView21)).BeginInit();
this.favoriteGame.SuspendLayout();
+ this.searchPanel.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.searchIconPictureBox)).BeginInit();
this.SuspendLayout();
//
// m_combo
@@ -202,36 +166,36 @@ namespace AndroidSideloader
this.m_combo.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.m_combo.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.m_combo.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.m_combo.Location = new System.Drawing.Point(224, 9);
+ this.m_combo.Location = new System.Drawing.Point(253, 9);
this.m_combo.Name = "m_combo";
- this.m_combo.Size = new System.Drawing.Size(374, 23);
+ this.m_combo.Size = new System.Drawing.Size(374, 24);
this.m_combo.TabIndex = 0;
- this.m_combo.Text = "Select an Installed App to Uninstall or Share...";
+ this.m_combo.Text = "Select an Installed App...";
+ this.m_combo.Visible = false;
//
// progressBar
//
this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.progressBar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
- this.progressBar.ForeColor = System.Drawing.Color.Purple;
- this.progressBar.Location = new System.Drawing.Point(2, 0);
+ this.progressBar.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.progressBar.Location = new System.Drawing.Point(1, 18);
this.progressBar.MinimumSize = new System.Drawing.Size(200, 13);
this.progressBar.Name = "progressBar";
- this.progressBar.Size = new System.Drawing.Size(765, 13);
+ this.progressBar.Size = new System.Drawing.Size(983, 13);
+ this.progressBar.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
this.progressBar.TabIndex = 7;
//
// speedLabel
//
this.speedLabel.AutoSize = true;
this.speedLabel.BackColor = System.Drawing.Color.Transparent;
- this.speedLabel.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.speedLabel.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.speedLabel.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.speedLabel.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.speedLabel.Location = new System.Drawing.Point(2, 14);
+ this.speedLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold);
+ this.speedLabel.ForeColor = System.Drawing.Color.White;
+ this.speedLabel.Location = new System.Drawing.Point(-2, -3);
this.speedLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.speedLabel.Name = "speedLabel";
- this.speedLabel.Size = new System.Drawing.Size(124, 15);
+ this.speedLabel.Size = new System.Drawing.Size(152, 16);
this.speedLabel.TabIndex = 76;
this.speedLabel.Text = "DLS: Speed in MBPS";
this.speedLabel_Tooltip.SetToolTip(this.speedLabel, "Current download speed, updates every second, in mbps");
@@ -240,11 +204,9 @@ namespace AndroidSideloader
//
this.etaLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.etaLabel.BackColor = System.Drawing.Color.Transparent;
- this.etaLabel.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.etaLabel.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.etaLabel.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.etaLabel.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.etaLabel.Location = new System.Drawing.Point(571, 14);
+ this.etaLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.etaLabel.ForeColor = System.Drawing.Color.White;
+ this.etaLabel.Location = new System.Drawing.Point(790, -3);
this.etaLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.etaLabel.Name = "etaLabel";
this.etaLabel.Size = new System.Drawing.Size(196, 18);
@@ -256,38 +218,36 @@ namespace AndroidSideloader
//
// freeDisclaimer
//
- this.freeDisclaimer.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.freeDisclaimer.AutoSize = true;
- this.freeDisclaimer.BackColor = System.Drawing.Color.Black;
- this.freeDisclaimer.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.freeDisclaimer.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.freeDisclaimer.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.freeDisclaimer.Location = new System.Drawing.Point(289, 582);
+ this.freeDisclaimer.BackColor = System.Drawing.Color.Transparent;
+ this.freeDisclaimer.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.freeDisclaimer.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.freeDisclaimer.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.freeDisclaimer.ForeColor = System.Drawing.Color.White;
+ this.freeDisclaimer.Location = new System.Drawing.Point(0, 0);
this.freeDisclaimer.Name = "freeDisclaimer";
- this.freeDisclaimer.Size = new System.Drawing.Size(246, 40);
- this.freeDisclaimer.TabIndex = 79;
- this.freeDisclaimer.Text = "This app is FREE!! \r\nClick here to go to the github.";
- this.freeDisclaimer.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ this.freeDisclaimer.Size = new System.Drawing.Size(238, 136);
+ this.freeDisclaimer.TabIndex = 0;
+ this.freeDisclaimer.Text = "THIS APP IS FREE!\r\nClick here to go to GitHub";
+ this.freeDisclaimer.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.freeDisclaimer.Click += new System.EventHandler(this.freeDisclaimer_Click);
//
// gamesQueListBox
//
- this.gamesQueListBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.gamesQueListBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.gamesQueListBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.gamesQueListBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.gamesQueListBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.gamesQueListBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.gamesQueListBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
+ this.gamesQueListBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.gamesQueListBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(26)))), ((int)(((byte)(30)))));
+ this.gamesQueListBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.gamesQueListBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
+ this.gamesQueListBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F);
+ this.gamesQueListBox.ForeColor = System.Drawing.Color.White;
this.gamesQueListBox.FormattingEnabled = true;
- this.gamesQueListBox.ItemHeight = 15;
- this.gamesQueListBox.Location = new System.Drawing.Point(983, 493);
+ this.gamesQueListBox.ItemHeight = 24;
+ this.gamesQueListBox.Location = new System.Drawing.Point(654, 496);
this.gamesQueListBox.Margin = new System.Windows.Forms.Padding(2);
this.gamesQueListBox.Name = "gamesQueListBox";
- this.gamesQueListBox.Size = new System.Drawing.Size(386, 122);
+ this.gamesQueListBox.Size = new System.Drawing.Size(266, 192);
this.gamesQueListBox.TabIndex = 9;
this.gamesQueListBox.MouseClick += new System.Windows.Forms.MouseEventHandler(this.gamesQueListBox_MouseClick);
+ this.gamesQueListBox.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.gamesQueListBox_DrawItem);
this.gamesQueListBox.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
this.gamesQueListBox.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
//
@@ -300,12 +260,13 @@ namespace AndroidSideloader
this.devicesComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.devicesComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.devicesComboBox.FormattingEnabled = true;
- this.devicesComboBox.Location = new System.Drawing.Point(224, 39);
+ this.devicesComboBox.Location = new System.Drawing.Point(253, 39);
this.devicesComboBox.Margin = new System.Windows.Forms.Padding(2);
this.devicesComboBox.Name = "devicesComboBox";
- this.devicesComboBox.Size = new System.Drawing.Size(164, 23);
+ this.devicesComboBox.Size = new System.Drawing.Size(164, 24);
this.devicesComboBox.TabIndex = 1;
this.devicesComboBox.Text = "Select your device";
+ this.devicesComboBox.Visible = false;
this.devicesComboBox.SelectedIndexChanged += new System.EventHandler(this.devicesComboBox_SelectedIndexChanged);
//
// remotesList
@@ -317,11 +278,12 @@ namespace AndroidSideloader
this.remotesList.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.remotesList.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.remotesList.FormattingEnabled = true;
- this.remotesList.Location = new System.Drawing.Point(531, 40);
+ this.remotesList.Location = new System.Drawing.Point(567, 40);
this.remotesList.Margin = new System.Windows.Forms.Padding(2);
this.remotesList.Name = "remotesList";
- this.remotesList.Size = new System.Drawing.Size(67, 23);
+ this.remotesList.Size = new System.Drawing.Size(67, 24);
this.remotesList.TabIndex = 3;
+ this.remotesList.Visible = false;
this.remotesList.SelectedIndexChanged += new System.EventHandler(this.remotesList_SelectedIndexChanged);
//
// gamesListView
@@ -329,7 +291,8 @@ namespace AndroidSideloader
this.gamesListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.gamesListView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.gamesListView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(26)))), ((int)(((byte)(30)))));
+ this.gamesListView.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.gamesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.GameNameIndex,
this.ReleaseNameIndex,
@@ -343,10 +306,10 @@ namespace AndroidSideloader
this.gamesListView.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.gamesListView.HideSelection = false;
this.gamesListView.ImeMode = System.Windows.Forms.ImeMode.Off;
- this.gamesListView.Location = new System.Drawing.Point(224, 98);
+ this.gamesListView.Location = new System.Drawing.Point(258, 44);
this.gamesListView.Name = "gamesListView";
this.gamesListView.ShowGroups = false;
- this.gamesListView.Size = new System.Drawing.Size(1145, 350);
+ this.gamesListView.Size = new System.Drawing.Size(984, 409);
this.gamesListView.TabIndex = 6;
this.gamesListView.UseCompatibleStateImageBehavior = false;
this.gamesListView.View = System.Windows.Forms.View.Details;
@@ -394,69 +357,37 @@ namespace AndroidSideloader
this.DownloadsIndex.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
this.DownloadsIndex.Width = 80;
//
- // searchTextBox
- //
- this.searchTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.searchTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
- this.searchTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.searchTextBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.searchTextBox.ForeColor = System.Drawing.Color.LightGray;
- this.searchTextBox.Location = new System.Drawing.Point(224, 70);
- this.searchTextBox.MinimumSize = new System.Drawing.Size(231, 26);
- this.searchTextBox.Name = "searchTextBox";
- this.searchTextBox.Size = new System.Drawing.Size(1145, 21);
- this.searchTextBox.TabIndex = 5;
- this.searchTextBox.Text = "Search...";
- this.searchTextBox.Click += new System.EventHandler(this.searchTextBox_Click);
- this.searchTextBox.TextChanged += new System.EventHandler(this.searchTextBox_TextChanged);
- this.searchTextBox.Enter += new System.EventHandler(this.searchTextBox_Enter);
- this.searchTextBox.Leave += new System.EventHandler(this.searchTextBox_Leave);
- //
// gamesQueueLabel
//
this.gamesQueueLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.gamesQueueLabel.AutoSize = true;
- this.gamesQueueLabel.BackColor = System.Drawing.Color.Transparent;
- this.gamesQueueLabel.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.gamesQueueLabel.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.gamesQueueLabel.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.gamesQueueLabel.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.gamesQueueLabel.Location = new System.Drawing.Point(984, 603);
+ this.gamesQueueLabel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(26)))), ((int)(((byte)(30)))));
+ this.gamesQueueLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.gamesQueueLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(145)))), ((int)(((byte)(150)))));
+ this.gamesQueueLabel.Location = new System.Drawing.Point(669, 689);
this.gamesQueueLabel.Name = "gamesQueueLabel";
this.gamesQueueLabel.Size = new System.Drawing.Size(103, 15);
this.gamesQueueLabel.TabIndex = 86;
this.gamesQueueLabel.Text = "Download Queue";
//
- // ProgressText
- //
- this.ProgressText.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.ProgressText.AutoSize = true;
- this.ProgressText.BackColor = System.Drawing.Color.Transparent;
- this.ProgressText.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.ProgressText.ForeColor = System.Drawing.Color.White;
- this.ProgressText.Location = new System.Drawing.Point(225, 710);
- this.ProgressText.Name = "ProgressText";
- this.ProgressText.Size = new System.Drawing.Size(0, 18);
- this.ProgressText.TabIndex = 88;
- //
// notesRichTextBox
//
this.notesRichTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.notesRichTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.notesRichTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.notesRichTextBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.notesRichTextBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
+ this.notesRichTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(26)))), ((int)(((byte)(30)))));
+ this.notesRichTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.notesRichTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F);
+ this.notesRichTextBox.ForeColor = System.Drawing.Color.White;
this.notesRichTextBox.HideSelection = false;
- this.notesRichTextBox.Location = new System.Drawing.Point(984, 626);
+ this.notesRichTextBox.Location = new System.Drawing.Point(954, 496);
this.notesRichTextBox.Name = "notesRichTextBox";
this.notesRichTextBox.ReadOnly = true;
- this.notesRichTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
+ this.notesRichTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.None;
this.notesRichTextBox.ShowSelectionMargin = true;
- this.notesRichTextBox.Size = new System.Drawing.Size(385, 81);
+ this.notesRichTextBox.Size = new System.Drawing.Size(265, 192);
this.notesRichTextBox.TabIndex = 10;
- this.notesRichTextBox.Text = "\n\n\n TIP: PRESS F1 TO SEE A LIST OF SHORTCUTS";
+ this.notesRichTextBox.Text = "Tip: Press F1 to see all shortcuts";
+ this.notesRichTextBox.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.notesRichTextBox_LinkClicked);
//
// DragDropLbl
//
@@ -466,7 +397,7 @@ namespace AndroidSideloader
this.DragDropLbl.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.DragDropLbl.Font = new System.Drawing.Font("Microsoft Sans Serif", 36F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.DragDropLbl.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.DragDropLbl.Location = new System.Drawing.Point(984, 533);
+ this.DragDropLbl.Location = new System.Drawing.Point(620, 561);
this.DragDropLbl.Name = "DragDropLbl";
this.DragDropLbl.Size = new System.Drawing.Size(320, 55);
this.DragDropLbl.TabIndex = 25;
@@ -477,14 +408,12 @@ namespace AndroidSideloader
//
this.lblNotes.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.lblNotes.AutoSize = true;
- this.lblNotes.BackColor = System.Drawing.Color.Transparent;
- this.lblNotes.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.lblNotes.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.lblNotes.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.lblNotes.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.lblNotes.Location = new System.Drawing.Point(984, 689);
+ this.lblNotes.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(26)))), ((int)(((byte)(30)))));
+ this.lblNotes.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.lblNotes.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(145)))), ((int)(((byte)(150)))));
+ this.lblNotes.Location = new System.Drawing.Point(966, 689);
this.lblNotes.Name = "lblNotes";
- this.lblNotes.Size = new System.Drawing.Size(88, 15);
+ this.lblNotes.Size = new System.Drawing.Size(86, 15);
this.lblNotes.TabIndex = 86;
this.lblNotes.Text = "Release Notes";
//
@@ -492,58 +421,12 @@ namespace AndroidSideloader
//
this.adbCmd_background.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.adbCmd_background.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.adbCmd_background.Location = new System.Drawing.Point(462, 196);
+ this.adbCmd_background.Location = new System.Drawing.Point(462, 138);
this.adbCmd_background.Name = "adbCmd_background";
this.adbCmd_background.Size = new System.Drawing.Size(322, 103);
this.adbCmd_background.TabIndex = 89;
this.adbCmd_background.Visible = false;
//
- // lblUpdateAvailable
- //
- this.lblUpdateAvailable.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.lblUpdateAvailable.AutoSize = true;
- this.lblUpdateAvailable.BackColor = System.Drawing.Color.Transparent;
- this.lblUpdateAvailable.Cursor = System.Windows.Forms.Cursors.Hand;
- this.lblUpdateAvailable.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblUpdateAvailable.ForeColor = System.Drawing.SystemColors.ControlLightLight;
- this.lblUpdateAvailable.Location = new System.Drawing.Point(72, 20);
- this.lblUpdateAvailable.Name = "lblUpdateAvailable";
- this.lblUpdateAvailable.Size = new System.Drawing.Size(151, 20);
- this.lblUpdateAvailable.TabIndex = 90;
- this.lblUpdateAvailable.Text = "𝖴𝖯𝖣𝖠𝖳𝖤 𝖠𝖵𝖠𝖨𝖫𝖠𝖡𝖫𝖤";
- this.lblUpdateAvailable.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
- this.lblUpdateAvailable.Click += new System.EventHandler(this.updateAvailable_Click);
- //
- // lblUpToDate
- //
- this.lblUpToDate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.lblUpToDate.AutoSize = true;
- this.lblUpToDate.BackColor = System.Drawing.Color.Transparent;
- this.lblUpToDate.Cursor = System.Windows.Forms.Cursors.Hand;
- this.lblUpToDate.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblUpToDate.ForeColor = System.Drawing.SystemColors.ControlLightLight;
- this.lblUpToDate.Location = new System.Drawing.Point(127, 0);
- this.lblUpToDate.Name = "lblUpToDate";
- this.lblUpToDate.RightToLeft = System.Windows.Forms.RightToLeft.No;
- this.lblUpToDate.Size = new System.Drawing.Size(96, 20);
- this.lblUpToDate.TabIndex = 90;
- this.lblUpToDate.Text = "𝖴𝖯 𝖳𝖮 𝖣𝖠𝖳𝖤";
- this.lblUpToDate.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
- this.lblUpToDate.Click += new System.EventHandler(this.lblUpToDate_Click);
- //
- // lblMirror
- //
- this.lblMirror.AutoSize = true;
- this.lblMirror.BackColor = System.Drawing.Color.Transparent;
- this.lblMirror.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
- this.lblMirror.ForeColor = System.Drawing.SystemColors.ControlLightLight;
- this.lblMirror.Location = new System.Drawing.Point(475, 44);
- this.lblMirror.Name = "lblMirror";
- this.lblMirror.Size = new System.Drawing.Size(51, 17);
- this.lblMirror.TabIndex = 90;
- this.lblMirror.Text = "Mirror";
- this.lblMirror.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
// adbCmd_CommandBox
//
this.adbCmd_CommandBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@@ -556,11 +439,11 @@ namespace AndroidSideloader
this.adbCmd_CommandBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.adbCmd_CommandBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.adbCmd_CommandBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.adbCmd_CommandBox.Location = new System.Drawing.Point(477, 231);
+ this.adbCmd_CommandBox.Location = new System.Drawing.Point(477, 173);
this.adbCmd_CommandBox.MaximumSize = new System.Drawing.Size(290, 24);
this.adbCmd_CommandBox.MinimumSize = new System.Drawing.Size(290, 24);
this.adbCmd_CommandBox.Name = "adbCmd_CommandBox";
- this.adbCmd_CommandBox.Size = new System.Drawing.Size(290, 21);
+ this.adbCmd_CommandBox.Size = new System.Drawing.Size(290, 23);
this.adbCmd_CommandBox.TabIndex = 5;
this.adbCmd_CommandBox.Visible = false;
this.adbCmd_CommandBox.TextChanged += new System.EventHandler(this.searchTextBox_TextChanged);
@@ -575,8 +458,8 @@ namespace AndroidSideloader
| System.Windows.Forms.AnchorStyles.Right)));
this.adbCmd_Label.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.adbCmd_Label.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
- this.adbCmd_Label.ForeColor = System.Drawing.SystemColors.ControlLightLight;
- this.adbCmd_Label.Location = new System.Drawing.Point(500, 205);
+ this.adbCmd_Label.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.adbCmd_Label.Location = new System.Drawing.Point(500, 147);
this.adbCmd_Label.MaximumSize = new System.Drawing.Size(247, 20);
this.adbCmd_Label.MinimumSize = new System.Drawing.Size(247, 20);
this.adbCmd_Label.Name = "adbCmd_Label";
@@ -586,47 +469,35 @@ namespace AndroidSideloader
this.adbCmd_Label.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
this.adbCmd_Label.Visible = false;
//
- // lblNeedsDonate
- //
- this.lblNeedsDonate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.lblNeedsDonate.AutoSize = true;
- this.lblNeedsDonate.BackColor = System.Drawing.Color.Transparent;
- this.lblNeedsDonate.Cursor = System.Windows.Forms.Cursors.Hand;
- this.lblNeedsDonate.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblNeedsDonate.ForeColor = System.Drawing.SystemColors.ControlLightLight;
- this.lblNeedsDonate.Location = new System.Drawing.Point(81, 40);
- this.lblNeedsDonate.Name = "lblNeedsDonate";
- this.lblNeedsDonate.Size = new System.Drawing.Size(142, 20);
- this.lblNeedsDonate.TabIndex = 90;
- this.lblNeedsDonate.Text = "𝖭𝖤𝖶𝖤𝖱 𝖳𝖧𝖠𝖭 𝖫𝖨𝖲𝖳";
- this.lblNeedsDonate.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
- this.lblNeedsDonate.Click += new System.EventHandler(this.lblNeedsDonate_Click);
- //
// gamesPictureBox
//
- this.gamesPictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.gamesPictureBox.BackColor = System.Drawing.Color.Black;
+ this.gamesPictureBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(40)))));
this.gamesPictureBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
- this.gamesPictureBox.Location = new System.Drawing.Point(224, 493);
+ this.gamesPictureBox.Controls.Add(this.freeDisclaimer);
+ this.gamesPictureBox.Location = new System.Drawing.Point(6, 34);
+ this.gamesPictureBox.Margin = new System.Windows.Forms.Padding(0);
this.gamesPictureBox.Name = "gamesPictureBox";
- this.gamesPictureBox.Size = new System.Drawing.Size(374, 214);
+ this.gamesPictureBox.Size = new System.Drawing.Size(238, 136);
+ this.gamesPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.gamesPictureBox.TabIndex = 84;
this.gamesPictureBox.TabStop = false;
this.gamesPictureBox.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
this.gamesPictureBox.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
+ this.gamesPictureBox.Paint += new System.Windows.Forms.PaintEventHandler(this.gamesPictureBox_Paint);
//
// startsideloadbutton
//
this.startsideloadbutton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.startsideloadbutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.startsideloadbutton.Cursor = System.Windows.Forms.Cursors.Hand;
this.startsideloadbutton.Dock = System.Windows.Forms.DockStyle.Top;
this.startsideloadbutton.FlatAppearance.BorderSize = 0;
this.startsideloadbutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.startsideloadbutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.startsideloadbutton.Location = new System.Drawing.Point(0, 56);
+ this.startsideloadbutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.startsideloadbutton.Location = new System.Drawing.Point(0, 84);
this.startsideloadbutton.Name = "startsideloadbutton";
this.startsideloadbutton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.startsideloadbutton.Size = new System.Drawing.Size(221, 28);
+ this.startsideloadbutton.Size = new System.Drawing.Size(233, 28);
this.startsideloadbutton.TabIndex = 5;
this.startsideloadbutton.Text = "SIDELOAD APK";
this.startsideloadbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -637,173 +508,180 @@ namespace AndroidSideloader
// devicesbutton
//
this.devicesbutton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.devicesbutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.devicesbutton.Cursor = System.Windows.Forms.Cursors.Hand;
this.devicesbutton.Dock = System.Windows.Forms.DockStyle.Top;
this.devicesbutton.FlatAppearance.BorderSize = 0;
this.devicesbutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.devicesbutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.devicesbutton.Location = new System.Drawing.Point(0, 0);
+ this.devicesbutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.devicesbutton.Location = new System.Drawing.Point(0, 56);
this.devicesbutton.Name = "devicesbutton";
this.devicesbutton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.devicesbutton.Size = new System.Drawing.Size(221, 28);
+ this.devicesbutton.Size = new System.Drawing.Size(233, 28);
this.devicesbutton.TabIndex = 0;
this.devicesbutton.Text = "RECONNECT DEVICE";
this.devicesbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.devicesbutton_Tooltip.SetToolTip(this.devicesbutton, "Rookie will attempt to reconnect to your Device");
+ this.devicesbutton_Tooltip.SetToolTip(this.devicesbutton, "Rookie will attempt to reconnect to your device");
this.devicesbutton.UseVisualStyleBackColor = false;
this.devicesbutton.Click += new System.EventHandler(this.devicesbutton_Click);
//
// obbcopybutton
//
this.obbcopybutton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.obbcopybutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.obbcopybutton.Cursor = System.Windows.Forms.Cursors.Hand;
this.obbcopybutton.Dock = System.Windows.Forms.DockStyle.Top;
this.obbcopybutton.FlatAppearance.BorderSize = 0;
this.obbcopybutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.obbcopybutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.obbcopybutton.Location = new System.Drawing.Point(0, 0);
+ this.obbcopybutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.obbcopybutton.Location = new System.Drawing.Point(0, 28);
this.obbcopybutton.Name = "obbcopybutton";
this.obbcopybutton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.obbcopybutton.Size = new System.Drawing.Size(221, 28);
+ this.obbcopybutton.Size = new System.Drawing.Size(233, 28);
this.obbcopybutton.TabIndex = 0;
this.obbcopybutton.Text = "COPY OBB";
this.obbcopybutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.obbcopybutton_Tooltip.SetToolTip(this.obbcopybutton, "Copies an obb folder to the Android/obb folder from the device (Not all games use" +
- " obb files)");
+ this.obbcopybutton_Tooltip.SetToolTip(this.obbcopybutton, "Copies an OBB folder to the Android/obb folder from the device (Not all games use" +
+ " OBB files)");
this.obbcopybutton.UseVisualStyleBackColor = false;
this.obbcopybutton.Click += new System.EventHandler(this.obbcopybutton_Click);
//
// backupadbbutton
//
this.backupadbbutton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.backupadbbutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.backupadbbutton.Cursor = System.Windows.Forms.Cursors.Hand;
this.backupadbbutton.Dock = System.Windows.Forms.DockStyle.Top;
this.backupadbbutton.FlatAppearance.BorderSize = 0;
this.backupadbbutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.backupadbbutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.backupadbbutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
this.backupadbbutton.Location = new System.Drawing.Point(0, 28);
this.backupadbbutton.Name = "backupadbbutton";
this.backupadbbutton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.backupadbbutton.Size = new System.Drawing.Size(221, 28);
+ this.backupadbbutton.Size = new System.Drawing.Size(233, 28);
this.backupadbbutton.TabIndex = 1;
this.backupadbbutton.Text = "BACKUP WITH ADB";
this.backupadbbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.backupadbbutton_Tooltip.SetToolTip(this.backupadbbutton, "Uses ADB-Backup to Save Game Data (Pick app within the Dropdown)");
+ this.backupadbbutton_Tooltip.SetToolTip(this.backupadbbutton, "Save game data via ADB-Backup");
this.backupadbbutton.UseVisualStyleBackColor = false;
this.backupadbbutton.Click += new System.EventHandler(this.backupadbbutton_Click);
//
// backupbutton
//
this.backupbutton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.backupbutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.backupbutton.Cursor = System.Windows.Forms.Cursors.Hand;
this.backupbutton.Dock = System.Windows.Forms.DockStyle.Top;
this.backupbutton.FlatAppearance.BorderSize = 0;
this.backupbutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.backupbutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.backupbutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
this.backupbutton.Location = new System.Drawing.Point(0, 0);
this.backupbutton.Name = "backupbutton";
this.backupbutton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.backupbutton.Size = new System.Drawing.Size(221, 28);
+ this.backupbutton.Size = new System.Drawing.Size(233, 28);
this.backupbutton.TabIndex = 1;
this.backupbutton.Text = "BACKUP GAMEDATA";
this.backupbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.backupbutton_Tooltip.SetToolTip(this.backupbutton, "Saves the game and apps data to the sideloader folder (Does not save APKs or OBBs" +
- ")");
+ this.backupbutton_Tooltip.SetToolTip(this.backupbutton, "Save game and apps data to the sideloader folder (Does not save APKs or OBBs)");
this.backupbutton.UseVisualStyleBackColor = false;
this.backupbutton.Click += new System.EventHandler(this.backupbutton_Click);
//
// restorebutton
//
this.restorebutton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.restorebutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.restorebutton.Cursor = System.Windows.Forms.Cursors.Hand;
this.restorebutton.Dock = System.Windows.Forms.DockStyle.Top;
this.restorebutton.FlatAppearance.BorderSize = 0;
this.restorebutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.restorebutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.restorebutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
this.restorebutton.Location = new System.Drawing.Point(0, 56);
this.restorebutton.Name = "restorebutton";
this.restorebutton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.restorebutton.Size = new System.Drawing.Size(221, 28);
+ this.restorebutton.Size = new System.Drawing.Size(233, 28);
this.restorebutton.TabIndex = 0;
this.restorebutton.Text = "RESTORE GAMEDATA";
this.restorebutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.restorebutton_Tooltip.SetToolTip(this.restorebutton, "Restores the game and apps data to the device (Use the Backup Game Data button fi" +
- "rst!)");
+ this.restorebutton_Tooltip.SetToolTip(this.restorebutton, "Restore game and apps data to the device (Use BACKUP GAMEDATA first)");
this.restorebutton.UseVisualStyleBackColor = false;
this.restorebutton.Click += new System.EventHandler(this.restorebutton_Click);
//
// getApkButton
//
this.getApkButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.getApkButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.getApkButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.getApkButton.Dock = System.Windows.Forms.DockStyle.Top;
this.getApkButton.FlatAppearance.BorderSize = 0;
this.getApkButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.getApkButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
this.getApkButton.Location = new System.Drawing.Point(0, 0);
this.getApkButton.Name = "getApkButton";
this.getApkButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.getApkButton.Size = new System.Drawing.Size(221, 28);
+ this.getApkButton.Size = new System.Drawing.Size(233, 28);
this.getApkButton.TabIndex = 2;
- this.getApkButton.Text = "SHARE SELECTED APP";
+ this.getApkButton.Text = "SHARE APP";
this.getApkButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.getApkButton_Tooltip.SetToolTip(this.getApkButton, "Uploads the selected app to our Servers (Pick app within the Dropdown)");
+ this.getApkButton_Tooltip.SetToolTip(this.getApkButton, "Upload an app to our servers");
this.getApkButton.UseVisualStyleBackColor = false;
this.getApkButton.Click += new System.EventHandler(this.getApkButton_Click);
//
// uninstallAppButton
//
this.uninstallAppButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.uninstallAppButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.uninstallAppButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.uninstallAppButton.Dock = System.Windows.Forms.DockStyle.Top;
this.uninstallAppButton.FlatAppearance.BorderSize = 0;
this.uninstallAppButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.uninstallAppButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.uninstallAppButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
this.uninstallAppButton.Location = new System.Drawing.Point(0, 28);
this.uninstallAppButton.Name = "uninstallAppButton";
this.uninstallAppButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.uninstallAppButton.Size = new System.Drawing.Size(221, 28);
+ this.uninstallAppButton.Size = new System.Drawing.Size(233, 28);
this.uninstallAppButton.TabIndex = 3;
- this.uninstallAppButton.Text = "UNINSTALL SELECTED APP";
+ this.uninstallAppButton.Text = "UNINSTALL APP";
this.uninstallAppButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.uninstallAppButton_Tooltip.SetToolTip(this.uninstallAppButton, "Uninstalls the selected app (Select within the Dropdown)");
+ this.uninstallAppButton_Tooltip.SetToolTip(this.uninstallAppButton, "Uninstall an app");
this.uninstallAppButton.UseVisualStyleBackColor = false;
this.uninstallAppButton.Click += new System.EventHandler(this.uninstallAppButton_Click);
//
// pullAppToDesktopBtn
//
this.pullAppToDesktopBtn.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.pullAppToDesktopBtn.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.pullAppToDesktopBtn.Cursor = System.Windows.Forms.Cursors.Hand;
this.pullAppToDesktopBtn.Dock = System.Windows.Forms.DockStyle.Top;
this.pullAppToDesktopBtn.FlatAppearance.BorderSize = 0;
this.pullAppToDesktopBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.pullAppToDesktopBtn.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.pullAppToDesktopBtn.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
this.pullAppToDesktopBtn.Location = new System.Drawing.Point(0, 56);
this.pullAppToDesktopBtn.Name = "pullAppToDesktopBtn";
this.pullAppToDesktopBtn.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.pullAppToDesktopBtn.Size = new System.Drawing.Size(221, 28);
+ this.pullAppToDesktopBtn.Size = new System.Drawing.Size(233, 28);
this.pullAppToDesktopBtn.TabIndex = 4;
this.pullAppToDesktopBtn.Text = "PULL APP TO DESKTOP";
this.pullAppToDesktopBtn.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.pullAppToDesktopBtn_Tooltip.SetToolTip(this.pullAppToDesktopBtn, "Extracts APK and OBB to your Desktop (Select within the Dropdown)");
+ this.pullAppToDesktopBtn_Tooltip.SetToolTip(this.pullAppToDesktopBtn, "Extract APK and OBB to your desktop");
this.pullAppToDesktopBtn.UseVisualStyleBackColor = false;
this.pullAppToDesktopBtn.Click += new System.EventHandler(this.pullAppToDesktopBtn_Click);
//
// copyBulkObbButton
//
this.copyBulkObbButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.copyBulkObbButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.copyBulkObbButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.copyBulkObbButton.Dock = System.Windows.Forms.DockStyle.Top;
this.copyBulkObbButton.FlatAppearance.BorderSize = 0;
this.copyBulkObbButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.copyBulkObbButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.copyBulkObbButton.Location = new System.Drawing.Point(0, 28);
+ this.copyBulkObbButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.copyBulkObbButton.Location = new System.Drawing.Point(0, 56);
this.copyBulkObbButton.Name = "copyBulkObbButton";
this.copyBulkObbButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.copyBulkObbButton.Size = new System.Drawing.Size(221, 28);
+ this.copyBulkObbButton.Size = new System.Drawing.Size(233, 28);
this.copyBulkObbButton.TabIndex = 1;
this.copyBulkObbButton.Text = "RECURSIVE COPY OBB";
this.copyBulkObbButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.copyBulkObbButton_Tooltip.SetToolTip(this.copyBulkObbButton, "Copies an multiple OBB folders to your device.");
+ this.copyBulkObbButton_Tooltip.SetToolTip(this.copyBulkObbButton, "Copy multiple OBB folders to your device");
this.copyBulkObbButton.UseVisualStyleBackColor = false;
this.copyBulkObbButton.Click += new System.EventHandler(this.copyBulkObbButton_Click);
//
@@ -813,36 +691,37 @@ namespace AndroidSideloader
this.aboutBtn.Cursor = System.Windows.Forms.Cursors.Hand;
this.aboutBtn.Dock = System.Windows.Forms.DockStyle.Top;
this.aboutBtn.FlatAppearance.BorderSize = 0;
+ this.aboutBtn.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(47)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
this.aboutBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.aboutBtn.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
this.aboutBtn.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
- this.aboutBtn.Location = new System.Drawing.Point(0, 697);
+ this.aboutBtn.Location = new System.Drawing.Point(0, 991);
this.aboutBtn.Name = "aboutBtn";
this.aboutBtn.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.aboutBtn.Size = new System.Drawing.Size(221, 28);
+ this.aboutBtn.Size = new System.Drawing.Size(233, 28);
this.aboutBtn.TabIndex = 5;
this.aboutBtn.Text = "ABOUT";
this.aboutBtn.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.aboutBtn_Tooltip.SetToolTip(this.aboutBtn, "About the Rookie App and it\'s amazing creators and contributors");
+ this.aboutBtn_Tooltip.SetToolTip(this.aboutBtn, "About Rookie, it\'s amazing creators and contributors");
this.aboutBtn.UseVisualStyleBackColor = false;
this.aboutBtn.Click += new System.EventHandler(this.aboutBtn_Click);
//
// settingsButton
//
- this.settingsButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.settingsButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
this.settingsButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.settingsButton.Dock = System.Windows.Forms.DockStyle.Top;
this.settingsButton.FlatAppearance.BorderSize = 0;
this.settingsButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.settingsButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
- this.settingsButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.settingsButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.settingsButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
this.settingsButton.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.settingsButton.Location = new System.Drawing.Point(0, 669);
+ this.settingsButton.Location = new System.Drawing.Point(0, 140);
this.settingsButton.Name = "settingsButton";
this.settingsButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.settingsButton.Size = new System.Drawing.Size(221, 28);
- this.settingsButton.TabIndex = 4;
- this.settingsButton.Text = "SETTINGS";
+ this.settingsButton.Size = new System.Drawing.Size(233, 28);
+ this.settingsButton.TabIndex = 8;
+ this.settingsButton.Text = "ROOKIE SETTINGS";
this.settingsButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.settingsButton_Tooltip.SetToolTip(this.settingsButton, "Rookie App Settings");
this.settingsButton.UseVisualStyleBackColor = false;
@@ -851,133 +730,120 @@ namespace AndroidSideloader
// QuestOptionsButton
//
this.QuestOptionsButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.QuestOptionsButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.QuestOptionsButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.QuestOptionsButton.Dock = System.Windows.Forms.DockStyle.Top;
this.QuestOptionsButton.FlatAppearance.BorderSize = 0;
this.QuestOptionsButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.QuestOptionsButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.QuestOptionsButton.Location = new System.Drawing.Point(0, 56);
+ this.QuestOptionsButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.QuestOptionsButton.Location = new System.Drawing.Point(0, 112);
this.QuestOptionsButton.Name = "QuestOptionsButton";
this.QuestOptionsButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.QuestOptionsButton.Size = new System.Drawing.Size(221, 28);
+ this.QuestOptionsButton.Size = new System.Drawing.Size(233, 28);
this.QuestOptionsButton.TabIndex = 2;
- this.QuestOptionsButton.Text = "QUEST OPTIONS";
+ this.QuestOptionsButton.Text = "QUEST SETTINGS";
this.QuestOptionsButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.QuestOptionsButton_Tooltip.SetToolTip(this.QuestOptionsButton, "Additional Quest Settings and Utilities");
+ this.QuestOptionsButton_Tooltip.SetToolTip(this.QuestOptionsButton, "Quest Settings and Utilities");
this.QuestOptionsButton.UseVisualStyleBackColor = false;
this.QuestOptionsButton.Click += new System.EventHandler(this.QuestOptionsButton_Click);
//
// btnOpenDownloads
//
this.btnOpenDownloads.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.btnOpenDownloads.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnOpenDownloads.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnOpenDownloads.Dock = System.Windows.Forms.DockStyle.Top;
this.btnOpenDownloads.FlatAppearance.BorderSize = 0;
this.btnOpenDownloads.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnOpenDownloads.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.btnOpenDownloads.Location = new System.Drawing.Point(0, 84);
+ this.btnOpenDownloads.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnOpenDownloads.Location = new System.Drawing.Point(0, 28);
this.btnOpenDownloads.Name = "btnOpenDownloads";
this.btnOpenDownloads.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.btnOpenDownloads.Size = new System.Drawing.Size(221, 28);
+ this.btnOpenDownloads.Size = new System.Drawing.Size(233, 28);
this.btnOpenDownloads.TabIndex = 7;
this.btnOpenDownloads.Text = "OPEN DOWNLOADS FOLDER";
this.btnOpenDownloads.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.btnOpenDownloads_Tooltip.SetToolTip(this.btnOpenDownloads, "Opens your set Rookie Download Folder");
+ this.btnOpenDownloads_Tooltip.SetToolTip(this.btnOpenDownloads, "Open your set Rookie Download Folder");
this.btnOpenDownloads.UseVisualStyleBackColor = false;
this.btnOpenDownloads.Click += new System.EventHandler(this.btnOpenDownloads_Click);
//
// btnRunAdbCmd
//
this.btnRunAdbCmd.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.btnRunAdbCmd.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnRunAdbCmd.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnRunAdbCmd.Dock = System.Windows.Forms.DockStyle.Top;
this.btnRunAdbCmd.FlatAppearance.BorderSize = 0;
this.btnRunAdbCmd.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnRunAdbCmd.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.btnRunAdbCmd.Location = new System.Drawing.Point(0, 112);
+ this.btnRunAdbCmd.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnRunAdbCmd.Location = new System.Drawing.Point(0, 56);
this.btnRunAdbCmd.Name = "btnRunAdbCmd";
this.btnRunAdbCmd.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.btnRunAdbCmd.Size = new System.Drawing.Size(221, 28);
+ this.btnRunAdbCmd.Size = new System.Drawing.Size(233, 28);
this.btnRunAdbCmd.TabIndex = 6;
this.btnRunAdbCmd.Text = "RUN ADB COMMAND";
this.btnRunAdbCmd.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.btnRunAdbCmd_Tooltip.SetToolTip(this.btnRunAdbCmd, "Opens the Run ADB Command Prompt");
+ this.btnRunAdbCmd_Tooltip.SetToolTip(this.btnRunAdbCmd, "Open the \'Run ADB Command\' prompt");
this.btnRunAdbCmd.UseVisualStyleBackColor = false;
this.btnRunAdbCmd.Click += new System.EventHandler(this.btnRunAdbCmd_Click);
//
- // ADBWirelessDisable
+ // ADBWirelessToggle
//
- this.ADBWirelessDisable.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.ADBWirelessDisable.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
- this.ADBWirelessDisable.Dock = System.Windows.Forms.DockStyle.Top;
- this.ADBWirelessDisable.FlatAppearance.BorderSize = 0;
- this.ADBWirelessDisable.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.ADBWirelessDisable.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.ADBWirelessDisable.Location = new System.Drawing.Point(0, 28);
- this.ADBWirelessDisable.Name = "ADBWirelessDisable";
- this.ADBWirelessDisable.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.ADBWirelessDisable.Size = new System.Drawing.Size(221, 28);
- this.ADBWirelessDisable.TabIndex = 1;
- this.ADBWirelessDisable.Text = "DISABLE WIRELESS ADB";
- this.ADBWirelessDisable.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.ADBWirelessDisable_Tooltip.SetToolTip(this.ADBWirelessDisable, "Removes Wireless ADB settings and disconnects any Wireless devices");
- this.ADBWirelessDisable.UseVisualStyleBackColor = false;
- this.ADBWirelessDisable.Click += new System.EventHandler(this.ADBWirelessDisable_Click);
- //
- // ADBWirelessEnable
- //
- this.ADBWirelessEnable.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.ADBWirelessEnable.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
- this.ADBWirelessEnable.Dock = System.Windows.Forms.DockStyle.Top;
- this.ADBWirelessEnable.FlatAppearance.BorderSize = 0;
- this.ADBWirelessEnable.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.ADBWirelessEnable.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.ADBWirelessEnable.Location = new System.Drawing.Point(0, 0);
- this.ADBWirelessEnable.Name = "ADBWirelessEnable";
- this.ADBWirelessEnable.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.ADBWirelessEnable.Size = new System.Drawing.Size(221, 28);
- this.ADBWirelessEnable.TabIndex = 0;
- this.ADBWirelessEnable.Text = "ENABLE WIRELESS ADB";
- this.ADBWirelessEnable.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.ADBWirelessEnable_Tooltip.SetToolTip(this.ADBWirelessEnable, "Enables Wireless sideloading. Requires a connected device to activate!");
- this.ADBWirelessEnable.UseVisualStyleBackColor = false;
- this.ADBWirelessEnable.Click += new System.EventHandler(this.ADBWirelessEnable_Click);
+ this.ADBWirelessToggle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
+ this.ADBWirelessToggle.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.ADBWirelessToggle.Dock = System.Windows.Forms.DockStyle.Top;
+ this.ADBWirelessToggle.FlatAppearance.BorderSize = 0;
+ this.ADBWirelessToggle.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.ADBWirelessToggle.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.ADBWirelessToggle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.ADBWirelessToggle.Location = new System.Drawing.Point(0, 0);
+ this.ADBWirelessToggle.Name = "ADBWirelessToggle";
+ this.ADBWirelessToggle.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
+ this.ADBWirelessToggle.Size = new System.Drawing.Size(233, 28);
+ this.ADBWirelessToggle.TabIndex = 0;
+ this.ADBWirelessToggle.Text = "TOGGLE WIRELESS ADB";
+ this.ADBWirelessToggle.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.ADBWirelessToggle_Tooltip.SetToolTip(this.ADBWirelessToggle, "Enable or disable wireless ADB connection");
+ this.ADBWirelessToggle.UseVisualStyleBackColor = false;
+ this.ADBWirelessToggle.Click += new System.EventHandler(this.ADBWirelessToggle_Click);
//
// UpdateGamesButton
//
this.UpdateGamesButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.UpdateGamesButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.UpdateGamesButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.UpdateGamesButton.Dock = System.Windows.Forms.DockStyle.Top;
this.UpdateGamesButton.FlatAppearance.BorderSize = 0;
this.UpdateGamesButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.UpdateGamesButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.UpdateGamesButton.Location = new System.Drawing.Point(0, 28);
+ this.UpdateGamesButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.UpdateGamesButton.Location = new System.Drawing.Point(0, 84);
this.UpdateGamesButton.Name = "UpdateGamesButton";
this.UpdateGamesButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.UpdateGamesButton.Size = new System.Drawing.Size(221, 29);
+ this.UpdateGamesButton.Size = new System.Drawing.Size(233, 29);
this.UpdateGamesButton.TabIndex = 7;
this.UpdateGamesButton.Text = "REFRESH APP LIST";
this.UpdateGamesButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.UpdateGamesButton_Tooltip.SetToolTip(this.UpdateGamesButton, "Refresh Game List and available updates");
+ this.UpdateGamesButton_Tooltip.SetToolTip(this.UpdateGamesButton, "Refresh game list and available updates");
this.UpdateGamesButton.UseVisualStyleBackColor = false;
this.UpdateGamesButton.Click += new System.EventHandler(this.UpdateGamesButton_Click);
//
// listApkButton
//
this.listApkButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.listApkButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.listApkButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.listApkButton.Dock = System.Windows.Forms.DockStyle.Top;
this.listApkButton.FlatAppearance.BorderSize = 0;
this.listApkButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.listApkButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.listApkButton.Location = new System.Drawing.Point(0, 57);
+ this.listApkButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.listApkButton.Location = new System.Drawing.Point(0, 113);
this.listApkButton.Name = "listApkButton";
this.listApkButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.listApkButton.Size = new System.Drawing.Size(221, 28);
+ this.listApkButton.Size = new System.Drawing.Size(233, 28);
this.listApkButton.TabIndex = 6;
this.listApkButton.Text = "REFRESH ALL";
this.listApkButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.listApkButton_Tooltip.SetToolTip(this.listApkButton, "Refresh connected devices, installed apps, and update game list");
+ this.listApkButton_Tooltip.SetToolTip(this.listApkButton, "Refresh connected devices, installed apps and game list");
this.listApkButton.UseVisualStyleBackColor = false;
this.listApkButton.Click += new System.EventHandler(this.listApkButton_Click);
//
@@ -987,44 +853,68 @@ namespace AndroidSideloader
| System.Windows.Forms.AnchorStyles.Right)));
this.progressDLbtnContainer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.progressDLbtnContainer.BackColor = System.Drawing.Color.Transparent;
- this.progressDLbtnContainer.Controls.Add(this.downloadInstallGameButton);
this.progressDLbtnContainer.Controls.Add(this.progressBar);
this.progressDLbtnContainer.Controls.Add(this.etaLabel);
this.progressDLbtnContainer.Controls.Add(this.speedLabel);
- this.progressDLbtnContainer.Location = new System.Drawing.Point(224, 454);
+ this.progressDLbtnContainer.Location = new System.Drawing.Point(258, 459);
this.progressDLbtnContainer.MinimumSize = new System.Drawing.Size(600, 34);
this.progressDLbtnContainer.Name = "progressDLbtnContainer";
- this.progressDLbtnContainer.Size = new System.Drawing.Size(1145, 34);
+ this.progressDLbtnContainer.Size = new System.Drawing.Size(984, 34);
this.progressDLbtnContainer.TabIndex = 96;
//
- // bottomContainer
+ // diskLabel
//
- this.bottomContainer.AutoSize = true;
- this.bottomContainer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.bottomContainer.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
- this.bottomContainer.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.bottomContainer.Dock = System.Windows.Forms.DockStyle.Top;
- this.bottomContainer.Location = new System.Drawing.Point(0, 725);
- this.bottomContainer.Margin = new System.Windows.Forms.Padding(2);
- this.bottomContainer.Name = "bottomContainer";
- this.bottomContainer.Size = new System.Drawing.Size(221, 0);
- this.bottomContainer.TabIndex = 73;
- this.bottomContainer.Visible = false;
+ this.diskLabel.BackColor = System.Drawing.Color.Transparent;
+ this.diskLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.diskLabel.ForeColor = System.Drawing.Color.LightGray;
+ this.diskLabel.Location = new System.Drawing.Point(8, 24);
+ this.diskLabel.Name = "diskLabel";
+ this.diskLabel.Size = new System.Drawing.Size(150, 12);
+ this.diskLabel.TabIndex = 7;
+ this.diskLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.diskLabel.Visible = false;
+ //
+ // questStorageProgressBar
+ //
+ this.questStorageProgressBar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
+ this.questStorageProgressBar.Controls.Add(this.batteryLevImg);
+ this.questStorageProgressBar.Location = new System.Drawing.Point(4, 4);
+ this.questStorageProgressBar.Margin = new System.Windows.Forms.Padding(0);
+ this.questStorageProgressBar.Name = "questStorageProgressBar";
+ this.questStorageProgressBar.Size = new System.Drawing.Size(243, 44);
+ this.questStorageProgressBar.TabIndex = 100;
+ this.questStorageProgressBar.Visible = false;
+ this.questStorageProgressBar.Paint += new System.Windows.Forms.PaintEventHandler(this.questStorageProgressBar_Paint);
+ //
+ // batteryLevImg
+ //
+ this.batteryLevImg.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.batteryLevImg.BackColor = System.Drawing.Color.Transparent;
+ this.batteryLevImg.BackgroundImage = global::AndroidSideloader.Properties.Resources.battery;
+ this.batteryLevImg.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
+ this.batteryLevImg.Location = new System.Drawing.Point(184, 8);
+ this.batteryLevImg.Margin = new System.Windows.Forms.Padding(2);
+ this.batteryLevImg.Name = "batteryLevImg";
+ this.batteryLevImg.Size = new System.Drawing.Size(55, 29);
+ this.batteryLevImg.TabIndex = 85;
+ this.batteryLevImg.TabStop = false;
+ this.batteryLevImg.Visible = false;
//
// deviceDrop
//
this.deviceDrop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
- this.deviceDrop.Cursor = System.Windows.Forms.Cursors.Default;
+ this.deviceDrop.Cursor = System.Windows.Forms.Cursors.Hand;
this.deviceDrop.Dock = System.Windows.Forms.DockStyle.Top;
this.deviceDrop.FlatAppearance.BorderSize = 0;
+ this.deviceDrop.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(47)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
this.deviceDrop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.deviceDrop.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
this.deviceDrop.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
- this.deviceDrop.Location = new System.Drawing.Point(0, 52);
+ this.deviceDrop.Location = new System.Drawing.Point(0, 262);
this.deviceDrop.Margin = new System.Windows.Forms.Padding(2);
this.deviceDrop.Name = "deviceDrop";
this.deviceDrop.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.deviceDrop.Size = new System.Drawing.Size(221, 28);
+ this.deviceDrop.Size = new System.Drawing.Size(233, 28);
this.deviceDrop.TabIndex = 1;
this.deviceDrop.Text = "DEVICE";
this.deviceDrop.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -1039,29 +929,70 @@ namespace AndroidSideloader
this.deviceDropContainer.Controls.Add(this.listApkButton);
this.deviceDropContainer.Controls.Add(this.UpdateGamesButton);
this.deviceDropContainer.Controls.Add(this.devicesbutton);
+ this.deviceDropContainer.Controls.Add(this.mountDeviceButton);
+ this.deviceDropContainer.Controls.Add(this.selectDeviceButton);
this.deviceDropContainer.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.deviceDropContainer.Dock = System.Windows.Forms.DockStyle.Top;
- this.deviceDropContainer.Location = new System.Drawing.Point(0, 80);
+ this.deviceDropContainer.Location = new System.Drawing.Point(0, 290);
this.deviceDropContainer.Margin = new System.Windows.Forms.Padding(2);
this.deviceDropContainer.Name = "deviceDropContainer";
- this.deviceDropContainer.Size = new System.Drawing.Size(221, 85);
+ this.deviceDropContainer.Size = new System.Drawing.Size(233, 141);
this.deviceDropContainer.TabIndex = 73;
this.deviceDropContainer.Visible = false;
//
+ // mountDeviceButton
+ //
+ this.mountDeviceButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
+ this.mountDeviceButton.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.mountDeviceButton.Dock = System.Windows.Forms.DockStyle.Top;
+ this.mountDeviceButton.FlatAppearance.BorderSize = 0;
+ this.mountDeviceButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.mountDeviceButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.mountDeviceButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.mountDeviceButton.Location = new System.Drawing.Point(0, 28);
+ this.mountDeviceButton.Name = "mountDeviceButton";
+ this.mountDeviceButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
+ this.mountDeviceButton.Size = new System.Drawing.Size(233, 28);
+ this.mountDeviceButton.TabIndex = 9;
+ this.mountDeviceButton.Text = "MOUNT DEVICE";
+ this.mountDeviceButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.mountDeviceButton.UseVisualStyleBackColor = false;
+ this.mountDeviceButton.Click += new System.EventHandler(this.MountButton_Click);
+ //
+ // selectDeviceButton
+ //
+ this.selectDeviceButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
+ this.selectDeviceButton.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.selectDeviceButton.Dock = System.Windows.Forms.DockStyle.Top;
+ this.selectDeviceButton.FlatAppearance.BorderSize = 0;
+ this.selectDeviceButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.selectDeviceButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.selectDeviceButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.selectDeviceButton.Location = new System.Drawing.Point(0, 0);
+ this.selectDeviceButton.Name = "selectDeviceButton";
+ this.selectDeviceButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
+ this.selectDeviceButton.Size = new System.Drawing.Size(233, 28);
+ this.selectDeviceButton.TabIndex = 8;
+ this.selectDeviceButton.Text = "SELECT DEVICE";
+ this.selectDeviceButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.selectDeviceButton.UseVisualStyleBackColor = false;
+ this.selectDeviceButton.Click += new System.EventHandler(this.selectDeviceButton_Click);
+ //
// sideloadDrop
//
this.sideloadDrop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
- this.sideloadDrop.Cursor = System.Windows.Forms.Cursors.Default;
+ this.sideloadDrop.Cursor = System.Windows.Forms.Cursors.Hand;
this.sideloadDrop.Dock = System.Windows.Forms.DockStyle.Top;
this.sideloadDrop.FlatAppearance.BorderSize = 0;
+ this.sideloadDrop.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(47)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
this.sideloadDrop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.sideloadDrop.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
this.sideloadDrop.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
- this.sideloadDrop.Location = new System.Drawing.Point(0, 165);
+ this.sideloadDrop.Location = new System.Drawing.Point(0, 431);
this.sideloadDrop.Margin = new System.Windows.Forms.Padding(2);
this.sideloadDrop.Name = "sideloadDrop";
this.sideloadDrop.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.sideloadDrop.Size = new System.Drawing.Size(221, 28);
+ this.sideloadDrop.Size = new System.Drawing.Size(233, 28);
this.sideloadDrop.TabIndex = 1;
this.sideloadDrop.Text = "SIDELOAD";
this.sideloadDrop.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -1076,29 +1007,50 @@ namespace AndroidSideloader
this.sideloadContainer.Controls.Add(this.startsideloadbutton);
this.sideloadContainer.Controls.Add(this.copyBulkObbButton);
this.sideloadContainer.Controls.Add(this.obbcopybutton);
+ this.sideloadContainer.Controls.Add(this.btnNoDevice);
this.sideloadContainer.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.sideloadContainer.Dock = System.Windows.Forms.DockStyle.Top;
- this.sideloadContainer.Location = new System.Drawing.Point(0, 193);
+ this.sideloadContainer.Location = new System.Drawing.Point(0, 459);
this.sideloadContainer.Margin = new System.Windows.Forms.Padding(2);
this.sideloadContainer.Name = "sideloadContainer";
- this.sideloadContainer.Size = new System.Drawing.Size(221, 84);
+ this.sideloadContainer.Size = new System.Drawing.Size(233, 112);
this.sideloadContainer.TabIndex = 74;
this.sideloadContainer.Visible = false;
//
+ // btnNoDevice
+ //
+ this.btnNoDevice.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
+ this.btnNoDevice.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnNoDevice.Dock = System.Windows.Forms.DockStyle.Top;
+ this.btnNoDevice.FlatAppearance.BorderSize = 0;
+ this.btnNoDevice.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnNoDevice.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.btnNoDevice.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnNoDevice.Location = new System.Drawing.Point(0, 0);
+ this.btnNoDevice.Name = "btnNoDevice";
+ this.btnNoDevice.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
+ this.btnNoDevice.Size = new System.Drawing.Size(233, 28);
+ this.btnNoDevice.TabIndex = 6;
+ this.btnNoDevice.Text = "DISABLE SIDELOADING";
+ this.btnNoDevice.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.btnNoDevice.UseVisualStyleBackColor = false;
+ this.btnNoDevice.Click += new System.EventHandler(this.btnNoDevice_Click);
+ //
// installedAppsMenu
//
this.installedAppsMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
- this.installedAppsMenu.Cursor = System.Windows.Forms.Cursors.Default;
+ this.installedAppsMenu.Cursor = System.Windows.Forms.Cursors.Hand;
this.installedAppsMenu.Dock = System.Windows.Forms.DockStyle.Top;
this.installedAppsMenu.FlatAppearance.BorderSize = 0;
+ this.installedAppsMenu.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(47)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
this.installedAppsMenu.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.installedAppsMenu.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
this.installedAppsMenu.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
- this.installedAppsMenu.Location = new System.Drawing.Point(0, 277);
+ this.installedAppsMenu.Location = new System.Drawing.Point(0, 571);
this.installedAppsMenu.Margin = new System.Windows.Forms.Padding(2);
this.installedAppsMenu.Name = "installedAppsMenu";
this.installedAppsMenu.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.installedAppsMenu.Size = new System.Drawing.Size(221, 28);
+ this.installedAppsMenu.Size = new System.Drawing.Size(233, 28);
this.installedAppsMenu.TabIndex = 1;
this.installedAppsMenu.Text = "INSTALLED APPS";
this.installedAppsMenu.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -1115,27 +1067,28 @@ namespace AndroidSideloader
this.installedAppsMenuContainer.Controls.Add(this.getApkButton);
this.installedAppsMenuContainer.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.installedAppsMenuContainer.Dock = System.Windows.Forms.DockStyle.Top;
- this.installedAppsMenuContainer.Location = new System.Drawing.Point(0, 305);
+ this.installedAppsMenuContainer.Location = new System.Drawing.Point(0, 599);
this.installedAppsMenuContainer.Margin = new System.Windows.Forms.Padding(2);
this.installedAppsMenuContainer.Name = "installedAppsMenuContainer";
- this.installedAppsMenuContainer.Size = new System.Drawing.Size(221, 84);
+ this.installedAppsMenuContainer.Size = new System.Drawing.Size(233, 84);
this.installedAppsMenuContainer.TabIndex = 73;
this.installedAppsMenuContainer.Visible = false;
//
// backupDrop
//
this.backupDrop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
- this.backupDrop.Cursor = System.Windows.Forms.Cursors.Default;
+ this.backupDrop.Cursor = System.Windows.Forms.Cursors.Hand;
this.backupDrop.Dock = System.Windows.Forms.DockStyle.Top;
this.backupDrop.FlatAppearance.BorderSize = 0;
+ this.backupDrop.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(47)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
this.backupDrop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.backupDrop.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
this.backupDrop.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
- this.backupDrop.Location = new System.Drawing.Point(0, 389);
+ this.backupDrop.Location = new System.Drawing.Point(0, 683);
this.backupDrop.Margin = new System.Windows.Forms.Padding(2);
this.backupDrop.Name = "backupDrop";
this.backupDrop.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.backupDrop.Size = new System.Drawing.Size(221, 28);
+ this.backupDrop.Size = new System.Drawing.Size(233, 28);
this.backupDrop.TabIndex = 2;
this.backupDrop.Text = "BACKUP / RESTORE";
this.backupDrop.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -1152,27 +1105,28 @@ namespace AndroidSideloader
this.backupContainer.Controls.Add(this.backupbutton);
this.backupContainer.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.backupContainer.Dock = System.Windows.Forms.DockStyle.Top;
- this.backupContainer.Location = new System.Drawing.Point(0, 417);
+ this.backupContainer.Location = new System.Drawing.Point(0, 711);
this.backupContainer.Margin = new System.Windows.Forms.Padding(2);
this.backupContainer.Name = "backupContainer";
- this.backupContainer.Size = new System.Drawing.Size(221, 84);
+ this.backupContainer.Size = new System.Drawing.Size(233, 84);
this.backupContainer.TabIndex = 76;
this.backupContainer.Visible = false;
//
// otherDrop
//
this.otherDrop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
- this.otherDrop.Cursor = System.Windows.Forms.Cursors.Default;
+ this.otherDrop.Cursor = System.Windows.Forms.Cursors.Hand;
this.otherDrop.Dock = System.Windows.Forms.DockStyle.Top;
this.otherDrop.FlatAppearance.BorderSize = 0;
+ this.otherDrop.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(47)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
this.otherDrop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.otherDrop.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
this.otherDrop.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
- this.otherDrop.Location = new System.Drawing.Point(0, 501);
+ this.otherDrop.Location = new System.Drawing.Point(0, 795);
this.otherDrop.Margin = new System.Windows.Forms.Padding(2);
this.otherDrop.Name = "otherDrop";
this.otherDrop.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.otherDrop.Size = new System.Drawing.Size(221, 28);
+ this.otherDrop.Size = new System.Drawing.Size(233, 28);
this.otherDrop.TabIndex = 3;
this.otherDrop.Text = "OTHER";
this.otherDrop.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -1184,85 +1138,68 @@ namespace AndroidSideloader
this.otherContainer.AutoSize = true;
this.otherContainer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.otherContainer.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
+ this.otherContainer.Controls.Add(this.settingsButton);
+ this.otherContainer.Controls.Add(this.QuestOptionsButton);
+ this.otherContainer.Controls.Add(this.selectMirrorButton);
this.otherContainer.Controls.Add(this.btnRunAdbCmd);
this.otherContainer.Controls.Add(this.btnOpenDownloads);
- this.otherContainer.Controls.Add(this.QuestOptionsButton);
- this.otherContainer.Controls.Add(this.ADBWirelessDisable);
- this.otherContainer.Controls.Add(this.ADBWirelessEnable);
+ this.otherContainer.Controls.Add(this.ADBWirelessToggle);
this.otherContainer.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.otherContainer.Dock = System.Windows.Forms.DockStyle.Top;
- this.otherContainer.Location = new System.Drawing.Point(0, 529);
+ this.otherContainer.Location = new System.Drawing.Point(0, 823);
this.otherContainer.Margin = new System.Windows.Forms.Padding(2);
this.otherContainer.Name = "otherContainer";
- this.otherContainer.Size = new System.Drawing.Size(221, 140);
+ this.otherContainer.Size = new System.Drawing.Size(233, 168);
this.otherContainer.TabIndex = 80;
this.otherContainer.Visible = false;
//
- // questStorageProgressBar
+ // selectMirrorButton
//
- this.questStorageProgressBar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
- this.questStorageProgressBar.Location = new System.Drawing.Point(2, 2);
- this.questStorageProgressBar.Margin = new System.Windows.Forms.Padding(0);
- this.questStorageProgressBar.Name = "questStorageProgressBar";
- this.questStorageProgressBar.Size = new System.Drawing.Size(217, 44);
- this.questStorageProgressBar.TabIndex = 100;
- this.questStorageProgressBar.Paint += new System.Windows.Forms.PaintEventHandler(this.questStorageProgressBar_Paint);
+ this.selectMirrorButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
+ this.selectMirrorButton.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.selectMirrorButton.Dock = System.Windows.Forms.DockStyle.Top;
+ this.selectMirrorButton.FlatAppearance.BorderSize = 0;
+ this.selectMirrorButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.selectMirrorButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.selectMirrorButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.selectMirrorButton.Location = new System.Drawing.Point(0, 84);
+ this.selectMirrorButton.Name = "selectMirrorButton";
+ this.selectMirrorButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
+ this.selectMirrorButton.Size = new System.Drawing.Size(233, 28);
+ this.selectMirrorButton.TabIndex = 9;
+ this.selectMirrorButton.Text = "SELECT MIRROR";
+ this.selectMirrorButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.selectMirrorButton.UseVisualStyleBackColor = false;
+ this.selectMirrorButton.Click += new System.EventHandler(this.selectMirrorButton_Click);
//
// questInfoPanel
//
this.questInfoPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
this.questInfoPanel.Controls.Add(this.batteryLabel);
- this.questInfoPanel.Controls.Add(this.batteryLevImg);
this.questInfoPanel.Controls.Add(this.diskLabel);
this.questInfoPanel.Controls.Add(this.questInfoLabel);
this.questInfoPanel.Controls.Add(this.questStorageProgressBar);
this.questInfoPanel.Dock = System.Windows.Forms.DockStyle.Top;
- this.questInfoPanel.Location = new System.Drawing.Point(2, 2);
+ this.questInfoPanel.Location = new System.Drawing.Point(0, 0);
this.questInfoPanel.Margin = new System.Windows.Forms.Padding(0);
this.questInfoPanel.Name = "questInfoPanel";
- this.questInfoPanel.Size = new System.Drawing.Size(217, 48);
+ this.questInfoPanel.Size = new System.Drawing.Size(233, 48);
this.questInfoPanel.TabIndex = 0;
//
- // diskLabel
- //
- this.diskLabel.BackColor = System.Drawing.Color.Transparent;
- this.diskLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.diskLabel.ForeColor = System.Drawing.Color.LightGray;
- this.diskLabel.Location = new System.Drawing.Point(8, 24);
- this.diskLabel.Name = "diskLabel";
- this.diskLabel.Size = new System.Drawing.Size(150, 12);
- this.diskLabel.TabIndex = 7;
- this.diskLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.diskLabel.Parent = this.questStorageProgressBar;
- //
- // batteryLevImg
- //
- this.batteryLevImg.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.batteryLevImg.BackColor = System.Drawing.Color.Transparent;
- this.batteryLevImg.BackgroundImage = global::AndroidSideloader.Properties.Resources.battery;
- this.batteryLevImg.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
- this.batteryLevImg.Location = new System.Drawing.Point(158, 8);
- this.batteryLevImg.Margin = new System.Windows.Forms.Padding(2);
- this.batteryLevImg.Name = "batteryLevImg";
- this.batteryLevImg.Size = new System.Drawing.Size(55, 29);
- this.batteryLevImg.TabIndex = 85;
- this.batteryLevImg.TabStop = false;
- this.batteryLevImg.Parent = this.questStorageProgressBar;
- //
// batteryLabel
//
- this.batteryLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.batteryLabel.AutoSize = true;
this.batteryLabel.BackColor = System.Drawing.Color.Transparent;
- this.batteryLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.batteryLabel.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.batteryLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.batteryLabel.ForeColor = System.Drawing.SystemColors.ControlLightLight;
- this.batteryLabel.Location = new System.Drawing.Point(3, 6);
- this.batteryLabel.Margin = new System.Windows.Forms.Padding(2);
+ this.batteryLabel.Location = new System.Drawing.Point(0, 0);
+ this.batteryLabel.Margin = new System.Windows.Forms.Padding(0);
this.batteryLabel.Name = "batteryLabel";
- this.batteryLabel.Size = new System.Drawing.Size(0, 13);
+ this.batteryLabel.Padding = new System.Windows.Forms.Padding(0, 0, 8, 4);
+ this.batteryLabel.Size = new System.Drawing.Size(233, 48);
this.batteryLabel.TabIndex = 84;
- this.batteryLabel.Parent = this.batteryLevImg;
- this.batteryLabel.BringToFront();
+ this.batteryLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.batteryLabel.Visible = false;
//
// questInfoLabel
//
@@ -1275,40 +1212,26 @@ namespace AndroidSideloader
this.questInfoLabel.Size = new System.Drawing.Size(150, 20);
this.questInfoLabel.TabIndex = 1;
this.questInfoLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.questInfoLabel.Parent = this.questStorageProgressBar;
+ this.questInfoLabel.Visible = false;
//
// ULLabel
//
this.ULLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.ULLabel.AutoSize = true;
this.ULLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.ULLabel.ForeColor = System.Drawing.Color.Snow;
- this.ULLabel.Location = new System.Drawing.Point(635, 11);
+ this.ULLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.ULLabel.Location = new System.Drawing.Point(1109, 701);
this.ULLabel.Name = "ULLabel";
- this.ULLabel.Size = new System.Drawing.Size(120, 13);
+ this.ULLabel.Size = new System.Drawing.Size(130, 13);
this.ULLabel.TabIndex = 87;
- this.ULLabel.Text = "Uploading to VRP...";
+ this.ULLabel.Text = "Uploading to server...";
this.ULLabel.Visible = false;
//
- // verLabel
- //
- this.verLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.verLabel.BackColor = System.Drawing.Color.Transparent;
- this.verLabel.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold);
- this.verLabel.ForeColor = System.Drawing.SystemColors.Control;
- this.verLabel.Location = new System.Drawing.Point(1313, 721);
- this.verLabel.Name = "verLabel";
- this.verLabel.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
- this.verLabel.Size = new System.Drawing.Size(68, 20);
- this.verLabel.TabIndex = 88;
- //
// leftNavContainer
//
this.leftNavContainer.AutoScroll = true;
this.leftNavContainer.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
- this.leftNavContainer.Controls.Add(this.bottomContainer);
this.leftNavContainer.Controls.Add(this.aboutBtn);
- this.leftNavContainer.Controls.Add(this.settingsButton);
this.leftNavContainer.Controls.Add(this.otherContainer);
this.leftNavContainer.Controls.Add(this.otherDrop);
this.leftNavContainer.Controls.Add(this.backupContainer);
@@ -1319,88 +1242,116 @@ namespace AndroidSideloader
this.leftNavContainer.Controls.Add(this.sideloadDrop);
this.leftNavContainer.Controls.Add(this.deviceDropContainer);
this.leftNavContainer.Controls.Add(this.deviceDrop);
+ this.leftNavContainer.Controls.Add(this.sidebarMediaPanel);
this.leftNavContainer.Controls.Add(this.questInfoPanel);
this.leftNavContainer.Dock = System.Windows.Forms.DockStyle.Left;
this.leftNavContainer.Location = new System.Drawing.Point(0, 0);
this.leftNavContainer.Margin = new System.Windows.Forms.Padding(2);
this.leftNavContainer.Name = "leftNavContainer";
- this.leftNavContainer.Size = new System.Drawing.Size(221, 747);
+ this.leftNavContainer.Size = new System.Drawing.Size(250, 721);
this.leftNavContainer.TabIndex = 73;
//
+ // sidebarMediaPanel
+ //
+ this.sidebarMediaPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
+ this.sidebarMediaPanel.Controls.Add(this.gamesPictureBox);
+ this.sidebarMediaPanel.Controls.Add(this.downloadInstallGameButton);
+ this.sidebarMediaPanel.Controls.Add(this.selectedGameLabel);
+ this.sidebarMediaPanel.Dock = System.Windows.Forms.DockStyle.Top;
+ this.sidebarMediaPanel.Location = new System.Drawing.Point(0, 48);
+ this.sidebarMediaPanel.Margin = new System.Windows.Forms.Padding(0);
+ this.sidebarMediaPanel.Name = "sidebarMediaPanel";
+ this.sidebarMediaPanel.Size = new System.Drawing.Size(233, 214);
+ this.sidebarMediaPanel.TabIndex = 101;
+ //
+ // selectedGameLabel
+ //
+ this.selectedGameLabel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
+ this.selectedGameLabel.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.selectedGameLabel.ForeColor = System.Drawing.Color.White;
+ this.selectedGameLabel.Location = new System.Drawing.Point(8, 6);
+ this.selectedGameLabel.Margin = new System.Windows.Forms.Padding(0);
+ this.selectedGameLabel.Name = "selectedGameLabel";
+ this.selectedGameLabel.Size = new System.Drawing.Size(217, 20);
+ this.selectedGameLabel.TabIndex = 99;
+ this.selectedGameLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
// tableLayoutPanel1
//
- this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel1.BackColor = System.Drawing.Color.Transparent;
- this.tableLayoutPanel1.ColumnCount = 1;
+ this.tableLayoutPanel1.ColumnCount = 6;
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
- this.tableLayoutPanel1.Controls.Add(this.lblUpToDate, 0, 0);
- this.tableLayoutPanel1.Controls.Add(this.lblUpdateAvailable, 0, 1);
- this.tableLayoutPanel1.Controls.Add(this.lblNeedsDonate, 0, 2);
- this.tableLayoutPanel1.Location = new System.Drawing.Point(1143, 2);
+ this.tableLayoutPanel1.Controls.Add(this.searchPanel, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.btnViewToggle, 1, 0);
+ this.tableLayoutPanel1.Controls.Add(this.favoriteSwitcher, 2, 0);
+ this.tableLayoutPanel1.Controls.Add(this.btnInstalled, 3, 0);
+ this.tableLayoutPanel1.Controls.Add(this.btnUpdateAvailable, 4, 0);
+ this.tableLayoutPanel1.Controls.Add(this.btnNewerThanList, 5, 0);
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(258, 6);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
- this.tableLayoutPanel1.RightToLeft = System.Windows.Forms.RightToLeft.No;
- this.tableLayoutPanel1.RowCount = 3;
+ this.tableLayoutPanel1.RowCount = 1;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
- this.tableLayoutPanel1.Size = new System.Drawing.Size(226, 64);
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(984, 34);
this.tableLayoutPanel1.TabIndex = 97;
//
// webView21
//
this.webView21.AllowExternalDrop = true;
this.webView21.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.webView21.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(26)))), ((int)(((byte)(30)))));
this.webView21.CreationProperties = null;
- this.webView21.DefaultBackgroundColor = System.Drawing.Color.White;
- this.webView21.Location = new System.Drawing.Point(604, 493);
+ this.webView21.DefaultBackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(26)))), ((int)(((byte)(30)))));
+ this.webView21.Location = new System.Drawing.Point(259, 496);
this.webView21.Name = "webView21";
- this.webView21.Size = new System.Drawing.Size(374, 214);
+ this.webView21.Size = new System.Drawing.Size(384, 216);
this.webView21.TabIndex = 98;
this.webView21.ZoomFactor = 1D;
//
// favoriteGame
//
+ this.favoriteGame.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(42)))), ((int)(((byte)(48)))));
this.favoriteGame.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.favoriteButton});
this.favoriteGame.Name = "favoriteGame";
- this.favoriteGame.Size = new System.Drawing.Size(117, 26);
+ this.favoriteGame.ShowImageMargin = false;
+ this.favoriteGame.Size = new System.Drawing.Size(149, 26);
//
// favoriteButton
//
- this.favoriteButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.favoriteButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(42)))), ((int)(((byte)(48)))));
this.favoriteButton.ForeColor = System.Drawing.Color.White;
this.favoriteButton.Name = "favoriteButton";
- this.favoriteButton.Size = new System.Drawing.Size(116, 22);
- this.favoriteButton.Text = "Favorite";
+ this.favoriteButton.Size = new System.Drawing.Size(148, 22);
+ this.favoriteButton.Text = "★ Add to Favorites";
this.favoriteButton.Click += new System.EventHandler(this.favoriteButton_Click);
//
- // favoriteSwitcher
+ // gamesGalleryView
//
- this.favoriteSwitcher.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.favoriteSwitcher.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.favoriteSwitcher.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.favoriteSwitcher.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
- this.favoriteSwitcher.Cursor = System.Windows.Forms.Cursors.Default;
- this.favoriteSwitcher.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.favoriteSwitcher.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.favoriteSwitcher.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.favoriteSwitcher.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.favoriteSwitcher.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.favoriteSwitcher.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.favoriteSwitcher.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.favoriteSwitcher.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.favoriteSwitcher.Location = new System.Drawing.Point(786, 34);
- this.favoriteSwitcher.Name = "favoriteSwitcher";
- this.favoriteSwitcher.Radius = 5;
- this.favoriteSwitcher.Size = new System.Drawing.Size(168, 28);
- this.favoriteSwitcher.Stroke = true;
- this.favoriteSwitcher.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.favoriteSwitcher.TabIndex = 101;
- this.favoriteSwitcher.Text = "Games List";
- this.favoriteSwitcher.Transparency = false;
- this.favoriteSwitcher.Click += new System.EventHandler(this.favoriteSwitcher_Click);
+ this.gamesGalleryView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.gamesGalleryView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(15)))), ((int)(((byte)(15)))), ((int)(((byte)(15)))));
+ this.gamesGalleryView.Location = new System.Drawing.Point(258, 44);
+ this.gamesGalleryView.Name = "gamesGalleryView";
+ this.gamesGalleryView.Size = new System.Drawing.Size(984, 409);
+ this.gamesGalleryView.TabIndex = 102;
+ //
+ // webViewPlaceholderPanel
+ //
+ this.webViewPlaceholderPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.webViewPlaceholderPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(26)))), ((int)(((byte)(30)))));
+ this.webViewPlaceholderPanel.Location = new System.Drawing.Point(259, 496);
+ this.webViewPlaceholderPanel.Name = "webViewPlaceholderPanel";
+ this.webViewPlaceholderPanel.Size = new System.Drawing.Size(384, 217);
+ this.webViewPlaceholderPanel.TabIndex = 103;
+ this.webViewPlaceholderPanel.Paint += new System.Windows.Forms.PaintEventHandler(this.webViewPlaceholderPanel_Paint);
//
// adbCmd_btnSend
//
@@ -1413,11 +1364,14 @@ namespace AndroidSideloader
this.adbCmd_btnSend.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.adbCmd_btnSend.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.adbCmd_btnSend.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.adbCmd_btnSend.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.adbCmd_btnSend.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.adbCmd_btnSend.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.adbCmd_btnSend.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.adbCmd_btnSend.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.adbCmd_btnSend.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.adbCmd_btnSend.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.adbCmd_btnSend.Location = new System.Drawing.Point(478, 262);
+ this.adbCmd_btnSend.Location = new System.Drawing.Point(478, 204);
this.adbCmd_btnSend.Name = "adbCmd_btnSend";
this.adbCmd_btnSend.Radius = 5;
this.adbCmd_btnSend.Size = new System.Drawing.Size(126, 28);
@@ -1440,11 +1394,14 @@ namespace AndroidSideloader
this.adbCmd_btnToggleUpdates.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.adbCmd_btnToggleUpdates.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.adbCmd_btnToggleUpdates.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.adbCmd_btnToggleUpdates.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.adbCmd_btnToggleUpdates.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.adbCmd_btnToggleUpdates.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.adbCmd_btnToggleUpdates.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.adbCmd_btnToggleUpdates.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.adbCmd_btnToggleUpdates.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.adbCmd_btnToggleUpdates.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.adbCmd_btnToggleUpdates.Location = new System.Drawing.Point(627, 262);
+ this.adbCmd_btnToggleUpdates.Location = new System.Drawing.Point(627, 204);
this.adbCmd_btnToggleUpdates.Name = "adbCmd_btnToggleUpdates";
this.adbCmd_btnToggleUpdates.Radius = 5;
this.adbCmd_btnToggleUpdates.Size = new System.Drawing.Size(143, 28);
@@ -1456,125 +1413,242 @@ namespace AndroidSideloader
this.adbCmd_btnToggleUpdates.Visible = false;
this.adbCmd_btnToggleUpdates.Click += new System.EventHandler(this.adbCmd_btnToggleUpdates_Click);
//
+ // searchPanel
+ //
+ this.searchPanel.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(56)))), ((int)(((byte)(70)))));
+ this.searchPanel.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(56)))), ((int)(((byte)(70)))));
+ this.searchPanel.BackColor = System.Drawing.Color.Transparent;
+ this.searchPanel.Controls.Add(this.searchIconPictureBox);
+ this.searchPanel.Controls.Add(this.searchTextBox);
+ this.searchPanel.Cursor = System.Windows.Forms.Cursors.IBeam;
+ this.searchPanel.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.searchPanel.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(56)))), ((int)(((byte)(70)))));
+ this.searchPanel.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(56)))), ((int)(((byte)(70)))));
+ this.searchPanel.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.searchPanel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.searchPanel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.searchPanel.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(56)))), ((int)(((byte)(70)))));
+ this.searchPanel.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(56)))), ((int)(((byte)(70)))));
+ this.searchPanel.Location = new System.Drawing.Point(0, 3);
+ this.searchPanel.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
+ this.searchPanel.Name = "searchPanel";
+ this.searchPanel.Radius = 5;
+ this.searchPanel.Size = new System.Drawing.Size(340, 28);
+ this.searchPanel.Stroke = false;
+ this.searchPanel.StrokeColor = System.Drawing.Color.Gray;
+ this.searchPanel.TabIndex = 104;
+ this.searchPanel.Transparency = false;
+ this.searchPanel.Click += new System.EventHandler(this.searchTextBox_Click);
+ //
+ // searchIconPictureBox
+ //
+ this.searchIconPictureBox.BackColor = System.Drawing.Color.Transparent;
+ this.searchIconPictureBox.Image = global::AndroidSideloader.Properties.Resources.SearchGlass;
+ this.searchIconPictureBox.Location = new System.Drawing.Point(9, 6);
+ this.searchIconPictureBox.Name = "searchIconPictureBox";
+ this.searchIconPictureBox.Size = new System.Drawing.Size(16, 16);
+ this.searchIconPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+ this.searchIconPictureBox.TabIndex = 0;
+ this.searchIconPictureBox.TabStop = false;
+ this.searchIconPictureBox.Click += new System.EventHandler(this.searchTextBox_Click);
+ //
+ // searchTextBox
+ //
+ this.searchTextBox.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.searchTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(56)))), ((int)(((byte)(70)))));
+ this.searchTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.searchTextBox.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Italic);
+ this.searchTextBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.searchTextBox.Location = new System.Drawing.Point(32, 7);
+ this.searchTextBox.Name = "searchTextBox";
+ this.searchTextBox.Size = new System.Drawing.Size(300, 16);
+ this.searchTextBox.TabIndex = 5;
+ this.searchTextBox.Text = "Search...";
+ this.searchTextBox.Click += new System.EventHandler(this.searchTextBox_Click);
+ this.searchTextBox.TextChanged += new System.EventHandler(this.searchTextBox_TextChanged);
+ this.searchTextBox.Enter += new System.EventHandler(this.searchTextBox_Enter);
+ this.searchTextBox.Leave += new System.EventHandler(this.searchTextBox_Leave);
+ //
+ // btnViewToggle
+ //
+ this.btnViewToggle.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.btnViewToggle.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.btnViewToggle.BackColor = System.Drawing.Color.Transparent;
+ this.btnViewToggle.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnViewToggle.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.btnViewToggle.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnViewToggle.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnViewToggle.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnViewToggle.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.btnViewToggle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnViewToggle.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnViewToggle.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnViewToggle.Location = new System.Drawing.Point(346, 3);
+ this.btnViewToggle.Name = "btnViewToggle";
+ this.btnViewToggle.Radius = 5;
+ this.btnViewToggle.Size = new System.Drawing.Size(75, 28);
+ this.btnViewToggle.Stroke = true;
+ this.btnViewToggle.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.btnViewToggle.TabIndex = 103;
+ this.btnViewToggle.Text = "LIST";
+ this.btnViewToggle.Transparency = false;
+ this.btnViewToggle.Click += new System.EventHandler(this.btnViewToggle_Click);
+ //
+ // favoriteSwitcher
+ //
+ this.favoriteSwitcher.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.favoriteSwitcher.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.favoriteSwitcher.BackColor = System.Drawing.Color.Transparent;
+ this.favoriteSwitcher.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.favoriteSwitcher.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.favoriteSwitcher.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.favoriteSwitcher.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.favoriteSwitcher.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.favoriteSwitcher.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.favoriteSwitcher.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.favoriteSwitcher.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.favoriteSwitcher.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.favoriteSwitcher.Location = new System.Drawing.Point(427, 3);
+ this.favoriteSwitcher.Name = "favoriteSwitcher";
+ this.favoriteSwitcher.Radius = 5;
+ this.favoriteSwitcher.Size = new System.Drawing.Size(88, 28);
+ this.favoriteSwitcher.Stroke = true;
+ this.favoriteSwitcher.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.favoriteSwitcher.TabIndex = 101;
+ this.favoriteSwitcher.Text = "FAVORITES";
+ this.favoriteSwitcher.Transparency = false;
+ this.favoriteSwitcher.Click += new System.EventHandler(this.favoriteSwitcher_Click);
+ //
+ // btnInstalled
+ //
+ this.btnInstalled.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.btnInstalled.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.btnInstalled.BackColor = System.Drawing.Color.Transparent;
+ this.btnInstalled.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnInstalled.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.btnInstalled.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnInstalled.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnInstalled.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnInstalled.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.btnInstalled.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnInstalled.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnInstalled.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnInstalled.Location = new System.Drawing.Point(521, 3);
+ this.btnInstalled.Name = "btnInstalled";
+ this.btnInstalled.Radius = 5;
+ this.btnInstalled.Size = new System.Drawing.Size(150, 28);
+ this.btnInstalled.Stroke = true;
+ this.btnInstalled.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.btnInstalled.TabIndex = 90;
+ this.btnInstalled.Text = "INSTALLED";
+ this.btnInstalled.Transparency = false;
+ this.btnInstalled.Click += new System.EventHandler(this.btnInstalled_Click);
+ //
+ // btnUpdateAvailable
+ //
+ this.btnUpdateAvailable.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.btnUpdateAvailable.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.btnUpdateAvailable.BackColor = System.Drawing.Color.Transparent;
+ this.btnUpdateAvailable.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnUpdateAvailable.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.btnUpdateAvailable.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnUpdateAvailable.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnUpdateAvailable.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnUpdateAvailable.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.btnUpdateAvailable.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnUpdateAvailable.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnUpdateAvailable.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnUpdateAvailable.Location = new System.Drawing.Point(677, 3);
+ this.btnUpdateAvailable.Name = "btnUpdateAvailable";
+ this.btnUpdateAvailable.Radius = 5;
+ this.btnUpdateAvailable.Size = new System.Drawing.Size(150, 28);
+ this.btnUpdateAvailable.Stroke = true;
+ this.btnUpdateAvailable.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.btnUpdateAvailable.TabIndex = 91;
+ this.btnUpdateAvailable.Text = "UPDATE AVAILABLE";
+ this.btnUpdateAvailable.Transparency = false;
+ this.btnUpdateAvailable.Click += new System.EventHandler(this.btnUpdateAvailable_Click);
+ //
+ // btnNewerThanList
+ //
+ this.btnNewerThanList.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.btnNewerThanList.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.btnNewerThanList.BackColor = System.Drawing.Color.Transparent;
+ this.btnNewerThanList.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnNewerThanList.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.btnNewerThanList.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnNewerThanList.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnNewerThanList.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnNewerThanList.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.btnNewerThanList.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnNewerThanList.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnNewerThanList.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnNewerThanList.Location = new System.Drawing.Point(833, 3);
+ this.btnNewerThanList.Name = "btnNewerThanList";
+ this.btnNewerThanList.Radius = 5;
+ this.btnNewerThanList.Size = new System.Drawing.Size(148, 28);
+ this.btnNewerThanList.Stroke = true;
+ this.btnNewerThanList.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.btnNewerThanList.TabIndex = 92;
+ this.btnNewerThanList.Text = "NEWER THAN LIST";
+ this.btnNewerThanList.Transparency = false;
+ this.btnNewerThanList.Click += new System.EventHandler(this.btnNewerThanList_Click);
+ //
// downloadInstallGameButton
//
- this.downloadInstallGameButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.downloadInstallGameButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.downloadInstallGameButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.downloadInstallGameButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.downloadInstallGameButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.downloadInstallGameButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.downloadInstallGameButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.downloadInstallGameButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(215)))), ((int)(((byte)(190)))));
+ this.downloadInstallGameButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(215)))), ((int)(((byte)(190)))));
+ this.downloadInstallGameButton.BackColor = System.Drawing.Color.Transparent;
+ this.downloadInstallGameButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.downloadInstallGameButton.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.downloadInstallGameButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.downloadInstallGameButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.downloadInstallGameButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.downloadInstallGameButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.downloadInstallGameButton.Location = new System.Drawing.Point(781, 0);
+ this.downloadInstallGameButton.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(18)))), ((int)(((byte)(22)))));
+ this.downloadInstallGameButton.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(18)))), ((int)(((byte)(22)))));
+ this.downloadInstallGameButton.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.downloadInstallGameButton.Enabled = false;
+ this.downloadInstallGameButton.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.downloadInstallGameButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(59)))), ((int)(((byte)(67)))), ((int)(((byte)(82)))));
+ this.downloadInstallGameButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.downloadInstallGameButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.downloadInstallGameButton.Location = new System.Drawing.Point(6, 177);
this.downloadInstallGameButton.Margin = new System.Windows.Forms.Padding(0);
this.downloadInstallGameButton.Name = "downloadInstallGameButton";
- this.downloadInstallGameButton.Radius = 5;
- this.downloadInstallGameButton.Size = new System.Drawing.Size(364, 34);
+ this.downloadInstallGameButton.Radius = 4;
+ this.downloadInstallGameButton.Size = new System.Drawing.Size(238, 30);
this.downloadInstallGameButton.Stroke = true;
- this.downloadInstallGameButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.downloadInstallGameButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.downloadInstallGameButton.TabIndex = 94;
- this.downloadInstallGameButton.Text = "Download and Install / Add To Queue ⮩ ";
+ this.downloadInstallGameButton.Text = "DOWNLOAD AND INSTALL";
this.downloadInstallGameButton.Transparency = false;
this.downloadInstallGameButton.Click += new System.EventHandler(this.downloadInstallGameButton_Click);
this.downloadInstallGameButton.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
this.downloadInstallGameButton.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
//
- // MountButton
- //
- this.MountButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.MountButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.MountButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.MountButton.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
- this.MountButton.Cursor = System.Windows.Forms.Cursors.Default;
- this.MountButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.MountButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.MountButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.MountButton.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.MountButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.MountButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.MountButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.MountButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.MountButton.Location = new System.Drawing.Point(393, 39);
- this.MountButton.Name = "MountButton";
- this.MountButton.Radius = 5;
- this.MountButton.Size = new System.Drawing.Size(76, 26);
- this.MountButton.Stroke = true;
- this.MountButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.MountButton.TabIndex = 95;
- this.MountButton.Text = "MOUNT";
- this.MountButton.Transparency = false;
- this.MountButton.Click += new System.EventHandler(this.MountButton_Click);
- this.MountButton.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
- //
- // btnNoDevice
- //
- this.btnNoDevice.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnNoDevice.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnNoDevice.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.btnNoDevice.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
- this.btnNoDevice.Cursor = System.Windows.Forms.Cursors.Default;
- this.btnNoDevice.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.btnNoDevice.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.btnNoDevice.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.btnNoDevice.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.btnNoDevice.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.btnNoDevice.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.btnNoDevice.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.btnNoDevice.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.btnNoDevice.Location = new System.Drawing.Point(612, 34);
- this.btnNoDevice.Name = "btnNoDevice";
- this.btnNoDevice.Radius = 5;
- this.btnNoDevice.Size = new System.Drawing.Size(168, 28);
- this.btnNoDevice.Stroke = true;
- this.btnNoDevice.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.btnNoDevice.TabIndex = 99;
- this.btnNoDevice.Text = "Disable Sideloading";
- this.btnNoDevice.Transparency = false;
- this.btnNoDevice.Click += new System.EventHandler(this.btnNoDevice_Click);
- //
// MainForm
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(34)))), ((int)(((byte)(42)))));
+ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
- this.ClientSize = new System.Drawing.Size(1387, 747);
- this.Controls.Add(this.favoriteSwitcher);
+ this.ClientSize = new System.Drawing.Size(1254, 721);
this.Controls.Add(this.adbCmd_btnSend);
this.Controls.Add(this.adbCmd_btnToggleUpdates);
this.Controls.Add(this.ULLabel);
- this.Controls.Add(this.verLabel);
- this.Controls.Add(this.webView21);
this.Controls.Add(this.tableLayoutPanel1);
this.Controls.Add(this.progressDLbtnContainer);
- this.Controls.Add(this.MountButton);
- this.Controls.Add(this.ProgressText);
- this.Controls.Add(this.lblMirror);
this.Controls.Add(this.adbCmd_CommandBox);
- this.Controls.Add(this.searchTextBox);
this.Controls.Add(this.adbCmd_Label);
- this.Controls.Add(this.freeDisclaimer);
this.Controls.Add(this.DragDropLbl);
this.Controls.Add(this.lblNotes);
this.Controls.Add(this.gamesQueueLabel);
- this.Controls.Add(this.gamesPictureBox);
- this.Controls.Add(this.remotesList);
- this.Controls.Add(this.devicesComboBox);
this.Controls.Add(this.gamesQueListBox);
this.Controls.Add(this.leftNavContainer);
- this.Controls.Add(this.m_combo);
this.Controls.Add(this.notesRichTextBox);
this.Controls.Add(this.adbCmd_background);
this.Controls.Add(this.gamesListView);
this.Controls.Add(this.gamesGalleryView);
- this.Controls.Add(this.btnViewToggle);
- this.Controls.Add(this.btnNoDevice);
+ this.Controls.Add(this.webViewPlaceholderPanel);
+ this.Controls.Add(this.webView21);
this.DoubleBuffered = true;
this.ForeColor = System.Drawing.Color.White;
this.HelpButton = true;
@@ -1589,29 +1663,29 @@ namespace AndroidSideloader
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
this.DragLeave += new System.EventHandler(this.Form1_DragLeave);
((System.ComponentModel.ISupportInitialize)(this.gamesPictureBox)).EndInit();
+ this.gamesPictureBox.ResumeLayout(false);
this.progressDLbtnContainer.ResumeLayout(false);
this.progressDLbtnContainer.PerformLayout();
+ this.questStorageProgressBar.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.batteryLevImg)).EndInit();
this.deviceDropContainer.ResumeLayout(false);
this.sideloadContainer.ResumeLayout(false);
this.installedAppsMenuContainer.ResumeLayout(false);
this.backupContainer.ResumeLayout(false);
this.otherContainer.ResumeLayout(false);
this.questInfoPanel.ResumeLayout(false);
- this.questInfoPanel.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.batteryLevImg)).EndInit();
this.leftNavContainer.ResumeLayout(false);
this.leftNavContainer.PerformLayout();
+ this.sidebarMediaPanel.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
- this.tableLayoutPanel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.webView21)).EndInit();
this.favoriteGame.ResumeLayout(false);
+ this.searchPanel.ResumeLayout(false);
+ this.searchPanel.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.searchIconPictureBox)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
- this.questStorageProgressBar.Visible = false;
- this.batteryLevImg.Visible = false;
- this.batteryLabel.Visible = false;
- this.questInfoLabel.Visible = false;
- this.diskLabel.Visible = false;
+
}
#endregion
@@ -1627,18 +1701,13 @@ namespace AndroidSideloader
private System.Windows.Forms.TextBox searchTextBox;
private System.Windows.Forms.PictureBox gamesPictureBox;
private System.Windows.Forms.Label gamesQueueLabel;
- private System.Windows.Forms.Label ProgressText;
private System.Windows.Forms.RichTextBox notesRichTextBox;
private System.Windows.Forms.Label DragDropLbl;
private System.Windows.Forms.Label lblNotes;
private System.Windows.Forms.Label adbCmd_background;
- private System.Windows.Forms.Label lblUpdateAvailable;
- private System.Windows.Forms.Label lblUpToDate;
- private System.Windows.Forms.Label lblMirror;
private System.Windows.Forms.TextBox adbCmd_CommandBox;
private System.Windows.Forms.Label adbCmd_Label;
public System.Windows.Forms.ComboBox remotesList;
- private System.Windows.Forms.Label lblNeedsDonate;
public System.Windows.Forms.ColumnHeader GameNameIndex;
public System.Windows.Forms.ColumnHeader ReleaseNameIndex;
private System.Windows.Forms.ColumnHeader PackageNameIndex;
@@ -1647,7 +1716,6 @@ namespace AndroidSideloader
public System.Windows.Forms.ColumnHeader VersionNameIndex;
public System.Windows.Forms.ColumnHeader DownloadsIndex;
private RoundButton downloadInstallGameButton;
- private RoundButton MountButton;
private RoundButton btnViewToggle;
private ToolTip startsideloadbutton_Tooltip;
private ToolTip devicesbutton_Tooltip;
@@ -1664,8 +1732,7 @@ namespace AndroidSideloader
private ToolTip QuestOptionsButton_Tooltip;
private ToolTip btnOpenDownloads_Tooltip;
private ToolTip btnRunAdbCmd_Tooltip;
- private ToolTip ADBWirelessDisable_Tooltip;
- private ToolTip ADBWirelessEnable_Tooltip;
+ private ToolTip ADBWirelessToggle_Tooltip;
private ToolTip UpdateGamesButton_Tooltip;
private ToolTip listApkButton_Tooltip;
private ToolTip speedLabel_Tooltip;
@@ -1673,7 +1740,6 @@ namespace AndroidSideloader
private ToolTip btnViewToggle_Tooltip;
private Panel progressDLbtnContainer;
private Microsoft.Web.WebView2.WinForms.WebView2 webView21;
- private Panel bottomContainer;
private Button devicesbutton;
private Button deviceDrop;
private Panel deviceDropContainer;
@@ -1697,19 +1763,17 @@ namespace AndroidSideloader
private Button otherDrop;
private Panel otherContainer;
private Button QuestOptionsButton;
- private Button ADBWirelessDisable;
- private Button ADBWirelessEnable;
+ private Button ADBWirelessToggle;
private Button settingsButton;
private Button aboutBtn;
private PictureBox batteryLevImg;
private Label batteryLabel;
private Label ULLabel;
- private Label verLabel;
private Panel leftNavContainer;
private TableLayoutPanel tableLayoutPanel1;
private Button btnOpenDownloads;
private Button btnRunAdbCmd;
- private RoundButton btnNoDevice;
+ private Button btnNoDevice;
private RoundButton adbCmd_btnToggleUpdates;
private RoundButton adbCmd_btnSend;
private ContextMenuStrip favoriteGame;
@@ -1719,6 +1783,18 @@ namespace AndroidSideloader
private Panel questStorageProgressBar;
private Label questInfoLabel;
private Label diskLabel;
- private System.Windows.Forms.PictureBox searchIconPictureBox;
+ private PictureBox searchIconPictureBox;
+ private Panel sidebarMediaPanel;
+ private Label selectedGameLabel;
+ private Button selectDeviceButton;
+ private Button mountDeviceButton;
+ private Button selectMirrorButton;
+ private RoundButton btnInstalled;
+ private RoundButton btnUpdateAvailable;
+ private RoundButton btnNewerThanList;
+ private RoundButton searchPanel;
+ private Panel notesPanel;
+ private Panel queuePanel;
+ private System.Windows.Forms.Panel webViewPlaceholderPanel;
}
-}
+}
\ No newline at end of file
diff --git a/MainForm.cs b/MainForm.cs
index 1cc0793..223cf82 100755
--- a/MainForm.cs
+++ b/MainForm.cs
@@ -21,6 +21,7 @@ using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
+using System.Configuration;
namespace AndroidSideloader
{
@@ -47,23 +48,18 @@ namespace AndroidSideloader
public static string currremotesimple = "";
#endif
private Task _adbInitTask;
- private static readonly Color ColorInstalled = ColorTranslator.FromHtml("#3c91e6");
- private static readonly Color ColorUpdateAvailable = ColorTranslator.FromHtml("#4daa57");
- private static readonly Color ColorDonateGame = ColorTranslator.FromHtml("#cb9cf2");
+ public static readonly Color ColorInstalled = ColorTranslator.FromHtml("#3c91e6");
+ public static readonly Color ColorUpdateAvailable = ColorTranslator.FromHtml("#4daa57");
+ public static readonly Color ColorDonateGame = ColorTranslator.FromHtml("#cb9cf2");
private static readonly Color ColorError = ColorTranslator.FromHtml("#f52f57");
private Panel _listViewUninstallButton;
private bool _listViewUninstallButtonHovered = false;
- private bool isGalleryView = false;
+ private bool isGalleryView; // Will be set from settings in constructor
private List _galleryDataSource;
private FastGalleryPanel _fastGallery;
private const int TILE_WIDTH = 180;
private const int TILE_HEIGHT = 125;
private const int TILE_SPACING = 10;
- private const int EM_SETMARGINS = 0xD3;
- private const int EC_LEFTMARGIN = 0x0001;
- private const int EC_RIGHTMARGIN = 0x0002;
- [DllImport("user32.dll", CharSet = CharSet.Auto)]
- private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
private string freeSpaceText = "";
private string freeSpaceTextDetailed = "";
private int _questStorageProgress = 0;
@@ -92,12 +88,24 @@ namespace AndroidSideloader
storedIpPath = Path.Combine(Environment.CurrentDirectory, "platform-tools", "StoredIP.txt");
aaptPath = Path.Combine(Environment.CurrentDirectory, "platform-tools", "aapt.exe");
InitializeComponent();
+ InitializeModernPanels(); // Initialize modern rounded panels for notes and queue
Logger.Initialize();
InitializeTimeReferences();
CheckCommandLineArguments();
- CreateSearchIcon();
- searchTextBox.HandleCreated += (s, e) => ApplySearchTextMargins();
+ // Load user's preferred view from settings
+ isGalleryView = settings.UseGalleryView;
+
+ // Always start with ListView visible so selections work properly
+ // We'll switch to gallery view after initListView completes if needed
+ gamesListView.Visible = true;
+ gamesGalleryView.Visible = false;
+ btnViewToggle.Text = isGalleryView ? "LIST" : "GALLERY";
+
+ favoriteGame.Renderer = new CenteredMenuRenderer();
+
+ // Set initial wireless ADB button text based on current state
+ UpdateWirelessADBButtonText();
_debounceTimer = new System.Windows.Forms.Timer { Interval = 100, Enabled = false };
_debounceTimer.Tick += async (sender, e) => await RunSearch();
@@ -107,10 +115,7 @@ namespace AndroidSideloader
lvwColumnSorter = new ListViewColumnSorter();
gamesListView.ListViewItemSorter = lvwColumnSorter;
- if (searchTextBox.Visible) { _ = searchTextBox.Focus(); }
-
- this.questInfoPanel.MouseEnter += this.QuestInfoHoverEnter;
- this.questInfoPanel.MouseLeave += this.QuestInfoHoverLeave;
+ SubscribeToHoverEvents(questInfoPanel);
// Create an uninstall button overlay for list view
_listViewUninstallButton = new Panel
@@ -144,9 +149,10 @@ namespace AndroidSideloader
return;
}
- // Check if item is installed (blue or green color)
- bool isInstalled = item.ForeColor.ToArgb() == ColorTranslator.FromHtml("#3c91e6").ToArgb() ||
- item.ForeColor.ToArgb() == ColorTranslator.FromHtml("#4daa57").ToArgb();
+ // Check if item is installed
+ bool isInstalled = item.ForeColor.ToArgb() == ColorInstalled.ToArgb() ||
+ item.ForeColor.ToArgb() == ColorUpdateAvailable.ToArgb() ||
+ item.ForeColor.ToArgb() == ColorDonateGame.ToArgb();
if (!isInstalled)
{
@@ -194,6 +200,16 @@ namespace AndroidSideloader
_listViewUninstallButton.Visible = false;
}
};
+
+ // Set data that apparently can't be set in designer
+ // We do it here so it doesn't get overwritten by designer
+ batteryLevImg.Parent = questStorageProgressBar;
+ batteryLabel.Parent = batteryLevImg;
+ diskLabel.Parent = questStorageProgressBar;
+ questInfoLabel.Parent = questStorageProgressBar;
+
+ // Subscribe to click events to unfocus search text box
+ this.Click += UnfocusSearchTextBox;
}
private void CheckCommandLineArguments()
@@ -363,7 +379,6 @@ namespace AndroidSideloader
etaLabel.Text = String.Empty;
speedLabel.Text = String.Empty;
diskLabel.Text = String.Empty;
- verLabel.Text = Updater.LocalVersion;
settings.MainDir = Environment.CurrentDirectory;
settings.Save();
@@ -426,7 +441,7 @@ namespace AndroidSideloader
}
DialogResult dialogResult = FlexibleMessageBox.Show(Program.form,
- $"Sideloader crashed during your last use.\nPress OK if you'd like to send us your crash log.\n\n NOTE: THIS CAN TAKE UP TO 30 SECONDS.",
+ $"Sideloader crashed during your last use.\nPress OK if you'd like to send us your crash log.\n\nNOTE: THIS CAN TAKE UP TO 30 SECONDS.",
"Crash Detected", MessageBoxButtons.OKCancel);
if (dialogResult == DialogResult.OK)
@@ -460,13 +475,15 @@ namespace AndroidSideloader
}
}
+ webView21.Visible = settings.TrailersEnabled;
+
// Continue with Form1_Shown
this.Form1_Shown(sender, e);
}
private async void Form1_Shown(object sender, EventArgs e)
{
- searchTextBox.Enabled = false;
+ //searchTextBox.Enabled = false;
// Disclaimer thread
new Thread(() =>
@@ -550,13 +567,12 @@ namespace AndroidSideloader
}
if (isOffline)
{
- lblMirror.Text = " Offline Mode";
remotesList.Size = System.Drawing.Size.Empty;
_ = Logger.Log($"Using Offline Mode");
}
if (settings.NodeviceMode)
{
- btnNoDevice.Text = "Enable Sideloading";
+ btnNoDevice.Text = "ENABLE SIDELOADING";
}
progressBar.Style = ProgressBarStyle.Marquee;
@@ -664,7 +680,7 @@ namespace AndroidSideloader
changeTitle("Updating Game Notes...");
SideloaderRCLONE.UpdateGameNotes(currentRemote);
- changeTitle("Updating Game Thumbnails (This may take a minute or two)...");
+ changeTitle("Updating Game Thumbnails...");
SideloaderRCLONE.UpdateGamePhotos(currentRemote);
SideloaderRCLONE.UpdateNouns(currentRemote);
@@ -705,7 +721,6 @@ namespace AndroidSideloader
Task.Run(() => listAppsBtn())
);
- downloadInstallGameButton.Enabled = true;
isLoading = false;
// Initialize list view
@@ -732,7 +747,6 @@ namespace AndroidSideloader
if (isOffline)
{
- lblMirror.Text = " Offline Mode";
remotesList.Size = System.Drawing.Size.Empty;
_ = Logger.Log($"Using Offline Mode");
}
@@ -750,50 +764,24 @@ namespace AndroidSideloader
keyheld = false;
}
- public async void changeTitle(string txt, bool reset = true)
+ public async void changeTitle(string txt, bool reset = false)
{
try
{
- if (ProgressText.IsDisposed)
- {
- return;
- }
+ string titleSuffix = string.IsNullOrWhiteSpace(txt) ? "" : " | " + txt;
+ this.Invoke(() => { Text = "Rookie Sideloader " + Updater.LocalVersion + titleSuffix; });
- this.Invoke(() => { oldTitle = txt; Text = "Rookie Sideloader v" + Updater.LocalVersion + " | " + txt; });
- ProgressText.Invoke(() =>
- {
- if (!ProgressText.IsDisposed)
- {
- var states = new[] { "Sideloading", "Installing", "Copying", "Comparing", "Deleting" };
- if (ProgressText.ForeColor == Color.LimeGreen)
- {
- ProgressText.ForeColor = Color.White;
- }
- if (states.Any(txt.Contains))
- {
- ProgressText.ForeColor = Color.LimeGreen;
- }
- ProgressText.Text = txt;
- }
- });
if (!reset)
{
return;
}
await Task.Delay(TimeSpan.FromSeconds(5));
- this.Invoke(() => { Text = "Rookie Sideloader v" + Updater.LocalVersion + " | " + oldTitle; });
- ProgressText.Invoke(() =>
- {
- if (!ProgressText.IsDisposed)
- {
- ProgressText.Text = oldTitle;
- }
- });
+ // Reset to base title without any status message
+ this.Invoke(() => { Text = "Rookie Sideloader " + Updater.LocalVersion; });
}
catch
{
-
}
}
@@ -839,7 +827,7 @@ namespace AndroidSideloader
public void ShowPrcOutput(ProcessOutput prcout)
{
- string message = $"Output: {prcout.Output}";
+ string message = $"{prcout.Output}";
if (prcout.Error.Length != 0)
{
message += $"\nError: {prcout.Error}";
@@ -896,9 +884,9 @@ namespace AndroidSideloader
battery = Utilities.StringUtilities.RemoveEverythingBeforeFirst(battery, "level:");
battery = Utilities.StringUtilities.RemoveEverythingAfterFirst(battery, "\n");
battery = Utilities.StringUtilities.KeepOnlyNumbers(battery);
- batteryLabel.Text = battery + "%";
+ batteryLabel.Text = battery;
- //UpdateQuestInfoPanel();
+ UpdateQuestInfoPanel();
return devicesComboBox.SelectedIndex;
}
@@ -935,7 +923,7 @@ namespace AndroidSideloader
{
progressBar.Style = ProgressBarStyle.Marquee;
string path = dialog.FileName;
- changeTitle($"Copying {path} obb to device...");
+ changeTitle($"Copying {path} OBB to device...");
Thread t1 = new Thread(() =>
{
output += output += ADB.CopyOBB(path);
@@ -953,7 +941,7 @@ namespace AndroidSideloader
showAvailableSpace();
ShowPrcOutput(output);
- Program.form.changeTitle(String.Empty);
+ Program.form.changeTitle("");
}
}
@@ -1037,22 +1025,43 @@ namespace AndroidSideloader
{
string deviceId = string.Empty;
int index = -1;
- devicesComboBox.Invoke(() => { index = devicesComboBox.SelectedIndex; });
+ int itemCount = 0;
+
+ devicesComboBox.Invoke(() =>
+ {
+ index = devicesComboBox.SelectedIndex;
+ itemCount = devicesComboBox.Items.Count;
+ });
+
if (index != -1)
{
devicesComboBox.Invoke(() => { deviceId = devicesComboBox.SelectedItem.ToString(); });
}
+ else if (itemCount > 1)
+ {
+ // Multiple devices but none selected - prompt user
+ deviceId = ShowDeviceSelector("Multiple devices detected - Select a Device");
+ }
+ else if (itemCount == 1)
+ {
+ // Only one device, select it automatically
+ devicesComboBox.Invoke(() =>
+ {
+ devicesComboBox.SelectedIndex = 0;
+ deviceId = devicesComboBox.SelectedItem.ToString();
+ });
+ }
- return deviceId;
+ return deviceId ?? string.Empty;
}
public static string taa = String.Empty;
private async void backupadbbutton_Click(object sender, EventArgs e)
{
- if (m_combo.SelectedIndex == -1)
+ string selectedApp = ShowInstalledAppSelector("Select an app to backup with ADB");
+ if (selectedApp == null)
{
- notify("Please select an App from the Dropdown");
return;
}
@@ -1078,7 +1087,7 @@ namespace AndroidSideloader
}));
_ = Directory.CreateDirectory(CurrBackups);
- string GameName = m_combo.SelectedItem.ToString();
+ string GameName = selectedApp;
string packageName = Sideloader.gameNameToPackageName(GameName);
string InstalledVersionCode = ADB.RunAdbCommandToString($"shell \"dumpsys package {packageName} | grep versionCode -F\"").Output;
@@ -1086,7 +1095,7 @@ namespace AndroidSideloader
_ = FlexibleMessageBox.Show(Program.form, "Click OK on this Message...\r\nThen on your Quest, Unlock your device and confirm the backup operation by clicking on 'Back Up My Data'");
output = ADB.RunAdbCommandToString($"adb backup -f \"{CurrBackups}\\{packageName}.ab\" {packageName}").Output;
- changeTitle(" \n\n");
+ changeTitle("");
}
private async void backupbutton_Click(object sender, EventArgs e)
@@ -1140,7 +1149,7 @@ namespace AndroidSideloader
changeTitle("Backing up Game Data in SD/Android/data...");
}
ShowPrcOutput(output);
- changeTitle(" \n\n");
+ changeTitle("");
}
private async void restorebutton_Click(object sender, EventArgs e)
@@ -1283,12 +1292,13 @@ namespace AndroidSideloader
return;
}
- if (m_combo.SelectedIndex == -1)
+ string selectedApp = ShowInstalledAppSelector("Select an app to share/upload");
+ if (selectedApp == null)
{
- notify("Please select an App from the Dropdown");
return;
}
- DialogResult dialogResult1 = FlexibleMessageBox.Show(Program.form, $"Do you want to upload {m_combo.SelectedItem} now?", "Upload app?", MessageBoxButtons.YesNo);
+
+ DialogResult dialogResult1 = FlexibleMessageBox.Show(Program.form, $"Do you want to upload {selectedApp} now?", "Upload app?", MessageBoxButtons.YesNo);
if (dialogResult1 == DialogResult.No)
{
return;
@@ -1317,7 +1327,7 @@ namespace AndroidSideloader
isworking = true;
progressBar.Style = ProgressBarStyle.Marquee;
string HWID = SideloaderUtilities.UUID();
- string GameName = m_combo.SelectedItem.ToString();
+ string GameName = selectedApp;
string packageName = Sideloader.gameNameToPackageName(GameName);
string InstalledVersionCode = ADB.RunAdbCommandToString($"shell \"dumpsys package {packageName} | grep versionCode -F\"").Output;
InstalledVersionCode = Utilities.StringUtilities.RemoveEverythingBeforeFirst(InstalledVersionCode, "versionCode=");
@@ -1357,7 +1367,7 @@ namespace AndroidSideloader
await Task.Delay(100);
}
- changeTitle("Extracting obb if it exists....");
+ changeTitle("Extracting OBB if it exists....");
Thread t2 = new Thread(() =>
{
output += ADB.RunAdbCommandToString($"pull \"/sdcard/Android/obb/{packageName}\" \"{settings.MainDir}\\{packageName}\"");
@@ -1391,14 +1401,14 @@ namespace AndroidSideloader
await Task.Delay(100);
}
- changeTitle("Uploading to server, you can continue to use Rookie while it uploads in the background.");
+ changeTitle("Uploading to server, you can continue to use Rookie while it uploads.");
ULLabel.Visible = true;
isworking = false;
isuploading = true;
Thread t3 = new Thread(() =>
{
string currentlyUploading = GameName;
- changeTitle("Uploading to server, you can continue to use Rookie while it uploads in the background.");
+ changeTitle("Uploading to server, you can continue to use Rookie while it uploads.");
// Get size of pending zip upload and write to text file
long zipSize = new FileInfo($"{settings.MainDir}\\{gameZipName}").Length;
@@ -1426,7 +1436,7 @@ namespace AndroidSideloader
await Task.Delay(100);
}
- changeTitle(" \n\n");
+ changeTitle("");
isuploading = false;
ULLabel.Visible = false;
}
@@ -1443,6 +1453,12 @@ namespace AndroidSideloader
private async void uninstallAppButton_Click(object sender, EventArgs e)
{
+ string selectedApp = ShowInstalledAppSelector("Select an app to uninstall");
+ if (selectedApp == null)
+ {
+ return;
+ }
+
if (!settings.CustomBackupDir)
{
backupFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), $"Rookie Backups");
@@ -1451,13 +1467,9 @@ namespace AndroidSideloader
{
backupFolder = Path.Combine((settings.BackupDir), $"Rookie Backups");
}
+
string packagename;
- if (m_combo.SelectedIndex == -1)
- {
- _ = FlexibleMessageBox.Show(Program.form, "Please select an app first");
- return;
- }
- string GameName = m_combo.SelectedItem.ToString();
+ string GameName = selectedApp;
DialogResult dialogresult = FlexibleMessageBox.Show($"Are you sure you want to uninstall {GameName}?", "Proceed with uninstall?", MessageBoxButtons.YesNo);
if (dialogresult == DialogResult.No)
{
@@ -1485,10 +1497,8 @@ namespace AndroidSideloader
ShowPrcOutput(output);
showAvailableSpace();
progressBar.Style = ProgressBarStyle.Continuous;
- m_combo.Items.RemoveAt(m_combo.SelectedIndex);
}
-
private async void copyBulkObbButton_Click(object sender, EventArgs e)
{
FolderSelectDialog dialog = new FolderSelectDialog
@@ -1525,7 +1535,7 @@ namespace AndroidSideloader
_ = await CheckForDevice();
changeTitlebarToDevice();
showAvailableSpace();
- changeTitle("Device now detected... refreshing update list.");
+ changeTitle("Device detected... refreshing update list.");
listAppsBtn();
initListView(false);
}
@@ -1576,13 +1586,15 @@ namespace AndroidSideloader
await Task.Delay(100);
}
- Program.form.changeTitle(String.Empty);
+ Program.form.changeTitle("");
settings.CurrPckg = dir;
settings.Save();
}
- Program.form.changeTitle(String.Empty);
+
+ Program.form.changeTitle("");
string extension = Path.GetExtension(data);
string[] files = Directory.GetFiles(data);
+
foreach (string file2 in files)
{
if (File.Exists(file2))
@@ -1608,7 +1620,7 @@ namespace AndroidSideloader
};
t3.Tick += timer_Tick4;
t3.Start();
- Program.form.changeTitle($"Sideloading apk ({filename})");
+ Program.form.changeTitle($"Sideloading APK ({filename})");
Thread t2 = new Thread(() =>
{
@@ -1626,8 +1638,8 @@ namespace AndroidSideloader
t3.Stop();
if (Directory.Exists($"{pathname}\\{cmdout}"))
{
- _ = Logger.Log($"Copying obb folder to device- {cmdout}");
- Program.form.changeTitle($"Copying obb folder to device...");
+ _ = Logger.Log($"Copying OBB folder to device- {cmdout}");
+ Program.form.changeTitle($"Copying OBB folder to device...");
Thread t1 = new Thread(() =>
{
if (!string.IsNullOrEmpty(cmdout))
@@ -1736,8 +1748,7 @@ namespace AndroidSideloader
await Task.Delay(100);
}
- changeTitle(" \n\n");
-
+ changeTitle("");
}
}
else
@@ -1779,8 +1790,8 @@ namespace AndroidSideloader
if (Directory.Exists($"{pathname}\\{cmdout}"))
{
- _ = Logger.Log($"Copying obb folder to device- {cmdout}");
- Program.form.changeTitle($"Copying obb folder to device...");
+ _ = Logger.Log($"Copying OBB folder to device- {cmdout}");
+ Program.form.changeTitle($"Copying OBB folder to device...");
Thread t2 = new Thread(() =>
{
if (!string.IsNullOrEmpty(cmdout))
@@ -1798,7 +1809,7 @@ namespace AndroidSideloader
await Task.Delay(100);
}
- changeTitle(" \n\n");
+ changeTitle("");
}
}
}
@@ -1821,8 +1832,8 @@ namespace AndroidSideloader
{
IsBackground = true
};
- _ = Logger.Log($"Copying obb folder to device- {path}");
- Program.form.changeTitle($"Copying obb folder to device ({filename})");
+ _ = Logger.Log($"Copying OBB folder to device- {path}");
+ Program.form.changeTitle($"Copying OBB folder to device ({filename})");
t1.Start();
while (t1.IsAlive)
@@ -1831,7 +1842,7 @@ namespace AndroidSideloader
}
Directory.Delete(foldername, true);
- changeTitle(" \n\n");
+ changeTitle("");
}
// BMBF Zip extraction then push to BMBF song folder on Quest.
else if (extension == ".zip" && settings.BMBFChecked)
@@ -1881,7 +1892,7 @@ namespace AndroidSideloader
await Task.Delay(100);
}
- changeTitle(" \n\n");
+ changeTitle("");
}
}
}
@@ -1904,7 +1915,7 @@ namespace AndroidSideloader
}
DragDropLbl.Visible = true;
- DragDropLbl.Text = "Drag apk or obb";
+ DragDropLbl.Text = "Drag APK or OBB";
changeTitle(DragDropLbl.Text);
}
@@ -1913,7 +1924,7 @@ namespace AndroidSideloader
DragDropLbl.Visible = false;
DragDropLbl.Text = String.Empty;
- changeTitle(" \n\n");
+ changeTitle("");
}
private List newGamesList = new List();
@@ -2220,7 +2231,7 @@ namespace AndroidSideloader
if (either && !updatesNotified && !noAppCheck)
{
- changeTitle("\n\n");
+ changeTitle("");
DonorsListViewForm donorForm = new DonorsListViewForm();
_ = donorForm.ShowDialog(this);
_ = Focus();
@@ -2230,12 +2241,14 @@ namespace AndroidSideloader
this.Invoke(() =>
{
changeTitle("Populating update list...\n\n");
- lblUpToDate.Text = $"[{upToDateCount}] INSTALLED";
- lblUpToDate.ForeColor = ColorInstalled;
- lblUpdateAvailable.Text = $"[{updateAvailableCount}] UPDATE AVAILABLE";
- lblUpdateAvailable.ForeColor = ColorUpdateAvailable;
- lblNeedsDonate.Text = $"[{newerThanListCount}] NEWER THAN LIST";
- lblNeedsDonate.ForeColor = ColorDonateGame;
+ int installedTotal = upToDateCount + updateAvailableCount;
+ btnInstalled.Text = $"{installedTotal} INSTALLED";
+ btnInstalled.ForeColor = ColorInstalled;
+ if (updateAvailableCount != 1) btnUpdateAvailable.Text = $"{updateAvailableCount} UPDATES AVAILABLE";
+ else btnUpdateAvailable.Text = $"{updateAvailableCount} UPDATE AVAILABLE";
+ btnUpdateAvailable.ForeColor = ColorUpdateAvailable;
+ btnNewerThanList.Text = $"{newerThanListCount} NEWER THAN LIST";
+ btnNewerThanList.ForeColor = ColorDonateGame;
ListViewItem[] arr = GameList.ToArray();
gamesListView.BeginUpdate();
@@ -2247,7 +2260,7 @@ namespace AndroidSideloader
Logger.Log($"UI updated in {sw.ElapsedMilliseconds}ms");
sw.Restart();
- changeTitle("\n\n");
+ changeTitle("");
if (!_allItemsInitialized)
{
@@ -2283,11 +2296,19 @@ namespace AndroidSideloader
loaded = true;
Logger.Log($"initListView total completed in {sw.ElapsedMilliseconds}ms");
- if (isGalleryView && gamesGalleryView.Visible)
+ // Now that ListView is fully populated and _allItems is initialized,
+ // switch to the user's preferred view
+ this.Invoke(() =>
{
- _galleryDataSource = null;
- PopulateGalleryView();
- }
+ if (isGalleryView)
+ {
+ // Now it's safe to switch - ListView has been visible and populated
+ gamesListView.Visible = false;
+ gamesGalleryView.Visible = true;
+ _galleryDataSource = null;
+ PopulateGalleryView();
+ }
+ });
}
private async Task ProcessNewApps(List newGamesList, List blacklistItems)
@@ -2309,7 +2330,7 @@ namespace AndroidSideloader
{
try
{
- changeTitle("Unrecognized App Found. Downloading APK to take a closer look. (This may take a minute)");
+ changeTitle("Unrecognized App found. Downloading APK to take a closer look. (This may take a minute)");
bool onapplist = false;
string NewApp = settings.NonAppPackages + "\n" + settings.AppPackages;
if (NewApp.Contains(newGamesToUpload))
@@ -2387,7 +2408,7 @@ namespace AndroidSideloader
private static readonly HttpClient HttpClient = new HttpClient();
public static async void doUpload()
{
- Program.form.changeTitle("Uploading to server, you can continue to use Rookie while it uploads in the background.");
+ Program.form.changeTitle("Uploading to server, you can continue to use Rookie while it uploads.");
Program.form.ULLabel.Visible = true;
isworking = true;
string deviceCodeName = ADB.RunAdbCommandToString("shell getprop ro.product.device").Output.ToLower().Trim();
@@ -2433,7 +2454,7 @@ namespace AndroidSideloader
{
Directory.Delete($"{settings.MainDir}\\{game.Pckgcommand}", true);
}
- Program.form.changeTitle("Uploading to server, you may continue to use Rookie while it uploads.");
+ Program.form.changeTitle("Uploading to server, you can continue to use Rookie while it uploads.");
// Get size of pending zip upload and write to text file
long zipSize = new FileInfo($"{settings.MainDir}\\{gameZipName}").Length;
@@ -2475,7 +2496,7 @@ namespace AndroidSideloader
isworking = false;
isuploading = false;
Program.form.ULLabel.Visible = false;
- Program.form.changeTitle(" \n\n");
+ Program.form.changeTitle("");
}
else
{
@@ -2532,7 +2553,7 @@ namespace AndroidSideloader
await Task.Delay(100);
}
- changeTitle("Extracting obb if it exists....");
+ changeTitle("Extracting OBB if it exists....");
Thread t2 = new Thread(() =>
{
_ = ADB.RunAdbCommandToString($"pull \"/sdcard/Android/obb/{packagename}\" \"{settings.MainDir}\\{packagename}\"");
@@ -2700,45 +2721,119 @@ namespace AndroidSideloader
ToggleContainer(otherContainer, otherDrop);
}
- private void ToggleContainer(Panel containerToToggle, Button dropButton)
+ private async void AnimateContainerHeight(Panel container, bool expand)
{
- // Collapse all other containers
- CollapseAllContainers(containerToToggle);
+ // Disable AutoSize during animation
+ container.AutoSize = false;
- // Toggle the clicked container
- bool isExpanding = !containerToToggle.Visible;
- containerToToggle.Visible = isExpanding;
+ // Store the target height before any changes
+ int targetHeight = expand ? container.PreferredSize.Height : 0;
+ int startHeight = expand ? 0 : container.Height;
+
+ // For collapsing: hide immediately if already at 0
+ if (!expand && container.Height == 0)
+ {
+ container.Visible = false;
+ container.AutoSize = true;
+ return;
+ }
+
+ // Set height before making visible to prevent flicker on expand
+ container.Height = startHeight;
+
+ // Only show if expanding (collapsing container is already visible)
+ if (expand)
+ {
+ container.Visible = true;
+ }
+
+ // Suspend layout to prevent child controls from flickering
+ container.SuspendLayout();
+
+ // Stopwatch for consistent timing, 1.5ms per pixel height
+ int durationMs = (int)Math.Round(container.PreferredSize.Height * 1.5);
+ var stopwatch = Stopwatch.StartNew();
+
+ while (stopwatch.ElapsedMilliseconds < durationMs)
+ {
+ float progress = (float)stopwatch.ElapsedMilliseconds / durationMs;
+ progress = Math.Min(1f, progress);
+
+ // Ease-out curve
+ float easedProgress = 1f - (1f - progress) * (1f - progress);
+
+ int newHeight = (int)(startHeight + (targetHeight - startHeight) * easedProgress);
+ container.Height = Math.Max(0, newHeight);
+
+ // Yield to UI thread, but don't rely on delay accuracy
+ await Task.Delay(1);
+ }
+
+ // Ensure final state
+ container.Height = targetHeight;
+
+ // Resume layout before hiding to ensure clean state
+ container.ResumeLayout(false);
+
+ if (!expand)
+ {
+ container.Visible = false;
+ }
+
+ container.AutoSize = true;
}
- private void CollapseAllContainers(Panel exceptThis = null)
+ private void CollapseAllContainersInstant(Panel exceptThis = null)
{
var containers = new[]
{
- deviceDropContainer,
- sideloadContainer,
- installedAppsMenuContainer,
- backupContainer,
- otherContainer
- };
+ deviceDropContainer,
+ sideloadContainer,
+ installedAppsMenuContainer,
+ backupContainer,
+ otherContainer
+ };
- var buttons = new[]
+ foreach (var container in containers)
{
- deviceDrop,
- sideloadDrop,
- installedAppsMenu,
- backupDrop,
- otherDrop
- };
-
- for (int i = 0; i < containers.Length; i++)
- {
- if (containers[i] != exceptThis && containers[i].Visible)
+ if (container != exceptThis && container.Visible)
{
- containers[i].Visible = false;
+ // Hide before any layout changes to prevent flicker
+ container.Visible = false;
+ container.SuspendLayout();
+ container.AutoSize = false;
+ container.Height = 0;
+ container.ResumeLayout(false);
+ container.AutoSize = true;
}
}
}
+ private void ToggleContainer(Panel containerToToggle, Button dropButton)
+ {
+ // Collapse all other containers instantly
+ CollapseAllContainersInstant(containerToToggle);
+
+ // Check if we're collapsing (container is currently visible and has height)
+ bool isExpanding = !containerToToggle.Visible || containerToToggle.Height == 0;
+
+ if (isExpanding)
+ {
+ // Animate expansion
+ AnimateContainerHeight(containerToToggle, true);
+ }
+ else
+ {
+ // Close instantly without animation - hide before any layout changes
+ containerToToggle.Visible = false;
+ containerToToggle.SuspendLayout();
+ containerToToggle.AutoSize = false;
+ containerToToggle.Height = 0;
+ containerToToggle.ResumeLayout(false);
+ containerToToggle.AutoSize = true;
+ }
+ }
+
private void settingsButton_Click(object sender, EventArgs e)
{
SettingsForm settingsForm = new SettingsForm();
@@ -2749,85 +2844,26 @@ namespace AndroidSideloader
{
string about = $@"Version: {Updater.LocalVersion}
- - Software orignally coded by rookie.wtf
- - Thanks to the VRP Mod Staff, data team, and anyone else we missed!
- - Thanks to VRP staff of the present and past: fenopy, Maxine, JarJarBlinkz
- pmow, SytheZN, Roma/Rookie, Flow, Ivan, Kaladin, HarryEffinPotter, John, Sam Hoque
+Credits & Acknowledgements
+-----------------------------------------
+• Software originally developed by: rookie.wtf
+• Special thanks to the VRP Mod Staff, Data Team, and all contributors
+• VRP Staff (past & present):
+ fenopy, Maxine, JarJarBlinkz, pmow, SytheZN, Roma/Rookie,
+ Flow, Ivan, Kaladin, HarryEffinPotter, John, Sam Hoque, JP
- - Additional Thanks and Credits:
- - -- rclone https://rclone.org/
- - -- 7zip https://www.7-zip.org/
- - -- ErikE: https://stackoverflow.com/users/57611/erike
- - -- Serge Weinstock (SergeUtils)
- - -- Mike Gold https://www.c-sharpcorner.com/members/mike-gold2
- ";
+Additional Thanks & Resources
+-----------------------------------------
+• rclone - https://rclone.org
+• 7-Zip - https://www.7-zip.org
+• ErikE - https://stackoverflow.com/users/57611/erike
+• Serge Weinstock (SergeUtils)
+• Mike Gold - https://www.c-sharpcorner.com/members/mike-gold2
+";
_ = FlexibleMessageBox.Show(Program.form, about);
}
- private async void ADBWirelessEnable_Click(object sender, EventArgs e)
- {
- bool Manual;
- DialogResult res = FlexibleMessageBox.Show(Program.form, "Do you want Rookie to find the IP or enter it manually\nYes = Automatic\nNo = Manual", "Automatic/Manual", MessageBoxButtons.YesNo);
- Manual = res == DialogResult.No;
- if (Manual)
- {
- adbCmd_CommandBox.Visible = true;
- adbCmd_CommandBox.Clear();
- adbCmd_Label.Visible = true;
- adbCmd_Label.Text = "Enter your Quest IP Address";
- adbCmd_background.Visible = true;
- manualIP = true;
- _ = adbCmd_CommandBox.Focus();
- Program.form.changeTitle("Attempting manual connection...", false);
- }
- else
- {
- DialogResult dialogResult = FlexibleMessageBox.Show(Program.form, "Make sure your Quest is plugged in VIA USB then press OK, if you need a moment press Cancel and come back when you're ready.", "Connect Quest now.", MessageBoxButtons.OKCancel);
- if (dialogResult == DialogResult.Cancel)
- {
- return;
- }
-
- _ = ADB.RunAdbCommandToString("devices");
- _ = ADB.RunAdbCommandToString("tcpip 5555");
-
- _ = FlexibleMessageBox.Show(Program.form, "Press OK to get your Quest's local IP address.", "Obtain local IP address", MessageBoxButtons.OKCancel);
- await Task.Delay(1000);
- string input = ADB.RunAdbCommandToString("shell ip route").Output;
-
- settings.WirelessADB = true;
- settings.Save();
- _ = new string[] { String.Empty };
- string[] strArrayOne = input.Split(' ');
- if (strArrayOne[0].Length > 7)
- {
- string IPaddr = strArrayOne[8];
- string IPcmnd = "connect " + IPaddr + ":5555";
- _ = FlexibleMessageBox.Show(Program.form, $"Your Quest's local IP address is: {IPaddr}\n\nPlease disconnect your Quest then wait 2 seconds.\nOnce it is disconnected hit OK", "", MessageBoxButtons.OK);
- await Task.Delay(2000);
- _ = ADB.RunAdbCommandToString(IPcmnd);
- _ = await Program.form.CheckForDevice();
- Program.form.changeTitlebarToDevice();
- Program.form.showAvailableSpace();
- settings.IPAddress = IPcmnd;
- settings.Save();
- try
- {
- File.WriteAllText(storedIpPath, IPcmnd);
- }
- catch (Exception ex) { Logger.Log($"Unable to write to StoredIP.txt due to {ex.Message}", LogLevel.ERROR); }
- ADB.wirelessadbON = true;
- _ = ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_available 1");
- _ = ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_enabled 1");
- }
- else
- {
- _ = FlexibleMessageBox.Show(Program.form, "No device connected! Connect quest via USB and start again!");
- }
- }
- }
-
private async void listApkButton_Click(object sender, EventArgs e)
{
string titleMessage = "Refreshing connected devices, installed apps and update list...";
@@ -2870,7 +2906,7 @@ namespace AndroidSideloader
initListView(false);
isLoading = false;
- changeTitle(" \n\n");
+ changeTitle("");
}
private static readonly HttpClient client = new HttpClient();
@@ -2980,7 +3016,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
if (gamesListView.SelectedItems.Count == 0)
{
progressBar.Style = ProgressBarStyle.Continuous;
- changeTitle("You must select a game from the Game List!");
+ changeTitle("You must select a game from the game list!");
return;
}
string namebox = gamesListView.SelectedItems[0].ToString();
@@ -3151,7 +3187,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
t1.IsBackground = true;
t1.Start();
- changeTitle("Downloading game " + gameName, false);
+ changeTitle("Downloading game " + gameName);
speedLabel.Text = "Starting download...";
etaLabel.Text = "Please wait...";
@@ -3221,18 +3257,18 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
if (removedownloading)
{
- changeTitle("Keep game files?", false);
+ changeTitle("Keep game files?");
try
{
cleanupActiveDownloadStatus();
DialogResult res = FlexibleMessageBox.Show(
- $"{gameName} already has some downloaded files, do you want to delete them?\n\nClick NO to keep the files if you wish to resume your download later.",
+ $"{gameName} exists in destination directory, do you want to delete it?\n\nClick NO to keep the files if you wish to resume your download later.",
"Delete Temporary Files?", MessageBoxButtons.YesNo);
if (res == DialogResult.Yes)
{
- changeTitle("Deleting game files", false);
+ changeTitle("Deleting game files");
if (UsingPublicConfig)
{
if (Directory.Exists($"{settings.DownloadDir}\\{gameNameHash}"))
@@ -3302,7 +3338,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
}));
try
{
- changeTitle("Extracting " + gameName, false);
+ changeTitle("Extracting " + gameName);
Zip.ExtractFile($"{settings.DownloadDir}\\{gameNameHash}\\{gameNameHash}.7z.001", $"{settings.DownloadDir}", PublicConfigFile.Password);
Program.form.changeTitle("");
}
@@ -3339,7 +3375,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
quotaTries = 0;
progressBar.Value = 0;
progressBar.Style = ProgressBarStyle.Continuous;
- changeTitle("Installing game apk " + gameName, false);
+ changeTitle("Installing game APK " + gameName);
etaLabel.Text = "ETA: Wait for install...";
speedLabel.Text = "DLS: Finished";
if (File.Exists(Path.Combine(settings.DownloadDir, gameName, "install.txt")))
@@ -3364,7 +3400,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
Thread installtxtThread = new Thread(() =>
{
output += Sideloader.RunADBCommandsFromFile(installTxtPath);
- changeTitle(" \n\n");
+ changeTitle("");
});
installtxtThread.Start();
while (installtxtThread.IsAlive)
@@ -3396,7 +3432,8 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
t.Start();
Thread apkThread = new Thread(() =>
{
- Program.form.changeTitle($"Sideloading apk...");
+ Program.form.changeTitle($"Sideloading APK...");
+ etaLabel.Text = "Sideloading APK...";
output += ADB.Sideload(apkFile, packagename);
})
{
@@ -3415,7 +3452,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
deleteOBB(packagename);
Thread obbThread = new Thread(() =>
{
- changeTitle($"Copying {packagename} obb to device...");
+ changeTitle($"Copying {packagename} OBB to device...");
ADB.RunAdbCommandToString($"shell mkdir \"/sdcard/Android/obb/{packagename}\"");
output += ADB.RunAdbCommandToString($"push \"{settings.DownloadDir}\\{gameName}\\{packagename}\" \"/sdcard/Android/obb\"");
Program.form.changeTitle("");
@@ -3450,10 +3487,10 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
}
if (settings.DeleteAllAfterInstall)
{
- changeTitle("Deleting game files", false);
+ changeTitle("Deleting game files");
try { Directory.Delete(settings.DownloadDir + "\\" + gameName, true); } catch (Exception ex) { _ = FlexibleMessageBox.Show(Program.form, $"Error deleting game files: {ex.Message}"); }
}
- //Remove current game
+ // Remove current game
cleanupActiveDownloadStatus();
}
}
@@ -3486,11 +3523,10 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
progressBar.Style = ProgressBarStyle.Continuous;
etaLabel.Text = "ETA: Finished Queue";
speedLabel.Text = "DLS: Finished Queue";
- ProgressText.Text = "";
gamesAreDownloading = false;
isinstalling = false;
- changeTitle("\n\n");
+ changeTitle("");
}
}
}
@@ -3516,7 +3552,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
try
{
- changeTitle("Comparing obbs...");
+ changeTitle("Comparing OBBs...");
Logger.Log("Comparing OBBs");
DirectoryInfo localFolder = new DirectoryInfo(localFolderPath);
@@ -3539,8 +3575,8 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
}
catch (FormatException ex)
{
- _ = FlexibleMessageBox.Show(Program.form, "The OBB Folder on the Quest seems to not exist or be empty\nPlease redownload the game or sideload the obb manually.", "OBB Size Undetectable!", MessageBoxButtons.OK);
- Logger.Log($"Unable to compare obbs with the exception: {ex.Message}", LogLevel.ERROR);
+ _ = FlexibleMessageBox.Show(Program.form, "The OBB Folder on the Quest seems to not exist or be empty\nPlease redownload the game or sideload the OBB manually.", "OBB Size Undetectable!", MessageBoxButtons.OK);
+ Logger.Log($"Unable to compare OBBs with the exception: {ex.Message}", LogLevel.ERROR);
FlexibleMessageBox.Show($"Error comparing OBB sizes: {ex.Message}");
return false;
}
@@ -3580,7 +3616,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
await Task.Run(() =>
{
- changeTitle($"Copying {packageName} obb to device...");
+ changeTitle($"Copying {packageName} OBB to device...");
output += ADB.RunAdbCommandToString($"push \"{obbFolderPath}\" \"{OBBFolderPath}\"");
Program.form.changeTitle("");
});
@@ -3606,11 +3642,10 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
progressBar.Style = ProgressBarStyle.Continuous;
etaLabel.Text = "ETA: Finished Queue";
speedLabel.Text = "DLS: Finished Queue";
- ProgressText.Text = string.Empty;
gamesAreDownloading = false;
isinstalling = false;
- changeTitle(" \n\n");
+ changeTitle("");
}
static long localFolderSize(DirectoryInfo localFolder)
@@ -3669,7 +3704,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
_ = ADB.RunAdbCommandToString("devices");
_ = ADB.RunAdbCommandToString($"pull /sdcard/Android/data/{CurrPCKG} \"{Environment.CurrentDirectory}\"");
_ = Sideloader.UninstallGame(CurrPCKG);
- changeTitle("Reinstalling Game");
+ changeTitle("Reinstalling game");
_ = ADB.RunAdbCommandToString($"install -g \"{CurrAPK}\"");
_ = ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\{CurrPCKG}\" /sdcard/Android/data/");
@@ -3679,16 +3714,16 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
Directory.Delete(Path.Combine(Environment.CurrentDirectory, CurrPCKG), true);
}
- changeTitle(" \n\n");
+ changeTitle("");
return;
}
else
{
- DialogResult dialogResult2 = FlexibleMessageBox.Show(Program.form, "This install is taking an unusual amount of time, you can keep waiting or cancel the install.\n" +
+ DialogResult dialogResult2 = FlexibleMessageBox.Show(Program.form, "This installation is taking an unusual amount of time, you can keep waiting or abort the installation.\n" +
"Would you like to cancel the installation?", "Cancel install?", MessageBoxButtons.YesNo);
if (dialogResult2 == DialogResult.Yes)
{
- changeTitle("Stopping Install...");
+ changeTitle("Stopping installation...");
_ = ADB.RunAdbCommandToString("kill-server");
_ = ADB.RunAdbCommandToString("devices");
}
@@ -3741,16 +3776,20 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
}
- private async void ADBWirelessDisable_Click(object sender, EventArgs e)
+ private async void ADBWirelessToggle_Click(object sender, EventArgs e)
{
- DialogResult dialogResult = FlexibleMessageBox.Show(Program.form, "Are you sure you want to delete your saved Quest IP address/command?", "Remove saved IP address?", MessageBoxButtons.YesNo);
- if (dialogResult == DialogResult.No)
- {
- _ = FlexibleMessageBox.Show(Program.form, "Saved IP data reset cancelled.");
- return;
- }
- else
+ // Check if wireless ADB is currently enabled
+ bool isWirelessEnabled = File.Exists(storedIpPath) && !string.IsNullOrEmpty(settings.IPAddress);
+
+ if (isWirelessEnabled)
{
+ // Disable wireless ADB
+ DialogResult dialogResult = FlexibleMessageBox.Show(Program.form, "Are you sure you want to disable wireless ADB and remove your saved IP address?", "Disable Wireless ADB?", MessageBoxButtons.YesNo);
+ if (dialogResult == DialogResult.No)
+ {
+ return;
+ }
+
ADB.wirelessadbON = false;
_ = FlexibleMessageBox.Show(Program.form, "Make sure your device is not connected to USB and press OK.");
_ = ADB.RunAdbCommandToString("devices");
@@ -3765,12 +3804,83 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
settings.Save();
_ = Program.form.GetDeviceID();
Program.form.changeTitlebarToDevice();
- _ = FlexibleMessageBox.Show(Program.form, "Relaunch Rookie to complete the process and switch back to USB adb.");
+ _ = FlexibleMessageBox.Show(Program.form, "Wireless ADB disabled. Relaunch Rookie to switch back to USB.");
if (File.Exists(storedIpPath))
{
File.Delete(storedIpPath);
}
}
+ else
+ {
+ // Enable wireless ADB
+ DialogResult res = FlexibleMessageBox.Show(Program.form, "Do you want Rookie to find the IP automatically or enter it manually?\nYes = Automatic\nNo = Manual", "Automatic/Manual", MessageBoxButtons.YesNo);
+ bool manual = res == DialogResult.No;
+
+ if (manual)
+ {
+ adbCmd_CommandBox.Visible = true;
+ adbCmd_CommandBox.Clear();
+ adbCmd_Label.Visible = true;
+ adbCmd_Label.Text = "Enter your Quest IP Address";
+ adbCmd_background.Visible = true;
+ manualIP = true;
+ _ = adbCmd_CommandBox.Focus();
+ Program.form.changeTitle("Attempting manual connection...", true);
+ }
+ else
+ {
+ DialogResult dialogResult = FlexibleMessageBox.Show(Program.form, "Make sure your Quest is plugged in VIA USB then press OK.", "Connect Quest now.", MessageBoxButtons.OKCancel);
+ if (dialogResult == DialogResult.Cancel)
+ {
+ return;
+ }
+
+ _ = ADB.RunAdbCommandToString("devices");
+ _ = ADB.RunAdbCommandToString("tcpip 5555");
+
+ _ = FlexibleMessageBox.Show(Program.form, "Press OK to get your Quest's local IP address.", "Obtain local IP address", MessageBoxButtons.OKCancel);
+ await Task.Delay(1000);
+ string input = ADB.RunAdbCommandToString("shell ip route").Output;
+
+ settings.WirelessADB = true;
+ settings.Save();
+ string[] strArrayOne = input.Split(' ');
+ if (strArrayOne[0].Length > 7)
+ {
+ string IPaddr = strArrayOne[8];
+ string IPcmnd = "connect " + IPaddr + ":5555";
+ _ = FlexibleMessageBox.Show(Program.form, $"Your Quest's local IP address is: {IPaddr}\n\nPlease disconnect your Quest then wait 2 seconds.\nOnce it is disconnected hit OK", "", MessageBoxButtons.OK);
+ await Task.Delay(2000);
+ _ = ADB.RunAdbCommandToString(IPcmnd);
+ _ = await Program.form.CheckForDevice();
+ Program.form.changeTitlebarToDevice();
+ Program.form.showAvailableSpace();
+ settings.IPAddress = IPcmnd;
+ settings.Save();
+ try
+ {
+ File.WriteAllText(storedIpPath, IPcmnd);
+ }
+ catch (Exception ex) { Logger.Log($"Unable to write to StoredIP.txt: {ex.Message}", LogLevel.ERROR); }
+ ADB.wirelessadbON = true;
+ _ = ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_available 1");
+ _ = ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_enabled 1");
+ }
+ else
+ {
+ _ = FlexibleMessageBox.Show(Program.form, "No device connected! Connect Quest via USB and try again.");
+ }
+ }
+ }
+
+ // Update button text to reflect new state
+ UpdateWirelessADBButtonText();
+ }
+
+ private void UpdateWirelessADBButtonText()
+ {
+ bool isWirelessEnabled = File.Exists(storedIpPath) && !string.IsNullOrEmpty(settings.IPAddress);
+ ADBWirelessToggle.Text = isWirelessEnabled ? "DISABLE WIRELESS ADB" : "ENABLE WIRELESS ADB";
}
private void gamesQueListBox_MouseClick(object sender, MouseEventArgs e)
@@ -3852,7 +3962,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
{
changeTitle($"Entered command: ADB {adbCmd_CommandBox.Text}");
_ = ADB.RunAdbCommandToString(adbCmd_CommandBox.Text);
- changeTitle(" \n\n");
+ changeTitle("");
}
adbCmd_CommandBox.Visible = false;
adbCmd_Label.Visible = false;
@@ -3968,15 +4078,35 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
}
if (keyData == Keys.F5)
{
- _ = GetDeviceID();
- _ = FlexibleMessageBox.Show(Program.form, "If your device is not Connected, hit reconnect first or it won't work!\nNOTE: THIS MAY TAKE UP TO 60 SECONDS.\nThere will be a Popup text window with all updates available when it is done!", "Is device connected?", MessageBoxButtons.OKCancel);
+ if (!DeviceConnected && Devices.Count == 0)
+ {
+ FlexibleMessageBox.Show(Program.form,
+ "No device connected. Please connect your Quest and click 'RECONNECT DEVICE' first.",
+ "Device Required",
+ MessageBoxButtons.OK);
+ return true;
+ }
+
+ changeTitle("Refreshing games list...");
listAppsBtn();
initListView(false);
}
bool dialogIsUp = false;
if (keyData == Keys.F1 && !dialogIsUp)
{
- _ = FlexibleMessageBox.Show(Program.form, "Shortcuts:\nF1 -------- Shortcuts List\nF3 -------- Quest Options\nF4 -------- Rookie Settings\nF5 -------- Refresh Gameslist\n\nCTRL+R - Run custom ADB command.\nCTRL+L - Copy entire list of Game Names to clipboard seperated by new lines.\nALT+L - Copy entire list of Game Names to clipboard seperated by commas(in a paragraph).CTRL+P - Copy packagename to clipboard on game select.\nCTRL + F4 - Instantly relaunch Rookie Sideloader.");
+ _ = FlexibleMessageBox.Show(Program.form,
+@"Keyboard Shortcuts
+
+F1 - Show shortcuts list
+F3 - Open Quest Settings
+F4 - Open Rookie Settings
+F5 - Refresh games list
+
+CTRL + R - Run custom ADB command
+CTRL + L - Copy all game names (one per line)
+ALT + L - Copy all game names (comma-separated in a single line)
+CTRL + P - Copy package name of selected game
+CTRL + F4 - Instantly relaunch Rookie Sideloader");
}
if (keyData == (Keys.Control | Keys.P))
{
@@ -4114,31 +4244,6 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
_ = adbCmd_CommandBox.Focus();
}
- private bool fullScreen = false;
- [DefaultValue(false)]
- public bool FullScreen
- {
- get { return fullScreen; }
- set
- {
- fullScreen = value;
- if (value)
- {
- MainForm.ActiveForm.FormBorderStyle = FormBorderStyle.None;
- webView21.Anchor = (AnchorStyles.Top | AnchorStyles.Left);
- webView21.Location = new System.Drawing.Point(0, 0);
- webView21.Size = MainForm.ActiveForm.Size;
- }
- else
- {
- MainForm.ActiveForm.FormBorderStyle = FormBorderStyle.Sizable;
- webView21.Anchor = (AnchorStyles.Left | AnchorStyles.Bottom);
- webView21.Location = gamesPictureBox.Location;
- webView21.Size = new System.Drawing.Size(374, 214);
- }
- }
- }
-
static string ExtractVideoId(string html)
{
// We want the first strict 11-char YouTube video ID after /watch?v=
@@ -4148,12 +4253,20 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
private async Task CreateEnvironment()
{
+ if (!settings.TrailersEnabled) return;
+
// Fast path: already initialized
if (webView21.CoreWebView2 != null) return;
- // Download WebView2 Runtime if not present
+ // Check if WebView2 runtime DLLs are present
string runtimesPath = Path.Combine(Environment.CurrentDirectory, "runtimes");
- if (!Directory.Exists(runtimesPath))
+ string webView2LoaderArm64 = Path.Combine(runtimesPath, "win-arm64", "native", "WebView2Loader.dll");
+ string webView2LoaderX86 = Path.Combine(runtimesPath, "win-x86", "native", "WebView2Loader.dll");
+ string webView2LoaderX64 = Path.Combine(runtimesPath, "win-x64", "native", "WebView2Loader.dll");
+
+ bool runtimeExists = File.Exists(webView2LoaderX86) || File.Exists(webView2LoaderX64) || File.Exists(webView2LoaderArm64);
+
+ if (!runtimeExists)
{
try
{
@@ -4200,15 +4313,19 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
var s = webView21.CoreWebView2.Settings;
s.IsScriptEnabled = true; // allow IFrame API
s.IsWebMessageEnabled = true; // allow PostWebMessageAsString from host
+
+ ApplyWebViewRoundedCorners();
}
- catch (Exception ex)
+ catch (Exception /* ex */)
{
+ /*
Logger.Log($"Failed to initialize WebView2: {ex.Message}", LogLevel.ERROR);
_ = FlexibleMessageBox.Show(Program.form,
$"WebView2 Runtime is not installed on this system.\n\n" +
"Please download from: https://go.microsoft.com/fwlink/p/?LinkId=2124703\n\n" +
"Trailer playback will be disabled.",
"WebView2 Runtime Required");
+ */
enviromentCreated = true;
webView21.Hide();
}
@@ -4216,6 +4333,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
private void InitializeTrailerPlayer()
{
+ if (!settings.TrailersEnabled) return;
if (_trailerPlayerInitialized) return;
string webroot = Path.Combine(Environment.CurrentDirectory, "webroot");
Directory.CreateDirectory(webroot);
@@ -4229,7 +4347,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
Trailer Player
@@ -4286,12 +4404,23 @@ function onYouTubeIframeAPIReady() {
// Ensure environment + initial navigation
private async Task EnsureTrailerEnvironmentAsync()
{
+ if (!settings.TrailersEnabled) return;
+
if (webView21.CoreWebView2 == null)
{
await CreateEnvironment();
}
+
+ // Check again after CreateEnvironment - it may have failed
+ if (webView21.CoreWebView2 == null)
+ {
+ Logger.Log("WebView2 CoreWebView2 is null after CreateEnvironment", LogLevel.WARNING);
+ return;
+ }
+
InitializeTrailerPlayer();
- if (!_trailerHtmlLoaded)
+
+ if (!_trailerHtmlLoaded && webView21.CoreWebView2 != null)
{
webView21.CoreWebView2.NavigationCompleted += (s, e) =>
{
@@ -4303,22 +4432,46 @@ function onYouTubeIframeAPIReady() {
private async Task ShowVideoAsync(string videoId)
{
+ if (!settings.TrailersEnabled) return;
if (string.IsNullOrEmpty(videoId)) return;
- await EnsureTrailerEnvironmentAsync();
- // If first load still in progress, small retry loop
- int tries = 0;
- while (!_trailerHtmlLoaded && tries < 50)
+ try
{
- await Task.Delay(50);
- tries++;
+ await EnsureTrailerEnvironmentAsync();
+
+ // Check if WebView2 was successfully initialized
+ if (webView21.CoreWebView2 == null)
+ {
+ return;
+ }
+
+ // If first load still in progress, small retry loop
+ int tries = 0;
+ while (!_trailerHtmlLoaded && tries < 50)
+ {
+ await Task.Delay(50);
+ tries++;
+ }
+
+ // Double-check after waiting
+ if (webView21.CoreWebView2 == null || !_trailerHtmlLoaded)
+ {
+ return;
+ }
+
+ // Post the raw ID; page builds final URL
+ webView21.CoreWebView2.PostWebMessageAsString(videoId);
+ HideVideoPlaceholder(); // Video is loading, hide placeholder
+ }
+ catch (Exception ex)
+ {
+ Logger.Log($"ShowVideoAsync error: {ex.Message}", LogLevel.WARNING);
}
- // Post the raw ID; page builds final URL
- webView21.CoreWebView2.PostWebMessageAsString(videoId);
}
private async Task ResolveVideoIdAsync(string gameName)
{
+ if (!settings.TrailersEnabled) return string.Empty;
if (string.IsNullOrWhiteSpace(gameName)) return string.Empty;
if (_videoIdCache.TryGetValue(gameName, out var cached))
@@ -4348,7 +4501,6 @@ function onYouTubeIframeAPIReady() {
return string.Empty;
}
- private static CancellationTokenSource VideoDownloadTokenSource { get; set; }
public async void gamesListView_SelectedIndexChanged(object sender, EventArgs e)
{
// Hide the uninstall button initially
@@ -4359,6 +4511,9 @@ function onYouTubeIframeAPIReady() {
if (gamesListView.SelectedItems.Count < 1)
{
+ selectedGameLabel.Text = "";
+ downloadInstallGameButton.Enabled = false;
+ downloadInstallGameButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(59)))), ((int)(((byte)(67)))), ((int)(((byte)(82)))));
return;
}
@@ -4368,9 +4523,16 @@ function onYouTubeIframeAPIReady() {
string CurrentGameName = selectedItem.SubItems[SideloaderRCLONE.GameNameIndex].Text;
Console.WriteLine(CurrentGameName);
- // Show uninstall button only for installed games (blue or green color)
- bool isInstalled = selectedItem.ForeColor.ToArgb() == ColorTranslator.FromHtml("#3c91e6").ToArgb() ||
- selectedItem.ForeColor.ToArgb() == ColorTranslator.FromHtml("#4daa57").ToArgb();
+ downloadInstallGameButton.Enabled = true;
+ downloadInstallGameButton.ForeColor = System.Drawing.Color.Black;
+
+ // Update the selected game label in the sidebar
+ selectedGameLabel.Text = CurrentGameName;
+
+ // Show uninstall button only for installed games
+ bool isInstalled = selectedItem.ForeColor.ToArgb() == ColorInstalled.ToArgb() ||
+ selectedItem.ForeColor.ToArgb() == ColorUpdateAvailable.ToArgb() ||
+ selectedItem.ForeColor.ToArgb() == ColorDonateGame.ToArgb();
if (isInstalled && _listViewUninstallButton != null)
{
@@ -4412,38 +4574,61 @@ function onYouTubeIframeAPIReady() {
}
}
- if (gamesPictureBox.BackgroundImage != null)
+ // Dispose the old image first
+ var oldImage = gamesPictureBox.BackgroundImage;
+ gamesPictureBox.BackgroundImage = null;
+
+ if (oldImage != null)
{
- gamesPictureBox.BackgroundImage.Dispose();
+ oldImage.Dispose();
}
- gamesPictureBox.BackgroundImage = File.Exists(ImagePath) ? Image.FromFile(ImagePath) : new Bitmap(367, 214);
+ if (File.Exists(ImagePath))
+ {
+ gamesPictureBox.BackgroundImage = Image.FromFile(ImagePath);
+ }
+
+ // If no image exists, BackgroundImage stays null and the Paint handler draws the placeholder
+ gamesPictureBox.Invalidate(); // Force repaint to show placeholder
// Fast trailer loading path
- webView21.Enabled = true;
- webView21.Show();
-
- try
+ if (settings.TrailersEnabled)
{
- var videoId = await ResolveVideoIdAsync(CurrentGameName);
- if (string.IsNullOrEmpty(videoId))
+ webView21.Enabled = true;
+ webView21.Show();
+
+ try
{
- changeTitle("No Trailer found");
+ var videoId = await ResolveVideoIdAsync(CurrentGameName);
+ if (string.IsNullOrEmpty(videoId))
+ {
+ changeTitle("No Trailer found");
+ ShowVideoPlaceholder();
+ }
+ else
+ {
+ await ShowVideoAsync(videoId);
+ }
}
- else
+ catch (Exception ex)
{
- await ShowVideoAsync(videoId);
+ Logger.Log("Error loading Trailer");
+ Logger.Log(ex.Message);
+ ShowVideoPlaceholder();
}
}
- catch (Exception ex)
+ else
{
- changeTitle($"Error loading Trailer: {ex.Message}");
- Logger.Log("Error loading Trailer");
- Logger.Log(ex.Message);
+ ShowVideoPlaceholder();
}
string NotePath = $"{SideloaderRCLONE.NotesFolder}\\{CurrentReleaseName}.txt";
- notesRichTextBox.Text = File.Exists(NotePath) ? File.ReadAllText(NotePath) : "";
+
+ if (!isGalleryView)
+ {
+ notesRichTextBox.Text = File.Exists(NotePath) ? File.ReadAllText(NotePath) : "";
+ UpdateNotesScrollBar();
+ }
}
private async void ListViewUninstallButton_Click(object sender, EventArgs e)
@@ -4524,21 +4709,25 @@ function onYouTubeIframeAPIReady() {
public void UpdateGamesButton_Click(object sender, EventArgs e)
{
- _ = GetDeviceID();
- _ = FlexibleMessageBox.Show(Program.form, "If your device is not Connected, hit reconnect first or it won't work!\nNOTE: THIS MAY TAKE UP TO 60 SECONDS.\nThere will be a Popup text window with all updates available when it is done!", "Is device connected?", MessageBoxButtons.OKCancel);
+ if (!DeviceConnected && Devices.Count == 0)
+ {
+ FlexibleMessageBox.Show(Program.form,
+ "No device connected. Please connect your Quest and click 'RECONNECT DEVICE' first.",
+ "Device Required",
+ MessageBoxButtons.OK);
+ return;
+ }
+
+ changeTitle("Refreshing installed apps and checking for updates...");
listAppsBtn();
initListView(false);
if (SideloaderRCLONE.games.Count < 1)
{
- _ = FlexibleMessageBox.Show(Program.form, "There are no games in rclone, please check your internet connection and check if the config is working properly");
+ FlexibleMessageBox.Show(Program.form,
+ "There are no games in rclone, please check your internet connection and verify the config is working properly.");
return;
}
-
- // if (gamesToUpdate.Length > 0)
- // FlexibleMessageBox.Show(Program.form, gamesToUpdate);
- // else
- // FlexibleMessageBox.Show(Program.form, "All your games are up to date!");
}
private void gamesListView_MouseDoubleClick(object sender, MouseEventArgs e)
@@ -4561,11 +4750,13 @@ function onYouTubeIframeAPIReady() {
private void searchTextBox_Enter(object sender, EventArgs e)
{
- if (searchTextBox.Text == "Search..." && searchTextBox.ForeColor == Color.LightGray)
+ if (searchTextBox.Text == "Search...")
{
searchTextBox.Text = "";
- searchTextBox.ForeColor = Color.White;
}
+
+ searchTextBox.Font = new Font("Segoe UI", 9F, FontStyle.Bold);
+ searchTextBox.ForeColor = Color.FromArgb(((int)(((byte)(218)))), ((int)(((byte)(218)))), ((int)(((byte)(218)))));
}
private void searchTextBox_Leave(object sender, EventArgs e)
@@ -4573,8 +4764,10 @@ function onYouTubeIframeAPIReady() {
if (string.IsNullOrWhiteSpace(searchTextBox.Text))
{
searchTextBox.Text = "Search...";
- searchTextBox.ForeColor = Color.LightGray;
+ searchTextBox.Font = new Font("Segoe UI", 9F, FontStyle.Italic);
}
+
+ searchTextBox.ForeColor = Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
if (searchTextBox.Visible)
{
@@ -4598,11 +4791,11 @@ function onYouTubeIframeAPIReady() {
}
bool updateAvailableClicked = false;
- private void updateAvailable_Click(object sender, EventArgs e)
+ private void btnUpdateAvailable_Click(object sender, EventArgs e)
{
- lblUpToDate.Click -= lblUpToDate_Click;
- lblUpdateAvailable.Click -= updateAvailable_Click;
- lblNeedsDonate.Click -= lblNeedsDonate_Click;
+ btnInstalled.Click -= btnInstalled_Click;
+ btnUpdateAvailable.Click -= btnUpdateAvailable_Click;
+ btnNewerThanList.Click -= btnNewerThanList_Click;
if (upToDate_Clicked || NeedsDonation_Clicked)
{
@@ -4614,7 +4807,7 @@ function onYouTubeIframeAPIReady() {
if (!updateAvailableClicked)
{
updateAvailableClicked = true;
- FilterListByColor(ColorTranslator.FromHtml("#4daa57")); // Update available color
+ FilterListByColor(ColorUpdateAvailable); // Update available color
}
else
{
@@ -4622,15 +4815,18 @@ function onYouTubeIframeAPIReady() {
RestoreFullList();
}
+ // Update button visual states
+ UpdateFilterButtonStates();
+
// Refresh gallery view if active
if (isGalleryView)
{
PopulateGalleryView();
}
- lblUpToDate.Click += lblUpToDate_Click;
- lblUpdateAvailable.Click += updateAvailable_Click;
- lblNeedsDonate.Click += lblNeedsDonate_Click;
+ btnInstalled.Click += btnInstalled_Click;
+ btnUpdateAvailable.Click += btnUpdateAvailable_Click;
+ btnNewerThanList.Click += btnNewerThanList_Click;
}
private async void ADBcommandbox_KeyPress(object sender, KeyPressEventArgs e)
@@ -4648,7 +4844,7 @@ function onYouTubeIframeAPIReady() {
string errorChecker = ADB.RunAdbCommandToString(IPcmnd).Output;
if (errorChecker.Contains("cannot resolve host") | errorChecker.Contains("cannot connect to"))
{
- changeTitle(String.Empty);
+ changeTitle("");
_ = FlexibleMessageBox.Show(Program.form, "Manual ADB over WiFi Connection failed\nExiting...", "Manual IP Connection Failed!", MessageBoxButtons.OK);
manualIP = false;
adbCmd_CommandBox.Visible = false;
@@ -4685,16 +4881,16 @@ function onYouTubeIframeAPIReady() {
else
{
string sentCommand = adbCmd_CommandBox.Text.Replace("adb", "");
- Program.form.changeTitle($"Running adb command: ADB {sentCommand}");
+ Program.form.changeTitle($"Running ADB command: ADB {sentCommand}");
string output = ADB.RunAdbCommandToString(adbCmd_CommandBox.Text).Output;
- _ = FlexibleMessageBox.Show(Program.form, $"Ran adb command: ADB {sentCommand}\r\nOutput:\r\n{output}");
+ _ = FlexibleMessageBox.Show(Program.form, $"Ran ADB command: ADB {sentCommand}\r\nOutput:\r\n{output}");
adbCmd_CommandBox.Visible = false;
adbCmd_btnToggleUpdates.Visible = false;
adbCmd_btnSend.Visible = false;
adbCmd_Label.Visible = false;
adbCmd_background.Visible = false;
_ = gamesListView.Focus();
- Program.form.changeTitle(String.Empty);
+ changeTitle("");
}
}
if (e.KeyChar == (char)Keys.Escape)
@@ -4734,12 +4930,13 @@ function onYouTubeIframeAPIReady() {
private async void pullAppToDesktopBtn_Click(object sender, EventArgs e)
{
- if (m_combo.SelectedIndex == -1)
+ string selectedApp = ShowInstalledAppSelector("Select an app to pull to desktop");
+ if (selectedApp == null)
{
- notify("Please select an App from the Dropdown");
return;
}
- DialogResult dialogResult1 = FlexibleMessageBox.Show(Program.form, $"Do you want to extract {m_combo.SelectedItem}'s apk and obb to a folder on your desktop now?", "Extract app?", MessageBoxButtons.YesNo);
+
+ DialogResult dialogResult1 = FlexibleMessageBox.Show(Program.form, $"Do you want to extract {selectedApp}'s APK and OBB to a folder on your desktop now?", "Extract app?", MessageBoxButtons.YesNo);
if (dialogResult1 == DialogResult.No)
{
return;
@@ -4750,7 +4947,7 @@ function onYouTubeIframeAPIReady() {
isworking = true;
progressBar.Style = ProgressBarStyle.Marquee;
string HWID = SideloaderUtilities.UUID();
- string GameName = m_combo.SelectedItem.ToString();
+ string GameName = selectedApp;
string packageName = Sideloader.gameNameToPackageName(GameName);
string InstalledVersionCode = ADB.RunAdbCommandToString($"shell \"dumpsys package {packageName} | grep versionCode -F\"").Output;
InstalledVersionCode = Utilities.StringUtilities.RemoveEverythingBeforeFirst(InstalledVersionCode, "versionCode=");
@@ -4780,7 +4977,7 @@ function onYouTubeIframeAPIReady() {
await Task.Delay(100);
}
- changeTitle("Extracting obb if it exists....");
+ changeTitle("Extracting OBB if it exists....");
Thread t2 = new Thread(() =>
{
output += ADB.RunAdbCommandToString($"pull \"/sdcard/Android/obb/{packageName}\" \"{settings.MainDir}\\{packageName}\"");
@@ -4826,18 +5023,18 @@ function onYouTubeIframeAPIReady() {
File.Delete($"{settings.MainDir}\\{GameName} v{VersionInt} {packageName}.zip");
Directory.Delete($"{settings.MainDir}\\{packageName}", true);
isworking = false;
- Program.form.changeTitle(" \n\n");
+ Program.form.changeTitle("");
progressBar.Style = ProgressBarStyle.Continuous;
_ = FlexibleMessageBox.Show(Program.form, $"{GameName} pulled to:\n\n{GameName} v{VersionInt} {packageName}.zip\n\nOn your desktop!");
}
}
bool upToDate_Clicked = false;
- private void lblUpToDate_Click(object sender, EventArgs e)
+ private void btnInstalled_Click(object sender, EventArgs e)
{
- lblUpToDate.Click -= lblUpToDate_Click;
- lblUpdateAvailable.Click -= updateAvailable_Click;
- lblNeedsDonate.Click -= lblNeedsDonate_Click;
+ btnInstalled.Click -= btnInstalled_Click;
+ btnUpdateAvailable.Click -= btnUpdateAvailable_Click;
+ btnNewerThanList.Click -= btnNewerThanList_Click;
if (updateAvailableClicked || NeedsDonation_Clicked)
{
@@ -4849,7 +5046,8 @@ function onYouTubeIframeAPIReady() {
if (!upToDate_Clicked)
{
upToDate_Clicked = true;
- FilterListByColor(ColorTranslator.FromHtml("#3c91e6")); // Up to date color
+ // Filter to show installed, update available and newer than list entries
+ FilterListByColors(new[] { ColorInstalled, ColorUpdateAvailable, ColorDonateGame });
}
else
{
@@ -4857,23 +5055,26 @@ function onYouTubeIframeAPIReady() {
RestoreFullList();
}
+ // Update button visual states
+ UpdateFilterButtonStates();
+
// Refresh gallery view if active
if (isGalleryView)
{
PopulateGalleryView();
}
- lblUpToDate.Click += lblUpToDate_Click;
- lblUpdateAvailable.Click += updateAvailable_Click;
- lblNeedsDonate.Click += lblNeedsDonate_Click;
+ btnInstalled.Click += btnInstalled_Click;
+ btnUpdateAvailable.Click += btnUpdateAvailable_Click;
+ btnNewerThanList.Click += btnNewerThanList_Click;
}
bool NeedsDonation_Clicked = false;
- private void lblNeedsDonate_Click(object sender, EventArgs e)
+ private void btnNewerThanList_Click(object sender, EventArgs e)
{
- lblUpToDate.Click -= lblUpToDate_Click;
- lblUpdateAvailable.Click -= updateAvailable_Click;
- lblNeedsDonate.Click -= lblNeedsDonate_Click;
+ btnInstalled.Click -= btnInstalled_Click;
+ btnUpdateAvailable.Click -= btnUpdateAvailable_Click;
+ btnNewerThanList.Click -= btnNewerThanList_Click;
if (updateAvailableClicked || upToDate_Clicked)
{
@@ -4885,7 +5086,7 @@ function onYouTubeIframeAPIReady() {
if (!NeedsDonation_Clicked)
{
NeedsDonation_Clicked = true;
- FilterListByColor(ColorTranslator.FromHtml("#cb9cf2")); // Needs donation color
+ FilterListByColor(ColorDonateGame); // Needs donation color
}
else
{
@@ -4893,15 +5094,49 @@ function onYouTubeIframeAPIReady() {
RestoreFullList();
}
+ // Update button visual states
+ UpdateFilterButtonStates();
+
// Refresh gallery view if active
if (isGalleryView)
{
PopulateGalleryView();
}
- lblUpToDate.Click += lblUpToDate_Click;
- lblUpdateAvailable.Click += updateAvailable_Click;
- lblNeedsDonate.Click += lblNeedsDonate_Click;
+ btnInstalled.Click += btnInstalled_Click;
+ btnUpdateAvailable.Click += btnUpdateAvailable_Click;
+ btnNewerThanList.Click += btnNewerThanList_Click;
+ }
+
+ private void FilterListByColors(Color[] targetColors)
+ {
+ changeTitle("Filtering Game List...");
+
+ if (_allItems == null || _allItems.Count == 0)
+ {
+ changeTitle("No games to filter");
+ return;
+ }
+
+ var targetArgbs = new HashSet(targetColors.Select(c => c.ToArgb()));
+
+ var filteredItems = _allItems
+ .Where(item => targetArgbs.Contains(item.ForeColor.ToArgb()))
+ .ToList();
+
+ gamesListView.BeginUpdate();
+ gamesListView.Items.Clear();
+ gamesListView.Items.AddRange(filteredItems.ToArray());
+ gamesListView.EndUpdate();
+
+ // Refresh gallery view if active - set data source before calling PopulateGalleryView
+ if (isGalleryView)
+ {
+ _galleryDataSource = filteredItems;
+ PopulateGalleryView();
+ }
+
+ changeTitle("");
}
private void FilterListByColor(Color targetColor)
@@ -4930,7 +5165,7 @@ function onYouTubeIframeAPIReady() {
PopulateGalleryView();
}
- changeTitle(" \n\n");
+ changeTitle("");
}
private void RestoreFullList()
@@ -4953,7 +5188,7 @@ function onYouTubeIframeAPIReady() {
PopulateGalleryView();
}
- changeTitle(" \n\n");
+ changeTitle("");
}
public static void OpenDirectory(string directoryPath)
@@ -5001,17 +5236,17 @@ function onYouTubeIframeAPIReady() {
{
// No Device Mode is currently On. Toggle it Off
settings.NodeviceMode = false;
- btnNoDevice.Text = "Disable Sideloading";
+ btnNoDevice.Text = "DISABLE SIDELOADING";
- changeTitle($"Sideloading has been Enabled");
+ changeTitle($"Sideloading ENABLED");
}
else
{
settings.NodeviceMode = true;
settings.DeleteAllAfterInstall = false;
- btnNoDevice.Text = "Enable Sideloading";
+ btnNoDevice.Text = "ENABLE SIDELOADING";
- changeTitle($"Sideloading Disabled. Games will only Download.");
+ changeTitle($"Sideloading DISABLED. Games will only download");
}
settings.Save();
@@ -5062,11 +5297,11 @@ function onYouTubeIframeAPIReady() {
ToolStripMenuItem favoriteMenuItem = favoriteGame.Items[0] as ToolStripMenuItem;
if (SettingsManager.Instance.FavoritedGames.Contains(packageName))
{
- favoriteButton.Text = "Unfavorite"; // If it's already favorited, show "Unfavorite"
+ favoriteButton.Text = "Remove from Favorites"; // If it's already favorited, show "Unfavorite"
}
else
{
- favoriteButton.Text = "Favorite"; // If it's not favorited, show "Favorite"
+ favoriteButton.Text = "★ Add to Favorites"; // If it's not favorited, show "Favorite"
}
// Show the context menu at the mouse position
@@ -5081,13 +5316,13 @@ function onYouTubeIframeAPIReady() {
string packageName = _rightClickedItem.SubItems[1].Text;
// Check the menu item's text to decide whether to add or remove the game from favorites
- if ((sender as ToolStripMenuItem).Text == "Favorite")
+ if ((sender as ToolStripMenuItem).Text == "★ Add to Favorites")
{
// Add to favorites
settings.AddFavoriteGame(packageName);
Console.WriteLine($"{packageName} has been added to favorites.");
}
- else if ((sender as ToolStripMenuItem).Text == "Unfavorite")
+ else if ((sender as ToolStripMenuItem).Text == "Remove from Favorites")
{
// Remove from favorites
settings.RemoveFavoriteGame(packageName);
@@ -5098,26 +5333,70 @@ function onYouTubeIframeAPIReady() {
ToolStripMenuItem favoriteMenuItem = sender as ToolStripMenuItem;
if (settings.FavoritedGames.Contains(packageName))
{
- favoriteMenuItem.Text = "Unfavorite";
+ favoriteMenuItem.Text = "Remove from Favorites";
}
else
{
- favoriteMenuItem.Text = "Favorite";
+ favoriteMenuItem.Text = "★ Add to Favorites";
}
}
}
private void favoriteSwitcher_Click(object sender, EventArgs e)
{
- if (favoriteSwitcher.Text == "Games List")
+ // Guard: ensure _allItems is populated
+ if (_allItems == null || _allItems.Count == 0)
{
- favoriteSwitcher.Text = "Favorited Games";
- initListView(true);
+ Logger.Log("favoriteSwitcher_Click: _allItems is null or empty");
+ return;
+ }
+
+ bool showFavoritesOnly = favoriteSwitcher.Text == "FAVORITES";
+
+ if (showFavoritesOnly)
+ {
+ favoriteSwitcher.Text = "ALL";
+
+ var favSet = new HashSet(settings.FavoritedGames, StringComparer.OrdinalIgnoreCase);
+
+ // DEBUG: Check if favorites exist
+ if (favSet.Count == 0)
+ {
+ changeTitle("No favorites saved yet!");
+ return;
+ }
+
+ var favoriteItems = _allItems
+ .Where(item => item.SubItems.Count > 1 && favSet.Contains(item.SubItems[1].Text))
+ .ToList();
+
+ gamesListView.BeginUpdate();
+ gamesListView.Items.Clear();
+ gamesListView.Items.AddRange(favoriteItems.ToArray());
+ gamesListView.EndUpdate();
+
+ _galleryDataSource = favoriteItems;
+ if (isGalleryView && _fastGallery != null)
+ {
+ _fastGallery.RefreshFavoritesCache();
+ _fastGallery.UpdateItems(favoriteItems);
+ }
}
else
{
- favoriteSwitcher.Text = "Games List";
- initListView(false);
+ favoriteSwitcher.Text = "FAVORITES";
+
+ gamesListView.BeginUpdate();
+ gamesListView.Items.Clear();
+ gamesListView.Items.AddRange(_allItems.ToArray());
+ gamesListView.EndUpdate();
+
+ _galleryDataSource = _allItems;
+ if (isGalleryView && _fastGallery != null)
+ {
+ _fastGallery.RefreshFavoritesCache();
+ _fastGallery.UpdateItems(_allItems);
+ }
}
}
@@ -5175,8 +5454,8 @@ function onYouTubeIframeAPIReady() {
}
}
- // Calculate storage percentage used
- int storagePercentUsed = totalSpace > 0 ? (int)((usedSpace * 100) / totalSpace) : 0;
+ // Calculate storage percentage used - clamped to 1%..100%
+ int storagePercentUsed = Math.Min(100, Math.Max(1, (100 - (totalSpace > 0 ? (int)((usedSpace * 100) / totalSpace) : 0))));
// Update UI on main thread
questInfoPanel.Invoke(() =>
@@ -5352,63 +5631,17 @@ function onYouTubeIframeAPIReady() {
}
}
- private void CreateSearchIcon()
- {
- if (this.searchIconPictureBox == null)
- {
- this.searchIconPictureBox = new PictureBox
- {
- Name = "searchIconPictureBox",
- SizeMode = PictureBoxSizeMode.Zoom,
- Size = new Size(16, 16),
- BackColor = searchTextBox.BackColor, // blend with textbox
- TabStop = false,
- Enabled = false // let clicks go to the textbox
- };
-
- this.searchIconPictureBox.Image = Properties.Resources.SearchGlass;
- }
-
- // Parent the icon to the same container as the textbox
- var host = searchTextBox.Parent ?? this;
- if (this.searchIconPictureBox.Parent != host)
- {
- host.Controls.Add(this.searchIconPictureBox);
- this.searchIconPictureBox.BringToFront();
- }
-
- // 6px left padding inside the textbox area
- int leftInset = 6;
- var pt = new Point(
- searchTextBox.Left + leftInset,
- searchTextBox.Top + (searchTextBox.Height - searchIconPictureBox.Height) / 2
- );
- searchIconPictureBox.Location = pt;
- }
-
- private void ApplySearchTextMargins()
- {
- if (searchTextBox == null) return;
-
- // icon width + left inset + small gap
- int leftInset = 6;
- int leftMarginPixels = (searchIconPictureBox?.Width ?? 16) + leftInset + 2;
- int rightMarginPixels = 2;
-
- if (searchTextBox.IsHandleCreated)
- {
- int lParam = (rightMarginPixels << 16) | (leftMarginPixels & 0xFFFF);
- SendMessage(searchTextBox.Handle, EM_SETMARGINS, (IntPtr)(EC_LEFTMARGIN | EC_RIGHTMARGIN), (IntPtr)lParam);
- }
- }
-
private void btnViewToggle_Click(object sender, EventArgs e)
{
isGalleryView = !isGalleryView;
+ // Save user preference
+ settings.UseGalleryView = isGalleryView;
+ settings.Save();
+
if (isGalleryView)
{
- btnViewToggle.Text = "List";
+ btnViewToggle.Text = "LIST";
gamesListView.Visible = false;
gamesGalleryView.Visible = true;
@@ -5420,7 +5653,7 @@ function onYouTubeIframeAPIReady() {
}
else
{
- btnViewToggle.Text = "Gallery";
+ btnViewToggle.Text = "GALLERY";
gamesGalleryView.Visible = false;
gamesListView.Visible = true;
CleanupGalleryView();
@@ -5581,20 +5814,32 @@ function onYouTubeIframeAPIReady() {
var item = _fastGallery.GetItemAtIndex(itemIndex);
if (item == null || item.SubItems.Count <= 2) return;
- string packageName = item.SubItems[2].Text;
+ string packageName = item.SubItems[SideloaderRCLONE.PackageNameIndex].Text;
+ string releaseName = item.SubItems[SideloaderRCLONE.ReleaseNameIndex].Text;
+ string gameName = item.SubItems[SideloaderRCLONE.GameNameIndex].Text;
+
+ // Clear all selections first - must deselect each item individually
+ // because SelectedItems.Clear() doesn't work reliably when ListView is hidden
+ foreach (ListViewItem listItem in gamesListView.Items)
+ {
+ listItem.Selected = false;
+ }
// Find and select the matching item in gamesListView
foreach (ListViewItem listItem in gamesListView.Items)
{
if (listItem.SubItems.Count > 2 && listItem.SubItems[2].Text == packageName)
{
- gamesListView.SelectedItems.Clear();
listItem.Selected = true;
listItem.EnsureVisible();
- gamesListView_SelectedIndexChanged(gamesListView, EventArgs.Empty);
break;
}
}
+
+ // Load release notes
+ string notePath = Path.Combine(SideloaderRCLONE.NotesFolder, $"{releaseName}.txt");
+ notesRichTextBox.Text = File.Exists(notePath) ? File.ReadAllText(notePath) : "";
+ UpdateNotesScrollBar();
}
private void FastGallery_TileDoubleClicked(object sender, int itemIndex)
@@ -5607,12 +5852,18 @@ function onYouTubeIframeAPIReady() {
string packageName = item.SubItems[2].Text;
+ // Clear all selections first - must deselect each item individually
+ // because SelectedItems.Clear() doesn't work reliably when ListView is hidden
+ foreach (ListViewItem listItem in gamesListView.Items)
+ {
+ listItem.Selected = false;
+ }
+
// Find and select the matching item in gamesListView, then trigger download
foreach (ListViewItem listItem in gamesListView.Items)
{
if (listItem.SubItems.Count > 2 && listItem.SubItems[2].Text == packageName)
{
- gamesListView.SelectedItems.Clear();
listItem.Selected = true;
downloadInstallGameButton_Click(downloadInstallGameButton, EventArgs.Empty);
break;
@@ -5620,7 +5871,6 @@ function onYouTubeIframeAPIReady() {
}
}
-
private void ListViewUninstallButton_Paint(object sender, PaintEventArgs e)
{
var g = e.Graphics;
@@ -5684,6 +5934,778 @@ function onYouTubeIframeAPIReady() {
}
}
}
+
+ private void gamesPictureBox_Paint(object sender, PaintEventArgs e)
+ {
+ // Only draw placeholder if no image is loaded
+ if (gamesPictureBox.BackgroundImage != null &&
+ gamesPictureBox.BackgroundImage.Width > 1 &&
+ gamesPictureBox.BackgroundImage.Height > 1)
+ {
+ return;
+ }
+
+ var g = e.Graphics;
+ g.SmoothingMode = SmoothingMode.AntiAlias;
+
+ var thumbRect = new Rectangle(0, 0, gamesPictureBox.Width, gamesPictureBox.Height);
+
+ // Draw placeholder background
+ using (var brush = new SolidBrush(Color.FromArgb(35, 35, 40)))
+ {
+ g.FillRectangle(brush, thumbRect);
+ }
+
+ // When disclaimer is gone
+ if (freeDisclaimer.Enabled == false)
+ {
+ // Draw emoji placeholder
+ using (var textBrush = new SolidBrush(Color.FromArgb(70, 70, 80)))
+ {
+ var sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center };
+ g.DrawString("🎮", new Font("Segoe UI Emoji", 32f), textBrush, thumbRect, sf);
+ }
+ }
+ }
+
+ private void webViewPlaceholderPanel_Paint(object sender, PaintEventArgs e)
+ {
+ var g = e.Graphics;
+ g.SmoothingMode = SmoothingMode.AntiAlias;
+ g.PixelOffsetMode = PixelOffsetMode.HighQuality;
+
+ int radius = 8;
+ var rect = new Rectangle(0, 0, webViewPlaceholderPanel.Width - 1, webViewPlaceholderPanel.Height - 1);
+ Color panelColor = Color.FromArgb(24, 26, 30);
+ Color cornerBgColor = Color.FromArgb(32, 35, 45);
+
+ // Clear with corner background color first
+ g.Clear(cornerBgColor);
+
+ using (var path = CreateRoundedRectPath(rect, radius))
+ {
+ // Draw rounded background
+ using (var brush = new SolidBrush(panelColor))
+ {
+ g.FillPath(brush, path);
+ }
+ }
+
+ // Apply rounded region to clip the panel
+ using (var regionPath = CreateRoundedRectPath(new Rectangle(0, 0, webViewPlaceholderPanel.Width, webViewPlaceholderPanel.Height), radius))
+ {
+ webViewPlaceholderPanel.Region = new Region(regionPath);
+ }
+
+ // Draw emoji placeholder
+ using (var textBrush = new SolidBrush(Color.FromArgb(60, 65, 70)))
+ {
+ var sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center };
+ g.DrawString("🎮", new Font("Segoe UI Emoji", 32f), textBrush, rect, sf);
+ }
+ }
+
+ public void ShowVideoPlaceholder()
+ {
+ webViewPlaceholderPanel.Visible = true;
+ webViewPlaceholderPanel.BringToFront();
+ }
+
+ public void HideVideoPlaceholder()
+ {
+ webViewPlaceholderPanel.Visible = false;
+ }
+
+ private void SubscribeToHoverEvents(Control parent)
+ {
+ parent.MouseEnter += QuestInfoHoverEnter;
+ parent.MouseLeave += QuestInfoHoverLeave;
+
+ foreach (Control child in parent.Controls)
+ {
+ SubscribeToHoverEvents(child);
+ }
+ }
+
+ private string ShowInstalledAppSelector(string promptText = "Select an Installed App...")
+ {
+ // Refresh the list of installed apps
+ listAppsBtn();
+
+ if (m_combo.Items.Count == 0)
+ {
+ FlexibleMessageBox.Show(Program.form, "No installed apps found on the device.");
+ return null;
+ }
+
+ // Create a dialog to show the combo selection
+ using (Form dialog = new Form())
+ {
+ dialog.Text = promptText;
+ dialog.Size = new Size(450, 150);
+ dialog.StartPosition = FormStartPosition.CenterParent;
+ dialog.FormBorderStyle = FormBorderStyle.FixedDialog;
+ dialog.MaximizeBox = false;
+ dialog.MinimizeBox = false;
+ dialog.BackColor = Color.FromArgb(20, 24, 29);
+ dialog.ForeColor = Color.White;
+
+ var label = new Label
+ {
+ Text = promptText,
+ ForeColor = Color.White,
+ AutoSize = true,
+ Location = new Point(15, 15)
+ };
+
+ var comboBox = new ComboBox
+ {
+ Location = new Point(15, 40),
+ Size = new Size(400, 24),
+ DropDownStyle = ComboBoxStyle.DropDown,
+ BackColor = Color.FromArgb(42, 45, 58),
+ ForeColor = Color.White,
+ FlatStyle = FlatStyle.Flat
+ };
+
+ // Copy items from m_combo
+ foreach (var item in m_combo.Items)
+ {
+ comboBox.Items.Add(item);
+ }
+
+ var okButton = CreateStyledButton("OK", DialogResult.OK, new Point(255, 75));
+ var cancelButton = CreateStyledButton("Cancel", DialogResult.Cancel, new Point(340, 75), false);
+
+ dialog.Controls.AddRange(new Control[] { label, comboBox, okButton, cancelButton });
+ dialog.AcceptButton = okButton;
+ dialog.CancelButton = cancelButton;
+
+ if (dialog.ShowDialog(this) == DialogResult.OK && comboBox.SelectedIndex != -1)
+ {
+ return comboBox.SelectedItem.ToString();
+ }
+ }
+
+ return null;
+ }
+
+ private string ShowDeviceSelector(string promptText = "Select a Device")
+ {
+ // Refresh the list of devices first
+ string output = ADB.RunAdbCommandToString("devices").Output;
+ string[] lines = output.Split('\n');
+
+ var deviceList = new List();
+ for (int i = 1; i < lines.Length; i++)
+ {
+ string line = lines[i].Trim();
+ if (line.Length > 0 && !string.IsNullOrWhiteSpace(line))
+ {
+ string deviceId = line.Split('\t')[0];
+ if (!string.IsNullOrEmpty(deviceId))
+ {
+ deviceList.Add(deviceId);
+ }
+ }
+ }
+
+ if (deviceList.Count == 0)
+ {
+ FlexibleMessageBox.Show(Program.form, "No devices found. Please connect a device and try again.");
+ return null;
+ }
+
+ // If only one device, return it directly
+ if (deviceList.Count == 1)
+ {
+ // Update internal combo for compatibility
+ devicesComboBox.Items.Clear();
+ devicesComboBox.Items.Add(deviceList[0]);
+ devicesComboBox.SelectedIndex = 0;
+ return deviceList[0];
+ }
+
+ // Create a dialog to show the device selection
+ using (Form dialog = new Form())
+ {
+ dialog.Text = promptText;
+ dialog.Size = new Size(400, 150);
+ dialog.StartPosition = FormStartPosition.CenterParent;
+ dialog.FormBorderStyle = FormBorderStyle.FixedDialog;
+ dialog.MaximizeBox = false;
+ dialog.MinimizeBox = false;
+ dialog.BackColor = Color.FromArgb(20, 24, 29);
+ dialog.ForeColor = Color.White;
+
+ var label = new Label
+ {
+ Text = promptText,
+ ForeColor = Color.White,
+ AutoSize = true,
+ Location = new Point(15, 15)
+ };
+
+ var comboBox = new ComboBox
+ {
+ Location = new Point(15, 40),
+ Size = new Size(350, 24),
+ DropDownStyle = ComboBoxStyle.DropDownList,
+ BackColor = Color.FromArgb(42, 45, 58),
+ ForeColor = Color.White,
+ FlatStyle = FlatStyle.Flat
+ };
+
+ // Add devices to combo
+ foreach (var device in deviceList)
+ {
+ comboBox.Items.Add(device);
+ }
+
+ if (comboBox.Items.Count > 0)
+ {
+ comboBox.SelectedIndex = 0;
+ }
+
+ var okButton = CreateStyledButton("OK", DialogResult.OK, new Point(205, 75));
+ var cancelButton = CreateStyledButton("Cancel", DialogResult.Cancel, new Point(290, 75), false);
+
+ dialog.Controls.AddRange(new Control[] { label, comboBox, okButton, cancelButton });
+ dialog.AcceptButton = okButton;
+ dialog.CancelButton = cancelButton;
+
+ if (dialog.ShowDialog(this) == DialogResult.OK && comboBox.SelectedIndex != -1)
+ {
+ string selectedDevice = comboBox.SelectedItem.ToString();
+
+ // Update internal combo for compatibility
+ devicesComboBox.Items.Clear();
+ foreach (var device in deviceList)
+ {
+ devicesComboBox.Items.Add(device);
+ }
+ devicesComboBox.SelectedItem = selectedDevice;
+
+ return selectedDevice;
+ }
+ }
+
+ return null;
+ }
+
+ private void selectDeviceButton_Click(object sender, EventArgs e)
+ {
+ string selectedDevice = ShowDeviceSelector("Select a Device");
+ if (selectedDevice != null)
+ {
+ ADB.DeviceID = selectedDevice;
+ changeTitlebarToDevice();
+ showAvailableSpace();
+ changeTitle($"Selected device: {selectedDevice}", true);
+ }
+ }
+
+ private void selectMirrorButton_Click(object sender, EventArgs e)
+ {
+ string selectedMirror = ShowMirrorSelector("Select a Mirror");
+ if (selectedMirror != null)
+ {
+ // Find and select the mirror in the hidden remotesList
+ for (int i = 0; i < remotesList.Items.Count; i++)
+ {
+ if (remotesList.Items[i].ToString() == selectedMirror)
+ {
+ remotesList.SelectedIndex = i;
+ break;
+ }
+ }
+ }
+ }
+
+ private string ShowMirrorSelector(string promptText = "Select a Mirror")
+ {
+ if (remotesList.Items.Count == 0)
+ {
+ FlexibleMessageBox.Show(this, "No mirrors available.");
+ return null;
+ }
+
+ // If only one mirror, just inform the user
+ if (remotesList.Items.Count == 1)
+ {
+ string onlyMirror = remotesList.Items[0].ToString();
+ FlexibleMessageBox.Show(this, $"Currently using '{onlyMirror}' mirror. No other mirrors available.");
+ return onlyMirror;
+ }
+
+ using (Form dialog = new Form())
+ {
+ dialog.Text = promptText;
+ dialog.Size = new Size(350, 150);
+ dialog.StartPosition = FormStartPosition.CenterParent;
+ dialog.FormBorderStyle = FormBorderStyle.FixedDialog;
+ dialog.MaximizeBox = false;
+ dialog.MinimizeBox = false;
+ dialog.BackColor = Color.FromArgb(20, 24, 29);
+ dialog.ForeColor = Color.White;
+
+ var label = new Label
+ {
+ Text = $"{promptText} (Current: {remotesList.SelectedItem ?? "None"})",
+ ForeColor = Color.White,
+ AutoSize = true,
+ Location = new Point(15, 15)
+ };
+
+ var comboBox = new ComboBox
+ {
+ Location = new Point(15, 40),
+ Size = new Size(300, 24),
+ DropDownStyle = ComboBoxStyle.DropDownList,
+ BackColor = Color.FromArgb(42, 45, 58),
+ ForeColor = Color.White,
+ FlatStyle = FlatStyle.Flat
+ };
+
+ // Add mirrors to combo
+ foreach (var item in remotesList.Items)
+ {
+ comboBox.Items.Add(item.ToString());
+ }
+
+ // Select current mirror
+ if (remotesList.SelectedIndex >= 0)
+ {
+ comboBox.SelectedIndex = remotesList.SelectedIndex;
+ }
+ else if (comboBox.Items.Count > 0)
+ {
+ comboBox.SelectedIndex = 0;
+ }
+
+ var okButton = CreateStyledButton("OK", DialogResult.OK, new Point(155, 75));
+ var cancelButton = CreateStyledButton("Cancel", DialogResult.Cancel, new Point(240, 75), false);
+
+ dialog.Controls.AddRange(new Control[] { label, comboBox, okButton, cancelButton });
+ dialog.AcceptButton = okButton;
+ dialog.CancelButton = cancelButton;
+
+ if (dialog.ShowDialog(this) == DialogResult.OK && comboBox.SelectedIndex != -1)
+ {
+ return comboBox.SelectedItem.ToString();
+ }
+ }
+
+ return null;
+ }
+
+ private Button CreateStyledButton(string text, DialogResult dialogResult, Point location, bool isPrimary = true)
+ {
+ var button = new Button
+ {
+ Text = text,
+ DialogResult = dialogResult,
+ Location = location,
+ Size = new Size(75, 28),
+ FlatStyle = FlatStyle.Flat,
+ BackColor = Color.FromArgb(42, 45, 58),
+ ForeColor = Color.White,
+ Font = new Font("Segoe UI", 9F),
+ Cursor = Cursors.Hand
+ };
+
+ button.FlatAppearance.BorderSize = 0;
+
+ // Track hover state
+ bool isHovered = false;
+
+ button.MouseEnter += (s, e) => { isHovered = true; button.Invalidate(); };
+ button.MouseLeave += (s, e) => { isHovered = false; button.Invalidate(); };
+
+ button.Paint += (s, e) =>
+ {
+ var btn = s as Button;
+ var g = e.Graphics;
+ g.SmoothingMode = SmoothingMode.AntiAlias;
+ g.PixelOffsetMode = PixelOffsetMode.HighQuality;
+
+ int radius = 4;
+ Rectangle drawRect = new Rectangle(1, 1, btn.Width - 2, btn.Height - 2);
+
+ // Clear with parent background
+ using (SolidBrush clearBrush = new SolidBrush(btn.Parent?.BackColor ?? Color.FromArgb(20, 24, 29)))
+ {
+ g.FillRectangle(clearBrush, 0, 0, btn.Width, btn.Height);
+ }
+
+ using (GraphicsPath path = CreateRoundedRectPath(drawRect, radius))
+ {
+ // Hover: accent color, Normal: dark button color
+ Color bgColor = isHovered
+ ? Color.FromArgb(93, 203, 173)
+ : btn.BackColor;
+
+ Color textColor = isHovered
+ ? Color.FromArgb(20, 20, 20)
+ : btn.ForeColor;
+
+ using (SolidBrush brush = new SolidBrush(bgColor))
+ {
+ g.FillPath(brush, path);
+ }
+
+ // Subtle border on normal state
+ if (!isHovered)
+ {
+ using (Pen borderPen = new Pen(Color.FromArgb(70, 75, 90), 1))
+ {
+ g.DrawPath(borderPen, path);
+ }
+ }
+
+ TextRenderer.DrawText(g, btn.Text, btn.Font,
+ new Rectangle(0, 0, btn.Width, btn.Height), textColor,
+ TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
+ }
+
+ // Set rounded region
+ using (GraphicsPath regionPath = CreateRoundedRectPath(new Rectangle(0, 0, btn.Width, btn.Height), radius))
+ {
+ btn.Region = new Region(regionPath);
+ }
+ };
+
+ return button;
+ }
+
+ private GraphicsPath CreateRoundedRectPath(Rectangle rect, int radius)
+ {
+ GraphicsPath path = new GraphicsPath();
+
+ if (radius <= 0)
+ {
+ path.AddRectangle(rect);
+ return path;
+ }
+
+ int diameter = radius * 2;
+ diameter = Math.Min(diameter, Math.Min(rect.Width, rect.Height));
+ radius = diameter / 2;
+
+ Rectangle arcRect = new Rectangle(rect.Location, new Size(diameter, diameter));
+
+ path.AddArc(arcRect, 180, 90);
+ arcRect.X = rect.Right - diameter;
+ path.AddArc(arcRect, 270, 90);
+ arcRect.Y = rect.Bottom - diameter;
+ path.AddArc(arcRect, 0, 90);
+ arcRect.X = rect.Left;
+ path.AddArc(arcRect, 90, 90);
+
+ path.CloseFigure();
+ return path;
+ }
+
+ private void UpdateFilterButtonStates()
+ {
+ Color inactiveStroke = Color.FromArgb(74, 74, 74);
+ Color activeBg = Color.FromArgb(40, 45, 55);
+ Color inactiveBg = Color.FromArgb(32, 35, 45);
+
+ // btnInstalled state
+ if (upToDate_Clicked)
+ {
+ btnInstalled.StrokeColor = ColorInstalled;
+ btnInstalled.Inactive1 = activeBg;
+ btnInstalled.Inactive2 = activeBg;
+ }
+ else
+ {
+ btnInstalled.StrokeColor = inactiveStroke;
+ btnInstalled.Inactive1 = inactiveBg;
+ btnInstalled.Inactive2 = inactiveBg;
+ }
+
+ // btnUpdateAvailable state
+ if (updateAvailableClicked)
+ {
+ btnUpdateAvailable.StrokeColor = ColorUpdateAvailable;
+ btnUpdateAvailable.Inactive1 = activeBg;
+ btnUpdateAvailable.Inactive2 = activeBg;
+ }
+ else
+ {
+ btnUpdateAvailable.StrokeColor = inactiveStroke;
+ btnUpdateAvailable.Inactive1 = inactiveBg;
+ btnUpdateAvailable.Inactive2 = inactiveBg;
+ }
+
+ // btnNewerThanList state
+ if (NeedsDonation_Clicked)
+ {
+ btnNewerThanList.StrokeColor = ColorDonateGame;
+ btnNewerThanList.Inactive1 = activeBg;
+ btnNewerThanList.Inactive2 = activeBg;
+ }
+ else
+ {
+ btnNewerThanList.StrokeColor = inactiveStroke;
+ btnNewerThanList.Inactive1 = inactiveBg;
+ btnNewerThanList.Inactive2 = inactiveBg;
+ }
+
+ // Force repaint
+ btnInstalled.Invalidate();
+ btnUpdateAvailable.Invalidate();
+ btnNewerThanList.Invalidate();
+ }
+
+ private void UnfocusSearchTextBox(object sender, EventArgs e)
+ {
+ // Only unfocus if the search text box currently has focus
+ if (searchTextBox.Focused)
+ {
+ // Move focus to the appropriate view
+ if (isGalleryView && gamesGalleryView.Visible)
+ {
+ gamesGalleryView.Focus();
+ }
+ else
+ {
+ gamesListView.Focus();
+ }
+ }
+ }
+
+ private void UpdateNotesScrollBar()
+ {
+ // Check if content height exceeds visible height
+ int contentHeight = notesRichTextBox.GetPositionFromCharIndex(notesRichTextBox.TextLength).Y
+ + notesRichTextBox.Font.Height;
+
+ if (contentHeight > notesRichTextBox.ClientSize.Height)
+ {
+ notesRichTextBox.ScrollBars = RichTextBoxScrollBars.Vertical;
+ }
+ else
+ {
+ notesRichTextBox.ScrollBars = RichTextBoxScrollBars.None;
+ }
+ }
+
+ public class CenteredMenuRenderer : ToolStripProfessionalRenderer
+ {
+ protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e)
+ {
+ var rect = new Rectangle(Point.Empty, e.Item.Size);
+ Color bgColor = e.Item.Selected ? Color.FromArgb(55, 58, 65) : Color.FromArgb(40, 42, 48);
+ using (var brush = new SolidBrush(bgColor))
+ e.Graphics.FillRectangle(brush, rect);
+ }
+
+ protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
+ {
+ // Use the full item bounds for centered text
+ var textRect = new Rectangle(0, 0, e.Item.Width, e.Item.Height);
+ TextRenderer.DrawText(e.Graphics, e.Text, e.TextFont, textRect, e.TextColor,
+ TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
+ }
+
+ protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e)
+ {
+ using (var brush = new SolidBrush(Color.FromArgb(40, 42, 48)))
+ e.Graphics.FillRectangle(brush, e.AffectedBounds);
+ }
+
+ protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
+ {
+ using (var pen = new Pen(Color.FromArgb(60, 63, 70)))
+ e.Graphics.DrawRectangle(pen, 0, 0, e.AffectedBounds.Width - 1, e.AffectedBounds.Height - 1);
+ }
+ }
+
+ public void SetTrailerVisibility(bool visible)
+ {
+ webView21.Enabled = visible;
+ webView21.Visible = visible;
+
+ if (!visible) ShowVideoPlaceholder();
+ }
+
+ private void InitializeModernPanels()
+ {
+ Color panelColor = Color.FromArgb(24, 26, 30);
+
+ // Create rounded panel for notesRichTextBox
+ notesPanel = CreateRoundedPanel(notesRichTextBox, panelColor, 8, true);
+
+ // Create rounded panel for gamesQueListBox
+ queuePanel = CreateRoundedPanel(gamesQueListBox, panelColor, 8, false);
+
+ // Bring labels to front so they appear above the panels
+ gamesQueueLabel.BringToFront();
+ lblNotes.BringToFront();
+ }
+
+ private Panel CreateRoundedPanel(Control childControl, Color panelColor, int radius, bool bNotes)
+ {
+ // Create wrapper panel
+ var panel = new Panel
+ {
+ Location = childControl.Location,
+ Size = new Size(childControl.Width + 24, childControl.Height + 25),
+ Anchor = childControl.Anchor,
+ BackColor = Color.Transparent,
+ Padding = new Padding(12, 10, 12, 10)
+ };
+
+ // Enable double buffering
+ typeof(Panel).InvokeMember("DoubleBuffered",
+ System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic,
+ null, panel, new object[] { true });
+
+ // Add paint handler for rounded corners
+ panel.Paint += (sender, e) =>
+ {
+ var p = sender as Panel;
+ e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
+ e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
+
+ var rect = new Rectangle(0, 0, p.Width - 1, p.Height - 1);
+
+ using (var path = CreateRoundedRectPath(rect, radius))
+ {
+ // Fill background
+ using (var brush = new SolidBrush(panelColor))
+ {
+ e.Graphics.FillPath(brush, path);
+ }
+ }
+
+ // Apply rounded region
+ using (var regionPath = CreateRoundedRectPath(new Rectangle(0, 0, p.Width, p.Height), radius))
+ {
+ p.Region = new Region(regionPath);
+ }
+ };
+
+ // Move child control into panel
+ var parent = childControl.Parent;
+ parent.Controls.Add(panel);
+ parent.Controls.Remove(childControl);
+
+ // Update child control properties
+ childControl.Location = new Point(bNotes ? 6 : 12, 10);
+ childControl.Size = new Size(bNotes ? panel.Width - 18 : panel.Width - 24, panel.Height - 49);
+ childControl.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ childControl.BackColor = panelColor;
+
+ panel.Controls.Add(childControl);
+ panel.BringToFront();
+
+ return panel;
+ }
+
+ private void notesRichTextBox_LinkClicked(object sender, LinkClickedEventArgs e)
+ {
+ try
+ {
+ Process.Start(e.LinkText);
+ }
+ catch (Exception ex)
+ {
+ Logger.Log($"Failed to open link: {ex.Message}", LogLevel.WARNING);
+ }
+ }
+
+ private void gamesQueListBox_DrawItem(object sender, DrawItemEventArgs e)
+ {
+ if (e.Index < 0) return;
+
+ // Determine colors based on selection state
+ Color backColor = (e.State & DrawItemState.Selected) == DrawItemState.Selected
+ ? Color.FromArgb(93, 203, 173) // Accent color for selected
+ : gamesQueListBox.BackColor;
+
+ Color foreColor = (e.State & DrawItemState.Selected) == DrawItemState.Selected
+ ? Color.FromArgb(20, 20, 20) // Dark text on accent
+ : gamesQueListBox.ForeColor;
+
+ Font font = (e.State & DrawItemState.Selected) == DrawItemState.Selected
+ ? new Font("Microsoft Sans Serif", 10F, FontStyle.Bold)
+ : new Font("Microsoft Sans Serif", 10F, FontStyle.Regular);
+
+ // Clear the item background first
+ using (SolidBrush clearBrush = new SolidBrush(gamesQueListBox.BackColor))
+ {
+ e.Graphics.FillRectangle(clearBrush, e.Bounds);
+ }
+
+ // Draw rounded background
+ e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
+ e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
+ int radius = 1;
+ int margin = 4;
+ Rectangle roundedRect = new Rectangle(
+ e.Bounds.X,
+ e.Bounds.Y,
+ e.Bounds.Width - (margin * 2),
+ e.Bounds.Height
+ );
+
+ using (GraphicsPath path = CreateRoundedRectPath(roundedRect, radius))
+ using (SolidBrush backgroundBrush = new SolidBrush(backColor))
+ {
+ e.Graphics.FillPath(backgroundBrush, path);
+ }
+
+ // Draw text with padding
+ string text = gamesQueListBox.Items[e.Index].ToString();
+ Rectangle textRect = new Rectangle(
+ roundedRect.X + 4,
+ roundedRect.Y,
+ roundedRect.Width - 8,
+ roundedRect.Height
+ );
+
+ using (SolidBrush textBrush = new SolidBrush(foreColor))
+ {
+ var sf = new StringFormat
+ {
+ Alignment = StringAlignment.Near,
+ LineAlignment = StringAlignment.Center,
+ Trimming = StringTrimming.EllipsisCharacter,
+ FormatFlags = StringFormatFlags.NoWrap
+ };
+ e.Graphics.DrawString(text, font, textBrush, textRect, sf);
+ }
+ }
+
+ private void ApplyWebViewRoundedCorners()
+ {
+ if (webView21 == null) return;
+
+ int radius = 8;
+ using (var path = CreateRoundedRectPath(new Rectangle(0, 0, webView21.Width, webView21.Height), radius))
+ {
+ webView21.Region = new Region(path);
+ }
+
+ // Re-apply on resize
+ webView21.SizeChanged -= WebView21_SizeChanged;
+ webView21.SizeChanged += WebView21_SizeChanged;
+ }
+
+ private void WebView21_SizeChanged(object sender, EventArgs e)
+ {
+ if (webView21 == null || webView21.Width <= 0 || webView21.Height <= 0) return;
+
+ int radius = 8;
+ using (var path = CreateRoundedRectPath(new Rectangle(0, 0, webView21.Width, webView21.Height), radius))
+ {
+ webView21.Region = new Region(path);
+ }
+ }
}
public static class ControlExtensions
@@ -5700,6 +6722,4 @@ function onYouTubeIframeAPIReady() {
}
}
}
-
-
}
diff --git a/MainForm.resx b/MainForm.resx
index d8f7f90..5f0ed55 100644
--- a/MainForm.resx
+++ b/MainForm.resx
@@ -118,72 +118,72 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- 798, 17
+ 1165, 17
- 428, 56
+ 428, 54
- 596, 17
+ 966, 17
- 539, 95
+ 705, 91
- 359, 95
+ 526, 91
- 17, 17
+ 390, 17
- 187, 95
+ 355, 91
- 17, 95
+ 187, 91
- 1363, 56
+ 17, 91
- 1163, 56
+ 1157, 54
- 948, 56
+ 945, 54
- 743, 56
+ 741, 54
- 711, 95
+ 876, 91
- 569, 56
+ 568, 54
- 221, 56
+ 223, 54
- 392, 17
+ 764, 17
- 209, 17
+ 581, 17
-
- 17, 56
-
-
- 1333, 17
+
+ 17, 17
- 1124, 17
+ 17, 54
- 955, 17
+ 1320, 17
- 855, 95
+ 1021, 91
+
+
+ 215, 17
- 159
+ 113
\ No newline at end of file
diff --git a/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs
index cbba1d8..25683fc 100644
--- a/Properties/Settings.Designer.cs
+++ b/Properties/Settings.Designer.cs
@@ -109,7 +109,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 9pt")]
+ [global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 10pt")]
public global::System.Drawing.Font FontStyle {
get {
return ((global::System.Drawing.Font)(this["FontStyle"]));
@@ -516,7 +516,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("DarkGray")]
+ [global::System.Configuration.DefaultSettingValueAttribute("White")]
public global::System.Drawing.Color FontColor {
get {
return ((global::System.Drawing.Color)(this["FontColor"]));
@@ -540,7 +540,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("25, 25, 25")]
+ [global::System.Configuration.DefaultSettingValueAttribute("42, 45, 58")]
public global::System.Drawing.Color SubButtonColor {
get {
return ((global::System.Drawing.Color)(this["SubButtonColor"]));
diff --git a/Properties/Settings.settings b/Properties/Settings.settings
index f839a12..75c1c92 100644
--- a/Properties/Settings.settings
+++ b/Properties/Settings.settings
@@ -24,7 +24,7 @@
True
- Microsoft Sans Serif, 9pt
+ Microsoft Sans Serif, 10pt
@@ -126,13 +126,13 @@
False
- DarkGray
+ White
25, 25, 25
- 25, 25, 25
+ 42, 45, 58
25, 25, 25
diff --git a/QuestForm.Designer.cs b/QuestForm.Designer.cs
index 94148b0..e8a2d02 100644
--- a/QuestForm.Designer.cs
+++ b/QuestForm.Designer.cs
@@ -7,8 +7,6 @@ namespace AndroidSideloader
///
/// Required designer variable.
///
- ///
-
private System.ComponentModel.IContainer components = null;
///
@@ -33,378 +31,426 @@ namespace AndroidSideloader
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(QuestForm));
- this.label1 = new System.Windows.Forms.Label();
- this.label2 = new System.Windows.Forms.Label();
- this.label11 = new System.Windows.Forms.Label();
- this.label12 = new System.Windows.Forms.Label();
- this.DeleteShots = new System.Windows.Forms.CheckBox();
- this.splitter1 = new System.Windows.Forms.Splitter();
- this.label10 = new System.Windows.Forms.Label();
- this.label14 = new System.Windows.Forms.Label();
- this.label16 = new System.Windows.Forms.Label();
- this.CPUComboBox = new System.Windows.Forms.ComboBox();
- this.GPUComboBox = new System.Windows.Forms.ComboBox();
- this.ResolutionLabel = new System.Windows.Forms.Label();
+ this.lblUsernameSection = new System.Windows.Forms.Label();
+ this.lblMediaSection = new System.Windows.Forms.Label();
+ this.lblPerformanceSection = new System.Windows.Forms.Label();
this.GlobalUsername = new System.Windows.Forms.TextBox();
- this.TextureResTextBox = new System.Windows.Forms.TextBox();
- this.RefreshRateComboBox = new System.Windows.Forms.ComboBox();
- this.btnApplyTempSettings = new AndroidSideloader.RoundButton();
- this.questVids = new AndroidSideloader.RoundButton();
- this.questPics = new AndroidSideloader.RoundButton();
this.btnApplyUsername = new AndroidSideloader.RoundButton();
- this.label3 = new System.Windows.Forms.Label();
+ this.questPics = new AndroidSideloader.RoundButton();
+ this.questVids = new AndroidSideloader.RoundButton();
+ this.lblScreenshotsPath = new System.Windows.Forms.Label();
+ this.lblRecordingsPath = new System.Windows.Forms.Label();
+ this.toggleDeleteAfterTransfer = new AndroidSideloader.ToggleSwitch();
+ this.lblDeleteAfterTransfer = new System.Windows.Forms.Label();
+ this.lblPerformanceNote = new System.Windows.Forms.Label();
+ this.lblRefreshRate = new System.Windows.Forms.Label();
+ this.RefreshRateComboBox = new System.Windows.Forms.ComboBox();
+ this.lblGpuLevel = new System.Windows.Forms.Label();
+ this.GPUComboBox = new System.Windows.Forms.ComboBox();
+ this.lblCpuLevel = new System.Windows.Forms.Label();
+ this.CPUComboBox = new System.Windows.Forms.ComboBox();
+ this.lblResolution = new System.Windows.Forms.Label();
+ this.TextureResTextBox = new System.Windows.Forms.TextBox();
+ this.btnApplyTempSettings = new AndroidSideloader.RoundButton();
+ this.separator1 = new System.Windows.Forms.Panel();
+ this.separator2 = new System.Windows.Forms.Panel();
+ this.btnClose = new AndroidSideloader.RoundButton();
this.SuspendLayout();
//
- // label1
+ // lblUsernameSection
//
- this.label1.AutoSize = true;
- this.label1.BackColor = System.Drawing.Color.Transparent;
- this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label1.ForeColor = System.Drawing.Color.LightCyan;
- this.label1.Location = new System.Drawing.Point(72, 276);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(165, 20);
- this.label1.TabIndex = 6;
- this.label1.Text = "Temporary Settings";
- this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ this.lblUsernameSection.AutoSize = true;
+ this.lblUsernameSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.lblUsernameSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.lblUsernameSection.Location = new System.Drawing.Point(20, 15);
+ this.lblUsernameSection.Name = "lblUsernameSection";
+ this.lblUsernameSection.Size = new System.Drawing.Size(80, 20);
+ this.lblUsernameSection.TabIndex = 0;
+ this.lblUsernameSection.Text = "Username";
//
- // label2
+ // lblMediaSection
//
- this.label2.AutoSize = true;
- this.label2.BackColor = System.Drawing.Color.Transparent;
- this.label2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label2.ForeColor = System.Drawing.Color.LightSteelBlue;
- this.label2.Location = new System.Drawing.Point(83, 303);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(143, 16);
- this.label2.TabIndex = 6;
- this.label2.Text = "Reboot Quest to Reset";
- this.label2.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ this.lblMediaSection.AutoSize = true;
+ this.lblMediaSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.lblMediaSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.lblMediaSection.Location = new System.Drawing.Point(20, 97);
+ this.lblMediaSection.Name = "lblMediaSection";
+ this.lblMediaSection.Size = new System.Drawing.Size(114, 20);
+ this.lblMediaSection.TabIndex = 3;
+ this.lblMediaSection.Text = "Media Transfer";
//
- // label11
+ // lblPerformanceSection
//
- this.label11.AutoSize = true;
- this.label11.BackColor = System.Drawing.Color.Transparent;
- this.label11.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label11.ForeColor = System.Drawing.Color.LightCyan;
- this.label11.Location = new System.Drawing.Point(18, 94);
- this.label11.Name = "label11";
- this.label11.Size = new System.Drawing.Size(272, 20);
- this.label11.TabIndex = 6;
- this.label11.Text = "Transfer screenshots to Desktop";
- this.label11.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // label12
- //
- this.label12.AutoSize = true;
- this.label12.BackColor = System.Drawing.Color.Transparent;
- this.label12.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.label12.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label12.ForeColor = System.Drawing.Color.LightCyan;
- this.label12.Location = new System.Drawing.Point(92, 9);
- this.label12.Name = "label12";
- this.label12.Size = new System.Drawing.Size(124, 20);
- this.label12.TabIndex = 6;
- this.label12.Text = "Set Username";
- this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // DeleteShots
- //
- this.DeleteShots.AutoSize = true;
- this.DeleteShots.BackColor = System.Drawing.Color.Transparent;
- this.DeleteShots.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
- this.DeleteShots.Cursor = System.Windows.Forms.Cursors.Default;
- this.DeleteShots.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.DeleteShots.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F);
- this.DeleteShots.ForeColor = System.Drawing.Color.LightSkyBlue;
- this.DeleteShots.Location = new System.Drawing.Point(33, 232);
- this.DeleteShots.Name = "DeleteShots";
- this.DeleteShots.Size = new System.Drawing.Size(242, 21);
- this.DeleteShots.TabIndex = 7;
- this.DeleteShots.Text = "Delete files on Quest after transfer";
- this.DeleteShots.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- this.DeleteShots.UseVisualStyleBackColor = false;
- this.DeleteShots.CheckedChanged += new System.EventHandler(this.DeleteShots_CheckedChanged);
- //
- // splitter1
- //
- this.splitter1.Location = new System.Drawing.Point(0, 0);
- this.splitter1.Name = "splitter1";
- this.splitter1.Size = new System.Drawing.Size(3, 486);
- this.splitter1.TabIndex = 14;
- this.splitter1.TabStop = false;
- //
- // label10
- //
- this.label10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.label10.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
- this.label10.Location = new System.Drawing.Point(-4, 261);
- this.label10.Name = "label10";
- this.label10.Size = new System.Drawing.Size(394, 3);
- this.label10.TabIndex = 15;
- //
- // label14
- //
- this.label14.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.label14.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
- this.label14.Location = new System.Drawing.Point(-4, 80);
- this.label14.Name = "label14";
- this.label14.Size = new System.Drawing.Size(394, 3);
- this.label14.TabIndex = 17;
- //
- // label16
- //
- this.label16.AutoSize = true;
- this.label16.BackColor = System.Drawing.Color.Transparent;
- this.label16.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.label16.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label16.ForeColor = System.Drawing.Color.LightSteelBlue;
- this.label16.Location = new System.Drawing.Point(34, 153);
- this.label16.Name = "label16";
- this.label16.Size = new System.Drawing.Size(240, 16);
- this.label16.TabIndex = 6;
- this.label16.Text = "Exports to: Desktop\\Quest Screenshots";
- this.label16.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // CPUComboBox
- //
- this.CPUComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.CPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.CPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.CPUComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.CPUComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.CPUComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.CPUComboBox.FormattingEnabled = true;
- this.CPUComboBox.Items.AddRange(new object[] {
- "0",
- "1",
- "2",
- "3",
- "4"});
- this.CPUComboBox.Location = new System.Drawing.Point(38, 383);
- this.CPUComboBox.Name = "CPUComboBox";
- this.CPUComboBox.Size = new System.Drawing.Size(232, 26);
- this.CPUComboBox.TabIndex = 2;
- this.CPUComboBox.Text = "Select CPU level (0 for default)";
- //
- // GPUComboBox
- //
- this.GPUComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.GPUComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.GPUComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.GPUComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.GPUComboBox.FormattingEnabled = true;
- this.GPUComboBox.Items.AddRange(new object[] {
- "0",
- "1",
- "2",
- "3",
- "4"});
- this.GPUComboBox.Location = new System.Drawing.Point(38, 354);
- this.GPUComboBox.Name = "GPUComboBox";
- this.GPUComboBox.Size = new System.Drawing.Size(232, 26);
- this.GPUComboBox.TabIndex = 1;
- this.GPUComboBox.Text = "Select GPU level (0 for default)";
- //
- // ResolutionLabel
- //
- this.ResolutionLabel.AutoSize = true;
- this.ResolutionLabel.BackColor = System.Drawing.Color.Transparent;
- this.ResolutionLabel.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.ResolutionLabel.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.ResolutionLabel.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.ResolutionLabel.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.ResolutionLabel.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.ResolutionLabel.Location = new System.Drawing.Point(38, 413);
- this.ResolutionLabel.Name = "ResolutionLabel";
- this.ResolutionLabel.Size = new System.Drawing.Size(153, 18);
- this.ResolutionLabel.TabIndex = 3;
- this.ResolutionLabel.Text = "Resolution (0=default)";
+ this.lblPerformanceSection.AutoSize = true;
+ this.lblPerformanceSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.lblPerformanceSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.lblPerformanceSection.Location = new System.Drawing.Point(20, 232);
+ this.lblPerformanceSection.Name = "lblPerformanceSection";
+ this.lblPerformanceSection.Size = new System.Drawing.Size(147, 20);
+ this.lblPerformanceSection.TabIndex = 9;
+ this.lblPerformanceSection.Text = "Temporary Settings";
//
// GlobalUsername
//
- this.GlobalUsername.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
- this.GlobalUsername.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.GlobalUsername.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.GlobalUsername.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.GlobalUsername.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.GlobalUsername.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.GlobalUsername.Location = new System.Drawing.Point(33, 39);
+ this.GlobalUsername.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.GlobalUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.GlobalUsername.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.GlobalUsername.ForeColor = System.Drawing.Color.White;
+ this.GlobalUsername.Location = new System.Drawing.Point(24, 45);
this.GlobalUsername.Name = "GlobalUsername";
- this.GlobalUsername.Size = new System.Drawing.Size(142, 24);
- this.GlobalUsername.TabIndex = 12;
+ this.GlobalUsername.Size = new System.Drawing.Size(200, 24);
+ this.GlobalUsername.TabIndex = 1;
this.GlobalUsername.TextChanged += new System.EventHandler(this.GlobalUsername_TextChanged);
//
- // TextureResTextBox
- //
- this.TextureResTextBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
- this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.TextureResTextBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.TextureResTextBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.TextureResTextBox.Location = new System.Drawing.Point(38, 436);
- this.TextureResTextBox.Name = "TextureResTextBox";
- this.TextureResTextBox.Size = new System.Drawing.Size(111, 24);
- this.TextureResTextBox.TabIndex = 3;
- this.TextureResTextBox.Text = "0";
- //
- // RefreshRateComboBox
- //
- this.RefreshRateComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.RefreshRateComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.RefreshRateComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.RefreshRateComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.RefreshRateComboBox.FormattingEnabled = true;
- this.RefreshRateComboBox.Items.AddRange(new object[] {
- "72",
- "90",
- "120"});
- this.RefreshRateComboBox.Location = new System.Drawing.Point(38, 325);
- this.RefreshRateComboBox.Name = "RefreshRateComboBox";
- this.RefreshRateComboBox.Size = new System.Drawing.Size(232, 26);
- this.RefreshRateComboBox.TabIndex = 0;
- this.RefreshRateComboBox.Text = "Select refresh rate";
- //
- // btnApplyTempSettings
- //
- this.btnApplyTempSettings.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
- this.btnApplyTempSettings.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
- this.btnApplyTempSettings.BackColor = System.Drawing.Color.Transparent;
- this.btnApplyTempSettings.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.btnApplyTempSettings.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.btnApplyTempSettings.ForeColor = System.Drawing.Color.White;
- this.btnApplyTempSettings.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnApplyTempSettings.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnApplyTempSettings.Location = new System.Drawing.Point(185, 434);
- this.btnApplyTempSettings.Name = "btnApplyTempSettings";
- this.btnApplyTempSettings.Radius = 5;
- this.btnApplyTempSettings.Size = new System.Drawing.Size(85, 25);
- this.btnApplyTempSettings.Stroke = true;
- this.btnApplyTempSettings.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.btnApplyTempSettings.TabIndex = 19;
- this.btnApplyTempSettings.Text = "APPLY";
- this.btnApplyTempSettings.Transparency = false;
- this.btnApplyTempSettings.Click += new System.EventHandler(this.btnApplyTempSettings_Click);
- //
- // questVids
- //
- this.questVids.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
- this.questVids.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
- this.questVids.BackColor = System.Drawing.Color.Transparent;
- this.questVids.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.questVids.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.questVids.ForeColor = System.Drawing.Color.White;
- this.questVids.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.questVids.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.questVids.Location = new System.Drawing.Point(72, 178);
- this.questVids.Name = "questVids";
- this.questVids.Radius = 5;
- this.questVids.Size = new System.Drawing.Size(165, 25);
- this.questVids.Stroke = true;
- this.questVids.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.questVids.TabIndex = 21;
- this.questVids.Text = "RECORDINGS";
- this.questVids.Transparency = false;
- this.questVids.Click += new System.EventHandler(this.questVids_Click);
- //
- // questPics
- //
- this.questPics.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
- this.questPics.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
- this.questPics.BackColor = System.Drawing.Color.Transparent;
- this.questPics.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.questPics.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.questPics.ForeColor = System.Drawing.Color.White;
- this.questPics.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.questPics.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.questPics.Location = new System.Drawing.Point(72, 124);
- this.questPics.Name = "questPics";
- this.questPics.Radius = 5;
- this.questPics.Size = new System.Drawing.Size(165, 25);
- this.questPics.Stroke = true;
- this.questPics.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.questPics.TabIndex = 22;
- this.questPics.Text = "SCREENSHOTS";
- this.questPics.Transparency = false;
- this.questPics.Click += new System.EventHandler(this.questPics_Click);
- //
// btnApplyUsername
//
- this.btnApplyUsername.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
- this.btnApplyUsername.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
+ this.btnApplyUsername.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
+ this.btnApplyUsername.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
this.btnApplyUsername.BackColor = System.Drawing.Color.Transparent;
+ this.btnApplyUsername.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnApplyUsername.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.btnApplyUsername.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.btnApplyUsername.ForeColor = System.Drawing.Color.White;
- this.btnApplyUsername.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnApplyUsername.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnApplyUsername.Location = new System.Drawing.Point(194, 38);
+ this.btnApplyUsername.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnApplyUsername.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnApplyUsername.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnApplyUsername.Enabled = false;
+ this.btnApplyUsername.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.btnApplyUsername.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.btnApplyUsername.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.btnApplyUsername.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.btnApplyUsername.Location = new System.Drawing.Point(234, 45);
this.btnApplyUsername.Name = "btnApplyUsername";
this.btnApplyUsername.Radius = 5;
- this.btnApplyUsername.Size = new System.Drawing.Size(81, 25);
- this.btnApplyUsername.Stroke = true;
- this.btnApplyUsername.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.btnApplyUsername.TabIndex = 27;
+ this.btnApplyUsername.Size = new System.Drawing.Size(80, 25);
+ this.btnApplyUsername.Stroke = false;
+ this.btnApplyUsername.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.btnApplyUsername.TabIndex = 1;
this.btnApplyUsername.Text = "APPLY";
this.btnApplyUsername.Transparency = false;
this.btnApplyUsername.Click += new System.EventHandler(this.btnApplyUsername_Click);
//
- // label3
+ // questPics
//
- this.label3.AutoSize = true;
- this.label3.BackColor = System.Drawing.Color.Transparent;
- this.label3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label3.ForeColor = System.Drawing.Color.LightSteelBlue;
- this.label3.Location = new System.Drawing.Point(37, 206);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(235, 16);
- this.label3.TabIndex = 28;
- this.label3.Text = "Exports to: Desktop\\Quest Recordings";
- this.label3.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ this.questPics.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.questPics.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.questPics.BackColor = System.Drawing.Color.Transparent;
+ this.questPics.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.questPics.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.questPics.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.questPics.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.questPics.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.questPics.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.questPics.ForeColor = System.Drawing.Color.White;
+ this.questPics.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.questPics.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.questPics.Location = new System.Drawing.Point(24, 127);
+ this.questPics.Name = "questPics";
+ this.questPics.Radius = 5;
+ this.questPics.Size = new System.Drawing.Size(140, 28);
+ this.questPics.Stroke = true;
+ this.questPics.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.questPics.TabIndex = 2;
+ this.questPics.Text = "Screenshots";
+ this.questPics.Transparency = false;
+ this.questPics.Click += new System.EventHandler(this.questPics_Click);
+ //
+ // questVids
+ //
+ this.questVids.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.questVids.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.questVids.BackColor = System.Drawing.Color.Transparent;
+ this.questVids.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.questVids.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.questVids.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.questVids.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.questVids.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.questVids.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.questVids.ForeColor = System.Drawing.Color.White;
+ this.questVids.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.questVids.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.questVids.Location = new System.Drawing.Point(174, 127);
+ this.questVids.Name = "questVids";
+ this.questVids.Radius = 5;
+ this.questVids.Size = new System.Drawing.Size(140, 28);
+ this.questVids.Stroke = true;
+ this.questVids.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.questVids.TabIndex = 3;
+ this.questVids.Text = "Recordings";
+ this.questVids.Transparency = false;
+ this.questVids.Click += new System.EventHandler(this.questVids_Click);
+ //
+ // lblScreenshotsPath
+ //
+ this.lblScreenshotsPath.AutoSize = true;
+ this.lblScreenshotsPath.Font = new System.Drawing.Font("Segoe UI", 8F);
+ this.lblScreenshotsPath.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.lblScreenshotsPath.Location = new System.Drawing.Point(24, 158);
+ this.lblScreenshotsPath.Name = "lblScreenshotsPath";
+ this.lblScreenshotsPath.Size = new System.Drawing.Size(161, 13);
+ this.lblScreenshotsPath.TabIndex = 4;
+ this.lblScreenshotsPath.Text = "→ Desktop\\Quest Screenshots";
+ //
+ // lblRecordingsPath
+ //
+ this.lblRecordingsPath.AutoSize = true;
+ this.lblRecordingsPath.Font = new System.Drawing.Font("Segoe UI", 8F);
+ this.lblRecordingsPath.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.lblRecordingsPath.Location = new System.Drawing.Point(174, 158);
+ this.lblRecordingsPath.Name = "lblRecordingsPath";
+ this.lblRecordingsPath.Size = new System.Drawing.Size(157, 13);
+ this.lblRecordingsPath.TabIndex = 5;
+ this.lblRecordingsPath.Text = "→ Desktop\\Quest Recordings";
+ //
+ // toggleDeleteAfterTransfer
+ //
+ this.toggleDeleteAfterTransfer.BackColor = System.Drawing.Color.Transparent;
+ this.toggleDeleteAfterTransfer.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleDeleteAfterTransfer.Location = new System.Drawing.Point(27, 189);
+ this.toggleDeleteAfterTransfer.Name = "toggleDeleteAfterTransfer";
+ this.toggleDeleteAfterTransfer.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleDeleteAfterTransfer.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleDeleteAfterTransfer.Size = new System.Drawing.Size(36, 18);
+ this.toggleDeleteAfterTransfer.TabIndex = 6;
+ this.toggleDeleteAfterTransfer.ThumbColor = System.Drawing.Color.White;
+ this.toggleDeleteAfterTransfer.CheckedChanged += new System.EventHandler(this.toggleDeleteAfterTransfer_CheckedChanged);
+ //
+ // lblDeleteAfterTransfer
+ //
+ this.lblDeleteAfterTransfer.AutoSize = true;
+ this.lblDeleteAfterTransfer.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblDeleteAfterTransfer.ForeColor = System.Drawing.Color.White;
+ this.lblDeleteAfterTransfer.Location = new System.Drawing.Point(72, 188);
+ this.lblDeleteAfterTransfer.Name = "lblDeleteAfterTransfer";
+ this.lblDeleteAfterTransfer.Size = new System.Drawing.Size(195, 17);
+ this.lblDeleteAfterTransfer.TabIndex = 7;
+ this.lblDeleteAfterTransfer.Text = "Delete from Quest after transfer";
+ //
+ // lblPerformanceNote
+ //
+ this.lblPerformanceNote.AutoSize = true;
+ this.lblPerformanceNote.Font = new System.Drawing.Font("Segoe UI", 8F);
+ this.lblPerformanceNote.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.lblPerformanceNote.Location = new System.Drawing.Point(21, 254);
+ this.lblPerformanceNote.Name = "lblPerformanceNote";
+ this.lblPerformanceNote.Size = new System.Drawing.Size(120, 13);
+ this.lblPerformanceNote.TabIndex = 10;
+ this.lblPerformanceNote.Text = "Reboot Quest to reset";
+ //
+ // lblRefreshRate
+ //
+ this.lblRefreshRate.AutoSize = true;
+ this.lblRefreshRate.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.lblRefreshRate.ForeColor = System.Drawing.Color.White;
+ this.lblRefreshRate.Location = new System.Drawing.Point(24, 280);
+ this.lblRefreshRate.Name = "lblRefreshRate";
+ this.lblRefreshRate.Size = new System.Drawing.Size(72, 15);
+ this.lblRefreshRate.TabIndex = 11;
+ this.lblRefreshRate.Text = "Refresh Rate";
+ //
+ // RefreshRateComboBox
+ //
+ this.RefreshRateComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.RefreshRateComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.RefreshRateComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.RefreshRateComboBox.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.RefreshRateComboBox.ForeColor = System.Drawing.Color.White;
+ this.RefreshRateComboBox.FormattingEnabled = true;
+ this.RefreshRateComboBox.Items.AddRange(new object[] {
+ "72 Hz",
+ "90 Hz",
+ "120 Hz"});
+ this.RefreshRateComboBox.Location = new System.Drawing.Point(24, 298);
+ this.RefreshRateComboBox.Name = "RefreshRateComboBox";
+ this.RefreshRateComboBox.Size = new System.Drawing.Size(130, 23);
+ this.RefreshRateComboBox.TabIndex = 12;
+ //
+ // lblGpuLevel
+ //
+ this.lblGpuLevel.AutoSize = true;
+ this.lblGpuLevel.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.lblGpuLevel.ForeColor = System.Drawing.Color.White;
+ this.lblGpuLevel.Location = new System.Drawing.Point(170, 280);
+ this.lblGpuLevel.Name = "lblGpuLevel";
+ this.lblGpuLevel.Size = new System.Drawing.Size(60, 15);
+ this.lblGpuLevel.TabIndex = 13;
+ this.lblGpuLevel.Text = "GPU Level";
+ //
+ // GPUComboBox
+ //
+ this.GPUComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.GPUComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.GPUComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.GPUComboBox.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.GPUComboBox.ForeColor = System.Drawing.Color.White;
+ this.GPUComboBox.FormattingEnabled = true;
+ this.GPUComboBox.Items.AddRange(new object[] {
+ "0 (Default)",
+ "1",
+ "2",
+ "3",
+ "4"});
+ this.GPUComboBox.Location = new System.Drawing.Point(170, 298);
+ this.GPUComboBox.Name = "GPUComboBox";
+ this.GPUComboBox.Size = new System.Drawing.Size(130, 23);
+ this.GPUComboBox.TabIndex = 14;
+ //
+ // lblCpuLevel
+ //
+ this.lblCpuLevel.AutoSize = true;
+ this.lblCpuLevel.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.lblCpuLevel.ForeColor = System.Drawing.Color.White;
+ this.lblCpuLevel.Location = new System.Drawing.Point(24, 330);
+ this.lblCpuLevel.Name = "lblCpuLevel";
+ this.lblCpuLevel.Size = new System.Drawing.Size(60, 15);
+ this.lblCpuLevel.TabIndex = 15;
+ this.lblCpuLevel.Text = "CPU Level";
+ //
+ // CPUComboBox
+ //
+ this.CPUComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.CPUComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.CPUComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.CPUComboBox.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.CPUComboBox.ForeColor = System.Drawing.Color.White;
+ this.CPUComboBox.FormattingEnabled = true;
+ this.CPUComboBox.Items.AddRange(new object[] {
+ "0 (Default)",
+ "1",
+ "2",
+ "3",
+ "4"});
+ this.CPUComboBox.Location = new System.Drawing.Point(24, 348);
+ this.CPUComboBox.Name = "CPUComboBox";
+ this.CPUComboBox.Size = new System.Drawing.Size(130, 23);
+ this.CPUComboBox.TabIndex = 16;
+ //
+ // lblResolution
+ //
+ this.lblResolution.AutoSize = true;
+ this.lblResolution.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.lblResolution.ForeColor = System.Drawing.Color.White;
+ this.lblResolution.Location = new System.Drawing.Point(170, 330);
+ this.lblResolution.Name = "lblResolution";
+ this.lblResolution.Size = new System.Drawing.Size(63, 15);
+ this.lblResolution.TabIndex = 17;
+ this.lblResolution.Text = "Resolution";
+ //
+ // TextureResTextBox
+ //
+ this.TextureResTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.TextureResTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.TextureResTextBox.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.TextureResTextBox.ForeColor = System.Drawing.Color.White;
+ this.TextureResTextBox.Location = new System.Drawing.Point(170, 348);
+ this.TextureResTextBox.Name = "TextureResTextBox";
+ this.TextureResTextBox.Size = new System.Drawing.Size(130, 23);
+ this.TextureResTextBox.TabIndex = 18;
+ this.TextureResTextBox.Text = "0";
+ //
+ // btnApplyTempSettings
+ //
+ this.btnApplyTempSettings.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
+ this.btnApplyTempSettings.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
+ this.btnApplyTempSettings.BackColor = System.Drawing.Color.Transparent;
+ this.btnApplyTempSettings.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnApplyTempSettings.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.btnApplyTempSettings.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnApplyTempSettings.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnApplyTempSettings.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnApplyTempSettings.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.btnApplyTempSettings.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
+ this.btnApplyTempSettings.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.btnApplyTempSettings.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.btnApplyTempSettings.Location = new System.Drawing.Point(24, 385);
+ this.btnApplyTempSettings.Name = "btnApplyTempSettings";
+ this.btnApplyTempSettings.Radius = 5;
+ this.btnApplyTempSettings.Size = new System.Drawing.Size(130, 30);
+ this.btnApplyTempSettings.Stroke = false;
+ this.btnApplyTempSettings.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.btnApplyTempSettings.TabIndex = 10;
+ this.btnApplyTempSettings.Text = "APPLY SETTINGS";
+ this.btnApplyTempSettings.Transparency = false;
+ this.btnApplyTempSettings.Click += new System.EventHandler(this.btnApplyTempSettings_Click);
+ //
+ // separator1
+ //
+ this.separator1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.separator1.Location = new System.Drawing.Point(20, 85);
+ this.separator1.Name = "separator1";
+ this.separator1.Size = new System.Drawing.Size(295, 1);
+ this.separator1.TabIndex = 2;
+ //
+ // separator2
+ //
+ this.separator2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.separator2.Location = new System.Drawing.Point(20, 220);
+ this.separator2.Name = "separator2";
+ this.separator2.Size = new System.Drawing.Size(295, 1);
+ this.separator2.TabIndex = 8;
+ //
+ // btnClose
+ //
+ this.btnClose.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.btnClose.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.btnClose.BackColor = System.Drawing.Color.Transparent;
+ this.btnClose.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnClose.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.btnClose.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnClose.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnClose.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnClose.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.btnClose.ForeColor = System.Drawing.Color.White;
+ this.btnClose.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnClose.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnClose.Location = new System.Drawing.Point(170, 385);
+ this.btnClose.Name = "btnClose";
+ this.btnClose.Radius = 5;
+ this.btnClose.Size = new System.Drawing.Size(130, 30);
+ this.btnClose.Stroke = true;
+ this.btnClose.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.btnClose.TabIndex = 11;
+ this.btnClose.Text = "Close";
+ this.btnClose.Transparency = false;
+ this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
//
// QuestForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
- this.ClientSize = new System.Drawing.Size(309, 486);
- this.Controls.Add(this.label3);
+ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
+ this.CancelButton = this.btnClose;
+ this.ClientSize = new System.Drawing.Size(340, 435);
+ this.Controls.Add(this.lblUsernameSection);
+ this.Controls.Add(this.GlobalUsername);
this.Controls.Add(this.btnApplyUsername);
+ this.Controls.Add(this.separator1);
+ this.Controls.Add(this.lblMediaSection);
this.Controls.Add(this.questPics);
this.Controls.Add(this.questVids);
- this.Controls.Add(this.btnApplyTempSettings);
- this.Controls.Add(this.label14);
- this.Controls.Add(this.label10);
- this.Controls.Add(this.splitter1);
- this.Controls.Add(this.DeleteShots);
- this.Controls.Add(this.label16);
- this.Controls.Add(this.label2);
- this.Controls.Add(this.label11);
- this.Controls.Add(this.label12);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.CPUComboBox);
- this.Controls.Add(this.GPUComboBox);
- this.Controls.Add(this.ResolutionLabel);
- this.Controls.Add(this.GlobalUsername);
- this.Controls.Add(this.TextureResTextBox);
+ this.Controls.Add(this.lblScreenshotsPath);
+ this.Controls.Add(this.lblRecordingsPath);
+ this.Controls.Add(this.toggleDeleteAfterTransfer);
+ this.Controls.Add(this.lblDeleteAfterTransfer);
+ this.Controls.Add(this.separator2);
+ this.Controls.Add(this.lblPerformanceSection);
+ this.Controls.Add(this.lblPerformanceNote);
+ this.Controls.Add(this.lblRefreshRate);
this.Controls.Add(this.RefreshRateComboBox);
+ this.Controls.Add(this.lblGpuLevel);
+ this.Controls.Add(this.GPUComboBox);
+ this.Controls.Add(this.lblCpuLevel);
+ this.Controls.Add(this.CPUComboBox);
+ this.Controls.Add(this.lblResolution);
+ this.Controls.Add(this.TextureResTextBox);
+ this.Controls.Add(this.btnApplyTempSettings);
+ this.Controls.Add(this.btnClose);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.MaximumSize = new System.Drawing.Size(325, 525);
- this.MinimumSize = new System.Drawing.Size(325, 525);
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
this.Name = "QuestForm";
this.ShowIcon = false;
- this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
- this.Text = "Quest settings";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Quest Settings";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.QuestForm_FormClosed);
this.Load += new System.EventHandler(this.QuestForm_Load);
this.ResumeLayout(false);
@@ -414,26 +460,40 @@ namespace AndroidSideloader
#endregion
- private System.Windows.Forms.ComboBox RefreshRateComboBox;
- private System.Windows.Forms.TextBox TextureResTextBox;
- private System.Windows.Forms.Label ResolutionLabel;
- private System.Windows.Forms.ComboBox GPUComboBox;
- private System.Windows.Forms.ComboBox CPUComboBox;
- private Label label1;
- private Label label2;
- private Label label11;
- private Label label12;
- private CheckBox DeleteShots;
- private Splitter splitter1;
- private Label label10;
- private Label label14;
- private Label label16;
- private TextBox GlobalUsername;
- private RoundButton btnApplyTempSettings;
- private RoundButton questVids;
- private RoundButton questPics;
- private RoundButton btnApplyUsername;
- private Label label3;
- }
+ // Section Labels
+ private System.Windows.Forms.Label lblUsernameSection;
+ private System.Windows.Forms.Label lblMediaSection;
+ private System.Windows.Forms.Label lblPerformanceSection;
-}
+ // Username controls
+ private System.Windows.Forms.TextBox GlobalUsername;
+ private RoundButton btnApplyUsername;
+
+ // Media controls
+ private RoundButton questPics;
+ private RoundButton questVids;
+ private System.Windows.Forms.Label lblScreenshotsPath;
+ private System.Windows.Forms.Label lblRecordingsPath;
+ private ToggleSwitch toggleDeleteAfterTransfer;
+ private System.Windows.Forms.Label lblDeleteAfterTransfer;
+
+ // Performance controls
+ private System.Windows.Forms.Label lblPerformanceNote;
+ private System.Windows.Forms.Label lblRefreshRate;
+ private System.Windows.Forms.ComboBox RefreshRateComboBox;
+ private System.Windows.Forms.Label lblGpuLevel;
+ private System.Windows.Forms.ComboBox GPUComboBox;
+ private System.Windows.Forms.Label lblCpuLevel;
+ private System.Windows.Forms.ComboBox CPUComboBox;
+ private System.Windows.Forms.Label lblResolution;
+ private System.Windows.Forms.TextBox TextureResTextBox;
+ private RoundButton btnApplyTempSettings;
+
+ // Separators
+ private System.Windows.Forms.Panel separator1;
+ private System.Windows.Forms.Panel separator2;
+
+ // Close button
+ private RoundButton btnClose;
+ }
+}
\ No newline at end of file
diff --git a/QuestForm.cs b/QuestForm.cs
index 0341b77..96ff3f4 100644
--- a/QuestForm.cs
+++ b/QuestForm.cs
@@ -11,164 +11,167 @@ namespace AndroidSideloader
public static int length = 0;
public static string[] result;
public bool settingsexist = false;
- public bool delsh = false;
+ private bool delsh = false;
+
public QuestForm()
{
InitializeComponent();
}
-
private void btnApplyTempSettings_Click(object sender, EventArgs e)
{
bool ChangesMade = false;
- //Quest 2 settings, might remove them in the future since some of them are broken
if (RefreshRateComboBox.SelectedIndex != -1)
{
- _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.refreshRate {RefreshRateComboBox.SelectedItem}");
+ string refreshRate = RefreshRateComboBox.SelectedItem.ToString().Replace(" Hz", "");
+ _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.refreshRate {refreshRate}");
_ = ADB.RunAdbCommandToString($"shell settings put global 90hz_global {RefreshRateComboBox.SelectedIndex}");
_ = ADB.RunAdbCommandToString($"shell settings put global 90hzglobal {RefreshRateComboBox.SelectedIndex}");
ChangesMade = true;
}
- if (TextureResTextBox.Text.Length > 0)
+ if (TextureResTextBox.Text.Length > 0 && TextureResTextBox.Text != "0")
{
- _ = int.TryParse(TextureResTextBox.Text, out _);
- _ = ADB.RunAdbCommandToString($"shell settings put global texture_size_Global {TextureResTextBox.Text}");
- _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.textureWidth {TextureResTextBox.Text}");
- _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.textureHeight {TextureResTextBox.Text}");
- ChangesMade = true;
+ if (int.TryParse(TextureResTextBox.Text, out _))
+ {
+ _ = ADB.RunAdbCommandToString($"shell settings put global texture_size_Global {TextureResTextBox.Text}");
+ _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.textureWidth {TextureResTextBox.Text}");
+ _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.textureHeight {TextureResTextBox.Text}");
+ ChangesMade = true;
+ }
}
if (CPUComboBox.SelectedIndex != -1)
{
- _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.cpuLevel {CPUComboBox.SelectedItem}");
+ _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.cpuLevel {CPUComboBox.SelectedIndex}");
ChangesMade = true;
}
if (GPUComboBox.SelectedIndex != -1)
{
- _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.gpuLevel {GPUComboBox.SelectedItem}");
+ _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.gpuLevel {GPUComboBox.SelectedIndex}");
ChangesMade = true;
}
if (ChangesMade)
{
- _ = MessageBox.Show("Settings applied!");
+ _ = MessageBox.Show("Settings applied!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
-
public static void setLength(int value)
{
result = new string[value];
}
-
- private void DeleteShots_CheckedChanged(object sender, EventArgs e)
+ private void toggleDeleteAfterTransfer_CheckedChanged(object sender, EventArgs e)
{
- delsh = DeleteShots.Checked;
+ delsh = toggleDeleteAfterTransfer.Checked;
}
private static readonly Random random = new Random();
private static readonly object syncLock = new object();
+
public static int RandomNumber(int min, int max)
{
lock (syncLock)
- { // synchronize
+ {
return random.Next(min, max);
}
}
-
-
-
private void QuestForm_FormClosed(object sender, FormClosedEventArgs e)
{
- if (DeleteShots.Checked)
- {
- settings.Delsh = true;
- settings.Save();
- }
- if (!DeleteShots.Checked)
- {
- settings.Delsh = false;
- settings.Save();
- }
+ settings.Delsh = toggleDeleteAfterTransfer.Checked;
+ settings.Save();
}
private void QuestForm_Load(object sender, EventArgs e)
{
- DeleteShots.Checked = settings.Delsh;
+ CenterToParent();
+ toggleDeleteAfterTransfer.SetCheckedSilent(settings.Delsh);
+ delsh = settings.Delsh;
GlobalUsername.Text = settings.GlobalUsername;
}
- private void DeleteButton_Click(object sender, EventArgs e)
- {
- _ = MessageBox.Show("Ok, Deleted your custom settings file.\nIf you would like to re-enable return here and apply settings again");
- File.Delete($"{settings.MainDir}\\Config.Json");
- }
private void questPics_Click(object sender, EventArgs e)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
- if (!Directory.Exists($"{path}\\Quest ScreenShots"))
+ if (!Directory.Exists($"{path}\\Quest Screenshots"))
{
- _ = Directory.CreateDirectory($"{path}\\Quest ScreenShots");
+ _ = Directory.CreateDirectory($"{path}\\Quest Screenshots");
}
- _ = MessageBox.Show("Please wait until you get the message that the transfer has finished.");
+ _ = MessageBox.Show("Please wait until you get the message that the transfer has finished.",
+ "Transfer Starting", MessageBoxButtons.OK, MessageBoxIcon.Information);
+
Program.form.changeTitle("Pulling files...");
- _ = ADB.RunAdbCommandToString($"pull \"/sdcard/Oculus/Screenshots\" \"{path}\\Quest ScreenShots\"");
+ _ = ADB.RunAdbCommandToString($"pull \"/sdcard/Oculus/Screenshots\" \"{path}\\Quest Screenshots\"");
+
if (delsh)
{
- DialogResult dialogResult = MessageBox.Show("You have chosen to delete files from headset after transferring, so be sure to move them from your desktop to somewhere safe!", "Warning!", MessageBoxButtons.OKCancel);
+ DialogResult dialogResult = MessageBox.Show(
+ "You have chosen to delete files from headset after transferring.\n\nMake sure to move them from your desktop to somewhere safe!",
+ "Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
+
if (dialogResult == DialogResult.OK)
{
_ = ADB.RunAdbCommandToString("shell rm -r /sdcard/Oculus/Screenshots");
_ = ADB.RunAdbCommandToString("shell mkdir /sdcard/Oculus/Screenshots");
}
}
- _ = MessageBox.Show("Transfer finished! ScreenShots can be found in a folder named Quest Screenshots on your desktop!");
+
+ _ = MessageBox.Show("Transfer finished!\n\nScreenshots can be found in:\nDesktop\\Quest Screenshots",
+ "Complete", MessageBoxButtons.OK, MessageBoxIcon.Information);
Program.form.changeTitle("Done!");
}
+
private void questVids_Click(object sender, EventArgs e)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
+
if (!Directory.Exists($"{path}\\Quest Recordings"))
{
_ = Directory.CreateDirectory($"{path}\\Quest Recordings");
}
- _ = MessageBox.Show("Please wait until you get the message that the transfer has finished.");
+ _ = MessageBox.Show("Please wait until you get the message that the transfer has finished.",
+ "Transfer Starting", MessageBoxButtons.OK, MessageBoxIcon.Information);
+
Program.form.changeTitle("Pulling files...");
_ = ADB.RunAdbCommandToString($"pull \"/sdcard/Oculus/Videoshots\" \"{path}\\Quest Recordings\"");
+
if (delsh)
{
- DialogResult dialogResult = MessageBox.Show("You have chosen to delete files from headset after transferring, so be sure to move them from your desktop to somewhere safe!", "Warning!", MessageBoxButtons.OKCancel);
+ DialogResult dialogResult = MessageBox.Show(
+ "You have chosen to delete files from headset after transferring.\n\nMake sure to move them from your desktop to somewhere safe!",
+ "Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
+
if (dialogResult == DialogResult.OK)
{
_ = ADB.RunAdbCommandToString("shell rm -r /sdcard/Oculus/Videoshots");
_ = ADB.RunAdbCommandToString("shell mkdir /sdcard/Oculus/Videoshots");
}
}
- _ = MessageBox.Show("Transfer finished! Recordings can be found in a folder named Quest Recordings on your desktop!");
+
+ _ = MessageBox.Show("Transfer finished!\n\nRecordings can be found in:\nDesktop\\Quest Recordings",
+ "Complete", MessageBoxButtons.OK, MessageBoxIcon.Information);
Program.form.changeTitle("Done!");
}
private void btnApplyUsername_Click(object sender, EventArgs e)
{
_ = ADB.RunAdbCommandToString($"shell settings put global username {GlobalUsername.Text}");
- _ = MessageBox.Show($"Username set as {GlobalUsername.Text}", "Success");
+ _ = MessageBox.Show($"Username set to: {GlobalUsername.Text}", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
- private void Form_KeyDown(object sender, KeyEventArgs e)
+ private void btnClose_Click(object sender, EventArgs e)
{
- if (e.KeyCode == Keys.Escape)
- {
- Close();
- }
+ Close();
}
+
protected override bool ProcessDialogKey(Keys keyData)
{
if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape)
@@ -182,8 +185,12 @@ namespace AndroidSideloader
private void GlobalUsername_TextChanged(object sender, EventArgs e)
{
btnApplyUsername.Enabled = GlobalUsername.TextLength > 0;
+ btnApplyUsername.ForeColor = System.Drawing.Color.FromArgb(
+ ((int)(((byte)(btnApplyUsername.Enabled ? 30 : 80)))),
+ ((int)(((byte)(btnApplyUsername.Enabled ? 24 : 80)))),
+ ((int)(((byte)(btnApplyUsername.Enabled ? 29 : 80)))));
+
settings.GlobalUsername = GlobalUsername.Text;
- settings.Save();
}
}
-}
+}
\ No newline at end of file
diff --git a/RoundButton.cs b/RoundButton.cs
index f6071b8..0eec832 100644
--- a/RoundButton.cs
+++ b/RoundButton.cs
@@ -36,6 +36,39 @@ namespace AndroidSideloader
Invalidate();
}
}
+
+ private Color disabled1, disabled2;
+ private Color disabledStrokeColor;
+
+ public Color Disabled1
+ {
+ get => disabled1;
+ set
+ {
+ disabled1 = value;
+ Invalidate();
+ }
+ }
+
+ public Color Disabled2
+ {
+ get => disabled2;
+ set
+ {
+ disabled2 = value;
+ Invalidate();
+ }
+ }
+
+ public Color DisabledStrokeColor
+ {
+ get => disabledStrokeColor;
+ set
+ {
+ disabledStrokeColor = value;
+ Invalidate();
+ }
+ }
#endregion
#region RoundButton
public RoundButton()
@@ -48,7 +81,9 @@ namespace AndroidSideloader
inactive2 = Color.FromArgb(33, 167, 188);
active1 = Color.FromArgb(64, 168, 183);
active2 = Color.FromArgb(36, 164, 183);
-
+ disabled1 = Color.FromArgb(32, 35, 45);
+ disabled2 = Color.FromArgb(25, 28, 35);
+ disabledStrokeColor = Color.FromArgb(50, 55, 65);
radius = 10;
roundedRect = new RoundedRectangleF(Width, Height, radius);
@@ -123,12 +158,18 @@ namespace AndroidSideloader
}
else
{
- Color linear1 = Color.FromArgb(190, 190, 190);
- Color linear2 = Color.FromArgb(210, 210, 210);
- using (LinearGradientBrush inactiveGB = new LinearGradientBrush(rect, linear1, linear2, 90f))
+ using (LinearGradientBrush disabledGB = new LinearGradientBrush(rect, disabled1, disabled2, 90f))
{
- e.Graphics.FillPath(inactiveGB, roundedRect.Path);
- e.Graphics.DrawPath(new Pen(inactiveGB), roundedRect.Path);
+ e.Graphics.FillPath(disabledGB, roundedRect.Path);
+ }
+
+ if (stroke)
+ {
+ using (Pen pen = new Pen(disabledStrokeColor, 1))
+ using (GraphicsPath path = new RoundedRectangleF(Width - (radius > 0 ? 0 : 1), Height - (radius > 0 ? 0 : 1), radius).Path)
+ {
+ e.Graphics.DrawPath(pen, path);
+ }
}
}
diff --git a/SettingsForm.Designer.cs b/SettingsForm.Designer.cs
index c0dccf3..d629c55 100644
--- a/SettingsForm.Designer.cs
+++ b/SettingsForm.Designer.cs
@@ -1,5 +1,4 @@
-
-namespace AndroidSideloader
+namespace AndroidSideloader
{
partial class SettingsForm
{
@@ -30,156 +29,56 @@ namespace AndroidSideloader
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SettingsForm));
- this.checkForUpdatesCheckBox = new System.Windows.Forms.CheckBox();
- this.enableMessageBoxesCheckBox = new System.Windows.Forms.CheckBox();
- this.deleteAfterInstallCheckBox = new System.Windows.Forms.CheckBox();
- this.updateConfigCheckBox = new System.Windows.Forms.CheckBox();
- this.userJsonOnGameInstall = new System.Windows.Forms.CheckBox();
- this.crashlogID = new System.Windows.Forms.Label();
- this.nodevicemodeBox = new System.Windows.Forms.CheckBox();
- this.bmbfBox = new System.Windows.Forms.CheckBox();
- this.AutoReinstBox = new System.Windows.Forms.CheckBox();
this.downloadDirectorySetter = new System.Windows.Forms.FolderBrowserDialog();
this.backupDirectorySetter = new System.Windows.Forms.FolderBrowserDialog();
- this.chkSingleThread = new System.Windows.Forms.CheckBox();
- this.setBackupDirectory = new AndroidSideloader.RoundButton();
+ this.crashlogID = new System.Windows.Forms.Label();
+ this.lblGeneralSection = new System.Windows.Forms.Label();
+ this.lblDownloadSection = new System.Windows.Forms.Label();
+ this.lblAdvancedSection = new System.Windows.Forms.Label();
+ this.lblDirectoriesSection = new System.Windows.Forms.Label();
+ this.lblDebugSection = new System.Windows.Forms.Label();
+ this.toggleCheckForUpdates = new AndroidSideloader.ToggleSwitch();
+ this.toggleUpdateConfig = new AndroidSideloader.ToggleSwitch();
+ this.toggleNoDeviceMode = new AndroidSideloader.ToggleSwitch();
+ this.toggleDeleteAfterInstall = new AndroidSideloader.ToggleSwitch();
+ this.toggleSingleThread = new AndroidSideloader.ToggleSwitch();
+ this.toggleUseDownloadedFiles = new AndroidSideloader.ToggleSwitch();
+ this.toggleAutoReinstall = new AndroidSideloader.ToggleSwitch();
+ this.toggleMessageBoxes = new AndroidSideloader.ToggleSwitch();
+ this.toggleUserJson = new AndroidSideloader.ToggleSwitch();
+ this.toggleBMBF = new AndroidSideloader.ToggleSwitch();
+ this.toggleVirtualFilesystem = new AndroidSideloader.ToggleSwitch();
+ this.toggleTrailers = new AndroidSideloader.ToggleSwitch();
+ this.lblCheckForUpdates = new System.Windows.Forms.Label();
+ this.lblUpdateConfig = new System.Windows.Forms.Label();
+ this.lblNoDeviceMode = new System.Windows.Forms.Label();
+ this.lblDeleteAfterInstall = new System.Windows.Forms.Label();
+ this.lblSingleThread = new System.Windows.Forms.Label();
+ this.lblUseDownloadedFiles = new System.Windows.Forms.Label();
+ this.lblAutoReinstall = new System.Windows.Forms.Label();
+ this.lblMessageBoxes = new System.Windows.Forms.Label();
+ this.lblUserJson = new System.Windows.Forms.Label();
+ this.lblBMBF = new System.Windows.Forms.Label();
+ this.lblVirtualFilesystem = new System.Windows.Forms.Label();
+ this.lblTrailers = new System.Windows.Forms.Label();
+ this.bandwidthLabel = new System.Windows.Forms.Label();
+ this.bandwidthLimitTextBox = new System.Windows.Forms.TextBox();
+ this.lblBandwidthUnit = new System.Windows.Forms.Label();
this.setDownloadDirectory = new AndroidSideloader.RoundButton();
+ this.setBackupDirectory = new AndroidSideloader.RoundButton();
+ this.openDownloadDirectory = new AndroidSideloader.RoundButton();
+ this.openBackupDirectory = new AndroidSideloader.RoundButton();
this.btnOpenDebug = new AndroidSideloader.RoundButton();
this.btnResetDebug = new AndroidSideloader.RoundButton();
this.btnUploadDebug = new AndroidSideloader.RoundButton();
- this.resetSettingsButton = new AndroidSideloader.RoundButton();
this.applyButton = new AndroidSideloader.RoundButton();
- this.virtualFilesystemCompatibilityCheckbox = new System.Windows.Forms.CheckBox();
- this.openBackupDirectory = new AndroidSideloader.RoundButton();
- this.openDownloadDirectory = new AndroidSideloader.RoundButton();
- this.chkUseDownloadedFiles = new System.Windows.Forms.CheckBox();
- this.bandwidthLabel = new System.Windows.Forms.Label();
- this.bandwidthLimitTextBox = new System.Windows.Forms.TextBox();
- this.label1 = new System.Windows.Forms.Label();
+ this.resetSettingsButton = new AndroidSideloader.RoundButton();
+ this.separator1 = new System.Windows.Forms.Panel();
+ this.separator2 = new System.Windows.Forms.Panel();
+ this.separator3 = new System.Windows.Forms.Panel();
+ this.separator4 = new System.Windows.Forms.Panel();
this.SuspendLayout();
//
- // checkForUpdatesCheckBox
- //
- this.checkForUpdatesCheckBox.AutoSize = true;
- this.checkForUpdatesCheckBox.BackColor = System.Drawing.Color.Transparent;
- this.checkForUpdatesCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.checkForUpdatesCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.checkForUpdatesCheckBox.Location = new System.Drawing.Point(13, 11);
- this.checkForUpdatesCheckBox.Name = "checkForUpdatesCheckBox";
- this.checkForUpdatesCheckBox.Size = new System.Drawing.Size(226, 22);
- this.checkForUpdatesCheckBox.TabIndex = 0;
- this.checkForUpdatesCheckBox.Text = "Check for Application Updates";
- this.checkForUpdatesCheckBox.UseVisualStyleBackColor = false;
- this.checkForUpdatesCheckBox.CheckedChanged += new System.EventHandler(this.checkForUpdatesCheckBox_CheckedChanged);
- //
- // enableMessageBoxesCheckBox
- //
- this.enableMessageBoxesCheckBox.AutoSize = true;
- this.enableMessageBoxesCheckBox.BackColor = System.Drawing.Color.Transparent;
- this.enableMessageBoxesCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.enableMessageBoxesCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.enableMessageBoxesCheckBox.Location = new System.Drawing.Point(13, 201);
- this.enableMessageBoxesCheckBox.Name = "enableMessageBoxesCheckBox";
- this.enableMessageBoxesCheckBox.Size = new System.Drawing.Size(309, 22);
- this.enableMessageBoxesCheckBox.TabIndex = 1;
- this.enableMessageBoxesCheckBox.Text = "Enable Message Boxes on task completed";
- this.enableMessageBoxesCheckBox.UseVisualStyleBackColor = false;
- this.enableMessageBoxesCheckBox.CheckedChanged += new System.EventHandler(this.enableMessageBoxesCheckBox_CheckedChanged);
- //
- // deleteAfterInstallCheckBox
- //
- this.deleteAfterInstallCheckBox.AutoSize = true;
- this.deleteAfterInstallCheckBox.BackColor = System.Drawing.Color.Transparent;
- this.deleteAfterInstallCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.deleteAfterInstallCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.deleteAfterInstallCheckBox.Location = new System.Drawing.Point(13, 92);
- this.deleteAfterInstallCheckBox.Name = "deleteAfterInstallCheckBox";
- this.deleteAfterInstallCheckBox.Size = new System.Drawing.Size(288, 22);
- this.deleteAfterInstallCheckBox.TabIndex = 3;
- this.deleteAfterInstallCheckBox.Text = "Delete games after download and install";
- this.deleteAfterInstallCheckBox.UseVisualStyleBackColor = false;
- this.deleteAfterInstallCheckBox.CheckedChanged += new System.EventHandler(this.deleteAfterInstallCheckBox_CheckedChanged);
- //
- // updateConfigCheckBox
- //
- this.updateConfigCheckBox.AutoSize = true;
- this.updateConfigCheckBox.BackColor = System.Drawing.Color.Transparent;
- this.updateConfigCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.updateConfigCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.updateConfigCheckBox.Location = new System.Drawing.Point(13, 38);
- this.updateConfigCheckBox.Name = "updateConfigCheckBox";
- this.updateConfigCheckBox.Size = new System.Drawing.Size(256, 22);
- this.updateConfigCheckBox.TabIndex = 6;
- this.updateConfigCheckBox.Text = "Update Public Config Automatically";
- this.updateConfigCheckBox.UseVisualStyleBackColor = false;
- this.updateConfigCheckBox.CheckedChanged += new System.EventHandler(this.updateConfigCheckBox_CheckedChanged);
- //
- // userJsonOnGameInstall
- //
- this.userJsonOnGameInstall.AutoSize = true;
- this.userJsonOnGameInstall.BackColor = System.Drawing.Color.Transparent;
- this.userJsonOnGameInstall.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.userJsonOnGameInstall.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.userJsonOnGameInstall.Location = new System.Drawing.Point(13, 228);
- this.userJsonOnGameInstall.Name = "userJsonOnGameInstall";
- this.userJsonOnGameInstall.Size = new System.Drawing.Size(243, 22);
- this.userJsonOnGameInstall.TabIndex = 9;
- this.userJsonOnGameInstall.Text = "Push random user.json on install";
- this.userJsonOnGameInstall.UseVisualStyleBackColor = false;
- this.userJsonOnGameInstall.CheckedChanged += new System.EventHandler(this.userJsonOnGameInstall_CheckedChanged);
- //
- // crashlogID
- //
- this.crashlogID.AutoSize = true;
- this.crashlogID.Location = new System.Drawing.Point(13, 413);
- this.crashlogID.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
- this.crashlogID.Name = "crashlogID";
- this.crashlogID.Size = new System.Drawing.Size(0, 13);
- this.crashlogID.TabIndex = 15;
- //
- // nodevicemodeBox
- //
- this.nodevicemodeBox.AutoSize = true;
- this.nodevicemodeBox.BackColor = System.Drawing.Color.Transparent;
- this.nodevicemodeBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.nodevicemodeBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.nodevicemodeBox.Location = new System.Drawing.Point(13, 65);
- this.nodevicemodeBox.Name = "nodevicemodeBox";
- this.nodevicemodeBox.Size = new System.Drawing.Size(226, 22);
- this.nodevicemodeBox.TabIndex = 9;
- this.nodevicemodeBox.Text = "Disable Sideloading (Installing)";
- this.nodevicemodeBox.UseVisualStyleBackColor = false;
- this.nodevicemodeBox.CheckedChanged += new System.EventHandler(this.nodevicemodeBox_CheckedChanged);
- //
- // bmbfBox
- //
- this.bmbfBox.AutoSize = true;
- this.bmbfBox.BackColor = System.Drawing.Color.Transparent;
- this.bmbfBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.bmbfBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.bmbfBox.Location = new System.Drawing.Point(13, 255);
- this.bmbfBox.Name = "bmbfBox";
- this.bmbfBox.Size = new System.Drawing.Size(281, 22);
- this.bmbfBox.TabIndex = 9;
- this.bmbfBox.Text = "Enable BMBF song zips drag and drop";
- this.bmbfBox.UseVisualStyleBackColor = false;
- this.bmbfBox.CheckedChanged += new System.EventHandler(this.bmbfBox_CheckedChanged);
- //
- // AutoReinstBox
- //
- this.AutoReinstBox.AutoSize = true;
- this.AutoReinstBox.BackColor = System.Drawing.Color.Transparent;
- this.AutoReinstBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.AutoReinstBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.AutoReinstBox.Location = new System.Drawing.Point(13, 174);
- this.AutoReinstBox.Name = "AutoReinstBox";
- this.AutoReinstBox.Size = new System.Drawing.Size(280, 22);
- this.AutoReinstBox.TabIndex = 9;
- this.AutoReinstBox.Text = "Enable auto reinstall upon install failure";
- this.AutoReinstBox.UseVisualStyleBackColor = false;
- this.AutoReinstBox.CheckedChanged += new System.EventHandler(this.AutoReinstBox_CheckedChanged);
- this.AutoReinstBox.Click += new System.EventHandler(this.AutoReinstBox_Click);
- //
// downloadDirectorySetter
//
this.downloadDirectorySetter.RootFolder = System.Environment.SpecialFolder.MyComputer;
@@ -188,315 +87,711 @@ namespace AndroidSideloader
//
this.backupDirectorySetter.RootFolder = System.Environment.SpecialFolder.MyComputer;
//
- // chkSingleThread
+ // crashlogID
//
- this.chkSingleThread.AutoSize = true;
- this.chkSingleThread.BackColor = System.Drawing.Color.Transparent;
- this.chkSingleThread.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.chkSingleThread.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.chkSingleThread.Location = new System.Drawing.Point(13, 120);
- this.chkSingleThread.Name = "chkSingleThread";
- this.chkSingleThread.Size = new System.Drawing.Size(186, 22);
- this.chkSingleThread.TabIndex = 25;
- this.chkSingleThread.Text = "Enable Single-Threading";
- this.chkSingleThread.UseVisualStyleBackColor = false;
- this.chkSingleThread.CheckedChanged += new System.EventHandler(this.chkSingleThread_CheckedChanged);
+ this.crashlogID.AutoSize = true;
+ this.crashlogID.Location = new System.Drawing.Point(24, 725);
+ this.crashlogID.Name = "crashlogID";
+ this.crashlogID.Size = new System.Drawing.Size(0, 13);
+ this.crashlogID.TabIndex = 36;
+ this.crashlogID.Visible = false;
//
- // setBackupDirectory
+ // lblGeneralSection
//
- this.setBackupDirectory.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.setBackupDirectory.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.setBackupDirectory.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.setBackupDirectory.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.setBackupDirectory.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.setBackupDirectory.ForeColor = System.Drawing.Color.White;
- this.setBackupDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.setBackupDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.setBackupDirectory.Location = new System.Drawing.Point(26, 572);
- this.setBackupDirectory.Name = "setBackupDirectory";
- this.setBackupDirectory.Radius = 5;
- this.setBackupDirectory.Size = new System.Drawing.Size(285, 31);
- this.setBackupDirectory.Stroke = true;
- this.setBackupDirectory.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.setBackupDirectory.TabIndex = 24;
- this.setBackupDirectory.Text = "Set Backup Directory";
- this.setBackupDirectory.Transparency = false;
- this.setBackupDirectory.Click += new System.EventHandler(this.setBackupDirectory_Click);
+ this.lblGeneralSection.AutoSize = true;
+ this.lblGeneralSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.lblGeneralSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.lblGeneralSection.Location = new System.Drawing.Point(20, 15);
+ this.lblGeneralSection.Name = "lblGeneralSection";
+ this.lblGeneralSection.Size = new System.Drawing.Size(63, 20);
+ this.lblGeneralSection.TabIndex = 0;
+ this.lblGeneralSection.Text = "General";
+ //
+ // lblDownloadSection
+ //
+ this.lblDownloadSection.AutoSize = true;
+ this.lblDownloadSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.lblDownloadSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.lblDownloadSection.Location = new System.Drawing.Point(20, 180);
+ this.lblDownloadSection.Name = "lblDownloadSection";
+ this.lblDownloadSection.Size = new System.Drawing.Size(144, 20);
+ this.lblDownloadSection.TabIndex = 10;
+ this.lblDownloadSection.Text = "Download && Install";
+ //
+ // lblAdvancedSection
+ //
+ this.lblAdvancedSection.AutoSize = true;
+ this.lblAdvancedSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.lblAdvancedSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.lblAdvancedSection.Location = new System.Drawing.Point(20, 380);
+ this.lblAdvancedSection.Name = "lblAdvancedSection";
+ this.lblAdvancedSection.Size = new System.Drawing.Size(78, 20);
+ this.lblAdvancedSection.TabIndex = 23;
+ this.lblAdvancedSection.Text = "Advanced";
+ //
+ // lblDirectoriesSection
+ //
+ this.lblDirectoriesSection.AutoSize = true;
+ this.lblDirectoriesSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.lblDirectoriesSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.lblDirectoriesSection.Location = new System.Drawing.Point(20, 547);
+ this.lblDirectoriesSection.Name = "lblDirectoriesSection";
+ this.lblDirectoriesSection.Size = new System.Drawing.Size(85, 20);
+ this.lblDirectoriesSection.TabIndex = 33;
+ this.lblDirectoriesSection.Text = "Directories";
+ //
+ // lblDebugSection
+ //
+ this.lblDebugSection.AutoSize = true;
+ this.lblDebugSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.lblDebugSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.lblDebugSection.Location = new System.Drawing.Point(20, 662);
+ this.lblDebugSection.Name = "lblDebugSection";
+ this.lblDebugSection.Size = new System.Drawing.Size(55, 20);
+ this.lblDebugSection.TabIndex = 35;
+ this.lblDebugSection.Text = "Debug";
+ //
+ // toggleCheckForUpdates
+ //
+ this.toggleCheckForUpdates.BackColor = System.Drawing.Color.Transparent;
+ this.toggleCheckForUpdates.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleCheckForUpdates.Location = new System.Drawing.Point(28, 48);
+ this.toggleCheckForUpdates.Name = "toggleCheckForUpdates";
+ this.toggleCheckForUpdates.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleCheckForUpdates.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleCheckForUpdates.Size = new System.Drawing.Size(36, 18);
+ this.toggleCheckForUpdates.TabIndex = 1;
+ this.toggleCheckForUpdates.ThumbColor = System.Drawing.Color.White;
+ this.toggleCheckForUpdates.CheckedChanged += new System.EventHandler(this.toggleCheckForUpdates_CheckedChanged);
+ //
+ // toggleUpdateConfig
+ //
+ this.toggleUpdateConfig.BackColor = System.Drawing.Color.Transparent;
+ this.toggleUpdateConfig.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleUpdateConfig.Location = new System.Drawing.Point(28, 78);
+ this.toggleUpdateConfig.Name = "toggleUpdateConfig";
+ this.toggleUpdateConfig.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleUpdateConfig.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleUpdateConfig.Size = new System.Drawing.Size(36, 18);
+ this.toggleUpdateConfig.TabIndex = 3;
+ this.toggleUpdateConfig.ThumbColor = System.Drawing.Color.White;
+ this.toggleUpdateConfig.CheckedChanged += new System.EventHandler(this.toggleUpdateConfig_CheckedChanged);
+ //
+ // toggleNoDeviceMode
+ //
+ this.toggleNoDeviceMode.BackColor = System.Drawing.Color.Transparent;
+ this.toggleNoDeviceMode.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleNoDeviceMode.Location = new System.Drawing.Point(28, 213);
+ this.toggleNoDeviceMode.Name = "toggleNoDeviceMode";
+ this.toggleNoDeviceMode.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleNoDeviceMode.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleNoDeviceMode.Size = new System.Drawing.Size(36, 18);
+ this.toggleNoDeviceMode.TabIndex = 11;
+ this.toggleNoDeviceMode.ThumbColor = System.Drawing.Color.White;
+ this.toggleNoDeviceMode.CheckedChanged += new System.EventHandler(this.toggleNoDeviceMode_CheckedChanged);
+ //
+ // toggleDeleteAfterInstall
+ //
+ this.toggleDeleteAfterInstall.BackColor = System.Drawing.Color.Transparent;
+ this.toggleDeleteAfterInstall.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleDeleteAfterInstall.Location = new System.Drawing.Point(28, 243);
+ this.toggleDeleteAfterInstall.Name = "toggleDeleteAfterInstall";
+ this.toggleDeleteAfterInstall.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleDeleteAfterInstall.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleDeleteAfterInstall.Size = new System.Drawing.Size(36, 18);
+ this.toggleDeleteAfterInstall.TabIndex = 13;
+ this.toggleDeleteAfterInstall.ThumbColor = System.Drawing.Color.White;
+ this.toggleDeleteAfterInstall.CheckedChanged += new System.EventHandler(this.toggleDeleteAfterInstall_CheckedChanged);
+ //
+ // toggleSingleThread
+ //
+ this.toggleSingleThread.BackColor = System.Drawing.Color.Transparent;
+ this.toggleSingleThread.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleSingleThread.Location = new System.Drawing.Point(28, 413);
+ this.toggleSingleThread.Name = "toggleSingleThread";
+ this.toggleSingleThread.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleSingleThread.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleSingleThread.Size = new System.Drawing.Size(36, 18);
+ this.toggleSingleThread.TabIndex = 24;
+ this.toggleSingleThread.ThumbColor = System.Drawing.Color.White;
+ this.toggleSingleThread.CheckedChanged += new System.EventHandler(this.toggleSingleThread_CheckedChanged);
+ //
+ // toggleUseDownloadedFiles
+ //
+ this.toggleUseDownloadedFiles.BackColor = System.Drawing.Color.Transparent;
+ this.toggleUseDownloadedFiles.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleUseDownloadedFiles.Location = new System.Drawing.Point(28, 273);
+ this.toggleUseDownloadedFiles.Name = "toggleUseDownloadedFiles";
+ this.toggleUseDownloadedFiles.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleUseDownloadedFiles.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleUseDownloadedFiles.Size = new System.Drawing.Size(36, 18);
+ this.toggleUseDownloadedFiles.TabIndex = 15;
+ this.toggleUseDownloadedFiles.ThumbColor = System.Drawing.Color.White;
+ this.toggleUseDownloadedFiles.CheckedChanged += new System.EventHandler(this.toggleUseDownloadedFiles_CheckedChanged);
+ //
+ // toggleAutoReinstall
+ //
+ this.toggleAutoReinstall.BackColor = System.Drawing.Color.Transparent;
+ this.toggleAutoReinstall.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleAutoReinstall.Location = new System.Drawing.Point(28, 303);
+ this.toggleAutoReinstall.Name = "toggleAutoReinstall";
+ this.toggleAutoReinstall.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleAutoReinstall.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleAutoReinstall.Size = new System.Drawing.Size(36, 18);
+ this.toggleAutoReinstall.TabIndex = 17;
+ this.toggleAutoReinstall.ThumbColor = System.Drawing.Color.White;
+ this.toggleAutoReinstall.CheckedChanged += new System.EventHandler(this.toggleAutoReinstall_CheckedChanged);
+ this.toggleAutoReinstall.Click += new System.EventHandler(this.toggleAutoReinstall_Click);
+ //
+ // toggleMessageBoxes
+ //
+ this.toggleMessageBoxes.BackColor = System.Drawing.Color.Transparent;
+ this.toggleMessageBoxes.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleMessageBoxes.Location = new System.Drawing.Point(28, 108);
+ this.toggleMessageBoxes.Name = "toggleMessageBoxes";
+ this.toggleMessageBoxes.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleMessageBoxes.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleMessageBoxes.Size = new System.Drawing.Size(36, 18);
+ this.toggleMessageBoxes.TabIndex = 5;
+ this.toggleMessageBoxes.ThumbColor = System.Drawing.Color.White;
+ this.toggleMessageBoxes.CheckedChanged += new System.EventHandler(this.toggleMessageBoxes_CheckedChanged);
+ //
+ // toggleUserJson
+ //
+ this.toggleUserJson.BackColor = System.Drawing.Color.Transparent;
+ this.toggleUserJson.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleUserJson.Location = new System.Drawing.Point(28, 443);
+ this.toggleUserJson.Name = "toggleUserJson";
+ this.toggleUserJson.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleUserJson.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleUserJson.Size = new System.Drawing.Size(36, 18);
+ this.toggleUserJson.TabIndex = 26;
+ this.toggleUserJson.ThumbColor = System.Drawing.Color.White;
+ this.toggleUserJson.CheckedChanged += new System.EventHandler(this.toggleUserJson_CheckedChanged);
+ //
+ // toggleBMBF
+ //
+ this.toggleBMBF.BackColor = System.Drawing.Color.Transparent;
+ this.toggleBMBF.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleBMBF.Location = new System.Drawing.Point(28, 473);
+ this.toggleBMBF.Name = "toggleBMBF";
+ this.toggleBMBF.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleBMBF.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleBMBF.Size = new System.Drawing.Size(36, 18);
+ this.toggleBMBF.TabIndex = 28;
+ this.toggleBMBF.ThumbColor = System.Drawing.Color.White;
+ this.toggleBMBF.CheckedChanged += new System.EventHandler(this.toggleBMBF_CheckedChanged);
+ //
+ // toggleVirtualFilesystem
+ //
+ this.toggleVirtualFilesystem.BackColor = System.Drawing.Color.Transparent;
+ this.toggleVirtualFilesystem.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleVirtualFilesystem.Location = new System.Drawing.Point(28, 503);
+ this.toggleVirtualFilesystem.Name = "toggleVirtualFilesystem";
+ this.toggleVirtualFilesystem.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleVirtualFilesystem.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleVirtualFilesystem.Size = new System.Drawing.Size(36, 18);
+ this.toggleVirtualFilesystem.TabIndex = 30;
+ this.toggleVirtualFilesystem.ThumbColor = System.Drawing.Color.White;
+ this.toggleVirtualFilesystem.CheckedChanged += new System.EventHandler(this.toggleVirtualFilesystem_CheckedChanged);
+ //
+ // toggleTrailers
+ //
+ this.toggleTrailers.BackColor = System.Drawing.Color.Transparent;
+ this.toggleTrailers.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleTrailers.Location = new System.Drawing.Point(28, 138);
+ this.toggleTrailers.Name = "toggleTrailers";
+ this.toggleTrailers.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleTrailers.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleTrailers.Size = new System.Drawing.Size(36, 18);
+ this.toggleTrailers.TabIndex = 7;
+ this.toggleTrailers.ThumbColor = System.Drawing.Color.White;
+ this.toggleTrailers.CheckedChanged += new System.EventHandler(this.toggleTrailers_CheckedChanged);
+ //
+ // lblCheckForUpdates
+ //
+ this.lblCheckForUpdates.AutoSize = true;
+ this.lblCheckForUpdates.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblCheckForUpdates.ForeColor = System.Drawing.Color.White;
+ this.lblCheckForUpdates.Location = new System.Drawing.Point(72, 47);
+ this.lblCheckForUpdates.Name = "lblCheckForUpdates";
+ this.lblCheckForUpdates.Size = new System.Drawing.Size(185, 17);
+ this.lblCheckForUpdates.TabIndex = 2;
+ this.lblCheckForUpdates.Text = "Check for Application Updates";
+ //
+ // lblUpdateConfig
+ //
+ this.lblUpdateConfig.AutoSize = true;
+ this.lblUpdateConfig.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblUpdateConfig.ForeColor = System.Drawing.Color.White;
+ this.lblUpdateConfig.Location = new System.Drawing.Point(72, 77);
+ this.lblUpdateConfig.Name = "lblUpdateConfig";
+ this.lblUpdateConfig.Size = new System.Drawing.Size(212, 17);
+ this.lblUpdateConfig.TabIndex = 4;
+ this.lblUpdateConfig.Text = "Update Public Config Automatically";
+ //
+ // lblNoDeviceMode
+ //
+ this.lblNoDeviceMode.AutoSize = true;
+ this.lblNoDeviceMode.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblNoDeviceMode.ForeColor = System.Drawing.Color.White;
+ this.lblNoDeviceMode.Location = new System.Drawing.Point(72, 212);
+ this.lblNoDeviceMode.Name = "lblNoDeviceMode";
+ this.lblNoDeviceMode.Size = new System.Drawing.Size(187, 17);
+ this.lblNoDeviceMode.TabIndex = 12;
+ this.lblNoDeviceMode.Text = "Disable Sideloading (Installing)";
+ //
+ // lblDeleteAfterInstall
+ //
+ this.lblDeleteAfterInstall.AutoSize = true;
+ this.lblDeleteAfterInstall.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblDeleteAfterInstall.ForeColor = System.Drawing.Color.White;
+ this.lblDeleteAfterInstall.Location = new System.Drawing.Point(72, 242);
+ this.lblDeleteAfterInstall.Name = "lblDeleteAfterInstall";
+ this.lblDeleteAfterInstall.Size = new System.Drawing.Size(222, 17);
+ this.lblDeleteAfterInstall.TabIndex = 14;
+ this.lblDeleteAfterInstall.Text = "Delete Games After Download/Install";
+ //
+ // lblSingleThread
+ //
+ this.lblSingleThread.AutoSize = true;
+ this.lblSingleThread.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblSingleThread.ForeColor = System.Drawing.Color.White;
+ this.lblSingleThread.Location = new System.Drawing.Point(72, 412);
+ this.lblSingleThread.Name = "lblSingleThread";
+ this.lblSingleThread.Size = new System.Drawing.Size(128, 17);
+ this.lblSingleThread.TabIndex = 25;
+ this.lblSingleThread.Text = "Single-Thread Mode";
+ //
+ // lblUseDownloadedFiles
+ //
+ this.lblUseDownloadedFiles.AutoSize = true;
+ this.lblUseDownloadedFiles.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblUseDownloadedFiles.ForeColor = System.Drawing.Color.White;
+ this.lblUseDownloadedFiles.Location = new System.Drawing.Point(72, 272);
+ this.lblUseDownloadedFiles.Name = "lblUseDownloadedFiles";
+ this.lblUseDownloadedFiles.Size = new System.Drawing.Size(185, 17);
+ this.lblUseDownloadedFiles.TabIndex = 16;
+ this.lblUseDownloadedFiles.Text = "Don\'t Prompt to Re-Download";
+ //
+ // lblAutoReinstall
+ //
+ this.lblAutoReinstall.AutoSize = true;
+ this.lblAutoReinstall.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblAutoReinstall.ForeColor = System.Drawing.Color.White;
+ this.lblAutoReinstall.Location = new System.Drawing.Point(72, 302);
+ this.lblAutoReinstall.Name = "lblAutoReinstall";
+ this.lblAutoReinstall.Size = new System.Drawing.Size(185, 17);
+ this.lblAutoReinstall.TabIndex = 18;
+ this.lblAutoReinstall.Text = "Auto Reinstall on Install Failure";
+ //
+ // lblMessageBoxes
+ //
+ this.lblMessageBoxes.AutoSize = true;
+ this.lblMessageBoxes.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblMessageBoxes.ForeColor = System.Drawing.Color.White;
+ this.lblMessageBoxes.Location = new System.Drawing.Point(72, 107);
+ this.lblMessageBoxes.Name = "lblMessageBoxes";
+ this.lblMessageBoxes.Size = new System.Drawing.Size(224, 17);
+ this.lblMessageBoxes.TabIndex = 6;
+ this.lblMessageBoxes.Text = "Show Message Boxes on Completion";
+ //
+ // lblUserJson
+ //
+ this.lblUserJson.AutoSize = true;
+ this.lblUserJson.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblUserJson.ForeColor = System.Drawing.Color.White;
+ this.lblUserJson.Location = new System.Drawing.Point(72, 442);
+ this.lblUserJson.Name = "lblUserJson";
+ this.lblUserJson.Size = new System.Drawing.Size(200, 17);
+ this.lblUserJson.TabIndex = 27;
+ this.lblUserJson.Text = "Push Random user.json on Install";
+ //
+ // lblBMBF
+ //
+ this.lblBMBF.AutoSize = true;
+ this.lblBMBF.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblBMBF.ForeColor = System.Drawing.Color.White;
+ this.lblBMBF.Location = new System.Drawing.Point(72, 472);
+ this.lblBMBF.Name = "lblBMBF";
+ this.lblBMBF.Size = new System.Drawing.Size(195, 17);
+ this.lblBMBF.TabIndex = 29;
+ this.lblBMBF.Text = "BMBF Song Zips Drag and Drop";
+ //
+ // lblVirtualFilesystem
+ //
+ this.lblVirtualFilesystem.AutoSize = true;
+ this.lblVirtualFilesystem.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblVirtualFilesystem.ForeColor = System.Drawing.Color.White;
+ this.lblVirtualFilesystem.Location = new System.Drawing.Point(72, 502);
+ this.lblVirtualFilesystem.Name = "lblVirtualFilesystem";
+ this.lblVirtualFilesystem.Size = new System.Drawing.Size(188, 17);
+ this.lblVirtualFilesystem.TabIndex = 31;
+ this.lblVirtualFilesystem.Text = "Virtual Filesystem Compatibility";
+ //
+ // lblTrailers
+ //
+ this.lblTrailers.AutoSize = true;
+ this.lblTrailers.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblTrailers.ForeColor = System.Drawing.Color.White;
+ this.lblTrailers.Location = new System.Drawing.Point(72, 137);
+ this.lblTrailers.Name = "lblTrailers";
+ this.lblTrailers.Size = new System.Drawing.Size(123, 17);
+ this.lblTrailers.TabIndex = 8;
+ this.lblTrailers.Text = "Show Game Trailers";
+ //
+ // bandwidthLabel
+ //
+ this.bandwidthLabel.AutoSize = true;
+ this.bandwidthLabel.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.bandwidthLabel.ForeColor = System.Drawing.Color.White;
+ this.bandwidthLabel.Location = new System.Drawing.Point(24, 335);
+ this.bandwidthLabel.Name = "bandwidthLabel";
+ this.bandwidthLabel.Size = new System.Drawing.Size(102, 17);
+ this.bandwidthLabel.TabIndex = 19;
+ this.bandwidthLabel.Text = "Bandwidth Limit:";
+ //
+ // bandwidthLimitTextBox
+ //
+ this.bandwidthLimitTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.bandwidthLimitTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.bandwidthLimitTextBox.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.bandwidthLimitTextBox.ForeColor = System.Drawing.Color.White;
+ this.bandwidthLimitTextBox.Location = new System.Drawing.Point(132, 333);
+ this.bandwidthLimitTextBox.Name = "bandwidthLimitTextBox";
+ this.bandwidthLimitTextBox.Size = new System.Drawing.Size(60, 23);
+ this.bandwidthLimitTextBox.TabIndex = 20;
+ this.bandwidthLimitTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ this.bandwidthLimitTextBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.bandwidthLimitTextBox_KeyPress);
+ //
+ // lblBandwidthUnit
+ //
+ this.lblBandwidthUnit.AutoSize = true;
+ this.lblBandwidthUnit.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblBandwidthUnit.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150)))));
+ this.lblBandwidthUnit.Location = new System.Drawing.Point(198, 335);
+ this.lblBandwidthUnit.Name = "lblBandwidthUnit";
+ this.lblBandwidthUnit.Size = new System.Drawing.Size(38, 17);
+ this.lblBandwidthUnit.TabIndex = 21;
+ this.lblBandwidthUnit.Text = "MB/s";
//
// setDownloadDirectory
//
- this.setDownloadDirectory.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.setDownloadDirectory.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.setDownloadDirectory.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
+ this.setDownloadDirectory.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.setDownloadDirectory.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.setDownloadDirectory.BackColor = System.Drawing.Color.Transparent;
+ this.setDownloadDirectory.Cursor = System.Windows.Forms.Cursors.Hand;
this.setDownloadDirectory.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.setDownloadDirectory.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
+ this.setDownloadDirectory.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.setDownloadDirectory.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.setDownloadDirectory.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.setDownloadDirectory.Font = new System.Drawing.Font("Segoe UI", 9F);
this.setDownloadDirectory.ForeColor = System.Drawing.Color.White;
- this.setDownloadDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.setDownloadDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.setDownloadDirectory.Location = new System.Drawing.Point(26, 535);
+ this.setDownloadDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.setDownloadDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.setDownloadDirectory.Location = new System.Drawing.Point(24, 575);
this.setDownloadDirectory.Name = "setDownloadDirectory";
this.setDownloadDirectory.Radius = 5;
- this.setDownloadDirectory.Size = new System.Drawing.Size(285, 31);
+ this.setDownloadDirectory.Size = new System.Drawing.Size(150, 28);
this.setDownloadDirectory.Stroke = true;
- this.setDownloadDirectory.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.setDownloadDirectory.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
this.setDownloadDirectory.TabIndex = 23;
- this.setDownloadDirectory.Text = "Set Download Directory";
+ this.setDownloadDirectory.Text = "Set Download Dir";
this.setDownloadDirectory.Transparency = false;
this.setDownloadDirectory.Click += new System.EventHandler(this.setDownloadDirectory_Click);
//
+ // setBackupDirectory
+ //
+ this.setBackupDirectory.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.setBackupDirectory.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.setBackupDirectory.BackColor = System.Drawing.Color.Transparent;
+ this.setBackupDirectory.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.setBackupDirectory.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.setBackupDirectory.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.setBackupDirectory.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.setBackupDirectory.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.setBackupDirectory.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.setBackupDirectory.ForeColor = System.Drawing.Color.White;
+ this.setBackupDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.setBackupDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.setBackupDirectory.Location = new System.Drawing.Point(24, 610);
+ this.setBackupDirectory.Name = "setBackupDirectory";
+ this.setBackupDirectory.Radius = 5;
+ this.setBackupDirectory.Size = new System.Drawing.Size(150, 28);
+ this.setBackupDirectory.Stroke = true;
+ this.setBackupDirectory.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.setBackupDirectory.TabIndex = 24;
+ this.setBackupDirectory.Text = "Set Backup Dir";
+ this.setBackupDirectory.Transparency = false;
+ this.setBackupDirectory.Click += new System.EventHandler(this.setBackupDirectory_Click);
+ //
+ // openDownloadDirectory
+ //
+ this.openDownloadDirectory.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.openDownloadDirectory.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.openDownloadDirectory.BackColor = System.Drawing.Color.Transparent;
+ this.openDownloadDirectory.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.openDownloadDirectory.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.openDownloadDirectory.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.openDownloadDirectory.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.openDownloadDirectory.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.openDownloadDirectory.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.openDownloadDirectory.ForeColor = System.Drawing.Color.White;
+ this.openDownloadDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.openDownloadDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.openDownloadDirectory.Location = new System.Drawing.Point(184, 575);
+ this.openDownloadDirectory.Name = "openDownloadDirectory";
+ this.openDownloadDirectory.Radius = 5;
+ this.openDownloadDirectory.Size = new System.Drawing.Size(150, 28);
+ this.openDownloadDirectory.Stroke = true;
+ this.openDownloadDirectory.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.openDownloadDirectory.TabIndex = 27;
+ this.openDownloadDirectory.Text = "Open Download Dir";
+ this.openDownloadDirectory.Transparency = false;
+ this.openDownloadDirectory.Click += new System.EventHandler(this.openDownloadDirectory_Click);
+ //
+ // openBackupDirectory
+ //
+ this.openBackupDirectory.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.openBackupDirectory.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.openBackupDirectory.BackColor = System.Drawing.Color.Transparent;
+ this.openBackupDirectory.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.openBackupDirectory.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.openBackupDirectory.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.openBackupDirectory.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.openBackupDirectory.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.openBackupDirectory.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.openBackupDirectory.ForeColor = System.Drawing.Color.White;
+ this.openBackupDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.openBackupDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.openBackupDirectory.Location = new System.Drawing.Point(184, 610);
+ this.openBackupDirectory.Name = "openBackupDirectory";
+ this.openBackupDirectory.Radius = 5;
+ this.openBackupDirectory.Size = new System.Drawing.Size(150, 28);
+ this.openBackupDirectory.Stroke = true;
+ this.openBackupDirectory.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.openBackupDirectory.TabIndex = 28;
+ this.openBackupDirectory.Text = "Open Backup Dir";
+ this.openBackupDirectory.Transparency = false;
+ this.openBackupDirectory.Click += new System.EventHandler(this.openBackupDirectory_Click);
+ //
// btnOpenDebug
//
- this.btnOpenDebug.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnOpenDebug.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnOpenDebug.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
+ this.btnOpenDebug.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnOpenDebug.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnOpenDebug.BackColor = System.Drawing.Color.Transparent;
+ this.btnOpenDebug.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnOpenDebug.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.btnOpenDebug.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
+ this.btnOpenDebug.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnOpenDebug.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnOpenDebug.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnOpenDebug.Font = new System.Drawing.Font("Segoe UI", 9F);
this.btnOpenDebug.ForeColor = System.Drawing.Color.White;
- this.btnOpenDebug.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnOpenDebug.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnOpenDebug.Location = new System.Drawing.Point(25, 408);
+ this.btnOpenDebug.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.btnOpenDebug.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.btnOpenDebug.Location = new System.Drawing.Point(24, 690);
this.btnOpenDebug.Name = "btnOpenDebug";
this.btnOpenDebug.Radius = 5;
- this.btnOpenDebug.Size = new System.Drawing.Size(285, 31);
+ this.btnOpenDebug.Size = new System.Drawing.Size(100, 28);
this.btnOpenDebug.Stroke = true;
- this.btnOpenDebug.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.btnOpenDebug.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
this.btnOpenDebug.TabIndex = 21;
- this.btnOpenDebug.Text = "Open Debug Log";
+ this.btnOpenDebug.Text = "Open Log";
this.btnOpenDebug.Transparency = false;
this.btnOpenDebug.Click += new System.EventHandler(this.btnOpenDebug_Click);
//
// btnResetDebug
//
- this.btnResetDebug.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnResetDebug.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnResetDebug.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
+ this.btnResetDebug.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnResetDebug.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnResetDebug.BackColor = System.Drawing.Color.Transparent;
+ this.btnResetDebug.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnResetDebug.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.btnResetDebug.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
+ this.btnResetDebug.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnResetDebug.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnResetDebug.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnResetDebug.Font = new System.Drawing.Font("Segoe UI", 9F);
this.btnResetDebug.ForeColor = System.Drawing.Color.White;
- this.btnResetDebug.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnResetDebug.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnResetDebug.Location = new System.Drawing.Point(25, 445);
+ this.btnResetDebug.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.btnResetDebug.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.btnResetDebug.Location = new System.Drawing.Point(130, 690);
this.btnResetDebug.Name = "btnResetDebug";
this.btnResetDebug.Radius = 5;
- this.btnResetDebug.Size = new System.Drawing.Size(285, 31);
+ this.btnResetDebug.Size = new System.Drawing.Size(100, 28);
this.btnResetDebug.Stroke = true;
- this.btnResetDebug.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.btnResetDebug.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
this.btnResetDebug.TabIndex = 20;
- this.btnResetDebug.Text = "Reset Debug Log";
+ this.btnResetDebug.Text = "Reset Log";
this.btnResetDebug.Transparency = false;
this.btnResetDebug.Click += new System.EventHandler(this.btnResetDebug_click);
//
// btnUploadDebug
//
- this.btnUploadDebug.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnUploadDebug.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnUploadDebug.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
+ this.btnUploadDebug.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnUploadDebug.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnUploadDebug.BackColor = System.Drawing.Color.Transparent;
+ this.btnUploadDebug.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnUploadDebug.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.btnUploadDebug.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
+ this.btnUploadDebug.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnUploadDebug.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnUploadDebug.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnUploadDebug.Font = new System.Drawing.Font("Segoe UI", 9F);
this.btnUploadDebug.ForeColor = System.Drawing.Color.White;
- this.btnUploadDebug.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnUploadDebug.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnUploadDebug.Location = new System.Drawing.Point(25, 482);
+ this.btnUploadDebug.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.btnUploadDebug.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.btnUploadDebug.Location = new System.Drawing.Point(236, 690);
this.btnUploadDebug.Name = "btnUploadDebug";
this.btnUploadDebug.Radius = 5;
- this.btnUploadDebug.Size = new System.Drawing.Size(285, 31);
+ this.btnUploadDebug.Size = new System.Drawing.Size(100, 28);
this.btnUploadDebug.Stroke = true;
- this.btnUploadDebug.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.btnUploadDebug.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
this.btnUploadDebug.TabIndex = 19;
- this.btnUploadDebug.Text = "Upload Debug Log";
+ this.btnUploadDebug.Text = "Upload Log";
this.btnUploadDebug.Transparency = false;
this.btnUploadDebug.Click += new System.EventHandler(this.btnUploadDebug_click);
//
- // resetSettingsButton
- //
- this.resetSettingsButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.resetSettingsButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.resetSettingsButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.resetSettingsButton.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.resetSettingsButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.resetSettingsButton.ForeColor = System.Drawing.Color.White;
- this.resetSettingsButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.resetSettingsButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.resetSettingsButton.Location = new System.Drawing.Point(178, 355);
- this.resetSettingsButton.Name = "resetSettingsButton";
- this.resetSettingsButton.Radius = 5;
- this.resetSettingsButton.Size = new System.Drawing.Size(133, 31);
- this.resetSettingsButton.Stroke = true;
- this.resetSettingsButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.resetSettingsButton.TabIndex = 18;
- this.resetSettingsButton.Text = "Reset Settings";
- this.resetSettingsButton.Transparency = false;
- this.resetSettingsButton.Click += new System.EventHandler(this.resetSettingsButton_Click);
- //
// applyButton
//
- this.applyButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.applyButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.applyButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
- this.applyButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.applyButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.applyButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.applyButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
+ this.applyButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
+ this.applyButton.BackColor = System.Drawing.Color.Transparent;
+ this.applyButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.applyButton.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.applyButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.applyButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.applyButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.applyButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.applyButton.Location = new System.Drawing.Point(26, 355);
+ this.applyButton.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.applyButton.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.applyButton.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.applyButton.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Bold);
+ this.applyButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
+ this.applyButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.applyButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.applyButton.Location = new System.Drawing.Point(24, 740);
this.applyButton.Name = "applyButton";
this.applyButton.Radius = 5;
- this.applyButton.Size = new System.Drawing.Size(133, 31);
- this.applyButton.Stroke = true;
- this.applyButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.applyButton.Size = new System.Drawing.Size(150, 36);
+ this.applyButton.Stroke = false;
+ this.applyButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.applyButton.TabIndex = 17;
- this.applyButton.Text = "Apply Settings";
+ this.applyButton.Text = "SAVE & CLOSE";
this.applyButton.Transparency = false;
this.applyButton.Click += new System.EventHandler(this.applyButton_Click);
//
- // virtualFilesystemCompatibilityCheckbox
+ // resetSettingsButton
//
- this.virtualFilesystemCompatibilityCheckbox.AutoSize = true;
- this.virtualFilesystemCompatibilityCheckbox.BackColor = System.Drawing.Color.Transparent;
- this.virtualFilesystemCompatibilityCheckbox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.virtualFilesystemCompatibilityCheckbox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.virtualFilesystemCompatibilityCheckbox.Location = new System.Drawing.Point(13, 282);
- this.virtualFilesystemCompatibilityCheckbox.Name = "virtualFilesystemCompatibilityCheckbox";
- this.virtualFilesystemCompatibilityCheckbox.Size = new System.Drawing.Size(279, 22);
- this.virtualFilesystemCompatibilityCheckbox.TabIndex = 26;
- this.virtualFilesystemCompatibilityCheckbox.Text = "Enable Virtual Filesystem Compatibility";
- this.virtualFilesystemCompatibilityCheckbox.UseVisualStyleBackColor = true;
- this.virtualFilesystemCompatibilityCheckbox.CheckedChanged += new System.EventHandler(this.virtualFilesystemCompatibilityCheckbox_CheckedChanged);
+ this.resetSettingsButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.resetSettingsButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.resetSettingsButton.BackColor = System.Drawing.Color.Transparent;
+ this.resetSettingsButton.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.resetSettingsButton.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.resetSettingsButton.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.resetSettingsButton.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.resetSettingsButton.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.resetSettingsButton.Font = new System.Drawing.Font("Segoe UI", 10F);
+ this.resetSettingsButton.ForeColor = System.Drawing.Color.White;
+ this.resetSettingsButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.resetSettingsButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.resetSettingsButton.Location = new System.Drawing.Point(184, 740);
+ this.resetSettingsButton.Name = "resetSettingsButton";
+ this.resetSettingsButton.Radius = 5;
+ this.resetSettingsButton.Size = new System.Drawing.Size(150, 36);
+ this.resetSettingsButton.Stroke = true;
+ this.resetSettingsButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.resetSettingsButton.TabIndex = 18;
+ this.resetSettingsButton.Text = "CANCEL";
+ this.resetSettingsButton.Transparency = false;
+ this.resetSettingsButton.Click += new System.EventHandler(this.resetSettingsButton_Click);
//
- // openBackupDirectory
+ // separator1
//
- this.openBackupDirectory.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.openBackupDirectory.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.openBackupDirectory.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.openBackupDirectory.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.openBackupDirectory.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.openBackupDirectory.ForeColor = System.Drawing.Color.White;
- this.openBackupDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.openBackupDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.openBackupDirectory.Location = new System.Drawing.Point(26, 646);
- this.openBackupDirectory.Name = "openBackupDirectory";
- this.openBackupDirectory.Radius = 5;
- this.openBackupDirectory.Size = new System.Drawing.Size(285, 31);
- this.openBackupDirectory.Stroke = true;
- this.openBackupDirectory.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.openBackupDirectory.TabIndex = 28;
- this.openBackupDirectory.Text = "Open Backup Directory";
- this.openBackupDirectory.Transparency = false;
- this.openBackupDirectory.Click += new System.EventHandler(this.openBackupDirectory_Click);
+ this.separator1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.separator1.Location = new System.Drawing.Point(20, 168);
+ this.separator1.Name = "separator1";
+ this.separator1.Size = new System.Drawing.Size(320, 1);
+ this.separator1.TabIndex = 9;
//
- // openDownloadDirectory
+ // separator2
//
- this.openDownloadDirectory.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.openDownloadDirectory.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.openDownloadDirectory.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.openDownloadDirectory.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.openDownloadDirectory.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.openDownloadDirectory.ForeColor = System.Drawing.Color.White;
- this.openDownloadDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.openDownloadDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.openDownloadDirectory.Location = new System.Drawing.Point(26, 609);
- this.openDownloadDirectory.Name = "openDownloadDirectory";
- this.openDownloadDirectory.Radius = 5;
- this.openDownloadDirectory.Size = new System.Drawing.Size(285, 31);
- this.openDownloadDirectory.Stroke = true;
- this.openDownloadDirectory.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.openDownloadDirectory.TabIndex = 27;
- this.openDownloadDirectory.Text = "Open Download Directory";
- this.openDownloadDirectory.Transparency = false;
- this.openDownloadDirectory.Click += new System.EventHandler(this.openDownloadDirectory_Click);
+ this.separator2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.separator2.Location = new System.Drawing.Point(20, 368);
+ this.separator2.Name = "separator2";
+ this.separator2.Size = new System.Drawing.Size(320, 1);
+ this.separator2.TabIndex = 22;
//
- // chkUseDownloadedFiles
+ // separator3
//
- this.chkUseDownloadedFiles.AutoSize = true;
- this.chkUseDownloadedFiles.BackColor = System.Drawing.Color.Transparent;
- this.chkUseDownloadedFiles.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.chkUseDownloadedFiles.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.chkUseDownloadedFiles.Location = new System.Drawing.Point(13, 147);
- this.chkUseDownloadedFiles.Name = "chkUseDownloadedFiles";
- this.chkUseDownloadedFiles.Size = new System.Drawing.Size(227, 22);
- this.chkUseDownloadedFiles.TabIndex = 29;
- this.chkUseDownloadedFiles.Text = "Don\'t Prompt to Re-Download";
- this.chkUseDownloadedFiles.UseVisualStyleBackColor = false;
- this.chkUseDownloadedFiles.CheckedChanged += new System.EventHandler(this.chkUseDownloadedFiles_CheckedChanged);
+ this.separator3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.separator3.Location = new System.Drawing.Point(20, 535);
+ this.separator3.Name = "separator3";
+ this.separator3.Size = new System.Drawing.Size(320, 1);
+ this.separator3.TabIndex = 32;
//
- // bandwidthLabel
+ // separator4
//
- this.bandwidthLabel.AutoSize = true;
- this.bandwidthLabel.BackColor = System.Drawing.Color.Transparent;
- this.bandwidthLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.bandwidthLabel.Location = new System.Drawing.Point(8, 314);
- this.bandwidthLabel.Name = "bandwidthLabel";
- this.bandwidthLabel.Size = new System.Drawing.Size(115, 18);
- this.bandwidthLabel.TabIndex = 30;
- this.bandwidthLabel.Text = "Bandwidth Limit:";
- this.bandwidthLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- //
- // bandwidthLimitTextBox
- //
- this.bandwidthLimitTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.bandwidthLimitTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.bandwidthLimitTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.bandwidthLimitTextBox.ForeColor = System.Drawing.Color.White;
- this.bandwidthLimitTextBox.Location = new System.Drawing.Point(129, 312);
- this.bandwidthLimitTextBox.Name = "bandwidthLimitTextBox";
- this.bandwidthLimitTextBox.Size = new System.Drawing.Size(46, 21);
- this.bandwidthLimitTextBox.TabIndex = 31;
- this.bandwidthLimitTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
- this.bandwidthLimitTextBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.bandwidthLimitTextBox_KeyPress);
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.BackColor = System.Drawing.Color.Transparent;
- this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.label1.Location = new System.Drawing.Point(181, 314);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(43, 18);
- this.label1.TabIndex = 32;
- this.label1.Text = "MB/s";
+ this.separator4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.separator4.Location = new System.Drawing.Point(20, 650);
+ this.separator4.Name = "separator4";
+ this.separator4.Size = new System.Drawing.Size(320, 1);
+ this.separator4.TabIndex = 34;
//
// SettingsForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
- this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));
- this.ClientSize = new System.Drawing.Size(339, 694);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.bandwidthLimitTextBox);
+ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
+ this.ClientSize = new System.Drawing.Size(360, 795);
+ this.Controls.Add(this.lblGeneralSection);
+ this.Controls.Add(this.toggleCheckForUpdates);
+ this.Controls.Add(this.lblCheckForUpdates);
+ this.Controls.Add(this.toggleUpdateConfig);
+ this.Controls.Add(this.lblUpdateConfig);
+ this.Controls.Add(this.toggleMessageBoxes);
+ this.Controls.Add(this.lblMessageBoxes);
+ this.Controls.Add(this.toggleTrailers);
+ this.Controls.Add(this.lblTrailers);
+ this.Controls.Add(this.separator1);
+ this.Controls.Add(this.lblDownloadSection);
+ this.Controls.Add(this.toggleNoDeviceMode);
+ this.Controls.Add(this.lblNoDeviceMode);
+ this.Controls.Add(this.toggleDeleteAfterInstall);
+ this.Controls.Add(this.lblDeleteAfterInstall);
+ this.Controls.Add(this.toggleUseDownloadedFiles);
+ this.Controls.Add(this.lblUseDownloadedFiles);
+ this.Controls.Add(this.toggleAutoReinstall);
+ this.Controls.Add(this.lblAutoReinstall);
this.Controls.Add(this.bandwidthLabel);
- this.Controls.Add(this.chkUseDownloadedFiles);
- this.Controls.Add(this.openBackupDirectory);
- this.Controls.Add(this.openDownloadDirectory);
- this.Controls.Add(this.virtualFilesystemCompatibilityCheckbox);
- this.Controls.Add(this.chkSingleThread);
- this.Controls.Add(this.setBackupDirectory);
+ this.Controls.Add(this.bandwidthLimitTextBox);
+ this.Controls.Add(this.lblBandwidthUnit);
+ this.Controls.Add(this.separator2);
+ this.Controls.Add(this.lblAdvancedSection);
+ this.Controls.Add(this.toggleSingleThread);
+ this.Controls.Add(this.lblSingleThread);
+ this.Controls.Add(this.toggleUserJson);
+ this.Controls.Add(this.lblUserJson);
+ this.Controls.Add(this.toggleBMBF);
+ this.Controls.Add(this.lblBMBF);
+ this.Controls.Add(this.toggleVirtualFilesystem);
+ this.Controls.Add(this.lblVirtualFilesystem);
+ this.Controls.Add(this.separator3);
+ this.Controls.Add(this.lblDirectoriesSection);
this.Controls.Add(this.setDownloadDirectory);
+ this.Controls.Add(this.openDownloadDirectory);
+ this.Controls.Add(this.setBackupDirectory);
+ this.Controls.Add(this.openBackupDirectory);
+ this.Controls.Add(this.separator4);
+ this.Controls.Add(this.lblDebugSection);
this.Controls.Add(this.btnOpenDebug);
this.Controls.Add(this.btnResetDebug);
this.Controls.Add(this.btnUploadDebug);
- this.Controls.Add(this.resetSettingsButton);
- this.Controls.Add(this.applyButton);
this.Controls.Add(this.crashlogID);
- this.Controls.Add(this.bmbfBox);
- this.Controls.Add(this.AutoReinstBox);
- this.Controls.Add(this.nodevicemodeBox);
- this.Controls.Add(this.userJsonOnGameInstall);
- this.Controls.Add(this.updateConfigCheckBox);
- this.Controls.Add(this.deleteAfterInstallCheckBox);
- this.Controls.Add(this.enableMessageBoxesCheckBox);
- this.Controls.Add(this.checkForUpdatesCheckBox);
- this.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.Controls.Add(this.applyButton);
+ this.Controls.Add(this.resetSettingsButton);
this.ForeColor = System.Drawing.Color.White;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
+ this.MinimizeBox = false;
this.Name = "SettingsForm";
this.ShowIcon = false;
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Settings";
this.Load += new System.EventHandler(this.SettingsForm_Load);
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.SettingsForm_KeyPress);
@@ -508,31 +803,68 @@ namespace AndroidSideloader
#endregion
- private System.Windows.Forms.CheckBox checkForUpdatesCheckBox;
- private System.Windows.Forms.CheckBox enableMessageBoxesCheckBox;
- private System.Windows.Forms.CheckBox deleteAfterInstallCheckBox;
- private System.Windows.Forms.CheckBox updateConfigCheckBox;
- private System.Windows.Forms.CheckBox userJsonOnGameInstall;
- private System.Windows.Forms.Label crashlogID;
- private System.Windows.Forms.CheckBox nodevicemodeBox;
- private System.Windows.Forms.CheckBox bmbfBox;
- private System.Windows.Forms.CheckBox AutoReinstBox;
- private RoundButton applyButton;
- private RoundButton resetSettingsButton;
- private RoundButton btnResetDebug;
- private RoundButton btnUploadDebug;
- private RoundButton btnOpenDebug;
- private RoundButton setDownloadDirectory;
- private System.Windows.Forms.FolderBrowserDialog downloadDirectorySetter;
- private RoundButton setBackupDirectory;
- private System.Windows.Forms.FolderBrowserDialog backupDirectorySetter;
- private System.Windows.Forms.CheckBox chkSingleThread;
- private System.Windows.Forms.CheckBox virtualFilesystemCompatibilityCheckbox;
- private RoundButton openBackupDirectory;
- private RoundButton openDownloadDirectory;
- private System.Windows.Forms.CheckBox chkUseDownloadedFiles;
+ // Section Labels
+ private System.Windows.Forms.Label lblGeneralSection;
+ private System.Windows.Forms.Label lblDownloadSection;
+ private System.Windows.Forms.Label lblAdvancedSection;
+ private System.Windows.Forms.Label lblDirectoriesSection;
+ private System.Windows.Forms.Label lblDebugSection;
+
+ // Toggle Switches
+ private ToggleSwitch toggleCheckForUpdates;
+ private ToggleSwitch toggleUpdateConfig;
+ private ToggleSwitch toggleNoDeviceMode;
+ private ToggleSwitch toggleDeleteAfterInstall;
+ private ToggleSwitch toggleSingleThread;
+ private ToggleSwitch toggleUseDownloadedFiles;
+ private ToggleSwitch toggleAutoReinstall;
+ private ToggleSwitch toggleMessageBoxes;
+ private ToggleSwitch toggleUserJson;
+ private ToggleSwitch toggleBMBF;
+ private ToggleSwitch toggleVirtualFilesystem;
+ private ToggleSwitch toggleTrailers;
+
+ // Toggle Labels
+ private System.Windows.Forms.Label lblCheckForUpdates;
+ private System.Windows.Forms.Label lblUpdateConfig;
+ private System.Windows.Forms.Label lblNoDeviceMode;
+ private System.Windows.Forms.Label lblDeleteAfterInstall;
+ private System.Windows.Forms.Label lblSingleThread;
+ private System.Windows.Forms.Label lblUseDownloadedFiles;
+ private System.Windows.Forms.Label lblAutoReinstall;
+ private System.Windows.Forms.Label lblMessageBoxes;
+ private System.Windows.Forms.Label lblUserJson;
+ private System.Windows.Forms.Label lblBMBF;
+ private System.Windows.Forms.Label lblVirtualFilesystem;
+ private System.Windows.Forms.Label lblTrailers;
+
+ // Bandwidth
private System.Windows.Forms.Label bandwidthLabel;
private System.Windows.Forms.TextBox bandwidthLimitTextBox;
- private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label lblBandwidthUnit;
+
+ // Buttons
+ private RoundButton setDownloadDirectory;
+ private RoundButton setBackupDirectory;
+ private RoundButton openDownloadDirectory;
+ private RoundButton openBackupDirectory;
+ private RoundButton btnOpenDebug;
+ private RoundButton btnResetDebug;
+ private RoundButton btnUploadDebug;
+ private RoundButton applyButton;
+ private RoundButton resetSettingsButton;
+
+ // Dialogs
+ private System.Windows.Forms.FolderBrowserDialog downloadDirectorySetter;
+ private System.Windows.Forms.FolderBrowserDialog backupDirectorySetter;
+
+ // Other
+ private System.Windows.Forms.Label crashlogID;
+
+ // Separators
+ private System.Windows.Forms.Panel separator1;
+ private System.Windows.Forms.Panel separator2;
+ private System.Windows.Forms.Panel separator3;
+ private System.Windows.Forms.Panel separator4;
}
-}
+}
\ No newline at end of file
diff --git a/SettingsForm.cs b/SettingsForm.cs
index 99d6014..3764406 100644
--- a/SettingsForm.cs
+++ b/SettingsForm.cs
@@ -11,6 +11,7 @@ namespace AndroidSideloader
public partial class SettingsForm : Form
{
private static readonly SettingsManager _settings = SettingsManager.Instance;
+
public SettingsForm()
{
InitializeComponent();
@@ -25,35 +26,79 @@ namespace AndroidSideloader
private void initSettings()
{
- checkForUpdatesCheckBox.Checked = _settings.CheckForUpdates;
- enableMessageBoxesCheckBox.Checked = _settings.EnableMessageBoxes;
- deleteAfterInstallCheckBox.Checked = _settings.DeleteAllAfterInstall;
- updateConfigCheckBox.Checked = _settings.AutoUpdateConfig;
- userJsonOnGameInstall.Checked = _settings.UserJsonOnGameInstall;
- nodevicemodeBox.Checked = _settings.NodeviceMode;
- bmbfBox.Checked = _settings.BMBFChecked;
- AutoReinstBox.Checked = _settings.AutoReinstall;
- chkSingleThread.Checked = _settings.SingleThreadMode;
- virtualFilesystemCompatibilityCheckbox.Checked = _settings.VirtualFilesystemCompatibility;
+ // Use SetCheckedSilent to avoid triggering events during initialization
+ toggleCheckForUpdates.SetCheckedSilent(_settings.CheckForUpdates);
+ toggleMessageBoxes.SetCheckedSilent(_settings.EnableMessageBoxes);
+ toggleDeleteAfterInstall.SetCheckedSilent(_settings.DeleteAllAfterInstall);
+ toggleUpdateConfig.SetCheckedSilent(_settings.AutoUpdateConfig);
+ toggleUserJson.SetCheckedSilent(_settings.UserJsonOnGameInstall);
+ toggleNoDeviceMode.SetCheckedSilent(_settings.NodeviceMode);
+ toggleBMBF.SetCheckedSilent(_settings.BMBFChecked);
+ toggleAutoReinstall.SetCheckedSilent(_settings.AutoReinstall);
+ toggleSingleThread.SetCheckedSilent(_settings.SingleThreadMode);
+ toggleVirtualFilesystem.SetCheckedSilent(_settings.VirtualFilesystemCompatibility);
+ toggleUseDownloadedFiles.SetCheckedSilent(_settings.UseDownloadedFiles);
+ toggleTrailers.SetCheckedSilent(_settings.TrailersEnabled);
bandwidthLimitTextBox.Text = _settings.BandwidthLimit.ToString();
- if (nodevicemodeBox.Checked)
+
+ // Handle no device mode disabling delete after install
+ if (toggleNoDeviceMode.Checked)
{
- deleteAfterInstallCheckBox.Checked = false;
- deleteAfterInstallCheckBox.Enabled = false;
+ toggleDeleteAfterInstall.SetCheckedSilent(false);
+ toggleDeleteAfterInstall.Enabled = false;
+ lblDeleteAfterInstall.ForeColor = System.Drawing.Color.FromArgb(100, 100, 100);
}
- chkUseDownloadedFiles.Checked = _settings.UseDownloadedFiles;
}
private void initToolTips()
{
- ToolTip checkForUpdatesToolTip = new ToolTip();
- checkForUpdatesToolTip.SetToolTip(checkForUpdatesCheckBox, "If this is checked, the software will check for available updates");
- ToolTip enableMessageBoxesToolTip = new ToolTip();
- enableMessageBoxesToolTip.SetToolTip(enableMessageBoxesCheckBox, "If this is checked, the software will display message boxes after every completed task");
- ToolTip deleteAfterInstallToolTip = new ToolTip();
- deleteAfterInstallToolTip.SetToolTip(deleteAfterInstallCheckBox, "If this is checked, the software will delete all game files after downloading and installing a game from a remote server");
- ToolTip chkUseDownloadedFilesTooltip = new ToolTip();
- chkUseDownloadedFilesTooltip.SetToolTip(chkUseDownloadedFiles, "If this is checked, Rookie will always install Downloaded files without Re-Downloading or Asking to Re-Download");
+ ToolTip toolTip = new ToolTip();
+ toolTip.SetToolTip(toggleCheckForUpdates, "Check for available application updates on startup");
+ toolTip.SetToolTip(lblCheckForUpdates, "Check for available application updates on startup");
+ toolTip.SetToolTip(toggleMessageBoxes, "Show message boxes after every completed task");
+ toolTip.SetToolTip(lblMessageBoxes, "Show message boxes after every completed task");
+ toolTip.SetToolTip(toggleDeleteAfterInstall, "Delete game files after downloading and installing");
+ toolTip.SetToolTip(lblDeleteAfterInstall, "Delete game files after downloading and installing");
+ toolTip.SetToolTip(toggleUseDownloadedFiles, "Always install downloaded files without prompting to re-download");
+ toolTip.SetToolTip(lblUseDownloadedFiles, "Always install downloaded files without prompting to re-download");
+ toolTip.SetToolTip(toggleTrailers, "Show game trailers in the sidebar when selecting a game");
+ toolTip.SetToolTip(lblTrailers, "Show game trailers in the sidebar when selecting a game");
+ }
+
+ private void SaveAllSettings()
+ {
+ string input = bandwidthLimitTextBox.Text;
+ Regex regex = new Regex(@"^\d+(\.\d+)?$");
+
+ if (regex.IsMatch(input) && float.TryParse(input, out float bandwidthLimit))
+ {
+ _settings.BandwidthLimit = bandwidthLimit;
+ }
+
+ _settings.CheckForUpdates = toggleCheckForUpdates.Checked;
+ _settings.EnableMessageBoxes = toggleMessageBoxes.Checked;
+ _settings.DeleteAllAfterInstall = toggleDeleteAfterInstall.Checked;
+ _settings.AutoUpdateConfig = toggleUpdateConfig.Checked;
+ _settings.UserJsonOnGameInstall = toggleUserJson.Checked;
+ _settings.NodeviceMode = toggleNoDeviceMode.Checked;
+ _settings.BMBFChecked = toggleBMBF.Checked;
+ _settings.AutoReinstall = toggleAutoReinstall.Checked;
+ _settings.SingleThreadMode = toggleSingleThread.Checked;
+ _settings.VirtualFilesystemCompatibility = toggleVirtualFilesystem.Checked;
+ _settings.UseDownloadedFiles = toggleUseDownloadedFiles.Checked;
+ _settings.TrailersEnabled = toggleTrailers.Checked;
+
+ if (Program.form != null)
+ {
+ Program.form.SetTrailerVisibility(toggleTrailers.Checked);
+ }
+
+ if (_settings.AutoUpdateConfig)
+ {
+ _settings.CreatePubMirrorFile = true;
+ }
+
+ _settings.Save();
}
public void btnUploadDebug_click(object sender, EventArgs e)
@@ -89,74 +134,54 @@ namespace AndroidSideloader
string input = bandwidthLimitTextBox.Text;
Regex regex = new Regex(@"^\d+(\.\d+)?$");
- if (regex.IsMatch(input) && float.TryParse(input, out float bandwidthLimit))
- {
- _settings.BandwidthLimit = bandwidthLimit;
- _settings.Save();
- this.Close();
- }
- else
+ if (!regex.IsMatch(input) || !float.TryParse(input, out _))
{
MessageBox.Show("Please enter a valid number for the bandwidth limit.");
+ return;
}
+
+ SaveAllSettings();
+ this.Close();
}
- private void checkForUpdatesCheckBox_CheckedChanged(object sender, EventArgs e)
+ private void toggleCheckForUpdates_CheckedChanged(object sender, EventArgs e)
{
- _settings.CheckForUpdates = checkForUpdatesCheckBox.Checked;
- _settings.Save();
+ // Settings saved on form close
}
- private void chkUseDownloadedFiles_CheckedChanged(object sender, EventArgs e)
+ private void toggleUseDownloadedFiles_CheckedChanged(object sender, EventArgs e)
{
- _settings.UseDownloadedFiles = chkUseDownloadedFiles.Checked;
- _settings.Save();
+ // Settings saved on form close
}
- private void enableMessageBoxesCheckBox_CheckedChanged(object sender, EventArgs e)
+ private void toggleMessageBoxes_CheckedChanged(object sender, EventArgs e)
{
- _settings.EnableMessageBoxes = enableMessageBoxesCheckBox.Checked;
- _settings.Save();
+ // Settings saved on form close
+ }
+
+ private void toggleTrailers_CheckedChanged(object sender, EventArgs e)
+ {
+ // Settings saved on form close
}
private void resetSettingsButton_Click(object sender, EventArgs e)
{
- // Reset the specific properties
- _settings.CustomDownloadDir = false;
- _settings.CustomBackupDir = false;
-
- // Set backup folder and download directory
- MainForm.backupFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Rookie Backups");
- _settings.DownloadDir = Environment.CurrentDirectory;
- _settings.CreatePubMirrorFile = true;
-
- // Optionally, call initSettings if it needs to initialize anything based on these settings
- initSettings();
-
- // Save the updated settings
- _settings.Save();
+ this.Close();
}
- private void deleteAfterInstallCheckBox_CheckedChanged(object sender, EventArgs e)
+ private void toggleDeleteAfterInstall_CheckedChanged(object sender, EventArgs e)
{
- _settings.DeleteAllAfterInstall = deleteAfterInstallCheckBox.Checked;
- _settings.Save();
+ // Settings saved on form close
}
- private void updateConfigCheckBox_CheckedChanged(object sender, EventArgs e)
+ private void toggleUpdateConfig_CheckedChanged(object sender, EventArgs e)
{
- _settings.AutoUpdateConfig = updateConfigCheckBox.Checked;
- if (_settings.AutoUpdateConfig)
- {
- _settings.CreatePubMirrorFile = true;
- }
- _settings.Save();
+ // Settings saved on form close
}
- private void userJsonOnGameInstall_CheckedChanged(object sender, EventArgs e)
+ private void toggleUserJson_CheckedChanged(object sender, EventArgs e)
{
- _settings.UserJsonOnGameInstall = userJsonOnGameInstall.Checked;
- _settings.Save();
+ // Settings saved on form close
}
private void SettingsForm_KeyPress(object sender, KeyPressEventArgs e)
@@ -190,48 +215,50 @@ namespace AndroidSideloader
return base.ProcessDialogKey(keyData);
}
- private void nodevicemodeBox_CheckedChanged(object sender, EventArgs e)
+ private void toggleNoDeviceMode_CheckedChanged(object sender, EventArgs e)
{
- _settings.NodeviceMode = nodevicemodeBox.Checked;
- if (!nodevicemodeBox.Checked)
+ // Update UI state only - settings saved on form close
+ if (!toggleNoDeviceMode.Checked)
{
- deleteAfterInstallCheckBox.Checked = true;
- _settings.DeleteAllAfterInstall = true;
- deleteAfterInstallCheckBox.Enabled = true;
+ toggleDeleteAfterInstall.Checked = true;
+ toggleDeleteAfterInstall.Enabled = true;
+ lblDeleteAfterInstall.ForeColor = System.Drawing.Color.White;
}
else
{
- deleteAfterInstallCheckBox.Checked = false;
- _settings.DeleteAllAfterInstall = false;
- deleteAfterInstallCheckBox.Enabled = false;
+ toggleDeleteAfterInstall.SetCheckedSilent(false);
+ toggleDeleteAfterInstall.Enabled = false;
+ lblDeleteAfterInstall.ForeColor = System.Drawing.Color.FromArgb(100, 100, 100);
}
- _settings.Save();
}
- private void bmbfBox_CheckedChanged(object sender, EventArgs e)
+ private void toggleBMBF_CheckedChanged(object sender, EventArgs e)
{
- _settings.BMBFChecked = bmbfBox.Checked;
- _settings.Save();
+ // Settings saved on form close
}
- private void AutoReinstBox_CheckedChanged(object sender, EventArgs e)
+ private void toggleAutoReinstall_CheckedChanged(object sender, EventArgs e)
{
- _settings.AutoReinstall = AutoReinstBox.Checked;
- _settings.Save();
+ // Settings saved on form close
}
- private void AutoReinstBox_Click(object sender, EventArgs e)
+ private void toggleAutoReinstall_Click(object sender, EventArgs e)
{
- if (AutoReinstBox.Checked)
+ if (toggleAutoReinstall.Checked)
{
- DialogResult dialogResult = FlexibleMessageBox.Show(this, "WARNING: This box enables automatic reinstall when installs fail,\ndue to some games not allowing " +
- "access to their save data (less than 5%) this\noption can lead to losing your progress." +
- " However with this option\nchecked when installs fail you won't have to agree to a prompt to perform\nthe reinstall. " +
- "(ideal when installing from a queue).\n\nNOTE: If your usb/wireless adb connection is extremely slow this option can\ncause larger" +
- "apk file installations to fail. Enable anyway?", "WARNING", MessageBoxButtons.OKCancel);
+ DialogResult dialogResult = FlexibleMessageBox.Show(this,
+ "WARNING: This enables automatic reinstall when installs fail.\n\n" +
+ "Some games (less than 5%) don't allow access to their save data, " +
+ "which can lead to losing your progress.\n\n" +
+ "However, with this option enabled, you won't have to confirm reinstalls manually " +
+ "(ideal for queue installations).\n\n" +
+ "NOTE: If your USB/wireless ADB connection is slow, this may cause " +
+ "larger APK installations to fail.\n\nEnable anyway?",
+ "WARNING", MessageBoxButtons.OKCancel);
+
if (dialogResult == DialogResult.Cancel)
{
- AutoReinstBox.Checked = false;
+ toggleAutoReinstall.SetCheckedSilent(false);
}
}
}
@@ -250,7 +277,6 @@ namespace AndroidSideloader
{
_settings.CustomDownloadDir = true;
_settings.DownloadDir = downloadDirectorySetter.SelectedPath;
- _settings.Save();
}
}
@@ -261,20 +287,17 @@ namespace AndroidSideloader
_settings.CustomBackupDir = true;
_settings.BackupDir = backupDirectorySetter.SelectedPath;
MainForm.backupFolder = _settings.BackupDir;
- _settings.Save();
}
}
- private void chkSingleThread_CheckedChanged(object sender, EventArgs e)
+ private void toggleSingleThread_CheckedChanged(object sender, EventArgs e)
{
- _settings.SingleThreadMode = chkSingleThread.Checked;
- _settings.Save();
+ // Settings saved on form close
}
- private void virtualFilesystemCompatibilityCheckbox_CheckedChanged(object sender, EventArgs e)
+ private void toggleVirtualFilesystem_CheckedChanged(object sender, EventArgs e)
{
- _settings.VirtualFilesystemCompatibility = virtualFilesystemCompatibilityCheckbox.Checked;
- _settings.Save();
+ // Settings saved on form close
}
private void openDownloadDirectory_Click(object sender, EventArgs e)
diff --git a/SettingsForm.resx b/SettingsForm.resx
index 60a1fe2..1cb04e2 100644
--- a/SettingsForm.resx
+++ b/SettingsForm.resx
@@ -127,3052 +127,6 @@
25
-
-
- iVBORw0KGgoAAAANSUhEUgAAB4AAAAQ4CAYAAADo08FDAAAABGdBTUEAALGPC/xhBQAA/8dJREFUeF7s
- 3FFqbNnZNetqwrncBS6Kv/+N9EECGbNkMpR+GHMbvnkRqMjcsUa8dbuQ/vj169c//7//7/87ysfmq93/
- 9//+37fPvvjzzz//a7d2V9Tuq+Z778/d2l1Ru6+a770/d2t3Re2+ar73/tyt3RW1+6r53vtzt3ZX1O6r
- 5nvvz93aXVG7r5rvvT93a3dF7b5qvvf+3K3dFbX7qvne+3O3dlfU7qvme+/P3dpdUbuvmu+9P3drd0Xt
- vmq+9/7crd0Vtfuq+d77c7d2V9Tuq+Z778/d2l1Ru6+a770/d2t3Re2+ar73/tyt3RW1+6pZ7/3j4z/+
- +OOPo3wFPD//4iP6+dkJd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF
- 7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUr
- zeXeF8AHqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- rjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqW53PsC+AC1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNJd7XwAfoHalWdwVtSvN4q6oXWkW
- d0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pXmcu8L4APUrjSLu6J2pVncFbUrzeKuqF1pFndF7Uqz
- uCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZx
- V9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70lzufQF8gNqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gralea
- xV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSL
- u6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3
- Re1Ks7graleay/3j4x/8DiRa3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ
- 3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ
- 3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ
- 3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3PsbwAeoXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSL
- u6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3
- Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K
- 2pVmcVfUrjSLu6J2pbnc+wL4ALUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ
- 3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4
- K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX
- 1K40l3tfAB+gdqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN
- 4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rF
- XVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oraleZy7wvgA9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSXO59AXyA2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rLvS+AD1C70izuitqVZnFX1K40i7uidqVZ3BW1
- K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pX
- msVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40
- i7uidqVZ3BW1K83irqhdaRZ3Re1Kc7l//Pr1618POcXX5jPop9Hi3nv33Hvfaxb33rvn3vtes7j33j33
- 3veaxb337rn3vtcs7r13z733vWZx77177r3vNYt7791z732vWdx7755773vN4t5799x732sW99675977
- XrO4/9fuvS+AD3Dvfa9Z3Hvvnnvve83i3nv33Hvfaxb33rvn3vtes7j33j333veaxb337rn3vtcs7r13
- z733vWZx77177r3vNYt7791z732vWdx7755773vN4t579/zOe++fgD5A7UqzuCtqV5rFXVG70izuitqV
- ZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN
- 4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rF
- XVG70izuitqVZnFX1K40i7uidqVZ3BW1K83l3hfAB6hdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onaludz7AvgAtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSXe18AH6B2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1
- K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pX
- msVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqV5nLvC+AD
- 1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6o
- XWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG7
- 0izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Jc7n0BfIDalWZxV9SuNIu7
- onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF
- 7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsv94+Mf/A4kWtxnxymkWdxnxymkWdxnxymk
- WdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymk
- WdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymk
- WdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdz7G8AHqF1pFndF
- 7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUr
- zeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqW53PsC+AC1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- rjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhd
- aRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNJd7XwAfoHalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0Xt
- SrO4K2pXmsVdUbvSLO6K2pXmcu8L4APUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70lzufQF8gNqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZx
- V9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleay70v
- gA9Qu9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSL
- u6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3
- Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSnO5f/zjH//4569fv/75
- 559/fv78dz6+++uvvz5//jc8n/fvz/34+RX/5CP6+dkXX894fv5T92v73nvvfZfn8+6935t+0izu1/a9
- 9977Ls/n3Xu/N/2kWdyv7Xvvvfddns+7935v+kmzuF/b995777s8n3fv/d70k2Zxv7bvvffed3k+7977
- veknzeJ+bd97773v8nzevfd700+axf3avvfee9/l+bx77/emnzSL+7V97733vsvzef8L9/7xcdAz6IsP
- +eP7/8Tff//9yfPzLz7cj/+J/4mvzWfQmo/Ne++99z9x7733Pu+8935vWnLvvfc+77j3fv/u3nvvvffu
- uffee5933Hu/f3fvvffee/fce++9zzvuvd+/u/fee++9e+69997nHffe79/9L9/78k9Af0Q/P/v3Xx9e
- uStqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZx
- V9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- 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
- tSvN4q6oXWkWd0XtSrO4Kz43Xw1LtLgraleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkW
- d0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd8Xn5qthiRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkW
- d0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q743Hw1LNHl/vr161/POMXX5rPnp83i3nv33Hvfaxb33rvn3vtes7j33j333veaxb337rn3vtcs
- 7r13z733vWZx77177r3vNYt7791z732vWdx7755773vN4t5799x732sW99675977XrO4v+ve+wL4jWZx
- 77177r3vNYt7791z732vWdx7755773vN4t5799x732sW99675977XrO499499973msW99+65977XLO69
- d8+9971mce+9e+697zWLe+/dc+99r1nc33Xvb3sB/MpdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCs+N18NS7S4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFnfF5+arYYkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKu+Nx8NSzR4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFZ+br4YlWtwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu+Jz
- 89WwRIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVd8br4aluhy
- P77/HUizuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0iz
- uM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0iz
- uM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0iz
- uM+OU0izuM+OU/y2F8Cv3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu74nPz1bBEi7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV3xu
- vhqWaHFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7orPzVfDEi3u
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV3xuflqWKLFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7grPjdfDUu0uCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3xefmr1+//hXw5CP6+dkXH97KXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7grPjZfvgBeUQe/+p/1559//tdu
- 7a6o3VfN996fu7W7onZfNd97f+7W7orafdV87/25W7sravdV8733527trqjdV8333p+7tbuidl8133t/
- 7tbuitp91Xzv/blbuytq91Xzvffnbu2uqN1Xzffen7u1u6J2XzXfe3/u1u6K2n3VfO/9uVu7K2r3VfO9
- 9+du7a6o3VfN996fu7W7onZfNd97f+7W7orafdV87/25W7sravdVs9778k9Ar/gKeH7+xUf087MT7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUr
- zeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gralea
- xV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsu9L4APULvSLO6K2pVmcVfU
- rjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhd
- aRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvS
- LO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UpzufcF8AFqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0Xt
- SrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqV
- ZnFX1K40i7uidqVZ3BW1K83irqhdaS73vgA+QO1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN5d4XwAeoXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pbnc+wL4ALUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3
- Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K
- 2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40l/vHxz/4HUi0
- uM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0iz
- uM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0iz
- uM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0iz
- uM+OU0izuPc3gA9Qu9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K
- 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
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKu+Nx8NSzR4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFZ+br4YlutyP738H0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izu
- s+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izu
- s+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izu
- s+MU0izus+MU0izus+MU0izus+MUv+0F8Ct3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q743Hw1LNHirqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVn5uvhiVa3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu74nPz1bBEi7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV3xu
- vhqWaHFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7orPzVfDEi3u
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV3xuflqWKLL/fXr17+e
- cYqvzWfPT5vFvffuufe+1yzuvXfPvfe9ZnHvvXvuve81i3vv3XPvfa9Z3Hvvnnvve83i3nv33Hvfaxb3
- 3rvn3vtes7j33j333veaxb337rn3vtcs7r13z733vWZxf9e99wXwG83i3nv33Hvfaxb33rvn3vtes7j3
- 3j333veaxb337rn3vtcs7r13z733vWZx77177r3vNYt7791z732vWdx7755773vN4t5799x732sW9967
- 5977XrO4v+ve3/YC+JW7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVd8br4almhxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6Kz81X
- wxIt7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd8bn5aliixV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4Kz43Xw1LtLgraleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd8Xn5qthiRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q743Hw1LNHlfnz/O5BmcZ8dp5BmcZ8dp5Bm
- cZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5Bm
- cZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5Bm
- cZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp/htL4BfuStq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3xefmq2GJFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irvjcfDUs0eKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BWfm6+GJVrcFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- 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
- cZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5Bm
- cZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5Bm
- cZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5Bmce9vAB+gdqVZ3BW1
- K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pX
- msVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40
- i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oraleZy7wvgA9SuNIu7onalWdwVtSvN4q6o
- XWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG7
- 0izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onal
- WdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSXO59AXyA2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF
- 7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUr
- zeKuqF1pFndF7UqzuCtqV5rLvS+AD1C70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- rjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhd
- aRZ3Re1Kc7n3BfABaleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWku974A
- PkDtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeX+8evXr3895BRfm8+g
- n0aLe+/dc+99r1nce++ee+97zeLee/fce99rFvfeu+fe+16zuPfePffe95rFvffuufe+1yzuvXfPvfe9
- ZnHvvXvuve81i3vv3XPvfa9Z3Hvvnnvve83i/l+7974APsC9971mce+9e+697zWLe+/dc+99r1nce++e
- e+97zeLee/fce99rFvfeu+fe+16zuPfePffe95rFvffuufe+1yzuvXfPvfe9ZnHvvXvuve81i3vv3fM7
- 771/AvoAtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF
- 7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSXe18AH6B2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- rjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqV5nLvC+AD1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Jc7n0BfIDalWZxV9SuNIu7onalWdwVtSvN4q6oXWkW
- d0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsu9L4APULvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7Uqz
- uCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZx
- V9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UpzufcF8AFqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gralea
- xV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSL
- u6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaS73
- j49/8DuQaHGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQ
- ZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQ
- ZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQ
- ZnGfHaeQZnGfHaeQZnHvbwAfoHalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSL
- u6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3
- Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K
- 2pXmcu8L4APUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ
- 3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4
- K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70lzufQF8gNqV
- ZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN
- 4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rF
- XVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleay70vgA9Qu9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSnO59wXwAWpXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pLve+AD5A7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1
- K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pX
- msVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40
- i7uidqVZ3BW1K83l/vGPf/zjn79+/frnn3/++fnz3/n47q+//vr8+d/wfN6/P/fj51f8k4/o52dffD3j
- +flP3a/te++9912ez7v3fm/6SbO4X9v33nvvuzyfd+/93vSTZnG/tu+99953eT7v3vu96SfN4n5t33vv
- ve/yfN6993vTT5rF/dq+99573+X5vHvv96afNIv7tX3vvfe+y/N5997vTT9pFvdr+957732X5/Puvd+b
- ftIs7tf2vffe+y7P5/0v3PvHx0HPoC8+5I/v/xN///33J8/Pv/hwP/4n/ie+Np9Baz4277333v/Evffe
- +7zz3vu9acm99977vOPe+/27e++999675957733ece/9/t299957791z7733Pu+4937/7t5777337rn3
- 3nufd9x7v3/3v3zvyz8B/RH9/Ozff3145a6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFZ+br4YlWtwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu+Jz89WwRIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVd8br4almhxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6Kz81X
- wxIt7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd8bn5aliixV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4Kz43Xw1LdLkf3/8OpFnc
- Z8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFnc
- Z8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFnc
- Z8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFnc
- Z8cpftsL4FfuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV3xuflq
- WKLFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- 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
- e18AH6B2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhd
- aRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvS
- LO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqV5nLvC+AD1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0Xt
- SrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqV
- ZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Jc7n0BfIDalWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsv949evX/96yCm+Np9BP40W99675977XrO499499973
- msW99+65977XLO69d8+9971mce+9e+697zWLe+/dc+99r1nce++ee+97zeLee/fce99rFvfeu+fe+16z
- uPfePffe95rF/b92730BfIB773vN4t5799x732sW99675977XrO499499973msW99+65977XLO69d8+9
- 971mce+9e+697zWLe+/dc+99r1nce++ee+97zeLee/fce99rFvfeu+d33nv/BPQBaleaxV1Ru9Is7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUr
- zeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gralea
- xV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWku974APkDtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- 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
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSXO59AXyA2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40
- i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkW
- d0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rL/eMf//jH
- P3/9+vXPP//88/Pnv/Px3V9//fX587/h+bx/f+7Hz6/4Jx/Rz8+++HrG8/Oful/b995777s8n3fv/d70
- k2Zxv7bvvffed3k+7977veknzeJ+bd97773v8nzevfd700+axf3avvfee9/l+bx77/emnzSL+7V97733
- vsvzeffe700/aRb3a/vee+99l+fz7r3fm37SLO7X9r333vsuz+fde783/aRZ3K/te++9912ez/tfuPeP
- j4OeQV98yB/f/yf+/vvvT56ff/HhfvxP/E98bT6D1nxs3nvvvf+Je++993nnvfd705J77733ece99/t3
- 99577713z7333vu84977/bt777333rvn3nvvfd5x7/3+3b333nvv3XPvvfc+77j3fv/uf/nel38C+iP6
- +dm///rwyl1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4Kz43Xw1L
- tLgraleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd8Xn5qthiRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q743Hw1LNHirqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVn5uvhiVa3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu74nPz1bBEi7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV3xuvhqW6HI/vv8dSLO4z45TSLO4z45TSLO4z45TSLO4
- z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4
- z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4
- z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45T/LYXwK/cFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7vic/PVsESLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFXfG6+GpZocVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuis/NV8MSLe6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXfG5+WpYosVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCs+N18NS7S4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFnfF5+arYYku99evX/96xim+Np89P20W99675977XrO499499973msW99+65977XLO69
- d8+9971mce+9e+697zWLe+/dc+99r1nce++ee+97zeLee/fce99rFvfeu+fe+16zuPfePffe95rF/V33
- 3hfAbzSLe+/dc+99r1nce++ee+97zeLee/fce99rFvfeu+fe+16zuPfePffe95rFvffuufe+1yzuvXfP
- vfe9ZnHvvXvuve81i3vv3XPvfa9Z3Hvvnnvve83i/q57f9sL4FfuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV3xuflqWKLFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7grPjdfDUu0uCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3xefmq2GJFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irvjcfDUs0eKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BWfm6+GJVrcFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7vi
- c/PVsESX+/H970CaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKa
- xX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKa
- xX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKa
- xX12nEKaxX12nEKaxX12nOK3vQB+5a6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- rjSLu6J2pVncFZ+br4YlWtwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- rjSLu+Jz89WwRIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVd8
- br4almhxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6Kz81XwxIt
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd8bn5aliixV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4Kz43f/369a+AJx/Rz8+++PBW
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd8bH58gXwijr41f+s
- P//88792a3dF7b5qvvf+3K3dFbX7qvne+3O3dlfU7qvme+/P3dpdUbuvmu+9P3drd0Xtvmq+9/7crd0V
- tfuq+d77c7d2V9Tuq+Z778/d2l1Ru6+a770/d2t3Re2+ar73/tyt3RW1+6r53vtzt3ZX1O6r5nvvz93a
- XVG7r5rvvT93a3dF7b5qvvf+3K3dFbX7qvne+3O3dlfU7qvme+/P3dpdUbuvmvXel38CesVXwPPzLz6i
- n5+dcFfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1
- K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pX
- msVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70lzufQF8gNqVZnFX
- 1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6o
- XWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG7
- 0izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleay70vgA9Qu9Is7oralWZxV9SuNIu7
- onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF
- 7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSnO59wXwAWpXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- rjSLu6J2pVncFbUrzeKuqF1pLve+AD5A7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83l3hfAB6hdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkW
- d0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onaludw/
- Pv7B70CixX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKa
- xX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKa
- xX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKa
- xX12nEKaxX12nEKaxb2/AXyA2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rLvS+AD1C70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZx
- V9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Kc7n3BfABalea
- xV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSL
- u6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3
- Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWku974APkDtSrO4K2pXmsVdUbvS
- LO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ
- 3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4
- K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeXeF8AHqF1pFndF7UqzuCtqV5rFXVG70izuitqV
- ZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN
- 4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rF
- XVG70izuitqVZnFX1K40i7uidqW53PsC+AC1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNJf7x69fv/71kFN8bT6Dfhot7r13z733vWZx77177r3vNYt7791z732vWdx7755773vN
- 4t5799x732sW99675977XrO499499973msW99+65977XLO69d8+9971mce+9e+697zWL+3/t3vsC+AD3
- 3veaxb337rn3vtcs7r13z733vWZx77177r3vNYt7791z732vWdx7755773vN4t5799x732sW99675977
- XrO499499973msW99+65977XLO69d8/vvPf+CegD1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gralea
- xV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSL
- u6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3
- Re1Ks7graleaxV1Ru9Jc7n0BfIDalWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvS
- LO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ
- 3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4
- K2pXmsu9L4APULvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqV
- ZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN
- 4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UpzufcF8AFq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaS73vgA+QO1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN5d4XwAeoXWkWd0XtSrO4K2pXmsVdUbvSLO6K
- 2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1
- K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pX
- msVdUbvSLO6K2pVmcVfUrjSLu6J2pbncPz7+we9AosV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxC
- msV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxC
- msV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxC
- msV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsW9vwF8gNqVZnFX1K40i7uidqVZ3BW1
- K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pX
- msVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40
- i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleay70vgA9Qu9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6o
- XWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG7
- 0izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onal
- WdwVtSvN4q6oXWkWd0XtSnO59wXwAWpXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF
- 7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUr
- zeKuqF1pLve+AD5A7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- rjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83l3hfA
- B6hdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onaludz7AvgAtSvN4q6oXWkW
- d0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSX+8c//vGPf/769euff/755+fPf+fju7/+
- +uvz53/D83n//tyPn1/xTz6in5998fWM5+c/db+277333nd5Pu/e+73pJ83ifm3fe++97/J83r33e9NP
- msX92r733nvf5fm8e+/3pp80i/u1fe+9977L83n33u9NP2kW92v73nvvfZfn8+6935t+0izu1/a99977
- Ls/n3Xu/N/2kWdyv7Xvvvfddns+7935v+kmzuF/b995777s8n/e/cO8fHwc9g774kD++/0/8/fffnzw/
- /+LD/fif+J/42nwGrfnYvPfee/8T99577/POe+/3piX33nvv84577/fv7r333nvvnnvvvfd5x733+3f3
- 3nvvvXfPvffe+7zj3vv9u3vvvffeu+fee+993nHv/f7d//K9L/8E9Ef087N///XhlbuidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1+/+zc0cpkmZXtoRrGFkgofmPsi/hEEKcFL7C+8P+bLjnwUhwL/Nlu14PmdIsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt+K1+W5YosWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBWvzXfDEi1uxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa14bb4blmhxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7Fa/PdsESLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnErXpvv
- hiVa3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb8dp8NyzRy/36
- /k8gzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKe
- HU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKe
- HU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKe
- HU8hzeKeHU/xxx6A37kVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t+K1+W5YosWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBWvzXfD
- Ei1uxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa14bb4blmhxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- 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
- 4AdYu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy7wPwA6xdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalebn3AfgB1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9K83PsA/ABrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaV7uX1//wZ9AosU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55C
- msU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55C
- msU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55C
- msU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsW9fwP4AdauNItbsXalWdyKtSvN4lasXWkWt2Lt
- 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
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvNy70PwA+wdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl3gfgB1i7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83L/+voP/gQSLe7Z8RTSLO7Z
- 8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z
- 8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z
- 8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO79
- G8APsHalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pXm5d4H4AdYu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy7wPwA6xdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalebn3AfgB1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9K83PsA/ABrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaV7ufQB+gLUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40L/ev
- f/zjH//z69ev//n7779ff/4nX9/985//fP35v+H8vf/83a8/v+NPvqLPz775/o3z85+639v33nvvp5y/
- d+/9veknzeJ+b997772fcv7evff3pp80i/u9fe+9937K+Xv33t+bftIs7vf2vffe+ynn7917f2/6SbO4
- 39v33nvvp5y/d+/9veknzeJ+b997772fcv7evff3pp80i/u9fe+9937K+Xv33t+bftIs7vf2vffe+ynn
- 7/1fuPevr4POoG++5K/v/xv/+te/Xpyff/Plfv1P/G98b55BNV+b995773/j3nvvPe+89/7eVHLvvfee
- d9x7f//u3nvvvff23Hvvvecd997fv7v33nvvvT333nvvece99/fv7r333ntvz7333nvece/9/bv/y/e+
- /Segv6LPz/7zrw9XbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- eG2+G5ZocSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxWvz3bBE
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK16b74YlWtyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW/HafDcs0eJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3IrX5rthiRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4la8Nt8NS/Ryv77/E0izuGfHU0izuGfHU0izuGfH
- U0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfH
- U0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfH
- U0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU/yxB+B3bsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWteG2+G5ZocSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxWvz3bBEi1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 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
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK16b
- 74Ylerlf3/8JpFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFnc
- s+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFnc
- s+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFnc
- s+MppFncs+MppFncs+Mp/tgD8Du3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4la8Nt8NS7S4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- FrfitfluWKLFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVr813
- wxItbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- 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
- 13/wJ5Bocc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bm
- cc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bm
- cc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bm
- cc+Op5Bmcc+Op5Bmce/fAH6AtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjQv9z4AP8DalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmpd7H4AfYO1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvNy70PwA+wdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl3gfgB1i70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83LvA/ADrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqV5uX/9+vXr3z/yFN+bZ9BPo8W99/bcez9rFvfe23Pv/axZ3Htvz733s2Zx7709997P
- msW99/bcez9rFvfe23Pv/axZ3Htvz733s2Zx7709997PmsW99/bcez9rFvfe23Pv/axZ3P/f7r0PwA9w
- 7/2sWdx7b8+997Nmce+9Pffez5rFvff23Hs/axb33ttz7/2sWdx7b8+997Nmce+9Pffez5rFvff23Hs/
- axb33ttz7/2sWdx7b8+997Nmce+9PX/y3vtPQD/A2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5qXex+AH2DtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzcu9D8APsHalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pXm5d4H4AdY
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy7wPwA6xdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalebn3AfgB1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9K83L++/oM/gUSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8
- hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8
- hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8
- hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe3Y8hTSLe/8G8AOsXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pXm59wH4AdauNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSvNz7APwAa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWle7n0AfoC1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNC/3
- PgA/wNqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZpqxiUsAAP/0SURBVHEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- l3sfgB9g7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83L/esf//jH//z6
- 9et//v7779ef/8nXd//85z9ff/5vOH/vP3/368/v+JOv6POzb75/4/z8p+739r333vsp5+/de39v+kmz
- uN/b995776ecv3fv/b3pJ83ifm/fe++9n3L+3r3396afNIv7vX3vvfd+yvl7997fm37SLO739r333vsp
- 5+/de39v+kmzuN/b995776ecv3fv/b3pJ83ifm/fe++9n3L+3r3396afNIv7vX3vvfd+yvl7/xfu/evr
- oDPomy/56/v/xr/+9a8X5+fffLlf/xP/G9+bZ1DN1+a9997737j33nvPO++9vzeV3Hvvvecd997fv7v3
- 3nvvvT333nvvece99/fv7r333ntvz7333nvece/9/bt777333ttz7733nnfce3//7v/yvW//Ceiv6POz
- //zrw5VbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcStem++GJVrc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1vx2nw3LNHiVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK1+a7YYkWt2LtSrO4FWtXmsWt
- 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
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1vx2nw3
- LNHiVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK1+a7YYle7tf3
- fwJpFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfs
- eAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfs
- eAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfs
- eAppFvfseIo/9gD8zq1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- Fa/Nd8MSLW7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrXhtvhuW
- aHEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 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
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- y70PwA+wdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl/vX1H/wJJFrc
- s+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFnc
- s+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFnc
- s+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFnc
- s+MppFnc+zeAH2DtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzcu9D8AP
- sHalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pXm5d4H4AdYu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- 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
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl3gfgB1i70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83L/+sc//vE/v379+p+///779ed/8vXdP//5z9ef
- /xvO3/vP3/368zv+5Cv6/Oyb7984P/+p+7197733fsr5e/fe35t+0izu9/a99977Kefv3Xt/b/pJs7jf
- 2/fee++nnL937/296SfN4n5v33vvvZ9y/t699/emnzSL+7197733fsr5e/fe35t+0izu9/a99977Kefv
- 3Xt/b/pJs7jf2/fee++nnL937/296SfN4n5v33vvvZ9y/t7/hXv/+jroDPrmS/76/r/xr3/968X5+Tdf
- 7tf/xP/G9+YZVPO1ee+99/437r333vPOe+/vTSX33nvvece99/fv7r333ntvz7333nvece/9/bt77733
- 3ttz7733nnfce3//7t5777339tx7773nHffe37/7v3zv238C+iv6/Ow///pw5VasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncitfmu2GJFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVrw23w1LtLgVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt+K1+W5YosWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBWvzXfDEi1uxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa14bb4blmhxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7Fa/PdsEQv9+v7P4E0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0
- i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0
- i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0
- 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
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncitfmu2GJFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVrw23w1LtLgVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt+K1+W5Yopf79f2fQJrFPTueQprFPTueQprFPTue
- QprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTue
- QprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTue
- QprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTue4o89AL9zK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7Fa/PdsESLW7F2pVncirUrzeJW
- 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
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pXm5d4H4AdYu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy7wPwA6xdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalebl/ff0HfwKJFvfseAppFvfseAppFvfseAppFvfs
- eAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfs
- eAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfs
- eAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvf+DeAHWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Urzcu8D8AOsXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 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
- SrO4FWtXmpd7H4AfYO1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvNy/3r
- 6z/4E0i0uGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0iz
- uGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0iz
- uGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0iz
- uGfHU0izuGfHU0izuPdvAD/A2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5qXex+AH2DtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzcu9D8APsHal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pXm5d4H4AdYu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy7wPwA6xdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalebn3AfgB1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9K83L/+8Y9//M+vX7/+5++//379+Z98fffPf/7z9ef/hvP3/vN3v/78jj/5ij4/++b7
- N87Pf+p+b997772fcv7evff3pp80i/u9fe+9937K+Xv33t+bftIs7vf2vffe+ynn7917f2/6SbO439v3
- 3nvvp5y/d+/9veknzeJ+b997772fcv7evff3pp80i/u9fe+9937K+Xv33t+bftIs7vf2vffe+ynn7917
- f2/6SbO439v33nvvp5y/93/h3r++DjqDvvmSv77/b/zrX/96cX7+zZf79T/xv/G9eQbVfG3ee++9/417
- 7733vPPe+3tTyb333nvece/9/bt777333ttz7733nnfce3//7t5777339tx7773nHffe37+799577709
- 995773nHvff37/4v3/v2n4D+ij4/+8+/Ply5FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrfitfluWKLFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVr813wxItbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWteG2+G5ZocSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxWvz
- 3bBEi1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK16b74YlWtyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW/HafDcs0cv9+v5PIM3i
- nh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3i
- nh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3i
- nh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3i
- nh1P8ccegN+5FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrfitflu
- WKLFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVr813wxItbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWteG2+G5ZocSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- 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
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40L/e+AD7A2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5qXe18AH2DtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzcu9L4APsHalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pXm5d4XwAdYu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy//j4B78D
- iRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEK
- aRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEK
- aRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEK
- 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
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1vxuflqWKLFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVn5uvhiV6uR/f/w6kWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymk
- WdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymk
- WdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymk
- WdxnxymkWdxnxymkWdxnxymkWdxnxyl+2wvgV27F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrfjcfDUs0eJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3IrPzVfDEi1uxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- 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
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa34nPz1bBEL/fj+9+BNIv77DiFNIv77DiFNIv7
- 7DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv7
- 7DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv7
- 7DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DjFb3sB/MqtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBWfm6+GJVrcirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1vxuflqWKLFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVn5uvhiVa3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb8bn5aliixa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FZ+br4YlWtyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW/G5+evXr38HPPmIfn72xYdXuRVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa34mPz5QvginXwq/+sP//88792127F2n3VfO/9ubt2K9buq+Z778/d
- tVuxdl8133t/7q7dirX7qvne+3N37Vas3VfN996fu2u3Yu2+ar73/txduxVr91Xzvffn7tqtWLuvmu+9
- P3fXbsXafdV87/25u3Yr1u6r5nvvz921W7F2XzXfe3/urt2Ktfuq+d77c3ftVqzdV8333p+7a7di7b5q
- vvf+3F27FWv3VfO99+fu2q1Yu6+a9d6XfwK64ivg+fkXH9HPz064FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pXu59AXyAtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjQv974APsDalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmpd7XwAfYO1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvNy70vgA+w
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl3hfAB1i70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83L/+PgHvwOJFvfZcQppFvfZcQppFvfZcQpp
- FvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQpp
- FvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQpp
- FvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvf+BvAB1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9K83PsC+ABrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaV7ufQF8gLUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40L/e+AD7A2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5qXe18AH2DtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzcu9
- L4APsHalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pXm5f7x69evfz/kFF+b
- z6CfRot77+25977XLO69t+fe+16zuPfennvve83i3nt77r3vNYt77+25977XLO69t+fe+16zuPfennvv
- e83i3nt77r3vNYt77+25977XLO69t+fe+16zuP/f7r0vgA9w732vWdx7b8+9971mce+9Pffe95rFvff2
- 3Hvfaxb33ttz732vWdx7b8+9971mce+9Pffe95rFvff23Hvfaxb33ttz732vWdx7b8+9971mce+9Pb/z
- 3vsnoA+wdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl3hfAB1i70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83LvC+ADrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqV5ufcF8AHWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70rzc+wL4AGtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pXu59AXyAtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjQv
- 94+Pf/A7kGhxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2n
- kGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2n
- kGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2n
- kGZxnx2nkGZxnx2nkGZx728AH2DtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzcu9L4APsHalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pXm5d4XwAdY
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy7wvgA6xdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalebn3BfAB1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9K83PsC+ABrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaV7uH//4xz/+9evXr3/9+eefnz//zsd3f/311+fP/4bn8/7+3I+fX/FPPqKfn33x
- 9Yzn5z91v7bvvffed3k+7977veknzeJ+bd97773v8nzevfd700+axf3avvfee9/l+bx77/emnzSL+7V9
- 7733vsvzeffe700/aRb3a/vee+99l+fz7r3fm37SLO7X9r333vsuz+fde783/aRZ3K/te++9912ez7v3
- fm/6SbO4X9v33nvvuzyf979w7x8fBz2DvviQP77/T/zzn//85Pn5Fx/ux3/if+Jr8xlU87F57733/ifu
- vffe55333u9NJffee+/zjnvv9+/uvffee2/Pvffe+7zj3vv9u3vvvffe23Pvvfc+77j3fv/u3nvvvff2
- 3Hvvvc877r3fv/tfvvfln4D+iH5+9vdfH67cirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1vxuflqWKLFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVn5uvhiVa3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItb8bn5aliixa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FZ+b
- r4YlWtyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW/G5+WpYosWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBWfm6+GJXq5H9//DqRZ
- 3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ
- 3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ
- 3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ
- 3GfHKX7bC+BXbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt+Nx8
- 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
- ZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQ
- ZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQ
- ZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnHvbwAf
- YO1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvNy70vgA+wdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl3hfAB1i70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83LvC+ADrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqV5ufcF8AHWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70rzc+wL4AGtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pXu4f//jH
- P/7169evf/3555+fP//Ox3d//fXX58//hufz/v7cj59f8U8+op+fffH1jOfnP3W/tu+99953eT7v3vu9
- 6SfN4n5t33vvve/yfN6993vTT5rF/dq+99573+X5vHvv96afNIv7tX3vvfe+y/N5997vTT9pFvdr+957
- 732X5/Puvd+bftIs7tf2vffe+y7P5917vzf9pFncr+177733XZ7Pu/d+b/pJs7hf2/fee++7PJ/3v3Dv
- Hx8HPYO++JA/vv9P/POf//zk+fkXH+7Hf+J/4mvzGVTzsXnvvff+J+69997nnffe700l99577/OOe+/3
- 7+699957b8+99977vOPe+/27e++9997bc++99z7vuPd+/+7ee++99/bce++9zzvuvd+/+1++9+WfgP6I
- fn72918frtyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW/G5+WpY
- osWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- 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
- rVi70ixuxdqVZnErPjdfDUu0uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa34nPz1bBEi1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- Kz43Xw1LtLgVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt+Jz89Ww
- RC/34/vfgTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4
- hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4
- hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4
- hTSL++w4hTSL++w4xW97AfzKrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- 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
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzcu9L4APsHalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pXm5d4XwAdYu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy//j4
- B78DiRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb3
- 2XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb3
- 2XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb3
- 2XEKaRb32XEKaRb3/gbwAdauNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- vNz7AvgAa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 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
- Frdi7Urzcu8L4AOsXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pXm59wXw
- AdauNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSvNz7AvgAa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWle7h//+Mc//vXr169//fnnn58//87Hd3/9
- 9dfnz/+G5/P+/tyPn1/xTz6in5998fWM5+c/db+277333nd5Pu/e+73pJ83ifm3fe++97/J83r33e9NP
- msX92r733nvf5fm8e+/3pp80i/u1fe+9977L83n33u9NP2kW92v73nvvfZfn8+6935t+0izu1/a99977
- Ls/n3Xu/N/2kWdyv7Xvvvfddns+7935v+kmzuF/b995777s8n/e/cO8fHwc9g774kD++/0/885///OT5
- +Rcf7sd/4n/ia/MZVPOxee+99/4n7r333ued997vTSX33nvv84577/fv7r333ntvz7333vu84977/bt7
- 77333ttz7733Pu+4937/7t5777339tx7773PO+6937/7X7735Z+A/oh+fvb3Xx+u3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb8bn5aliixa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FZ+br4YlWtyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW/G5+WpYosWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBWfm6+GJVrcirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1vxuflqWKLFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVn5uvhiV6uR/f/w6kWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxn
- xymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxn
- xymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxn
- xymkWdxnxymkWdxnxymkWdxnxymkWdxnxyl+2wvgV27F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrfjcfDUs0eJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3IrPzVfDEi1uxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa343Hw1LNHiVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 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
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjQv974APsDalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmpd7XwAfYO1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvNy70vgA+wdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl
- 3hfAB1i70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83L/+PgHvwOJFvfZ
- cQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZ
- cQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZ
- cQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZ
- 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
- tLgVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt+K1+W5YosWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBWvzXfDEr3cr+//BNIs7tnx
- FNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnx
- FNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnx
- FNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnx
- FH/sAfidW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnErXpvvhiVa
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb8dp8NyzR4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncitfmu2GJFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVrw23w1LtLgVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt+K1+W5YosWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBWvzXfDEr3cX79+/fs3nuJ78+z5abO4996ee+9nzeLee3vu
- vZ81i3vv7bn3ftYs7r235977WbO4996ee+9nzeLee3vuvZ81i3vv7bn3ftYs7r235977WbO4996ee+9n
- zeLee3vuvZ81i/un7r0PwB80i3vv7bn3ftYs7r235977WbO4996ee+9nzeLee3vuvZ81i3vv7bn3ftYs
- 7r235977WbO4996ee+9nzeLee3vuvZ81i3vv7bn3ftYs7r235977WbO4f+reP/YA/M6tWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBWvzXfDEi1uxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa14bb4blmhxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7Fa/PdsESLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnErXpvvhiVa3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItb8dp8NyzR4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncitfmu2GJXu7X938CaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb3
- 7HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb3
- 7HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb3
- 7HgKaRb37HgKaRb37HgKaRb37HgKaRb37HiKP/YA/M6tWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBWvzXfDEi1uxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa14bb4blmhxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7Fa/PdsESLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- 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
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pXm5f719R/8CSRa3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ
- 3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ
- 3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ
- 3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3Ps3gB9g7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83LvQ/AD7B2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqV5uXeB+AHWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Urzcu8D8AOs
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pXm59wH4AdauNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSvNz7APwAa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWle7l+/fv369488xffmGfTTaHHvvT333s+axb339tx7P2sW997b
- c+/9rFnce2/PvfezZnHvvT333s+axb339tx7P2sW997bc+/9rFnce2/PvfezZnHvvT333s+axb339tx7
- P2sW9/+3e+8D8APcez9rFvfe23Pv/axZ3Htvz733s2Zx7709997PmsW99/bcez9rFvfe23Pv/axZ3Htv
- z733s2Zx7709997PmsW99/bcez9rFvfe23Pv/axZ3Htvz5+89/4T0A+wdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl3gfgB1i70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1K83LvA/ADrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqV5ufcB+AHWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70rzc+wD8
- AGtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pXu59AH6AtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjQv96+v/+BPINHinh1PIc3inh1PIc3inh1P
- Ic3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1P
- Ic3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1P
- Ic3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3i3r8B/ABrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaV7ufQB+gLUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40L/c+AD/A2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5qXex+AH2DtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzcu9D8APsHalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pXm
- 5d4H4AdYu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy//rHP/7xP79+
- /fqfv//++/Xnf/L13T//+c/Xn/8bzt/7z9/9+vM7/uQr+vzsm+/fOD//qfu9fe+9937K+Xv33t+bftIs
- 7vf2vffe+ynn7917f2/6SbO439v33nvvp5y/d+/9veknzeJ+b997772fcv7evff3pp80i/u9fe+9937K
- +Xv33t+bftIs7vf2vffe+ynn7917f2/6SbO439v33nvvp5y/d+/9veknzeJ+b997772fcv7e/4V7//o6
- 6Az65kv++v6/8a9//evF+fk3X+7X/8T/xvfmGVTztXnvvff+N+69997zznvv700l995773nHvff37+69
- 9957b8+999573nHv/f27e++9997bc++995533Ht//+7ee++99/bce++95x333t+/+79879t/Avor+vzs
- P//6cOVWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3IrX5rthiRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4la8Nt8NS7S4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrfitfluWKLFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVr813wxItbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWteG2+G5ZocSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxWvz3bBEL/fr+z+BNIt7djyFNIt7djyFNIt7djyFNIt7djyF
- NIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyF
- NIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyF
- NIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djzFH3sAfudWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3IrX5rthiRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4la8Nt8NS7S4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrfitfluWKLFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVr813wxItbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWteG2+G5ZocSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxWvz3bBEL/fXr1///o2n+N48e37aLO69t+fe+1mzuPfennvvZ83i3nt77r2fNYt77+25937W
- LO69t+fe+1mzuPfennvvZ83i3nt77r2fNYt77+25937WLO69t+fe+1mzuPfennvvZ83i/ql77wPwB83i
- 3nt77r2fNYt77+25937WLO69t+fe+1mzuPfennvvZ83i3nt77r2fNYt77+25937WLO69t+fe+1mzuPfe
- nnvvZ83i3nt77r2fNYt77+25937WLO6fuvePPQC/cyvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxWvz3bBEi1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK16b74YlWtyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW/HafDcs0eJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3IrX5rthiRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4la8Nt8N
- S7S4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrfitfluWKKX+/X9
- n0CaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07
- nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07
- nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07
- nkKaxT07nuKPPQC/cyvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xWvz3bBEi1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK16b74Yl
- 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
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Urz
- cu8D8AOsXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pXm5f339B38CiRb3
- 7HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb3
- 7HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb3
- 7HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb3
- 7HgKaRb3/g3gB1i70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83LvA/AD
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqV5ufcB+AHWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- 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
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pXm59wH4AdauNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSvNy//vGPf/zPr1+//ufvv/9+/fmffH33z3/+8/Xn
- /4bz9/7zd7/+/I4/+Yo+P/vm+zfOz3/qfm/fe++9n3L+3r3396afNIv7vX3vvfd+yvl7997fm37SLO73
- 9r333vsp5+/de39v+kmzuN/b995776ecv3fv/b3pJ83ifm/fe++9n3L+3r3396afNIv7vX3vvfd+yvl7
- 997fm37SLO739r333vsp5+/de39v+kmzuN/b995776ecv/d/4d6/vg46g775kr++/2/861//enF+/s2X
- +/U/8b/xvXkG1Xxt3nvvvf+Ne++997zz3vt7U8m999573nHv/f27e++9997bc++995533Ht//+7ee++9
- 9/bce++95x333t+/u/fee++9Pffee+95x7339+/+L9/79p+A/oo+P/vPvz5cuRVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa34rX5bliixa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- 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
- 83LvA/ADrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqV5ufcB+AHWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70rzc+wD8AGtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pXu5fX//Bn0CixT07nkKaxT07nkKaxT07nkKaxT07
- nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07
- nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07
- nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxb1/A/gB1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9K83PsA/ABrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaV7ufQB+gLUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40L/c+AD/A2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5qXex+AH2DtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzcu9D8AP
- sHalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pXm5f7169evf//IU3xvnkE/
- jRb33ttz7/2sWdx7b8+997Nmce+9Pffez5rFvff23Hs/axb33ttz7/2sWdx7b8+997Nmce+9Pffez5rF
- vff23Hs/axb33ttz7/2sWdx7b8+997Nmcf9/u/c+AD/AvfezZnHvvT333s+axb339tx7P2sW997bc+/9
- rFnce2/PvfezZnHvvT333s+axb339tx7P2sW997bc+/9rFnce2/PvfezZnHvvT333s+axb339vzJe+8/
- Af0Aa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWle7n0AfoC1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNC/3PgA/wNqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eal3sfgB9g7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83LvQ/AD7B2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqV5uXeB+AHWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Urzcv/6
- +g/+BBIt7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs
- 7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs
- 7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs
- 7tnxFNIs7tnxFNIs7v0bwA+wdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lebl3gfgB1i70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83LvA/ADrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqV5ufcB+AHWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70rzc+wD8AGtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pXu59AH6AtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjQv969//OMf//Pr16//+fvvv19//idf3/3zn/98/fm/4fy9//zdrz+/40++os/Pvvn+
- jfPzn7rf2/fee++nnL937/296SfN4n5v33vvvZ9y/t699/emnzSL+7197733fsr5e/fe35t+0izu9/a9
- 9977Kefv3Xt/b/pJs7jf2/fee++nnL937/296SfN4n5v33vvvZ9y/t699/emnzSL+7197733fsr5e/fe
- 35t+0izu9/a99977Kefv/V+496+vg86gb77kr+//G//6179enJ9/8+V+/U/8b3xvnkE1X5v33nvvf+Pe
- e+8977z3/t5Ucu+995533Ht//+7ee++99/bce++95x333t+/u/fee++9Pffee+95x7339+/uvffee2/P
- vffee95x7/39u//L9779J6C/os/P/vOvD1duxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa14bb4blmhxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7Fa/PdsESLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnErXpvvhiVa3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb8dp8
- NyzR4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncitfmu2GJFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVrw23w1L9HK/vv8TSLO4
- Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4
- Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4
- Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4
- Z8dT/LEH4HduxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa14bb4b
- lmhxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7Fa/PdsESLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnErXpvvhiVa3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- 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
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalebn3AfgB1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9K83PsA/ABrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaV7ufQB+gLUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40L/c+AD/A2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5qX+9fXf/AnkGhxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46n
- kGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46n
- kGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46n
- 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
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83Lv
- A/ADrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqV5ufcB+AHWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70rzcv77+gz+BRIt7djyFNIt7djyFNIt7
- djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7
- djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7
- djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7/wbwA6xd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalebn3AfgB1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- 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
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3IrX5rthiRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4la8Nt8NS7S4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrfitfluWKLFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVr813wxK93F+/fv37N57ie/Ps+WmzuPfennvvZ83i3nt77r2fNYt77+25937WLO69t+fe
- +1mzuPfennvvZ83i3nt77r2fNYt77+25937WLO69t+fe+1mzuPfennvvZ83i3nt77r2fNYv7p+69D8Af
- NIt77+25937WLO69t+fe+1mzuPfennvvZ83i3nt77r2fNYt77+25937WLO69t+fe+1mzuPfennvvZ83i
- 3nt77r2fNYt77+25937WLO69t+fe+1mzuH/q3j/2APzOrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVr813wxItbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWteG2+G5ZocSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxWvz3bBEi1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK16b74YlWtyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW/Ha
- fDcs0eJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3IrX5rthiV7u
- 1/d/AmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW
- 9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW
- 9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW
- 9+x4CmkW9+x4ij/2APzOrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVr813wxItbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWteG2+
- G5ZocSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxWvz3bBEi1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK16b74YlWtyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW/HafDcs0eJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3IrX5q9fv/4dcPIVfX72zZdXuRVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa34mvz/wHi+Li5P80SZQAAAABJRU5E
- rkJggg==
-
-
AAABAAgAEBAAAAEAIABoBAAAhgAAABgYAAABACAAiAkAAO4EAAAgIAAAAQAgAKgQAAB2DgAAMDAAAAEA
diff --git a/ToggleSwitch.cs b/ToggleSwitch.cs
new file mode 100644
index 0000000..3629e23
--- /dev/null
+++ b/ToggleSwitch.cs
@@ -0,0 +1,264 @@
+using System;
+using System.ComponentModel;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Windows.Forms;
+
+namespace AndroidSideloader
+{
+ ///
+ /// An iOS-style toggle switch control with smooth animation.
+ ///
+ public class ToggleSwitch : Control
+ {
+ private bool _checked;
+ private bool _isHovered;
+ private float _animationProgress; // 0 = off, 1 = on
+ private Timer _animationTimer;
+ private const int AnimationDuration = 80; // ms
+ private const int AnimationInterval = 8; // ~120fps
+ private float _animationStep;
+
+ // Colors
+ private Color _onColor = Color.FromArgb(93, 203, 173);
+ private Color _offColor = Color.FromArgb(60, 65, 75);
+ private Color _thumbColor = Color.White;
+ private Color _onHoverColor = Color.FromArgb(110, 215, 190);
+ private Color _offHoverColor = Color.FromArgb(75, 80, 90);
+
+ public event EventHandler CheckedChanged;
+
+ public ToggleSwitch()
+ {
+ SetStyle(ControlStyles.AllPaintingInWmPaint |
+ ControlStyles.UserPaint |
+ ControlStyles.OptimizedDoubleBuffer |
+ ControlStyles.ResizeRedraw |
+ ControlStyles.SupportsTransparentBackColor |
+ ControlStyles.StandardClick |
+ ControlStyles.StandardDoubleClick, true);
+
+ // Disable double-click so rapid clicks are treated as separate clicks
+ SetStyle(ControlStyles.StandardDoubleClick, false);
+
+ Size = new Size(44, 24);
+ Cursor = Cursors.Hand;
+ BackColor = Color.Transparent;
+
+ _animationTimer = new Timer { Interval = AnimationInterval };
+ _animationTimer.Tick += AnimationTimer_Tick;
+ _animationStep = (float)AnimationInterval / AnimationDuration;
+ }
+
+ [Category("Appearance")]
+ [Description("Gets or sets whether the toggle is in the 'on' state.")]
+ [DefaultValue(false)]
+ public bool Checked
+ {
+ get => _checked;
+ set
+ {
+ if (_checked != value)
+ {
+ _checked = value;
+ StartAnimation();
+ OnCheckedChanged(EventArgs.Empty);
+ }
+ }
+ }
+
+ ///
+ /// Sets the checked state without triggering animation or events.
+ /// Using this for initial state setup.
+ ///
+ public void SetCheckedSilent(bool value)
+ {
+ _checked = value;
+ _animationProgress = value ? 1f : 0f;
+ _animationTimer.Stop();
+ Invalidate();
+ }
+
+ [Category("Appearance")]
+ [Description("The color of the toggle when it is on.")]
+ public Color OnColor
+ {
+ get => _onColor;
+ set { _onColor = value; Invalidate(); }
+ }
+
+ [Category("Appearance")]
+ [Description("The color of the toggle when it is off.")]
+ public Color OffColor
+ {
+ get => _offColor;
+ set { _offColor = value; Invalidate(); }
+ }
+
+ [Category("Appearance")]
+ [Description("The color of the thumb (circle).")]
+ public Color ThumbColor
+ {
+ get => _thumbColor;
+ set { _thumbColor = value; Invalidate(); }
+ }
+
+ protected virtual void OnCheckedChanged(EventArgs e)
+ {
+ CheckedChanged?.Invoke(this, e);
+ }
+
+ private void StartAnimation()
+ {
+ if (!_animationTimer.Enabled)
+ {
+ _animationTimer.Start();
+ }
+ }
+
+ private void AnimationTimer_Tick(object sender, EventArgs e)
+ {
+ float target = _checked ? 1f : 0f;
+
+ if (_animationProgress < target)
+ {
+ _animationProgress += _animationStep;
+ if (_animationProgress >= target)
+ {
+ _animationProgress = target;
+ _animationTimer.Stop();
+ }
+ }
+ else if (_animationProgress > target)
+ {
+ _animationProgress -= _animationStep;
+ if (_animationProgress <= target)
+ {
+ _animationProgress = target;
+ _animationTimer.Stop();
+ }
+ }
+ else
+ {
+ _animationTimer.Stop();
+ }
+
+ Invalidate();
+ }
+
+ protected override void OnPaint(PaintEventArgs e)
+ {
+ base.OnPaint(e);
+
+ Graphics g = e.Graphics;
+ g.SmoothingMode = SmoothingMode.AntiAlias;
+ g.PixelOffsetMode = PixelOffsetMode.HighQuality;
+
+ int width = Width;
+ int height = Height;
+ int padding = 2;
+ int thumbDiameter = height - (padding * 2);
+ int trackRadius = height / 2;
+
+ Color trackColor;
+ if (_isHovered)
+ {
+ trackColor = InterpolateColor(_offHoverColor, _onHoverColor, _animationProgress);
+ }
+ else
+ {
+ trackColor = InterpolateColor(_offColor, _onColor, _animationProgress);
+ }
+
+ Rectangle trackRect = new Rectangle(0, 0, width, height);
+ using (GraphicsPath trackPath = CreateRoundedRectPath(trackRect, trackRadius))
+ using (SolidBrush trackBrush = new SolidBrush(trackColor))
+ {
+ g.FillPath(trackBrush, trackPath);
+ }
+
+ int thumbMinX = padding;
+ int thumbMaxX = width - thumbDiameter - padding;
+ float easedProgress = EaseOutQuad(_animationProgress);
+ int thumbX = (int)(thumbMinX + (thumbMaxX - thumbMinX) * easedProgress);
+ int thumbY = padding;
+
+ Rectangle shadowRect = new Rectangle(thumbX + 1, thumbY + 1, thumbDiameter, thumbDiameter);
+ using (SolidBrush shadowBrush = new SolidBrush(Color.FromArgb(40, 0, 0, 0)))
+ {
+ g.FillEllipse(shadowBrush, shadowRect);
+ }
+
+ Rectangle thumbRect = new Rectangle(thumbX, thumbY, thumbDiameter, thumbDiameter);
+ using (SolidBrush thumbBrush = new SolidBrush(_thumbColor))
+ {
+ g.FillEllipse(thumbBrush, thumbRect);
+ }
+ }
+
+ private float EaseOutQuad(float t)
+ {
+ return t * (2 - t);
+ }
+
+ private Color InterpolateColor(Color from, Color to, float progress)
+ {
+ int r = (int)(from.R + (to.R - from.R) * progress);
+ int g = (int)(from.G + (to.G - from.G) * progress);
+ int b = (int)(from.B + (to.B - from.B) * progress);
+ int a = (int)(from.A + (to.A - from.A) * progress);
+ return Color.FromArgb(a, r, g, b);
+ }
+
+ private GraphicsPath CreateRoundedRectPath(Rectangle rect, int radius)
+ {
+ GraphicsPath path = new GraphicsPath();
+ int diameter = radius * 2;
+
+ path.AddArc(rect.X, rect.Y, diameter, diameter, 180, 90);
+ path.AddArc(rect.Right - diameter, rect.Y, diameter, diameter, 270, 90);
+ path.AddArc(rect.Right - diameter, rect.Bottom - diameter, diameter, diameter, 0, 90);
+ path.AddArc(rect.X, rect.Bottom - diameter, diameter, diameter, 90, 90);
+ path.CloseFigure();
+
+ return path;
+ }
+
+ protected override void OnMouseEnter(EventArgs e)
+ {
+ base.OnMouseEnter(e);
+ _isHovered = true;
+ Invalidate();
+ }
+
+ protected override void OnMouseLeave(EventArgs e)
+ {
+ base.OnMouseLeave(e);
+ _isHovered = false;
+ Invalidate();
+ }
+
+ protected override void OnMouseDown(MouseEventArgs e)
+ {
+ base.OnMouseDown(e);
+
+ if (e.Button == MouseButtons.Left)
+ {
+ // Toggle immediately on mouse down for responsive feel
+ _checked = !_checked;
+ StartAnimation();
+ OnCheckedChanged(EventArgs.Empty);
+ }
+ }
+
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing)
+ {
+ _animationTimer?.Stop();
+ _animationTimer?.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+ }
+}
\ No newline at end of file
diff --git a/UpdateForm.Designer.cs b/UpdateForm.Designer.cs
index 5430551..8602835 100644
--- a/UpdateForm.Designer.cs
+++ b/UpdateForm.Designer.cs
@@ -1,5 +1,4 @@
-
-namespace AndroidSideloader
+namespace AndroidSideloader
{
partial class UpdateForm
{
@@ -40,123 +39,133 @@ namespace AndroidSideloader
this.panel1.SuspendLayout();
this.panel3.SuspendLayout();
this.SuspendLayout();
- //
+ //
// panel1
- //
- this.panel1.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
+ //
+ this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
this.panel1.Controls.Add(this.YesUpdate);
this.panel1.Controls.Add(this.panel3);
this.panel1.Controls.Add(this.UpdateVerLabel);
this.panel1.Controls.Add(this.CurVerLabel);
this.panel1.Controls.Add(this.SkipUpdate);
- this.panel1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.panel1.Location = new System.Drawing.Point(-6, -6);
+ this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
- this.panel1.Size = new System.Drawing.Size(474, 305);
+ this.panel1.Padding = new System.Windows.Forms.Padding(20, 50, 20, 20);
+ this.panel1.Size = new System.Drawing.Size(480, 320);
this.panel1.TabIndex = 5;
this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseDown);
this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseMove);
this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseUp);
- //
+ //
// YesUpdate
- //
- this.YesUpdate.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.YesUpdate.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ //
+ this.YesUpdate.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
+ this.YesUpdate.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.YesUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.YesUpdate.BackColor = System.Drawing.Color.Transparent;
this.YesUpdate.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.YesUpdate.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.YesUpdate.ForeColor = System.Drawing.Color.White;
- this.YesUpdate.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.YesUpdate.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.YesUpdate.Location = new System.Drawing.Point(339, 245);
+ this.YesUpdate.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.YesUpdate.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.YesUpdate.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.YesUpdate.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Bold);
+ this.YesUpdate.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.YesUpdate.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.YesUpdate.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(73)))), ((int)(((byte)(183)))), ((int)(((byte)(153)))));
+ this.YesUpdate.Location = new System.Drawing.Point(340, 259);
this.YesUpdate.Name = "YesUpdate";
- this.YesUpdate.Radius = 5;
- this.YesUpdate.Size = new System.Drawing.Size(111, 31);
- this.YesUpdate.Stroke = true;
+ this.YesUpdate.Radius = 6;
+ this.YesUpdate.Size = new System.Drawing.Size(120, 36);
+ this.YesUpdate.Stroke = false;
this.YesUpdate.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.YesUpdate.TabIndex = 2;
this.YesUpdate.Text = "Update Now";
this.YesUpdate.Transparency = false;
this.YesUpdate.Click += new System.EventHandler(this.YesUpdate_Click);
- //
+ //
// panel3
- //
- this.panel3.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
+ //
+ this.panel3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.panel3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(32)))), ((int)(((byte)(38)))));
this.panel3.Controls.Add(this.UpdateTextBox);
- this.panel3.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.panel3.Location = new System.Drawing.Point(21, 19);
+ this.panel3.Location = new System.Drawing.Point(20, 50);
this.panel3.Name = "panel3";
- this.panel3.Size = new System.Drawing.Size(432, 218);
+ this.panel3.Padding = new System.Windows.Forms.Padding(12, 10, 12, 10);
+ this.panel3.Size = new System.Drawing.Size(440, 200);
this.panel3.TabIndex = 0;
- //
+ //
// UpdateTextBox
- //
- this.UpdateTextBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
+ //
+ this.UpdateTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(32)))), ((int)(((byte)(38)))));
this.UpdateTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.UpdateTextBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.UpdateTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.25F);
+ this.UpdateTextBox.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.UpdateTextBox.Font = new System.Drawing.Font("Segoe UI", 9.5F);
this.UpdateTextBox.ForeColor = System.Drawing.Color.White;
- this.UpdateTextBox.Location = new System.Drawing.Point(12, 8);
+ this.UpdateTextBox.Location = new System.Drawing.Point(12, 10);
this.UpdateTextBox.Margin = new System.Windows.Forms.Padding(6);
this.UpdateTextBox.Name = "UpdateTextBox";
this.UpdateTextBox.ReadOnly = true;
this.UpdateTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
- this.UpdateTextBox.Size = new System.Drawing.Size(408, 200);
+ this.UpdateTextBox.Size = new System.Drawing.Size(416, 180);
this.UpdateTextBox.TabIndex = 1;
this.UpdateTextBox.Text = "";
this.UpdateTextBox.TextChanged += new System.EventHandler(this.UpdateTextBox_TextChanged);
this.UpdateTextBox.MouseDown += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseDown);
this.UpdateTextBox.MouseMove += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseMove);
this.UpdateTextBox.MouseUp += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseUp);
- //
+ //
// UpdateVerLabel
- //
+ //
+ this.UpdateVerLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.UpdateVerLabel.AutoSize = true;
this.UpdateVerLabel.BackColor = System.Drawing.Color.Transparent;
- this.UpdateVerLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
- this.UpdateVerLabel.ForeColor = System.Drawing.SystemColors.Control;
- this.UpdateVerLabel.Location = new System.Drawing.Point(21, 261);
+ this.UpdateVerLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.UpdateVerLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.UpdateVerLabel.Location = new System.Drawing.Point(20, 285);
this.UpdateVerLabel.Name = "UpdateVerLabel";
- this.UpdateVerLabel.Size = new System.Drawing.Size(94, 15);
+ this.UpdateVerLabel.Size = new System.Drawing.Size(95, 15);
this.UpdateVerLabel.TabIndex = 3;
this.UpdateVerLabel.Text = "Update Version:";
- //
+ //
// CurVerLabel
- //
+ //
+ this.CurVerLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.CurVerLabel.AutoSize = true;
this.CurVerLabel.BackColor = System.Drawing.Color.Transparent;
- this.CurVerLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
- this.CurVerLabel.ForeColor = System.Drawing.SystemColors.Control;
- this.CurVerLabel.Location = new System.Drawing.Point(21, 245);
+ this.CurVerLabel.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.CurVerLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(160)))), ((int)(((byte)(165)))), ((int)(((byte)(175)))));
+ this.CurVerLabel.Location = new System.Drawing.Point(20, 266);
this.CurVerLabel.Name = "CurVerLabel";
- this.CurVerLabel.Size = new System.Drawing.Size(94, 15);
+ this.CurVerLabel.Size = new System.Drawing.Size(91, 15);
this.CurVerLabel.TabIndex = 2;
this.CurVerLabel.Text = "Current Version:";
- //
+ //
// SkipUpdate
- //
+ //
+ this.SkipUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.SkipUpdate.AutoSize = true;
this.SkipUpdate.BackColor = System.Drawing.Color.Transparent;
- this.SkipUpdate.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.SkipUpdate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.SkipUpdate.ForeColor = System.Drawing.Color.Silver;
- this.SkipUpdate.Location = new System.Drawing.Point(374, 279);
+ this.SkipUpdate.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.SkipUpdate.Font = new System.Drawing.Font("Segoe UI", 8.5F);
+ this.SkipUpdate.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(160)))), ((int)(((byte)(165)))), ((int)(((byte)(175)))));
+ this.SkipUpdate.Location = new System.Drawing.Point(380, 297);
this.SkipUpdate.Name = "SkipUpdate";
- this.SkipUpdate.Size = new System.Drawing.Size(76, 13);
+ this.SkipUpdate.Size = new System.Drawing.Size(73, 15);
this.SkipUpdate.TabIndex = 4;
- this.SkipUpdate.Text = "𝖲𝖪𝖨𝖯 𝖥𝖮𝖱 𝖭𝖮𝖶";
+ this.SkipUpdate.Text = "Skip for now";
this.SkipUpdate.Click += new System.EventHandler(this.SkipUpdate_Click);
- //
+ //
// UpdateForm
- //
+ //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.AutoValidate = System.Windows.Forms.AutoValidate.EnablePreventFocusChange;
- this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(29)))), ((int)(((byte)(29)))), ((int)(((byte)(29)))));
- this.ClientSize = new System.Drawing.Size(462, 291);
+ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
+ this.ClientSize = new System.Drawing.Size(480, 320);
this.ControlBox = false;
this.Controls.Add(this.panel1);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "UpdateForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
@@ -180,4 +189,4 @@ namespace AndroidSideloader
private System.Windows.Forms.Panel panel1;
private RoundButton YesUpdate;
}
-}
+}
\ No newline at end of file
diff --git a/UpdateForm.cs b/UpdateForm.cs
index 33b885e..ff6d47c 100644
--- a/UpdateForm.cs
+++ b/UpdateForm.cs
@@ -1,5 +1,6 @@
using System;
using System.Drawing;
+using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace AndroidSideloader
@@ -9,15 +10,203 @@ namespace AndroidSideloader
private bool mouseDown;
private Point lastLocation;
+ // Modern theme colors
+ private static readonly Color BackgroundColor = Color.FromArgb(20, 24, 29);
+ private static readonly Color PanelColor = Color.FromArgb(28, 32, 38);
+ private static readonly Color TextColor = Color.White;
+ private static readonly Color SecondaryTextColor = Color.FromArgb(160, 165, 175);
+ private static readonly Color BorderColor = Color.FromArgb(60, 65, 75);
+
public UpdateForm()
{
InitializeComponent();
+ ApplyModernTheme();
CenterToScreen();
- CurVerLabel.Text += " " + Updater.LocalVersion;
- UpdateVerLabel.Text += " " + Updater.currentVersion;
+ CurVerLabel.Text = $"Current Version: {Updater.LocalVersion}";
+ UpdateVerLabel.Text = $"Update Version: {Updater.currentVersion}";
UpdateTextBox.Text = Updater.changelog;
}
+ private void ApplyModernTheme()
+ {
+ // Form settings
+ this.FormBorderStyle = FormBorderStyle.None;
+ this.BackColor = BackgroundColor;
+ this.DoubleBuffered = true;
+
+ // Enable double buffering on panels for smooth rounded corners
+ EnableDoubleBuffering(panel1);
+ EnableDoubleBuffering(panel3);
+
+ // Add custom paint handler for rounded panel1 (main container)
+ panel1.Paint += Panel1_Paint;
+ panel1.BackColor = Color.Transparent;
+
+ // Add custom paint handler for rounded panel3 (changelog container)
+ panel3.Paint += Panel3_Paint;
+ panel3.BackColor = Color.Transparent;
+
+ // Update textbox to have matching background
+ UpdateTextBox.BackColor = PanelColor;
+
+ // Add title label
+ var titleLabel = new Label
+ {
+ Text = "Update Available",
+ Font = new Font("Segoe UI", 12F, FontStyle.Bold),
+ ForeColor = TextColor,
+ BackColor = Color.Transparent,
+ AutoSize = true,
+ Location = new Point(20, 15)
+ };
+ panel1.Controls.Add(titleLabel);
+ titleLabel.BringToFront();
+
+ // Add close button
+ var closeButton = new Label
+ {
+ Text = "✕",
+ Font = new Font("Segoe UI", 10F),
+ ForeColor = SecondaryTextColor,
+ BackColor = Color.Transparent,
+ AutoSize = true,
+ Cursor = Cursors.Hand,
+ Location = new Point(this.ClientSize.Width - 30, 10),
+ Anchor = AnchorStyles.Top | AnchorStyles.Right
+ };
+ closeButton.Click += (s, e) => Close();
+ closeButton.MouseEnter += (s, e) => closeButton.ForeColor = Color.FromArgb(220, 80, 80);
+ closeButton.MouseLeave += (s, e) => closeButton.ForeColor = SecondaryTextColor;
+ panel1.Controls.Add(closeButton);
+ closeButton.BringToFront();
+
+ // Apply custom painting for form rounded corners and border
+ this.Paint += UpdateForm_Paint;
+ }
+
+ private void EnableDoubleBuffering(Panel panel)
+ {
+ typeof(Panel).InvokeMember("DoubleBuffered",
+ System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic,
+ null, panel, new object[] { true });
+ }
+
+ private void Panel1_Paint(object sender, PaintEventArgs e)
+ {
+ var panel = sender as Panel;
+ e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
+ e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
+
+ int radius = 12;
+ var rect = new Rectangle(0, 0, panel.Width - 1, panel.Height - 1);
+
+ using (var path = CreateRoundedRectPath(rect, radius))
+ {
+ // Fill background
+ using (var brush = new SolidBrush(BackgroundColor))
+ {
+ e.Graphics.FillPath(brush, path);
+ }
+
+ // Draw border
+ using (var pen = new Pen(BorderColor, 1f))
+ {
+ e.Graphics.DrawPath(pen, path);
+ }
+ }
+
+ // Apply rounded region to clip children
+ using (var regionPath = CreateRoundedRectPath(new Rectangle(0, 0, panel.Width, panel.Height), radius))
+ {
+ panel.Region = new Region(regionPath);
+ }
+ }
+
+ private void Panel3_Paint(object sender, PaintEventArgs e)
+ {
+ var panel = sender as Panel;
+ e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
+ e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
+
+ int radius = 10;
+ var rect = new Rectangle(0, 0, panel.Width - 1, panel.Height - 1);
+
+ using (var path = CreateRoundedRectPath(rect, radius))
+ {
+ // Fill background
+ using (var brush = new SolidBrush(PanelColor))
+ {
+ e.Graphics.FillPath(brush, path);
+ }
+
+ // Draw border
+ using (var pen = new Pen(BorderColor, 1f))
+ {
+ e.Graphics.DrawPath(pen, path);
+ }
+ }
+
+ // Apply rounded region to clip children
+ using (var regionPath = CreateRoundedRectPath(new Rectangle(0, 0, panel.Width, panel.Height), radius))
+ {
+ panel.Region = new Region(regionPath);
+ }
+ }
+
+ private void UpdateForm_Paint(object sender, PaintEventArgs e)
+ {
+ e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
+
+ int w = this.ClientSize.Width;
+ int h = this.ClientSize.Height;
+ int radius = 12;
+
+ // Draw border
+ using (var borderPen = new Pen(BorderColor, 1f))
+ using (var path = CreateRoundedRectPath(new Rectangle(0, 0, w - 1, h - 1), radius))
+ {
+ e.Graphics.DrawPath(borderPen, path);
+ }
+
+ // Apply rounded region
+ using (var regionPath = CreateRoundedRectPath(new Rectangle(0, 0, w, h), radius))
+ {
+ this.Region = new Region(regionPath);
+ }
+ }
+
+ private GraphicsPath CreateRoundedRectPath(Rectangle rect, int radius)
+ {
+ GraphicsPath path = new GraphicsPath();
+
+ if (radius <= 0)
+ {
+ path.AddRectangle(rect);
+ return path;
+ }
+
+ int diameter = radius * 2;
+ diameter = Math.Min(diameter, Math.Min(rect.Width, rect.Height));
+ radius = diameter / 2;
+
+ Rectangle arcRect = new Rectangle(rect.Location, new Size(diameter, diameter));
+
+ // Top left arc
+ path.AddArc(arcRect, 180, 90);
+ // Top right arc
+ arcRect.X = rect.Right - diameter;
+ path.AddArc(arcRect, 270, 90);
+ // Bottom right arc
+ arcRect.Y = rect.Bottom - diameter;
+ path.AddArc(arcRect, 0, 90);
+ // Bottom left arc
+ arcRect.X = rect.Left;
+ path.AddArc(arcRect, 90, 90);
+
+ path.CloseFigure();
+ return path;
+ }
+
private void YesUpdate_Click(object sender, EventArgs e)
{
Updater.doUpdate();
@@ -31,7 +220,6 @@ namespace AndroidSideloader
private void UpdateTextBox_TextChanged(object sender, EventArgs e)
{
-
}
private void UpdateForm_MouseDown(object sender, MouseEventArgs e)
@@ -46,7 +234,6 @@ namespace AndroidSideloader
{
Location = new Point(
Location.X - lastLocation.X + e.X, Location.Y - lastLocation.Y + e.Y);
-
Update();
}
}
@@ -56,4 +243,4 @@ namespace AndroidSideloader
mouseDown = false;
}
}
-}
+}
\ No newline at end of file
diff --git a/Updater.cs b/Updater.cs
index b57b7e3..322d814 100644
--- a/Updater.cs
+++ b/Updater.cs
@@ -13,7 +13,7 @@ namespace AndroidSideloader
private static readonly string RawGitHubUrl = "https://raw.githubusercontent.com/VRPirates/rookie";
private static readonly string GitHubUrl = "https://github.com/VRPirates/rookie";
- public static readonly string LocalVersion = "2.35.0";
+ public static readonly string LocalVersion = "3.0";
public static string currentVersion = string.Empty;
public static string changelog = string.Empty;
@@ -38,7 +38,7 @@ namespace AndroidSideloader
return CompareVersions(currentVersion, LocalVersion.Trim()) > 0;
}
- // Compares two semantic version strings (e.g., "2.35.0")
+ // Compares two semantic version strings (e.g., "2.35")
// returns: 1 if version1 > version2, -1 if version1 < version2, 0 if equal
private static int CompareVersions(string version1, string version2)
{
diff --git a/Utilities/SettingsManager.cs b/Utilities/SettingsManager.cs
index ce25367..f505d84 100644
--- a/Utilities/SettingsManager.cs
+++ b/Utilities/SettingsManager.cs
@@ -132,7 +132,8 @@ namespace AndroidSideloader.Utilities
public bool UseDownloadedFiles { get; set; } = false;
public float BandwidthLimit { get; set; } = 0f;
public string[] FavoritedGames { get; set; } = new string[0];
-
+ public bool TrailersEnabled { get; set; } = true;
+ public bool UseGalleryView { get; set; } = true;
private SettingsManager()
{
Load();
@@ -252,8 +253,10 @@ namespace AndroidSideloader.Utilities
UseDownloadedFiles = false;
BandwidthLimit = 0f;
FavoritedGames = new string[0];
+ TrailersEnabled = true;
+ UseGalleryView = true;
- Save();
+ Save();
Debug.WriteLine("Default settings created.");
}
diff --git a/changelog.txt b/changelog.txt
index 2c29117..f686232 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,11 +1,28 @@
-RSL 2.35
+RSL 3.0
-- Feature: Restructure and project file organization
-- Feature: Renamed 'ADB' to 'AdbManager'
-- Fix: Remove hideAdultContent toggle (no longer needed)
-- Fix: WebView2 "too many automatic redirections" error
-- Fix: Donor window only displays unique entries
-- Fix: Cleanup packages listing
-- Chore: Changed C:\RSL\platform-tools path to platform-tools in working dir
-- Chore: Minor Main file organization
-- Chore: Minor MainForm field cleanup
\ No newline at end of file
+Major Rookie overhaul with modernized UI, performance boosts and UX improvements
+
+- Gallery View:
+ - Introduced high-performance Gallery View
+ - Hover animations, smooth scrolling, dynamic scaling, status badges
+ - Toggle to switch seamlessly between List and Gallery view
+ - Optimized for smooth performance, even on very low-end hardware
+
+- Performance:
+ - Reduced game list initialization time by 95%
+ - Instant list filtering through caching + optimized filter logic
+ - Major startup improvements via asynchronous initialization
+ - Improved search bar responsiveness
+ - Reduced application size by removing splash screen & unused assets
+ - Faster trailer loading via per-game video ID caching + WebView2 performance tweaks
+
+- UI & UX:
+ - Complete UI redesign with new theme and accent color
+ - New UI components with animations for a cohesive, modern look
+ - Refined sizing, layout, and color consistency across the board
+ - Added uninstall buttons directly in list & gallery views
+
+- General:
+ - Fix: Resolved trailer playback issues
+ - Fix: Resolved several connection errors on startup
+ - Feature: Added local blacklist support. Users can permanently suppress donation prompts for selected apps
\ No newline at end of file
diff --git a/version b/version
index 2786ac5..f398a20 100644
--- a/version
+++ b/version
@@ -1 +1 @@
-2.35.0
\ No newline at end of file
+3.0
\ No newline at end of file