Some basic stuff
This commit is contained in:
parent
f48ce1a717
commit
9384c9c2d0
41
Discord Media Loader.Application/Classes/Settings.cs
Normal file
41
Discord Media Loader.Application/Classes/Settings.cs
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using SweetLib.Utils.Logger;
|
||||||
|
using static SweetLib.Utils.Logger.Logger;
|
||||||
|
|
||||||
|
namespace DML.Application.Classes
|
||||||
|
{
|
||||||
|
internal class Settings
|
||||||
|
{
|
||||||
|
public int Id { get; } = 1; // using always unique ID
|
||||||
|
public string Email { get; set; }
|
||||||
|
public string Password { get; set; }
|
||||||
|
public string LoginToken { get; set; }
|
||||||
|
public bool UseUserData { get; set; } = false;
|
||||||
|
public bool SavePassword { get; set; } = false;
|
||||||
|
public LogLevel ApplicactionLogLevel { get; set; } = LogLevel.Info | LogLevel.Warn | LogLevel.Error;
|
||||||
|
|
||||||
|
internal void Store()
|
||||||
|
{
|
||||||
|
Trace("Getting settings collection...");
|
||||||
|
var settingsDB = Core.Database.GetCollection<Settings>("settings");
|
||||||
|
|
||||||
|
Debug("Storing settings to database...");
|
||||||
|
|
||||||
|
if (settingsDB.Exists(_setting => _setting.Id == Id))
|
||||||
|
{
|
||||||
|
Trace("Updating existing value...");
|
||||||
|
settingsDB.Update(this);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Trace("Adding new value...");
|
||||||
|
settingsDB.Insert(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,14 +1,194 @@
|
||||||
using Discord;
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Runtime;
|
||||||
|
using System.Runtime.Remoting.Channels;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using Discord;
|
||||||
|
using Discord.Net;
|
||||||
|
using DML.Application.Classes;
|
||||||
|
using DML.Application.Dialogs;
|
||||||
|
using LiteDB;
|
||||||
|
using SweetLib.Utils.Logger;
|
||||||
|
using SweetLib.Utils.Logger.Memory;
|
||||||
|
using static SweetLib.Utils.Logger.Logger;
|
||||||
|
|
||||||
namespace DML.Application
|
namespace DML.Application
|
||||||
{
|
{
|
||||||
public class Core
|
public static class Core
|
||||||
{
|
{
|
||||||
internal static DiscordClient Client;
|
internal static DiscordClient Client { get; set; }
|
||||||
|
internal static LiteDatabase Database { get; set; }
|
||||||
|
internal static Settings Settings { get; set; }
|
||||||
|
|
||||||
public static void Run()
|
internal static string DataDirectory
|
||||||
|
=> Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"Serraniel\Discord Media Loader");
|
||||||
|
|
||||||
|
public static async Task Run(string[] paramStrings)
|
||||||
{
|
{
|
||||||
System.Windows.Forms.Application.Run(new MainForm());
|
try
|
||||||
|
{
|
||||||
|
Info("Starting up Discord Media Loader application...");
|
||||||
|
var useTrace = false;
|
||||||
|
#if DEBUG
|
||||||
|
//temporary add debug log level if debugging...
|
||||||
|
GlobalLogLevel |= LogLevel.Debug;
|
||||||
|
Debug("Running in debug configuartion. Added log level debug.");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Debug($"Parameters: {string.Join(", ", paramStrings)}");
|
||||||
|
if (paramStrings.Contains("--trace") || paramStrings.Contains("-t"))
|
||||||
|
{
|
||||||
|
useTrace = true;
|
||||||
|
GlobalLogLevel |= LogLevel.Trace;
|
||||||
|
Trace("Trace parameter found. Added log level trace.");
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug($"Application data folder: {DataDirectory}");
|
||||||
|
|
||||||
|
Trace("Checking application data folder...");
|
||||||
|
if (!Directory.Exists(DataDirectory))
|
||||||
|
{
|
||||||
|
Debug("Creating application data folder...");
|
||||||
|
Directory.CreateDirectory(DataDirectory);
|
||||||
|
Trace("Creating application data folder.");
|
||||||
|
}
|
||||||
|
|
||||||
|
Trace("Initializing profile optimizations...");
|
||||||
|
ProfileOptimization.SetProfileRoot(System.Windows.Forms.Application.UserAppDataPath);
|
||||||
|
ProfileOptimization.StartProfile("profile.opt");
|
||||||
|
Trace("Finished initializing profile optimizations.");
|
||||||
|
|
||||||
|
Trace("Trying to identify log memory...");
|
||||||
|
var logMemory = DefaultLogMemory as ArchivableConsoleLogMemory;
|
||||||
|
if (logMemory != null)
|
||||||
|
{
|
||||||
|
var logFolder = Path.Combine(DataDirectory, "logs");
|
||||||
|
if (!Directory.Exists(logFolder))
|
||||||
|
{
|
||||||
|
Debug("Creating log folder...");
|
||||||
|
Directory.CreateDirectory(logFolder);
|
||||||
|
Trace("Created log folder.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var logFile = Path.Combine(logFolder,
|
||||||
|
$"{DateTime.Now.ToString(CultureInfo.CurrentCulture.DateTimeFormat.SortableDateTimePattern).Replace(':', '-')}.log.zip");
|
||||||
|
|
||||||
|
Trace($"Setting log file: {logFile}");
|
||||||
|
logMemory.AutoArchiveOnDispose = true;
|
||||||
|
logMemory.ArchiveFile = logFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug("Loading database...");
|
||||||
|
Database = new LiteDatabase(Path.Combine(DataDirectory, "config.db"));
|
||||||
|
Database.Log.Logging += (message) => Trace($"LiteDB: {message}");
|
||||||
|
|
||||||
|
Debug("Loading settings collection out of database...");
|
||||||
|
var settingsDB = Database.GetCollection<Settings>("settings");
|
||||||
|
if (settingsDB.Count() > 1)
|
||||||
|
{
|
||||||
|
Warn("Found more than one setting. Loading first one...");
|
||||||
|
}
|
||||||
|
Settings = settingsDB.FindAll().FirstOrDefault();
|
||||||
|
if (Settings == null)
|
||||||
|
{
|
||||||
|
Warn("Settings not found. Creating new one. This is normal on first start up...");
|
||||||
|
Settings = new Settings();
|
||||||
|
Settings.Store();
|
||||||
|
}
|
||||||
|
|
||||||
|
Info("Loaded settings.");
|
||||||
|
Debug(
|
||||||
|
$"Settings: Email: {Settings.Email}, password: {(string.IsNullOrEmpty(Settings.Password) ? "not set" : "is set")}, use username: {Settings.UseUserData}, loginToken: {Settings.LoginToken}");
|
||||||
|
|
||||||
|
Trace("Updating log level...");
|
||||||
|
GlobalLogLevel = Settings.ApplicactionLogLevel;
|
||||||
|
#if DEBUG
|
||||||
|
//temporary add debug log level if debugging...
|
||||||
|
GlobalLogLevel |= LogLevel.Debug;
|
||||||
|
Debug("Running in debug configuartion. Added log level debug.");
|
||||||
|
#endif
|
||||||
|
if (useTrace)
|
||||||
|
{
|
||||||
|
GlobalLogLevel |= LogLevel.Trace;
|
||||||
|
Trace("Creating application data folder.");
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug("Creating discord client...");
|
||||||
|
Client = new DiscordClient();
|
||||||
|
Client.Log.Message += (sender, message) =>
|
||||||
|
{
|
||||||
|
var logMessage = $"DiscordClient: {message.Message}";
|
||||||
|
switch (message.Severity)
|
||||||
|
{
|
||||||
|
case LogSeverity.Verbose:
|
||||||
|
Trace(logMessage);
|
||||||
|
break;
|
||||||
|
case LogSeverity.Debug:
|
||||||
|
Trace(logMessage);
|
||||||
|
break;
|
||||||
|
case LogSeverity.Info:
|
||||||
|
Info(logMessage);
|
||||||
|
break;
|
||||||
|
case LogSeverity.Warning:
|
||||||
|
Warn(logMessage);
|
||||||
|
break;
|
||||||
|
case LogSeverity.Error:
|
||||||
|
Error(logMessage);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Info("Trying to log into discord...");
|
||||||
|
var abort = false;
|
||||||
|
|
||||||
|
while (Client.State != ConnectionState.Connected && !abort)
|
||||||
|
{
|
||||||
|
Trace("Entering login loop.");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(Settings.LoginToken))
|
||||||
|
{
|
||||||
|
Debug("Trying to login with last known token...");
|
||||||
|
await Client.Connect(Settings.LoginToken, TokenType.User);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Client.State != ConnectionState.Connected && Settings.UseUserData &&
|
||||||
|
!string.IsNullOrEmpty(Settings.Email) &&
|
||||||
|
!string.IsNullOrEmpty(Settings.Password))
|
||||||
|
{
|
||||||
|
Settings.LoginToken = string.Empty;
|
||||||
|
|
||||||
|
Debug("Trying to login with email and password...");
|
||||||
|
await Client.Connect(Settings.Email, Settings.Password);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (HttpException)
|
||||||
|
{
|
||||||
|
Warn("Login seems to have failed or gone wrong.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Client.State != ConnectionState.Connected)
|
||||||
|
{
|
||||||
|
Settings.Password = string.Empty;
|
||||||
|
Debug("Showing dialog for username and password...");
|
||||||
|
var loginDlg = new LoginDialog();
|
||||||
|
loginDlg.ShowDialog();
|
||||||
|
Trace("Dialog closed.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
System.Windows.Forms.Application.Run(new MainForm());
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Error($"{ex.Message} occured at: {ex.StackTrace}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,10 @@
|
||||||
<HintPath>..\packages\Discord.Net.0.9.6\lib\net45\Discord.Net.dll</HintPath>
|
<HintPath>..\packages\Discord.Net.0.9.6\lib\net45\Discord.Net.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="LiteDB, Version=3.1.0.0, Culture=neutral, PublicKeyToken=4ee40123013c9f27, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\LiteDB.3.1.0\lib\net35\LiteDB.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
<HintPath>..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
|
@ -74,7 +78,14 @@
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="Classes\Settings.cs" />
|
||||||
<Compile Include="Core.cs" />
|
<Compile Include="Core.cs" />
|
||||||
|
<Compile Include="Dialogs\LoginDialog.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Dialogs\LoginDialog.Designer.cs">
|
||||||
|
<DependentUpon>LoginDialog.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="MainForm.cs">
|
<Compile Include="MainForm.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
@ -84,6 +95,9 @@
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="Dialogs\LoginDialog.resx">
|
||||||
|
<DependentUpon>LoginDialog.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="MainForm.resx">
|
<EmbeddedResource Include="MainForm.resx">
|
||||||
<DependentUpon>MainForm.cs</DependentUpon>
|
<DependentUpon>MainForm.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
|
258
Discord Media Loader.Application/Dialogs/LoginDialog.Designer.cs
generated
Normal file
258
Discord Media Loader.Application/Dialogs/LoginDialog.Designer.cs
generated
Normal file
|
@ -0,0 +1,258 @@
|
||||||
|
namespace DML.Application.Dialogs
|
||||||
|
{
|
||||||
|
partial class LoginDialog
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginDialog));
|
||||||
|
this.pnlButtons = new System.Windows.Forms.Panel();
|
||||||
|
this.tbcLoginMethods = new System.Windows.Forms.TabControl();
|
||||||
|
this.tpgToken = new System.Windows.Forms.TabPage();
|
||||||
|
this.tpgUserdata = new System.Windows.Forms.TabPage();
|
||||||
|
this.lbToken = new System.Windows.Forms.Label();
|
||||||
|
this.edToken = new System.Windows.Forms.TextBox();
|
||||||
|
this.lbHowToToken = new System.Windows.Forms.Label();
|
||||||
|
this.edEmail = new System.Windows.Forms.TextBox();
|
||||||
|
this.edPassword = new System.Windows.Forms.TextBox();
|
||||||
|
this.lbEmail = new System.Windows.Forms.Label();
|
||||||
|
this.lbPassword = new System.Windows.Forms.Label();
|
||||||
|
this.cbUseUserdata = new System.Windows.Forms.CheckBox();
|
||||||
|
this.cbSavePassword = new System.Windows.Forms.CheckBox();
|
||||||
|
this.lbUserdataHints = new System.Windows.Forms.Label();
|
||||||
|
this.btnOk = new System.Windows.Forms.Button();
|
||||||
|
this.btnAbort = new System.Windows.Forms.Button();
|
||||||
|
this.pnlButtons.SuspendLayout();
|
||||||
|
this.tbcLoginMethods.SuspendLayout();
|
||||||
|
this.tpgToken.SuspendLayout();
|
||||||
|
this.tpgUserdata.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// pnlButtons
|
||||||
|
//
|
||||||
|
this.pnlButtons.BackColor = System.Drawing.SystemColors.ButtonShadow;
|
||||||
|
this.pnlButtons.Controls.Add(this.btnAbort);
|
||||||
|
this.pnlButtons.Controls.Add(this.btnOk);
|
||||||
|
this.pnlButtons.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||||
|
this.pnlButtons.Location = new System.Drawing.Point(0, 168);
|
||||||
|
this.pnlButtons.Name = "pnlButtons";
|
||||||
|
this.pnlButtons.Size = new System.Drawing.Size(426, 51);
|
||||||
|
this.pnlButtons.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// tbcLoginMethods
|
||||||
|
//
|
||||||
|
this.tbcLoginMethods.Controls.Add(this.tpgToken);
|
||||||
|
this.tbcLoginMethods.Controls.Add(this.tpgUserdata);
|
||||||
|
this.tbcLoginMethods.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.tbcLoginMethods.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.tbcLoginMethods.Name = "tbcLoginMethods";
|
||||||
|
this.tbcLoginMethods.SelectedIndex = 0;
|
||||||
|
this.tbcLoginMethods.Size = new System.Drawing.Size(426, 168);
|
||||||
|
this.tbcLoginMethods.TabIndex = 1;
|
||||||
|
//
|
||||||
|
// tpgToken
|
||||||
|
//
|
||||||
|
this.tpgToken.Controls.Add(this.lbHowToToken);
|
||||||
|
this.tpgToken.Controls.Add(this.edToken);
|
||||||
|
this.tpgToken.Controls.Add(this.lbToken);
|
||||||
|
this.tpgToken.Location = new System.Drawing.Point(4, 22);
|
||||||
|
this.tpgToken.Name = "tpgToken";
|
||||||
|
this.tpgToken.Padding = new System.Windows.Forms.Padding(3);
|
||||||
|
this.tpgToken.Size = new System.Drawing.Size(418, 142);
|
||||||
|
this.tpgToken.TabIndex = 0;
|
||||||
|
this.tpgToken.Text = "Token";
|
||||||
|
this.tpgToken.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// tpgUserdata
|
||||||
|
//
|
||||||
|
this.tpgUserdata.Controls.Add(this.lbUserdataHints);
|
||||||
|
this.tpgUserdata.Controls.Add(this.cbSavePassword);
|
||||||
|
this.tpgUserdata.Controls.Add(this.cbUseUserdata);
|
||||||
|
this.tpgUserdata.Controls.Add(this.lbPassword);
|
||||||
|
this.tpgUserdata.Controls.Add(this.lbEmail);
|
||||||
|
this.tpgUserdata.Controls.Add(this.edPassword);
|
||||||
|
this.tpgUserdata.Controls.Add(this.edEmail);
|
||||||
|
this.tpgUserdata.Location = new System.Drawing.Point(4, 22);
|
||||||
|
this.tpgUserdata.Name = "tpgUserdata";
|
||||||
|
this.tpgUserdata.Padding = new System.Windows.Forms.Padding(3);
|
||||||
|
this.tpgUserdata.Size = new System.Drawing.Size(418, 142);
|
||||||
|
this.tpgUserdata.TabIndex = 1;
|
||||||
|
this.tpgUserdata.Text = "Userdata";
|
||||||
|
this.tpgUserdata.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// lbToken
|
||||||
|
//
|
||||||
|
this.lbToken.AutoSize = true;
|
||||||
|
this.lbToken.Location = new System.Drawing.Point(3, 9);
|
||||||
|
this.lbToken.Name = "lbToken";
|
||||||
|
this.lbToken.Size = new System.Drawing.Size(66, 13);
|
||||||
|
this.lbToken.TabIndex = 0;
|
||||||
|
this.lbToken.Text = "Login token:";
|
||||||
|
//
|
||||||
|
// edToken
|
||||||
|
//
|
||||||
|
this.edToken.Location = new System.Drawing.Point(75, 6);
|
||||||
|
this.edToken.Name = "edToken";
|
||||||
|
this.edToken.Size = new System.Drawing.Size(335, 20);
|
||||||
|
this.edToken.TabIndex = 1;
|
||||||
|
//
|
||||||
|
// lbHowToToken
|
||||||
|
//
|
||||||
|
this.lbHowToToken.Location = new System.Drawing.Point(3, 52);
|
||||||
|
this.lbHowToToken.Name = "lbHowToToken";
|
||||||
|
this.lbHowToToken.Size = new System.Drawing.Size(412, 87);
|
||||||
|
this.lbHowToToken.TabIndex = 2;
|
||||||
|
this.lbHowToToken.Text = resources.GetString("lbHowToToken.Text");
|
||||||
|
//
|
||||||
|
// edEmail
|
||||||
|
//
|
||||||
|
this.edEmail.Location = new System.Drawing.Point(47, 6);
|
||||||
|
this.edEmail.Name = "edEmail";
|
||||||
|
this.edEmail.Size = new System.Drawing.Size(133, 20);
|
||||||
|
this.edEmail.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// edPassword
|
||||||
|
//
|
||||||
|
this.edPassword.Location = new System.Drawing.Point(279, 6);
|
||||||
|
this.edPassword.Name = "edPassword";
|
||||||
|
this.edPassword.PasswordChar = '•';
|
||||||
|
this.edPassword.Size = new System.Drawing.Size(133, 20);
|
||||||
|
this.edPassword.TabIndex = 1;
|
||||||
|
//
|
||||||
|
// lbEmail
|
||||||
|
//
|
||||||
|
this.lbEmail.AutoSize = true;
|
||||||
|
this.lbEmail.Location = new System.Drawing.Point(6, 9);
|
||||||
|
this.lbEmail.Name = "lbEmail";
|
||||||
|
this.lbEmail.Size = new System.Drawing.Size(35, 13);
|
||||||
|
this.lbEmail.TabIndex = 2;
|
||||||
|
this.lbEmail.Text = "Email:";
|
||||||
|
//
|
||||||
|
// lbPassword
|
||||||
|
//
|
||||||
|
this.lbPassword.AutoSize = true;
|
||||||
|
this.lbPassword.Location = new System.Drawing.Point(217, 9);
|
||||||
|
this.lbPassword.Name = "lbPassword";
|
||||||
|
this.lbPassword.Size = new System.Drawing.Size(56, 13);
|
||||||
|
this.lbPassword.TabIndex = 3;
|
||||||
|
this.lbPassword.Text = "Password:";
|
||||||
|
//
|
||||||
|
// cbUseUserdata
|
||||||
|
//
|
||||||
|
this.cbUseUserdata.AutoSize = true;
|
||||||
|
this.cbUseUserdata.Location = new System.Drawing.Point(6, 32);
|
||||||
|
this.cbUseUserdata.Name = "cbUseUserdata";
|
||||||
|
this.cbUseUserdata.Size = new System.Drawing.Size(139, 17);
|
||||||
|
this.cbUseUserdata.TabIndex = 4;
|
||||||
|
this.cbUseUserdata.Text = "Use login with user data";
|
||||||
|
this.cbUseUserdata.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// cbSavePassword
|
||||||
|
//
|
||||||
|
this.cbSavePassword.AutoSize = true;
|
||||||
|
this.cbSavePassword.Location = new System.Drawing.Point(313, 32);
|
||||||
|
this.cbSavePassword.Name = "cbSavePassword";
|
||||||
|
this.cbSavePassword.Size = new System.Drawing.Size(99, 17);
|
||||||
|
this.cbSavePassword.TabIndex = 5;
|
||||||
|
this.cbSavePassword.Text = "Save password";
|
||||||
|
this.cbSavePassword.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// lbUserdataHints
|
||||||
|
//
|
||||||
|
this.lbUserdataHints.Location = new System.Drawing.Point(3, 52);
|
||||||
|
this.lbUserdataHints.Name = "lbUserdataHints";
|
||||||
|
this.lbUserdataHints.Size = new System.Drawing.Size(412, 87);
|
||||||
|
this.lbUserdataHints.TabIndex = 6;
|
||||||
|
this.lbUserdataHints.Text = "Login with email and password is not recommended. If you use two factor authentic" +
|
||||||
|
"ation this can cause a ban of your discord account.\r\n\r\nFor safety reasons we rec" +
|
||||||
|
"ommend to login with login token.";
|
||||||
|
//
|
||||||
|
// btnOk
|
||||||
|
//
|
||||||
|
this.btnOk.Location = new System.Drawing.Point(267, 16);
|
||||||
|
this.btnOk.Name = "btnOk";
|
||||||
|
this.btnOk.Size = new System.Drawing.Size(75, 23);
|
||||||
|
this.btnOk.TabIndex = 0;
|
||||||
|
this.btnOk.Text = "&Ok";
|
||||||
|
this.btnOk.UseVisualStyleBackColor = true;
|
||||||
|
this.btnOk.Click += new System.EventHandler(this.btnOk_Click);
|
||||||
|
//
|
||||||
|
// btnAbort
|
||||||
|
//
|
||||||
|
this.btnAbort.Location = new System.Drawing.Point(348, 16);
|
||||||
|
this.btnAbort.Name = "btnAbort";
|
||||||
|
this.btnAbort.Size = new System.Drawing.Size(75, 23);
|
||||||
|
this.btnAbort.TabIndex = 1;
|
||||||
|
this.btnAbort.Text = "&Abort";
|
||||||
|
this.btnAbort.UseVisualStyleBackColor = true;
|
||||||
|
this.btnAbort.Click += new System.EventHandler(this.btnAbort_Click);
|
||||||
|
//
|
||||||
|
// LoginDialog
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.ClientSize = new System.Drawing.Size(426, 219);
|
||||||
|
this.Controls.Add(this.tbcLoginMethods);
|
||||||
|
this.Controls.Add(this.pnlButtons);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||||
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||||
|
this.MaximizeBox = false;
|
||||||
|
this.MinimizeBox = false;
|
||||||
|
this.Name = "LoginDialog";
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
|
this.Text = "LoginForm";
|
||||||
|
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.LoginDialog_FormClosing);
|
||||||
|
this.Shown += new System.EventHandler(this.LoginDialog_Shown);
|
||||||
|
this.pnlButtons.ResumeLayout(false);
|
||||||
|
this.tbcLoginMethods.ResumeLayout(false);
|
||||||
|
this.tpgToken.ResumeLayout(false);
|
||||||
|
this.tpgToken.PerformLayout();
|
||||||
|
this.tpgUserdata.ResumeLayout(false);
|
||||||
|
this.tpgUserdata.PerformLayout();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.Panel pnlButtons;
|
||||||
|
private System.Windows.Forms.TabControl tbcLoginMethods;
|
||||||
|
private System.Windows.Forms.TabPage tpgToken;
|
||||||
|
private System.Windows.Forms.Label lbHowToToken;
|
||||||
|
private System.Windows.Forms.TextBox edToken;
|
||||||
|
private System.Windows.Forms.Label lbToken;
|
||||||
|
private System.Windows.Forms.TabPage tpgUserdata;
|
||||||
|
private System.Windows.Forms.Button btnAbort;
|
||||||
|
private System.Windows.Forms.Button btnOk;
|
||||||
|
private System.Windows.Forms.Label lbUserdataHints;
|
||||||
|
private System.Windows.Forms.CheckBox cbSavePassword;
|
||||||
|
private System.Windows.Forms.CheckBox cbUseUserdata;
|
||||||
|
private System.Windows.Forms.Label lbPassword;
|
||||||
|
private System.Windows.Forms.Label lbEmail;
|
||||||
|
private System.Windows.Forms.TextBox edPassword;
|
||||||
|
private System.Windows.Forms.TextBox edEmail;
|
||||||
|
}
|
||||||
|
}
|
61
Discord Media Loader.Application/Dialogs/LoginDialog.cs
Normal file
61
Discord Media Loader.Application/Dialogs/LoginDialog.cs
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using static SweetLib.Utils.Logger.Logger;
|
||||||
|
|
||||||
|
namespace DML.Application.Dialogs
|
||||||
|
{
|
||||||
|
public partial class LoginDialog : Form
|
||||||
|
{
|
||||||
|
public LoginDialog()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoginDialog_Shown(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Trace("Login dialog shown.");
|
||||||
|
edToken.Text = Core.Settings.LoginToken;
|
||||||
|
edEmail.Text = Core.Settings.Email;
|
||||||
|
edPassword.Text = Core.Settings.Password;
|
||||||
|
cbUseUserdata.Checked = Core.Settings.UseUserData;
|
||||||
|
cbSavePassword.Checked = Core.Settings.SavePassword;
|
||||||
|
|
||||||
|
tbcLoginMethods.SelectedTab = Core.Settings.UseUserData ? tpgUserdata : tpgToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoginDialog_FormClosing(object sender, FormClosingEventArgs e)
|
||||||
|
{
|
||||||
|
Trace($"Closing login dialog. Result: {DialogResult}");
|
||||||
|
if (DialogResult != DialogResult.OK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Debug("Adjusting login settings...");
|
||||||
|
Core.Settings.LoginToken = edToken.Text;
|
||||||
|
Core.Settings.Email = edEmail.Text;
|
||||||
|
Core.Settings.Password = edPassword.Text;
|
||||||
|
Core.Settings.UseUserData = cbUseUserdata.Checked;
|
||||||
|
Core.Settings.SavePassword = cbSavePassword.Checked;
|
||||||
|
|
||||||
|
Core.Settings.Store();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnOk_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Trace("btnOk pressed.");
|
||||||
|
DialogResult = DialogResult.OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnAbort_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Trace("btnAbort pressed.");
|
||||||
|
DialogResult = DialogResult.Abort;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
413
Discord Media Loader.Application/Dialogs/LoginDialog.resx
Normal file
413
Discord Media Loader.Application/Dialogs/LoginDialog.resx
Normal file
|
@ -0,0 +1,413 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="lbHowToToken.Text" xml:space="preserve">
|
||||||
|
<value>To find your login token please start Discord and press Ctrl + Shift + I shortcut. A browser inspector will open.
|
||||||
|
Navigate into the "Application" tab and select "Local Storage" / "https://discordapp.com". If the right site keeps blank use "Session Storage" instead.
|
||||||
|
Look for the token key and copy its value without the quotation marks.</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8b////VP///3////+m////zP//
|
||||||
|
/+T////1//////////r////u////3f///8z///+m////f////1T///8b////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////M////5D////b////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/9v///+Q////M////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///w3///90////1v//
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
///////////////////////////////////////W////dP///w3///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A2K4AANiuAADYrgAA2K4AANiuAADfswAA////EP//
|
||||||
|
/4D////t////////////////////////////////////////////////9/zq/7XiQ/+340n/w+ho/9Pu
|
||||||
|
kf/m9b//+Pzt///////////////////////////////////////////////////////////t////gf//
|
||||||
|
/xCa2AAAmtgAAJrYAACa2AAAmtgAAJrYAAD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ANiuAADYrgAA2K4AANiu
|
||||||
|
AAD///8B////Yf///+v//////////////////////////////////////////////////////////+z4
|
||||||
|
z/+a2AD/mtgA/5rYAP+a2AD/mtgA/6TcGf+65VL/3fKo//n98P//////////////////////////////
|
||||||
|
///////////////////////r////Yf///wGa2AAAmtgAAJrYAACa2AAA////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wDYrgAA2K4AANiuAAD///8k////xP//////////////////////////////////////////////////
|
||||||
|
///////////////////h87P/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+n3SD/zOt+//X7
|
||||||
|
5v/////////////////////////////////////////////////////E////I5rYAACa2AAAmtgAAP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A2K4AANiuAAD///9V////8f//////////////////////////////////
|
||||||
|
////////////////////////////////////////0+6Q/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY
|
||||||
|
AP+a2AD/mtgA/5rYAP+k3Bn/0e2K//v+9v//////////////////////////////////////////////
|
||||||
|
//H///9VmtgAAJrYAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wH///+M////////////////////////
|
||||||
|
/////////////////////////////////////////////////////////////8bpbv+a2AD/mtgA/5rY
|
||||||
|
AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+u4DP/5/bD////////////////////
|
||||||
|
/////////////////////////////////4z///8B////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wb///+l////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//+55E//mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5zZ
|
||||||
|
Bv/P7Ib/////////////////////////////////////////////////////pf///wb///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wb///+3////////////////////////////////////////////////////////////////////////
|
||||||
|
///////////////////+//3/rd8x/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY
|
||||||
|
AP+a2AD/mtgA/5rYAP+a2AD/mtgA/7zlV//5/fH/////////////////////////////////////////
|
||||||
|
//////+3////Bv///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wH///+k////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////+f3v/6PcF/+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY
|
||||||
|
AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/seE7//X75v//////////////
|
||||||
|
/////////////////////////////////6T///8B////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///+K////////////////////////////////////////
|
||||||
|
/////////////////////////////////////////////////////////////+751f+a2AD/mtgA/5rY
|
||||||
|
AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY
|
||||||
|
AP+s3y7/9Pvi////////////////////////////////////////////////i////wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///9V////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
///s+M//rd8w/6XcHf+c2Qb/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY
|
||||||
|
AP+a2AD/mtgA/5rYAP+a2AD/mtgA/6zfLv/1++f/////////////////////////////////////////
|
||||||
|
//////9V////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8j////8P//
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/////////////////////////////////v/6/fL/8PnZ/97yrP/E6Gv/qd4l/5rYAP+a2AD/mtgA/5rY
|
||||||
|
AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/suE8//v99P//////////////
|
||||||
|
////////////////////////////8P///yP///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8B////xP//////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////v9
|
||||||
|
9f/e8qz/s+JA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY
|
||||||
|
AP/A51/////////////////////////////////////////////////E////Af///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////Yf//////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
///////////////////////////////////f867/rN8t/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY
|
||||||
|
AP+a2AD/mtgA/5rYAP+a2AD/mtgA/9jwnP//////////////////////////////////////////////
|
||||||
|
/2H///8A////AP///wD///8A////AP///wD///8A////EP///+r/////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////r98//I6nX/mtgA/5rY
|
||||||
|
AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+h2xL/8/rh////////////////////
|
||||||
|
///////////////////////q////Ev///wD///8A////AP///wD///8A////AP///3//////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/////////////9/yrf+h2xL/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/8Dn
|
||||||
|
X////////////////////////////////////////////////4D///8A////AP///wD///8A////AP//
|
||||||
|
/w3////u////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////7PjQ/6reKP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY
|
||||||
|
AP+a2AD/mtgA/5rYAP+c2QX/7vjT///////////////////////////////////////////u////Df//
|
||||||
|
/wD///8A////AP///wD///90////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
///////////////////////////////////////////////////////////////////0++L/qd4n/5rY
|
||||||
|
AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/8PoaP//////////////////////////////
|
||||||
|
/////////////////3T///8A////AP///wD///8B////2///////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/////////////+360P+k4g3/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+j2xb/+Pzu////
|
||||||
|
///////////////////////////////////////b////Af///wD///8A////O///////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////wNCY/53dAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY
|
||||||
|
AP+a2AD/mtgA/9/zr////////////////////////////////////////////////zv///8A////AP//
|
||||||
|
/5D/////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////f39/+Puin/n+AA/5rY
|
||||||
|
AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP/F6W3/////////////////////////////////////////
|
||||||
|
//////+Q////AP///wD////Y////////////////////////////////////////////////////////
|
||||||
|
/////////////////////////////+3t7f+3t7f/jIyM/3Nzc/9oaGj/a2tr/35+fv+dnZ3/xsbG//Hx
|
||||||
|
8f//////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////iZNy/5zbAP+b2QD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/s+JA////////////////////
|
||||||
|
////////////////////////////2f///wD///8d////////////////////////////////////////
|
||||||
|
////////////////////////////////////////9fTx/46Pk/9BQUH/Li4u/y4uLv8uLi7/Li4u/y4u
|
||||||
|
Lv8uLi7/Li4u/y4uLv9ERET/fn5+/8rKyv//////////////////////////////////////////////
|
||||||
|
/////////////////////////////4iHjP98qA3/n+AA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/6ne
|
||||||
|
J/////////////////////////////////////////////////////8e////Vv//////////////////
|
||||||
|
////////////////////////////////////////////////////////+fDL/45/Qv8kJjH/Li4u/y4u
|
||||||
|
Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Xl5e/7e3t//+/v7/////////
|
||||||
|
//////////////////////////////////////////////////9vbXX/T2Ig/57fAP+a2QD/mtgA/5rY
|
||||||
|
AP+a2AD/mtgA/5rYAP+l3Bz/////////////////////////////////////////////////////Vv//
|
||||||
|
/4T/////////////////////////////////////////////////////////////////////8+ax/+O5
|
||||||
|
D/92ZBv/JCYx/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u
|
||||||
|
Lv8uLi7/YGBg/8jIyP/////////////////////////////////////////////////09PT/QkJE/zEz
|
||||||
|
Lf+Mwgb/nd0A/5rYAP+a2AD/mtgA/5rYAP+a2AD/pdwb////////////////////////////////////
|
||||||
|
/////////////////4T///+t////////////////////////////////////////////////////////
|
||||||
|
////////8+ez/9mwB//htQD/dWMb/yQnMf8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u
|
||||||
|
Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/dHR0/97e3v//////////////////////////////
|
||||||
|
////////r6+v/y4uLv8nIzH/bZET/6HiAP+a2AD/mtgA/5rYAP+a2AD/mtgA/6neJv//////////////
|
||||||
|
//////////////////////////////////////+t////zP//////////////////////////////////
|
||||||
|
////////////////////////+PHS/9qyDv/YrgD/4rUA/3lmGf8kJjH/Li4u/y4uLv8uLi7/Li4u/y4u
|
||||||
|
Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Ozs7/1ZWVv90dHT/jo6O/5mZmf/Hx8f//v7+////
|
||||||
|
////////////////////////7+/v/0dHR/8uLi7/KCUw/1BkH/+f4AD/mtgA/5rYAP+a2AD/mtgA/5rY
|
||||||
|
AP+z4T7/////////////////////////////////////////////////////zP///+X/////////////
|
||||||
|
/////////////////////////////////////////v35/+C/N//YrgD/2K4A/+O2AP+Dbhf/IyYx/y4u
|
||||||
|
Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/1VVVf+QkJD/xsbG/+rq6v//////////////
|
||||||
|
////////////////////////////////////////+vr6/2tra/8uLi7/Li4u/yspL/86Qij/ltEC/5va
|
||||||
|
AP+a2AD/mtgA/5rYAP+a2AD/x+ly////////////////////////////////////////////////////
|
||||||
|
/+D////y//////////////////////////////////////////////////////Dfm//YrgD/2K4A/9iu
|
||||||
|
AP/itQD/k3oT/yUnMf8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/cHBw/8bGxv/8/Pz/////////
|
||||||
|
////////////////////////////////////////////////////////7+/v/3BwcP8uLi7/Li4u/y4u
|
||||||
|
Lv8tLC7/Ly8u/4e7CP+e3gD/mtgA/5rYAP+a2AD/mtgA/+X1vf//////////////////////////////
|
||||||
|
///////////////////////s//////////////////////////////////////////////////////79
|
||||||
|
+f/euyr/2K4A/9iuAP/YrgD/4LQA/6iKDf8oKTD/Li4u/y4uLv8uLi7/Li4u/y4uLv9QUFD/xMTE////
|
||||||
|
////////////////////////////////////////////////////////////////////////w8PD/1BQ
|
||||||
|
UP8uLi7/Li4u/y4uLv8uLi7/Li4u/yknMP95pA7/n+EA/5rYAP+a2AD/mtgA/6neJ//8/vj/////////
|
||||||
|
////////////////////////////////////////////+f//////////////////////////////////
|
||||||
|
///////////////////168D/2K4A/9iuAP/YrgD/2K4A/92yAP+/mwf/MTAt/ywtLv8uLi7/Li4u/y4u
|
||||||
|
Lv9wcHD/8PDw//////////////////////////////////////////////////////////////////r6
|
||||||
|
+v/ExMT/bm5u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8oJDH/a44U/6HiAP+a2AD/mtgA/5rY
|
||||||
|
AP/W75j///////////////////////////////////////////////////////////n////y////////
|
||||||
|
////////////////////////////////////////6tR3/9iuAP/YrgD/2K4A/9iuAP/arwD/06oB/0VA
|
||||||
|
J/8pKi//Li4u/y4uLv9ra2v/+vr6//////////////////////////////////////////////////39
|
||||||
|
/f/n5+f/wsLC/4yMjP9SUlL/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/JyMx/2F+
|
||||||
|
GP+h4wD/mtgA/5rYAP+v4DX//P74////////////////////////////////////////////////////
|
||||||
|
///////s////5f///////////////////////////////////////////////+LDQv/YrgD/2K4A/9iu
|
||||||
|
AP/YrgD/2K4A/+C0AP9oWh7/JCcx/y4uLv9GRkb/7u7u/////////////////////////////v7+/8fH
|
||||||
|
x/+VlZX/iYmJ/3BwcP9TU1P/OTk5/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u
|
||||||
|
Lv8uLi7/Li4u/ygkMf9bdRv/oOEA/5rYAP+g2g7/7fjR////////////////////////////////////
|
||||||
|
////////////////////////////4P///8z/////////////////////////////////////////////
|
||||||
|
///euyj/2K4A/9iuAP/YrgD/2K4A/9iuAP/itQD/ln0S/yQnMf8uLi7/ra2t////////////////////
|
||||||
|
///////////////////i4uL/e3t7/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u
|
||||||
|
Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8oJDH/WXEc/6DhAP+d2Qf/4fOy////////////////////
|
||||||
|
/////////////////////////////////////////////////8z///+t////////////////////////
|
||||||
|
////////////////////////3Lcc/9iuAP/YrgD/2K4A/9iuAP/YrgD/3LEA/8agBf82NCz/Pj9C//T0
|
||||||
|
9P/////////////////////////////////////////////////Ozs7/ZmZm/y4uLv8uLi7/Li4u/y4u
|
||||||
|
Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/KCQx/1pzHP+m4w//4POx////
|
||||||
|
//////////////////////////////////////////////////////////////////////+t////hP//
|
||||||
|
/////////////////////////////////////////////9y3Hf/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu
|
||||||
|
AP/gtAD/Z1ke/2lrcv//////////////////////////////////////////////////////////////
|
||||||
|
//++vr7/ZGRk/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/ygk
|
||||||
|
Mf93i0X/7PnL////////////////////////////////////////////////////////////////////
|
||||||
|
////////////hP///1T////////////////////////////////////////////////euyr/2K4A/9iu
|
||||||
|
AP/YrgD/2K4A/9iuAP/YrgD/4LQA/66OC/+Dg4b/////////////////////////////////////////
|
||||||
|
///////////////////////////////////Pz8//hISE/0hISP8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u
|
||||||
|
Lv8uLi7/Li4u/0JCQv+RkJX/9PXy////////////////////////////////////////////////////
|
||||||
|
/////////////////////////////////1b///8c////////////////////////////////////////
|
||||||
|
////////48RG/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9mvAP/dsgD/kopq////////////////////
|
||||||
|
///////////////////////////////////////////////////////////////////09PT/y8vL/6Ki
|
||||||
|
ov+Dg4P/cXFx/21tbf94eHj/kJCQ/7q6uv/v7+//////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////8d////AP///9f/////////////
|
||||||
|
/////////////////////////////+rTdP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/4LQA/72f
|
||||||
|
Iv/09PT/////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
///////////////////////////////////////////////////////////////////////Y////AP//
|
||||||
|
/wD///+P///////////////////////////////////////////06Lb/2K4A/9iuAP/YrgD/2K4A/9iu
|
||||||
|
AP/YrgD/2K4A/9iuAP/esgD/zsKO////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////kP///wD///8A////Ov///////////////////////////////////////////fvx/9y2
|
||||||
|
Gv/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/+G3Cf/578j/////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/////////////////////////////////zr///8A////AP///wH////a////////////////////////
|
||||||
|
///////////////////p0nD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/3bgh//r0
|
||||||
|
3P//////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/////////////////////////////////////////////////9v///8B////AP///wD///8A////dP//
|
||||||
|
////////////////////////////////////////+fPZ/9mxCP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu
|
||||||
|
AP/YrgD/2K4A/9iuAP/duCH/9+7I////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////90////AP//
|
||||||
|
/wD///8A////AP///wz////t///////////////////////////////////////////oz2n/2K4A/9iu
|
||||||
|
AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9qyDf/x4qT/////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
///////t////Df///wD///8A////AP///wD///8A////f///////////////////////////////////
|
||||||
|
////////+/fm/9u1Fv/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/+nQ
|
||||||
|
bP/8+u7/////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////f////wD///8A////AP///wD///8A////AP///xD////q////////
|
||||||
|
///////////////////////////////////x4qX/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu
|
||||||
|
AP/YrgD/2K4A/9iuAP/YrgD/3ron//Hipf///v3/////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////6v///xD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////YP///////////////////////////////////////////////+jPaf/YrgD/2K4A/9iu
|
||||||
|
AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/4cA5//HipP/9+/H/////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/////////////////////////////////////////////////////////////////2H///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wH////D////////////////////////////////////////
|
||||||
|
///+/fj/4sRE/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu
|
||||||
|
AP/YrgD/3bgf/+fNY//x4qX/+PHT//367//+/vv////+////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/8P///8B////AP///wD///8A////AP///wD///8A////AP///wD///8A////Iv////D/////////////
|
||||||
|
//////////////////////////////z57f/gvzX/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu
|
||||||
|
AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9ivA//cthj/37wr//fuyv//////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////D///8i////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///9U////////////////////////////////////////////////+/jo/+C/Nf/YrgD/2K4A/9iu
|
||||||
|
AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu
|
||||||
|
AP/48NH/////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////9V////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///4j/////////////////////////////////////////////
|
||||||
|
///8+ev/4sND/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu
|
||||||
|
AP/YrgD/2K4A/9iuAP/btBP//Pns////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////+J////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8B////pP//////////////////
|
||||||
|
//////////////////////////////789v/nzGD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu
|
||||||
|
AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/37wt///+/P//////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////+k////Af//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wb///+3/////////////////////////////////////////////////////+7bj//asQr/2K4A/9iu
|
||||||
|
AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/+PGSv//////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////+3////Bv///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////Bv///6X/////////////////////////////////////////////
|
||||||
|
////////9+7K/+HBO//YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu
|
||||||
|
AP/oz2n/////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////+l////Bv///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8B////jP//////////////////
|
||||||
|
///////////////////////////////////+/fr/7t2T/924Hv/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu
|
||||||
|
AP/YrgD/2K4A/9iuAP/YrgD/7dqL////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////+M////Af///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A2K4AANiu
|
||||||
|
AAD///9V////8f/////////////////////////////////////////////////////8+ev/7dmH/966
|
||||||
|
Jv/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A//Plrv//////////////////////////////
|
||||||
|
//////////////////////////////////////////////////H///9VmtgAAJrYAAD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////ANiuAADYrgAA2K4AAP///yT////E////////////////////////////////////////
|
||||||
|
///////////////////9/PT/8+av/+bLWv/duB7/2K4A/9iuAP/YrgD/2K4A/9iuAP/37sv/////////
|
||||||
|
/////////////////////////////////////////////////////////////////8T///8jmtgAAJrY
|
||||||
|
AACa2AAA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wDYrgAA2K4AANiuAADYrgAA////Af///2D////r////////
|
||||||
|
/////////////////////////////////////////////////////////fvx//btxv/v3pf/6dJw/+TH
|
||||||
|
T//jxEX/+/jo////////////////////////////////////////////////////////////////6///
|
||||||
|
/2D///8BmtgAAJrYAACa2AAAmtgAAP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////EP///3/////t////////////////////////////////////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
///////t////f////xD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////Df///3T////V////////////////////////
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/////////////////9X///90////Df///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/zP///+N////1///////////////////////////////////////////////////////////////////
|
||||||
|
///////////////////////X////jf///zP///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8b////VP///33///+l////y////+P////y////////
|
||||||
|
///////y////4////8v///+l////ff///1T///8b////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||||
|
/wD///8A////4Af///////wAAD//////8AAAD/////+AAAAB/////wAAAAD////8AAAAAD////gAAAAA
|
||||||
|
H///4AAAAAAH///AAAAAAAP//4AAAAAAAf//AAAAAAAA//4AAAAAAAB//gAAAAAAAH/8AAAAAAAAP/gA
|
||||||
|
AAAAAAAf+AAAAAAAAB/wAAAAAAAAD/AAAAAAAAAH4AAAAAAAAAfgAAAAAAAAB8AAAAAAAAADwAAAAAAA
|
||||||
|
AAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AA
|
||||||
|
AAAAAAAH4AAAAAAAAAfwAAAAAAAAD/AAAAAAAAAP+AAAAAAAAB/4AAAAAAAAH/wAAAAAAAA//gAAAAAA
|
||||||
|
AH/+AAAAAAAAf/8AAAAAAAD//4AAAAAAAf//wAAAAAAD///gAAAAAAf///gAAAAAH////AAAAAA/////
|
||||||
|
AAAAAP/////AAAAD//////AAAA///////AAAP///////4Af///8=
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||||
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
||||||
// übernehmen, indem Sie "*" eingeben:
|
// übernehmen, indem Sie "*" eingeben:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("0.2.102.0")]
|
[assembly: AssemblyVersion("0.2.116.0")]
|
||||||
[assembly: AssemblyFileVersion("0.2.102.0")]
|
[assembly: AssemblyFileVersion("0.2.116.0")]
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Discord.Net" version="0.9.6" targetFramework="net461" />
|
<package id="Discord.Net" version="0.9.6" targetFramework="net461" />
|
||||||
|
<package id="LiteDB" version="3.1.0" targetFramework="net461" />
|
||||||
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net461" />
|
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net461" />
|
||||||
<package id="Nito.AsyncEx" version="3.0.1" targetFramework="net461" />
|
<package id="Nito.AsyncEx" version="3.0.1" targetFramework="net461" />
|
||||||
<package id="RestSharp" version="105.2.3" targetFramework="net461" />
|
<package id="RestSharp" version="105.2.3" targetFramework="net461" />
|
||||||
|
|
|
@ -40,6 +40,18 @@
|
||||||
<StartupObject />
|
<StartupObject />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Reference Include="Nito.AsyncEx, Version=3.0.1.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Nito.AsyncEx.3.0.1\lib\net45\Nito.AsyncEx.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Nito.AsyncEx.Concurrent, Version=3.0.1.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Nito.AsyncEx.3.0.1\lib\net45\Nito.AsyncEx.Concurrent.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Nito.AsyncEx.Enlightenment, Version=3.0.1.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Nito.AsyncEx.3.0.1\lib\net45\Nito.AsyncEx.Enlightenment.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Octokit, Version=0.24.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Octokit, Version=0.24.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Octokit.0.24.1-alpha0001\lib\net45\Octokit.dll</HintPath>
|
<HintPath>..\packages\Octokit.0.24.1-alpha0001\lib\net45\Octokit.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
|
|
|
@ -6,24 +6,23 @@ using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using Discord_Media_Loader.Helper;
|
using Discord_Media_Loader.Helper;
|
||||||
using DML.Application;
|
using DML.Application;
|
||||||
|
using Nito.AsyncEx;
|
||||||
|
|
||||||
namespace Discord_Media_Loader
|
namespace Discord_Media_Loader
|
||||||
{
|
{
|
||||||
static class Program
|
static class Program
|
||||||
{
|
{
|
||||||
[STAThread]
|
[STAThread]
|
||||||
static void Main()
|
static void Main(string[] paramStrings)
|
||||||
{
|
{
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
Application.SetCompatibleTextRenderingDefault(false);
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
|
|
||||||
ProfileOptimization.SetProfileRoot(Application.UserAppDataPath);
|
|
||||||
ProfileOptimization.StartProfile("profile.opt");
|
|
||||||
|
|
||||||
var splashScreen = new FrmSplash();
|
var splashScreen = new FrmSplash();
|
||||||
splashScreen.ShowDialog();
|
splashScreen.ShowDialog();
|
||||||
|
|
||||||
Core.Run();
|
AsyncContext.Run(() => Core.Run(paramStrings));
|
||||||
|
Console.WriteLine("Ende");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||||
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
||||||
// übernehmen, indem Sie "*" eingeben:
|
// übernehmen, indem Sie "*" eingeben:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("0.99.28.0")]
|
[assembly: AssemblyVersion("0.99.44.0")]
|
||||||
[assembly: AssemblyFileVersion("0.99.28.0")]
|
[assembly: AssemblyFileVersion("0.99.44.0")]
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
|
<package id="Nito.AsyncEx" version="3.0.1" targetFramework="net462" />
|
||||||
<package id="Octokit" version="0.24.1-alpha0001" targetFramework="net461" />
|
<package id="Octokit" version="0.24.1-alpha0001" targetFramework="net461" />
|
||||||
</packages>
|
</packages>
|
Loading…
Reference in a new issue