first commit

This commit is contained in:
2026-02-09 10:55:45 -07:00
commit 7cca957e1a
77 changed files with 44415 additions and 0 deletions

60
Forms/FormAvanceAPI.Designer.cs generated Normal file
View File

@@ -0,0 +1,60 @@
namespace EFCDesk.Forms
{
partial class FormAvanceAPI
{
/// <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()
{
button1 = new Button();
SuspendLayout();
//
// button1
//
button1.Location = new Point(339, 32);
button1.Name = "button1";
button1.Size = new Size(75, 23);
button1.TabIndex = 0;
button1.Text = "button1";
button1.UseVisualStyleBackColor = true;
button1.Click += button1_Click;
//
// FormAvanceAPI
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(440, 311);
Controls.Add(button1);
FormBorderStyle = FormBorderStyle.None;
Name = "FormAvanceAPI";
Text = "FormAvanceAPI";
ResumeLayout(false);
}
#endregion
private Button button1;
}
}

217
Forms/FormAvanceAPI.cs Normal file
View File

@@ -0,0 +1,217 @@
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 System.Drawing.Drawing2D;
using System.Xml;
using EFCDesk.Classes;
using System.Windows.Media.Media3D;
namespace EFCDesk.Forms
{
public partial class FormAvanceAPI : Form
{
private readonly (string Label, float Value, Color Color)[] _data;
private int? _hoveredIndex = null;
static float totalPedimentos = 0;
static float totalPendientes = 0;
static float totalProcesando = 0;
static float totalProcesados = 0;
public FormAvanceAPI()
{
InitializeComponent();
ConsultarDatosAPI();
_data = new[]
{
("Pendientes", totalPendientes, Color.FromArgb(46, 134, 222)),
("Procesados", totalProcesados, Color.FromArgb(231, 76, 60)),
("Procesando", totalProcesando, Color.FromArgb(39, 174, 96))
};
this.Text = "Gráfico Interactivo";
this.Size = new Size(800, 600);
this.DoubleBuffered = true;
this.Paint += OnPaint;
this.MouseMove += OnMouseMove;
}
private void ConsultarDatosAPI()
{
try
{
var config = ConfiguracionJSON.LoadFromJson();
string cryptUser = General.CodificarBase64(config.idUsuarioExp.ToString());
dynamic root = config.Consulta(config.DominioExp + "/api/avance/" + cryptUser);
if (root is XmlElement)
{
XmlNodeList nodes = root.SelectNodes("/xml/Resultado");
if (root.InnerText != "" && root.InnerText != "Error")
{
foreach (XmlNode node in nodes)
{
totalPedimentos = float.Parse(node["totalPedimentos"].InnerText);
totalPendientes = float.Parse(node["totalPendientes"].InnerText);
totalProcesando = float.Parse(node["totalProcesando"].InnerText);
totalProcesados = float.Parse(node["totalProcesados"].InnerText);
}
}
}
}
catch (Exception ex)
{
string errores = "";
string sNombreClase = System.Reflection.MethodBase.GetCurrentMethod()?.DeclaringType?.Name;
string currentMethod = System.Reflection.MethodBase.GetCurrentMethod().Name;
//MyClass.LogErrores(ex, sNombreClase, currentMethod);
}
}
private void OnMouseMove(object sender, MouseEventArgs e)
{
var rect = new Rectangle(50, 50, 400, 400);
if (!rect.Contains(e.Location))
{
if (_hoveredIndex.HasValue)
{
_hoveredIndex = null;
this.Invalidate();
}
return;
}
float total = _data.Sum(item => item.Value);
float startAngle = 0f;
for (int i = 0; i < _data.Length; i++)
{
float sweepAngle = 360f * (_data[i].Value / total);
using (var path = new GraphicsPath())
{
path.AddPie(rect, startAngle, sweepAngle);
if (path.IsVisible(e.Location))
{
if (_hoveredIndex != i)
{
_hoveredIndex = i;
this.Invalidate();
}
return;
}
}
startAngle += sweepAngle;
}
if (_hoveredIndex.HasValue)
{
_hoveredIndex = null;
this.Invalidate();
}
}
private void OnPaint(object sender, PaintEventArgs e)
{
var g = e.Graphics;
g.SmoothingMode = SmoothingMode.AntiAlias;
var rect = new Rectangle(50, 50, 400, 400);
float total = _data.Sum(item => item.Value);
float startAngle = 0f;
// Dibujar el gráfico de pastel
for (int i = 0; i < _data.Length; i++)
{
float sweepAngle = 360f * (_data[i].Value / total);
var color = _hoveredIndex == i ?
ControlPaint.Light(_data[i].Color, 0.3f) :
_data[i].Color;
using (var brush = new SolidBrush(color))
{
g.FillPie(brush, rect, startAngle, sweepAngle);
g.DrawPie(Pens.Black, rect, startAngle, sweepAngle);
}
startAngle += sweepAngle;
}
// Dibujar leyenda mejorada
DrawLegend(g);
// Mostrar tooltip si hay elemento hover
if (_hoveredIndex.HasValue)
{
var item = _data[_hoveredIndex.Value];
var text = $"{item.Label}\n{item.Value}% ({item.Value / total:P0})";
using (var font = new Font("Arial", 12, FontStyle.Bold))
using (var brush = new SolidBrush(Color.FromArgb(220, Color.Black)))
{
var size = g.MeasureString(text, font);
var tooltipRect = new Rectangle(
rect.Right + 20,
rect.Top + (_hoveredIndex.Value * 40),
(int)size.Width + 20,
(int)size.Height + 10);
g.FillRectangle(brush, tooltipRect);
g.DrawRectangle(Pens.Gray, tooltipRect);
g.DrawString(text, font, Brushes.White,
tooltipRect.X + 10,
tooltipRect.Y + 5);
}
}
}
private void DrawLegend(Graphics g)
{
int x = 500;
int y = 100;
const int boxSize = 20;
const int spacing = 30;
using (var font = new Font("Arial", 12))
using (var boldFont = new Font("Arial", 12, FontStyle.Bold))
{
for (int i = 0; i < _data.Length; i++)
{
var item = _data[i];
var currentFont = _hoveredIndex == i ? boldFont : font;
// Cuadro de color
using (var brush = new SolidBrush(item.Color))
{
g.FillRectangle(brush, x, y, boxSize, boxSize);
g.DrawRectangle(Pens.Black, x, y, boxSize, boxSize);
}
// Texto
g.DrawString($"{item.Label}: {item.Value}%",
currentFont,
Brushes.Black,
x + boxSize + 10,
y);
y += spacing;
}
}
}
private void button1_Click(object sender, EventArgs e)
{
}
}
}

120
Forms/FormAvanceAPI.resx Normal file
View File

@@ -0,0 +1,120 @@
<?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>
</root>

59
Forms/FormCargarInformacion.Designer.cs generated Normal file
View File

@@ -0,0 +1,59 @@
namespace EFCDesk.Forms
{
partial class FormCargarInformacion
{
/// <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()
{
progressBar1 = new ProgressBar();
SuspendLayout();
//
// progressBar1
//
progressBar1.Location = new Point(12, 262);
progressBar1.Name = "progressBar1";
progressBar1.Size = new Size(406, 11);
progressBar1.TabIndex = 0;
//
// FormCargarInformacion
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
BackgroundImage = Properties.Resources.splash4;
ClientSize = new Size(430, 285);
Controls.Add(progressBar1);
FormBorderStyle = FormBorderStyle.None;
Name = "FormCargarInformacion";
Text = "FormCargarInformacion";
Load += FormCargarInformacion_Load;
ResumeLayout(false);
}
#endregion
private ProgressBar progressBar1;
}
}

View File

@@ -0,0 +1,28 @@
using EFCDesk.Classes;
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;
namespace EFCDesk.Forms
{
public partial class FormCargarInformacion : Form
{
public FormCargarInformacion()
{
InitializeComponent();
}
private void FormCargarInformacion_Load(object sender, EventArgs e)
{
var databasePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "historico.db");
var sqliteHelper = new SQLiteHelper(databasePath);
this.Close();
}
}
}

View File

@@ -0,0 +1,120 @@
<?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>
</root>

View File

@@ -0,0 +1,495 @@
namespace EFCDesk.Forms
{
partial class FormConfiguracionExpediente
{
/// <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(FormConfiguracionExpediente));
tabControl1 = new TabControl();
tabGeneral = new TabPage();
groupBox1 = new GroupBox();
buttonCerrarSesion = new Button();
labelUsuario = new Label();
groupBoxEspacio = new GroupBox();
labelEspacioUsado = new Label();
tabPage2 = new TabPage();
groupBox4 = new GroupBox();
buttonCambiarFolderDepuracion = new Button();
textBoxFolderExpedienteDepuracion = new TextBox();
checkBoxDepurarFolderExpediente = new CheckBox();
groupBox3 = new GroupBox();
buttonCambiarFolderExpediente = new Button();
textBoxFolderExpediente = new TextBox();
label1 = new Label();
tabPage1 = new TabPage();
label6 = new Label();
txtDiminioEFC = new TextBox();
groupBox5 = new GroupBox();
checkBoxExpedienteLogistico = new CheckBox();
checkBoxPedimentosWinsaai = new CheckBox();
tabPage3 = new TabPage();
checkBoxModoPasivoFTP = new CheckBox();
label5 = new Label();
label4 = new Label();
label3 = new Label();
label2 = new Label();
textBoxPuertoFTP = new TextBox();
textBoxUsuarioFTP = new TextBox();
textBoxServidorFTP = new TextBox();
textBoxPasswordFTP = new TextBox();
button4 = new Button();
button5 = new Button();
tabControl1.SuspendLayout();
tabGeneral.SuspendLayout();
groupBox1.SuspendLayout();
groupBoxEspacio.SuspendLayout();
tabPage2.SuspendLayout();
groupBox4.SuspendLayout();
groupBox3.SuspendLayout();
tabPage1.SuspendLayout();
groupBox5.SuspendLayout();
tabPage3.SuspendLayout();
SuspendLayout();
//
// tabControl1
//
tabControl1.Controls.Add(tabGeneral);
tabControl1.Controls.Add(tabPage2);
tabControl1.Controls.Add(tabPage1);
tabControl1.Controls.Add(tabPage3);
tabControl1.Location = new Point(12, 14);
tabControl1.Name = "tabControl1";
tabControl1.SelectedIndex = 0;
tabControl1.Size = new Size(296, 282);
tabControl1.TabIndex = 0;
//
// tabGeneral
//
tabGeneral.Controls.Add(groupBox1);
tabGeneral.Controls.Add(groupBoxEspacio);
tabGeneral.Location = new Point(4, 26);
tabGeneral.Name = "tabGeneral";
tabGeneral.Padding = new Padding(3);
tabGeneral.Size = new Size(288, 252);
tabGeneral.TabIndex = 0;
tabGeneral.Text = "General";
tabGeneral.UseVisualStyleBackColor = true;
//
// groupBox1
//
groupBox1.Controls.Add(buttonCerrarSesion);
groupBox1.Controls.Add(labelUsuario);
groupBox1.Location = new Point(6, 74);
groupBox1.Name = "groupBox1";
groupBox1.Size = new Size(276, 64);
groupBox1.TabIndex = 1;
groupBox1.TabStop = false;
groupBox1.Text = "Cuenta";
//
// buttonCerrarSesion
//
buttonCerrarSesion.Location = new Point(165, 26);
buttonCerrarSesion.Name = "buttonCerrarSesion";
buttonCerrarSesion.Size = new Size(105, 23);
buttonCerrarSesion.TabIndex = 1;
buttonCerrarSesion.Text = " Cerrar sesión...";
buttonCerrarSesion.UseVisualStyleBackColor = true;
buttonCerrarSesion.Click += button1_Click;
//
// labelUsuario
//
labelUsuario.AutoSize = true;
labelUsuario.Font = new Font("Century Gothic", 9F, FontStyle.Bold, GraphicsUnit.Point, 0);
labelUsuario.Location = new Point(18, 28);
labelUsuario.Name = "labelUsuario";
labelUsuario.Size = new Size(53, 16);
labelUsuario.TabIndex = 0;
labelUsuario.Text = "Usuario:";
//
// groupBoxEspacio
//
groupBoxEspacio.Controls.Add(labelEspacioUsado);
groupBoxEspacio.Location = new Point(6, 7);
groupBoxEspacio.Name = "groupBoxEspacio";
groupBoxEspacio.Size = new Size(276, 64);
groupBoxEspacio.TabIndex = 0;
groupBoxEspacio.TabStop = false;
groupBoxEspacio.Text = "Espacio";
//
// labelEspacioUsado
//
labelEspacioUsado.AutoSize = true;
labelEspacioUsado.Font = new Font("Century Gothic", 9F, FontStyle.Bold, GraphicsUnit.Point, 0);
labelEspacioUsado.Location = new Point(18, 28);
labelEspacioUsado.Name = "labelEspacioUsado";
labelEspacioUsado.Size = new Size(119, 16);
labelEspacioUsado.TabIndex = 0;
labelEspacioUsado.Text = "0% de 0.0GB usado";
//
// tabPage2
//
tabPage2.Controls.Add(groupBox4);
tabPage2.Controls.Add(groupBox3);
tabPage2.Location = new Point(4, 26);
tabPage2.Name = "tabPage2";
tabPage2.Padding = new Padding(3);
tabPage2.Size = new Size(288, 252);
tabPage2.TabIndex = 1;
tabPage2.Text = "Archivos";
tabPage2.UseVisualStyleBackColor = true;
//
// groupBox4
//
groupBox4.Controls.Add(buttonCambiarFolderDepuracion);
groupBox4.Controls.Add(textBoxFolderExpedienteDepuracion);
groupBox4.Controls.Add(checkBoxDepurarFolderExpediente);
groupBox4.Location = new Point(6, 146);
groupBox4.Name = "groupBox4";
groupBox4.Size = new Size(276, 80);
groupBox4.TabIndex = 1;
groupBox4.TabStop = false;
groupBox4.Text = " Depuració de folder Expediente";
groupBox4.Visible = false;
//
// buttonCambiarFolderDepuracion
//
buttonCambiarFolderDepuracion.Location = new Point(195, 43);
buttonCambiarFolderDepuracion.Name = "buttonCambiarFolderDepuracion";
buttonCambiarFolderDepuracion.Size = new Size(75, 23);
buttonCambiarFolderDepuracion.TabIndex = 3;
buttonCambiarFolderDepuracion.Text = "Cambiar";
buttonCambiarFolderDepuracion.UseVisualStyleBackColor = true;
buttonCambiarFolderDepuracion.Click += buttonCambiarFolderDepuracion_Click;
//
// textBoxFolderExpedienteDepuracion
//
textBoxFolderExpedienteDepuracion.Location = new Point(6, 44);
textBoxFolderExpedienteDepuracion.Name = "textBoxFolderExpedienteDepuracion";
textBoxFolderExpedienteDepuracion.Size = new Size(187, 22);
textBoxFolderExpedienteDepuracion.TabIndex = 3;
//
// checkBoxDepurarFolderExpediente
//
checkBoxDepurarFolderExpediente.AutoSize = true;
checkBoxDepurarFolderExpediente.Font = new Font("Century Gothic", 6.75F, FontStyle.Regular, GraphicsUnit.Point, 0);
checkBoxDepurarFolderExpediente.Location = new Point(6, 21);
checkBoxDepurarFolderExpediente.Name = "checkBoxDepurarFolderExpediente";
checkBoxDepurarFolderExpediente.Size = new Size(257, 17);
checkBoxDepurarFolderExpediente.TabIndex = 0;
checkBoxDepurarFolderExpediente.Text = " Al subir folder de Expediente mover a otra carpeta.";
checkBoxDepurarFolderExpediente.UseVisualStyleBackColor = true;
//
// groupBox3
//
groupBox3.Controls.Add(buttonCambiarFolderExpediente);
groupBox3.Controls.Add(textBoxFolderExpediente);
groupBox3.Controls.Add(label1);
groupBox3.Location = new Point(6, 7);
groupBox3.Name = "groupBox3";
groupBox3.Size = new Size(276, 136);
groupBox3.TabIndex = 0;
groupBox3.TabStop = false;
groupBox3.Text = "Ubicación de folder Expediente";
//
// buttonCambiarFolderExpediente
//
buttonCambiarFolderExpediente.Location = new Point(197, 104);
buttonCambiarFolderExpediente.Name = "buttonCambiarFolderExpediente";
buttonCambiarFolderExpediente.Size = new Size(75, 23);
buttonCambiarFolderExpediente.TabIndex = 2;
buttonCambiarFolderExpediente.Text = "Cambiar";
buttonCambiarFolderExpediente.UseVisualStyleBackColor = true;
buttonCambiarFolderExpediente.Click += buttonCambiarFolderExpediente_Click;
//
// textBoxFolderExpediente
//
textBoxFolderExpediente.Location = new Point(6, 104);
textBoxFolderExpediente.Name = "textBoxFolderExpediente";
textBoxFolderExpediente.Size = new Size(187, 22);
textBoxFolderExpediente.TabIndex = 1;
textBoxFolderExpediente.TextChanged += textBox1_TextChanged;
//
// label1
//
label1.Font = new Font("Century Gothic", 8.25F, FontStyle.Regular, GraphicsUnit.Point, 0);
label1.Location = new Point(6, 20);
label1.Name = "label1";
label1.Size = new Size(264, 87);
label1.TabIndex = 0;
label1.Text = "Elija donde se encontrará su Expediente ubicado en su computadora. Todos los archivos de Expediente deberán encontrarse en este folder para ser subido a la plataforma web.";
//
// tabPage1
//
tabPage1.Controls.Add(label6);
tabPage1.Controls.Add(txtDiminioEFC);
tabPage1.Controls.Add(groupBox5);
tabPage1.Location = new Point(4, 26);
tabPage1.Name = "tabPage1";
tabPage1.Padding = new Padding(3);
tabPage1.Size = new Size(288, 252);
tabPage1.TabIndex = 2;
tabPage1.Text = "Avanzados";
tabPage1.UseVisualStyleBackColor = true;
//
// label6
//
label6.AutoSize = true;
label6.Location = new Point(6, 93);
label6.Name = "label6";
label6.Size = new Size(84, 17);
label6.TabIndex = 15;
label6.Text = "Dominio EFC:";
//
// txtDiminioEFC
//
txtDiminioEFC.Location = new Point(6, 113);
txtDiminioEFC.Name = "txtDiminioEFC";
txtDiminioEFC.Size = new Size(276, 22);
txtDiminioEFC.TabIndex = 2;
//
// groupBox5
//
groupBox5.Controls.Add(checkBoxExpedienteLogistico);
groupBox5.Controls.Add(checkBoxPedimentosWinsaai);
groupBox5.Location = new Point(6, 6);
groupBox5.Name = "groupBox5";
groupBox5.Size = new Size(276, 84);
groupBox5.TabIndex = 0;
groupBox5.TabStop = false;
groupBox5.Text = " Estructura de archivos";
//
// checkBoxExpedienteLogistico
//
checkBoxExpedienteLogistico.AutoSize = true;
checkBoxExpedienteLogistico.Location = new Point(13, 44);
checkBoxExpedienteLogistico.Name = "checkBoxExpedienteLogistico";
checkBoxExpedienteLogistico.Size = new Size(151, 21);
checkBoxExpedienteLogistico.TabIndex = 1;
checkBoxExpedienteLogistico.Text = "Expediente Logístico";
checkBoxExpedienteLogistico.UseVisualStyleBackColor = true;
//
// checkBoxPedimentosWinsaai
//
checkBoxPedimentosWinsaai.AutoSize = true;
checkBoxPedimentosWinsaai.Location = new Point(13, 21);
checkBoxPedimentosWinsaai.Name = "checkBoxPedimentosWinsaai";
checkBoxPedimentosWinsaai.Size = new Size(154, 21);
checkBoxPedimentosWinsaai.TabIndex = 0;
checkBoxPedimentosWinsaai.Text = " Pedimentos WinSAAI";
checkBoxPedimentosWinsaai.UseVisualStyleBackColor = true;
//
// tabPage3
//
tabPage3.Controls.Add(checkBoxModoPasivoFTP);
tabPage3.Controls.Add(label5);
tabPage3.Controls.Add(label4);
tabPage3.Controls.Add(label3);
tabPage3.Controls.Add(label2);
tabPage3.Controls.Add(textBoxPuertoFTP);
tabPage3.Controls.Add(textBoxUsuarioFTP);
tabPage3.Controls.Add(textBoxServidorFTP);
tabPage3.Controls.Add(textBoxPasswordFTP);
tabPage3.Location = new Point(4, 24);
tabPage3.Name = "tabPage3";
tabPage3.Padding = new Padding(3);
tabPage3.Size = new Size(288, 254);
tabPage3.TabIndex = 3;
tabPage3.Text = "FTP";
tabPage3.UseVisualStyleBackColor = true;
//
// checkBoxModoPasivoFTP
//
checkBoxModoPasivoFTP.AutoSize = true;
checkBoxModoPasivoFTP.Location = new Point(89, 117);
checkBoxModoPasivoFTP.Name = "checkBoxModoPasivoFTP";
checkBoxModoPasivoFTP.Size = new Size(105, 21);
checkBoxModoPasivoFTP.TabIndex = 18;
checkBoxModoPasivoFTP.Text = "Modo pasivo";
checkBoxModoPasivoFTP.UseVisualStyleBackColor = true;
//
// label5
//
label5.AutoSize = true;
label5.Location = new Point(6, 91);
label5.Name = "label5";
label5.Size = new Size(53, 17);
label5.TabIndex = 17;
label5.Text = " Puerto:";
//
// label4
//
label4.AutoSize = true;
label4.Location = new Point(6, 62);
label4.Name = "label4";
label4.Size = new Size(83, 17);
label4.TabIndex = 16;
label4.Text = " Contraseña:";
//
// label3
//
label3.AutoSize = true;
label3.Location = new Point(6, 36);
label3.Name = "label3";
label3.Size = new Size(57, 17);
label3.TabIndex = 15;
label3.Text = " Usuario:";
//
// label2
//
label2.AutoSize = true;
label2.Location = new Point(6, 10);
label2.Name = "label2";
label2.Size = new Size(82, 17);
label2.TabIndex = 14;
label2.Text = "Servidor FTP:";
//
// textBoxPuertoFTP
//
textBoxPuertoFTP.Location = new Point(89, 89);
textBoxPuertoFTP.Name = "textBoxPuertoFTP";
textBoxPuertoFTP.Size = new Size(81, 22);
textBoxPuertoFTP.TabIndex = 13;
//
// textBoxUsuarioFTP
//
textBoxUsuarioFTP.Location = new Point(89, 33);
textBoxUsuarioFTP.Name = "textBoxUsuarioFTP";
textBoxUsuarioFTP.Size = new Size(193, 22);
textBoxUsuarioFTP.TabIndex = 11;
//
// textBoxServidorFTP
//
textBoxServidorFTP.Location = new Point(89, 7);
textBoxServidorFTP.Name = "textBoxServidorFTP";
textBoxServidorFTP.Size = new Size(193, 22);
textBoxServidorFTP.TabIndex = 10;
//
// textBoxPasswordFTP
//
textBoxPasswordFTP.Location = new Point(89, 61);
textBoxPasswordFTP.Name = "textBoxPasswordFTP";
textBoxPasswordFTP.Size = new Size(193, 22);
textBoxPasswordFTP.TabIndex = 12;
textBoxPasswordFTP.UseSystemPasswordChar = true;
//
// button4
//
button4.Location = new Point(139, 305);
button4.Name = "button4";
button4.Size = new Size(81, 28);
button4.TabIndex = 3;
button4.Text = " Guardar";
button4.UseVisualStyleBackColor = true;
button4.Click += button4_Click;
//
// button5
//
button5.Location = new Point(226, 305);
button5.Name = "button5";
button5.Size = new Size(78, 28);
button5.TabIndex = 4;
button5.Text = " Cancelar";
button5.UseVisualStyleBackColor = true;
button5.Click += button5_Click;
//
// FormConfiguracionExpediente
//
AutoScaleDimensions = new SizeF(7F, 17F);
AutoScaleMode = AutoScaleMode.Font;
BackColor = SystemColors.Control;
ClientSize = new Size(315, 342);
Controls.Add(button5);
Controls.Add(button4);
Controls.Add(tabControl1);
Font = new Font("Century Gothic", 9F, FontStyle.Regular, GraphicsUnit.Point, 0);
FormBorderStyle = FormBorderStyle.FixedDialog;
Icon = (Icon)resources.GetObject("$this.Icon");
MaximizeBox = false;
MinimizeBox = false;
Name = "FormConfiguracionExpediente";
StartPosition = FormStartPosition.CenterScreen;
Text = "Configuración Expediente";
Load += FormConfiguracionExpediente_Load;
Shown += FormConfiguracionExpediente_Shown;
tabControl1.ResumeLayout(false);
tabGeneral.ResumeLayout(false);
groupBox1.ResumeLayout(false);
groupBox1.PerformLayout();
groupBoxEspacio.ResumeLayout(false);
groupBoxEspacio.PerformLayout();
tabPage2.ResumeLayout(false);
groupBox4.ResumeLayout(false);
groupBox4.PerformLayout();
groupBox3.ResumeLayout(false);
groupBox3.PerformLayout();
tabPage1.ResumeLayout(false);
tabPage1.PerformLayout();
groupBox5.ResumeLayout(false);
groupBox5.PerformLayout();
tabPage3.ResumeLayout(false);
tabPage3.PerformLayout();
ResumeLayout(false);
}
#endregion
private TabControl tabControl1;
private TabPage tabGeneral;
private GroupBox groupBoxEspacio;
private TabPage tabPage2;
private GroupBox groupBox1;
private Button buttonCerrarSesion;
private Label labelUsuario;
private Label labelEspacioUsado;
private GroupBox groupBox3;
private Label label1;
private TabPage tabPage1;
private TextBox textBoxFolderExpediente;
private Button buttonCambiarFolderExpediente;
private GroupBox groupBox4;
private Button buttonCambiarFolderDepuracion;
private TextBox textBoxFolderExpedienteDepuracion;
private CheckBox checkBoxDepurarFolderExpediente;
private GroupBox groupBox5;
private CheckBox checkBoxExpedienteLogistico;
private CheckBox checkBoxPedimentosWinsaai;
private Button button4;
private Button button5;
private TabPage tabPage3;
private CheckBox checkBoxModoPasivoFTP;
private Label label5;
private Label label4;
private Label label3;
private Label label2;
private TextBox textBoxPuertoFTP;
private TextBox textBoxUsuarioFTP;
private TextBox textBoxServidorFTP;
private TextBox textBoxPasswordFTP;
private Label label6;
private TextBox txtDiminioEFC;
}
}

View File

@@ -0,0 +1,242 @@
using EFCDesk.Classes;
using Microsoft.VisualBasic.ApplicationServices;
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 System.Xml;
namespace EFCDesk.Forms
{
public partial class FormConfiguracionExpediente : Form
{
SQLiteHelper sqliteHelper = new SQLiteHelper(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "historico.db"));
public FormConfiguracionExpediente()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private string convertir(double size)
{
try
{
string[] unit = new string[] { "B", "KB", "MB", "GB", "TB", "PB" };
double i = Math.Floor(Math.Log(size, 1024));
double y = Math.Pow(1024, i);
double r = Math.Round(size / y);
return r.ToString() + " " + unit[Convert.ToInt32(i)];
}
catch (Exception e)
{
}
return "0" + " " + "KB";
}
//private void getCapacidad()
//{
// var config = ConfiguracionJSON.LoadFromJson();
// string crypUser = General.CodificarBase64(config.UsuarioExp);
// dynamic root = config.Consulta(config.DominioExp + "/api/getLicencia/" + crypUser);
// if (root is XmlElement)
// {
// XmlNodeList nodes = root.SelectNodes("/xml/item");
// if (root.InnerText != "")
// {
// foreach (XmlNode node in nodes)
// {
// double u = Convert.ToDouble(node["usado"].InnerText);
// double c = Convert.ToDouble(node["capacidad"].InnerText);
// int porcentaje = 0;
// if (c > 0)
// {
// porcentaje = Convert.ToInt32((u * 100) / c);
// }
// string usado = convertir(u);
// string capacidad = convertir(c);
// labelEspacioUsado.Text = porcentaje.ToString() + "% de " + capacidad + " usado";
// labelUsuario.Text = "Usuario: " + config.UsuarioExp;
// }
// }
// }
//}
private void FormConfiguracionExpediente_Load(object sender, EventArgs e)
{
Globales.configJson = ConfiguracionJSON.LoadFromJson();
labelUsuario.Text = "Usuario: " + Globales.configJson.UsuarioExp ?? "No definido";
TabPage? tabOculta;
tabOculta = tabControl1.TabPages["tabPage3"];
if (tabOculta != null)
{
tabControl1.TabPages.Remove(tabOculta);
}
var config = ConfiguracionExpediente.ObtenerDesdeBaseDeDatos(sqliteHelper);
textBoxFolderExpediente.Text = config.FolderParaGenerarExpediente;
if (config.DepurarExpediente)
{
checkBoxDepurarFolderExpediente.Checked = true;
}
textBoxFolderExpedienteDepuracion.Text = config.FolderParaDepurarExpediente;
if (config.UsarEstructuraPedimentosWinsaai)
{
checkBoxPedimentosWinsaai.Checked = true;
}
if (config.UsarExpedienteLogistico)
{
checkBoxExpedienteLogistico.Checked = true;
}
textBoxServidorFTP.Text = config.ServidorFTP;
textBoxUsuarioFTP.Text = config.UsuarioFTP;
textBoxPasswordFTP.Text = config.PasswordFTP;
textBoxPuertoFTP.Text = config.PuertoFTP.ToString();
if (config.ModoPasivoFTP)
{
checkBoxModoPasivoFTP.Checked = true;
}
// getCapacidad();
}
private void button4_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBoxFolderExpediente.Text))
{
MessageBox.Show("Favor de seleccionar una ruta para su expediente.");
return;
}
var config = new ConfiguracionExpediente();
var configJson = new ConfiguracionJSON();
configJson.FolderExpediente = textBoxFolderExpediente.Text;
config.FolderParaGenerarExpediente = textBoxFolderExpediente.Text;
if (checkBoxDepurarFolderExpediente.Checked)
{
config.DepurarExpediente = true;
}
config.FolderParaDepurarExpediente = textBoxFolderExpedienteDepuracion.Text;
if (checkBoxPedimentosWinsaai.Checked)
{
config.UsarEstructuraPedimentosWinsaai = true;
configJson.ExpWinsaai = 1;
Properties.Settings.Default.ExpWinsaai = 1;
Properties.Settings.Default.Save();
}
else
{
configJson.ExpWinsaai = 0;
Properties.Settings.Default.ExpWinsaai = 0;
Properties.Settings.Default.Save();
}
if (checkBoxExpedienteLogistico.Checked)
{
config.UsarExpedienteLogistico = true;
configJson.ExpWinsaai = 3;
Properties.Settings.Default.ExpLogistico = 3;
Properties.Settings.Default.Save();
}
else
{
Properties.Settings.Default.ExpLogistico = 0;
configJson.ExpWinsaai = 0;
Properties.Settings.Default.Save();
}
config.ServidorFTP = textBoxServidorFTP.Text;
config.UsuarioFTP = textBoxUsuarioFTP.Text;
config.PasswordFTP = textBoxPasswordFTP.Text;
if (int.TryParse(textBoxPuertoFTP.Text, out int numero))
{
config.PuertoFTP = numero;
}
config.ModoPasivoFTP = checkBoxModoPasivoFTP.Checked;
config.GuardarEnBaseDeDatos(sqliteHelper);
Properties.Settings.Default.urlEFC = txtDiminioEFC.Text;
Properties.Settings.Default.Save();
configJson.DominioExp = txtDiminioEFC.Text.Trim();
configJson.SaveToJson();
Application.Restart();
}
private void buttonCambiarFolderExpediente_Click(object sender, EventArgs e)
{
using (var fbd = new FolderBrowserDialog())
{
DialogResult result = fbd.ShowDialog();
if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath))
{
textBoxFolderExpediente.Text = fbd.SelectedPath.ToString();
}
}
}
private void buttonCambiarFolderDepuracion_Click(object sender, EventArgs e)
{
using (var fbd = new FolderBrowserDialog())
{
DialogResult result = fbd.ShowDialog();
if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath))
{
textBoxFolderExpedienteDepuracion.Text = fbd.SelectedPath.ToString();
}
}
}
private void textBoxServidorFTP_TextChanged(object sender, EventArgs e)
{
}
private void label4_Click(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
SecureDataHandler.DeleteData();
Application.Restart();
}
private void button5_Click(object sender, EventArgs e)
{
this.Close();
}
private void FormConfiguracionExpediente_Shown(object sender, EventArgs e)
{
var configJson = new ConfiguracionJSON();
configJson = ConfiguracionJSON.LoadFromJson();
string? urlEFC = configJson.DominioExp;
txtDiminioEFC.Text = urlEFC;
}
}
}

View File

@@ -0,0 +1,377 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAMAEBAAAAEAIABoBAAANgAAACAgAAABACAAqBAAAJ4EAAAwMAAAAQAgAKglAABGFQAAKAAAABAA
AAAgAAAAAQAgAAAAAAAABAAAIy4AACMuAAAAAAAAAAAAAAAAAAAAAAAAlpWVALW0swdWV1pIMTI0pycl
I+MoJBz7KCQd+ygmI+M0NDanXF1fSL+9vAefnp4AAAAAAAAAAAD///8AV1dXAH59fhg1NjeSKiMW7llA
EP+MYhT/o3IX/6JyF/+OZyP/XEUf/yskF+46Oz2RiIeHGGJhYQD///8AbGpqAIKBgRguLi6xQTAP/6d1
GP/Qkh7/1JQe/9OUHv/Ynjj/5LJo/9mhRf+lcxb/QjAQ/zQ0NLCOjY0Yd3Z1APf18wY3ODmSQjAQ/7yE
G//TlB7/0JIe/9CSHv/Qkh//3alX/+S0dP/frF7/1Zcm/7uDGv9CMRH/Pz9Bkf///wZdXWBKLCUY7ad1
GP/TlB7/0JIe/9CSHv/Qkh7/0JIe/9mhRf/js3H/47Nx/9ulTf/TlSD/pnQX/y8oG+1oaWtINzg6qFtB
Ef/Qkh7/0JIe/9CSHv/Qkh3/0JEd/9CRHP/RlCL/3KdS/+Ozcf/ism7/1548/9CSHf9bQRL/P0BCpiwq
KOSNYxX/05Qe/9CSHf/Qkh//05cq/9WbNP/UmjL/0ZUl/9OXKv/frWH/5LRz/9+sYP/VliT/i2IU/zIx
LuItKCH7o3MX/9KTHv/SlSb/26VO/+Gwaf/js3D/361k/92pWv/eq17/4bBq/+Kxbf/bplD/05Uh/6Jy
F/8yLib6Lioj+6Z3Jv/Ynz//3atf/+S3e//dq2D/26ZW/9mjT//YoEn/2KFL/9igSv/WnkP/1Jk2/9WZ
M/+kdib/My8o+jAuK+SRazD/4K1h/+Gzc//jtnn/1p1E/9OZOv/Umjv/1Jo7/9SaO//Umjv/1Jo8/9Sa
PP/YnT7/jmgp/zY0MuM+P0CpYk0t/9+tZv/jtXf/5bh//96tZf/bqFr/1p5F/9SaO//Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/15GH/9HSEmna2tsSjQvKO64lGb/6LyC/+W5gP/luYH/5bmA/+Cva//Wnkb/1Jo7/9Sa
PP/Umjz/15w9/6l7L/81LiTtdnZ4Sf///wZFRUaTTD8v/9CodP/ovIL/5bmA/+W5gP/luYH/4bJw/9ad
Q//Umjz/15w9/7+LNv9HNxz/TU1Okv///waDgoEAmpmZGT4+PbJNQC//uJVn/+W5gP/pvIL/6LuC/+i7
gP/cplH/1Jo7/6l7L/9INx3/RENDsaSjoxiNi4sA////AHNycgCamZgZSUlKkzcyK+9mUzv/m31X/7SR
ZP+0kWP/k284/15GH/83MCXvT09QkqKhoRh9e3sA////AAAAAAAAAAAAtrW0ANTS0Qdzc3RKSEhJqTk3
NuU5NTH8OTYy/Do4N+VLS02oeXl7SdrY1we9u7sAAAAAAAAAAADgBwAAwAMAAIABAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAMADAADgBwAAKAAAACAAAABAAAAAAQAgAAAA
AAAAEAAAIy4AACMuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7ezrAP//
/wS1s7IphYODa2VkY6xPTk3YQEBA8To5Ofw6Ojn8QkFB8VFQUNhoZ2erioiHarq4tyj///8E8O/uAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+HgAP//
/wOhoJ83Z2Zllzk5ON8YGBn7BQYI/wAAAf8BAQD/AwIA/wMCAP8BAQD/AAAB/wYHCf8aGhv7Pj093m5t
bJapp6Y1////A+fl5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AIWD
ggC+vLsacXBviTMyMuoJCQr/AgEA/xwTBP9IMwz/cE8S/4phFv+WaRf/lmkX/4phFv9vTxL/RzIL/xsU
CP8CAQH/CwsM/zk4OOl6eXiIxsTDGZSSkQD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPTz
8gAAAAAApKKhNlNSUcITExP+AgEA/y8hCP9/WhT/uIEc/86RHv/TlB//1JQe/9OUHv/TlB7/05Qe/9SW
JP/Wn0P/wpRO/35aGP8tIAf/AgEA/xYWF/5cW1vBrqyrNAAAAAD29fQAAAAAAAAAAAAAAAAAAAAAAAAA
AADw7+4AAAAAAJ2bmkFEQ0PZBgYH/xMOA/9xUBL/wYcd/9OUH//Skx7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hf/TmC7/3apa/+Ozcv/grF3/1JUh/8CHHP9vThL/Eg0D/wkJCf9NTUzYp6alQB4dHQDx8O8AAAAAAAAA
AAAAAAAA+/r5AHh2dQCmpKQ2RURD2QQEBP8kGQb/mm0Y/9GTHv/Rkx7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh3/0pYo/9+sYf/jtHL/47Ny/+CuZf/Slif/0ZMd/9GTHv+Yaxj/IhgG/wYGBv9PTk7XsbCvNIuJ
iQD49/YAAAAAAAAAAACwrq0AxsTDG1VUVMIGBwf/JBoG/6d1Gv/TlB7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CRHf/YoEH/47Ny/+Ozcf/js3H/47Nw/9igQf/Qkh3/0JIe/9OUHv+kdBn/IhgG/wkK
Cv9hYGDA0M7MGbm3twAAAAAA0c7NAP///wJ2dHSKFBQV/xMNA/+bbRj/05Qe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JId/9mjSf/jtHL/47Nx/+Ozcf/js3L/4K9m/9OYLv/Qkh3/0JIe/9OU
Hv+Yaxj/EgwC/xoaG/+DgoGI////As7MywCZl5YAqKalODc2NuoBAQD/clET/9GTHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/1Zs1/+Kxbf/js3H/47Nx/+Ozcf/js3L/3apa/9GU
JP/Qkh3/0JIe/9GTHv9vTxL/AQEA/0FBQei0srE2qKalAP///wNubWyYCwsM/zAiCP/BiB3/0ZMe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/QkyD/26VQ/+Ozcv/js3H/47Nx/+Oz
cf/js3H/2qNK/9CSH//Qkh7/0ZMe/8CHHf8uIAf/DxAR/3x7epX///8CvLq5Kz8/Pt8BAQD/gFsU/9OU
H//Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/SlSb/3qpb/+Oz
cv/js3H/47Nx/+Ozcf/isW3/1pw5/9CSHf/Qkh7/05Qf/35ZFP8BAQD/S0tK3cjGxSmOjIxuHBwd+x0U
BP+5ghz/0pMe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hf/Tlyr/3qte/+Ozcv/js3H/47Nx/+Ozcv/grWP/05cq/9CSHf/Skx7/t4Ec/xsSA/8kJCX7nJuaam9t
ba4HCAr/SjQM/86RHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0JId/9CRHf/Qkh3/0JEd/9CR
Hf/Qkh3/0JIe/9CSHf/Tlyv/36xh/+Ozcv/js3H/47Nx/+Ozcv/bpVD/0JIf/9CSHv/OkR7/RzIM/wwN
Dv99fHurWFdX2gABAv9yURL/05Qf/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0JIe/9KVJv/VmzX/2KBB/9mi
R//YoUX/154+/9OYLf/Qkh//0JIf/9CSHv/Zokf/47Ny/+Ozcf/js3H/47Ny/9+tYf/RlCP/0JIe/9OU
H/9wTxL/AgME/2ZlZdhKSUnzAgEA/4xjFv/UlB7/0JIe/9CSHv/Qkh7/0JId/9KVJ//Zokf/361j/+Ky
bv/js3L/47Ny/+Ozcv/frWP/26VP/9ulTv/cqFX/3alY/+CuZv/js3H/47Nx/+Ozcf/jtHP/3ahX/9CT
IP/Qkh7/1JQe/4phFv8CAgH/V1ZW8UNCQv4EAwD/mGsX/9OUHv/Qkh3/0JId/9CSHf/UmTH/36xf/+Oz
cf/js3L/47Ny/+Ozcv/js3L/4bFr/9ynVf/isWz/47Ny/+O0c//jtHP/47Ry/+Ozcf/jsnD/4rFs/92q
Wv/TmC7/0JId/9CSHf/TlB7/lmkX/wQDAP9QT0/8REND/gQDAP+ZbR7/1Zcp/9KVKf/Sliz/1Jo2/+Gw
a//kt3r/5LZ5/+O1d//gr2n/365n/+KycP/erWT/2qVV/9qlVP/Zo07/2qVT/9umVv/bpVX/2qRQ/9ih
SP/WnT7/05cx/9KVK//SlSv/0pUq/9WXKv+Xax7/BAMA/1FQUPxNTEzzAgEB/5BpKv/XnDz/1p5F/96s
ZP/dqmH/5bmA/+W5gP/luYD/3Kpf/9WbP//Umz7/1p1E/9WdQ//Umjz/1Jo7/9SaO//Umjv/1Jo7/9Sa
O//Umjv/1Jo7/9SaO//Umjz/1Jo8/9SaPP/Umjz/2J09/41mKf8CAgH/WllZ8V5dXNsBAgP/dlYj/9ed
Pf/drGP/4bJx/96tZv/luYH/5bmB/+K0dv/WnUT/1Jo7/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/XnD3/clMh/wMEBf9sa2rYd3Z1rwkK
DP9MOBf/1Z1E/+KzdP/ZpFL/3Kle/+W5gf/luYH/4rNz/9WcQP/Umjv/1Jo8/9SaO//Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9KZPP9JNRX/Dw8R/4WE
g6uZl5ZvIiIi/B4VB//Ck0v/4rJu/9WcQf/frmn/5bmB/+W5gP/kuH7/3apf/9adQ//Umz3/16BJ/9ad
Q//Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Wmzz/u4g2/xwU
B/8rKyv7paSja8bDwixKSkngAgEA/4ttRP/nuHv/365p/+S3ff/luYD/5bmA/+W5gP/luYD/4rR1/+Cw
bf/jtXj/2aRS/9SZOv/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9ec
Pf+BXib/AgIB/1dWVd7OzMsp////A359fJkPEBD/Niwf/9WteP/nuoL/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYH/5bqB/+W5gf/hsXD/16BJ/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Vmzz/xI84/y8iDv8VFhf/i4mIl////wKqqKcAtrSzOkVFROoDAgH/f2dI/+e6gf/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/jtXj/2qZX/9SaPf/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9WbPf9zVCL/AwIB/1FQT+m/vbw3tLKxAMzKyQD///8Di4mIjB4eHv8WEgz/rIxh/+i8
gv/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/kuH3/26dZ/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/XnD3/nXIu/xMNBf8lJSX/lpSUif///wLIxsUAAAAAAL27ugDRz84cbGtqxAwM
Df8qIhj/updp/+i8gv/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/jtnr/16BL/9Sa
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
Lf0DAwP/AAAA/wAAAP8OCgP/Py0M/31ZFf+tehv/xose/9CSHv/TlB//1JUf/9SVH//UlR//1JUf/9OU
H//Qkh7/xYoc/6x6H/+BYjD/PzAY/wwJAv8AAAD/AAAA/wUFBf83Njb8iIaGvcbDwjj///8A5+XkAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADc2tkA////BLCu
rV5gX17jEhIR/wAAAP8AAAD/DQoD/1A5Dv+gcRr/yo4e/9OUH//SlB7/0ZIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHf/Qkh//1Zsz/9+rWv/ltG7/zpc2/51vGP9NNw7/DAkD/wAAAP8AAAD/GBcX/2xr
a+G4trVb////A9jW1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbU
0gD///4FqKalck1MTPEGBgb/AAAA/wICAf81Jgr/mWwZ/82QHv/TlB7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JId/9GUJP/ao0r/4rFr/+O0cv/ism3/1Zox/9OUHf/MkB7/lmoY/zMk
Cv8CAQH/AAAA/woKCv9bWlnwsbCvbvf08wXS0M8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA1NLRAP///wSopqVySEdG9AMDA/8AAAD/CgcC/2JFEf/Ahx3/05Qe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0pUm/92pV//js3H/47Nx/+Ozcf/ism//1Zw3/9CR
Hf/Qkh7/05Qe/7+GHf9eQxH/CQYC/wAAAP8GBgX/VVRU87KxsG7///8Dz8zLAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADS0M8AAAAAALGvrl9PTk3xAwMD/wAAAP8RDAT/floV/86RHv/Rkx7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh//26VO/+Ozcv/js3H/47Nx/+Oz
cf/js3L/2aNK/9CSHf/Qkh7/0JIe/9KTHv/NkB7/e1cV/w8LBP8AAAD/BgYG/11cXPC6uLdbERAQAMrI
xwAAAAAAAAAAAAAAAAAAAAAAAAAAAMzKyQCurKsAwb++PGJhYeMHBwf/AAAA/xEMBP+IYRf/0ZMf/9GS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/Tlyv/4a9p/+Oz
cv/js3H/47Nx/+Ozcf/js3L/361j/9KWJ//Qkh3/0JIe/9CSHv/Rkh7/0JIe/4ReFv8PCwT/AAAA/wsL
C/9ycXDhyMXEObu5uADCwL8AAAAAAAAAAAAAAAAAAAAAAMXDwgDb2dcXgX9+wBMTE/8AAAD/CgcC/39a
Ff/Rkx//0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CR
Hf/VnDj/47Jw/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Nx/9qkS//Qkh//0JIe/9CSHv/Qkh7/0JIe/9CS
Hv97VxX/CQYC/wAAAP8cHBv/kI+OvNrY1xXFw8IAAAAAAAAAAAAAAAAAxcPCAP///wCko6J+MjEx/gAA
AP8BAQH/Y0YR/86RHv/Rkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CRHf/VnDf/4rJv/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Nx/+Kxbf/WnTr/0JId/9CS
Hv/Qkh7/0JIe/9GSHv/NkB7/X0MR/wEBAf8AAAD/QD8//bGvrnoAAAAAwb++AAAAAAAAAAAAvry7AMrI
xy9jYmLjAwMD/wAAAP83Jwv/wYgd/9GTHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/Slif/4K5k/+Ozcv/js3H/47Nx/+Ozcf/js3H/47Nx/+Oz
cv/grmX/05cs/9CSHf/Qkh7/0JIe/9CSHv/Skx7/v4Yd/zQlCv8AAAD/BwcH/3RzcuDPzcsswb++AAAA
AADBv74A////ApuZmJIjIiL/AAAA/w4KA/+abRn/05Qe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/2KFE/+Ozcf/js3H/47Nx/+Oz
cf/js3H/47Nx/+Ozcf/js3L/3alY/9GUI//Qkh7/0JIe/9CSHv/Qkh7/05Qe/5dqGP8NCQP/AAAA/y8v
Lv+pp6aN////AcC+vQDAvr0Az83MKWRjYuICAgL/AAAA/1I6D//OkB7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0ZQj/92p
WP/js3L/47Nx/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Nx/9miR//Qkh7/0JIe/9CSHv/Qkh7/0JIe/82Q
Hv9ONw7/AAAA/wYGBv92dHTg09DPJsG/vgB/fn0AqaemdS8uLv8AAAD/DwsD/6JyGv/TlB7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JId/9OXK//frWL/47Ny/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Nx/+KxbP/Vmzb/0JId/9CS
Hv/Qkh7/0JIe/9OUHv+ecBn/DQoD/wAAAP89PTz/tbSzcKOhoAD39fMOgYB/vQwMDP8AAAD/QS8M/8uP
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/UmTH/4K5m/+Ozcv/js3H/47Nx/+Ozcf/js3H/47Nx/+Oz
cv/frGH/0pYo/9CSHf/Qkh7/0JIe/9CSHv/Kjh7/PiwM/wAAAP8UFBT/kpGQuvLv7gzLycg4WVhY6gAA
AP8BAQH/gFsV/9OUH//Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/1Zo0/+CvZ//js3L/47Nx/+Oz
cf/js3H/47Nx/+Ozcf/js3L/26ZR/9CTIP/Qkh7/0JIe/9CSHv/TlB//fFgV/wAAAP8BAQH/bGtq6NHO
zTSzsbBxNzY2/AAAAP8UDgT/r3sb/9KTHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JId/9Wb
Nf/hr2j/47Ny/+Ozcf/js3H/47Nx/+Ozcf/js3H/4rJv/9adPP/Qkh3/0JIe/9CSHv/SlB7/rHkb/xIN
BP8AAAD/R0ZG/L68u2ycm5qmHh4d/wAAAP8zJAr/x4we/9GSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JId/9CRHf/Qkh7/0JIf/9CTIP/Qkh//0JIe/9CSHf/QkR3/0JId/9CS
Hv/Qkh7/0JIe/9CSHf/Xnz//47Jw/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Ry/92pWP/QkyD/0JIe/9CS
Hv/Rkh7/xYse/y8iCf8AAAD/Kioq/6upqKGJiIfODw4O/wAAAP9TOw//0JIf/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/RkyL/1Jkw/9efQf/apU7/3KhW/9ypWv/cqFj/26ZS/9mi
R//WnDn/0ZUl/9CRHP/Qkh3/0JId/9CRHf/UmTH/4rFt/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Ny/96r
X//RkyL/0JIe/9CSHv/Qkh7/0JIe/084Dv8AAAD/GBcX/5qYmMp6eXjpBgYG/wAAAP9tTRP/05Qf/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0ZQk/9efPv/eqlz/4rFs/+Ozcf/jtHL/47Ry/+O0
cv/jtHL/47Rz/+KxbP/bplL/1p4+/9igQv/Zo0n/2qRN/9ulT//eqlz/47Nx/+Ozcf/js3H/47Nx/+Oz
cf/js3H/47Rz/9yoVv/Qkh//0JIe/9CSHv/Qkh7/05Qf/2lLEv8AAAD/DQ0M/4yKiuVvbm74AgIC/wAA
AP9/WhX/1JUf/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/VmjT/3qtd/+OzcP/js3L/47Nx/+Oz
cf/js3H/47Nx/+Ozcf/js3L/4K9n/9ihRf/cqFf/4rFs/+Ozcv/js3L/47Ry/+O0cv/js3L/47Nx/+Oz
cf/js3H/47Nx/+Ozcf/jtHL/4bFr/9WbNv/Qkh3/0JIe/9CSHv/Qkh7/1JUf/3tXFf8AAAD/BwcH/4KA
gPRraWn/AQEB/wEBAf+IYBb/1JQe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0JIf/9efP//hsGr/47Ny/+Oz
cf/js3H/47Nx/+Ozcf/js3H/47Nx/+Ozcf/js3L/26dT/92qW//ktHP/47Ny/+Ozcv/js3L/47Ny/+Oz
cv/js3L/47Ny/+Ozcv/js3L/47Nw/+KxbP/eq13/1Zw4/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/1JQe/4Nd
Ff8AAAD/BQUF/359fPxramr/AQEB/wEBAf+IYBj/1JUi/9GTIv/RkyP/0ZMj/9GTI//RkyT/16BC/+Kz
cf/ktXb/5LV1/+S1dv/ktXb/5LV2/+Kzc//is3L/47R1/+S2d//jtHX/2qVS/96tZ//dq2H/26ZV/9um
Vf/cqVz/3qtg/96rYf/eq2D/3ald/9ynV//apE//2KBF/9WbOf/Sliv/0ZQk/9GUJf/RlCT/0ZMj/9GT
I//RkyL/1JYi/4NdF/8AAAD/BQUF/399ffxycXH4AwMD/wAAAP+CXiT/15w5/9SZOf/UmTn/1Zs+/9eg
Sv/VnUL/4bJy/+W5gf/luYD/5bmA/+W5gP/kt3z/3Klf/9egS//XoEn/2aNQ/9yqX//cqV//1ZxB/9Wc
Qf/Umj3/1Jo7/9SaO//Umjz/1Jo9/9SaPf/Umj3/1Jo8/9SaO//UmTr/1Jk6/9SZOv/Umjv/1Jo7/9Sa
O//Umjr/1Jk6/9SZOf/UmTn/15w5/31bI/8AAAD/CAgI/4SDgvV/fX3pCAgI/wAAAP9xUyP/15w9/9Sa
PP/Umz7/3ati/+O1eP/aplj/5Ld8/+W5gP/luYD/5bmA/+W5gP/dq2H/1Jo8/9SaO//Umjv/1Jo7/9Sa
O//Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/15w9/2xPIP8AAAD/Dg4O/5COjuWQjo3PERER/wAA
AP9WPxv/1Zs9/9SaO//Zo1D/5Lh+/+Gycv/bp1r/5bl//+W5gP/luYD/5bmA/+O1eP/Wn0f/1Jo7/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/1E7Gf8AAAD/Gxsb/5+e
ncqkoqGnIyMj/wAAAP81JxH/y5Q7/9WbPv/fr2r/5bmA/9qmV//ZpFP/5bl//+W5gP/luYD/5bmB/+Cw
bf/Umz7/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Vmjz/yZM6/zEk
D/8AAAD/MTAw/7GvrqK5t7ZyQD8//QAAAP8VEAj/s4I0/9mgR//jtnr/4LBt/9WbP//Yo1D/5Lh//+W5
gP/luYD/5bmB/+Gycf/Vm0D/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/WnD3/sIAz/xMOBv8AAAD/UVBP/MLAv23OzMs5ZmVk6wAAAP8CAQH/hGEn/92nVf/kt33/2KNQ/9OZ
Of/bp1r/5bmA/+W5gP/luYD/5bmA/+S4fv/cqV3/1Zs//9SZO//Umjv/1Jk7/9WdQv/VnED/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/XnD3/gF0m/wEAAP8DAwP/eHZ26dHOzTXs6egPj46NvxISEv8AAAD/RDIV/9em
X//luH7/2KNQ/9aeR//hsnL/5bmB/+W5gP/luYD/5bmA/+W5gP/luH//369r/9mkUv/Xn0j/2KJP/+Cw
bf/Zo1H/1Jo7/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Oljv/QC8U/wAAAP8cGxv/n52cu+Ti4A2amJcAtLKxdjw7
O/8AAAD/EAwG/7GNW//ovIL/47V4/+K1d//luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmB/+W4
f//kt3v/5Lh+/+W5gf/bqFz/1Jk7/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9ecPf+jdzD/DgoF/wAAAP9MS0v/vbu6crKw
rwDBv74A0c7NK3d1deMGBgb/AAAA/11LNf/jt3//5bmB/+W5gf/luYD/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/itHb/2KFM/9SaO//Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9GYPP9RPBn/AAAA/wsL
C/+HhoXh0c/OKMG/vgDAvr0A////AqupqZQxMTD/AAAA/xEOCv+si2H/6LyC/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYH/47V5/9unWv/VnED/1Jo7/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/15w9/5tx
Lv8OCgX/AAAA/0A/P/+1tLOQ////AcC+vQDAvr0AwsC/AM3LyjF6eXjkCQkJ/wAAAP8/MyT/1q14/+a6
gf/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmB/+W5
gP/fr2r/1p5F/9SaO//Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Vmzz/xI44/zcoEf8AAAD/Dw8P/4qIh+LOzMsuwsC/AAAAAAAAAAAAwb++AP///wG1s7KBRkZF/gAA
AP8CAgH/cFtA/+O4f//muYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYH/4LFv/9aeRf/Umjv/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9WaPP/SmDz/Y0ke/wEBAf8AAAD/VlVU/r27unz///8AwL69AAAAAAAAAAAAAAAAAMTC
wQDU0tEYmZiXwiIiIf8AAAD/DAoH/5B1Uv/nuoH/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmB/9+uav/Vmz//1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9WbPf+AXif/CgcE/wAAAP8tLSz/paSjv9HPzhbDwcAAAAAAAAAA
AAAAAAAAAAAAAMC+vQC/vbwAycbFP39+feUQEBD/AAAA/xURDf+bflj/57qB/+a5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W4f//apVX/1Jo7/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Vmjz/1Zs9/4plKf8RDQb/AAAA/xgXF/+NjIviysjHO8PB
wADAvr0AAAAAAAAAAAAAAAAAAAAAAAAAAADEwsEA////AMC+vWJtbGvyCgoK/wAAAP8VEQ3/kXZT/+S4
gP/muoH/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W6
gf/fr2r/1Jo9/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9WbPP/SmDz/gV4n/xENBv8AAAD/Dw8P/3t6
efHEwsFefnx8AMG/vgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx8XEAOHf3QS7ubh2aGZm9goK
Cv8AAAD/DQsI/3JdQf/WrXj/6LyC/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gf/hsnL/1ZtA/9SaPP/Umjz/1Jo8/9SaPP/Umjz/15w9/8SPOP9jSR7/CgcE/wAA
AP8PDw//dXRz9MC+vXLW1NMDxMLBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMrH
xgDa2NYGvLq5dnBvbvISERH/AAAA/wMDAv9ANCX/rYxi/+O3f//ou4L/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/hsnL/1ZxA/9SaPP/Umjz/1Jo8/9ecPf/RmDz/nHIu/zco
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
AAD/4AAAB/8AAP/4AAAf/wAA//8AAP//AAA=
</value>
</data>
</root>

465
Forms/FormConfiguracionJSON.Designer.cs generated Normal file
View File

@@ -0,0 +1,465 @@
namespace EFCDesk.Forms
{
partial class FormConfiguracionJSON
{
/// <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(FormConfiguracionJSON));
tabControl1 = new TabControl();
tabPage1 = new TabPage();
textBoxProxyGenericoPassword = new TextBox();
textBoxProxyGenericoUsuario = new TextBox();
textBoxProxyGenericoPuertoServidor = new TextBox();
textBoxProxyGenericoNombreServidor = new TextBox();
label5 = new Label();
label4 = new Label();
checkBoxProxyGenericoAuthProxy = new CheckBox();
label3 = new Label();
label2 = new Label();
radioProxyGenericoHTTP = new RadioButton();
radioProxyGenericoNinguno = new RadioButton();
label1 = new Label();
tabPage2 = new TabPage();
textBoxProxyFTPPassword = new TextBox();
textBoxProxyFTPUsuario = new TextBox();
textBoxProxyFTPPuerto = new TextBox();
textBoxProxyFTPNombreServidor = new TextBox();
label6 = new Label();
label7 = new Label();
checkBoxProxyFTPAuth = new CheckBox();
label8 = new Label();
label9 = new Label();
radioButtonProxyFTP = new RadioButton();
radioButtonProxyFTPNinguno = new RadioButton();
label10 = new Label();
tabPage3 = new TabPage();
label12 = new Label();
textBoxDominio = new TextBox();
label11 = new Label();
buttonGuardar = new Button();
buttonCancelar = new Button();
tabControl1.SuspendLayout();
tabPage1.SuspendLayout();
tabPage2.SuspendLayout();
tabPage3.SuspendLayout();
SuspendLayout();
//
// tabControl1
//
tabControl1.Controls.Add(tabPage1);
tabControl1.Controls.Add(tabPage2);
tabControl1.Controls.Add(tabPage3);
tabControl1.Location = new Point(6, 11);
tabControl1.Name = "tabControl1";
tabControl1.SelectedIndex = 0;
tabControl1.Size = new Size(343, 307);
tabControl1.TabIndex = 0;
//
// tabPage1
//
tabPage1.Controls.Add(textBoxProxyGenericoPassword);
tabPage1.Controls.Add(textBoxProxyGenericoUsuario);
tabPage1.Controls.Add(textBoxProxyGenericoPuertoServidor);
tabPage1.Controls.Add(textBoxProxyGenericoNombreServidor);
tabPage1.Controls.Add(label5);
tabPage1.Controls.Add(label4);
tabPage1.Controls.Add(checkBoxProxyGenericoAuthProxy);
tabPage1.Controls.Add(label3);
tabPage1.Controls.Add(label2);
tabPage1.Controls.Add(radioProxyGenericoHTTP);
tabPage1.Controls.Add(radioProxyGenericoNinguno);
tabPage1.Controls.Add(label1);
tabPage1.Location = new Point(4, 26);
tabPage1.Name = "tabPage1";
tabPage1.Padding = new Padding(3);
tabPage1.Size = new Size(335, 277);
tabPage1.TabIndex = 0;
tabPage1.Text = "Proxy Genérico";
tabPage1.UseVisualStyleBackColor = true;
//
// textBoxProxyGenericoPassword
//
textBoxProxyGenericoPassword.Location = new Point(95, 228);
textBoxProxyGenericoPassword.Name = "textBoxProxyGenericoPassword";
textBoxProxyGenericoPassword.Size = new Size(221, 22);
textBoxProxyGenericoPassword.TabIndex = 11;
//
// textBoxProxyGenericoUsuario
//
textBoxProxyGenericoUsuario.Location = new Point(95, 199);
textBoxProxyGenericoUsuario.Name = "textBoxProxyGenericoUsuario";
textBoxProxyGenericoUsuario.Size = new Size(221, 22);
textBoxProxyGenericoUsuario.TabIndex = 10;
//
// textBoxProxyGenericoPuertoServidor
//
textBoxProxyGenericoPuertoServidor.Location = new Point(123, 140);
textBoxProxyGenericoPuertoServidor.Name = "textBoxProxyGenericoPuertoServidor";
textBoxProxyGenericoPuertoServidor.Size = new Size(193, 22);
textBoxProxyGenericoPuertoServidor.TabIndex = 9;
//
// textBoxProxyGenericoNombreServidor
//
textBoxProxyGenericoNombreServidor.Location = new Point(11, 112);
textBoxProxyGenericoNombreServidor.Name = "textBoxProxyGenericoNombreServidor";
textBoxProxyGenericoNombreServidor.Size = new Size(305, 22);
textBoxProxyGenericoNombreServidor.TabIndex = 8;
//
// label5
//
label5.AutoSize = true;
label5.Location = new Point(6, 231);
label5.Name = "label5";
label5.Size = new Size(83, 17);
label5.TabIndex = 7;
label5.Text = " Contraseña:";
label5.Click += label5_Click;
//
// label4
//
label4.AutoSize = true;
label4.Location = new Point(6, 202);
label4.Name = "label4";
label4.Size = new Size(57, 17);
label4.TabIndex = 6;
label4.Text = " Usuario:";
//
// checkBoxProxyGenericoAuthProxy
//
checkBoxProxyGenericoAuthProxy.AutoSize = true;
checkBoxProxyGenericoAuthProxy.Location = new Point(11, 170);
checkBoxProxyGenericoAuthProxy.Name = "checkBoxProxyGenericoAuthProxy";
checkBoxProxyGenericoAuthProxy.Size = new Size(230, 21);
checkBoxProxyGenericoAuthProxy.TabIndex = 5;
checkBoxProxyGenericoAuthProxy.Text = " Utilizar Autentificación para Proxy";
checkBoxProxyGenericoAuthProxy.UseVisualStyleBackColor = true;
checkBoxProxyGenericoAuthProxy.CheckedChanged += checkBoxProxyGenericoAuthProxy_CheckedChanged;
//
// label3
//
label3.AutoSize = true;
label3.Location = new Point(8, 140);
label3.Name = "label3";
label3.Size = new Size(109, 17);
label3.TabIndex = 4;
label3.Text = " Puerto del Proxy:";
//
// label2
//
label2.AutoSize = true;
label2.Location = new Point(8, 92);
label2.Name = "label2";
label2.Size = new Size(171, 17);
label2.TabIndex = 3;
label2.Text = " Nombre del Servidor Proxy:";
//
// radioProxyGenericoHTTP
//
radioProxyGenericoHTTP.AutoSize = true;
radioProxyGenericoHTTP.Location = new Point(18, 56);
radioProxyGenericoHTTP.Name = "radioProxyGenericoHTTP";
radioProxyGenericoHTTP.Size = new Size(54, 21);
radioProxyGenericoHTTP.TabIndex = 2;
radioProxyGenericoHTTP.TabStop = true;
radioProxyGenericoHTTP.Text = " HTTP";
radioProxyGenericoHTTP.UseVisualStyleBackColor = true;
radioProxyGenericoHTTP.CheckedChanged += radioProxyGenericoHTTP_CheckedChanged;
//
// radioProxyGenericoNinguno
//
radioProxyGenericoNinguno.AutoSize = true;
radioProxyGenericoNinguno.Location = new Point(18, 35);
radioProxyGenericoNinguno.Name = "radioProxyGenericoNinguno";
radioProxyGenericoNinguno.Size = new Size(78, 21);
radioProxyGenericoNinguno.TabIndex = 1;
radioProxyGenericoNinguno.TabStop = true;
radioProxyGenericoNinguno.Text = " Ninguno";
radioProxyGenericoNinguno.UseVisualStyleBackColor = true;
radioProxyGenericoNinguno.CheckedChanged += radioProxyGenericoNinguno_CheckedChanged;
//
// label1
//
label1.AutoSize = true;
label1.Location = new Point(6, 15);
label1.Name = "label1";
label1.Size = new Size(146, 17);
label1.TabIndex = 0;
label1.Text = "Tipo de proxy genérico:";
//
// tabPage2
//
tabPage2.Controls.Add(textBoxProxyFTPPassword);
tabPage2.Controls.Add(textBoxProxyFTPUsuario);
tabPage2.Controls.Add(textBoxProxyFTPPuerto);
tabPage2.Controls.Add(textBoxProxyFTPNombreServidor);
tabPage2.Controls.Add(label6);
tabPage2.Controls.Add(label7);
tabPage2.Controls.Add(checkBoxProxyFTPAuth);
tabPage2.Controls.Add(label8);
tabPage2.Controls.Add(label9);
tabPage2.Controls.Add(radioButtonProxyFTP);
tabPage2.Controls.Add(radioButtonProxyFTPNinguno);
tabPage2.Controls.Add(label10);
tabPage2.Location = new Point(4, 26);
tabPage2.Name = "tabPage2";
tabPage2.Padding = new Padding(3);
tabPage2.Size = new Size(335, 277);
tabPage2.TabIndex = 1;
tabPage2.Text = "Proxy FTP";
tabPage2.UseVisualStyleBackColor = true;
//
// textBoxProxyFTPPassword
//
textBoxProxyFTPPassword.Location = new Point(96, 227);
textBoxProxyFTPPassword.Name = "textBoxProxyFTPPassword";
textBoxProxyFTPPassword.Size = new Size(221, 22);
textBoxProxyFTPPassword.TabIndex = 23;
//
// textBoxProxyFTPUsuario
//
textBoxProxyFTPUsuario.Location = new Point(96, 198);
textBoxProxyFTPUsuario.Name = "textBoxProxyFTPUsuario";
textBoxProxyFTPUsuario.Size = new Size(221, 22);
textBoxProxyFTPUsuario.TabIndex = 22;
//
// textBoxProxyFTPPuerto
//
textBoxProxyFTPPuerto.Location = new Point(124, 139);
textBoxProxyFTPPuerto.Name = "textBoxProxyFTPPuerto";
textBoxProxyFTPPuerto.Size = new Size(193, 22);
textBoxProxyFTPPuerto.TabIndex = 21;
//
// textBoxProxyFTPNombreServidor
//
textBoxProxyFTPNombreServidor.Location = new Point(12, 111);
textBoxProxyFTPNombreServidor.Name = "textBoxProxyFTPNombreServidor";
textBoxProxyFTPNombreServidor.Size = new Size(305, 22);
textBoxProxyFTPNombreServidor.TabIndex = 20;
//
// label6
//
label6.AutoSize = true;
label6.Location = new Point(7, 230);
label6.Name = "label6";
label6.Size = new Size(83, 17);
label6.TabIndex = 19;
label6.Text = " Contraseña:";
//
// label7
//
label7.AutoSize = true;
label7.Location = new Point(7, 201);
label7.Name = "label7";
label7.Size = new Size(57, 17);
label7.TabIndex = 18;
label7.Text = " Usuario:";
//
// checkBoxProxyFTPAuth
//
checkBoxProxyFTPAuth.AutoSize = true;
checkBoxProxyFTPAuth.Location = new Point(12, 169);
checkBoxProxyFTPAuth.Name = "checkBoxProxyFTPAuth";
checkBoxProxyFTPAuth.Size = new Size(230, 21);
checkBoxProxyFTPAuth.TabIndex = 17;
checkBoxProxyFTPAuth.Text = " Utilizar Autentificación para Proxy";
checkBoxProxyFTPAuth.UseVisualStyleBackColor = true;
checkBoxProxyFTPAuth.CheckedChanged += checkBoxProxyFTPAuth_CheckedChanged;
//
// label8
//
label8.AutoSize = true;
label8.Location = new Point(9, 139);
label8.Name = "label8";
label8.Size = new Size(109, 17);
label8.TabIndex = 16;
label8.Text = " Puerto del Proxy:";
//
// label9
//
label9.AutoSize = true;
label9.Location = new Point(9, 91);
label9.Name = "label9";
label9.Size = new Size(171, 17);
label9.TabIndex = 15;
label9.Text = " Nombre del Servidor Proxy:";
//
// radioButtonProxyFTP
//
radioButtonProxyFTP.AutoSize = true;
radioButtonProxyFTP.Location = new Point(19, 55);
radioButtonProxyFTP.Name = "radioButtonProxyFTP";
radioButtonProxyFTP.Size = new Size(47, 21);
radioButtonProxyFTP.TabIndex = 14;
radioButtonProxyFTP.Text = " FTP";
radioButtonProxyFTP.UseVisualStyleBackColor = true;
radioButtonProxyFTP.CheckedChanged += radioButtonProxyFTP_CheckedChanged;
//
// radioButtonProxyFTPNinguno
//
radioButtonProxyFTPNinguno.AutoSize = true;
radioButtonProxyFTPNinguno.Checked = true;
radioButtonProxyFTPNinguno.Location = new Point(19, 34);
radioButtonProxyFTPNinguno.Name = "radioButtonProxyFTPNinguno";
radioButtonProxyFTPNinguno.Size = new Size(78, 21);
radioButtonProxyFTPNinguno.TabIndex = 13;
radioButtonProxyFTPNinguno.TabStop = true;
radioButtonProxyFTPNinguno.Text = " Ninguno";
radioButtonProxyFTPNinguno.UseVisualStyleBackColor = true;
radioButtonProxyFTPNinguno.CheckedChanged += radioButtonProxyFTPNinguno_CheckedChanged;
//
// label10
//
label10.AutoSize = true;
label10.Location = new Point(7, 14);
label10.Name = "label10";
label10.Size = new Size(110, 17);
label10.TabIndex = 12;
label10.Text = "Tipo de proxy FTP:";
//
// tabPage3
//
tabPage3.Controls.Add(label12);
tabPage3.Controls.Add(textBoxDominio);
tabPage3.Controls.Add(label11);
tabPage3.Location = new Point(4, 26);
tabPage3.Name = "tabPage3";
tabPage3.Padding = new Padding(3);
tabPage3.Size = new Size(335, 277);
tabPage3.TabIndex = 2;
tabPage3.Text = "Dominio";
tabPage3.UseVisualStyleBackColor = true;
//
// label12
//
label12.AutoSize = true;
label12.ForeColor = SystemColors.ControlDark;
label12.Location = new Point(66, 36);
label12.Name = "label12";
label12.Size = new Size(220, 17);
label12.TabIndex = 22;
label12.Text = "Ejemplo: http://efc.aduanasoft.com";
//
// textBoxDominio
//
textBoxDominio.Location = new Point(66, 11);
textBoxDominio.Name = "textBoxDominio";
textBoxDominio.Size = new Size(259, 22);
textBoxDominio.TabIndex = 21;
//
// label11
//
label11.AutoSize = true;
label11.Location = new Point(6, 14);
label11.Name = "label11";
label11.Size = new Size(54, 17);
label11.TabIndex = 16;
label11.Text = "EFC API:";
//
// buttonGuardar
//
buttonGuardar.Location = new Point(159, 324);
buttonGuardar.Name = "buttonGuardar";
buttonGuardar.Size = new Size(89, 26);
buttonGuardar.TabIndex = 1;
buttonGuardar.Text = " Guardar";
buttonGuardar.UseVisualStyleBackColor = true;
buttonGuardar.Click += button1_Click;
//
// buttonCancelar
//
buttonCancelar.Location = new Point(252, 324);
buttonCancelar.Name = "buttonCancelar";
buttonCancelar.Size = new Size(89, 26);
buttonCancelar.TabIndex = 2;
buttonCancelar.Text = " Cancelar";
buttonCancelar.UseVisualStyleBackColor = true;
buttonCancelar.Click += buttonCancelar_Click;
//
// FormConfiguracionJSON
//
AutoScaleDimensions = new SizeF(7F, 17F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(352, 356);
Controls.Add(buttonCancelar);
Controls.Add(buttonGuardar);
Controls.Add(tabControl1);
Font = new Font("Century Gothic", 9F, FontStyle.Regular, GraphicsUnit.Point, 0);
FormBorderStyle = FormBorderStyle.FixedDialog;
Icon = (Icon)resources.GetObject("$this.Icon");
MaximizeBox = false;
MinimizeBox = false;
Name = "FormConfiguracionJSON";
StartPosition = FormStartPosition.CenterScreen;
Text = "Configuración de conexión";
Load += FormConfiguracionJSON_Load;
tabControl1.ResumeLayout(false);
tabPage1.ResumeLayout(false);
tabPage1.PerformLayout();
tabPage2.ResumeLayout(false);
tabPage2.PerformLayout();
tabPage3.ResumeLayout(false);
tabPage3.PerformLayout();
ResumeLayout(false);
}
#endregion
private TabControl tabControl1;
private TabPage tabPage1;
private TabPage tabPage2;
private Button buttonGuardar;
private Button buttonCancelar;
private Label label3;
private Label label2;
private RadioButton radioProxyGenericoHTTP;
private RadioButton radioProxyGenericoNinguno;
private Label label1;
private TabPage tabPage3;
private Label label5;
private Label label4;
private CheckBox checkBoxProxyGenericoAuthProxy;
private TextBox textBoxProxyGenericoPassword;
private TextBox textBoxProxyGenericoUsuario;
private TextBox textBoxProxyGenericoPuertoServidor;
private TextBox textBoxProxyGenericoNombreServidor;
private TextBox textBoxProxyFTPPassword;
private TextBox textBoxProxyFTPUsuario;
private TextBox textBoxProxyFTPPuerto;
private TextBox textBoxProxyFTPNombreServidor;
private Label label6;
private Label label7;
private CheckBox checkBoxProxyFTPAuth;
private Label label8;
private Label label9;
private RadioButton radioButtonProxyFTP;
private RadioButton radioButtonProxyFTPNinguno;
private Label label10;
private Label label11;
private Label label12;
private TextBox textBoxDominio;
}
}

View File

@@ -0,0 +1,250 @@
using EFCDesk.Classes;
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.Controls.Primitives;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Button;
namespace EFCDesk.Forms
{
public partial class FormConfiguracionJSON : Form
{
private ConfiguracionJSON _config;
public FormConfiguracionJSON()
{
InitializeComponent();
_config = ConfiguracionJSON.LoadFromJson();
// Cargar los valores actuales en los controles
if (_config.ProxyNingunoGenerico)
{
radioProxyGenericoHTTP.Checked = true;
radioProxyGenericoNinguno.Checked = false;
textBoxProxyGenericoNombreServidor.Text = _config.ServidorProxyGenerico;
textBoxProxyGenericoPuertoServidor.Text = _config.PuertoProxyGenerico.ToString();
}
else
{
radioProxyGenericoNinguno.Checked = true;
textBoxProxyGenericoNombreServidor.Enabled = false;
textBoxProxyGenericoPuertoServidor.Enabled = false;
}
if (_config.AuthProxyGenerico)
{
textBoxProxyGenericoUsuario.Text = _config.UsuarioProxyGenerico;
textBoxProxyGenericoPassword.Text = _config.PasswordProxyGenerico;
checkBoxProxyGenericoAuthProxy.Checked = true;
textBoxProxyGenericoUsuario.Enabled = true;
textBoxProxyGenericoPassword.Enabled = true;
}
else
{
textBoxProxyGenericoUsuario.Enabled = false;
textBoxProxyGenericoPassword.Enabled = false;
}
if (_config.ProxyFTPNinguno)
{
radioButtonProxyFTPNinguno.Checked = false;
radioButtonProxyFTP.Checked = true;
textBoxProxyFTPNombreServidor.Text = _config.ServidorProxyFTP;
textBoxProxyFTPPuerto.Text = _config.PuertoProxyFTP.ToString();
}
else
{
radioButtonProxyFTPNinguno.Checked = true;
textBoxProxyFTPNombreServidor.Enabled = false;
textBoxProxyFTPPuerto.Enabled = false;
}
if (_config.AuthProxyFTP)
{
textBoxProxyFTPUsuario.Text = _config.UsuarioProxyFTP;
textBoxProxyFTPPassword.Text = _config.PasswordProxyFTP;
checkBoxProxyFTPAuth.Checked = true;
textBoxProxyFTPUsuario.Enabled = true;
textBoxProxyFTPPassword.Enabled = true;
}
else
{
textBoxProxyFTPUsuario.Enabled = false;
textBoxProxyFTPPassword.Enabled = false;
}
textBoxDominio.Text = _config.DominioExp;
}
private void label5_Click(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
if (radioProxyGenericoNinguno.Checked)
{
_config.ProxyNingunoGenerico = false;
_config.ServidorProxyGenerico = "";
int.TryParse(textBoxProxyGenericoPuertoServidor.Text, out int puerto);
_config.PuertoProxyGenerico = puerto;
}
else
{
_config.ProxyNingunoGenerico = true;
_config.ServidorProxyGenerico = textBoxProxyGenericoNombreServidor.Text;
_config.PuertoProxyGenerico = 0;
}
if (checkBoxProxyGenericoAuthProxy.Checked)
{
_config.AuthProxyGenerico = true;
_config.UsuarioProxyGenerico = textBoxProxyGenericoUsuario.Text;
_config.PasswordProxyGenerico = textBoxProxyGenericoPassword.Text;
}
else
{
_config.AuthProxyGenerico = false;
_config.UsuarioProxyGenerico = "";
_config.PasswordProxyGenerico = "";
}
if (radioButtonProxyFTPNinguno.Checked)
{
_config.ProxyFTPNinguno = false;
_config.ServidorProxyFTP = "";
_config.PuertoProxyFTP = 0;
}
else
{
_config.ProxyFTPNinguno = true;
_config.ServidorProxyFTP = textBoxProxyFTPNombreServidor.Text;
int.TryParse(textBoxProxyFTPPuerto.Text, out int puerto);
_config.PuertoProxyFTP = puerto;
/*if (radioButton1.Checked)
{
MyClass.configuracion("tipoproxyFTP", "SOCKS5");
}*/
}
if (checkBoxProxyFTPAuth.Checked)
{
_config.AuthProxyFTP = true;
_config.UsuarioProxyFTP = textBoxProxyFTPUsuario.Text;
_config.PasswordProxyFTP = textBoxProxyFTPPassword.Text;
}
else
{
_config.AuthProxyFTP = false;
_config.UsuarioProxyFTP = "";
_config.PasswordProxyFTP = "";
}
_config.DominioExp = textBoxDominio.Text;
Properties.Settings.Default.urlEFC = _config.DominioExp;
Properties.Settings.Default.Save();
_config.SaveToJson();
Application.Restart();
}
private void radioProxyGenericoNinguno_CheckedChanged(object sender, EventArgs e)
{
if (radioProxyGenericoNinguno.Checked == true)
{
textBoxProxyGenericoNombreServidor.Enabled = false;
textBoxProxyGenericoPuertoServidor.Enabled = false;
}
}
private void radioProxyGenericoHTTP_CheckedChanged(object sender, EventArgs e)
{
if (radioProxyGenericoHTTP.Checked == true)
{
textBoxProxyGenericoNombreServidor.Enabled = true;
textBoxProxyGenericoPuertoServidor.Enabled = true;
}
}
private void buttonCancelar_Click(object sender, EventArgs e)
{
this.Close();
}
private void FormConfiguracionJSON_Load(object sender, EventArgs e)
{
TabPage? tabOculta;
tabOculta = tabControl1.TabPages["tabPage1"];
if (tabOculta != null) {
tabControl1.TabPages.Remove(tabOculta);
}
// Mostrarla de nuevo
// tabControl1.TabPages.Add(tabOculta);
tabOculta = tabControl1.TabPages["tabPage2"];
if (tabOculta != null) {
tabControl1.TabPages.Remove(tabOculta);
}
}
private void checkBoxProxyGenericoAuthProxy_CheckedChanged(object sender, EventArgs e)
{
if (!checkBoxProxyGenericoAuthProxy.Checked)
{
textBoxProxyGenericoUsuario.Enabled = false;
textBoxProxyGenericoPassword.Enabled = false;
}
else
{
textBoxProxyGenericoUsuario.Enabled = true;
textBoxProxyGenericoPassword.Enabled = true;
}
}
private void radioButtonProxyFTPNinguno_CheckedChanged(object sender, EventArgs e)
{
if (radioButtonProxyFTPNinguno.Checked == true)
{
textBoxProxyFTPNombreServidor.Enabled = false;
textBoxProxyFTPPuerto.Enabled = false;
}
}
private void radioButtonProxyFTP_CheckedChanged(object sender, EventArgs e)
{
if (radioButtonProxyFTP.Checked == true)
{
textBoxProxyFTPNombreServidor.Enabled = true;
textBoxProxyFTPPuerto.Enabled = true;
}
}
private void checkBoxProxyFTPAuth_CheckedChanged(object sender, EventArgs e)
{
if (!checkBoxProxyFTPAuth.Checked)
{
textBoxProxyFTPUsuario.Enabled = false;
textBoxProxyFTPPassword.Enabled = false;
}
else
{
textBoxProxyFTPUsuario.Enabled = true;
textBoxProxyFTPPassword.Enabled = true;
}
}
}
}

View File

@@ -0,0 +1,377 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAMAEBAAAAEAIABoBAAANgAAACAgAAABACAAqBAAAJ4EAAAwMAAAAQAgAKglAABGFQAAKAAAABAA
AAAgAAAAAQAgAAAAAAAABAAAIy4AACMuAAAAAAAAAAAAAAAAAAAAAAAAlpWVALW0swdWV1pIMTI0pycl
I+MoJBz7KCQd+ygmI+M0NDanXF1fSL+9vAefnp4AAAAAAAAAAAD///8AV1dXAH59fhg1NjeSKiMW7llA
EP+MYhT/o3IX/6JyF/+OZyP/XEUf/yskF+46Oz2RiIeHGGJhYQD///8AbGpqAIKBgRguLi6xQTAP/6d1
GP/Qkh7/1JQe/9OUHv/Ynjj/5LJo/9mhRf+lcxb/QjAQ/zQ0NLCOjY0Yd3Z1APf18wY3ODmSQjAQ/7yE
G//TlB7/0JIe/9CSHv/Qkh//3alX/+S0dP/frF7/1Zcm/7uDGv9CMRH/Pz9Bkf///wZdXWBKLCUY7ad1
GP/TlB7/0JIe/9CSHv/Qkh7/0JIe/9mhRf/js3H/47Nx/9ulTf/TlSD/pnQX/y8oG+1oaWtINzg6qFtB
Ef/Qkh7/0JIe/9CSHv/Qkh3/0JEd/9CRHP/RlCL/3KdS/+Ozcf/ism7/1548/9CSHf9bQRL/P0BCpiwq
KOSNYxX/05Qe/9CSHf/Qkh//05cq/9WbNP/UmjL/0ZUl/9OXKv/frWH/5LRz/9+sYP/VliT/i2IU/zIx
LuItKCH7o3MX/9KTHv/SlSb/26VO/+Gwaf/js3D/361k/92pWv/eq17/4bBq/+Kxbf/bplD/05Uh/6Jy
F/8yLib6Lioj+6Z3Jv/Ynz//3atf/+S3e//dq2D/26ZW/9mjT//YoEn/2KFL/9igSv/WnkP/1Jk2/9WZ
M/+kdib/My8o+jAuK+SRazD/4K1h/+Gzc//jtnn/1p1E/9OZOv/Umjv/1Jo7/9SaO//Umjv/1Jo8/9Sa
PP/YnT7/jmgp/zY0MuM+P0CpYk0t/9+tZv/jtXf/5bh//96tZf/bqFr/1p5F/9SaO//Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/15GH/9HSEmna2tsSjQvKO64lGb/6LyC/+W5gP/luYH/5bmA/+Cva//Wnkb/1Jo7/9Sa
PP/Umjz/15w9/6l7L/81LiTtdnZ4Sf///wZFRUaTTD8v/9CodP/ovIL/5bmA/+W5gP/luYH/4bJw/9ad
Q//Umjz/15w9/7+LNv9HNxz/TU1Okv///waDgoEAmpmZGT4+PbJNQC//uJVn/+W5gP/pvIL/6LuC/+i7
gP/cplH/1Jo7/6l7L/9INx3/RENDsaSjoxiNi4sA////AHNycgCamZgZSUlKkzcyK+9mUzv/m31X/7SR
ZP+0kWP/k284/15GH/83MCXvT09QkqKhoRh9e3sA////AAAAAAAAAAAAtrW0ANTS0Qdzc3RKSEhJqTk3
NuU5NTH8OTYy/Do4N+VLS02oeXl7SdrY1we9u7sAAAAAAAAAAADgBwAAwAMAAIABAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAMADAADgBwAAKAAAACAAAABAAAAAAQAgAAAA
AAAAEAAAIy4AACMuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7ezrAP//
/wS1s7IphYODa2VkY6xPTk3YQEBA8To5Ofw6Ojn8QkFB8VFQUNhoZ2erioiHarq4tyj///8E8O/uAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+HgAP//
/wOhoJ83Z2Zllzk5ON8YGBn7BQYI/wAAAf8BAQD/AwIA/wMCAP8BAQD/AAAB/wYHCf8aGhv7Pj093m5t
bJapp6Y1////A+fl5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AIWD
ggC+vLsacXBviTMyMuoJCQr/AgEA/xwTBP9IMwz/cE8S/4phFv+WaRf/lmkX/4phFv9vTxL/RzIL/xsU
CP8CAQH/CwsM/zk4OOl6eXiIxsTDGZSSkQD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPTz
8gAAAAAApKKhNlNSUcITExP+AgEA/y8hCP9/WhT/uIEc/86RHv/TlB//1JQe/9OUHv/TlB7/05Qe/9SW
JP/Wn0P/wpRO/35aGP8tIAf/AgEA/xYWF/5cW1vBrqyrNAAAAAD29fQAAAAAAAAAAAAAAAAAAAAAAAAA
AADw7+4AAAAAAJ2bmkFEQ0PZBgYH/xMOA/9xUBL/wYcd/9OUH//Skx7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hf/TmC7/3apa/+Ozcv/grF3/1JUh/8CHHP9vThL/Eg0D/wkJCf9NTUzYp6alQB4dHQDx8O8AAAAAAAAA
AAAAAAAA+/r5AHh2dQCmpKQ2RURD2QQEBP8kGQb/mm0Y/9GTHv/Rkx7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh3/0pYo/9+sYf/jtHL/47Ny/+CuZf/Slif/0ZMd/9GTHv+Yaxj/IhgG/wYGBv9PTk7XsbCvNIuJ
iQD49/YAAAAAAAAAAACwrq0AxsTDG1VUVMIGBwf/JBoG/6d1Gv/TlB7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CRHf/YoEH/47Ny/+Ozcf/js3H/47Nw/9igQf/Qkh3/0JIe/9OUHv+kdBn/IhgG/wkK
Cv9hYGDA0M7MGbm3twAAAAAA0c7NAP///wJ2dHSKFBQV/xMNA/+bbRj/05Qe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JId/9mjSf/jtHL/47Nx/+Ozcf/js3L/4K9m/9OYLv/Qkh3/0JIe/9OU
Hv+Yaxj/EgwC/xoaG/+DgoGI////As7MywCZl5YAqKalODc2NuoBAQD/clET/9GTHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/1Zs1/+Kxbf/js3H/47Nx/+Ozcf/js3L/3apa/9GU
JP/Qkh3/0JIe/9GTHv9vTxL/AQEA/0FBQei0srE2qKalAP///wNubWyYCwsM/zAiCP/BiB3/0ZMe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/QkyD/26VQ/+Ozcv/js3H/47Nx/+Oz
cf/js3H/2qNK/9CSH//Qkh7/0ZMe/8CHHf8uIAf/DxAR/3x7epX///8CvLq5Kz8/Pt8BAQD/gFsU/9OU
H//Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/SlSb/3qpb/+Oz
cv/js3H/47Nx/+Ozcf/isW3/1pw5/9CSHf/Qkh7/05Qf/35ZFP8BAQD/S0tK3cjGxSmOjIxuHBwd+x0U
BP+5ghz/0pMe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hf/Tlyr/3qte/+Ozcv/js3H/47Nx/+Ozcv/grWP/05cq/9CSHf/Skx7/t4Ec/xsSA/8kJCX7nJuaam9t
ba4HCAr/SjQM/86RHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0JId/9CRHf/Qkh3/0JEd/9CR
Hf/Qkh3/0JIe/9CSHf/Tlyv/36xh/+Ozcv/js3H/47Nx/+Ozcv/bpVD/0JIf/9CSHv/OkR7/RzIM/wwN
Dv99fHurWFdX2gABAv9yURL/05Qf/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0JIe/9KVJv/VmzX/2KBB/9mi
R//YoUX/154+/9OYLf/Qkh//0JIf/9CSHv/Zokf/47Ny/+Ozcf/js3H/47Ny/9+tYf/RlCP/0JIe/9OU
H/9wTxL/AgME/2ZlZdhKSUnzAgEA/4xjFv/UlB7/0JIe/9CSHv/Qkh7/0JId/9KVJ//Zokf/361j/+Ky
bv/js3L/47Ny/+Ozcv/frWP/26VP/9ulTv/cqFX/3alY/+CuZv/js3H/47Nx/+Ozcf/jtHP/3ahX/9CT
IP/Qkh7/1JQe/4phFv8CAgH/V1ZW8UNCQv4EAwD/mGsX/9OUHv/Qkh3/0JId/9CSHf/UmTH/36xf/+Oz
cf/js3L/47Ny/+Ozcv/js3L/4bFr/9ynVf/isWz/47Ny/+O0c//jtHP/47Ry/+Ozcf/jsnD/4rFs/92q
Wv/TmC7/0JId/9CSHf/TlB7/lmkX/wQDAP9QT0/8REND/gQDAP+ZbR7/1Zcp/9KVKf/Sliz/1Jo2/+Gw
a//kt3r/5LZ5/+O1d//gr2n/365n/+KycP/erWT/2qVV/9qlVP/Zo07/2qVT/9umVv/bpVX/2qRQ/9ih
SP/WnT7/05cx/9KVK//SlSv/0pUq/9WXKv+Xax7/BAMA/1FQUPxNTEzzAgEB/5BpKv/XnDz/1p5F/96s
ZP/dqmH/5bmA/+W5gP/luYD/3Kpf/9WbP//Umz7/1p1E/9WdQ//Umjz/1Jo7/9SaO//Umjv/1Jo7/9Sa
O//Umjv/1Jo7/9SaO//Umjz/1Jo8/9SaPP/Umjz/2J09/41mKf8CAgH/WllZ8V5dXNsBAgP/dlYj/9ed
Pf/drGP/4bJx/96tZv/luYH/5bmB/+K0dv/WnUT/1Jo7/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/XnD3/clMh/wMEBf9sa2rYd3Z1rwkK
DP9MOBf/1Z1E/+KzdP/ZpFL/3Kle/+W5gf/luYH/4rNz/9WcQP/Umjv/1Jo8/9SaO//Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9KZPP9JNRX/Dw8R/4WE
g6uZl5ZvIiIi/B4VB//Ck0v/4rJu/9WcQf/frmn/5bmB/+W5gP/kuH7/3apf/9adQ//Umz3/16BJ/9ad
Q//Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Wmzz/u4g2/xwU
B/8rKyv7paSja8bDwixKSkngAgEA/4ttRP/nuHv/365p/+S3ff/luYD/5bmA/+W5gP/luYD/4rR1/+Cw
bf/jtXj/2aRS/9SZOv/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9ec
Pf+BXib/AgIB/1dWVd7OzMsp////A359fJkPEBD/Niwf/9WteP/nuoL/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYH/5bqB/+W5gf/hsXD/16BJ/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Vmzz/xI84/y8iDv8VFhf/i4mIl////wKqqKcAtrSzOkVFROoDAgH/f2dI/+e6gf/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/jtXj/2qZX/9SaPf/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9WbPf9zVCL/AwIB/1FQT+m/vbw3tLKxAMzKyQD///8Di4mIjB4eHv8WEgz/rIxh/+i8
gv/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/kuH3/26dZ/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/XnD3/nXIu/xMNBf8lJSX/lpSUif///wLIxsUAAAAAAL27ugDRz84cbGtqxAwM
Df8qIhj/updp/+i8gv/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/jtnr/16BL/9Sa
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
Lf0DAwP/AAAA/wAAAP8OCgP/Py0M/31ZFf+tehv/xose/9CSHv/TlB//1JUf/9SVH//UlR//1JUf/9OU
H//Qkh7/xYoc/6x6H/+BYjD/PzAY/wwJAv8AAAD/AAAA/wUFBf83Njb8iIaGvcbDwjj///8A5+XkAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADc2tkA////BLCu
rV5gX17jEhIR/wAAAP8AAAD/DQoD/1A5Dv+gcRr/yo4e/9OUH//SlB7/0ZIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHf/Qkh//1Zsz/9+rWv/ltG7/zpc2/51vGP9NNw7/DAkD/wAAAP8AAAD/GBcX/2xr
a+G4trVb////A9jW1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbU
0gD///4FqKalck1MTPEGBgb/AAAA/wICAf81Jgr/mWwZ/82QHv/TlB7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JId/9GUJP/ao0r/4rFr/+O0cv/ism3/1Zox/9OUHf/MkB7/lmoY/zMk
Cv8CAQH/AAAA/woKCv9bWlnwsbCvbvf08wXS0M8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA1NLRAP///wSopqVySEdG9AMDA/8AAAD/CgcC/2JFEf/Ahx3/05Qe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0pUm/92pV//js3H/47Nx/+Ozcf/ism//1Zw3/9CR
Hf/Qkh7/05Qe/7+GHf9eQxH/CQYC/wAAAP8GBgX/VVRU87KxsG7///8Dz8zLAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADS0M8AAAAAALGvrl9PTk3xAwMD/wAAAP8RDAT/floV/86RHv/Rkx7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh//26VO/+Ozcv/js3H/47Nx/+Oz
cf/js3L/2aNK/9CSHf/Qkh7/0JIe/9KTHv/NkB7/e1cV/w8LBP8AAAD/BgYG/11cXPC6uLdbERAQAMrI
xwAAAAAAAAAAAAAAAAAAAAAAAAAAAMzKyQCurKsAwb++PGJhYeMHBwf/AAAA/xEMBP+IYRf/0ZMf/9GS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/Tlyv/4a9p/+Oz
cv/js3H/47Nx/+Ozcf/js3L/361j/9KWJ//Qkh3/0JIe/9CSHv/Rkh7/0JIe/4ReFv8PCwT/AAAA/wsL
C/9ycXDhyMXEObu5uADCwL8AAAAAAAAAAAAAAAAAAAAAAMXDwgDb2dcXgX9+wBMTE/8AAAD/CgcC/39a
Ff/Rkx//0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CR
Hf/VnDj/47Jw/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Nx/9qkS//Qkh//0JIe/9CSHv/Qkh7/0JIe/9CS
Hv97VxX/CQYC/wAAAP8cHBv/kI+OvNrY1xXFw8IAAAAAAAAAAAAAAAAAxcPCAP///wCko6J+MjEx/gAA
AP8BAQH/Y0YR/86RHv/Rkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CRHf/VnDf/4rJv/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Nx/+Kxbf/WnTr/0JId/9CS
Hv/Qkh7/0JIe/9GSHv/NkB7/X0MR/wEBAf8AAAD/QD8//bGvrnoAAAAAwb++AAAAAAAAAAAAvry7AMrI
xy9jYmLjAwMD/wAAAP83Jwv/wYgd/9GTHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/Slif/4K5k/+Ozcv/js3H/47Nx/+Ozcf/js3H/47Nx/+Oz
cv/grmX/05cs/9CSHf/Qkh7/0JIe/9CSHv/Skx7/v4Yd/zQlCv8AAAD/BwcH/3RzcuDPzcsswb++AAAA
AADBv74A////ApuZmJIjIiL/AAAA/w4KA/+abRn/05Qe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/2KFE/+Ozcf/js3H/47Nx/+Oz
cf/js3H/47Nx/+Ozcf/js3L/3alY/9GUI//Qkh7/0JIe/9CSHv/Qkh7/05Qe/5dqGP8NCQP/AAAA/y8v
Lv+pp6aN////AcC+vQDAvr0Az83MKWRjYuICAgL/AAAA/1I6D//OkB7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0ZQj/92p
WP/js3L/47Nx/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Nx/9miR//Qkh7/0JIe/9CSHv/Qkh7/0JIe/82Q
Hv9ONw7/AAAA/wYGBv92dHTg09DPJsG/vgB/fn0AqaemdS8uLv8AAAD/DwsD/6JyGv/TlB7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JId/9OXK//frWL/47Ny/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Nx/+KxbP/Vmzb/0JId/9CS
Hv/Qkh7/0JIe/9OUHv+ecBn/DQoD/wAAAP89PTz/tbSzcKOhoAD39fMOgYB/vQwMDP8AAAD/QS8M/8uP
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/UmTH/4K5m/+Ozcv/js3H/47Nx/+Ozcf/js3H/47Nx/+Oz
cv/frGH/0pYo/9CSHf/Qkh7/0JIe/9CSHv/Kjh7/PiwM/wAAAP8UFBT/kpGQuvLv7gzLycg4WVhY6gAA
AP8BAQH/gFsV/9OUH//Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/1Zo0/+CvZ//js3L/47Nx/+Oz
cf/js3H/47Nx/+Ozcf/js3L/26ZR/9CTIP/Qkh7/0JIe/9CSHv/TlB//fFgV/wAAAP8BAQH/bGtq6NHO
zTSzsbBxNzY2/AAAAP8UDgT/r3sb/9KTHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JId/9Wb
Nf/hr2j/47Ny/+Ozcf/js3H/47Nx/+Ozcf/js3H/4rJv/9adPP/Qkh3/0JIe/9CSHv/SlB7/rHkb/xIN
BP8AAAD/R0ZG/L68u2ycm5qmHh4d/wAAAP8zJAr/x4we/9GSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JId/9CRHf/Qkh7/0JIf/9CTIP/Qkh//0JIe/9CSHf/QkR3/0JId/9CS
Hv/Qkh7/0JIe/9CSHf/Xnz//47Jw/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Ry/92pWP/QkyD/0JIe/9CS
Hv/Rkh7/xYse/y8iCf8AAAD/Kioq/6upqKGJiIfODw4O/wAAAP9TOw//0JIf/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/RkyL/1Jkw/9efQf/apU7/3KhW/9ypWv/cqFj/26ZS/9mi
R//WnDn/0ZUl/9CRHP/Qkh3/0JId/9CRHf/UmTH/4rFt/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Ny/96r
X//RkyL/0JIe/9CSHv/Qkh7/0JIe/084Dv8AAAD/GBcX/5qYmMp6eXjpBgYG/wAAAP9tTRP/05Qf/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0ZQk/9efPv/eqlz/4rFs/+Ozcf/jtHL/47Ry/+O0
cv/jtHL/47Rz/+KxbP/bplL/1p4+/9igQv/Zo0n/2qRN/9ulT//eqlz/47Nx/+Ozcf/js3H/47Nx/+Oz
cf/js3H/47Rz/9yoVv/Qkh//0JIe/9CSHv/Qkh7/05Qf/2lLEv8AAAD/DQ0M/4yKiuVvbm74AgIC/wAA
AP9/WhX/1JUf/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/VmjT/3qtd/+OzcP/js3L/47Nx/+Oz
cf/js3H/47Nx/+Ozcf/js3L/4K9n/9ihRf/cqFf/4rFs/+Ozcv/js3L/47Ry/+O0cv/js3L/47Nx/+Oz
cf/js3H/47Nx/+Ozcf/jtHL/4bFr/9WbNv/Qkh3/0JIe/9CSHv/Qkh7/1JUf/3tXFf8AAAD/BwcH/4KA
gPRraWn/AQEB/wEBAf+IYBb/1JQe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0JIf/9efP//hsGr/47Ny/+Oz
cf/js3H/47Nx/+Ozcf/js3H/47Nx/+Ozcf/js3L/26dT/92qW//ktHP/47Ny/+Ozcv/js3L/47Ny/+Oz
cv/js3L/47Ny/+Ozcv/js3L/47Nw/+KxbP/eq13/1Zw4/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/1JQe/4Nd
Ff8AAAD/BQUF/359fPxramr/AQEB/wEBAf+IYBj/1JUi/9GTIv/RkyP/0ZMj/9GTI//RkyT/16BC/+Kz
cf/ktXb/5LV1/+S1dv/ktXb/5LV2/+Kzc//is3L/47R1/+S2d//jtHX/2qVS/96tZ//dq2H/26ZV/9um
Vf/cqVz/3qtg/96rYf/eq2D/3ald/9ynV//apE//2KBF/9WbOf/Sliv/0ZQk/9GUJf/RlCT/0ZMj/9GT
I//RkyL/1JYi/4NdF/8AAAD/BQUF/399ffxycXH4AwMD/wAAAP+CXiT/15w5/9SZOf/UmTn/1Zs+/9eg
Sv/VnUL/4bJy/+W5gf/luYD/5bmA/+W5gP/kt3z/3Klf/9egS//XoEn/2aNQ/9yqX//cqV//1ZxB/9Wc
Qf/Umj3/1Jo7/9SaO//Umjz/1Jo9/9SaPf/Umj3/1Jo8/9SaO//UmTr/1Jk6/9SZOv/Umjv/1Jo7/9Sa
O//Umjr/1Jk6/9SZOf/UmTn/15w5/31bI/8AAAD/CAgI/4SDgvV/fX3pCAgI/wAAAP9xUyP/15w9/9Sa
PP/Umz7/3ati/+O1eP/aplj/5Ld8/+W5gP/luYD/5bmA/+W5gP/dq2H/1Jo8/9SaO//Umjv/1Jo7/9Sa
O//Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/15w9/2xPIP8AAAD/Dg4O/5COjuWQjo3PERER/wAA
AP9WPxv/1Zs9/9SaO//Zo1D/5Lh+/+Gycv/bp1r/5bl//+W5gP/luYD/5bmA/+O1eP/Wn0f/1Jo7/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/1E7Gf8AAAD/Gxsb/5+e
ncqkoqGnIyMj/wAAAP81JxH/y5Q7/9WbPv/fr2r/5bmA/9qmV//ZpFP/5bl//+W5gP/luYD/5bmB/+Cw
bf/Umz7/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Vmjz/yZM6/zEk
D/8AAAD/MTAw/7GvrqK5t7ZyQD8//QAAAP8VEAj/s4I0/9mgR//jtnr/4LBt/9WbP//Yo1D/5Lh//+W5
gP/luYD/5bmB/+Gycf/Vm0D/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/WnD3/sIAz/xMOBv8AAAD/UVBP/MLAv23OzMs5ZmVk6wAAAP8CAQH/hGEn/92nVf/kt33/2KNQ/9OZ
Of/bp1r/5bmA/+W5gP/luYD/5bmA/+S4fv/cqV3/1Zs//9SZO//Umjv/1Jk7/9WdQv/VnED/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/XnD3/gF0m/wEAAP8DAwP/eHZ26dHOzTXs6egPj46NvxISEv8AAAD/RDIV/9em
X//luH7/2KNQ/9aeR//hsnL/5bmB/+W5gP/luYD/5bmA/+W5gP/luH//369r/9mkUv/Xn0j/2KJP/+Cw
bf/Zo1H/1Jo7/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Oljv/QC8U/wAAAP8cGxv/n52cu+Ti4A2amJcAtLKxdjw7
O/8AAAD/EAwG/7GNW//ovIL/47V4/+K1d//luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmB/+W4
f//kt3v/5Lh+/+W5gf/bqFz/1Jk7/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9ecPf+jdzD/DgoF/wAAAP9MS0v/vbu6crKw
rwDBv74A0c7NK3d1deMGBgb/AAAA/11LNf/jt3//5bmB/+W5gf/luYD/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/itHb/2KFM/9SaO//Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9GYPP9RPBn/AAAA/wsL
C/+HhoXh0c/OKMG/vgDAvr0A////AqupqZQxMTD/AAAA/xEOCv+si2H/6LyC/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYH/47V5/9unWv/VnED/1Jo7/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/15w9/5tx
Lv8OCgX/AAAA/0A/P/+1tLOQ////AcC+vQDAvr0AwsC/AM3LyjF6eXjkCQkJ/wAAAP8/MyT/1q14/+a6
gf/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmB/+W5
gP/fr2r/1p5F/9SaO//Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Vmzz/xI44/zcoEf8AAAD/Dw8P/4qIh+LOzMsuwsC/AAAAAAAAAAAAwb++AP///wG1s7KBRkZF/gAA
AP8CAgH/cFtA/+O4f//muYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYH/4LFv/9aeRf/Umjv/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9WaPP/SmDz/Y0ke/wEBAf8AAAD/VlVU/r27unz///8AwL69AAAAAAAAAAAAAAAAAMTC
wQDU0tEYmZiXwiIiIf8AAAD/DAoH/5B1Uv/nuoH/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmB/9+uav/Vmz//1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9WbPf+AXif/CgcE/wAAAP8tLSz/paSjv9HPzhbDwcAAAAAAAAAA
AAAAAAAAAAAAAMC+vQC/vbwAycbFP39+feUQEBD/AAAA/xURDf+bflj/57qB/+a5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W4f//apVX/1Jo7/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Vmjz/1Zs9/4plKf8RDQb/AAAA/xgXF/+NjIviysjHO8PB
wADAvr0AAAAAAAAAAAAAAAAAAAAAAAAAAADEwsEA////AMC+vWJtbGvyCgoK/wAAAP8VEQ3/kXZT/+S4
gP/muoH/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W6
gf/fr2r/1Jo9/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9WbPP/SmDz/gV4n/xENBv8AAAD/Dw8P/3t6
efHEwsFefnx8AMG/vgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx8XEAOHf3QS7ubh2aGZm9goK
Cv8AAAD/DQsI/3JdQf/WrXj/6LyC/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gf/hsnL/1ZtA/9SaPP/Umjz/1Jo8/9SaPP/Umjz/15w9/8SPOP9jSR7/CgcE/wAA
AP8PDw//dXRz9MC+vXLW1NMDxMLBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMrH
xgDa2NYGvLq5dnBvbvISERH/AAAA/wMDAv9ANCX/rYxi/+O3f//ou4L/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/hsnL/1ZxA/9SaPP/Umjz/1Jo8/9ecPf/RmDz/nHIu/zco
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
AAD/4AAAB/8AAP/4AAAf/wAA//8AAP//AAA=
</value>
</data>
</root>

63
Forms/FormErrorLog.Designer.cs generated Normal file
View File

@@ -0,0 +1,63 @@
namespace EFCDesk.Forms
{
partial class FormErrorLog
{
/// <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()
{
dataGridView1 = new DataGridView();
((System.ComponentModel.ISupportInitialize)dataGridView1).BeginInit();
SuspendLayout();
//
// dataGridView1
//
dataGridView1.AllowUserToAddRows = false;
dataGridView1.AllowUserToDeleteRows = false;
dataGridView1.AllowUserToOrderColumns = true;
dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
dataGridView1.Location = new Point(12, 12);
dataGridView1.Name = "dataGridView1";
dataGridView1.ReadOnly = true;
dataGridView1.Size = new Size(349, 313);
dataGridView1.TabIndex = 0;
//
// FormErrorLog
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(373, 337);
Controls.Add(dataGridView1);
Name = "FormErrorLog";
Text = "Expediente Electronico";
((System.ComponentModel.ISupportInitialize)dataGridView1).EndInit();
ResumeLayout(false);
}
#endregion
private DataGridView dataGridView1;
}
}

24
Forms/FormErrorLog.cs Normal file
View File

@@ -0,0 +1,24 @@
using EFCDesk.Classes;
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;
namespace EFCDesk.Forms
{
public partial class FormErrorLog : Form
{
private static SQLiteHelper sqliteHelper = new SQLiteHelper(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "historico.db"));
public FormErrorLog()
{
InitializeComponent();
ErrorLog errorLog = new ErrorLog();
dataGridView1.DataSource = errorLog.GetRegistrosErrorLog(sqliteHelper);
}
}
}

120
Forms/FormErrorLog.resx Normal file
View File

@@ -0,0 +1,120 @@
<?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>
</root>

198
Forms/FormExpedientes.Designer.cs generated Normal file
View File

@@ -0,0 +1,198 @@
namespace EFCDesk.Forms
{
partial class FormExpedientes
{
/// <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(FormExpedientes));
edt_BuscarExpediente = new TextBox();
label1 = new Label();
dgwExpedientes = new DataGridView();
BTN_Buscar = new Button();
edt_Pagina = new TextBox();
btn_inicio = new Button();
btn_anterior = new Button();
btn_siguiente = new Button();
btn_ultimo = new Button();
lblPaginacion = new Label();
((System.ComponentModel.ISupportInitialize)dgwExpedientes).BeginInit();
SuspendLayout();
//
// edt_BuscarExpediente
//
edt_BuscarExpediente.Location = new Point(65, 6);
edt_BuscarExpediente.Name = "edt_BuscarExpediente";
edt_BuscarExpediente.PlaceholderText = "Buscar Expediente...";
edt_BuscarExpediente.Size = new Size(258, 23);
edt_BuscarExpediente.TabIndex = 0;
edt_BuscarExpediente.TextAlign = HorizontalAlignment.Center;
edt_BuscarExpediente.KeyPress += edt_BuscarExpediente_KeyPress;
//
// label1
//
label1.AutoSize = true;
label1.Font = new Font("Segoe UI", 9F, FontStyle.Bold);
label1.Location = new Point(12, 9);
label1.Name = "label1";
label1.Size = new Size(47, 15);
label1.TabIndex = 1;
label1.Text = "Buscar:";
//
// dgwExpedientes
//
dgwExpedientes.AllowUserToAddRows = false;
dgwExpedientes.AllowUserToDeleteRows = false;
dgwExpedientes.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
dgwExpedientes.Location = new Point(12, 35);
dgwExpedientes.Name = "dgwExpedientes";
dgwExpedientes.ReadOnly = true;
dgwExpedientes.RowHeadersVisible = false;
dgwExpedientes.Size = new Size(559, 258);
dgwExpedientes.TabIndex = 2;
//
// BTN_Buscar
//
BTN_Buscar.BackgroundImage = (Image)resources.GetObject("BTN_Buscar.BackgroundImage");
BTN_Buscar.BackgroundImageLayout = ImageLayout.Zoom;
BTN_Buscar.Cursor = Cursors.Hand;
BTN_Buscar.FlatAppearance.BorderSize = 0;
BTN_Buscar.FlatStyle = FlatStyle.Flat;
BTN_Buscar.Location = new Point(326, 6);
BTN_Buscar.Name = "BTN_Buscar";
BTN_Buscar.Size = new Size(30, 23);
BTN_Buscar.TabIndex = 8;
BTN_Buscar.UseVisualStyleBackColor = true;
BTN_Buscar.Click += BTN_Buscar_Click;
//
// edt_Pagina
//
edt_Pagina.Location = new Point(471, 6);
edt_Pagina.Name = "edt_Pagina";
edt_Pagina.ReadOnly = true;
edt_Pagina.Size = new Size(100, 23);
edt_Pagina.TabIndex = 11;
edt_Pagina.TextAlign = HorizontalAlignment.Center;
edt_Pagina.Visible = false;
//
// btn_inicio
//
btn_inicio.Font = new Font("Segoe UI", 12F, FontStyle.Bold);
btn_inicio.Location = new Point(417, 296);
btn_inicio.Name = "btn_inicio";
btn_inicio.Size = new Size(34, 33);
btn_inicio.TabIndex = 12;
btn_inicio.Text = "|<";
btn_inicio.TextAlign = ContentAlignment.MiddleRight;
btn_inicio.UseVisualStyleBackColor = true;
btn_inicio.Click += btn_inicio_Click;
//
// btn_anterior
//
btn_anterior.Font = new Font("Segoe UI", 12F, FontStyle.Bold);
btn_anterior.Location = new Point(457, 296);
btn_anterior.Name = "btn_anterior";
btn_anterior.Size = new Size(34, 33);
btn_anterior.TabIndex = 13;
btn_anterior.Text = "<";
btn_anterior.TextAlign = ContentAlignment.MiddleRight;
btn_anterior.UseVisualStyleBackColor = true;
btn_anterior.Click += btn_anterior_Click;
//
// btn_siguiente
//
btn_siguiente.Font = new Font("Segoe UI", 12F, FontStyle.Bold);
btn_siguiente.Location = new Point(497, 296);
btn_siguiente.Name = "btn_siguiente";
btn_siguiente.Size = new Size(34, 33);
btn_siguiente.TabIndex = 14;
btn_siguiente.Text = ">";
btn_siguiente.TextAlign = ContentAlignment.MiddleRight;
btn_siguiente.UseVisualStyleBackColor = true;
btn_siguiente.Click += btn_siguiente_Click;
//
// btn_ultimo
//
btn_ultimo.Font = new Font("Segoe UI", 12F, FontStyle.Bold);
btn_ultimo.Location = new Point(537, 296);
btn_ultimo.Name = "btn_ultimo";
btn_ultimo.Size = new Size(34, 33);
btn_ultimo.TabIndex = 15;
btn_ultimo.Text = ">|";
btn_ultimo.TextAlign = ContentAlignment.MiddleRight;
btn_ultimo.UseVisualStyleBackColor = true;
btn_ultimo.Click += btn_ultimo_Click;
//
// lblPaginacion
//
lblPaginacion.AutoSize = true;
lblPaginacion.Location = new Point(12, 296);
lblPaginacion.Name = "lblPaginacion";
lblPaginacion.Size = new Size(209, 15);
lblPaginacion.TabIndex = 16;
lblPaginacion.Text = " [Registro 1 de 1000][Página 1 de 1000]";
lblPaginacion.TextAlign = ContentAlignment.MiddleLeft;
//
// FormExpedientes
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(583, 340);
Controls.Add(lblPaginacion);
Controls.Add(btn_ultimo);
Controls.Add(btn_siguiente);
Controls.Add(btn_anterior);
Controls.Add(btn_inicio);
Controls.Add(edt_Pagina);
Controls.Add(BTN_Buscar);
Controls.Add(dgwExpedientes);
Controls.Add(label1);
Controls.Add(edt_BuscarExpediente);
FormBorderStyle = FormBorderStyle.FixedDialog;
MaximizeBox = false;
Name = "FormExpedientes";
StartPosition = FormStartPosition.CenterScreen;
Text = "FormExpedientes";
Shown += FormExpedientes_Shown;
((System.ComponentModel.ISupportInitialize)dgwExpedientes).EndInit();
ResumeLayout(false);
PerformLayout();
}
#endregion
private TextBox edt_BuscarExpediente;
private Label label1;
private DataGridView dgwExpedientes;
private Button BTN_Buscar;
private TextBox edt_Pagina;
private Button btn_inicio;
private Button btn_anterior;
private Button btn_siguiente;
private Button btn_ultimo;
private Label lblPaginacion;
}
}

260
Forms/FormExpedientes.cs Normal file
View File

@@ -0,0 +1,260 @@
using EFCDesk.Classes;
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Numerics;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace EFCDesk.Forms
{
public partial class FormExpedientes : Form
{
private class Paginacion
{
public long _registro;
public long _registros;
public long _pagina;
public long _paginas;
}
private static SQLiteHelper _sqliteHelper = new SQLiteHelper(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "historico.db"));
private long paginacion = 1000;
private bool _clickPorCodigo = false;
private Paginacion _paginacion = new Paginacion();
public FormExpedientes()
{
InitializeComponent();
dgwExpedientes.SelectionChanged += dgwExpedientes_SelectionChanged!;
dgwExpedientes.AutoGenerateColumns = true;
dgwExpedientes.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
}
private async Task CargarVistaExpedientes(int pagina, string buscarExpediente = "*")
{
// Limpiar la fuente de datos
dgwExpedientes.DataSource = null;
// 1) Trabajo pesado en segundo plano
DataTable? dt = await Task.Run(() =>
{
var listaExpedientes = _sqliteHelper.ObtenerExpedientes(pagina: pagina, tamanioPagina: paginacion, buscarExpediente: buscarExpediente);
if (listaExpedientes == null || listaExpedientes.Count == 0)
return null;
DataTable table = new DataTable();
table.Columns.Add("Expediente", typeof(string));
table.Columns.Add("Ruta", typeof(string));
table.Columns.Add("Estatus", typeof(string));
table.Columns.Add("Fecha Registro", typeof(string));
foreach (var exp in listaExpedientes)
{
var row = table.NewRow();
row["Expediente"] = exp.Expediente;
row["Ruta"] = exp.Ruta;
row["Estatus"] = exp.Estado;
row["Fecha Registro"] = exp.FechaCreacion;
table.Rows.Add(row);
}
return table;
});
long totalPaginas = await TotalPaginas(edt_BuscarExpediente.Text);
// 2) Volver al UI thread para asignar el origen
if (dt != null)
{
// Deshabilitar el redimensionamiento de ALTOS de filas
dgwExpedientes.AllowUserToResizeRows = false;
dgwExpedientes.DataSource = dt;
dgwExpedientes.Columns["Expediente"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dgwExpedientes.Columns["Expediente"].Frozen = true;
dgwExpedientes.Columns["Expediente"].Width = 100;
dgwExpedientes.Columns["Ruta"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dgwExpedientes.Columns["Ruta"].Width = 300;
dgwExpedientes.Columns["Estatus"].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
dgwExpedientes.Columns["Estatus"].Width = 100;
dgwExpedientes.Columns["Fecha Registro"].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
dgwExpedientes.Columns["Fecha Registro"].Width = 180;
_ = Task.Run(() =>
{
long total = dgwExpedientes.RowCount;
_paginacion._registro = 1;
_paginacion._registros = total;
_paginacion._pagina = pagina;
_paginacion._paginas = totalPaginas;
ActualizarEtiqueta();
});
}
else
{
_paginacion._registro = 0;
_paginacion._registros = 0;
_paginacion._pagina = 0;
_paginacion._paginas = 0;
ActualizarEtiqueta();
}
}
private async void FormExpedientes_Shown(object sender, EventArgs e)
{
edt_Pagina.Text = "1";
await CargarVistaExpedientes(pagina: 1);
}
private async void BTN_Buscar_Click(object sender, EventArgs e)
{
string busqueda = edt_BuscarExpediente.Text.Trim();
if (string.IsNullOrEmpty(busqueda))
{
busqueda = "*";
}
int pag = int.Parse(edt_Pagina.Text);
if (_clickPorCodigo)
{
// fue llamado desde código
await CargarVistaExpedientes(buscarExpediente: busqueda, pagina: pag);
_clickPorCodigo = false; // reset
}
else
{
// fue el usuario
await CargarVistaExpedientes(buscarExpediente: busqueda, pagina: 1);
}
}
private async void btn_siguiente_Click(object sender, EventArgs e)
{
long totalPaginas = await TotalPaginas(edt_BuscarExpediente.Text);
long pag = (int.Parse(edt_Pagina.Text) + 1);
if (pag > totalPaginas) return;
edt_Pagina.Text = pag.ToString();
_clickPorCodigo = true;
BTN_Buscar.PerformClick();
}
private void btn_anterior_Click(object sender, EventArgs e)
{
int pag = (int.Parse(edt_Pagina.Text) - 1);
if (pag <= 0)
{
return;
}
edt_Pagina.Text = pag.ToString();
_clickPorCodigo = true;
BTN_Buscar.PerformClick();
}
private void btn_inicio_Click(object sender, EventArgs e)
{
edt_Pagina.Text = "1";
_clickPorCodigo = true;
BTN_Buscar.PerformClick();
}
private async void btn_ultimo_Click(object sender, EventArgs e)
{
long totalPaginas = await TotalPaginas(edt_BuscarExpediente.Text);
edt_Pagina.Text = totalPaginas.ToString();
_clickPorCodigo = true;
BTN_Buscar.PerformClick();
}
private async Task<long> TotalPaginas(string busqueda)
{
long total = 0;
if (string.IsNullOrEmpty(busqueda))
{
total = await _sqliteHelper.TotalExpedientes("*");
}
else if (string.IsNullOrWhiteSpace(busqueda))
{
total = await _sqliteHelper.TotalExpedientes("*");
}
else
{
total = await _sqliteHelper.TotalExpedientes(busqueda);
}
long resto = total % paginacion;
long totalPaginas = ((total - resto) / paginacion);
if (resto > 0) totalPaginas += 1;
return totalPaginas;
}
private void ActualizarEtiqueta()
{
// Si el llamado llega desde otro hilo, lo redirigimos al UI
if (lblPaginacion.InvokeRequired)
{
lblPaginacion.BeginInvoke((MethodInvoker)(() =>
lblPaginacion.Text = $"[Registro {_paginacion._registro.ToString()} de {_paginacion._registros.ToString()}][Página {_paginacion._pagina.ToString()} de {_paginacion._paginas.ToString()}]"));
return;
}
// Ya estamos en el hilo UI
lblPaginacion.Text = $"[Registro {_paginacion._registro.ToString()} de {_paginacion._registros.ToString()}][Página {_paginacion._pagina.ToString()} de {_paginacion._paginas.ToString()}]";
}
private void dgwExpedientes_SelectionChanged(object sender, EventArgs e)
{
if (dgwExpedientes.CurrentRow == null) return;
int indiceFila = dgwExpedientes.CurrentRow.Index;
_paginacion._registro = (indiceFila + 1);
ActualizarEtiqueta();
}
private void edt_BuscarExpediente_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Return)
{
e.Handled = true;
BTN_Buscar.PerformClick();
}
}
}
}

135
Forms/FormExpedientes.resx Normal file
View File

@@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BTN_Buscar.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vAAADrwBlbxySQAAAfpJREFUWEftlr8rhVEYxy9SGCgxGJSyWGSwSZnEYDP5H2SzMzHhD7AoJmWyWqT8
KAtJDAYGTAwyKPH5vHXqDrrvOe99hfKtT91zes9znvPr+d7Kv/6SRmAFTuAJ3uEVrmALZqAFStcoHMNH
BI8wB01QtxphCVypwR9gGcagExqgDQZhFtyZkMgB9EBhOfkmGOwNFqAV8jQFt+C4G+iFQnLlBnkGV5yi
LjgEx5+Bu5Qkz9xtd+Wpkwd1wAWYxJodKQoXzm2vR0PgIqTfjhj51JzcCxdz5nlaB+OtZq0I+c4d4G0v
Q8NgvLusFaHwlIqe/VdyN43Zl7VyZIXzY995WdoDY45nrRyFomORKUvbYMzprJUja7sfJ7/dGtoFY1qk
cqWx+LHltSxdgjF9lrnS1fzY2l6G9AOP9QWa7ciTlmoCvoYyNA/G28laEdLPtVQHRZ1ZDbVDeIITdsRK
P3eQrqaxFNUGGGc/ayXIPxP6uYN1NY0lVYvgeM9+wI5UeXn0c4PoalE3GLntYeVyDd1QSP6Z0M8NpKNp
LNb2r2TCXrh7CCt3cn+fQ+EkLEj6uQmEVXmxLK9WOIuM7zxUUPHM3XYndfK6k1D6uZaqq4WJqnHFPrVJ
qFapSQTpahqLtd2n6v2oVWS+JYlUVSdxasdPyCSc/Chr/et3qFL5BH2hlRT2cx6UAAAAAElFTkSuQmCC
</value>
</data>
</root>

327
Forms/FormMain.Designer.cs generated Normal file
View File

@@ -0,0 +1,327 @@
namespace EFCDesk.Forms
{
partial class FormMain
{
/// <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()
{
components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain));
panel1 = new Panel();
btn_VisorExpedientes = new Button();
ProcesoManual = new Button();
buttonErrorLog = new Button();
buttonAbrirFolderMov = new Button();
buttonAbrirFolder = new Button();
buttonAbrirExpediente = new Button();
buttonConfiguracion = new Button();
panel2 = new Panel();
labelTotalExpedientes = new Label();
labelUsuario = new Label();
labelStatus = new Label();
listViewExpedientes = new ListView();
fileSystemWatcher = new FileSystemWatcher();
imageList1 = new ImageList(components);
mynotifyicon = new NotifyIcon(components);
contextMenuStrip1 = new ContextMenuStrip(components);
cerrarExpedienteElectronicoToolStripMenuItem = new ToolStripMenuItem();
listViewArchivosProcesados = new ListView();
panel1.SuspendLayout();
panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)fileSystemWatcher).BeginInit();
contextMenuStrip1.SuspendLayout();
SuspendLayout();
//
// panel1
//
panel1.BackColor = Color.White;
panel1.Controls.Add(btn_VisorExpedientes);
panel1.Controls.Add(ProcesoManual);
panel1.Controls.Add(buttonErrorLog);
panel1.Controls.Add(buttonAbrirFolderMov);
panel1.Controls.Add(buttonAbrirFolder);
panel1.Controls.Add(buttonAbrirExpediente);
panel1.Controls.Add(buttonConfiguracion);
panel1.Location = new Point(3, 6);
panel1.Name = "panel1";
panel1.Size = new Size(49, 315);
panel1.TabIndex = 0;
//
// btn_VisorExpedientes
//
btn_VisorExpedientes.BackgroundImage = (Image)resources.GetObject("btn_VisorExpedientes.BackgroundImage");
btn_VisorExpedientes.BackgroundImageLayout = ImageLayout.Zoom;
btn_VisorExpedientes.Cursor = Cursors.Hand;
btn_VisorExpedientes.FlatAppearance.BorderSize = 0;
btn_VisorExpedientes.FlatStyle = FlatStyle.Flat;
btn_VisorExpedientes.Location = new Point(6, 126);
btn_VisorExpedientes.Name = "btn_VisorExpedientes";
btn_VisorExpedientes.Size = new Size(30, 23);
btn_VisorExpedientes.TabIndex = 8;
btn_VisorExpedientes.UseVisualStyleBackColor = true;
btn_VisorExpedientes.Click += btn_VisorExpedientes_Click;
//
// ProcesoManual
//
ProcesoManual.BackgroundImage = (Image)resources.GetObject("ProcesoManual.BackgroundImage");
ProcesoManual.BackgroundImageLayout = ImageLayout.Zoom;
ProcesoManual.Cursor = Cursors.Hand;
ProcesoManual.FlatAppearance.BorderSize = 0;
ProcesoManual.FlatStyle = FlatStyle.Flat;
ProcesoManual.Location = new Point(5, 88);
ProcesoManual.Name = "ProcesoManual";
ProcesoManual.Size = new Size(30, 23);
ProcesoManual.TabIndex = 7;
ProcesoManual.UseVisualStyleBackColor = true;
ProcesoManual.Click += ProcesoManual_Click;
//
// buttonErrorLog
//
buttonErrorLog.BackgroundImage = (Image)resources.GetObject("buttonErrorLog.BackgroundImage");
buttonErrorLog.BackgroundImageLayout = ImageLayout.Zoom;
buttonErrorLog.Cursor = Cursors.Hand;
buttonErrorLog.FlatAppearance.BorderSize = 0;
buttonErrorLog.FlatStyle = FlatStyle.Flat;
buttonErrorLog.Location = new Point(6, 227);
buttonErrorLog.Name = "buttonErrorLog";
buttonErrorLog.Size = new Size(31, 34);
buttonErrorLog.TabIndex = 6;
buttonErrorLog.UseVisualStyleBackColor = true;
buttonErrorLog.Visible = false;
buttonErrorLog.Click += buttonErrorLog_Click;
//
// buttonAbrirFolderMov
//
buttonAbrirFolderMov.BackgroundImage = (Image)resources.GetObject("buttonAbrirFolderMov.BackgroundImage");
buttonAbrirFolderMov.BackgroundImageLayout = ImageLayout.Zoom;
buttonAbrirFolderMov.Cursor = Cursors.Hand;
buttonAbrirFolderMov.FlatAppearance.BorderSize = 0;
buttonAbrirFolderMov.FlatStyle = FlatStyle.Flat;
buttonAbrirFolderMov.Location = new Point(7, 267);
buttonAbrirFolderMov.Name = "buttonAbrirFolderMov";
buttonAbrirFolderMov.Size = new Size(31, 34);
buttonAbrirFolderMov.TabIndex = 5;
buttonAbrirFolderMov.UseVisualStyleBackColor = true;
buttonAbrirFolderMov.Visible = false;
buttonAbrirFolderMov.Click += buttonAbrirFolderMov_Click;
//
// buttonAbrirFolder
//
buttonAbrirFolder.BackgroundImage = (Image)resources.GetObject("buttonAbrirFolder.BackgroundImage");
buttonAbrirFolder.BackgroundImageLayout = ImageLayout.Zoom;
buttonAbrirFolder.Cursor = Cursors.Hand;
buttonAbrirFolder.FlatAppearance.BorderSize = 0;
buttonAbrirFolder.FlatStyle = FlatStyle.Flat;
buttonAbrirFolder.Location = new Point(4, 8);
buttonAbrirFolder.Name = "buttonAbrirFolder";
buttonAbrirFolder.Size = new Size(31, 34);
buttonAbrirFolder.TabIndex = 4;
buttonAbrirFolder.UseVisualStyleBackColor = true;
buttonAbrirFolder.Click += buttonAbrirFolder_Click;
//
// buttonAbrirExpediente
//
buttonAbrirExpediente.BackgroundImage = (Image)resources.GetObject("buttonAbrirExpediente.BackgroundImage");
buttonAbrirExpediente.BackgroundImageLayout = ImageLayout.Zoom;
buttonAbrirExpediente.Cursor = Cursors.Hand;
buttonAbrirExpediente.FlatAppearance.BorderSize = 0;
buttonAbrirExpediente.FlatStyle = FlatStyle.Flat;
buttonAbrirExpediente.Location = new Point(7, 187);
buttonAbrirExpediente.Name = "buttonAbrirExpediente";
buttonAbrirExpediente.Size = new Size(31, 34);
buttonAbrirExpediente.TabIndex = 3;
buttonAbrirExpediente.UseVisualStyleBackColor = true;
buttonAbrirExpediente.Visible = false;
buttonAbrirExpediente.Click += buttonAbrirExpediente_Click;
//
// buttonConfiguracion
//
buttonConfiguracion.BackgroundImage = (Image)resources.GetObject("buttonConfiguracion.BackgroundImage");
buttonConfiguracion.BackgroundImageLayout = ImageLayout.Zoom;
buttonConfiguracion.Cursor = Cursors.Hand;
buttonConfiguracion.FlatAppearance.BorderSize = 0;
buttonConfiguracion.FlatStyle = FlatStyle.Flat;
buttonConfiguracion.Location = new Point(4, 48);
buttonConfiguracion.Name = "buttonConfiguracion";
buttonConfiguracion.Size = new Size(31, 34);
buttonConfiguracion.TabIndex = 2;
buttonConfiguracion.UseVisualStyleBackColor = true;
buttonConfiguracion.Click += buttonConfiguracion_Click;
//
// panel2
//
panel2.BackColor = Color.White;
panel2.Controls.Add(labelTotalExpedientes);
panel2.Controls.Add(labelUsuario);
panel2.Controls.Add(labelStatus);
panel2.Location = new Point(3, 320);
panel2.Name = "panel2";
panel2.Size = new Size(444, 40);
panel2.TabIndex = 1;
panel2.Paint += panel2_Paint;
//
// labelTotalExpedientes
//
labelTotalExpedientes.AutoSize = true;
labelTotalExpedientes.Font = new Font("Century Gothic", 8.25F, FontStyle.Regular, GraphicsUnit.Point, 0);
labelTotalExpedientes.Location = new Point(9, 21);
labelTotalExpedientes.Name = "labelTotalExpedientes";
labelTotalExpedientes.Size = new Size(40, 16);
labelTotalExpedientes.TabIndex = 8;
labelTotalExpedientes.Text = "label1";
//
// labelUsuario
//
labelUsuario.AutoSize = true;
labelUsuario.Font = new Font("Century Gothic", 8.25F, FontStyle.Regular, GraphicsUnit.Point, 0);
labelUsuario.Location = new Point(263, 18);
labelUsuario.Name = "labelUsuario";
labelUsuario.Size = new Size(40, 16);
labelUsuario.TabIndex = 7;
labelUsuario.Text = "label1";
labelUsuario.Visible = false;
labelUsuario.Click += label1_Click;
//
// labelStatus
//
labelStatus.AutoSize = true;
labelStatus.Font = new Font("Century Gothic", 8.25F, FontStyle.Regular, GraphicsUnit.Point, 0);
labelStatus.Location = new Point(9, 3);
labelStatus.Name = "labelStatus";
labelStatus.Size = new Size(138, 16);
labelStatus.TabIndex = 0;
labelStatus.Text = "Sin cambios detectados";
//
// listViewExpedientes
//
listViewExpedientes.BorderStyle = BorderStyle.None;
listViewExpedientes.Font = new Font("Century Gothic", 8.25F, FontStyle.Regular, GraphicsUnit.Point, 0);
listViewExpedientes.HeaderStyle = ColumnHeaderStyle.Nonclickable;
listViewExpedientes.Location = new Point(45, 6);
listViewExpedientes.Name = "listViewExpedientes";
listViewExpedientes.Size = new Size(182, 314);
listViewExpedientes.TabIndex = 2;
listViewExpedientes.UseCompatibleStateImageBehavior = false;
listViewExpedientes.View = View.Tile;
listViewExpedientes.MouseClick += listViewExpedientes_MouseClick;
//
// fileSystemWatcher
//
fileSystemWatcher.EnableRaisingEvents = true;
fileSystemWatcher.SynchronizingObject = this;
//
// imageList1
//
imageList1.ColorDepth = ColorDepth.Depth32Bit;
imageList1.ImageSize = new Size(16, 16);
imageList1.TransparentColor = Color.Transparent;
//
// mynotifyicon
//
mynotifyicon.BalloonTipIcon = ToolTipIcon.Info;
mynotifyicon.BalloonTipText = "Su expediente electronico se estará actualizando";
mynotifyicon.BalloonTipTitle = "Expediente electronico";
mynotifyicon.ContextMenuStrip = contextMenuStrip1;
mynotifyicon.Icon = (Icon)resources.GetObject("mynotifyicon.Icon");
mynotifyicon.Text = "Expediente electronico";
mynotifyicon.Visible = true;
mynotifyicon.Click += mynotifyicon_Click;
//
// contextMenuStrip1
//
contextMenuStrip1.Items.AddRange(new ToolStripItem[] { cerrarExpedienteElectronicoToolStripMenuItem });
contextMenuStrip1.Name = "contextMenuStrip1";
contextMenuStrip1.Size = new Size(230, 26);
//
// cerrarExpedienteElectronicoToolStripMenuItem
//
cerrarExpedienteElectronicoToolStripMenuItem.Name = "cerrarExpedienteElectronicoToolStripMenuItem";
cerrarExpedienteElectronicoToolStripMenuItem.Size = new Size(229, 22);
cerrarExpedienteElectronicoToolStripMenuItem.Text = "Cerrar expediente electronico";
cerrarExpedienteElectronicoToolStripMenuItem.Click += cerrarExpedienteElectronicoToolStripMenuItem_Click;
//
// listViewArchivosProcesados
//
listViewArchivosProcesados.BorderStyle = BorderStyle.None;
listViewArchivosProcesados.HeaderStyle = ColumnHeaderStyle.Nonclickable;
listViewArchivosProcesados.Location = new Point(227, 6);
listViewArchivosProcesados.Name = "listViewArchivosProcesados";
listViewArchivosProcesados.Size = new Size(220, 314);
listViewArchivosProcesados.TabIndex = 3;
listViewArchivosProcesados.UseCompatibleStateImageBehavior = false;
listViewArchivosProcesados.View = View.Details;
//
// FormMain
//
AutoScaleDimensions = new SizeF(7F, 17F);
AutoScaleMode = AutoScaleMode.Font;
BackgroundImage = (Image)resources.GetObject("$this.BackgroundImage");
ClientSize = new Size(453, 367);
Controls.Add(listViewArchivosProcesados);
Controls.Add(listViewExpedientes);
Controls.Add(panel2);
Controls.Add(panel1);
Font = new Font("Century Gothic", 9F, FontStyle.Regular, GraphicsUnit.Point, 0);
FormBorderStyle = FormBorderStyle.None;
Icon = (Icon)resources.GetObject("$this.Icon");
MaximizeBox = false;
MinimizeBox = false;
Name = "FormMain";
Text = "FormMain";
Load += FormMain_Load;
Shown += FormMain_Shown;
panel1.ResumeLayout(false);
panel2.ResumeLayout(false);
panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)fileSystemWatcher).EndInit();
contextMenuStrip1.ResumeLayout(false);
ResumeLayout(false);
}
#endregion
private Panel panel1;
private Panel panel2;
private Button buttonConfiguracion;
private ListView listViewExpedientes;
private FileSystemWatcher fileSystemWatcher;
private Button buttonAbrirFolderMov;
private Button buttonAbrirFolder;
private Button buttonAbrirExpediente;
private ImageList imageList1;
private NotifyIcon mynotifyicon;
private ListView listViewArchivosProcesados;
private Label labelStatus;
private ContextMenuStrip contextMenuStrip1;
private ToolStripMenuItem revisarExpedientesToolStripMenuItem;
private ToolStripMenuItem cerrarExpedienteElectronicoToolStripMenuItem;
private Button buttonErrorLog;
private Label labelUsuario;
private Label labelTotalExpedientes;
private Button ProcesoManual;
private Button btn_VisorExpedientes;
}
}

1909
Forms/FormMain.cs Normal file

File diff suppressed because it is too large Load Diff

611
Forms/FormMain.resx Normal file
View File

@@ -0,0 +1,611 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="btn_VisorExpedientes.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wAAADsABataJCQAAAfpJREFUWEftlr8rhVEYxy9SGCgxGJSyWGSwSZnEYDP5H2SzMzHhD7AoJmWyWqT8
KAtJDAYGTAwyKPH5vHXqDrrvOe99hfKtT91zes9znvPr+d7Kv/6SRmAFTuAJ3uEVrmALZqAFStcoHMNH
BI8wB01QtxphCVypwR9gGcagExqgDQZhFtyZkMgB9EBhOfkmGOwNFqAV8jQFt+C4G+iFQnLlBnkGV5yi
LjgEx5+Bu5Qkz9xtd+Wpkwd1wAWYxJodKQoXzm2vR0PgIqTfjhj51JzcCxdz5nlaB+OtZq0I+c4d4G0v
Q8NgvLusFaHwlIqe/VdyN43Zl7VyZIXzY995WdoDY45nrRyFomORKUvbYMzprJUja7sfJ7/dGtoFY1qk
cqWx+LHltSxdgjF9lrnS1fzY2l6G9AOP9QWa7ciTlmoCvoYyNA/G28laEdLPtVQHRZ1ZDbVDeIITdsRK
P3eQrqaxFNUGGGc/ayXIPxP6uYN1NY0lVYvgeM9+wI5UeXn0c4PoalE3GLntYeVyDd1QSP6Z0M8NpKNp
LNb2r2TCXrh7CCt3cn+fQ+EkLEj6uQmEVXmxLK9WOIuM7zxUUPHM3XYndfK6k1D6uZaqq4WJqnHFPrVJ
qFapSQTpahqLtd2n6v2oVWS+JYlUVSdxasdPyCSc/Chr/et3qFL5BH2hlRT2cx6UAAAAAElFTkSuQmCC
</value>
</data>
<data name="ProcesoManual.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAABIVJREFUaEPV
ml2IVVUUxzcKo4wgQzj0koLomIUMBT3FiKAPIzjkixEyCOZDQQ8V+TQzMuPHi2+Kooii4kOIzxK9pUQE
lYovOlDTB0FKUVaIWvhR//+ZtY5r77vuPffMPZc5LvjN3R9r773+Z+9z79n7TBj+cKRjYH1gFzgMPgM/
g0fgieEncBkcAfRd6fVVFrewDLAl4Dvwn8Bg20k/BtfAR+A5r28PWF+Ut5m5ABsGDKgTHoDjYLk3hgLb
Cz6IyqRiKStKsDDvIIRl4Hdgr+5DcBtMC79ImfXRtM3fB3tAj/ZvxpkC9GkUIA6T4mA7TNOaXxR1EsIa
sA+8C14BvbZefBaDQUCfj8GfwBuD6StgrWlLUerjC8gysyrpWEQkYC7AesFb4GvgjXEXvAm4bGx5cwFZ
wexM0NG7OprvWIAFxvvoJkjH89KtBWSFT9db2onmKxVAYFxiBwG/nbyxSwnQNdeMygUosM3gHxnHo3AJ
bQHNroLmuylgQsZJx9Z0y5u4H/wKbMM/TJp0TQCs1f3XloCz4qjcAfyK5FWx5d24BzT4InwBsNdAqnaH
qdffCdZVKgA2Lv3asZulmwq4KA7q/Kl1FB+9SlUL6GGfbZI/BWRtpYPVgDcugyN8knzROiowXq2Gn/r5
YvZPCIeAThE5nzrWldk/IfwIrID1qWNdgL0NToJhyYdXga57fn4PFqQN6wBsm8Soy3wdCO9LgXLUa1wH
YPtNnGQ3CKeBnYFtXuM6ANsqMWqs50D4SjJaWMletRvAXpAYNdarIHtUYAHhM3gt1z9hbBKjxstNUaZE
Vc14DesE7FuJVWOOBEx7jeoEY5RYcwH8ozxLApRoBn7wGtUJGA/IGGs+A7+ZDI81ooelOsHYJEYVcAuE
L6RAGfAa1wHYyyZO8jkIJ4DOAD9HvcZ1AMYzVRvrMRDek4wWHvAa1wHYGYlRY30HZL9ufwMW8vhvyGs8
38C46eH9yjgJ9y8rtZJrawy8njasC7A3AK+6zsD1rDx1rCuwSxK8CpjIylPH+QLGJTLepG4I6NIh/4L+
rC5x5Pest5H2qHRfLH0yuMmknA9w16VOZ+BUXp848+zfKm2Fe7XmCkwFkFwE06ac8NhxVV6vCXGmAF1j
dr1pWvPRVaoCGAVo/4SHaRuBvhjROPZH7aJMsQCmKw+ewKwAHY+vnuzYN0B0JpV2UiQgu/O7AcwTYNPc
yAw2tIsyre+Bv0DXnpNg9h7w2O62izLFM0AR+XlplcCKZsBdunGm/Zv4E/CSbdspsCIBTDeIiDONS4hv
Hvm6yZ6bKjxYugA2gI4PAmBFS0iZitpFmXgG9phyPodw82Cvin4SHk3y0XYUrAINgmD8kRwAO8EBsCmp
b2cGNP30dyLpRAVEKqXuecCDJE9Amr4HZoC+6OY2kDsp68Pv9/zhEUaBHL9dlmbttAPphBV7bVkKjC9C
+C7BW1ZlGfPGKEOcSf6RohUwvnrisbzdZOvVbSfNPYj7DqIMbmFZYDzh5iEx37F9A/TFoA2am5EvAY/G
uQtc4fVVjpHwP3WFUQkgzFYnAAAAAElFTkSuQmCC
</value>
</data>
<data name="buttonErrorLog.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAEwAAABMCAYAAADHl1ErAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vAAADrwBlbxySQAAAlRJREFUeF7tmr/LT1Ecx79JDAaSRbJISWKQRRaJiUEPJcnCIMwGO0mkDLL4Ewwi
i0EWq90skWwiSXi9nzp1un3O/fF8Leee96tew/c+937rvJ/z/Zxfd2GMMcYYY4wxxhhjjDHGzIc9eA43
rH4yvezFX/gX3+AmND2soMJKOrQB1uNzdGgTUO16hmNCW4f78RJex6t4HLdhUwyFthPv4FfM70n+Rt1/
HpuhFNot/JFdG/It7sImiEJbi5/wIDbB/wjtHW7FZriNURBjbC6s3TilZuU2F5Z4gFEYQzYZ1kb8jlEg
fTYZljiKUSB9NhuWuIxRKCW7YWklcBbv4gldCNBkWKuFWXANo2Aio571EPN7bmCOwtJk+Atq9VA9Y3tY
6Wf4E7v3ptBSWOn6K6yeMTWsr2a9x+iZm5iHlTyFVbMZo16SHCrwR3DKKPsSq0eNiBo3FFZCvXRsaPrn
aCpTNSex27BuWBoN7+Nn/IB6JmdKaIexel5jalDUsy5i3midC5zGhBbwUc2K1EBTPTvwI5Z+htHyKYU2
dbdDU5lZcABLNUvFPWq8QtMGYvS3krPoYWPQvv4fjEKY4ixq2FiWDU0DQ/Wj5FSuYBTGGB9hU3SXO1NU
vdNmZTMsE5a8h82wbFhSz+t7mkDnjpqnRUFMsanQtuMLjIKI1On4Y+w7YW8CvVvxFL9hHkRSC+wnuA9F
6YS9qdCE5lNaHVzA9KLKMdyCXRzaGiiFplewTIEotDNoeshD0zKrmZdYlkEbktqEPLT6yRhjjDHGGGOM
McYYY4ypncXiHwDC8NaKd9TGAAAAAElFTkSuQmCC
</value>
</data>
<data name="buttonAbrirFolderMov.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAEwAAABMCAYAAADHl1ErAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vAAADrwBlbxySQAAAOxJREFUeF7t07Ftw0AQBVEWIbgsZ4IKdOa+nLgJa2NiAF4kDq15wIQH/At2S5Ik
SZIkSZLk//mc/k7qMV3KbfqZ6DOv6Hf6mC7ja6KPvLLv6RLOPMV990nt7FPcpz9NwynuU58mDTakRWMN
JW+KzsGQFo01pEVjDWnRWENaNHa1I/RmNS0au9oRerOaFo01pEVjDWnRWENaNNaQFo01pEVjDWnRWEPJ
m6JzMKRFYw1p0VhDWjTWkBaNXe0IvVlNi8audoTerKZFYw1p0VhDWjTWkBaNNaRFYw1p0VhDWjTWUJIk
SZIkSZIk17ZtT5MFz0WDR+g5AAAAAElFTkSuQmCC
</value>
</data>
<data name="buttonAbrirFolder.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAEwAAABMCAYAAADHl1ErAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vAAADrwBlbxySQAAAKxJREFUeF7t08FJBVEURMHBNIzN2IxGDOOHom/hzga/q6aZKjj75sK9AAAAAAAA
AG7s9fQ4ff2j99MtvZw+Tukof3VLb6d0jGe6pc9TOsYzAb+kV2k1IQ1vNSENbzUhDW81IQ1vNSENbzUh
DW81IQ1vNSENbzUhDW81IQ1vNSENbzUhDW81IQ1vNSENbzUhDW81IQ1vNSENbzUhDW81IQ1vBQAAAAAA
AAD8uK5vAw7ws5Gd92YAAAAASUVORK5CYII=
</value>
</data>
<data name="buttonAbrirExpediente.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAEwAAABMCAYAAADHl1ErAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vAAADrwBlbxySQAABK5JREFUeF7tm1+oFUUcxy8RhoQaYYpIFmGJhAa+SG+iiQgVPehDJD5E4oMgkvrg
QxGKhH+JQEQRoYeQRKKEyCTEjFBCRJEIRJQQMSLSCCVCtO/HewZ+DLPn7uyud/dcfx/4cM9ZOLuzszsz
v9/M3CHHcRzHcRzHcRzHcRzHaY5xcpqc2ZPPT0unB5WyVn4tL8n/5P2EN+VP8iP5qnykeEpSSWdlqnLK
eEVullPkmOVJyRvC25KqhCrelp/KyXJM8Ya8JlM3HbwrF8kX5Pie0+Vs+ZbkjbolU7/9Q66UA89jcpu8
J1M3infkcXlC9uMJ+a8Mv6OC7XnwgGTgGEhogkdlfFNWmtQcCY/3/haxQNrfHpb7ZPwwvpNce6CgwCel
vZGUO2RZ6P/sb/lO2LFTxpXGiDowlUYz/EraGyhyrizLh5Lf/CbXy7dlqlkGv5EjvbWd4GOZuoGUu2UO
z/b+8lDOyNQ5rbnnH3XelKmCF7lf5jJJfibjc/0tGTx+NMdwuewkE+R1aQvbzwvyeZnLXpk635cSnpE2
hPldEix3DjpwewMpqdBQqX/JKpH6S5K+i/NslOvkn71jsyTQNxKuhOvmDC6jAjdOiBAKmJLgMsRI82RO
hw80RfLNUDk2pyQ0OSXfe/BtGPsAKVun0iietK2cWIb9rbIuayTn2/PgW3/ih7hJdoZfZCgYiXH4vERS
cNKcJmCUJFwIbypx2FIZvz1kBa/J0zKUhTJ2gpdlKBTS3G5IRq2mIZxA+ioi/RCwkjKtkuSdpEdFCT5l
bZ0PZCgQFQXMIPw6/LFRGFXt2xzbL2dFyto6NgX6lgOCEGPG8MdGoe+yFZDrMdk6jH62UK/Ih8U5aa+V
K/FZq0yUtkA0CZLihwGdO/2ivV4VGRBaI+7wGRWZKWiahbJovj9XMoHWiCsMdkmG+yYpM1VU1s5VGDME
BLJAdN4E/UbGXMOMRyukKuxd+Y9kTow+jSW09+U7sirMrNrr1LHVNyzu9FlnhM+lPR6sulDBeftNFubY
aqcPNqxgPgyKhn9GuS8kq0G5bJGpcyIBc+p4bOthBdgOeTsHhM3hUl6VVSqN/NDmqiTXNPdl5lg/OxG4
2tQoJLjkebagKS/KKvsmGEgYVHjjQgfO3D2pWOo61k6kRnHHzzwXCbA9ViSzri/KJmBicaQ5OcraCeyw
T1hh37qRZKaBCs6dUEzBnFvqGtiZ6R1gci4UjKccL7qW9YisM3fGgkfqvNiJ5hiIZzc/kT+b7zmukFWJ
F3uDlK1TU9Rg59AJWDfI3GT5kJwqq1IUznRuEQTiZTZChzIdcZC+rE5QGQ8+wc4us0G8kPu9pHnaY0U2
0SmnuoHOLuQGGCVtgZnuKTM1Q3OqA3P9cUpWZnWpdXI2oyAj42JZJx5jFSnePjAwm1GArUY/SHsDKdkH
UfemWEE6L+15eVsHco/YSBvqWBarCudnG2fc3AdyQ12A5lm0ZZPRa77MhdUoAuV48QUHesumpd+m4Mvy
oFwt2S9BQs5NU9mEKqxFvi5Je9iqnqr8MbMp2EIz8W3nFfB/bKiB/+tMTei7npOMnsjnMd3cHMdxHMdx
HMdxHMdxnFFkaOh/A3Bij7cnWYUAAAAASUVORK5CYII=
</value>
</data>
<data name="buttonConfiguracion.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAEwAAABMCAYAAADHl1ErAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vAAADrwBlbxySQAAAwtJREFUeF7tmk/IDVEYh28SSf4kkiSSbGwkZaXsJCUpSVkIK0oSSUlC2dhYSMqC
hZQkJVlaSCGRJBtlYaEkJSkL4fnlm5pO79y5893B/Pk99XS/bnPPPe/5zj3zznvOwBhjjDHGGGOMMcYY
Y0yHmDPxWsYaXP3nz36yHm/jV5ynN0p4gL/wCe7B6dh5puJOfIYKPvMoDmMV5q+Xn/E8zsTOcgHTwOVH
HDZjLmL0uXfYaaKZkrkbIzSDNJuizxzHznMPo+Df4lrUwOknKnfhWYyu/4GLsPNsxGgAqnoTe8NrjAah
ipuxF2hNeoTRIFRRM6wTd0gFofQhQmvOc4wGYDJqpi7DIqZNvDaac/gBz2A+mFn4AqPAv+Mt1CK/Eufi
DFyKm/ASfsHosy8xP9OUBB/BN6i+NBrNLA1WFsxPvI/b8PrEe6l3cTmWsRCvYtTGHdyA+g4Nfva++lI0
2xvBdswHMkwN5jGcglXYh0opojYj1afGkj3vjeJhnCwHMGozUn1qJMOy+NQbOC5qI2o7Un1rHOqUsnj9
1KJOZ37DxTguWtPUVvQdeVXdWIeNRXdG3Z0+YRSAFu66KLoJaCCvYKvqZ6o+nMI0mDoX4egmo3+W0pJW
orwqDWgJ1kW0bm7B1qLySxpQnZXSBZi2vx9bSzRgdTIb0/bHSVf+O3sxDUizoi5WYNp+oxPVYfyLRV+P
XGn7rVv0nVaMiBPXivjRaBL44bsiUeZdpMs7oDujNmWzzo5SQFSl9W8VEMs2iBuB7pBRiVpl5KeYDzQz
X6LW4KmcrXq8bg5lJepXmE8jWlWiFmWbIHXsGGVqsFq/CVKGgriG0QBU8THOx15Qx+63tth6gzZho0Go
qga+82gdK0oLTuMOVI52Eg+hjgTooEp0vZ4sOk9U8pE60lS09a8TPdFnZGOz+LrQIbgocB2aKyLN7/Je
xs6iwE/ge0wDL5spOi+Wv14/04OonK3zKE/bill1Y5TnPSWkqk48RD05VH2k6gxKPEddh3px4tAYY4wx
xhhjjDHGGGP6wGDwGy4sWQnlp0d2AAAAAElFTkSuQmCC
</value>
</data>
<metadata name="fileSystemWatcher.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="$this.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAF0AAAA5CAIAAADbdrDYAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vAAADrwBlbxySQAAAHZJREFUaEPtx7EJADAMwLD8P+eqXtWCN9MTDFo0sycffuAHfuAHfuAHfuAHfuAH
fuAHfuAHfuAHfuAHfuAHfuAHfuAHfuAHfuAHfuAHfuAHfuAHfuAHfuAHfuAHfuAHfuAHfuAHfuAHfuAH
fuAHfuAHfuDn2XMBkS5RGzcRhIgAAAAASUVORK5CYII=
</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAMAEBAAAAEAIABoBAAANgAAACAgAAABACAAqBAAAJ4EAAAwMAAAAQAgAKglAABGFQAAKAAAABAA
AAAgAAAAAQAgAAAAAAAABAAAIy4AACMuAAAAAAAAAAAAAAAAAAAAAAAAlpWVALW0swdWV1pIMTI0pycl
I+MoJBz7KCQd+ygmI+M0NDanXF1fSL+9vAefnp4AAAAAAAAAAAD///8AV1dXAH59fhg1NjeSKiMW7llA
EP+MYhT/o3IX/6JyF/+OZyP/XEUf/yskF+46Oz2RiIeHGGJhYQD///8AbGpqAIKBgRguLi6xQTAP/6d1
GP/Qkh7/1JQe/9OUHv/Ynjj/5LJo/9mhRf+lcxb/QjAQ/zQ0NLCOjY0Yd3Z1APf18wY3ODmSQjAQ/7yE
G//TlB7/0JIe/9CSHv/Qkh//3alX/+S0dP/frF7/1Zcm/7uDGv9CMRH/Pz9Bkf///wZdXWBKLCUY7ad1
GP/TlB7/0JIe/9CSHv/Qkh7/0JIe/9mhRf/js3H/47Nx/9ulTf/TlSD/pnQX/y8oG+1oaWtINzg6qFtB
Ef/Qkh7/0JIe/9CSHv/Qkh3/0JEd/9CRHP/RlCL/3KdS/+Ozcf/ism7/1548/9CSHf9bQRL/P0BCpiwq
KOSNYxX/05Qe/9CSHf/Qkh//05cq/9WbNP/UmjL/0ZUl/9OXKv/frWH/5LRz/9+sYP/VliT/i2IU/zIx
LuItKCH7o3MX/9KTHv/SlSb/26VO/+Gwaf/js3D/361k/92pWv/eq17/4bBq/+Kxbf/bplD/05Uh/6Jy
F/8yLib6Lioj+6Z3Jv/Ynz//3atf/+S3e//dq2D/26ZW/9mjT//YoEn/2KFL/9igSv/WnkP/1Jk2/9WZ
M/+kdib/My8o+jAuK+SRazD/4K1h/+Gzc//jtnn/1p1E/9OZOv/Umjv/1Jo7/9SaO//Umjv/1Jo8/9Sa
PP/YnT7/jmgp/zY0MuM+P0CpYk0t/9+tZv/jtXf/5bh//96tZf/bqFr/1p5F/9SaO//Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/15GH/9HSEmna2tsSjQvKO64lGb/6LyC/+W5gP/luYH/5bmA/+Cva//Wnkb/1Jo7/9Sa
PP/Umjz/15w9/6l7L/81LiTtdnZ4Sf///wZFRUaTTD8v/9CodP/ovIL/5bmA/+W5gP/luYH/4bJw/9ad
Q//Umjz/15w9/7+LNv9HNxz/TU1Okv///waDgoEAmpmZGT4+PbJNQC//uJVn/+W5gP/pvIL/6LuC/+i7
gP/cplH/1Jo7/6l7L/9INx3/RENDsaSjoxiNi4sA////AHNycgCamZgZSUlKkzcyK+9mUzv/m31X/7SR
ZP+0kWP/k284/15GH/83MCXvT09QkqKhoRh9e3sA////AAAAAAAAAAAAtrW0ANTS0Qdzc3RKSEhJqTk3
NuU5NTH8OTYy/Do4N+VLS02oeXl7SdrY1we9u7sAAAAAAAAAAADgBwAAwAMAAIABAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAMADAADgBwAAKAAAACAAAABAAAAAAQAgAAAA
AAAAEAAAIy4AACMuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7ezrAP//
/wS1s7IphYODa2VkY6xPTk3YQEBA8To5Ofw6Ojn8QkFB8VFQUNhoZ2erioiHarq4tyj///8E8O/uAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+HgAP//
/wOhoJ83Z2Zllzk5ON8YGBn7BQYI/wAAAf8BAQD/AwIA/wMCAP8BAQD/AAAB/wYHCf8aGhv7Pj093m5t
bJapp6Y1////A+fl5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AIWD
ggC+vLsacXBviTMyMuoJCQr/AgEA/xwTBP9IMwz/cE8S/4phFv+WaRf/lmkX/4phFv9vTxL/RzIL/xsU
CP8CAQH/CwsM/zk4OOl6eXiIxsTDGZSSkQD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPTz
8gAAAAAApKKhNlNSUcITExP+AgEA/y8hCP9/WhT/uIEc/86RHv/TlB//1JQe/9OUHv/TlB7/05Qe/9SW
JP/Wn0P/wpRO/35aGP8tIAf/AgEA/xYWF/5cW1vBrqyrNAAAAAD29fQAAAAAAAAAAAAAAAAAAAAAAAAA
AADw7+4AAAAAAJ2bmkFEQ0PZBgYH/xMOA/9xUBL/wYcd/9OUH//Skx7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hf/TmC7/3apa/+Ozcv/grF3/1JUh/8CHHP9vThL/Eg0D/wkJCf9NTUzYp6alQB4dHQDx8O8AAAAAAAAA
AAAAAAAA+/r5AHh2dQCmpKQ2RURD2QQEBP8kGQb/mm0Y/9GTHv/Rkx7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh3/0pYo/9+sYf/jtHL/47Ny/+CuZf/Slif/0ZMd/9GTHv+Yaxj/IhgG/wYGBv9PTk7XsbCvNIuJ
iQD49/YAAAAAAAAAAACwrq0AxsTDG1VUVMIGBwf/JBoG/6d1Gv/TlB7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CRHf/YoEH/47Ny/+Ozcf/js3H/47Nw/9igQf/Qkh3/0JIe/9OUHv+kdBn/IhgG/wkK
Cv9hYGDA0M7MGbm3twAAAAAA0c7NAP///wJ2dHSKFBQV/xMNA/+bbRj/05Qe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JId/9mjSf/jtHL/47Nx/+Ozcf/js3L/4K9m/9OYLv/Qkh3/0JIe/9OU
Hv+Yaxj/EgwC/xoaG/+DgoGI////As7MywCZl5YAqKalODc2NuoBAQD/clET/9GTHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/1Zs1/+Kxbf/js3H/47Nx/+Ozcf/js3L/3apa/9GU
JP/Qkh3/0JIe/9GTHv9vTxL/AQEA/0FBQei0srE2qKalAP///wNubWyYCwsM/zAiCP/BiB3/0ZMe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/QkyD/26VQ/+Ozcv/js3H/47Nx/+Oz
cf/js3H/2qNK/9CSH//Qkh7/0ZMe/8CHHf8uIAf/DxAR/3x7epX///8CvLq5Kz8/Pt8BAQD/gFsU/9OU
H//Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/SlSb/3qpb/+Oz
cv/js3H/47Nx/+Ozcf/isW3/1pw5/9CSHf/Qkh7/05Qf/35ZFP8BAQD/S0tK3cjGxSmOjIxuHBwd+x0U
BP+5ghz/0pMe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hf/Tlyr/3qte/+Ozcv/js3H/47Nx/+Ozcv/grWP/05cq/9CSHf/Skx7/t4Ec/xsSA/8kJCX7nJuaam9t
ba4HCAr/SjQM/86RHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0JId/9CRHf/Qkh3/0JEd/9CR
Hf/Qkh3/0JIe/9CSHf/Tlyv/36xh/+Ozcv/js3H/47Nx/+Ozcv/bpVD/0JIf/9CSHv/OkR7/RzIM/wwN
Dv99fHurWFdX2gABAv9yURL/05Qf/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0JIe/9KVJv/VmzX/2KBB/9mi
R//YoUX/154+/9OYLf/Qkh//0JIf/9CSHv/Zokf/47Ny/+Ozcf/js3H/47Ny/9+tYf/RlCP/0JIe/9OU
H/9wTxL/AgME/2ZlZdhKSUnzAgEA/4xjFv/UlB7/0JIe/9CSHv/Qkh7/0JId/9KVJ//Zokf/361j/+Ky
bv/js3L/47Ny/+Ozcv/frWP/26VP/9ulTv/cqFX/3alY/+CuZv/js3H/47Nx/+Ozcf/jtHP/3ahX/9CT
IP/Qkh7/1JQe/4phFv8CAgH/V1ZW8UNCQv4EAwD/mGsX/9OUHv/Qkh3/0JId/9CSHf/UmTH/36xf/+Oz
cf/js3L/47Ny/+Ozcv/js3L/4bFr/9ynVf/isWz/47Ny/+O0c//jtHP/47Ry/+Ozcf/jsnD/4rFs/92q
Wv/TmC7/0JId/9CSHf/TlB7/lmkX/wQDAP9QT0/8REND/gQDAP+ZbR7/1Zcp/9KVKf/Sliz/1Jo2/+Gw
a//kt3r/5LZ5/+O1d//gr2n/365n/+KycP/erWT/2qVV/9qlVP/Zo07/2qVT/9umVv/bpVX/2qRQ/9ih
SP/WnT7/05cx/9KVK//SlSv/0pUq/9WXKv+Xax7/BAMA/1FQUPxNTEzzAgEB/5BpKv/XnDz/1p5F/96s
ZP/dqmH/5bmA/+W5gP/luYD/3Kpf/9WbP//Umz7/1p1E/9WdQ//Umjz/1Jo7/9SaO//Umjv/1Jo7/9Sa
O//Umjv/1Jo7/9SaO//Umjz/1Jo8/9SaPP/Umjz/2J09/41mKf8CAgH/WllZ8V5dXNsBAgP/dlYj/9ed
Pf/drGP/4bJx/96tZv/luYH/5bmB/+K0dv/WnUT/1Jo7/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/XnD3/clMh/wMEBf9sa2rYd3Z1rwkK
DP9MOBf/1Z1E/+KzdP/ZpFL/3Kle/+W5gf/luYH/4rNz/9WcQP/Umjv/1Jo8/9SaO//Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9KZPP9JNRX/Dw8R/4WE
g6uZl5ZvIiIi/B4VB//Ck0v/4rJu/9WcQf/frmn/5bmB/+W5gP/kuH7/3apf/9adQ//Umz3/16BJ/9ad
Q//Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Wmzz/u4g2/xwU
B/8rKyv7paSja8bDwixKSkngAgEA/4ttRP/nuHv/365p/+S3ff/luYD/5bmA/+W5gP/luYD/4rR1/+Cw
bf/jtXj/2aRS/9SZOv/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9ec
Pf+BXib/AgIB/1dWVd7OzMsp////A359fJkPEBD/Niwf/9WteP/nuoL/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYH/5bqB/+W5gf/hsXD/16BJ/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Vmzz/xI84/y8iDv8VFhf/i4mIl////wKqqKcAtrSzOkVFROoDAgH/f2dI/+e6gf/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/jtXj/2qZX/9SaPf/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9WbPf9zVCL/AwIB/1FQT+m/vbw3tLKxAMzKyQD///8Di4mIjB4eHv8WEgz/rIxh/+i8
gv/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/kuH3/26dZ/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/XnD3/nXIu/xMNBf8lJSX/lpSUif///wLIxsUAAAAAAL27ugDRz84cbGtqxAwM
Df8qIhj/updp/+i8gv/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/jtnr/16BL/9Sa
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
Lf0DAwP/AAAA/wAAAP8OCgP/Py0M/31ZFf+tehv/xose/9CSHv/TlB//1JUf/9SVH//UlR//1JUf/9OU
H//Qkh7/xYoc/6x6H/+BYjD/PzAY/wwJAv8AAAD/AAAA/wUFBf83Njb8iIaGvcbDwjj///8A5+XkAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADc2tkA////BLCu
rV5gX17jEhIR/wAAAP8AAAD/DQoD/1A5Dv+gcRr/yo4e/9OUH//SlB7/0ZIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHf/Qkh//1Zsz/9+rWv/ltG7/zpc2/51vGP9NNw7/DAkD/wAAAP8AAAD/GBcX/2xr
a+G4trVb////A9jW1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbU
0gD///4FqKalck1MTPEGBgb/AAAA/wICAf81Jgr/mWwZ/82QHv/TlB7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JId/9GUJP/ao0r/4rFr/+O0cv/ism3/1Zox/9OUHf/MkB7/lmoY/zMk
Cv8CAQH/AAAA/woKCv9bWlnwsbCvbvf08wXS0M8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA1NLRAP///wSopqVySEdG9AMDA/8AAAD/CgcC/2JFEf/Ahx3/05Qe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0pUm/92pV//js3H/47Nx/+Ozcf/ism//1Zw3/9CR
Hf/Qkh7/05Qe/7+GHf9eQxH/CQYC/wAAAP8GBgX/VVRU87KxsG7///8Dz8zLAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADS0M8AAAAAALGvrl9PTk3xAwMD/wAAAP8RDAT/floV/86RHv/Rkx7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh//26VO/+Ozcv/js3H/47Nx/+Oz
cf/js3L/2aNK/9CSHf/Qkh7/0JIe/9KTHv/NkB7/e1cV/w8LBP8AAAD/BgYG/11cXPC6uLdbERAQAMrI
xwAAAAAAAAAAAAAAAAAAAAAAAAAAAMzKyQCurKsAwb++PGJhYeMHBwf/AAAA/xEMBP+IYRf/0ZMf/9GS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/Tlyv/4a9p/+Oz
cv/js3H/47Nx/+Ozcf/js3L/361j/9KWJ//Qkh3/0JIe/9CSHv/Rkh7/0JIe/4ReFv8PCwT/AAAA/wsL
C/9ycXDhyMXEObu5uADCwL8AAAAAAAAAAAAAAAAAAAAAAMXDwgDb2dcXgX9+wBMTE/8AAAD/CgcC/39a
Ff/Rkx//0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CR
Hf/VnDj/47Jw/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Nx/9qkS//Qkh//0JIe/9CSHv/Qkh7/0JIe/9CS
Hv97VxX/CQYC/wAAAP8cHBv/kI+OvNrY1xXFw8IAAAAAAAAAAAAAAAAAxcPCAP///wCko6J+MjEx/gAA
AP8BAQH/Y0YR/86RHv/Rkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CRHf/VnDf/4rJv/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Nx/+Kxbf/WnTr/0JId/9CS
Hv/Qkh7/0JIe/9GSHv/NkB7/X0MR/wEBAf8AAAD/QD8//bGvrnoAAAAAwb++AAAAAAAAAAAAvry7AMrI
xy9jYmLjAwMD/wAAAP83Jwv/wYgd/9GTHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/Slif/4K5k/+Ozcv/js3H/47Nx/+Ozcf/js3H/47Nx/+Oz
cv/grmX/05cs/9CSHf/Qkh7/0JIe/9CSHv/Skx7/v4Yd/zQlCv8AAAD/BwcH/3RzcuDPzcsswb++AAAA
AADBv74A////ApuZmJIjIiL/AAAA/w4KA/+abRn/05Qe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/2KFE/+Ozcf/js3H/47Nx/+Oz
cf/js3H/47Nx/+Ozcf/js3L/3alY/9GUI//Qkh7/0JIe/9CSHv/Qkh7/05Qe/5dqGP8NCQP/AAAA/y8v
Lv+pp6aN////AcC+vQDAvr0Az83MKWRjYuICAgL/AAAA/1I6D//OkB7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0ZQj/92p
WP/js3L/47Nx/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Nx/9miR//Qkh7/0JIe/9CSHv/Qkh7/0JIe/82Q
Hv9ONw7/AAAA/wYGBv92dHTg09DPJsG/vgB/fn0AqaemdS8uLv8AAAD/DwsD/6JyGv/TlB7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JId/9OXK//frWL/47Ny/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Nx/+KxbP/Vmzb/0JId/9CS
Hv/Qkh7/0JIe/9OUHv+ecBn/DQoD/wAAAP89PTz/tbSzcKOhoAD39fMOgYB/vQwMDP8AAAD/QS8M/8uP
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/UmTH/4K5m/+Ozcv/js3H/47Nx/+Ozcf/js3H/47Nx/+Oz
cv/frGH/0pYo/9CSHf/Qkh7/0JIe/9CSHv/Kjh7/PiwM/wAAAP8UFBT/kpGQuvLv7gzLycg4WVhY6gAA
AP8BAQH/gFsV/9OUH//Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/1Zo0/+CvZ//js3L/47Nx/+Oz
cf/js3H/47Nx/+Ozcf/js3L/26ZR/9CTIP/Qkh7/0JIe/9CSHv/TlB//fFgV/wAAAP8BAQH/bGtq6NHO
zTSzsbBxNzY2/AAAAP8UDgT/r3sb/9KTHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JId/9Wb
Nf/hr2j/47Ny/+Ozcf/js3H/47Nx/+Ozcf/js3H/4rJv/9adPP/Qkh3/0JIe/9CSHv/SlB7/rHkb/xIN
BP8AAAD/R0ZG/L68u2ycm5qmHh4d/wAAAP8zJAr/x4we/9GSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JId/9CRHf/Qkh7/0JIf/9CTIP/Qkh//0JIe/9CSHf/QkR3/0JId/9CS
Hv/Qkh7/0JIe/9CSHf/Xnz//47Jw/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Ry/92pWP/QkyD/0JIe/9CS
Hv/Rkh7/xYse/y8iCf8AAAD/Kioq/6upqKGJiIfODw4O/wAAAP9TOw//0JIf/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/RkyL/1Jkw/9efQf/apU7/3KhW/9ypWv/cqFj/26ZS/9mi
R//WnDn/0ZUl/9CRHP/Qkh3/0JId/9CRHf/UmTH/4rFt/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Ny/96r
X//RkyL/0JIe/9CSHv/Qkh7/0JIe/084Dv8AAAD/GBcX/5qYmMp6eXjpBgYG/wAAAP9tTRP/05Qf/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0ZQk/9efPv/eqlz/4rFs/+Ozcf/jtHL/47Ry/+O0
cv/jtHL/47Rz/+KxbP/bplL/1p4+/9igQv/Zo0n/2qRN/9ulT//eqlz/47Nx/+Ozcf/js3H/47Nx/+Oz
cf/js3H/47Rz/9yoVv/Qkh//0JIe/9CSHv/Qkh7/05Qf/2lLEv8AAAD/DQ0M/4yKiuVvbm74AgIC/wAA
AP9/WhX/1JUf/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/VmjT/3qtd/+OzcP/js3L/47Nx/+Oz
cf/js3H/47Nx/+Ozcf/js3L/4K9n/9ihRf/cqFf/4rFs/+Ozcv/js3L/47Ry/+O0cv/js3L/47Nx/+Oz
cf/js3H/47Nx/+Ozcf/jtHL/4bFr/9WbNv/Qkh3/0JIe/9CSHv/Qkh7/1JUf/3tXFf8AAAD/BwcH/4KA
gPRraWn/AQEB/wEBAf+IYBb/1JQe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0JIf/9efP//hsGr/47Ny/+Oz
cf/js3H/47Nx/+Ozcf/js3H/47Nx/+Ozcf/js3L/26dT/92qW//ktHP/47Ny/+Ozcv/js3L/47Ny/+Oz
cv/js3L/47Ny/+Ozcv/js3L/47Nw/+KxbP/eq13/1Zw4/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/1JQe/4Nd
Ff8AAAD/BQUF/359fPxramr/AQEB/wEBAf+IYBj/1JUi/9GTIv/RkyP/0ZMj/9GTI//RkyT/16BC/+Kz
cf/ktXb/5LV1/+S1dv/ktXb/5LV2/+Kzc//is3L/47R1/+S2d//jtHX/2qVS/96tZ//dq2H/26ZV/9um
Vf/cqVz/3qtg/96rYf/eq2D/3ald/9ynV//apE//2KBF/9WbOf/Sliv/0ZQk/9GUJf/RlCT/0ZMj/9GT
I//RkyL/1JYi/4NdF/8AAAD/BQUF/399ffxycXH4AwMD/wAAAP+CXiT/15w5/9SZOf/UmTn/1Zs+/9eg
Sv/VnUL/4bJy/+W5gf/luYD/5bmA/+W5gP/kt3z/3Klf/9egS//XoEn/2aNQ/9yqX//cqV//1ZxB/9Wc
Qf/Umj3/1Jo7/9SaO//Umjz/1Jo9/9SaPf/Umj3/1Jo8/9SaO//UmTr/1Jk6/9SZOv/Umjv/1Jo7/9Sa
O//Umjr/1Jk6/9SZOf/UmTn/15w5/31bI/8AAAD/CAgI/4SDgvV/fX3pCAgI/wAAAP9xUyP/15w9/9Sa
PP/Umz7/3ati/+O1eP/aplj/5Ld8/+W5gP/luYD/5bmA/+W5gP/dq2H/1Jo8/9SaO//Umjv/1Jo7/9Sa
O//Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/15w9/2xPIP8AAAD/Dg4O/5COjuWQjo3PERER/wAA
AP9WPxv/1Zs9/9SaO//Zo1D/5Lh+/+Gycv/bp1r/5bl//+W5gP/luYD/5bmA/+O1eP/Wn0f/1Jo7/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/1E7Gf8AAAD/Gxsb/5+e
ncqkoqGnIyMj/wAAAP81JxH/y5Q7/9WbPv/fr2r/5bmA/9qmV//ZpFP/5bl//+W5gP/luYD/5bmB/+Cw
bf/Umz7/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Vmjz/yZM6/zEk
D/8AAAD/MTAw/7GvrqK5t7ZyQD8//QAAAP8VEAj/s4I0/9mgR//jtnr/4LBt/9WbP//Yo1D/5Lh//+W5
gP/luYD/5bmB/+Gycf/Vm0D/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/WnD3/sIAz/xMOBv8AAAD/UVBP/MLAv23OzMs5ZmVk6wAAAP8CAQH/hGEn/92nVf/kt33/2KNQ/9OZ
Of/bp1r/5bmA/+W5gP/luYD/5bmA/+S4fv/cqV3/1Zs//9SZO//Umjv/1Jk7/9WdQv/VnED/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/XnD3/gF0m/wEAAP8DAwP/eHZ26dHOzTXs6egPj46NvxISEv8AAAD/RDIV/9em
X//luH7/2KNQ/9aeR//hsnL/5bmB/+W5gP/luYD/5bmA/+W5gP/luH//369r/9mkUv/Xn0j/2KJP/+Cw
bf/Zo1H/1Jo7/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Oljv/QC8U/wAAAP8cGxv/n52cu+Ti4A2amJcAtLKxdjw7
O/8AAAD/EAwG/7GNW//ovIL/47V4/+K1d//luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmB/+W4
f//kt3v/5Lh+/+W5gf/bqFz/1Jk7/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9ecPf+jdzD/DgoF/wAAAP9MS0v/vbu6crKw
rwDBv74A0c7NK3d1deMGBgb/AAAA/11LNf/jt3//5bmB/+W5gf/luYD/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/itHb/2KFM/9SaO//Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9GYPP9RPBn/AAAA/wsL
C/+HhoXh0c/OKMG/vgDAvr0A////AqupqZQxMTD/AAAA/xEOCv+si2H/6LyC/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYH/47V5/9unWv/VnED/1Jo7/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/15w9/5tx
Lv8OCgX/AAAA/0A/P/+1tLOQ////AcC+vQDAvr0AwsC/AM3LyjF6eXjkCQkJ/wAAAP8/MyT/1q14/+a6
gf/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmB/+W5
gP/fr2r/1p5F/9SaO//Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Vmzz/xI44/zcoEf8AAAD/Dw8P/4qIh+LOzMsuwsC/AAAAAAAAAAAAwb++AP///wG1s7KBRkZF/gAA
AP8CAgH/cFtA/+O4f//muYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYH/4LFv/9aeRf/Umjv/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9WaPP/SmDz/Y0ke/wEBAf8AAAD/VlVU/r27unz///8AwL69AAAAAAAAAAAAAAAAAMTC
wQDU0tEYmZiXwiIiIf8AAAD/DAoH/5B1Uv/nuoH/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmB/9+uav/Vmz//1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9WbPf+AXif/CgcE/wAAAP8tLSz/paSjv9HPzhbDwcAAAAAAAAAA
AAAAAAAAAAAAAMC+vQC/vbwAycbFP39+feUQEBD/AAAA/xURDf+bflj/57qB/+a5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W4f//apVX/1Jo7/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Vmjz/1Zs9/4plKf8RDQb/AAAA/xgXF/+NjIviysjHO8PB
wADAvr0AAAAAAAAAAAAAAAAAAAAAAAAAAADEwsEA////AMC+vWJtbGvyCgoK/wAAAP8VEQ3/kXZT/+S4
gP/muoH/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W6
gf/fr2r/1Jo9/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9WbPP/SmDz/gV4n/xENBv8AAAD/Dw8P/3t6
efHEwsFefnx8AMG/vgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx8XEAOHf3QS7ubh2aGZm9goK
Cv8AAAD/DQsI/3JdQf/WrXj/6LyC/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gf/hsnL/1ZtA/9SaPP/Umjz/1Jo8/9SaPP/Umjz/15w9/8SPOP9jSR7/CgcE/wAA
AP8PDw//dXRz9MC+vXLW1NMDxMLBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMrH
xgDa2NYGvLq5dnBvbvISERH/AAAA/wMDAv9ANCX/rYxi/+O3f//ou4L/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/hsnL/1ZxA/9SaPP/Umjz/1Jo8/9ecPf/RmDz/nHIu/zco
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
AAD/4AAAB/8AAP/4AAAf/wAA//8AAP//AAA=
</value>
</data>
<metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>169, 17</value>
</metadata>
<metadata name="mynotifyicon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>280, 17</value>
</metadata>
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>405, 17</value>
</metadata>
<data name="mynotifyicon.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
E/9FpkD/6vXq///////6/fr/hMSB/xySFv8bkhX/HJIW/xySFv8ckhb+AAAAAGZmZgBjY2Mw39/f7tbW
1uBLS0shTk5OAAAAAAAAAAAAAAAAAAAAAAAbkhUAG5IVWBySFv0ckhb/HJIW/xySFv8ckhb/HJIW/xqR
FP8bkhX/HJIW/yCUGv+w2a7////////////x+PD/eb51/x6TGP8ckhb/HJIW/xySFvgAAAAAoKCgAIeH
h1Hs7Oz/wcHBuQAAAAgbGxsAAAAAAAAAAAAEBAQAAAAAAUk3SRlCgz92HpIY+xySFv8ckhb/HJIW/xyS
Fv8ckhb/HJIW/xySFv8ckhb/GZAT/2CyW//2+/b////////////C4sH/JJYe/xySFv8ckhb/HJIW4gAA
AADd3d0AmZmZbfDw8P+wsLCZ////ABMTEwAAAAAAhoaGAEdHRxqYmJiBzMvM2Mvbyvg3njH/GpEU/xyS
Fv8ckhb/HJIW/xySFv8ckhb/HJIW/xySFv8bkhX/J5ch/8Dhvv///////////6fVpf8ckhb/HJIW/xyS
Fv8ckha0AAAAAP///wCkpKR68fHx/6ampob///8ABQUFAJycnABfX18tu7u7wfLy8v7/////+v36/2a2
Yf8YkBL/HJIW/xySFv8ckhb/HJIW/xySFv8ckhb/HJIW/xySFv8ZkBP/Y7Rf//b79f//////ms6X/xqR
FP8ckhb/HJIW+xySFmwAAAAA////AKWlpXvx8fH/pKSkgv///wAICAgFJycnHLq6urz6+vr///////b2
9v7o5+j4nceb/SCTGv8ckhb/HJIW/xySFv8ckhb/HJIW/xySFv8ckhb/HJIW/xuSFf8jlR3/r9it////
//+bz5j/GpEU/xySFv8ckhbUHJIWIgAAAADy8vIAnZ2dc/Dw8P+pqamO////AJKSknOSkpLK5OTk9///
///4+Pj/sbGxrW5sbkZne2ZgIY4czBySFv8ckhb/HJIW/xySFv8ckhb/HJIW/xySFv8ckhb/HJIW/xqR
FP9DpT7/4fHg/6fVpf8bkhX/HJIW/RySFnQckhYAAAAAALS0tACPj49b7u7u/7m5uaVJSUkv0dHR46qq
qvfv7+/+/////97e3utnZ2c0dHV0ABySFgAckhZCHJIW6BySFv8ckhb/HJIW/xySFv8ckhb/HJIW/xyS
Fv8ckhb/HJIW/xqRFP9ntmP/n9Gd/x+UGf8ckha3HJIWExySFgAAAAAAenp6AHJycjzk5OT2y8vLyYqK
ioPS0tLphYWFo/Ly8vz/////0tLS3T8/Px0/Pz8AAAAAAAs8CQIckhZjHJIW8BySFv8ckhb/HJIW/xyS
Fv8ckhb/HJIW/xySFv8ckhb/HJIW/x6TGP84oDP/Jo8h4x2FGDIcgBcAHJIWAAAAAABCQkIAPDw8GdHR
0dfd3d3ypKSk27CwsLKUlJSL9/f3///////v7+/7oqKik0ZGRidra2tLbm5uVwA2AAIckhZcHJIW3xyS
Fv8ckhb/HJIW/xySFv8ckhb/HJIW/xySFv8ckhb/HZMX/1qvVv+Bn3+uAAAABRshGwAAAAAAAAAAABMT
EwAAAAACsLCwn/Hx8f/b29v/2dnZ6t7e3u3////////////////z8/P91dXV5tzc3PKysrKuAAAABgD/
AAAckhYuHJIWmRySFuMckhb8HJIW/xySFv8ckhb/HJIW9xmNE9J1r3Pr4eng/5mXmW77+vsADwcQAAAA
AAAAAAAAAAAAAKenpwCBgYFR5+fn+P///////////////////////////////////////////////+Pj
4/GOjo50Hh4eCzlYNwAckhYEHJIWJhySFlcckhZ5HJIWgRySFnAYkxFDUHJPSt3c3evY2NjkWlpaKWRk
ZAAAAAAAAAAAAAAAAAAAAAAAPj4+ACEhIRC/v7/A/v7+////////////////////////////////////
/////////////+np6fqjo6OWKCgoD0dHRwAAAAAAAAAAAAAAAAAAAAAAMi4yAAAAAAeurq+f8fHx/6io
qJUAAAACGRkZAAAAAAAAAAAAAAAAAAAAAAABAQEA0tLSAIKCglbk5OT1////////////////////////
/////////////////////////////+zs7PyZmZl/AAAAARkZGQAAAAAAAAAAAA4ODgD///8AhoaGYObm
5vfU1NTiYGBgL3V1dQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIAAAAACKqqqp319fX/////////
/////////////////////////////////////////////9TU1OJbW1soY2NjAAAAAAAHBwcA////AHFx
cUXV1dXi6urq/JKSknD///8AERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoaGgATU1NH76+
vsT6+vr/////////////////////////////////////////////////7Ozs+4aGhlCdnZ0AGRkZAAAA
AAJ2dnZP0NDQ3vHx8f+pqameFhYWDD8/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAChoaEAYGBgL8LCwsv5+fn////////////////////////////////////////////u7u79jY2NVcrK
ygBBQUEdl5eXg93d3e3y8vL/r6+vqj8/PxdeXl4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACwsLAAWlpaKbS0tLbu7u78/////////////////////////////////////+vr
6/t/f3+BmJiYf8rKytTy8vL+5ubm9qKiopU9PT0VX19fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiYmIAODg4E5KSknnPz8/f8vLy/v7+/v//////////////
////////+fn5/+Xl5fvz8/P/7e3t/MTExM+BgYFdFBQUCDU1NQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkAAAAAAVNTUyaTk5N3vLy8v9bW
1ubk5OT16urq+enp6fni4uLz09PT4LW1tbKHh4dkQEBAGf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAXFxcOUFBQLnBwcE1+fn5bfHx8WWtra0dFRUUmCQkJCSMjIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/4AD//wAAP/wAAB/4AAAP8BAAB+BgAAfg4AADwcAAA4PAAAOHw
AADh8AAAw/AAAMPwAADDwAAAx4AAAMcAAADEAAAAxAAAAcAMAAHADAADwAAAA8AAgAfgAEAH4AA/B/AA
Hw/wAB4f+AAYH/wAED/+AAB//wAA//+AA///8A//
</value>
</data>
</root>

179
Forms/Login.Designer.cs generated Normal file
View File

@@ -0,0 +1,179 @@
using EFCDesk.Classes;
namespace EFCDesk
{
partial class Login
{
/// <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(Login));
pictureBox1 = new PictureBox();
label2 = new Label();
textBoxContrasenia = new TextBoxConPaste();
buttonInicioSesion = new Button();
label3 = new Label();
buttonOpciones = new Button();
label1 = new Label();
txtUsuario = new TextBox();
((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
SuspendLayout();
//
// pictureBox1
//
pictureBox1.Image = (Image)resources.GetObject("pictureBox1.Image");
pictureBox1.Location = new Point(12, 15);
pictureBox1.Margin = new Padding(4);
pictureBox1.Name = "pictureBox1";
pictureBox1.Size = new Size(102, 118);
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
pictureBox1.TabIndex = 0;
pictureBox1.TabStop = false;
//
// label2
//
label2.AutoSize = true;
label2.Font = new Font("Century Gothic", 12F, FontStyle.Regular, GraphicsUnit.Point, 0);
label2.Location = new Point(126, 77);
label2.Margin = new Padding(4, 0, 4, 0);
label2.Name = "label2";
label2.Size = new Size(107, 21);
label2.TabIndex = 3;
label2.Text = "Contraseña:";
//
// textBoxContrasenia
//
textBoxContrasenia.Location = new Point(126, 104);
textBoxContrasenia.Margin = new Padding(4);
textBoxContrasenia.Name = "textBoxContrasenia";
textBoxContrasenia.Size = new Size(247, 27);
textBoxContrasenia.TabIndex = 4;
textBoxContrasenia.TextAlign = HorizontalAlignment.Center;
textBoxContrasenia.UseSystemPasswordChar = true;
textBoxContrasenia.TextChanged += textBoxContrasenia_TextChanged;
textBoxContrasenia.KeyDown += textBoxContrasenia_KeyDown;
//
// buttonInicioSesion
//
buttonInicioSesion.BackgroundImage = (Image)resources.GetObject("buttonInicioSesion.BackgroundImage");
buttonInicioSesion.Cursor = Cursors.Hand;
buttonInicioSesion.FlatStyle = FlatStyle.Flat;
buttonInicioSesion.ForeColor = Color.White;
buttonInicioSesion.Location = new Point(15, 150);
buttonInicioSesion.Margin = new Padding(4);
buttonInicioSesion.Name = "buttonInicioSesion";
buttonInicioSesion.Size = new Size(357, 38);
buttonInicioSesion.TabIndex = 5;
buttonInicioSesion.Text = "Iniciar Sesión";
buttonInicioSesion.UseVisualStyleBackColor = true;
buttonInicioSesion.Click += buttonInicioSesion_Click;
//
// label3
//
label3.AutoSize = true;
label3.Font = new Font("Century Gothic", 9F, FontStyle.Regular, GraphicsUnit.Point, 0);
label3.ForeColor = SystemColors.AppWorkspace;
label3.Location = new Point(12, 201);
label3.Name = "label3";
label3.Size = new Size(77, 17);
label3.TabIndex = 6;
label3.Text = "Aduanasoft";
//
// buttonOpciones
//
buttonOpciones.Cursor = Cursors.Hand;
buttonOpciones.FlatAppearance.BorderSize = 0;
buttonOpciones.FlatStyle = FlatStyle.Flat;
buttonOpciones.Font = new Font("Century Gothic", 9F, FontStyle.Regular, GraphicsUnit.Point, 0);
buttonOpciones.ForeColor = Color.DodgerBlue;
buttonOpciones.Location = new Point(280, 191);
buttonOpciones.Margin = new Padding(3, 4, 3, 4);
buttonOpciones.Name = "buttonOpciones";
buttonOpciones.Size = new Size(90, 29);
buttonOpciones.TabIndex = 7;
buttonOpciones.Text = "Opciones";
buttonOpciones.UseVisualStyleBackColor = true;
buttonOpciones.Click += buttonOpciones_Click;
//
// label1
//
label1.AutoSize = true;
label1.Font = new Font("Century Gothic", 12F, FontStyle.Regular, GraphicsUnit.Point, 0);
label1.Location = new Point(126, 15);
label1.Margin = new Padding(4, 0, 4, 0);
label1.Name = "label1";
label1.Size = new Size(70, 21);
label1.TabIndex = 8;
label1.Text = "Usuario:";
//
// txtUsuario
//
txtUsuario.Location = new Point(126, 39);
txtUsuario.Name = "txtUsuario";
txtUsuario.Size = new Size(247, 27);
txtUsuario.TabIndex = 9;
txtUsuario.TextAlign = HorizontalAlignment.Center;
//
// Login
//
AutoScaleDimensions = new SizeF(9F, 19F);
AutoScaleMode = AutoScaleMode.Font;
BackColor = Color.White;
ClientSize = new Size(379, 226);
Controls.Add(txtUsuario);
Controls.Add(label1);
Controls.Add(buttonOpciones);
Controls.Add(label3);
Controls.Add(buttonInicioSesion);
Controls.Add(textBoxContrasenia);
Controls.Add(label2);
Controls.Add(pictureBox1);
Font = new Font("Century Gothic", 12F, FontStyle.Bold, GraphicsUnit.Point, 0);
FormBorderStyle = FormBorderStyle.FixedDialog;
Icon = (Icon)resources.GetObject("$this.Icon");
Margin = new Padding(4);
MaximizeBox = false;
Name = "Login";
StartPosition = FormStartPosition.CenterScreen;
Text = "Expediente Electrónico";
Shown += Login_Shown;
((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
ResumeLayout(false);
PerformLayout();
}
#endregion
private PictureBox pictureBox1;
private Label label2;
private TextBoxConPaste textBoxContrasenia;
private Button buttonInicioSesion;
private Label label3;
private Button buttonOpciones;
private Label label1;
private TextBox txtUsuario;
}
}

321
Forms/Login.cs Normal file
View File

@@ -0,0 +1,321 @@
using EFCDesk.Classes;
using EFCDesk.Forms;
using System.Data.SQLite;
using System.Xml;
using System.Xml.Linq;
using static EFCDesk.Program;
namespace EFCDesk
{
public partial class Login : Form
{
private bool ExisteConfiguracionExpediente()
{
using (var connection = sqliteHelper.GetConnection())
{
connection.Open();
// Verificar si hay registros en la tabla ArchivosProcesados
string checkQuery = "SELECT COUNT(1) FROM Configuracion;";
int registrosExistentes;
using (var command = new SQLiteCommand(checkQuery, connection))
{
registrosExistentes = Convert.ToInt32(command.ExecuteScalar());
}
// Si hay registros, no realizar el escaneo inicial
if (registrosExistentes == 0)
{
return false;
}
}
return true;
}
private void VistaConfiguracionExpediente()
{
//FormCargarInformacion info = new FormCargarInformacion();
//info.Show();
MessageBox.Show("Debe capturar la configuraci<63>n inicial para el env<6E>o de los archivos a expediente electr<74>nico", "Configuraci<63>n", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Hide();
FormConfiguracionExpediente configExp = new FormConfiguracionExpediente();
configExp.ShowDialog();
try
{
configExp.Dispose();
this.Visible = true;
}
catch (Exception ex) { }
}
private static SQLiteHelper sqliteHelper = new SQLiteHelper(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "historico.db"));
public Login()
{
InitializeComponent();
}
private void buttonOpciones_Click(object sender, EventArgs e)
{
FormConfiguracionJSON configuracion = new FormConfiguracionJSON();
configuracion.ShowDialog();
}
private async void buttonInicioSesion_Click(object sender, EventArgs e)
{
//var config = ConfiguracionJSON.LoadFromJson();
//Cursor.Current = Cursors.WaitCursor;
//string user = textBoxUsuario.Text.Trim();
//string pass = textBoxContrasenia.Text.Trim();
//if (user == "")
//{
// MessageBox.Show("Debe ingresar el usuario");
// textBoxUsuario.Focus();
// return;
//}
//if (pass == "")
//{
// MessageBox.Show("Debe ingresar la contrase<73>a");
// textBoxContrasenia.Focus();
// return;
//}
//if ((user == "admin") && (pass == "teamweb"))
//{
// //frmAdmin configuracion = new frmAdmin();
// //configuracion.ShowDialog();
//}
//else
//{
// try
// {
// string crypUser = General.CodificarBase64(user);
// string crypPass = General.CodificarBase64(pass);
// string cadena = crypUser + "|" + crypPass;
// string liga = config.DominioExp + "/api/auth/" + cadena;
// dynamic root = config.Consulta(liga);
// if (root is XmlElement)
// {
// string id = "";
// string mensaje = "";
// XmlNodeList nodes = root.SelectNodes("/xml/item");
// foreach (XmlNode node in nodes)
// {
// id = node["login"].InnerText;
// mensaje = node["mensaje"].InnerText;
// }
// if (id != "0")
// {
// //this.Hide();
// /**/
// /*
// SplashScreenEspera Espera = new SplashScreenEspera();
// Espera.ShowDialog();
// */
// /*
// Globales.DirRootExpediente = MyClass.configuracion("folder");
// if (!Directory.Exists(Globales.DirRootExpediente))
// {
// string Folder = "C:" + Path.DirectorySeparatorChar + "EFC";
// MyClass.configuracion("folder", Folder);
// Globales.DirRootExpediente = Folder;
// Directory.CreateDirectory(Globales.DirRootExpediente);
// }
// */
// /*actualizar config*/
// config.UsuarioExp = user;
// config.PasswordExp = pass;
// int.TryParse(id, out int idInt);
// config.idUsuarioExp = idInt;
// config.SaveToJson();
// this.Hide();
// FormCargarInformacion info = new FormCargarInformacion();
// info.Show();
// //Application.Run(new frmMain());
// using (var connection = sqliteHelper.GetConnection())
// {
// connection.Open();
// // Verificar si hay registros en la tabla ArchivosProcesados
// string checkQuery = "SELECT COUNT(1) FROM Configuracion;";
// int registrosExistentes;
// using (var command = new SQLiteCommand(checkQuery, connection))
// {
// registrosExistentes = Convert.ToInt32(command.ExecuteScalar());
// }
// // Si hay registros, no realizar el escaneo inicial
// if (registrosExistentes == 0)
// {
// FormConfiguracionExpediente configExp = new FormConfiguracionExpediente();
// configExp.Show();
// }
// else
// {
// FormMain Main = new FormMain();
// Main.Show();
// }
// }
// }
// else
// {
// MessageBox.Show(mensaje);
// return;
// }
// }
// else if (root is Exception)
// {
// MessageBox.Show(root.ToString());
// return;
// }
// else
// {
// MessageBox.Show("Error: No se hizo el login correctamente. Contacte a su proveedor");
// return;
// }
// }
// catch (Exception ex)
// {
// MessageBox.Show(ex.ToString());
// }
//}
//cursor.current = cursors.default;
if (!ExisteConfiguracionExpediente())
{
VistaConfiguracionExpediente();
return;
}
string user = txtUsuario.Text.Trim();
string pass = textBoxContrasenia.Text.Trim();
bool EsvalidoDatos = Utils.Util.StringsValidos(user, pass);
if(!EsvalidoDatos)
{
MessageBox.Show("Debe ingresar el usuario y contrase<73>a", "Informaci<63>n", MessageBoxButtons.OK);
return;
}
var configJson = ConfiguracionJSON.LoadFromJson();
Cursor.Current = Cursors.WaitCursor;
try
{
configJson.UsuarioExp = user;
configJson.PasswordExp = pass;
if (Properties.Settings.Default.urlEFC.ToString() == "")
{
MessageBox.Show("No se ha configurado el dominio de expediente electronico", "Informaci<63>n", MessageBoxButtons.OK);
return;
}
if (configJson.FolderExpediente == null)
{
MessageBox.Show("No se ha configurado la ruta de expediente(s)", "Informaci<63>n", MessageBoxButtons.OK);
return;
}
bool Esvalido = Utils.Util.StringsValidos(configJson.UsuarioExp, configJson.PasswordExp);
if (!Esvalido)
{
MessageBox.Show("No se ha configurado el usuario o contrase<73>a de expediente electronico", "Informaci<63>n", MessageBoxButtons.OK);
return;
}
else
{
textBoxContrasenia.Text = configJson.PasswordExp ?? String.Empty;
}
if (string.IsNullOrWhiteSpace(textBoxContrasenia.Text))
{
MessageBox.Show("Ingresa el Id de usuario", "Informaci<63>n", MessageBoxButtons.OK);
textBoxContrasenia.Focus();
return;
}
configJson.SaveToJson();
bool EsLoginValido = await Utils.Util.Login(txtUsuario.Text, textBoxContrasenia.Text);
if (!EsLoginValido)
{
MessageBox.Show("No se pudo hacer login.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
//string token = textBoxContrasenia.Text;
//using var apiClient = new ApiClient(timeout: TimeSpan.FromSeconds(10), maxRetries: 3, retryDelay: TimeSpan.FromSeconds(2));
//string response = await apiClient.GetAsync(url: config.DominioExp+ "/api/v1/customs/pedimentos/", token);
Cursor.Current = Cursors.Default;
//SecureDataHandler.SaveData(textBoxContrasenia.Text);
//textBoxContrasenia.Text = string.Empty;
this.Hide();
FormMain Main = new FormMain(Globales.gMonitor);
Main.Show();
}
catch (ApiException ex)
{
MessageBox.Show($"API respondi<64> con error: {ex.Message} (C<>digo {ex.StatusCode})");
}
catch (Exception ex)
{
MessageBox.Show($"Error en la petici<63>n: {ex.Message}");
}
Cursor.Current = Cursors.Default;
}
private void textBoxContrasenia_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
//buttonInicioSesion_Click(this, new EventArgs());
buttonInicioSesion.PerformClick();
}
}
private void Login_Shown(object sender, EventArgs e)
{
if (!ExisteConfiguracionExpediente())
{
VistaConfiguracionExpediente();
}
}
private void textBoxContrasenia_TextChanged(object sender, EventArgs e)
{
}
}
}

31197
Forms/Login.resx Normal file

File diff suppressed because it is too large Load Diff

195
Forms/RegistroExpirado.Designer.cs generated Normal file
View File

@@ -0,0 +1,195 @@
namespace EFCDesk.Forms
{
partial class RegistroExpirado
{
/// <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(RegistroExpirado));
label1 = new Label();
pictureBox1 = new PictureBox();
label2 = new Label();
label3 = new Label();
label4 = new Label();
label5 = new Label();
label6 = new Label();
linkLabel1 = new LinkLabel();
linkLabel2 = new LinkLabel();
panel1 = new Panel();
panel2 = new Panel();
((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
SuspendLayout();
//
// label1
//
label1.AutoSize = true;
label1.Font = new Font("Century Gothic", 15.75F, FontStyle.Bold, GraphicsUnit.Point, 0);
label1.Location = new Point(207, 22);
label1.Name = "label1";
label1.Size = new Size(187, 25);
label1.TabIndex = 0;
label1.Text = "Registro Expirado";
//
// pictureBox1
//
pictureBox1.Image = Properties.Resources.CUATRO;
pictureBox1.Location = new Point(12, 54);
pictureBox1.Name = "pictureBox1";
pictureBox1.Size = new Size(181, 146);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.TabIndex = 1;
pictureBox1.TabStop = false;
//
// label2
//
label2.AutoSize = true;
label2.Font = new Font("Century Gothic", 8.25F, FontStyle.Regular, GraphicsUnit.Point, 0);
label2.Location = new Point(207, 63);
label2.Name = "label2";
label2.Size = new Size(317, 16);
label2.TabIndex = 2;
label2.Text = " Lo sentimos, el periodo de registro se encuentra expirado.";
//
// label3
//
label3.AutoSize = true;
label3.Font = new Font("Century Gothic", 8F, FontStyle.Regular, GraphicsUnit.Point, 0);
label3.Location = new Point(209, 79);
label3.Name = "label3";
label3.Size = new Size(201, 16);
label3.TabIndex = 3;
label3.Text = "Favor de comunicarse con nosotros.";
//
// label4
//
label4.AutoSize = true;
label4.Font = new Font("Century Gothic", 8.25F, FontStyle.Regular, GraphicsUnit.Point, 0);
label4.Location = new Point(209, 113);
label4.Name = "label4";
label4.Size = new Size(119, 16);
label4.TabIndex = 4;
label4.Text = " Ing. Eduardo Ramos";
//
// label5
//
label5.AutoSize = true;
label5.Font = new Font("Century Gothic", 8.25F, FontStyle.Regular, GraphicsUnit.Point, 0);
label5.Location = new Point(212, 125);
label5.Name = "label5";
label5.Size = new Size(70, 16);
label5.TabIndex = 5;
label5.Text = "Aduanasoft";
//
// label6
//
label6.AutoSize = true;
label6.Font = new Font("Century Gothic", 8.25F, FontStyle.Regular, GraphicsUnit.Point, 0);
label6.Location = new Point(207, 168);
label6.Name = "label6";
label6.Size = new Size(94, 16);
label6.TabIndex = 6;
label6.Text = "Soporte Técnico";
//
// linkLabel1
//
linkLabel1.AutoSize = true;
linkLabel1.Location = new Point(207, 183);
linkLabel1.Name = "linkLabel1";
linkLabel1.Size = new Size(207, 17);
linkLabel1.TabIndex = 7;
linkLabel1.TabStop = true;
linkLabel1.Text = "soportesitar@aduanasoft.com.mx";
linkLabel1.LinkClicked += linkLabel1_LinkClicked;
//
// linkLabel2
//
linkLabel2.AutoSize = true;
linkLabel2.Location = new Point(207, 200);
linkLabel2.Name = "linkLabel2";
linkLabel2.Size = new Size(184, 17);
linkLabel2.TabIndex = 8;
linkLabel2.TabStop = true;
linkLabel2.Text = "bodega@aduanasoft.com.mx";
linkLabel2.LinkClicked += linkLabel2_LinkClicked;
//
// panel1
//
panel1.BackColor = SystemColors.ActiveCaption;
panel1.Location = new Point(202, -3);
panel1.Name = "panel1";
panel1.Size = new Size(2, 230);
panel1.TabIndex = 9;
//
// panel2
//
panel2.BackColor = SystemColors.ActiveCaption;
panel2.Location = new Point(205, 50);
panel2.Name = "panel2";
panel2.Size = new Size(323, 2);
panel2.TabIndex = 10;
//
// RegistroExpirado
//
AutoScaleDimensions = new SizeF(7F, 17F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(529, 228);
Controls.Add(panel2);
Controls.Add(panel1);
Controls.Add(linkLabel2);
Controls.Add(linkLabel1);
Controls.Add(label6);
Controls.Add(label5);
Controls.Add(label4);
Controls.Add(label3);
Controls.Add(label2);
Controls.Add(pictureBox1);
Controls.Add(label1);
Font = new Font("Century Gothic", 9F, FontStyle.Regular, GraphicsUnit.Point, 0);
Icon = (Icon)resources.GetObject("$this.Icon");
Name = "RegistroExpirado";
StartPosition = FormStartPosition.CenterScreen;
Text = "Registro Expirado";
Load += RegistroExpirado_Load;
((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
ResumeLayout(false);
PerformLayout();
}
#endregion
private Label label1;
private PictureBox pictureBox1;
private Label label2;
private Label label3;
private Label label4;
private Label label5;
private Label label6;
private LinkLabel linkLabel1;
private LinkLabel linkLabel2;
private Panel panel1;
private Panel panel2;
}
}

35
Forms/RegistroExpirado.cs Normal file
View File

@@ -0,0 +1,35 @@
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;
namespace EFCDesk.Forms
{
public partial class RegistroExpirado : Form
{
public RegistroExpirado()
{
InitializeComponent();
}
private void RegistroExpirado_Load(object sender, EventArgs e)
{
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process.Start("mailto:soportesitar@aduanasoft.com.mx");
}
private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process.Start("mailto:bodega@aduanasoft.com.mx");
}
}
}

377
Forms/RegistroExpirado.resx Normal file
View File

@@ -0,0 +1,377 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAMAEBAAAAEAIABoBAAANgAAACAgAAABACAAqBAAAJ4EAAAwMAAAAQAgAKglAABGFQAAKAAAABAA
AAAgAAAAAQAgAAAAAAAABAAAIy4AACMuAAAAAAAAAAAAAAAAAAAAAAAAlpWVALW0swdWV1pIMTI0pycl
I+MoJBz7KCQd+ygmI+M0NDanXF1fSL+9vAefnp4AAAAAAAAAAAD///8AV1dXAH59fhg1NjeSKiMW7llA
EP+MYhT/o3IX/6JyF/+OZyP/XEUf/yskF+46Oz2RiIeHGGJhYQD///8AbGpqAIKBgRguLi6xQTAP/6d1
GP/Qkh7/1JQe/9OUHv/Ynjj/5LJo/9mhRf+lcxb/QjAQ/zQ0NLCOjY0Yd3Z1APf18wY3ODmSQjAQ/7yE
G//TlB7/0JIe/9CSHv/Qkh//3alX/+S0dP/frF7/1Zcm/7uDGv9CMRH/Pz9Bkf///wZdXWBKLCUY7ad1
GP/TlB7/0JIe/9CSHv/Qkh7/0JIe/9mhRf/js3H/47Nx/9ulTf/TlSD/pnQX/y8oG+1oaWtINzg6qFtB
Ef/Qkh7/0JIe/9CSHv/Qkh3/0JEd/9CRHP/RlCL/3KdS/+Ozcf/ism7/1548/9CSHf9bQRL/P0BCpiwq
KOSNYxX/05Qe/9CSHf/Qkh//05cq/9WbNP/UmjL/0ZUl/9OXKv/frWH/5LRz/9+sYP/VliT/i2IU/zIx
LuItKCH7o3MX/9KTHv/SlSb/26VO/+Gwaf/js3D/361k/92pWv/eq17/4bBq/+Kxbf/bplD/05Uh/6Jy
F/8yLib6Lioj+6Z3Jv/Ynz//3atf/+S3e//dq2D/26ZW/9mjT//YoEn/2KFL/9igSv/WnkP/1Jk2/9WZ
M/+kdib/My8o+jAuK+SRazD/4K1h/+Gzc//jtnn/1p1E/9OZOv/Umjv/1Jo7/9SaO//Umjv/1Jo8/9Sa
PP/YnT7/jmgp/zY0MuM+P0CpYk0t/9+tZv/jtXf/5bh//96tZf/bqFr/1p5F/9SaO//Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/15GH/9HSEmna2tsSjQvKO64lGb/6LyC/+W5gP/luYH/5bmA/+Cva//Wnkb/1Jo7/9Sa
PP/Umjz/15w9/6l7L/81LiTtdnZ4Sf///wZFRUaTTD8v/9CodP/ovIL/5bmA/+W5gP/luYH/4bJw/9ad
Q//Umjz/15w9/7+LNv9HNxz/TU1Okv///waDgoEAmpmZGT4+PbJNQC//uJVn/+W5gP/pvIL/6LuC/+i7
gP/cplH/1Jo7/6l7L/9INx3/RENDsaSjoxiNi4sA////AHNycgCamZgZSUlKkzcyK+9mUzv/m31X/7SR
ZP+0kWP/k284/15GH/83MCXvT09QkqKhoRh9e3sA////AAAAAAAAAAAAtrW0ANTS0Qdzc3RKSEhJqTk3
NuU5NTH8OTYy/Do4N+VLS02oeXl7SdrY1we9u7sAAAAAAAAAAADgBwAAwAMAAIABAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAMADAADgBwAAKAAAACAAAABAAAAAAQAgAAAA
AAAAEAAAIy4AACMuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7ezrAP//
/wS1s7IphYODa2VkY6xPTk3YQEBA8To5Ofw6Ojn8QkFB8VFQUNhoZ2erioiHarq4tyj///8E8O/uAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+HgAP//
/wOhoJ83Z2Zllzk5ON8YGBn7BQYI/wAAAf8BAQD/AwIA/wMCAP8BAQD/AAAB/wYHCf8aGhv7Pj093m5t
bJapp6Y1////A+fl5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AIWD
ggC+vLsacXBviTMyMuoJCQr/AgEA/xwTBP9IMwz/cE8S/4phFv+WaRf/lmkX/4phFv9vTxL/RzIL/xsU
CP8CAQH/CwsM/zk4OOl6eXiIxsTDGZSSkQD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPTz
8gAAAAAApKKhNlNSUcITExP+AgEA/y8hCP9/WhT/uIEc/86RHv/TlB//1JQe/9OUHv/TlB7/05Qe/9SW
JP/Wn0P/wpRO/35aGP8tIAf/AgEA/xYWF/5cW1vBrqyrNAAAAAD29fQAAAAAAAAAAAAAAAAAAAAAAAAA
AADw7+4AAAAAAJ2bmkFEQ0PZBgYH/xMOA/9xUBL/wYcd/9OUH//Skx7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hf/TmC7/3apa/+Ozcv/grF3/1JUh/8CHHP9vThL/Eg0D/wkJCf9NTUzYp6alQB4dHQDx8O8AAAAAAAAA
AAAAAAAA+/r5AHh2dQCmpKQ2RURD2QQEBP8kGQb/mm0Y/9GTHv/Rkx7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh3/0pYo/9+sYf/jtHL/47Ny/+CuZf/Slif/0ZMd/9GTHv+Yaxj/IhgG/wYGBv9PTk7XsbCvNIuJ
iQD49/YAAAAAAAAAAACwrq0AxsTDG1VUVMIGBwf/JBoG/6d1Gv/TlB7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CRHf/YoEH/47Ny/+Ozcf/js3H/47Nw/9igQf/Qkh3/0JIe/9OUHv+kdBn/IhgG/wkK
Cv9hYGDA0M7MGbm3twAAAAAA0c7NAP///wJ2dHSKFBQV/xMNA/+bbRj/05Qe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JId/9mjSf/jtHL/47Nx/+Ozcf/js3L/4K9m/9OYLv/Qkh3/0JIe/9OU
Hv+Yaxj/EgwC/xoaG/+DgoGI////As7MywCZl5YAqKalODc2NuoBAQD/clET/9GTHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/1Zs1/+Kxbf/js3H/47Nx/+Ozcf/js3L/3apa/9GU
JP/Qkh3/0JIe/9GTHv9vTxL/AQEA/0FBQei0srE2qKalAP///wNubWyYCwsM/zAiCP/BiB3/0ZMe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/QkyD/26VQ/+Ozcv/js3H/47Nx/+Oz
cf/js3H/2qNK/9CSH//Qkh7/0ZMe/8CHHf8uIAf/DxAR/3x7epX///8CvLq5Kz8/Pt8BAQD/gFsU/9OU
H//Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/SlSb/3qpb/+Oz
cv/js3H/47Nx/+Ozcf/isW3/1pw5/9CSHf/Qkh7/05Qf/35ZFP8BAQD/S0tK3cjGxSmOjIxuHBwd+x0U
BP+5ghz/0pMe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hf/Tlyr/3qte/+Ozcv/js3H/47Nx/+Ozcv/grWP/05cq/9CSHf/Skx7/t4Ec/xsSA/8kJCX7nJuaam9t
ba4HCAr/SjQM/86RHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0JId/9CRHf/Qkh3/0JEd/9CR
Hf/Qkh3/0JIe/9CSHf/Tlyv/36xh/+Ozcv/js3H/47Nx/+Ozcv/bpVD/0JIf/9CSHv/OkR7/RzIM/wwN
Dv99fHurWFdX2gABAv9yURL/05Qf/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0JIe/9KVJv/VmzX/2KBB/9mi
R//YoUX/154+/9OYLf/Qkh//0JIf/9CSHv/Zokf/47Ny/+Ozcf/js3H/47Ny/9+tYf/RlCP/0JIe/9OU
H/9wTxL/AgME/2ZlZdhKSUnzAgEA/4xjFv/UlB7/0JIe/9CSHv/Qkh7/0JId/9KVJ//Zokf/361j/+Ky
bv/js3L/47Ny/+Ozcv/frWP/26VP/9ulTv/cqFX/3alY/+CuZv/js3H/47Nx/+Ozcf/jtHP/3ahX/9CT
IP/Qkh7/1JQe/4phFv8CAgH/V1ZW8UNCQv4EAwD/mGsX/9OUHv/Qkh3/0JId/9CSHf/UmTH/36xf/+Oz
cf/js3L/47Ny/+Ozcv/js3L/4bFr/9ynVf/isWz/47Ny/+O0c//jtHP/47Ry/+Ozcf/jsnD/4rFs/92q
Wv/TmC7/0JId/9CSHf/TlB7/lmkX/wQDAP9QT0/8REND/gQDAP+ZbR7/1Zcp/9KVKf/Sliz/1Jo2/+Gw
a//kt3r/5LZ5/+O1d//gr2n/365n/+KycP/erWT/2qVV/9qlVP/Zo07/2qVT/9umVv/bpVX/2qRQ/9ih
SP/WnT7/05cx/9KVK//SlSv/0pUq/9WXKv+Xax7/BAMA/1FQUPxNTEzzAgEB/5BpKv/XnDz/1p5F/96s
ZP/dqmH/5bmA/+W5gP/luYD/3Kpf/9WbP//Umz7/1p1E/9WdQ//Umjz/1Jo7/9SaO//Umjv/1Jo7/9Sa
O//Umjv/1Jo7/9SaO//Umjz/1Jo8/9SaPP/Umjz/2J09/41mKf8CAgH/WllZ8V5dXNsBAgP/dlYj/9ed
Pf/drGP/4bJx/96tZv/luYH/5bmB/+K0dv/WnUT/1Jo7/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/XnD3/clMh/wMEBf9sa2rYd3Z1rwkK
DP9MOBf/1Z1E/+KzdP/ZpFL/3Kle/+W5gf/luYH/4rNz/9WcQP/Umjv/1Jo8/9SaO//Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9KZPP9JNRX/Dw8R/4WE
g6uZl5ZvIiIi/B4VB//Ck0v/4rJu/9WcQf/frmn/5bmB/+W5gP/kuH7/3apf/9adQ//Umz3/16BJ/9ad
Q//Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Wmzz/u4g2/xwU
B/8rKyv7paSja8bDwixKSkngAgEA/4ttRP/nuHv/365p/+S3ff/luYD/5bmA/+W5gP/luYD/4rR1/+Cw
bf/jtXj/2aRS/9SZOv/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9ec
Pf+BXib/AgIB/1dWVd7OzMsp////A359fJkPEBD/Niwf/9WteP/nuoL/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYH/5bqB/+W5gf/hsXD/16BJ/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Vmzz/xI84/y8iDv8VFhf/i4mIl////wKqqKcAtrSzOkVFROoDAgH/f2dI/+e6gf/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/jtXj/2qZX/9SaPf/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9WbPf9zVCL/AwIB/1FQT+m/vbw3tLKxAMzKyQD///8Di4mIjB4eHv8WEgz/rIxh/+i8
gv/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/kuH3/26dZ/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/XnD3/nXIu/xMNBf8lJSX/lpSUif///wLIxsUAAAAAAL27ugDRz84cbGtqxAwM
Df8qIhj/updp/+i8gv/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/jtnr/16BL/9Sa
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
Lf0DAwP/AAAA/wAAAP8OCgP/Py0M/31ZFf+tehv/xose/9CSHv/TlB//1JUf/9SVH//UlR//1JUf/9OU
H//Qkh7/xYoc/6x6H/+BYjD/PzAY/wwJAv8AAAD/AAAA/wUFBf83Njb8iIaGvcbDwjj///8A5+XkAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADc2tkA////BLCu
rV5gX17jEhIR/wAAAP8AAAD/DQoD/1A5Dv+gcRr/yo4e/9OUH//SlB7/0ZIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHf/Qkh//1Zsz/9+rWv/ltG7/zpc2/51vGP9NNw7/DAkD/wAAAP8AAAD/GBcX/2xr
a+G4trVb////A9jW1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbU
0gD///4FqKalck1MTPEGBgb/AAAA/wICAf81Jgr/mWwZ/82QHv/TlB7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JId/9GUJP/ao0r/4rFr/+O0cv/ism3/1Zox/9OUHf/MkB7/lmoY/zMk
Cv8CAQH/AAAA/woKCv9bWlnwsbCvbvf08wXS0M8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA1NLRAP///wSopqVySEdG9AMDA/8AAAD/CgcC/2JFEf/Ahx3/05Qe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0pUm/92pV//js3H/47Nx/+Ozcf/ism//1Zw3/9CR
Hf/Qkh7/05Qe/7+GHf9eQxH/CQYC/wAAAP8GBgX/VVRU87KxsG7///8Dz8zLAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADS0M8AAAAAALGvrl9PTk3xAwMD/wAAAP8RDAT/floV/86RHv/Rkx7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh//26VO/+Ozcv/js3H/47Nx/+Oz
cf/js3L/2aNK/9CSHf/Qkh7/0JIe/9KTHv/NkB7/e1cV/w8LBP8AAAD/BgYG/11cXPC6uLdbERAQAMrI
xwAAAAAAAAAAAAAAAAAAAAAAAAAAAMzKyQCurKsAwb++PGJhYeMHBwf/AAAA/xEMBP+IYRf/0ZMf/9GS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/Tlyv/4a9p/+Oz
cv/js3H/47Nx/+Ozcf/js3L/361j/9KWJ//Qkh3/0JIe/9CSHv/Rkh7/0JIe/4ReFv8PCwT/AAAA/wsL
C/9ycXDhyMXEObu5uADCwL8AAAAAAAAAAAAAAAAAAAAAAMXDwgDb2dcXgX9+wBMTE/8AAAD/CgcC/39a
Ff/Rkx//0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CR
Hf/VnDj/47Jw/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Nx/9qkS//Qkh//0JIe/9CSHv/Qkh7/0JIe/9CS
Hv97VxX/CQYC/wAAAP8cHBv/kI+OvNrY1xXFw8IAAAAAAAAAAAAAAAAAxcPCAP///wCko6J+MjEx/gAA
AP8BAQH/Y0YR/86RHv/Rkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CRHf/VnDf/4rJv/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Nx/+Kxbf/WnTr/0JId/9CS
Hv/Qkh7/0JIe/9GSHv/NkB7/X0MR/wEBAf8AAAD/QD8//bGvrnoAAAAAwb++AAAAAAAAAAAAvry7AMrI
xy9jYmLjAwMD/wAAAP83Jwv/wYgd/9GTHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/Slif/4K5k/+Ozcv/js3H/47Nx/+Ozcf/js3H/47Nx/+Oz
cv/grmX/05cs/9CSHf/Qkh7/0JIe/9CSHv/Skx7/v4Yd/zQlCv8AAAD/BwcH/3RzcuDPzcsswb++AAAA
AADBv74A////ApuZmJIjIiL/AAAA/w4KA/+abRn/05Qe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/2KFE/+Ozcf/js3H/47Nx/+Oz
cf/js3H/47Nx/+Ozcf/js3L/3alY/9GUI//Qkh7/0JIe/9CSHv/Qkh7/05Qe/5dqGP8NCQP/AAAA/y8v
Lv+pp6aN////AcC+vQDAvr0Az83MKWRjYuICAgL/AAAA/1I6D//OkB7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0ZQj/92p
WP/js3L/47Nx/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Nx/9miR//Qkh7/0JIe/9CSHv/Qkh7/0JIe/82Q
Hv9ONw7/AAAA/wYGBv92dHTg09DPJsG/vgB/fn0AqaemdS8uLv8AAAD/DwsD/6JyGv/TlB7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JId/9OXK//frWL/47Ny/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Nx/+KxbP/Vmzb/0JId/9CS
Hv/Qkh7/0JIe/9OUHv+ecBn/DQoD/wAAAP89PTz/tbSzcKOhoAD39fMOgYB/vQwMDP8AAAD/QS8M/8uP
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/UmTH/4K5m/+Ozcv/js3H/47Nx/+Ozcf/js3H/47Nx/+Oz
cv/frGH/0pYo/9CSHf/Qkh7/0JIe/9CSHv/Kjh7/PiwM/wAAAP8UFBT/kpGQuvLv7gzLycg4WVhY6gAA
AP8BAQH/gFsV/9OUH//Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/1Zo0/+CvZ//js3L/47Nx/+Oz
cf/js3H/47Nx/+Ozcf/js3L/26ZR/9CTIP/Qkh7/0JIe/9CSHv/TlB//fFgV/wAAAP8BAQH/bGtq6NHO
zTSzsbBxNzY2/AAAAP8UDgT/r3sb/9KTHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JId/9Wb
Nf/hr2j/47Ny/+Ozcf/js3H/47Nx/+Ozcf/js3H/4rJv/9adPP/Qkh3/0JIe/9CSHv/SlB7/rHkb/xIN
BP8AAAD/R0ZG/L68u2ycm5qmHh4d/wAAAP8zJAr/x4we/9GSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JId/9CRHf/Qkh7/0JIf/9CTIP/Qkh//0JIe/9CSHf/QkR3/0JId/9CS
Hv/Qkh7/0JIe/9CSHf/Xnz//47Jw/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Ry/92pWP/QkyD/0JIe/9CS
Hv/Rkh7/xYse/y8iCf8AAAD/Kioq/6upqKGJiIfODw4O/wAAAP9TOw//0JIf/9CSHv/Qkh7/0JIe/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHf/RkyL/1Jkw/9efQf/apU7/3KhW/9ypWv/cqFj/26ZS/9mi
R//WnDn/0ZUl/9CRHP/Qkh3/0JId/9CRHf/UmTH/4rFt/+Ozcf/js3H/47Nx/+Ozcf/js3H/47Ny/96r
X//RkyL/0JIe/9CSHv/Qkh7/0JIe/084Dv8AAAD/GBcX/5qYmMp6eXjpBgYG/wAAAP9tTRP/05Qf/9CS
Hv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0ZQk/9efPv/eqlz/4rFs/+Ozcf/jtHL/47Ry/+O0
cv/jtHL/47Rz/+KxbP/bplL/1p4+/9igQv/Zo0n/2qRN/9ulT//eqlz/47Nx/+Ozcf/js3H/47Nx/+Oz
cf/js3H/47Rz/9yoVv/Qkh//0JIe/9CSHv/Qkh7/05Qf/2lLEv8AAAD/DQ0M/4yKiuVvbm74AgIC/wAA
AP9/WhX/1JUf/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/0JIe/9CSHv/VmjT/3qtd/+OzcP/js3L/47Nx/+Oz
cf/js3H/47Nx/+Ozcf/js3L/4K9n/9ihRf/cqFf/4rFs/+Ozcv/js3L/47Ry/+O0cv/js3L/47Nx/+Oz
cf/js3H/47Nx/+Ozcf/jtHL/4bFr/9WbNv/Qkh3/0JIe/9CSHv/Qkh7/1JUf/3tXFf8AAAD/BwcH/4KA
gPRraWn/AQEB/wEBAf+IYBb/1JQe/9CSHv/Qkh7/0JIe/9CSHv/Qkh3/0JIf/9efP//hsGr/47Ny/+Oz
cf/js3H/47Nx/+Ozcf/js3H/47Nx/+Ozcf/js3L/26dT/92qW//ktHP/47Ny/+Ozcv/js3L/47Ny/+Oz
cv/js3L/47Ny/+Ozcv/js3L/47Nw/+KxbP/eq13/1Zw4/9CSHv/Qkh7/0JIe/9CSHv/Qkh7/1JQe/4Nd
Ff8AAAD/BQUF/359fPxramr/AQEB/wEBAf+IYBj/1JUi/9GTIv/RkyP/0ZMj/9GTI//RkyT/16BC/+Kz
cf/ktXb/5LV1/+S1dv/ktXb/5LV2/+Kzc//is3L/47R1/+S2d//jtHX/2qVS/96tZ//dq2H/26ZV/9um
Vf/cqVz/3qtg/96rYf/eq2D/3ald/9ynV//apE//2KBF/9WbOf/Sliv/0ZQk/9GUJf/RlCT/0ZMj/9GT
I//RkyL/1JYi/4NdF/8AAAD/BQUF/399ffxycXH4AwMD/wAAAP+CXiT/15w5/9SZOf/UmTn/1Zs+/9eg
Sv/VnUL/4bJy/+W5gf/luYD/5bmA/+W5gP/kt3z/3Klf/9egS//XoEn/2aNQ/9yqX//cqV//1ZxB/9Wc
Qf/Umj3/1Jo7/9SaO//Umjz/1Jo9/9SaPf/Umj3/1Jo8/9SaO//UmTr/1Jk6/9SZOv/Umjv/1Jo7/9Sa
O//Umjr/1Jk6/9SZOf/UmTn/15w5/31bI/8AAAD/CAgI/4SDgvV/fX3pCAgI/wAAAP9xUyP/15w9/9Sa
PP/Umz7/3ati/+O1eP/aplj/5Ld8/+W5gP/luYD/5bmA/+W5gP/dq2H/1Jo8/9SaO//Umjv/1Jo7/9Sa
O//Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/15w9/2xPIP8AAAD/Dg4O/5COjuWQjo3PERER/wAA
AP9WPxv/1Zs9/9SaO//Zo1D/5Lh+/+Gycv/bp1r/5bl//+W5gP/luYD/5bmA/+O1eP/Wn0f/1Jo7/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/1E7Gf8AAAD/Gxsb/5+e
ncqkoqGnIyMj/wAAAP81JxH/y5Q7/9WbPv/fr2r/5bmA/9qmV//ZpFP/5bl//+W5gP/luYD/5bmB/+Cw
bf/Umz7/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Vmjz/yZM6/zEk
D/8AAAD/MTAw/7GvrqK5t7ZyQD8//QAAAP8VEAj/s4I0/9mgR//jtnr/4LBt/9WbP//Yo1D/5Lh//+W5
gP/luYD/5bmB/+Gycf/Vm0D/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/WnD3/sIAz/xMOBv8AAAD/UVBP/MLAv23OzMs5ZmVk6wAAAP8CAQH/hGEn/92nVf/kt33/2KNQ/9OZ
Of/bp1r/5bmA/+W5gP/luYD/5bmA/+S4fv/cqV3/1Zs//9SZO//Umjv/1Jk7/9WdQv/VnED/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/XnD3/gF0m/wEAAP8DAwP/eHZ26dHOzTXs6egPj46NvxISEv8AAAD/RDIV/9em
X//luH7/2KNQ/9aeR//hsnL/5bmB/+W5gP/luYD/5bmA/+W5gP/luH//369r/9mkUv/Xn0j/2KJP/+Cw
bf/Zo1H/1Jo7/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Oljv/QC8U/wAAAP8cGxv/n52cu+Ti4A2amJcAtLKxdjw7
O/8AAAD/EAwG/7GNW//ovIL/47V4/+K1d//luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmB/+W4
f//kt3v/5Lh+/+W5gf/bqFz/1Jk7/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9ecPf+jdzD/DgoF/wAAAP9MS0v/vbu6crKw
rwDBv74A0c7NK3d1deMGBgb/AAAA/11LNf/jt3//5bmB/+W5gf/luYD/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/itHb/2KFM/9SaO//Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9GYPP9RPBn/AAAA/wsL
C/+HhoXh0c/OKMG/vgDAvr0A////AqupqZQxMTD/AAAA/xEOCv+si2H/6LyC/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYH/47V5/9unWv/VnED/1Jo7/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/15w9/5tx
Lv8OCgX/AAAA/0A/P/+1tLOQ////AcC+vQDAvr0AwsC/AM3LyjF6eXjkCQkJ/wAAAP8/MyT/1q14/+a6
gf/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmB/+W5
gP/fr2r/1p5F/9SaO//Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Vmzz/xI44/zcoEf8AAAD/Dw8P/4qIh+LOzMsuwsC/AAAAAAAAAAAAwb++AP///wG1s7KBRkZF/gAA
AP8CAgH/cFtA/+O4f//muYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYH/4LFv/9aeRf/Umjv/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9WaPP/SmDz/Y0ke/wEBAf8AAAD/VlVU/r27unz///8AwL69AAAAAAAAAAAAAAAAAMTC
wQDU0tEYmZiXwiIiIf8AAAD/DAoH/5B1Uv/nuoH/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmB/9+uav/Vmz//1Jo8/9SaPP/Umjz/1Jo8/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9WbPf+AXif/CgcE/wAAAP8tLSz/paSjv9HPzhbDwcAAAAAAAAAA
AAAAAAAAAAAAAMC+vQC/vbwAycbFP39+feUQEBD/AAAA/xURDf+bflj/57qB/+a5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W4f//apVX/1Jo7/9Sa
PP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9SaPP/Vmjz/1Zs9/4plKf8RDQb/AAAA/xgXF/+NjIviysjHO8PB
wADAvr0AAAAAAAAAAAAAAAAAAAAAAAAAAADEwsEA////AMC+vWJtbGvyCgoK/wAAAP8VEQ3/kXZT/+S4
gP/muoH/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W6
gf/fr2r/1Jo9/9SaPP/Umjz/1Jo8/9SaPP/Umjz/1Jo8/9WbPP/SmDz/gV4n/xENBv8AAAD/Dw8P/3t6
efHEwsFefnx8AMG/vgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx8XEAOHf3QS7ubh2aGZm9goK
Cv8AAAD/DQsI/3JdQf/WrXj/6LyC/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gf/hsnL/1ZtA/9SaPP/Umjz/1Jo8/9SaPP/Umjz/15w9/8SPOP9jSR7/CgcE/wAA
AP8PDw//dXRz9MC+vXLW1NMDxMLBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMrH
xgDa2NYGvLq5dnBvbvISERH/AAAA/wMDAv9ANCX/rYxi/+O3f//ou4L/5bmA/+W5gP/luYD/5bmA/+W5
gP/luYD/5bmA/+W5gP/luYD/5bmA/+W5gf/hsnL/1ZxA/9SaPP/Umjz/1Jo8/9ecPf/RmDz/nHIu/zco
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
AAD/4AAAB/8AAP/4AAAf/wAA//8AAP//AAA=
</value>
</data>
</root>