diff --git a/CompShop/CompShop/CompShop.csproj b/CompShop/CompShop/CompShop.csproj
index 663fdb8..894afcd 100644
--- a/CompShop/CompShop/CompShop.csproj
+++ b/CompShop/CompShop/CompShop.csproj
@@ -8,4 +8,8 @@
enable
+
+
+
+
\ No newline at end of file
diff --git a/CompShop/CompShop/Entites/Check.cs b/CompShop/CompShop/Entites/Check.cs
new file mode 100644
index 0000000..2127902
--- /dev/null
+++ b/CompShop/CompShop/Entites/Check.cs
@@ -0,0 +1,21 @@
+namespace CompShop.Entites
+{
+ public class Check
+ {
+ public int Id { get; set; }
+ public List Products { get; set; }
+ public Client Client { get; set; }
+ public DateTime PurchaseDate { get; set; }
+
+ public static Check CreateEntity(int id, List products, Client client, DateTime purchaseDate)
+ {
+ return new Check
+ {
+ Id = id,
+ Products = products,
+ Client = client,
+ PurchaseDate = purchaseDate
+ };
+ }
+ }
+}
diff --git a/CompShop/CompShop/Entites/Client.cs b/CompShop/CompShop/Entites/Client.cs
new file mode 100644
index 0000000..bef56cc
--- /dev/null
+++ b/CompShop/CompShop/Entites/Client.cs
@@ -0,0 +1,22 @@
+using CompShop.Entites.Enums;
+namespace CompShop.Entites
+{
+ public class Client
+ {
+ public int Id { get; set; }
+ public string Name { get; set; }
+ public string PhoneNumber { get; set; }
+ public ClientType ClientType { get; set; }
+
+ public static Client CreateEntity(int id, string name, string phoneNumber, ClientType clientType)
+ {
+ return new Client
+ {
+ Id = id,
+ Name = name,
+ PhoneNumber = phoneNumber,
+ ClientType = clientType
+ };
+ }
+ }
+}
diff --git a/CompShop/CompShop/Entites/Enums/ClientType.cs b/CompShop/CompShop/Entites/Enums/ClientType.cs
new file mode 100644
index 0000000..ecc7aad
--- /dev/null
+++ b/CompShop/CompShop/Entites/Enums/ClientType.cs
@@ -0,0 +1,9 @@
+namespace CompShop.Entites.Enums
+{
+ public enum ClientType
+ {
+ None = 0,
+ Individual = 1,
+ Business = 2
+ }
+}
diff --git a/CompShop/CompShop/Entites/Enums/ProductType.cs b/CompShop/CompShop/Entites/Enums/ProductType.cs
new file mode 100644
index 0000000..a30a50b
--- /dev/null
+++ b/CompShop/CompShop/Entites/Enums/ProductType.cs
@@ -0,0 +1,17 @@
+namespace CompShop.Entites.Enums
+{
+ [Flags]
+ public enum ProductType
+ {
+ None = 0,
+ Laptop = 1,
+ Desktop = 2, // Настольный компьютер
+ Monitor = 4, // Монитор
+ Keyboard = 8, // Клавиатура
+ Mouse = 16, // Мышь
+ Headset = 32, // Наушники
+ Webcam = 64, // Веб-камера
+ Printer = 128, // Принтер
+ Software = 256 // Программное обеспечение
+ }
+}
diff --git a/CompShop/CompShop/Entites/Product.cs b/CompShop/CompShop/Entites/Product.cs
new file mode 100644
index 0000000..aea69d1
--- /dev/null
+++ b/CompShop/CompShop/Entites/Product.cs
@@ -0,0 +1,22 @@
+using CompShop.Entites.Enums;
+
+namespace CompShop.Entites
+{
+ public class Product
+ {
+ public int ID { get; private set; }
+ public string Name { get; private set; }
+ public string Description { get; private set; }
+ public decimal Price { get; private set; }
+ public ProductType ProductType { get; private set; }
+
+ public static Product CreateEntity(int id, string name, string desc, decimal price, ProductType productType)
+ {
+ return new Product { ID = id,
+ Name = name ?? string.Empty,
+ Description = desc ?? string.Empty,
+ Price = price,
+ ProductType = productType };
+ }
+ }
+}
diff --git a/CompShop/CompShop/Entites/ProductInCheck.cs b/CompShop/CompShop/Entites/ProductInCheck.cs
new file mode 100644
index 0000000..9dab523
--- /dev/null
+++ b/CompShop/CompShop/Entites/ProductInCheck.cs
@@ -0,0 +1,12 @@
+namespace CompShop.Entites
+{
+ public class ProductInCheck
+ {
+ public int ID { get; set; }
+ public int Count { get; set; }
+ public static ProductInCheck CreateElement(int id, int count)
+ {
+ return new ProductInCheck { ID = id, Count = count};
+ }
+ }
+}
diff --git a/CompShop/CompShop/Entites/ProductsOnStorage.cs b/CompShop/CompShop/Entites/ProductsOnStorage.cs
new file mode 100644
index 0000000..7bec734
--- /dev/null
+++ b/CompShop/CompShop/Entites/ProductsOnStorage.cs
@@ -0,0 +1,15 @@
+namespace CompShop.Entites
+{
+ public class ProductsOnStorage
+ {
+ public int Id { get; set; }
+ public Product Product { get; set; }
+ public Storage Storage { get; set; }
+ public int Count { get; set; }
+
+ public static ProductsOnStorage CreateEntity(int id, Product product, Storage storage, int count)
+ {
+ return new ProductsOnStorage { Storage = storage, Id = id, Product = product, Count = count };
+ }
+ }
+}
diff --git a/CompShop/CompShop/Entites/Storage.cs b/CompShop/CompShop/Entites/Storage.cs
new file mode 100644
index 0000000..f7136e1
--- /dev/null
+++ b/CompShop/CompShop/Entites/Storage.cs
@@ -0,0 +1,14 @@
+namespace CompShop.Entites
+{
+ public class Storage
+ {
+ public int Id { get; set; }
+ public int Size { get; set; } // Вместимость
+ public string Adress { get; set; }
+
+ public static Storage CreateEntity(int id, int size, string adress)
+ {
+ return new Storage { Id = id, Size = size, Adress = adress };
+ }
+ }
+}
diff --git a/CompShop/CompShop/Form1.Designer.cs b/CompShop/CompShop/Form1.Designer.cs
deleted file mode 100644
index 71e1057..0000000
--- a/CompShop/CompShop/Form1.Designer.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-namespace CompShop
-{
- partial class Form1
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.components = new System.ComponentModel.Container();
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(800, 450);
- this.Text = "Form1";
- }
-
- #endregion
- }
-}
diff --git a/CompShop/CompShop/Form1.cs b/CompShop/CompShop/Form1.cs
deleted file mode 100644
index 3107eff..0000000
--- a/CompShop/CompShop/Form1.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace CompShop
-{
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- }
-}
diff --git a/CompShop/CompShop/Form1.resx b/CompShop/CompShop/Form1.resx
deleted file mode 100644
index 1af7de1..0000000
--- a/CompShop/CompShop/Form1.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Clients/ClientForm.Designer.cs b/CompShop/CompShop/Forms/Clients/ClientForm.Designer.cs
new file mode 100644
index 0000000..8d32bad
--- /dev/null
+++ b/CompShop/CompShop/Forms/Clients/ClientForm.Designer.cs
@@ -0,0 +1,103 @@
+namespace CompShop.Forms
+{
+ partial class ClientForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ deleteButton = new Button();
+ editButton = new Button();
+ addButton = new Button();
+ productsDataGridView = new DataGridView();
+ ((System.ComponentModel.ISupportInitialize)productsDataGridView).BeginInit();
+ SuspendLayout();
+ //
+ // deleteButton
+ //
+ deleteButton.Location = new Point(869, 144);
+ deleteButton.Name = "deleteButton";
+ deleteButton.Size = new Size(161, 60);
+ deleteButton.TabIndex = 7;
+ deleteButton.Text = "Удалить";
+ deleteButton.UseVisualStyleBackColor = true;
+ deleteButton.Click += deleteButton_Click;
+ //
+ // editButton
+ //
+ editButton.Location = new Point(869, 78);
+ editButton.Name = "editButton";
+ editButton.Size = new Size(161, 60);
+ editButton.TabIndex = 6;
+ editButton.Text = "Редактировать";
+ editButton.UseVisualStyleBackColor = true;
+ editButton.Click += editButton_Click;
+ //
+ // addButton
+ //
+ addButton.BackColor = SystemColors.Control;
+ addButton.Location = new Point(869, 12);
+ addButton.Name = "addButton";
+ addButton.Size = new Size(161, 60);
+ addButton.TabIndex = 5;
+ addButton.Text = "Добавить";
+ addButton.UseVisualStyleBackColor = false;
+ addButton.Click += addButton_Click;
+ //
+ // productsDataGridView
+ //
+ productsDataGridView.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
+ productsDataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ productsDataGridView.Location = new Point(12, 12);
+ productsDataGridView.Name = "productsDataGridView";
+ productsDataGridView.RowHeadersWidth = 51;
+ productsDataGridView.RowTemplate.Height = 29;
+ productsDataGridView.Size = new Size(851, 400);
+ productsDataGridView.TabIndex = 4;
+ //
+ // ClientForm
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(1056, 424);
+ Controls.Add(deleteButton);
+ Controls.Add(editButton);
+ Controls.Add(addButton);
+ Controls.Add(productsDataGridView);
+ Name = "ClientForm";
+ Text = "Клиенты";
+ Load += ClientForm_Load;
+ ((System.ComponentModel.ISupportInitialize)productsDataGridView).EndInit();
+ ResumeLayout(false);
+ }
+
+ #endregion
+
+ private Button deleteButton;
+ private Button editButton;
+ private Button addButton;
+ private DataGridView productsDataGridView;
+ }
+}
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Clients/ClientForm.cs b/CompShop/CompShop/Forms/Clients/ClientForm.cs
new file mode 100644
index 0000000..fab2adf
--- /dev/null
+++ b/CompShop/CompShop/Forms/Clients/ClientForm.cs
@@ -0,0 +1,102 @@
+using CompShop.Forms.Clients;
+using CompShop.Repos;
+using Unity;
+
+namespace CompShop.Forms
+{
+ public partial class ClientForm : Form
+ {
+ private readonly IUnityContainer _container;
+ private readonly IClientRepository _repository;
+
+ public ClientForm(IUnityContainer unityContainer, IClientRepository clientRepository)
+ {
+ InitializeComponent();
+
+ _container = unityContainer ?? throw new ArgumentNullException(nameof(unityContainer));
+ _repository = clientRepository ?? throw new ArgumentNullException(nameof(_repository));
+ }
+
+ private void ClientForm_Load(object sender, EventArgs e)
+ {
+ try
+ {
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ private void LoadList() => productsDataGridView.DataSource = _repository.ReadAll();
+
+ private bool TryGetIdentifierFromSelectedRow(out int id)
+ {
+ id = 0;
+ if (productsDataGridView.SelectedRows.Count < 1)
+ {
+ MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return false;
+ }
+
+ id = Convert.ToInt32(productsDataGridView.SelectedRows[0].Cells["Id"].Value);
+ return true;
+ }
+
+ private void addButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ _container.Resolve().ShowDialog();
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void editButton_Click(object sender, EventArgs e)
+ {
+ if (!TryGetIdentifierFromSelectedRow(out var findId))
+ {
+ return;
+ }
+
+ try
+ {
+ var form = _container.Resolve();
+ form.Id = findId;
+ form.ShowDialog();
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void deleteButton_Click(object sender, EventArgs e)
+ {
+ if (!TryGetIdentifierFromSelectedRow(out var findId))
+ {
+ return;
+ }
+
+ if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes)
+ {
+ return;
+ }
+
+ try
+ {
+ _repository.Delete(findId);
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ }
+}
diff --git a/CompShop/CompShop/Forms/Clients/ClientForm.resx b/CompShop/CompShop/Forms/Clients/ClientForm.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/CompShop/CompShop/Forms/Clients/ClientForm.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Clients/ClientFormSettings.Designer.cs b/CompShop/CompShop/Forms/Clients/ClientFormSettings.Designer.cs
new file mode 100644
index 0000000..a67d60e
--- /dev/null
+++ b/CompShop/CompShop/Forms/Clients/ClientFormSettings.Designer.cs
@@ -0,0 +1,132 @@
+namespace CompShop.Forms.Clients
+{
+ partial class ClientFormSettings
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ label2 = new Label();
+ label1 = new Label();
+ nameTextbox = new TextBox();
+ saveButton = new Button();
+ phoneNumberTextbox = new TextBox();
+ typeCombobox = new ComboBox();
+ label4 = new Label();
+ SuspendLayout();
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Location = new Point(13, 59);
+ label2.Name = "label2";
+ label2.Size = new Size(130, 20);
+ label2.TabIndex = 13;
+ label2.Text = "Номер телефона:";
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Location = new Point(13, 12);
+ label1.Name = "label1";
+ label1.Size = new Size(122, 20);
+ label1.TabIndex = 11;
+ label1.Text = "Имя покупателя";
+ //
+ // nameTextbox
+ //
+ nameTextbox.Location = new Point(153, 12);
+ nameTextbox.Name = "nameTextbox";
+ nameTextbox.Size = new Size(210, 27);
+ nameTextbox.TabIndex = 10;
+ //
+ // saveButton
+ //
+ saveButton.Anchor = AnchorStyles.Bottom;
+ saveButton.Location = new Point(153, 229);
+ saveButton.Name = "saveButton";
+ saveButton.Size = new Size(94, 29);
+ saveButton.TabIndex = 9;
+ saveButton.Text = "Сохранить";
+ saveButton.UseVisualStyleBackColor = true;
+ saveButton.Click += saveButton_Click;
+ //
+ // phoneNumberTextbox
+ //
+ phoneNumberTextbox.Location = new Point(153, 59);
+ phoneNumberTextbox.Name = "phoneNumberTextbox";
+ phoneNumberTextbox.Size = new Size(210, 27);
+ phoneNumberTextbox.TabIndex = 18;
+ //
+ // typeCombobox
+ //
+ typeCombobox.FormattingEnabled = true;
+ typeCombobox.Location = new Point(153, 101);
+ typeCombobox.Name = "typeCombobox";
+ typeCombobox.Size = new Size(151, 28);
+ typeCombobox.TabIndex = 20;
+ //
+ // label4
+ //
+ label4.AutoSize = true;
+ label4.Location = new Point(13, 104);
+ label4.Name = "label4";
+ label4.Size = new Size(38, 20);
+ label4.TabIndex = 19;
+ label4.Text = "Вид:";
+ //
+ // ClientFormSettings
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(388, 270);
+ Controls.Add(typeCombobox);
+ Controls.Add(label4);
+ Controls.Add(phoneNumberTextbox);
+ Controls.Add(label2);
+ Controls.Add(label1);
+ Controls.Add(nameTextbox);
+ Controls.Add(saveButton);
+ Name = "ClientFormSettings";
+ Text = "Регистрация клиента";
+ Load += ClientFormSettings_Load;
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private ComboBox typeCombobox;
+ private Label label4;
+ private Label label3;
+ private NumericUpDown priceNumeric;
+ private Label label2;
+ private TextBox descriptionTextbox;
+ private Label label1;
+ private TextBox nameTextbox;
+ private Button saveButton;
+ private TextBox phoneNumberTextbox;
+ }
+}
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Clients/ClientFormSettings.cs b/CompShop/CompShop/Forms/Clients/ClientFormSettings.cs
new file mode 100644
index 0000000..6c4d272
--- /dev/null
+++ b/CompShop/CompShop/Forms/Clients/ClientFormSettings.cs
@@ -0,0 +1,87 @@
+using CompShop.Entites.Enums;
+using CompShop.Entites;
+using CompShop.Repos;
+
+namespace CompShop.Forms.Clients
+{
+ public partial class ClientFormSettings : Form
+ {
+ private readonly IClientRepository _repository;
+
+ private int? _clientId;
+
+ public int Id
+ {
+ set
+ {
+ try
+ {
+ var client = _repository.Read(value);
+ if (client != null)
+ {
+ throw new InvalidDataException(nameof(client));
+ }
+ nameTextbox.Text = client.Name;
+ phoneNumberTextbox.Text = client.PhoneNumber;
+ typeCombobox.SelectedItem = client.ClientType;
+
+ _clientId = value;
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ }
+ }
+
+ public ClientFormSettings(IClientRepository clientRepository)
+ {
+ InitializeComponent();
+ _repository = clientRepository ?? throw new ArgumentNullException(nameof(clientRepository));
+ typeCombobox.DataSource = Enum.GetValues(typeof(ClientType));
+
+ }
+
+ private void ClientFormSettings_Load(object sender, EventArgs e)
+ {
+
+ }
+
+ private void saveButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (string.IsNullOrWhiteSpace(nameTextbox.Text) ||
+ string.IsNullOrWhiteSpace(phoneNumberTextbox.Text) || typeCombobox.SelectedIndex < 1
+ || typeCombobox.SelectedIndex < 1)
+ {
+ throw new Exception("Имеются незаполненные поля");
+ }
+
+ if (_clientId.HasValue)
+ {
+
+ _repository.Update(CreateClient(_clientId.Value));
+ }
+ else
+ {
+
+ _repository.Update(CreateClient(0));
+ }
+
+ Close();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при сохранении",
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ private Client CreateClient(int id)
+ {
+ return Client.CreateEntity(id, nameTextbox.Text, phoneNumberTextbox.Text, (ClientType)typeCombobox.SelectedValue);
+ }
+
+ }
+}
diff --git a/CompShop/CompShop/Forms/Clients/ClientFormSettings.resx b/CompShop/CompShop/Forms/Clients/ClientFormSettings.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/CompShop/CompShop/Forms/Clients/ClientFormSettings.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Form1.Designer.cs b/CompShop/CompShop/Forms/Form1.Designer.cs
new file mode 100644
index 0000000..8ab7949
--- /dev/null
+++ b/CompShop/CompShop/Forms/Form1.Designer.cs
@@ -0,0 +1,130 @@
+namespace CompShop
+{
+ partial class ShopForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ShopForm));
+ menuStrip1 = new MenuStrip();
+ справочникиToolStripMenuItem = new ToolStripMenuItem();
+ товарыToolStripMenuItem = new ToolStripMenuItem();
+ клиентыToolStripMenuItem = new ToolStripMenuItem();
+ складыToolStripMenuItem = new ToolStripMenuItem();
+ операцииToolStripMenuItem = new ToolStripMenuItem();
+ товарыНаСкаледToolStripMenuItem = new ToolStripMenuItem();
+ чекиToolStripMenuItem = new ToolStripMenuItem();
+ menuStrip1.SuspendLayout();
+ SuspendLayout();
+ //
+ // menuStrip1
+ //
+ menuStrip1.ImageScalingSize = new Size(20, 20);
+ menuStrip1.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, операцииToolStripMenuItem });
+ menuStrip1.Location = new Point(0, 0);
+ menuStrip1.Name = "menuStrip1";
+ menuStrip1.Size = new Size(800, 28);
+ menuStrip1.TabIndex = 0;
+ menuStrip1.Text = "menuStrip1";
+ //
+ // справочникиToolStripMenuItem
+ //
+ справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { товарыToolStripMenuItem, клиентыToolStripMenuItem, складыToolStripMenuItem });
+ справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem";
+ справочникиToolStripMenuItem.Size = new Size(126, 24);
+ справочникиToolStripMenuItem.Text = "Справочники...";
+ //
+ // товарыToolStripMenuItem
+ //
+ товарыToolStripMenuItem.Name = "товарыToolStripMenuItem";
+ товарыToolStripMenuItem.Size = new Size(152, 26);
+ товарыToolStripMenuItem.Text = "Товары";
+ товарыToolStripMenuItem.Click += товарыToolStripMenuItem_Click;
+ //
+ // клиентыToolStripMenuItem
+ //
+ клиентыToolStripMenuItem.Name = "клиентыToolStripMenuItem";
+ клиентыToolStripMenuItem.Size = new Size(152, 26);
+ клиентыToolStripMenuItem.Text = "Клиенты";
+ клиентыToolStripMenuItem.Click += клиентыToolStripMenuItem_Click;
+ //
+ // складыToolStripMenuItem
+ //
+ складыToolStripMenuItem.Name = "складыToolStripMenuItem";
+ складыToolStripMenuItem.Size = new Size(152, 26);
+ складыToolStripMenuItem.Text = "Склады";
+ складыToolStripMenuItem.Click += складыToolStripMenuItem_Click;
+ //
+ // операцииToolStripMenuItem
+ //
+ операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { товарыНаСкаледToolStripMenuItem, чекиToolStripMenuItem });
+ операцииToolStripMenuItem.Name = "операцииToolStripMenuItem";
+ операцииToolStripMenuItem.Size = new Size(104, 24);
+ операцииToolStripMenuItem.Text = "Операции...";
+ //
+ // товарыНаСкаледToolStripMenuItem
+ //
+ товарыНаСкаледToolStripMenuItem.Name = "товарыНаСкаледToolStripMenuItem";
+ товарыНаСкаледToolStripMenuItem.Size = new Size(224, 26);
+ товарыНаСкаледToolStripMenuItem.Text = "Товары на складе";
+ товарыНаСкаледToolStripMenuItem.Click += товарыНаСкаледToolStripMenuItem_Click;
+ //
+ // чекиToolStripMenuItem
+ //
+ чекиToolStripMenuItem.Name = "чекиToolStripMenuItem";
+ чекиToolStripMenuItem.Size = new Size(224, 26);
+ чекиToolStripMenuItem.Text = "Чеки...";
+ чекиToolStripMenuItem.Click += чекиToolStripMenuItem_Click;
+ //
+ // ShopForm
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ BackgroundImage = (Image)resources.GetObject("$this.BackgroundImage");
+ BackgroundImageLayout = ImageLayout.Stretch;
+ ClientSize = new Size(800, 450);
+ Controls.Add(menuStrip1);
+ MainMenuStrip = menuStrip1;
+ Name = "ShopForm";
+ Text = "Магазин электроники";
+ menuStrip1.ResumeLayout(false);
+ menuStrip1.PerformLayout();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private MenuStrip menuStrip1;
+ private ToolStripMenuItem справочникиToolStripMenuItem;
+ private ToolStripMenuItem товарыToolStripMenuItem;
+ private ToolStripMenuItem клиентыToolStripMenuItem;
+ private ToolStripMenuItem складыToolStripMenuItem;
+ private ToolStripMenuItem операцииToolStripMenuItem;
+ private ToolStripMenuItem товарыНаСкаледToolStripMenuItem;
+ private ToolStripMenuItem чекиToolStripMenuItem;
+ }
+}
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Form1.cs b/CompShop/CompShop/Forms/Form1.cs
new file mode 100644
index 0000000..f81a502
--- /dev/null
+++ b/CompShop/CompShop/Forms/Form1.cs
@@ -0,0 +1,48 @@
+using CompShop.Forms;
+using CompShop.Forms.ProductsOnStorage;
+using CompShop.Forms.Receipt;
+using CompShop.Forms.Storage;
+using Unity;
+
+namespace CompShop
+{
+ public partial class ShopForm : Form
+ {
+ private readonly IUnityContainer _container;
+
+ public ShopForm(IUnityContainer container)
+ {
+ InitializeComponent();
+
+ _container = container ?? throw new ArgumentNullException(nameof(container));
+ }
+
+ private void ToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ _container.Resolve().ShowDialog();
+ }
+
+ private void ToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ _container.Resolve().ShowDialog();
+ }
+
+ private void ToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ _container.Resolve().ShowDialog();
+
+ }
+
+ private void ToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ _container.Resolve().ShowDialog();
+
+ }
+
+ private void ToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ _container.Resolve().ShowDialog();
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Form1.resx b/CompShop/CompShop/Forms/Form1.resx
new file mode 100644
index 0000000..949581d
--- /dev/null
+++ b/CompShop/CompShop/Forms/Form1.resx
@@ -0,0 +1,1758 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+
+
+ /9j/4AAQSkZJRgABAQEASABIAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAQwAABtbnRyUkdCIFhZ
+ WiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAA
+ AHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAA
+ AChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAA
+ AFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAA
+ AAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAA
+ E9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAA
+ ABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMABAMDBAMDBAQDBAUEBAUGCgcGBgYG
+ DQkKCAoPDRAQDw0PDhETGBQREhcSDg8VHBUXGRkbGxsQFB0fHRofGBobGv/bAEMBBAUFBgUGDAcHDBoR
+ DxEaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGv/CABEIAewC
+ 4AMBIgACEQEDEQH/xAAcAAACAwEBAQEAAAAAAAAAAAAFBgMEBwIBAAj/xAAZAQADAQEBAAAAAAAAAAAA
+ AAAAAQIDBAX/2gAMAwEAAhADEAAAARFKaGCTur8y6MMTSgEZGJOeK+cza3cnhuVP2aJhqx64Wfdgc8Sa
+ qYtmm+oXxDTf2v8APexpfA17P0foGbN38Vqsls2dPVxPsbQYRyP035augKTkshqAn7rLDMskHtqOTOqy
+ gL6F+j1rGtRgkEmDebIiGAdpK7cFFrD01CTWFvzodjp58LJIqwX67Em4xBGWblShL8H9k2K3B2nZTgb6
+ Ui5G7+sQPb0NqP0mUzazy4CAC+EuaB3tvoKPtzgK30vDPO/vhcdw/B77H61qUc0mZUn8ohIcVxdzo5FV
+ PIu9VRXDqTWhknVnYb6Nx0dG0ydx5mWkUU047CVbOzDaUpo4rqIRHIJhhGilzFdW6o1LRUyr2ndIhIuH
+ bQO1Gh6XPwqMYNlyeMi1nIMgBbscSVm5W1WJJ6txHf5jlRL82l53WGEZDyrIi2ELqsltbvh901CbrUKu
+ rtNOKFRi2rOlwjAJuWmPn0BnRk6xdEM6cC7IIadCQnGVgH+NnqEUA9gWDSg+0weLPL4dR/TBW7IBaLMU
+ 0QVZYy9JwP8AFiATbH183YVtXX2g5gnBc1Al3nOi7WIsUfdcx65iYSw+Wwkkc3LtCjgGildpRpwwm+Aq
+ LbmLbAwEggA5Ivdpdj6r7hRoEq9GbDXWerrQio1nysUZp+MysXv2XGirCcsFgShIlI58vgTXlQD67Pm2
+ KMO1Z1QIdszAlfSgIZsu6tnyol6gF9ZuPecUIP0rIAswY1lf6wyjZLr3TMZVTJRTy0PpugZnVhmc9JQm
+ RnLBTXNHpTWKhtdU1efWO4tcqNIwKAUYgKgv9M54My7YKjPicVJDjWhkC6fzgvIyoryB1yWYWNf6JaL4
+ ozya02BIUKnbbWPuth0S6B08bvNvgMNsSsS2K6snYbVzDxSnlEwhQEBzLVKuy/UUkt/9ikWJxrqVKs5M
+ SqnMBIDi1MfBtnQRrNjl6Vqoy1cPUiZ1plrmYia1Z9LyWnPmQ6GNHGkBz6lGZFpy9tS86IyaQoG1DG1X
+ t9l2kYNeIQr6mlFRMy3RENNXHT43hXu05tFCJrvvBowXV3Su7EEOcAe0zwSE6aMTu0MqyEbp+Sl+iTQB
+ xzzaLyWvrAGwVHPXFRpkgtG+cW/qyzIFtCeWnW7EYV+Cn1rozFdzdAUdGhmfuzTWAC5S/KT6GmrLBhCi
+ sgzzJxqQpWRSzGT5XuJ8H/RqY6xUgsMXADRk0yqYbenLOmwWUmgzyk6FlZkL2EuKkTBSxtWGnxefTE95
+ 4578904LJaY8WxNkCGYagkS1qat2OxPWmTeTKiy5UImGXt84OLo6W3Ggl3KrF69B0xXal9gx0O4bs2Q5
+ snMP687W9pOcsm8NlZU47c26VfIiIQw2rSbkv6PGTr+X2vc4pF1Rea+TyJC1W3tOV+U6FHvtTm1uvVXv
+ EsIbCmXDn35b0L0V2BHgY1IgV1zwgtPm9pp/jAlmiQiuDzZEJLKVWgaoqebn6BfaFGT2wL61beE0uhcp
+ J/GxEubuel7yajTZKjkBq2e6GqFDJIEi8XFxpeGtgCaquSK16zL5ZoUhrICZ4LA0kEQkXyTHGi8SYlBq
+ YdbHQ3S6Ev7Zmg9CAZ2BajyrVbCcyAYscA2BlHUgGVnWzKYiNHL5VslvrquK2m0vQjMafeMYTNp/SkWJ
+ ek/oiPD3Clfq+2OXZE+0xWtYVWda7tZDPEdTYPj1zbJzo+Z9U66ICeZ2RiVa8pu4TZVboVgg56WyJaMF
+ +Q6l6y451oOe3JjYcaa98k9iqyTdnxf4zqzcrG7mNoz6SlaCmi6pJJ9SS+IbdOlzQKe0p9DVGLHUItNi
+ JA9FV8vJ0ANg9ICnl406ZIa/rgS05i4KnamDrh7peV6NBj3kIHWW++geI1lz/NmiJ7P2qniczqGM/nTY
+ W/G9OlN+ejpSimcaGBFVKw6LcprWuk09IzHScrbTXvPXfGg4Zkznef1XlLxbqfzNAWCSbuzr5qHkU205
+ VYUb8iFSbqnAtNVYdn+pAd8oU9wutCY2lLzpc986p/FzHaon3LNxaQxkZwHq7skVBoHOb3gRSHeXJeUH
+ 8BucAeVKTSjPWkr3f320+2qnQ2dlBtvPcEnfIcoWlobFxgU2bk7uRQlg15bBKpdSkE3xVSNtDLtM2NM0
+ 6lTqlLOPTalu0sN5dARWjfhWkbV0LfMdS/U/56pL5Md9FbxJZhk/OUPta3qGpZDq2FUOSViGHY4FdjQy
+ Z4Na0YjhwUN3TcpY9GXa8D1+ExY/+goKWb7sk3rjGlzfQqtlNC7mbKZws19ovm1MpmHNCyfWefX81O+P
+ vXbl4uOq3lUsC9VdN1IZE0fc80eYZvnzzEl+lksGK71SoyjQCyjUhPGHpys8N/QL5O4CbpGhtW0YrwWm
+ ojITQhiz4odDM8g7AFw8XqER0HTc/aKuShNMmieHwyuBSgGpF3RloGSLihouLsVzDq768ZIS4XCENMNV
+ F1aGub0pBfRwDTNeG78fUqnABGjdOhmuoZeG3Wa/cVYRbCsC5X5+0POo56XbcvNgZy/BKKNktFBEFOat
+ UYZ97W0M8+OaOhnrLHoExsxVNZ3peYxfiTnr7qyP9gDXPqNEMftC0Z7lahMhLAajZSxGb033Pr9DlCBt
+ DpZnrwgnN2k9wMevutRLP+Sy9onPpYZ9FW+G+iv6RlWoRbDnmiBUkD1gFJ+VKwoCV6PqOgleONMxma5u
+ oEjKaT+6Mxhm0iIASpoQ0M/lp08+t5c1Jt6uLMVFrz2HY0KmEqXm2g/BplPOToXiub6kiCrCxSWUZu+o
+ yy7ovEUj7ElxUngYQxClrUGO+M3kFlesJIVcGWm9ztiVckxlew43oRGRBCAvm2zuOdKBKWlDeCSa8SL1
+ qcUH5atOUXZl4XhQIrTKyBbGyVx7dSVvHJVJlRHNxVYtzvI1mNMr9CMaAcArlrlW7msA7qlfzqymPCLN
+ XmkXHa5789F47hmfLUzbFfTJgRNOnlK9sJTWUqA4lzbHqGH7JiX/ACOwSkuAq+E/kcjPfYwIZ8NKiq6G
+ 9uQ2LbmZsS2dYQCd881rOlccxGiViJ4gZk1HVMymiTikOyMaqOaN0xd8qyijvUL01+gswP5ckf59gKvS
+ JNER4mp9TWo1c712pB1teAXOVEmZYimqsIEZvU31KNSgZhBhqmgOJVWtRyeeXozKprskYXP1X9te3h3t
+ J7VjqnD71DK9VHcppY6p0WTIfA2KXGvA3vJNOyFE/k7dLVlLdCGd5ZJoi40gdUuN5eGBUM82kREfKwiM
+ hpoi1LFnzbPRcI3HLurBH2THn3i6H+3QsZuHntJkbl9NWqGMavOOy2nA9XyDWTp5Unyp6pBCKAGuKbTj
+ SS3CzDd73j6pgynXs/KBPqC9JZANt0+mJvePmurYwhL2HFt0sZvHLUvLa3TtErBZJxnzpPk0NTYRH0/q
+ mfjyzUcUGuroMF1Ui49LNGkUA4jOq7pKkS6sAeVDluaVamo/VOXmzI1B2JbbBJ2hLbKhEAnjegisWnk5
+ aMzGrDAOYaGiIYmBObsLu/UpEdgjsIfn2R6VumWMneG4VWiqetR8lKlA5pWyFKU0pBd8iDAkSxf6FkRh
+ HNbXRCaECzzcWKHZQXx9oZVLDdZYSQ23nVy5StSOuet2apmpgfesMFlXkSbjOblIrSxdqhlWYc6nY1WX
+ S6nyzMu9HoSW1WJQosGFlzYs67TngZiqvwNSTiVjRUJ5QlyW+X6gEu7LrKvr/ZPK1e77XTMwVSzkFy1Q
+ FIUWi0WUEx/z+s/pOHGxTee7cgJiGWoqDQJLNg+cjyl4s2qA+eJY0KzWhuOdlffPVNoHzLpKwsua8OAi
+ vssWvEIvRW68PNr6pb9GCGsNupXbRIKNuvUxmdMSpIJcsZZVMNE5aNlr1WbaI1i/wVbjnHFIZREc0m4m
+ 85tbRHJ78n8eAsMM/m2l55jc00uhUZ7Q0IcIGQt9DX49N7DMnTuVEE3FYIzi3E2BOCADVW7ddWK914ic
+ 56Lfw8XGTABpDoHxfbfiy6WIuehfoopyue2Nub6N2TnWyBmRV3W9zhy5Hcc7o1yXMzoOA5cXkaL4AN0W
+ YORyVi5XTQdUlRr2E9Sx1jB8XzVDOlSNoZppRZeASNDtdWNcljPtgEowBskOTouUzA2GRHEKdofUu17V
+ O2G5Yy2lOa5bySp+jxYReAmM7ENqs5S6iprfUrJ3tjs3Cwk7DBZjrA6851KOaxSBt0WmbTqlvDeU9wgT
+ dPFUTiCtnZyLiAIhpQCP5auChl2jJiFJ0Z1Vngsqjkr9GUZgdwJrrLtKagTX6CKG20g0PehCpazUo81e
+ 1lZsNt3O1IwwLKVfPGQHpNL6zzocXB8s0bkAG5VojWTw0OpU4TZVoX6A4Y0zNZ7X1FHsYjOV6Nm2lD0P
+ L4cfdK1ZvNgvQ0zG8GPRBg7l0nlqxvHyf5753TKJa5z9cbUDQtystZ7sC/cIJN0sy0JkZ7sXmlXXriQa
+ dinzFednoABtgKMt17zOmPQr2dOGkPaUuMvdhn1eepnZI+m/J6MqFjXPoJJALA+qpCQWWVXnPSuSQ0vS
+ fC4whmH1PRKHVii+WK1HktWNMU3AL+VI74JccqzoaaD6zH978Pzv0gjWF14yXKj6neob5Tx/S7zQu/Rh
+ 3aoF4o5mLtnHPZy+4VR+kuOUh/F/m3nAjcskEIIXWMHDLdMzCXy1qWlUtN/Oe0YtU+++e0e9x+IstyQ/
+ hp9MmtQxt9Us3B0pluiZWS8Qc2T/AEJUwPvRbdHjRFmy9Z/3ed8YrUIvVGTPNMyvOwmlVJWPj9qF00LT
+ RjAjH7Eg/eZ+6vrVkjI1y5YPps38OprFk3nXOs6GjeuWLxxxlny0vXKvAmoigEdIcQFOWgKMYaLF8nRJ
+ opuKwcxvOOZotZ+99tNVHZK1SWVQmJPzcNQj3uCp7tUXXUENTYdU1wkSqtAhlptao1W6lJYJO5ZHipyK
+ XPXXPqQagyAto0jN9XSsbUdoV9NbSM0b0+p7+86o5666DnUsw2NJoAllKKzRvXDnXzgH5JbebebKdax6
+ anh95pddR8Dtd1J6lmiustwr6tkOv4a5DczykGukcQ7Zv17847RC+pelIpevNi8PnznypmVKUeqjl7k3
+ mP6x8KmUrWZbSHZBHLoo0i3k1xZ6aaVnL9GSZpqacm2eoEFLMwk2u+A1SJQ2OaVg3W88UsM1izbHlYo0
+ jJn4muSKVYWyuwCX+qAQiHR0lNgXHK1o54MaIUI+PWytgPxhRIGUvApi32rrNYZ9WzrjYMx0vScHF9R7
+ RJ193T6m5ttV9wyjbEUk1sT8b7GWGESGY9q9fMw4xuGFcvUWnFWaK0fUYd9RdBbkoc0j234BveL/AD4G
+ ZlvQ4865H9sWP6vm1Jtz5vyZkdCjUtaz7RAO0LxaDat5z4nrtYMPp6wtIBlqC7g7VSaWa+TDK1oaLdoX
+ 8iUGcHTaPfIrlGt9Z4VIYTeQyN6vxlljnvSLSdTVaCgAhWkkol7QdUbzV0SNMyNsJ9oNzhk+kNHrTOs8
+ zjXS0OdqYvQKVSKsDDbZCKT6X8MjDiYuIewr8cjU2hsUDe04j3HLcdzxSssHQp7SXF8XmUF5Hdcl5tCr
+ tlTmqSGbOHfSdG/Pv6M/Omb69460PvPvA7vj7AQ8TVxWP0BgG95POFLaF1Vn12XRQzxxORpZ4ZbOil5D
+ 1JUaXdHyF7qeNkzwJtH6KAogxUZWhMWbiv8AYOS+A+tK7ia1ULlhJKpeQ/2NJoFomoZw6u3lEk1q8GZE
+ 2tLqsVtJCp6JAlnYbUwTnEdjQ9cNMrC2ZemB/pCpR4RHS0tiSjCfw2sy/S9M/GgpuWYKjynPXtOgzjL8
+ AYWvQDENTpxlKBTpwUNa5YJ7vvbX5/8AP0F2L882t79sTnCWqAvEXNVwtJ0vL290BblJhFt2Y6XDmZ1Y
+ 0PppBnd/RqVpgqir3o6rVucVDIAzd0RtHcijgoOi4Whpb5t0QhZFRrlhh5JfVb19mzkTZXfb6UUtMPNf
+ SdSqo/fRdTYE15KCpEZal34VrthUVHLRfp0LKDFfhiSSbvXEWZP56eo3NCeEIxTdtwPTHoJrNNqs8/o6
+ taoxGPd6gUMq2jDcq+k5k658YRJ+A3f8k5NBnJRYEbrDeGFPrUKdkZBw2Org7dIraql0eX+ig6Hfy0m0
+ cZnSacVgXWav2SptgCBpHJd6JjRKa07jK+Q1OJKYUEuYxIrnK3YEy+rHFKymNqdo5fJZ2hz4BKiEgrY9
+ nDgnuI6gPQqeNIrJajaNiZrYB7ZSWWH+OkJedi9tpS8Xvd1d4vB60Yze74vtFZsFYSoay7UAd0fURc0j
+ 8+/GPPP6lxmgYNZ0LK22HTFF0gxCzoExlE12o1d2kWrovqFTGv0KDFjdjUAuyRWeCWHfbM44zt7rr1+R
+ hji4AcQ4+Tq0b6gzrVMLYaHSeoOJP/ATIulx+Dox4Rq4h1n32pKtBu+SmhiImTwSbKwzMpWI40ytsD6h
+ kkWZKllTywiKqXwzhJFasShD1N6Kv5a6AYo6HIPN7Ghz0sxUtBzemFk571mbzvoUP00I/WxPcJNO5758
+ zXOUvR1Poaz7L51QzbHkWtmUON7rh2pxN90g3rWIv+uWdBf0QS4un8xt2qBmyN6bxxXCEJUCW6hXbkLf
+ nIjRv/2SsLHv4OXa6949cRCzEQJ1dwUEwqRMLiu2NL4HrfWQ2w0FKshm23Wcm1aplg57cy8+fC4565Hx
+ QuUJBkM1ZUw+3icMHyajYOskPQFfXx4WaZQLL+tLNyGzSLhvWcc1HLtRzZ6VPV6WscY4PtbtWwuKzYRu
+ YctPRrKGpDtkGv47ndHuObWJOo+2SV5PAhc0t1l6T7zz5uiSuMS9VL8sffXDLquVam82LAf0XiPXC11L
+ Bm5TIGcHu6Pm49/Mm2LGNJJH0iSnqsmS+J75XLpzzQevCGhS+u0xRlRsjTKaz3hPZGfDNzQuKTMoOVsM
+ YpTYGPQg1JW9v1Bw+ycg46vlOroD6Dkzp146BLIw81Jmcb4tM/PVFpVtoqsC018+rNaF/YadUcbita6P
+ zaxScxi9yBStVnZBWJ1AZNYyHW8nkOiZ4/DBprim9Mded+6z7z74LzjvgIzYMlm9PxzXcj5dRlir3tNj
+ 2L0UnPngeOy2Whu9qgv8ukwMqYoziPTEjWSGn5VpxGjgjl/0MPz+t/obFhrH3UfPr39X8mrIi3VHATEl
+ YJPfC0m9Yxtn56qaMsXVuzzH7U/ee+Sc9c/WnvU830WKSk5hSpnh0WtULi+mgcwrjV2zMVHW400rV11i
+ YjEg9vswfdIxB6a1GOl5y6ZtmWnZv0wCaVhr5tbd4Sc5NMQqEKG57NH01Jxx8nNzF81ZgiiBg13HNdyM
+ wck5lTrJugLfRATpks6Sp/OMg0jl+9Fnt50p5syjNitzajY2C7ST+H+4PL4dXiFnd89wq65pv0As7cgS
+ r3K32iHXbZNJoGRcdOR9LNz6Tm4jaJZr8sc+Rxr73WsgLv1vYom2p2jxWm/nTecNeVf6xBZ77z8zr3j0
+ XvP3w9eY6sUpGz5y5VPLDHcJXOmL6xXMEBIVBp7kARVBYE1uxRs9mF82syM1bjN+am6B+rRVZwT3Xn1h
+ Y1Jv5tcQEMivspvIuWWeIe0dew+IuF9PZyc1eTHcIFZKx0qnVvxlXq70Oj99fJp+XbDYysbhTx9Cb0iN
+ LndfoVix3ZThmr0UHJISKZp4pQqeb4qSlDPP4EPnPwFLS3eDqkXsVAGa3xssx7EcYbkoou0go/WHWp/P
+ 2yUICtHF3+lKOr7bJc/nHv8AQC21kHz6usA+dXit8V2zNpE/V87fcdD9panuWGQLf0ntDalQJ5FppRnO
+ nIOgizOw1y9Galy3eAoct3DFORlkQDPTx50Ad8/fOfXMk3WK9GYyaT4zPpnuIE7pmppvjelN5Fj1DC2a
+ BVzqnM6vdxGg3v8AUwT6ntVDJvWaTYzG2zUWTOdFkwxWbVCacGZI0fNLNRpVme8jmqaGeGD0ux5H05k9
+ +9tRee8MJ0680nNuyFBhB+mkq/Fa6GSc2OHrE/ounS3bn7tZwVL8NyFnvDmXYx3bCvo+0la6H8sICb8O
+ iu47quHxTe0DyXPr7956H3PvjPLdT65soTjmtSeeM8StFu/GJTI2OPK5g3NQRZwb6q9aFe5giGLdsxb4
+ ZrkHwMrWH9h0OIQiX6LHVVndUyHXbjLwB1Voqx26zOevPEd8+fM9989F17x7TZNcxLa5WR5/q+VTZTQM
+ 3f4QdTYVWmVbM+sy9eLZRr8qn7LVcd+8+le/e8tcXI5UQw1CqL3cI0dj0fXSTI++q0h1DM9Sh+5voWVq
+ dNa8MinT9Ac4kzaRo3C+ecQQcru0n1zpGzToRxXo0lqjnlvSerXGDh69jD7zz5rrnzyj1Af8+tOcchXT
+ MTOS+apS2PGouvfkd+xch1x9GNHs1Z1Vy6K7GQlE+uSo6Cqn8N+GzRHbvz1+hBZ5neo5dZ759zJ1598z
+ 73z0PPfvg9+89F1vf593ca3ju04cquvufv2bDpr+g0vu+O2TsKt3L/Q9PLtkUL/t2mPqxUJtdgC1cXd6
+ eknVFy05qe6qsO0JvPfmWvOo5fqU0NUmvNlDANaYctEeEvQ6Yqe980PZSno48+U2ZXWQaxFKrA6/mu3D
+ l958zXvPvLPOJPRV4CIpnmfaLmTHA8ry3DBzk8VVqNbOvGtArI/xLSODcOptQyXRkh33FURCRMblcnEU
+ YTQfcpDxxukgH+ifzzuzBuQ7Vijf3nvAe/eeI695+Z15z6HX0fY+dmxnWFN7Af0V+dR2XpDck7me6zaF
+ lZjS4RKg3QbKnJGAmZVtQ9H05yu8EgMv1iHkWoxlynLpq7XkLss3p5/fP//EADAQAAICAgEDAgUEAgID
+ AQAAAAIDAQQABRIGERMUIRAVIiMxJDIzNBYgNUElMEJD/9oACAEBAAEFAo/gzvkF2xvuGdpzjOD71xLI
+ LDiZSwCbnuuG2Cbq9erYKmy91Yp2niOzQJ1n0t6AWuRh7QUrp67XsUatmVZas871rb/fU/zB3wtr6IA2
+ Vi1la4PFd1TG7O5NZdXl5S7d6iuZypSo9UPBW37Q66u4FyJJvbG1CsqhFgXmiatL3mJLvPPtsxAuNmDA
+ Qnyxxe0a1cBFgdstB6M1gp6SXC4PtwBXvbr+ZMUPqCmHly1IStgwZ+AQjzrzzQeOTxwl/SQ/SYdvjw9v
+ HnD24e3Gc4znvkyWd5zlMZBznOc8k5DO2c/cmcs7+wz2kG8YnJntg98Qs3TNGCxyWKisg7DTotDKiogX
+ ogkkUenLkcwqM19QsoLBE+o9VasPm05F59eLq0ihaq7VbnWcQ1DH+tJ5eS80/G5ptPT7LlhlHCw7y2KX
+ Hh3xs8Qh31z7nNcOJFAMt34qjG8VAzsDNlG1NkbH1HZ3YIizubTD9dZAa99tfF2B2CxT717IqKbCpw39
+ 8YyFMloNMjKkmLUPC7dFWJlXje19Ntd62gQ8ccf0Kq8cIluwVMsFeqM7zQ45WpBydpW916m1LCqCBOVA
+ knWeTG1K9jHVpDAjuML5YNGeT6kcWIkAgfpAMgfqlfcmL4Zx+gRzt7yOcc7ZMfE/qiILO05EeydoISnc
+ CcHbloa1cDjWTyFkLxtoBH1IsrIpsbFRCVTOPCAeyt54uU20nayv6q2SbGy21Zkm96k3Fo1yK2OZwByx
+ 8zemUvBXTN2pKnXJrhR4DVuLp5FhfiddsbJriynf8eRc82HTTZXcppo07lomyq09JKX6rA505cyCZE8s
+ 8mR376K+VSy69zml5UjY2akRa3L2Yg5ytZGIl0GlfEGdyQtNqt6naX4qup82t9O5QLIrDlR5YLTsW/1Z
+ ZzicWHkFZ+KC+mfJAZaIfFUrjjn+MmdgUD/uEqByqjxx8AT5CfrM4yvE147+2XRw/wBsewjHeS/Mx2EB
+ yY5FP5CPhKTGSLhim8W7GBRYn3HXM5pW2Qk+2XXx4pn6aFZ8oCPEsJ7Qm99cMA8BjgC3cAxTxrBS5zDq
+ 8XBq2yWa9kIy55NamzK8jqFggO6KzLLoqMboTk0hYQ1TUqmoa4FnacTeBMXNm+yth8da5cniC9KWr4sL
+ YT3tTGd/o/GAMFKZ8DDcmjYE/IGwbGLivtssax1WVjAhkRgj3XNU2WL9inDn7Ow+NSfOnRhY5sLHbCvH
+ NWjHkj5Ra4KUS8fuOMAz1FaB5QGuE8hQY3WgwtgqwkvxK1L4xHsqkw48KRW9HJZM9nB7jHDPfizsYOGR
+ zv8AShZHhCtI85yJ+kfzEcpGkzs5y1yzyrRFlThD0axsom8LEmgtaDZizDECuz+mdHZ9GuMl9IhHthLW
+ 6HUyEludVJTPKvtloB8VAymqqbK7DfG/JmQzl7w4uLy+igf3N0XK17YBcZ1DzJkWhxm2Bcs2/LPXrJWu
+ uGVi1YFTS6dlln/Ge2J8Ovm2JRZn3yI5R2zsQRW+rN9S5CtpHWKs21lNMVUSyciPeMr1mPlemseRupKq
+ 5fSKWLPQDGavSLQFlTddLbIc9dcRTrjKEr5rtz1lQivY/E6PzTCqniiUz3X+LQXRffUyzV+VPYa9Na5L
+ qzGEH26esWqNtV9OL2QyscZMZ3+1BzliOUL/AD2OIsfXnpfb+KeMRlRcRHfI7vzyreoyJeVwKw0+FRJc
+ eQ3FLx1/mK494+rA48Oc9s75M4y/wMNiYYq/LWtHzJhcoQ2eBKEmGWrsGXymx3+V2OzNJZNdXWNrWdrP
+ 63vkZpYkmVm83duJ9uWMDhldniczVM2WLuWK2M9dZlGl+pnTtZ4s13pGwognxRGLUtuU6vgfZgLAzroN
+ ex+aU81VgnCm2krYKU/PSMzTiQfDYPiFwZL126rgyIDKWzsUnbahFe6f3D17Qva4T9OXUNBV2lQ09eo9
+ t4qlhrYWmvcW0Z958YkT+xBVW9019LfbH+NAEU6+tXkkmFOJVgF6Og3NvpvGT4FTYRzxtX3PkrK6ObTZ
+ 70q0GxihZDqC/I5BTg9oxzojD4ERBEGJh5atZdMHcnC1joZJMwvwnDTyKLM0mhYS7AaPk8AzEqeE2NMm
+ +pvqqDU2yKKd/mtjkvwRlo1yhFnkXeWTnlnPMWMuedztem4XyMcLRszV0jpzWZx2duufqRqWJxmsulM6
+ y6Mauz41W7rKaqz9hs310LpK2Oz4ZcXzxcMLISzuhHDKs/qqTi8KrPjdPFuN0566y24NZmnsV69mwrw2
+ empn0Lba1Qb4cdDsY6rta1cT8NdHzDWegeYdNttUNlYqeozwEutX1NSMbokNyemFvXY6Vu07BBZru9MX
+ cVAvNRZayF0LboHT1IxFcddshCOZ1QnBX6HYWK/MdrQAnDIrh2WAg1cfGAB5SEYADPgMu5lJ46ZLOxjC
+ 1NYwmwoV2/Efzzywm5WalZK5W6wCM5Xn7c5s/wCFbmLdbvMG1qtoLsLuwZSTBuX698l8AxH2w2Vd9CdR
+ fJqz7EzlGFxnJHtjD4rhvGNPJIq+vpOzjWnPAeUKg1GM35rZ/kL8/wAgsZrNiy4VyyQCKzv0aFFOtXYd
+ JDY7+ZfbwL4ydxq+4WeWauObaE/cOcQc9wPLGr1pGdSkrGXhFc7WIgtizKF0m5rjn1w2Z1e7+epLIvU3
+ ZRTTVYunbrvqk7zt2x1WfNLTItXHrhcDTdlgDYmrcntP545QLw3PhsY4rJva52zYVfNWDyOjbU+5RE5P
+ 4uHCpGJaKBHuaiXjy8xeIAxk80+WBV5SIq9cUDappti7p55ONIVGcwKLKjJvifOekPFj41sntAcZy1QQ
+ jCLkQGSy1m9kEHFvZj8iaKpW6vmsmBkWSKjoV1T4i7TAhPqE9yfVwFJszNGyZVaLgr/40eB06rJ0IhGt
+ R6Ztv+38NDP6nZrNtjp+sxSnMnGF7cOWR9IWUSyISHfwCMpCE0xnx5ZEeC/fGMyx96rc5+oHt8O+Jb4m
+ rcxTWrU2qOzPtOwdMMtHMV1Lv15YTddaWNxK154YMdacLVqrEtRnVAEjZ98jP/pB+VWOVD1eIYHvnfDI
+ 4i9LWN2YBXsnbks1milsoBJobTGkzYufAVmkDe/GCifEie+ACTbJ9sg/bvm1Kswh1gJiTdkJtEQU7jZD
+ UTlig4s8RLy0sn5GqpzEaqni6FZeF9UL/G6UrEAPd2ysA2NueWG+fWSEZXrqJf6KcrnXQ0LvsanHjFcJ
+ 4DiYiHVy+/aqtO8GnrlTLV2eWsSym+5aiT0skOqMuTBmeEB9JLnIKQiaSyhavLlFUrif3D3JRcfGU/TX
+ /OzryOd8icH6sJBcde7y19fa7Wir+neK4yV+yymu7XuC1a0drg62oVMA8ZRsNs19cFdzLaVZvLqbTa5w
+ dbzCMqNLARsqyK5bi0zIXunxrvKSvTlkVQyRgvgyhVbI6ymBNpIQgvox/GzA7i1NvfeQdONseL3OxP7z
+ n6hn25988nGJWvY3a4AmHB9ZD78C7cPb5cXrH/uDh41e6+/vgfSMMFebKAtJQrxjOk8hT0+Pb+PWSWUv
+ 4u2cIwUxOem4RZnO+DP3XWIqM/yAYwuomTh7jYMjyOLHA2zWsB4KsT3Gv7yUxkjjkwJc4WNb7cjxLGlx
+ kbMLiSnyKFvcRISv9is+kbzDXMxNUUYy8GeqEYa6YsbAPPlGnLZsaw+TdFbbidYSNnuOFfbfP9f4Ubix
+ Zw7zVYi96geozmKOppxsMpaFSYUtdQEo19ol0VBkRA/BYcC11lotiz3wnsz1ToxOx5swwhgLPxyNgIb1
+ BUg89My1pttRr1hSPFZV1llmqQFHeMjLzuCdEUlfGJx0cY8kiPLvnvnfLH7x/YzZPBi98QYncIPPVBwd
+ ZB2EmzMlVtYmu0D9pPYaea1GNbYnEVyrxPsQ4kcaH6ew+EZ80HI2WBf8rE2VRNaxFqGbgFEW9Xxq3ps2
+ bfvBF4TqujzBJTnaYxkcitDEApfmfVZPjaMzkzwGrELbCvcVcZvl4rA2JYUaa1J3tHTMGaG93Zp7y8bU
+ tCWu2VpKW7XYjk3tqzDPbcDTaKdXWTbuU7I1FLr2LuV9YteI/wDCbLYW6lAP8n4iW6vPwSJk0WfK7vMe
+ PlDLm3q68GdSVHI0nvnVtm3Xsq2u57htOpVwPWm1TKev4zW9W0b9ncwK3V9TD1FSYnLGh9QdjyvKzptj
+ zjUXuzaFvhTVsbKgqWIwlIytSrVrMAB4x4yxm2kZjcnGTuGZO2dOLuOsTwLxDrrfqT14OH5DHkjT2lYh
+ bFh5nd6L+Di1dS/RtqbWbUac6z0llgqrlWkqrOUUTHFKkSOz5VXKjWrjX2pkktQVD2tXPovhHjlsGzJR
+ mjUEbB0/UwTZFlfiJc8s9pz27Xy4rEy8qMFsd5EcS+IvL/A++WNeV3FVpqXFM5Is77YKsR1RsMHqy7GL
+ 6xfiusQyjt17QOZqwA19s77oqqq1zsUpZEn606jFbVDc3Ekd4l/PdQku+LxcZIQwNBc8i86yDmjlAZop
+ +71jH3dFI+qgR49Q6mAxtcCzVxFXb9TR2zXF/wCMdtepajEdeWlZX6z1dvEP11+Ha8pG7L62R3XoqPi8
+ l/XrNBBAzoY4Skp7Rda3GWWZNl2Je43kU5HfkY+8D7v5wLvrlKfCgVkZxRtRmtvW6GbKXXWUu8a5r2cU
+ Nb3XYYU2ylaIuOwbjhwbzcRB2B2AfTrh+nY/vEvbvnfNHES5v0lMTM7AZOzQeBrA8/8AjZe4eXxyhvlI
+ ZkpZ9MS39fW2CRz58gB+cXSfDOR0D5K3dfw7LO0ZwGcNXGOl7HG69kJu1gAw3Wxq1tjZ31h+aIyKnan3
+ Jzl2BuCzKZAizuq4rs65cWGno4hY1bBlW0lsbgsA56ot87IDmh/s9ZB9FN3jZqLw3K2zV5qb44nBcbfU
+ v1a7Vf8AFKGGUrS4hrddVfhdNTM9Nv2dbZbEFszZ/a1gt7YnfEpLGcy1HupP74/Gds1gc70zgz7l+ZDn
+ Df4Ar8r/AC5P1NefWXNg8LPzK1nzSxkbdvb5og82dRKqi/BDrXfw/CMW6QwUBYldCuofEGeMJyaiDzdV
+ QrM1RT4/XcYZsa/FgR3Gv2lJzk9uN4uI+CO1X2Lkfeyw2YxccxWREFMUhH0wEZqGco6qTxuiMzhVjiPe
+ PhqHentbYS8VWTIXumw6D7ZoS707X8bKgPMqroyquVvUpN2tW1uv1s/N5OF71bFksvM7qWhUr9RNVO2h
+ gFGhL9Z1io2VhBo5p9kyo87K3Urxj5y/l3n16DT/APF6psNobb6LPk96bfqE/wDztuY9RZUu2o6OtVMB
+ rMTTouwaq6rKzO5fDWa5dsNfWJWw8DJwa556fvPpwHHcCS+waZpu5nUSCYIvIfxUPkbvORVkKMbD451+
+ 3xgCOQWSz+C5+HVI/Y1RZx7xeRC4SMTXCfoL6o5T2vxJh9fce4OXaTAOaHAgnhXH7hZH1T+M0pfe6tV3
+ RrOM2Z1FZ9XaVfTv7Yr2b3ixrkFPN48HZ0/P2T+qoOR8Nx7FY6jqVXs64PD6xvd27y61lVTbNirRtVsh
+ kpbprBIeO/rybdxq+/rdI3FhrGQXS+vsY7olXfchx0Won/xVbbsq425LyEsrn2kWd95epnaykV8VUtXd
+ uo4nAXLlxIFshDF2gsEzXVhj09ccrmCJqTHjie2SeCfeZGcOuRhd1zjg6dgG+Ka1GK7RHgefjJLNfHO5
+ tGwDufI6djmTqpEXonZ6VkZSWasdP3DsKVE7KrGfNauRtq3besXZ1lNgiwfcb4SY6twPrRErIftzPtmw
+ /jFnFi/rYtQjlr8sKcrDhl2EB4jOaxvjs2K9e4sOnNd3GoxY2+nQsmzpIMnpRwFQreGlYX6edoPHY5op
+ ISCe+tHI+GwLjhzywsmMLjyqteFjVm1lS6HjtavqL5S7/KqezGw3RiyEdOvz5DqXYvpQOWv027B29DY1
+ dbrt7QRVjW6e7LekUzh9L2gz5dcrlUBp7pnfsdhzM0uyGjl81lfsqh6Hz9tUwEldHvFzIe5s0Q41+OTG
+ DHCPhP5n6Y+bR3+ZxnzLIvjOTZTOJsU8uWk+qm0khmvYQwJcA+QxwGSZa+ImLtfx5cNL1rchQeuTy9XV
+ k22a9tM0tdVmsfLLjirRrESTjeDME47Q3L/uqGQBC2PL5/aSI84wKx+0FJJ2n3K/McoSn1bdRRct2lfY
+ z5BbjPlN9een2oZ6zZruKC93sBKFbHp++7ZK6derPDdVGvc/hnfLO5is25bltGLICRGLc8Jznp7OVQs1
+ XawfHr92pZq1lNZx0v7Za6woef5p0vaxuu6deNXpcQZY0fUNUm7XYlLepNDtAZ09r7sB07u6eRtuoqGJ
+ 63CMqbnW3JkYPO2cpjKjftOdKWWvevP1RxZgPSlXlsOxPr4BbFwMdp+HtkYY+13m1Bz7q+4aRT2JNcos
+ I8WeWccfvXveqWy0VWfmefNJ7Sfdmun3OIMba4QyDT2W9IEZpWz1MGW1Dtc138TkesHV6WyOXKdlMkbF
+ TFvGt54nT3bOVemGRitHRDN3TijITDlzY5q1P21xliYhtmz5CgspbvXKrjvtV3Hd6ucXuKGbDdeCvX6w
+ eDLXVs2UJ6tdFT/PCzT9VfM7fVCGq24Wris+d7GMrUmPbrNdrvSWburoH/lWqDJ601kR/m9HNb1VXv2d
+ kjwWt2X0a32zpjNfq9dfV1Bpk0QPxln0LmvvttVg0ltNCsoCVdXPMEdQ6gyr7GqcWVeaui1qfEe0e3O+
+ eKTikXvb+7XqVytqdUTXznTDPXEOHaeea+S9fYs+nUG9DB3KsHbwWDspxd7yk5IuWrWwgJ155NEwyNa6
+ IZrjnNlTiqLZ7zr2cX3snA/cM/Xrf3T+LVBV6T6eIYs62zXSX7Wu7N20d8T9mnpHd6k5/IFjXJbFahrD
+ YlCa8Y0WQpAPhm5T5tdqm+SvzkbdAh7DPt1Mg65xEzmk01fZVg+VLL/xh4Ia2cbTpGdfRKs0qZCky6ls
+ 2609jZSqVSTGz1KZLqDW9/8AJtaOH1XQz/LqeT1fVxVetvqNymtD/GOSscqt9M7q2wSIuXPVO10+/Txf
+ TrNx6HZdQbivarTOTOUexs6dGG9P/wCK6uStdK66Mq9HA8A6N8rEa2rrlnyIj4yzycsCtZPNXXhS4lBi
+ mupBWKKbJTplYemPJ1boytVcq1cEyryo4/00hTOx3VtyGDsbeac69ydxXZRyN7YCam2Oy/fs54XuSQlb
+ Ll9dnJmZwY+hY+Q6OwSpsbOsWBYVhWssGTk2Pw7jLW1m29c0SSrp50iMe8BjY9nRUoWonvHx7RMUw9Jc
+ goltZ2Id3ixWXcS3VOixRA6UMpV1G7WU7GfIaEkfT9TKbKtCZ1dbOEKmv75W/pWOamxYZkWn5L2zhMZi
+ PdPSJd6G9Hjdp1RblhQKs+SpXi1t61zXqqJIqhVlFT6kCvE0m7BYay4WWKLESfeM10x6vTe/TGq70UnM
+ zPTze6LvVt+leLqAmKbfs2ZNykZFmmrC2SMU0W1+Izke2C5w4F6zGa0ouHdTNd77ZqINjOa5E3Vs1HLC
+ 0JFJdOKLKnT7KlvZ6S1aZ/jl+MRp9ikr99xAwOM6v+5tV82xPufaWF7fD/5r693CpQUhUdu8+5B9MG9K
+ sOpXe4FArLeysLmzabanTn4riC7rH9xfg6i2s5dsGe/w5xlvcV6ovvqK0r9yjnK7PZTfbaiXljuMd5y5
+ fYl1OwbK0FhKUeW6qRq3OwIpT3VU/rbGUkicj3yfhW/ioOYrp3YWjczSz3RtuPqmZxnssoESGYUlcsLU
+ iuzqALkhW0defsmX9cgNm0yq2H1a2wNnhquiyvXu9I/ZWIK0n2jYeQV/UWdP06V/X3a81nh9vWx+AmMk
+ c74p0hnkk4d9bpPOn/bWt2Qpb8+rjPz6n3jeU8+c0sjc05gWQeWW+K7etDZPV/2dm376qzX5GptZsteN
+ VfLF/XFY23sihXCHvbTGvai0J2kjBXHTLhflEuR3dWt6byvC0DlbKTeQ5HvBB74TIXljdLXlvcsPKSgu
+ 2p0Wvo64uynrmcSzvC7Ijl05Yk/2p+pd0v1et/qTPbBPvluOVW1H6bXl9mn/AAXT/U5Hxrft06/JoLET
+ 5dQ3jm5nmIFneRzsvu5BQlVYPCFikjGVygats9U1jW2i8Xvynu2CmtqrP6Y7PNroiSEzyfuKmO2a/Zto
+ O2M2LE2/o1vxic/7M+AsZLTzp/8A47cFx25PFgz+e/wmMqf1tr7XU6dj10NEFefQVucfhkRm5H9GRjkO
+ 7BRb9NswsAhcrAl4TUqw7pdjbJHScU6/WbMbKdjVOxfcHAtM6fT4sscXGLO7jGHZtZcLxymu6wY6u1rV
+ t6hUWvO5AtC9PbykWKLjEz5Q+RCWK+2t+rF7KqorqmIyB44QcgtayzKqtaxVCn/Bd97UZGTkllb+Lpwh
+ DV241S0Q1M2tkPeovj4tbrWbFlzpwRBXTu2auOhLzyKpUqAr6hKfqiJyMTV+mz6ew7Vd2afZc5BduYMf
+ peovbYL4v9K/PHbNV9JNRNCzGemfGEBjgKa3K+otGUahxkPTgjlmiSJ6eiY1+8/5XO3Ka+huPxPSwxlX
+ pnXzhEEHcYqLlA1yhJwXxke+bZfej2mc4TlAZFElwM7pTimkUn+/C7d9Y3AtFWdT2i4sWmQTNM+OKp5K
+ Ge07K73NOuiIYlr4R00mTZcpawLnUgtX5ZyZxK8jsEcspFJbK241Up3l7PnV/I3t+MHf3cjqO1GD1QeV
+ eo12WbYv/G0J/TvpvY2NZYwdRYnPk7yyNCc4zXFVDXekHUbD0MDMgu5a+qrrtcd869dKxSHEfmfpq+26
+ hLaWPHJF+0f253wWGWNtGeVCZYdqqxVZtfxEju1neIX+bw80eq5THfvF8mlDCnEV0yl2z1lYWdQLkZ3l
+ nsWzuszRNa0Lv79J/T3n/K6nQxar16qag/jI75cfFdGbqgcFpRJtOspaFvaS4VJ9pjvjkwarqWKDjZsZ
+ z9TWP9pxxYv981cIu7XD2KkXYtjPa15MI8rGYuDdBXGzuLb419O8w11gEbnUNWvjtpZtZZrg2flx4Wua
+ OEogysXdPLFRmm+vabEu2n95yBztk/DtmuDlsdz9Or1n1V4ps7RVZGeBhZ6PPAgcNlIM3l9DqIMeQsBs
+ ZUrzZxYAoB79lWO2XjYsLhrnAWbcaHixlyMh31w0+VTRvs5Tr62grv2klepV+ULZylB/R35iNQRhq1qC
+ K9tg+js5YDjpvFxGI+PT2bD2dpS/Rt1DdhuWlGAo5yFz3SvvlhnndkjmrFYuhwDH5yPqyAEMskTYKZjG
+ QaG6uz4isL4k4veqHYfJyN58c7C0C/Fj+uK2MyKLsr0vvkH06uwlbtttV2kp5NGqVRLJuUsi1Qzz67CK
+ j2twjK/0iEcyZPANH/Z3M8db8P8Aufjp477DqkpjVVdpcQPzTYnkFtHZ8v2pYzWXAIemLJ4PSOXNOVJw
+ 626WK1j2tGIUH/Xftlm2NUEtCyi5XlD/AF7Cy03udDWt2Eq6XfzJtLWwV51wfTk4qsDbGhagbRl4mC3x
+ 2ILs9WFXTORXWJSGFWDL49tbGRmp1a7aW6FIRrqo0y2NGw49aTaqkBChX9MZNmF5YuM7x+MP2HTKZWuS
+ a8BZFE2QVEWPIRfiwvCjvhwIsrMiwqYFZocTIJ6znxiWCg/KapxDQUUXobLS5ZDXV3G/kv8AGN/Hecrq
+ XODSQWDqklg6KvM/49XKGdNLjJpelcC+A2CzSfs309l5GQMznH46T3v9SFEVB8eKiMqGHpbG5oVz/wAn
+ r58+ssxV/aMOg23xfb7lntk/TEn2i5rkbHHbGvTy+BhY9PbBNfRnx1fYX27k1iK7VcB6es3GdPXoNqXp
+ bccY2Ds+bGMkyRPnqpMiP5zVz5xVxu2r9kX02iu/VrsjNarwUSEWmytni4EN2mAzt6Y4vaobjbqQgNml
+ 8z9UjPwdPt4Cdi1JrS6x7W93GKuNTYS4XrbGWB9jCDxBd5VqnPitp1qGrUrgLKqeLtRUZO2RFdhnLSqV
+ /EBRkj3lz85yGMaRznqpiQ2bQyN1YjP8htYvfXjJ13bqUvZzYImxjgbOaYO2t3wGTPA3AUea7Wi6LumJ
+ cMVITmi/t7DWRtBHpahGD01qxwdLrRwdfVXkeNeTsKwZ85oxi3rsrgvfJKIwmz3XXOWXb41hWJcK11IX
+ I2/iZWslb2Gv/sboYNCx4xyaM19u+vMbcbEspUL8XdEdPGqICqWVhgWPAA6aZgtX4osVQEIXFKaE+u14
+ 6ukjFtpc2s4AjxeG3XZDPDYyKlmZRr5z5c6cYg1Z5jVZqW8mcE++Gz6jYUBY3ILx9t1oo+GqveAznvBx
+ yhGslxJropw7bJRDNzYaNaPoP9uWaargt0bqNgghYnGFGEvx5wjjMZAd5n85xnByqzgdewNrRa2IkPET
+ MtH6eNIaJ1nCsGR4O/EM4ZwdhUueFqEFlbVhVYZTEOi891pO1TD2Xu5CRZCF5pRrA7c1KrddpD+wNiIs
+ 8s8ZMx3Dxlse8N7sx7ZL4TbMg04/a1/9rbd/DHt8SVE4ZHiti0ZsInxDPEivMdk1BKG6iWY3TvEp1DnD
+ U0d9LPlToKlThTrP7dw7jV+rucEMiU5z5Yu+1WfOW4BptEVQZaDZWc43liUcxvdNk5x9NXww9ZcThwQZ
+ 3zW3vOHbtihdNZ9pzSLjijLK/wCwv29sGJyR7w3WKPHaVuPo2lYye85MZXHkp0dmavX+tbs9RFVZRxmJ
+ 7YvYvSNCY5GySxvhTlO3ANjeL7/Nqh5FnXHkHR7QNHsEVxwDiMuWirVaOwK3bZZmstTl2l7PX8MYPGYx
+ LvHJbQzXoWfZt0G2d6y/XBkt4i5JWhtaxQA5pNkvaMq+PvWHjGt/ubBflWYSM/DvnAWw0ZDI7EtFEnNq
+ UxThdTuAx6qjB6oq4PUVAsDb0jwblcsgoLL7P1FknWTsezPI4c8zSzn2iCAs4onK7U8TUmBdb4tqXfKD
+ borzyMdPnevI2tscjePz56PbZ2lW7K2Eo6tqLCq5+OmycmcqDLLU/iJmc/P+nbPxhisz2lYgs2D7KoD+
+ ktf2NZrNgI2qOxuB/idopjo9mR0gvF9KVgwemaOD05rowdJQHBqIHBUuI7RGXI/TyQ4dpa8OzEnYs8U9
+ NvItjs/+Np7GVY7bAaHHBF8InNCfaHP5TbpjZgAJS2dgyrZ88bfW+0+/woKk2qzW+1xUx5b1DySa5H4T
+ nLjh8WiB9lr/AJ47Dlyv4T+PbO3bNLXJNG8/ubePEe/wkMnvExHtxyqnyPvF4qzmQxnrpmEp5QmvZz0t
+ zsz1QkdGbFe8l9Z3wqPOu2S7aoinvnTafLt7bfFV8jWZ9WdyzmzPO+Mi7cHOnrlyzs/H9TLAHg1KbWjQ
+ qhE62kWDHaPhLAHCvVgydvRjPnNPFWvNj7Da4N6mFcn1azNVt7Gzxx+OtO21zYs1wtS2G12WG8o0TOF/
+ YjyoQeeXJLIOO3fKNI7ZyQKGO5TjbAJh9plnKjZrEh0Njbavxzw+qsrxrV+6v5gKja9bA2Bhhipot1xd
+ nJYrCLCn2TP2fwwJ7rWcOVP+lJPqLTC8Vay4vI82Kriec4z3zjhlIZ5Cyg9as2VjnP7y1FCKNWyV8n1j
+ uBWldi+ktC8sHpqeG11Kb8TrbUSGsbM11Lq5Yn/xRR9WdIq+51E7xauP9e2dJL72cBUgRXeDvmT+/wDk
+ rxzXui9T6kQSEzyLPEOcByMW3jlLazXK5t5sQf1ZI50vP3v/AJkOWFRrsw9ZVNZdO0CxfT1dDGp8oW6L
+ aJ/HX6xlzGMBQAvJn6bd+FYXJpQOSOVbEpIGeYbFH0zV4v8AKNsutPi1tmRrbBGRtnpgtymM+e1sJ9Fw
+ sWqcTVMVnVmJT3Ff+vTaOdrbt8VYfItdw5NvEo+ENzyjk9jzx8crL8aNgyO9cucMtSjV6zfWb9izdZlF
+ plHLO+TlwyLGebuXLHf8M3v8OmFePWdVN7Lj/bpNfanP4tN9hP8AWVf4N7VVVu9PF31XU3/HexZI/Dvn
+ fOeQffKVGbOXqMoLpv6dj/1HVDRkOql4PU1ScDfUDwdlULBYJ5e167hho6+ErXqmjXU4XWOWeLhhdl5a
+ vmyRDjnb4yOUrRiXMXrKv4Mfenvy9rNqkwdfXhuFYYun3gS1zYZnpzKK6xQfgDGVRl6QIg7fCI74aCD4
+ dNK41N6fkseYoMPC05XR7lUR2mq2J8LRzvOAXfPVRCLZe9P92uPnQJQ49gKZFjtnnEs80YTu8FP3rQdi
+ PCDlqg1LWYrSVxyooUVupm89hH+v/XTq+GoP8Xints9cdTNezzL6i99h00XfXdQjz1f/AH8e/wABn31t
+ qFTtnIbW0ZdtuP5sjxsfCJ7fDSxw1lq6C71J/kdy932fOfAQw3DXixZKzIj2jtkBOcM45wxOtO1ikCkb
+ jgaI0lgTK3OU0YYQx2g+/CK4sNJsrOpbOvar2DrOCvbWSzZVeLkSEz03eHD0ewHCo2VYFiVZKQZGmX49
+ fsmEdyHPwvLOQZRi7AjLGDyC9I4p+J5HFv8ArPnkyn7lpi5UMsT3tqb5Zrl2xhfb4DIu1Mmd2o3tX1JW
+ QJoqg9pXXgbeWN/727PLtPjGRGTGa5fi1pz7Wp5O2n1HqaJ17G9jlHS5fo97/wAViQAsZVkYn4xgs44V
+ iSjUH220ZtA4bH/Sszx0bE/+RqM4Ouvnx6p67kGqQWxhPMQxVM2YjUFk6yBxlSe/p5xFAca0Ei+0TZEe
+ WEH22NfgR2Efh4I893upqLTappsUrCKliksbtqgDq1gLQQ9WQUT8CATw9bUPD4161vtC6stc6NS6M+WP
+ z5a/J1zcnWnk0OOen7Ya2FDFmDNfSsszU1XVq8/uYX1V/wCM2eKrVJtyvzEMgT7cmd2kXE+BZNemUa6o
+ ibsz7PPyOj4RkRgj3yKpFHj4KZn77OxZ9dVc+a8jy0Oli+jbDy1kYJdsh5Rkl/trj47KM3o8dvnf4D+6
+ P2tZ3Yg8uRI4qwdaxXsC9W0qdsqr8h6rXhADUDGUInLtdVWGLOCddBWGwmECsMxSNlrDSbIxc+w/jLce
+ 20q86yHSoq1v5Y27VdsMcsyRr7M1WxYNkSYd/NUxchOP5KQ/c2fHc2KnVunE+TY79nCiDnBI7G4ODuLk
+ YvfWsrstWRIHLz0yAk4XXFvUlccZ1K88jZ3LLXMgVB+wgjjXk4FpOCC9OcLZbFc3owmPiIfJFpiS61dZ
+ 46kZGRg4OVVcsrV++P8AbGYLOFmZ5Sp3JobV4h02Qea2POpH4/0H8yjiM/Ct9Nsc3entWdjZ1tiuNXSO
+ uL/xi5iumbcF8udOT0xbxGmsgt2ssHFjTOgtXamlYjtOAn0VvX2R8S2xl/ciqF2vG6/tmWiiJLADjj7Q
+ pyeTyRMQNxE13gz2AsjDUTFgXlXaX2H1CW1dbs20DqMp7lz9MmledqbPetY2CJ9ddxm3cvLO5B2He8kN
+ byzpRX09Rs+v4r/OlvcCtf1rDIWLGeQfltAs+T0JhuqqoGyJEmsP1llx66GFumsxl+Cmu2CW0+0DUqln
+ Jy86ZWHbfH49XkZGRg5VZxzX9jx/5s/t2dk67k3IPK7e+v750yX6wo7xEdv9YzyZJZ3xamS0Ms/y2B5G
+ amax9d63qkhzkOfTnMcc9YrI4nNlHZ+nvepTZr+pVU2LFz6xxA1ooh9g3SCpLPpAX3OWCvI+Fz761swD
+ wGd8VdGllrZUmZY/UGs/AQ/qsW00EW8tczocSNewHDafeQA8PWJPH6+VQ9Z+Tp+vKNXu2eTYwGdu3wHE
+ N4FSvTZV1GzuzjMZHLINua9riY5hCz1aqSjtAhNPV+qOOyhGqpq3a5Uk7nTmCK0E8llo4n0m/rus0vk1
+ /PlV7Pl9vPSuDPGcYqeE6Fvlts/ltfxbzv5/LPesUx0j/wB9PFx2ftjOl2G2OlJyOlAyOlK+R0vSjB6c
+ 144Ok144OuphgoUOEYjiy5j1IRgHldkdzik8a9iyXcp8059/PvYcn318/Z2n8tawdV1dw2URWCGWLcLy
+ ZkyBWMcKRY07JCqIiPgxohENJrAnA95guONufWxsWsWcLe+stkJ5pMr54Wwnsu7WfnAZiUBk1hw6sDDL
+ MRm0sEL6y/FVcXmsjOGrOPbIzvnT4zKN23nejI+GuyUQ23ZrgzLS5ixDWogli3Fn6Q7PlZlhPEB+kbIc
+ I1a+FCI+Ef6dhwBEWWTmAjfMML5Q4ijjPrSnUD2zUF23f5zxnODE9vjMxGeZcZ6gMO+AQBTYF5nXDcnL
+ E4OPysz3Og0AIZHCLJzWe6NrP3M0ey9I61f54I8sEIHH24XkDJz29onJxz5whMprj2wfz5OEMsk2TUcp
+ FRiENhmeTtMO+lDTIvQco49pXdspxfUWxXlLqa46w/8AgZjR9RtTHkEaFwwekuDk666GNQ6Mn2zlGaUP
+ Hq7x+S1GRkjOayPt1FwTYjyZsFku1NvyBJLLDNZz5ZwLQuYPacMYZafY8JeumMG/ORsTwNk3Bv2M+Z28
+ +c24yOoLcYe9c1di2vwsZzA1E2V1nYFNg4dMoZp2kN7kOeWe/kZnN2STe3lPJfMYWzQBDdp2CKzTQHrU
+ Wk7YvsfDnOBE96OyFSLXHmfw1MfY2lZjW/L7OejsZSlud4AXPczArNifC3PC3PA7HhbKVpNmNQYSEcRl
+ kLhrpblKv5S0aw9BNZJZOspHh9PaxmF0lrCwuiKZYPSFlHw4YUZog5bW1/XPIuem2FPf+qGdpXz5zVLI
+ 2NUsCyqc5LPCq1jxvZVc/d/bIjBmJylHFXsoAdEsdSiyo4dQyDE2TynBiASgOKrCOGcnLy1DNhdDpvZn
+ i+jtieL6JdiujV9/8d19eGRqUjYs1cbenv8AMG42ybc5zlSPsh+Cxg/TDmVXs3t5servnkerPEKbiapZ
+ 6SezqZFhassTSmtmwn9HqJ/TbafsRBZCHFg6+0eBp7fIdK/HKOuc/DUfwx/KexSMldROepVOeVMwNlcZ
+ 6xWetTnr62ItosF3+69C35aSKrzGwOGcnOa/+PQ/093sj1qR6tbGD1hGD1fWxfVNAsV1BQPJDOOGPv04
+ P/lbvtWt3QXlDRP2B09cuvB0xauNde8vylBYWiThabhnpGBlj7es/wD1jOWTmvaIB46z7RBExLLKiO5B
+ QtC/GxUwIQ1WTOOjud5vhX0zeDXbJ/VtEcZ1qscTv9jfX6fZXJjSqGXVqKof6eIucO/xpKmakBOcCnDR
+ Mx6eJyskESPgyG1owbFfIfXyGpnPtTnjDNnYBVv00OXXpLVHplTgqXGe3+jUBYB3TvIx6aHK2tbRjv8A
+ d2U/CMgYzjnec8h55WZ0+czZ/wD0nNnS+8YSPx1v8eh/g6pDlre2RGCOVfDy1mq1N0CtV2ZHpu5em76O
+ a/r97cPtr9IhWQziR/yCbPJnfPbIyYxiVnDdLTPPkdeMboYiWauBxS/APphPIF1VCNtZEPX07LIrLKJ8
+ 44drtnqEgCp5N29iTIVkbz6evzg9OVfTV9TtqiI1t8yVSUvGyqZZXlmO0wMl2hNjFauqCS0royqgV1RE
+ eXGO0rGcJHbFcAiZE8iCke2eKOxJmIhOen55a1JuTQtjwDjkDkBnDOOcM4TnizxZ4sBY8r6Ir39nP38j
+ I+HHJj4dO/z/AP6Tmxn6mD3Fg8ZEe+a4e0aLOoA56iPis+xam7IE3TbCvk8lzyzprv8ANJpCLhnkPYwh
+ j0hOvKxYttZCV1trStf6d89s7DkB2wg5Y/UV7EfJCVBUpgL61pqHYr4NyVFW6iYEK3NV+WFLNYWiNz3+
+ otUCH1Ul3Mu/FU8x4ZwjJGM4Rnjx3YMEoOXe2JgfF4wnOHtCjwESeTQGcmkHcqnHCrlwmvGEtI4CE9og
+ QwWe9n7Ww1gw2oKoHOGSMZ2zv7HcrhjN7QXjOqKo43qs5zSbZ11u4+p2x/sx/rPw6d/k/wD0nNj/ACn+
+ HfkPxr80f8m1DnrO3w75E9srN4FXabHEsThuopMyla19bPKBRKxPGVTMgr8YqMWxm5b4tdA+yLlmviOp
+ bisR1TXLEbSnZyPiRyIg3kVuz4Bt22EttUOxAOF+fgmwxE/M2mIHxzVdiuMURZAHnDOEZ44zgOeNecV4
+ fDJgMMY7VVhC545PbPGM4E8Yg8c6VLTba45PLhCxTBHJ2CERW2SbJ5s/p2+l96O32r6Lp6gvTjNxfPCu
+ WTyeR5wjOPx6eZ2tbP8Aiv8A9rI/0n4dPfvj+XmObD+Y/wAO95X+Nd+7Tf2LI8q76shhB2+IF2yLDu8T
+ IDdukdL1HfE32JlPUdgMR1QrL27SxPTfI6XVDeNGPfOPw7ZI5XY9eBvr6ZX1XieoaLpzZT9dufoP8Fh+
+ 5f6Rmm/uO90ohU2auppOiOn6WRoKWP0CON6k+vLGvjJtWMm0/u72ir3KtM8RPZ1wwt3WHD6hrjhdTLwu
+ pS7H1A8sna2Tyb1opLyHkh7ab2fHCS3f07jRz+j6k/sx/wCjSl2u7L3r7D+zE/Hv8Jz/AL1YHVkFE4/S
+ 1e1oOxn+0/2q/Gu/k05fqZ942Wog8t0+BGHae8/CNmjAvp5HZr2IaPBkRyzxlnEvholeLU9VN+9E4BRO
+ Er4wXbJL4a2v57uXS72b5doP9qq52ns6c74zSWl4yuxXw7fDQ/3Wfxyfa1SvSOUrvOInv8NnVhq79bxk
+ Q5Me7/xr5/S7H+q0PucMEcgIz/uYyPp+LPbNXP1R7Z1B/wArpC/TdRfz5H++rntd2c/pdh/Z+Hf4d87Z
+ UiBjUMI3m37lkg5LpCZeiScN6fQ8LNB9Cdf/AD6r+3leyuwvY6uHBercCL4eQ4zzFnqcfPJi/wB0fDjy
+ xIeJPULPJtcjIZMZ3/0jNB9y9jj5Nun3Mi75q6Xp1CrJVhL9rGsSWHp0kLazFToPe6f7CL76T7ZStcZq
+ 2OUROM9x3VeIxgYeN/Gsn7Nv6q1r6bGe8ZE/CfhOd8Oc109vh1F/yOkL7HUP8nw753/0nNb/AHdsfGo+
+ lLynWnny5mfLn56J+TXaOSJDifenqPZkxzlVMCOPbED4hkcFwkDNAAtoiSreKrpQXqCkbmjmyTOlX4zp
+ nYB/oz3gfaR+GvX5bszmwb5dh/6OlV95KeImftbb2nTVfVuAcYwolloVu9QucMIkbKvqleVFDFk/x/8A
+ oM4hvGaNrEugha+Ija2YLGz7swv262I5vHuq/wDzD8O/w7/HlhFmv/A/jqH+9oC5K3NN1jB01ycjQWcj
+ p12f40eR05n+OZ/jg5/jS8+TzQsbwv0EHHFVlYQFtWCxZZEROcIwlDMGABPYFwoyeynX5wFVfIufL8z+
+ 4lNlUgYtwbc9vmlXIuVSwSSeR/pM4P1RiyyM6dX5NqwuC/3T8fz/AK9Mr4626XCq4vZxE9+up+krQPaD
+ 5+SFAWLreVhRhK5wQdpV2F5/iPzGCWV7PGa+w7DZ2Htas85Iu+HhZq/7RfjY+zO+d875yzvnfOWCtjcV
+ pLrcq9PMXg1smgkiFMBnHIXnCM4xnaPhwmc8R56eezaceHflxR52LmLz89ceRaEsh6s9UvPW4lrrDLJj
+ Ja2l3zt7MZLZBwlD1uquyc5SErsQckkCw9aHM9bPKKrRyCthkiY53zvlefraPFgYM986UX97ZH46K+3E
+ o/27/DUK8Or2p9q15vjX05Q5Spft2ztnjic4CA2GAvOYFh15IPX8dsk3NcOROROQeDZmMOxM4RZOFk/i
+ gXbal+NwPEon/Tv8dIQlql95zhOcJzxzniyExGeJWRARnt2F3eMHlgiUR44jOP09Rl2xv7wqtMZqMjKi
+ V8CppnJoxhVJjA+yjW1h5AkkgbuWcIHI7ximyqJTHaPxE9pnsUVns7tkwxVkXgbbKp9bOQTM+/kl2kiG
+ csh2mMEs6UX+idYUonafX24d0qeWNPdr5/3/AKR9Urjgvcn2mxE23oWlCxKO0TkRkRhflzvPcn8wUjms
+ UVnYnglkZyySzlnPOWQHLPQNIP3QkuO9nN0oiPxTnhLIrHkUm5GsdOfKz7fL4HOm+wUcj4WjIZUTOKSI
+ oLibeYDjNhTGC32vCC6opxhdVxit/YaOtvPtMH2zdGTdjPvOveZQdZvYzhWepqlndBZCYmSq94XWKCmy
+ zx/9DOe3b3wSITHhawonl7mZ9q2AQsGwkkHVvLtY9fcvAGeKByJPPK3KXTh3JZpKMqs9KJLKel2FIkl3
+ D0yhkfx3xyE2Yd03SZjelnjjtPer4X0zQX5bubt3e3q189hGR3jIeY4N3BuLmLRT6avVaqbey9PYYEAn
+ p/8AvkPLI1SO/wAsRny2vny5GfL09/Qqz0i+8J4T5G8RjGzw3s49U+acgSziecWZ4zwwLPGM50/27SR5
+ b6gOq8+qLGF1FcI/nl/se0vHkuceTGREf6KeS50D/JfzqIeG2ygXY5P2M4kbNdTMTTkCgcgcq1+wx35Q
+ MEI/Xn5mcn3yffFEMFARXBhSR1xImOVJrq1/TDGdvj01VWc5OccMcNsIxVhTMLlnk7ZB948kfDvMZKgf
+ A6asp/4y+fkuadXZUf6/tkbDIwzW4Cvfo9IuFFE57ZyHPIuI8qsje1eM20d5vVu87Cr3nZ1M+aVMsWF2
+ Nh6lUZNpPf1qcO+GTd74ds8ZdPDszOS3lnS7e1zNvMr2Jgs8mO3xjJ/20J8drnVgfrsqz2w2e2ycYqmw
+ 0sTbYGL2Nc8orC1JF5JnJz6ZyeQZP05+M/EV1e5XOLCUDMWPAJbER5Jkucdvj0x/WmYjO2Tk5Id8ZTWe
+ eFysiyyMhiSzsfb3jPNkGfj9QdfG31FD7SxKkHCr/rP4/MZb+jY3R7UvT2iyNdZLB1LpwdKU5GkjB0ys
+ jUKyNWvB1kZ8u7YWv9qyCVbm+jPWDOeRpZwsHkUZKPlwZ6UMlXua4zSFw22dSRxvQzC9/wD1a0/Hss6r
+ VyifbE/j/wCNh7p+AllG6yk6u1d9Mhxz9o/twWSEeOOMfha5cVlsRk4hHjjvjT5ZyyyPlR8O2dM/1eov
+ 4KG6vV8r9TKPEWq1qO3x4+xL5x6fjPJq8f1AtBr3WtcTLVJtazaDKSfUW/8AcfxOXY/XW1wcek9hp56T
+ BrDngHIVEZAxnGM7Rk5Axjfp20o+oFRkBGceOf8AzOHh4c5rWcdtnU4+/f8A9YFwbnUQQVN3bmrF+6b4
+ /Y+A/mC7ZQvnUbXcq+o1kBTn7sjvDQ7WSMorr75XTM4WOZ2zlnLvjPor52+HTntS6jn9PXX9rtnacTub
+ 1bEdWTiN/QdgmDYvtKvUVt3ZbcbG7OPtqHkMq7Z2zpmvztds4RnDO0/6RPtl0v1yp8rB/Hx5ZJZ3znnP
+ O/w2f07HvOQZZLDzlOcyySnJIsZhYk/HdzqYO9P/ANZ/tQfNO8HvrcT+as961we6fgPwgs1eyOo1LFW0
+ WK8h8O+AEJCGi/BqnDJ+iGnh/mcVa8l+yf6X46H+h1CX6ShIHWbVkMYHbJj4jMjmoZavqDV2FOdP3Np/
+ BWj6WfgozQVfT6//AF4xnjnJjOEZYnvs9UzyV+XbPULz1acPZ1wydxWyd1WjC3oYzetnC29ucbasMxDe
+ adt/Z5j2jO3w5Z7ZMxjDDCMcZii5q38d9Z/65981p8tftA56zE/mlP6ZkcyxdKw3FaK0zFdOBl7SGmQ1
+ jYypcZrGIaFhbK3bEDyOw7mUDzxUcc8olJlzk82Nr069N/YuM7VJyPhov+P6i/rVzmMqtJgWFiWEMZP5
+ +HSn7sZ+/a/wV/2H+KahZbGOw/7Rkz9+ctfTtNJ/U239TjGdo/3L8U5/S7T9137VDXHLrPpFZ6VWTWVk
+ VlZ6ZWenXhCMZbnNdPeht476v/fv8O/x0k/+Ks+9TFfup/10VgkVIUku/sYxMfDv2vkhcjq2nV2mPHyh
+ JeShVHtn/Z+w4eXWk2zp/wCS9P6L/8QAKREAAgEEAwACAgIBBQAAAAAAAAERAhAhMRIgQQMwUWETcYEE
+ IjJC8P/aAAgBAwEBPwG2jZEoxbCdlgm2zCPDZpaMolsRKRybKZGLI2bF9G7YIRCOJxIZkybts2aZiDi7
+ bfTJowSUpNjpTRk112YI7bNG/p8tJ6Yi2DBTllTyZ6R1yiWxGTJRSq3s/hZ/E0t4OSknJ7bZiCUaJNsi
+ 2Gf2YQmjDGs2gwiL+FTgmRNo2+8o8JQobMJih3+GE0cU1s+WFS7LZJgWLcEYj+rIdTRTm1WGTLNCwrbP
+ LZtybZJtGrbfXw3bBMChFUsplO9Lgo+WP2V1N3V+THUxHh7ajBKK1Jxhjk0KtHJWlNwaths9Mz1zbBiB
+ SrKyG1AqkbumkVXpyzCMWiSGrYVuUI5Scn+TLHo4tGTTJgUNj3Zymzk3dQ2QjiiMlShlUwU6tomCUzFt
+ Cye29Hq0NnFrI89MyeW0bvThlWipNIpyPTNpEpo2U7PWRDZu1O75NEkng9WXSilVUlVKTvlo0fEpZ8sJ
+ Hh4b7ZPT00yow16KF6YZ5BlO2EzBu2zXWL7RF82+B4aPlUVXykKWfD6fLXJ5bTNo967N22IX/sGDTM/k
+ /wAHs20rS0T11fRs86fBhs+SpN2xamqGNrjMEtu0K2u0/uy3Z1NHLAoZtGBbHswj22zM9XKFm2zR4QQj
+ CPi+VJ/2OH1qf+xdfOmevg9CFhmzZibenr6eM2jZBtlKa6eXq0U4ZTm27ZQm2+nhkXVavhW8sqk2LVvD
+ F8GzwWjCt7b3ts4opwjfbZolnJibNmJIX0xbw9u9mWZPDS6zBL+6nZVsm1PTPVnlpQj82wYIyaV4V892
+ 3JkWuuCb7OM+nFr0Si3JMk5S+z0PFpa6Q7aMIlP6ZdtsgyiWTNvBSYV5Vt2qzJDVsM86vQ8u9O+m2PLK
+ pZlEyJRb36JtIiqtU+m7YJg5P8CdpgkwxkGryLNnog4kGhbtopPbYZxSZkRp3Yss9NLohHzUutL+ylqO
+ vtsW0b6TZYEYd8p3hkM0ikwyEQraHu8I4pOz0K9OVZrB/p3yT/T66t79EM1das8q+G7rZJLRyYpatldn
+ oRoZToVlSl51my6btAr4XTw3aGvTJLPOmkSzPZ/bk8tMEtmbOy+iUmZFMj2bRDIZBVpWXbBKJT8JX4Md
+ sXy1fZq+OnFszNqiGZRl20PdsmSWcpZgXbAoR/n6sfYipKTRVMHis5TMyS/wZs8IwbOP6MGjP305Y4Xt
+ 8IlHJHImXZ9Eej2VZRyhIVsithlW7aJZMmIFbRJNpclLTKk0cmU5X0vL6U7s7b6vTKimp2lm7U4ZVl9E
+ MXXQzRylWp12V3voumuu0ccHGDL6LDNt3izFge7weXzanXbJJJLtgyzP1wZV5gVStn8kslGx5Z4cSGre
+ GyGcWcWcWUyvo45OONmEY7a+jBsUNM4kNGb4PRT1wmYZgwSjBi8on7cGj3th28ZTKbMMhM4s4NpspSX7
+ IXX09NGevlou8ds2WumGRbZq73ZaZRtnl6qqv+Nn19t6QQclbwXV/RT0mzsxaFo/7H//xAAnEQACAgID
+ AAIDAAIDAQAAAAAAAQIRITEQEkEDIBNRYSIwBDJxQv/aAAgBAgEBPwFcVY8HamjLosulxR1Rhc7Z2aRa
+ bKsUUmStnVtkfjSWyaog02YR8cFJ70JolhmaFksxxhlnZWXg7M7MtllloxzZrirQ7bFo9MGEb4oqjbOr
+ slLqmQk0zsq5XD0daZtFtGWLZmjRY20yNstnbBs19MizxV8N0jNjk0KTMtEsEEkuabMpGxGyO+JJSZGC
+ SKVcbHLqsndH5E8HR0OLS42OkiMm3sdlJoaaZF0iWy2js2W2bHhEW2J0YG0jsy0PJsas+KKbKSJpMikl
+ 9Ms0y2ZLaLY3VifyVoc5wVtEcqxYPlbIzecEE+xFkqkhqhJkk2jNWL5f4drMPZX/AKQimTVDk2fDU1/4
+ OCSI00SjT5q2YMCtlI2K0zsx5NfTZTbOlbKKZTaJ2k1ZCSpZPmknFpMWEiyWSv7RFYNFtGU+HrhQTRKF
+ CwyWUR2fLJaTOrs+CfRu8H5U1ghLsk0inI6NenWXEU0hLh2R1982dXWxJp7slJPm8EoqRH40da8P4XTL
+ scRYRv09JaFbMp8Rm0hzbXGWdWiUE2Rh1/ovjg3bRhIjcXRbMlo6ttjbSIttHZoik2SjXGTKR3Z+Rim2
+ iGURkkSoWBW2dWzq0jwjoxzdGUtiaa40zsmLZtcVRho6stpjk2iLo2UkyVNCwxZ5qpFP9ltEpKnw5t8e
+ Ek65jZHCKwVZpkd8eP6StSNqzqfowmOmTwRyxbEVSHoXEtvnLHFtFYKoTLLs9MNDKbi8HVv0vPFk3jZQ
+ ljizsdjbMo7M7NrjFGj5doj/ANTRlm2YSJ5IRaQtmi2WxUWkPPKVFJLjFGzXDyy6LsV1Vmx4YtGCv4U3
+ 4V/PpQsG2OKS4xZopHyZgiLcVXFltcU26IqkdWn9MItPhLJkq1y9EFZ0X6JRSRaa4k2lohdaoybKFFs0
+ a4eiNJH+P6GkLKFaHbR2o7M7NkU2icG0SuzwxzHfDLZZlG+FFNFJEqohhc1ZGk+JW0UzTMM62Oq4xxv6
+ +kppIUxTdj0Xk3x8bpk9Hyqq5StiikyUUkaHotHZWdkY4WEMllCwuPOFYss0ShSHs0R2W2ZXGWZSIybf
+ Fvl7NIyLKPeVhik2iWVzTQqOya4lpkIpo6L9HREopIWjs0jsy2xXRhDd8RyaLocrNvm2eEcotIbTRHD+
+ slkSspCwx7+l0hOzbNGTZriWj49cZJ6ZHXFGvSzfFCwdlfFFFFceHahysjk0WkW2/okNcNrhJVxL9Ghb
+ 5UU0dVxLRGbitH5q8PzJ+EppohbOjR0OnGuawekVaOqHGjK4ydlWjb4gmzq0dWU1xgujsxOySOqaI4Qt
+ HU6pnVGuFSeTsjsi0bRTKZRTZD/Fjaa40esrhI8FshTXMy3y9CPjpGGilFEpWjZVnpS5X0o84h8bmStE
+ Vg6nS/Tol6dUPfGmelpriUjZGLZ1VDwyTZHDNHZnYk0z02ZJaEKqE69O9k2kjw2ii0RyxpIwjAuWM/48
+ qb/8J2Rx9MEtnWzqhjdJCk3xGPCJU0Uemi/p3O9kpJoVtFtM7v8AR+T+HdNnhHXDi7Mpn5G/OI8rIxkb
+ TP8Akx61/UR19LJbPOZZIZIVZp8dkkOTfEUmh8LikdU0V/DqzSIxTR1X6F8aZOoM7ITVcaEUaI6EIRPB
+ 7xKTktiv6y2js0W/C2bQlXEXaJNFjNitGyhc9k/DHMdGjQ6n8rOqJRSWjHHhfEdc3Q3Zavjwtlstlss9
+ EkzB1TKGqQtc3wvtkTTMULQ8HdndnfB8WZN8T0bNfSiv6Z/ZlemWU+LZVmudjpEdFoUley0PRbM/o34U
+ zKPy09G0UR2YMFIyZoWuMGDqmRj1LJNNcV9MtlFFMXG+Xzr620dnZHb4fE9Ez4/kdZMUQpsfCpqjsmYf
+ F8VzdGGUuKRXCx9NHhtc0SbitWQk35xO6/xIwbR+JsXwv9n4UTgoIhyieiRHCFpEcM6tooWDqkQwikVw
+ ijBSNcaMMwyj0UU4kk4sg0zql4TVcUUikUuPSWj4v+vCGfJTiyGhczyjrZSPBbR8bJRtYGdEiklzHm/p
+ 6UaLaNkdDSaOjs8Jn/0R19fSWj4mlE7o7o7onJNMjaR2O7Ox2tcJFcRn/Ts2t8vXDNL/AGLCLLGT8Hsj
+ oxxjnBjjZVlJEdGDBgwbNGuYyotMst/TBvnwcqYpo7I2Z47qjujujuiVOiWxPBZfG+KbZRgxx6aPSjC4
+ WBfW6KMpCkdkzfGTKFTQ6se+dIVs8+z4plMoWvsng949FokLjQubMtiJaNItGUZRGDmj3jSN8LR4R2YM
+ GDBjnH+30WuK+8EIlof/AFI7FxGbi+PR6+nhE8/1r/ZZvj3hi2LR/8QASBAAAQMBAwcIBwUHBQACAwEA
+ AQACAxESITEEEBMiQVFxIzJCUmFygZEgM2KCkqHwFDSxwdEFJDBjg6LhQ1Nzk/EVsiVE4tL/2gAIAQEA
+ Bj8CPob/AEO0LesV4IaAGN42tP4p2kp4KGCNhN5LiNyZHoTJk7+i/DiDsTGR6JjHN1RW9COR7C8itmtC
+ p5r4y91dypK8ystbybk5F0t1Px7EGXCV55SuwosIrRMYw8lG9MEbqMDtvTQdWuYtxcbwF6wsv2INlN+9
+ aNtqvduQ0frZLmKrtbnAuKdtVi0G7VaNaBaWEGhvauUvA80wwG0EOwZpIo6AvX2P/WcPCiMeTR2nNbzR
+ eSeKFrGnzV1Co2424iPmqlpG1EmtnFVZUhPFkUpRznYqrzbKqy8YUVto5M3X4N7Fzg2TpUwT3DXDbzTF
+ NkiNpvS4b0cVcKube39FrOoRsorqkrBB7zQGg8VabNj7SeXgvp24q6BvmqaNoRsq5Db6G7+Djm35sFvW
+ GfCqwz2W4I6N48blrNKs4dq2HgrG9B9wLKh+azEK08lrvHdbrFHR1iab9fb4J5vLqAVO4KTLJfVMubwC
+ fI/FxVlrrbOo/WCyecwAZVL/AKQeQ0jwUbbDRq7Mf8r7Q2UkN1bBH4Jgyd1DTWrdcE5+BcnaA2i3n70X
+ lw1dg6KAcqquIuVsXbM1E1rn08Vq7SqKwXUk3YJxyuY2HYCl92NN5Wpk2UPZ20orcWSODCL2ueE8Oh0A
+ bcNbFAVBopGRco6tLRvCtiZ3u3Is0jqOxvRLZHVrWlcUHwcwUtD2kdUVOKDDG07asxWtaKo0UHbehBEG
+ ta02gBvKDg6lRdaTSKSF7t9Aqx1b+I4p0McRyqZ1xjbs4osgqwC7tqtI+mUxdYN12q3EQWk1uwV2AwW4
+ laWWpGNN6c1psEnzvRbFqs7UAZBIcKbkC+QGu5ObHV56ztirEWU3VVmwB2k3K3Lrt/BGoQkfqt3FPsAt
+ s9IKrdZmZrUNIRYWqLsxrn1RVX+jv9GrUDet6cQRdsVNGe8rLwD81ZZqtVacc1XXALK3MewtItM3khFz
+ ahjhVW+bG41qrmX78V2qLKgSALn8E+OX1T8KYhaOTDou6yaw80azuC+0+rhiFIK4FWDe6JoFk48VonWm
+ NuwO1OdAyj3Yuxqj1sE50ZMbCccQg+CYNfZxsXOVsTQybwCU6P7MQ/C1IbIQLpAS3qj80WzuLtJfdsG5
+ aYPDosbk2O2cmhN9hvOs9pVkABu5AT32dqo3VRZO0TtO9PEuUvkNrUDzgnCJ5EUdzWt29qMOUVnwo5gW
+ UMIdHauUrHSutc11DcjZuV+CuVUcXCRtCArGSwl8tKuvuT3TN5RzqrXBtIaMCNh6qL6lz95WkEQ1qFMZ
+ Qiy+qtUBcrfJhmB0faqAEulk1tgqtG2Fp1a1wRfkeTPFrE2qMTbL2vB9o3I2XPGjvLSBRClye8R6RlrV
+ oUdG1se/tWqKPpSqcNlpWbJJPVzVpVG1e3aN6a+Vp7Am1FexUG3HtTh0Dcrhf2FWjzvwzXI15vyKrEfN
+ FrsQqupwVwTXelVH0MVeKFVfzU+x0gCE1pF+PBAnnKrTRVVjpFFOY6Oja4m5MjZzG3BVdgL0Q+jQnsxC
+ bFYrTpfW1aGbJi8+225TNhbZ0v4Jwd0b2lV5krL2uwIRhym5w3oilQE6SpBcfJF7QDJ27katZWvgnN5h
+ GwfkqSyta49ZassR94IljyK+SLWu1jtKm1rUh5x7FVXLliC4JzIpTFXCwFCzKpA+RpbpDtCdJqsYegbv
+ FB2lYfZ3J7xfyhKnbaqNIb81BTNjQK23nx3tTxc10uvrO2U/BNfhVRRXVdeaioDFTQaLZbbq+YVYjp2d
+ mPiFQbLs8ngnCMAWDUuOztWkP71NcPZCs2hHH1WJ7TjG75J9GgSuNXe0tG00RB5+FU5oq4tdS5aRsDgx
+ t7qqR8zhHF1j+KMeQ4f7hTJG7lXFNMrq2b7CrS9F8dRIVo8oZZNNQ782vIK9UKmA7FWzQIC479yH2Zpo
+ FhTYr1ZxCrSgRQ3Zq7EXG93auOYq69XgBXSa1dy0tvSHcWrlW+StWNK/YHLSG5zbrsFr1HbvR1CAq3Wd
+ 6HTOCvNsuRc9tGbO1G4ZrLhTguSNtazTZ7UHioBzYCuxW5SCSnufONHb1WUqqvaC4c3eE4Dmuv4bwgnX
+ qu2oCjBwrd2Jg3MWAV1yLS4mjNpT6CutwXPjbwvKwfJxuT9I8sfssotfIXhwuqsl0t8RdrhBtrVdzb1r
+ vHn+SpI4MtbDipbV2tXMeGbvKjRacbhxWSzBprFRhNnFNjtUYMbsAnyFrmGQ0obrLVQXv8kBXnZyIm2q
+ K26jbrNFpnyPOkFKbEHx5U/Ww1UQz9o5ITuL6KQ/amTSPGDHXJkkrdV26+nFco0W3XKTTvaDbFx2qr2M
+ hmpUjFRtLXU5zdiZowWtAvGxXYpzNG4t37Eb6uKqFr3q2zLXgg1aMKJj22nPbJRNfZb2i2rR0Y95WZjR
+ pxIKpkr5JHXYYLlNd3aLgibT25PuGzsR2Fr7S35jauzNWtsWFB5poAKFqoKpc4qtCGFW6UVU+3ozG3oS
+ bUQ2gd1XFG1HGyvVbigxn/iAbw4qpLXjzW0qgbQdqe1nTw7FVwFULGCs5rs1lzQ9qvY0t8kyw0WDW1U3
+ hODOf0dygbI0AMufS9FqDI9uCtVZ8S6HmjzPNU1N/OX71jEAW0wTuxozz9yiyqI9ZOBxaaKi3pj9xQ0R
+ FGJmTysD3RsAtbCVS25kfVj1B5rWsA9l580dMaPpS1iU+KQWntNFQMquVorNRRRF4pSSrUWygPYTXirW
+ RPFeq7BcvGIGnpM1vmpGSvMjmuxO5SSzvsRN1IyuQlD+F6wqpbQphm0XSN/AKV0Nzoquaov2hCOTyjnU
+ 2OW5NdpHyQ9OMm4hMmidpMnm1od3BO2lzVDI+WxNk+q9yAsEvJ1OiPmtJlLagXWm4tCMomE56FRSnaiy
+ RlqI33IvqG/kgRSpwOwqpRc4VKcCuQhlk4MWuxsXecq5dloYOy75lCOB0mVubuq5CVjJrLug1tTVFsuS
+ ZU5rm0NW4p7WZJlBp1pv8rJX/s1jzBLsPQKdHISHtNCqFyAjuIWuKFFzuaEVppNmHFUcAjsTR0V2KzVW
+ Ocxt9BgSmOjj0bnXWWrQv5SMiiea9tVI7sw3BEB1Ar3lbVEUNHSqsSG3XoD8QnNY8PIxVh7kRESDudeh
+ eyVvwn9FyM72TM6Mn5p0Upcxw2FWpKY0CrOz7Psv6SsCRjrSGlukbqv7U0NFNVY3LFYq92qnX3C5F+kN
+ fZotWYnwWrK3xBCk0pBtUpRP3OcQiWRvdavubVXZPL8BWrks1O4VU5LN/wBZQc+utHZPFB8QaS67WQij
+ lLdpsXUCsR1J2uOLlYgpa6x/BCbWqdu1Eo22aQ8UDS9Qg0sutNPwpsdSbIon30FcNlU+GVoka4awdhTe
+ jNkryclkurSpb9b1o3Rg1xs4UROTi51/+FlMks8zorBMbA8ol5e4nacUS5wu7UdernVKlirQObSiyvI5
+ OcHanY5bisVlOQYyxcrB+iD9C8PGzerE0Mv2acULqXByrUXOPkiwcu03UNydDG2SSxvOCI+zMrsc5WMq
+ med9i5H/AOMpNAdj3UUeT5TGWyyXtFoFco8cGqrRf1ipYnPq6zVldirluVuPsxmz+CvjBO/anMirosoZ
+ UX9IKaM4E2wuaEHD1eUXO72xTQjCTlY+P1+KZlVzaiy5agp2qu1awBI81QYBBo2oNbgFVEqowQstJ4LG
+ gO9aKw5/dNE7S1Mra3O2J07qWxsKZbYA32SnCKUWnDbdVPZLirTM0RzVwdXFB0TqPVprr+khbfQrUoH/
+ ACctJQ5NK3YcWqOHKoA58Z5zTceH6IaOBjQNpTo8pYTBJf3T2KtbcDubJT6vUjXm05uHBRyYGlCFiFiF
+ iKJ21PdhT51wTjIBearW0JXJSPj7kyqzLJSPaoVK6M1L8SU9jYSbLqVtq6No98r1cfmVI2QBpaK3FSao
+ s2rGKjZHQvdRWYr3u5zzif8ACq0Gl+G9G1Tnb0a2cBtTr6dm9NDTSQeSvKfK6oZGKA9qFqotR9ZX46vO
+ ch0mltaN7Ea0B3/oi/L43aU3ariKquRMlhPWL1YmmD9l6sx23LUjaEdJz2lWrWo5uqOCy8XGkhuOF618
+ lyc+4tb9mxO7rDX5Jk2T5JlULx1akKVzI3jJbQo89qEWUuMb8Lgnwsi5vSkkDQtWaKP/AI4i75lB8k2V
+ PitC3rWaDfqqLK4aiB+pMKkjsdmcInWH01TRTwZY6knRL9+5HMw4VNM8c22F4Pgg0kYbDfQ5ntZz8W8Q
+ snyuO7UBeCTXgB5qaKmrJrNV+ZmkrZrgrbATH1qLUZRxWsKLRsdzecjq1KKIbgrqL2jiqTNqdjtoTxpG
+ 2QKtO9aKeN1odY3KgYwDsuI8VajBK3eKvc0Jra1pmsytDmnetM0WLO7BEnarTDQo/aGlzRcg6X93h2DE
+ ninBpjkc7wuWhyg0fTmv1gQtBO20zfjRPyZ8OmiN1HKOaCHQ7xuWqK/ktd7B7y1pYx4r7y3yViDKWF25
+ ERRl1l2OxOa6y1zq7Vr5QweCvyyngtTLneH/AKpW6V0tQMVlHfOeQex+adDFe4vJVZ6VbW5O2GyVrAUt
+ dJ28Kpps6KcDu6vaoXgFws6/gq7OKtWgwbVSOy6orUdqYRQUB2VVuI+DWeK34gVuVb7P4dqLsS1OFo2c
+ R6DXbMCoXxBuqSbRvoFNlZyeCTKm858jLVe1ak0UX/HkwX3zKz3aNRtPyt/GcpgeS0vcQauJp9FZHlTj
+ rt5GXvD/AMUeWMAtjUlzFrr2m5ZRkOUgva1tO83Z+i0b66SKgNoUNKXZtMzm1aTxVc7HbxmfG7BwogM2
+ C1WDxKAezWb1b044B96sxC/5rS5cf6e3xRhssst1aNwCc0Noqi6LqjFSueDr7aLUx2pwVh13attnZmrm
+ bHlVwwb2Jz2uflDdjWocmQrOis9pVmxZHbRBz5xXhVN0UrSynNoqOxUUWwn5Kv2ePyX3aPyWpCwUvTaI
+ KGSSuk5jaIEDafFSNqCy1RVkjqmObcHLequYCViAmyQvaHDtUll7de/HmrWyl71r6ywCjIAGsvdU1iJ5
+ aXY0XOsS+0tWO01GXKW6KOxSpKllhvbXnU/NCaW4yGv6Jxf73+E8HnNfTBMpb6Kdqu5v5pzbxS1tVppe
+ OB2oXF3BOY+8UOJwKZjSnR4IWgTgNZ3YnOtClAW7UwYezsVkc3Ap2NqI/L0L60Wti25aF/MkFgqSJ3Qd
+ TO6mHrG8RisvyE1a3KNeO02msNoRgnwfquB2OCKpeVk+UQNoW3PrdVqbLDybnWtKMbVVrSNUrIquLgFG
+ 6vRWKrpWN4uojymksdFl5X7h+znydsjrKJllybJW7GRtqfNSaSQl+830WtPIT5K+07vOJV4BzVlgiefa
+ ZVWmZNCHbwwJ2ijZEBrXCiaYWVFrXP5p1PWx/MI5N9mgY61TWJWUCWwZWvpqYYrCr9yo6rQhaC1SusRm
+ JOy9PZNUiJlfFARNDArrtZYq9yuovtGnf3K3ZuYCd+5CmelVrFMax4DmyByAc8HHDiiftGN/MR5dx8Ew
+ Yhppm97Pgq3hNzMPtBWnDsVzVqxWlSKKx81ayxpmOy0fyRpEWEPGqoYm3WABd9cVWO+mA3BOB/3BtQ5l
+ 1najzOlt7UebzipLgdX5qMk39XYtJEW3nY3eo634YoW22WkDWx2qy0OdZ51m9c147BeUy3QU6OOzFPGI
+ oLSc0MJptXKODVavPeVHvB4I0a6nkg5uqRQrJ8rhBIkbR1L0LYLB2tKpA0ydtEwgRsLXdJ+xZKHSsZPY
+ 0lsOtDVNP/qnGJwsy0fwKjflZEk4bRwF96//AB/7Mls9Z+oF+/5bk2THqR65TvssU2UdsmoD5qDLsjGj
+ jfqyDqo67qeyKkq5j3f8j7vJG2Y2DyUpyQsLw7WpsXNBV2ZwWVx5RJprEmqexc0rk2DxK+7g8JUIpYJY
+ pT7NW+eZzD0hRFlbRZciW3hu38k3KslHKM2Dav8A8gRkgeakzavyTPsxmmJ50rm2W+AVmTW4rVFkrk2k
+ tV9+eW1i5hzNdtuRAWGbdnOhBLW3Kkop3gta7gtI2r2dmIWpfRGzOGj/AI197d4MVp875RuKBYwx7Kfm
+ pGCQSGtebRXgN8UWvIO1O45wHM6KY4st1XqCrofmmMdFznb6p0bnAPG9q5AV7LNFR7Hhw9j/ACuZJ5BR
+ Mha4HSNxRwRt/wDpUloDnAp2P/hRFXdLorbzh0exNLyWCm5HanDWs/5TufTAcU6Olppwt34rR3HkrV5o
+ MUQyMB1o9InYhbl3arR4Ivpc5uCDYmVJ6ybbymOOP2Bem/YnPjmA6esHLVbEf6iaABIDjY2eaq7J5R7q
+ bDk8Errz0CqfZ56jdE5auT5T/wBVFXRlo9qVoUL5JoGOOqS7KWnHhsWUw/tR7jZjc5lHUBp9VTYsiyaC
+ KQar36O04nfRfvMks3Y59keTVZADR7DbKlhdX7NM/SRnq1xCdHlTLbJ3WrGwlWckyYMb9bFz7A7FWR7i
+ eKbIyuhkueFWtxXOCa7KnmMONBqlSfYnGR+FbJCl30/NQjJ5pI27mPpsVIsqyg/1FapI9vtMaV+8ZPE/
+ jGQuXyIe5J+qZk8YlimfzQ8XFRXkCWtRvKjkMzg1wrZaEGfs5sUTeudZy0mU6V7xfVz7S+zww0vv0lxc
+ a4IH7M9/BwX3WUeCI+zSnfqrSMyloZXpiq5bKsnPBqIknYUco+0sJ6ty1JGvPYhidH+KIOTvK+6nzX3a
+ nvL7s1O0rKcFzSnOq1sZdW9y0cslNuqEWwSS14VVoZQG965HSyCQnAi9HlpPiTTPWRvtORfkzQx/ZcnM
+ c993tKpJLxaVftrx7lEWvl0tb043UqucCr9ipFaqUwMxB3qjYiT2Kk8ZjrvQ4FP2WowVWJzoz7JVXutH
+ tW0fNMrfZq+0blvVBHVRkUieXXa1SjUdv15LZt6XYtnR6SbQgYhNsmgNEbx0lS43g49iFu/Db2Is6JaF
+ rOLLuk7ci0a7b+wKOw9rLP4dic18gkINLk3rWVK37S8a2Fy+8u+AK8xu70QWvFC7zC18ne3uSImJ8mpi
+ 1+IVoOcK+SsZXkuTOlabzZCy/JbDKtkLeaL9x8k21qyNl1HHEsIVtjRG6jQ6m1ANALDsXKVjKk0msD6u
+ nVTozflcHN4/5wW4jOWnBHJZufHhmyMAVdpaDyTWR3NanjsKgP1tTLd6wFFpohqrWbVZMW4Mmasgf1Z6
+ fJRH2SnyWHvgJq2sQIoqZbkbTwq1D7Ux8Z9tltVyWaN/cdf5LkpDwKygT0s6Mlpr2Kl41a18V+8C2O1a
+ SGMCz2LBZS/qsCldtN/itctb4I0eD7q5yjbXFwCcGmg7EL81yq0kEtVHkuKjGGrVFrGlzq4BeoeiHQyl
+ m6iMmhcPdTg4EEWsUyy8hGj63bQhpHMruTXMxVy2K+hTjaYLLa3qN9kCu5OfvuUL+s1zfQyrWB1RRXXB
+ UaDswBVUGyXPwQv3fgtvNGztQF/OKBawKorTBDHBu1at30U3bdRNJmYE0RtdlD/IKkViNvdwCccdq4FT
+ DNgsFVqp/usp5LV5Nz7wcQeKc+JujeTV/eU75A0zmloNvNURByTezFFzibVq9RJ9LLo9ysyxELS5O+7B
+ 7OxDK4PUZQb+x6ayuK1X6ypDC93bS5Myh0jIaYjElENcCRuTMnaKaO8niqqnYVC76xQcE2/WAUgRQPA/
+ NRv6s8Z+vNM4OTGnbGPwTmloK14W13tuVrIJtbqv/VR5Nl0z3ROqLDjaRa+PS2m0s7wg3YKDNYc227Cr
+ kSp29chvgso9CIeOYZiPwUZTQRq4p7djaBSSHBtpOZBSy1dBc2MrXhB4OVMoyVOfGwRPuFRcmVmdI/sb
+ ch6FxxuUMc4qEA2MUC5jfJcxvwrWhZ8KYIuTaW1UjgaOtYhfvAJHWb+mxGkwpdvUcjb27apwbi2/3UK3
+ 8VhS49HtXRGsmGyaEY70GY+6miJlagBWS6/qtQDdmJVlm+i1r3IgYq/ciPZBTX9ZuatM8TupKEHxsa/i
+ qvJJifbs0pUUUs0vPe60Vcn94qE/WCtOJquTe0t3LWjsmmKnyCeoJ12nbxQMuWGWRv1gF+75PLLx1QmW
+ 5i2Q4wRR2nC/arZq0FtKTOqpjHLHNlDHWdG3VqaqRpfe1jS/2UNG4OHYvNQ2BVercm6rgOCc+ooWp9L1
+ 7n5pz+yM/gme8oCOoAn0z5L3/wAlHW65NifWmOqiHW6i44r1TvmtTJTZ3kFHRMaxujrcVlNOxHM6pNaY
+ J1RzWFc2ivoFzqLCqstpXYho3WVISdY3qRzKi26pT39Z3oMbvcE1jRWrqpgc085AD0KNBcexQlzSDnvb
+ TNDILqEgp48cziLkyoraaD2JrsXxXIObg4VVMMexb7641VGbEL6oMJ0ZNK0CrEwhvbtRd4pvZmOYDiFD
+ J4JtpAtZ0U9oGZ/aKqJ9ec0FQPJvPJPUjdziM0rfaUB4ehCWbbvmuWi+0viua+JoaBvQ+z5C0dsktUS2
+ OJg20/wtKJjGcNS5NiibpHu+qrLf/kWPE7iOf0u3tWqSCHLSshfMG4hiEb4ZmOdsICszAA+1ECrzAD3S
+ 1Uiyho7s6q0knwcqx5QRs5uxZSwdGNo8iFHwcixjtVWnZ8k/5WoaN4ZvuVhhNnu0+ZTh9ohs1rR2u6qL
+ X3OwrTBCJ07jHiALkLZNS2uCLWqrHOedy1h/cqscGnsci/nOf0kaY5rlii3Slh7FVllx4oAscwvNE+Nh
+ MjmtPGq9U8eC5jvJYEZo/ZqUyr7OruqgbRPu0TQ9tbI33ollAuj5ro/EqygX9qG1crKxnE0X3hp4Lnn4
+ Vi//AK04xk8m5pwom0oLdyuVkNJruQhPrWDDetahGDvyTmPrZJ+aOz/xYHYqMTNmxXD89qs7lYj8TmuQ
+ uvzAkgC0FospsObjz1WO0D7MqsRZblLQMBUH8k50uUPJ7oWrP/arUczXKHJ8opIA2jkWsfpAbx2EXrKg
+ 3DSuzSC+hUJ3Gnz9D7U9x1rUbG7KKrrymd3NqVoq5PIYfaCc+V7pC5x5xqpR21RfHGJLTaOvomtyr9nG
+ YVxGtRWMryZ2TP3YLUyox+K5P9oN8wh9ny+72Sntlyt0EY5rg+1XwVmbLGzMkkbGeS2KKGfKBDKzY8dq
+ JidHV3+3LT5LkZnM7zVyT2yeK5SF1Fkx0bqaYVuWquUme7xQfQAsNqu8bQspELmvjc620jtTmka2xQO3
+ xoPxvVPs7EaQRD3Vq5OyvcQtNDHHGmGeg9CuCOHkV0PmsGf9i9X/AHtWvCfhBVqHUOHqyE8ygub0blRu
+ TuFdtERYd/8AVcxx95eqf8Sq+0GhEOANWK029qDdPoXUHRTW6a2QMbK5O+l6q9r1JBR4DxSt2+q5R+v2
+ m9NvuQLADauUklaEXqzLdL+KAOLblRxJP+F5K8V3JpbgiMP8q4cOxUG1Y14KvRjvKEjW1eLiMzBlVNC6
+ 51bkfs0rI5Oi62HJpMkNraIxRarv7lqPkHvFeslX2dxJrfacy5cqYbO8IMe0PNeTdZvcd3FZQ6PJ5DGX
+ VtUVTkkzz3VZi/Z+UO/p3KWLKHANbeGUwNrOWNbbeL+wLJ2vcw6xNkClPFc4lu6i1A8+6roZT7pV2S5Q
+ f6ZQkdkc5A/lncsnGBIqmTxbTZVqYWyNmxZR3WqSHKf2e+Sw6lbLXLlskEX9Ej8FXIJyJOq3KLP/ANkJ
+ Ysr07KerfhXi1F2TS6Ufy5afimt/aMsrtG8O0b94VjL8nfE5wpasV+YUYg/azrbf97H8l+4ZbbZ7Mq/e
+ cmMzO2P9FTL8jkh3kIOgmZa7bit+bFREYsNg/knDZioj7RCuC3cU2zQybblybZCPZbRRxRPYwfMJrbYN
+ kbVdf6FRintjo3fXcrWxyoTZ8VzAVTRgcFVjrlzyo9tybE6Nga07ArD6yU5vBerd8K5pHgmDcfmh3UQ6
+ 8G5Fj2McNjnS2V/+v/2uKFdF7tVRsdR2RXKooBUWaNptVes0LurkWue7sT3TsEVptBUotyjJxI3rAq6p
+ b7SxVBeho8neWnpO1Qv3qeNnYwWlrh859tyZLkjRHC4azRhVB+1CCyBtDhjhgmtIpmeRc3FUFzc0TMpy
+ d7pGto4tCwmj8D+quyqdnxK79pyji4q3kH7RE8lrmmhuQ+1UezbYberP/wAZJYJFDXb5Il2Sh8kXPBdQ
+ 03r7k3/sTcnfBoS+tkiRS6M6kgEgFd61XyhWQdJxYjJloItmpYExxySDSCoNpt6LZBBCf+L81dMT3Ylc
+ Zz7q5k58lHk8YmY6Tml2CkY25uLfFQM33pyynuhFzoQZbWuhJkzGWdz2VVH5Kz3X0VYHz5OfrcqwZcZm
+ t2O1ll+XvLWyRPvs4IU1nIDLcjyWc7sFr5NlGRP/AJdfyQ+zftW7dN/m9O+1RQZTFSpogDkuhYOtEqZN
+ HombC675ZjRSxk0qKjimS+BRjjcA4Preg3KJn2/Z2rVyZ0h3vcuRhhi4NV8rlCSScfwTpBfZ2LWY4L1p
+ arpmldEoMshOY55ZXcrEE93txtcscnd3sn/RczJqd1wWrBCeEx/Na+Sn3coCabEkZd1nByHBMbsLgozx
+ GauNE3im8DmaJsW1oUXQTh7v5jKpzpJAWDnaooo3UIcW85iYLYfeDVQSjaKfmt9b1D2t2b81l14XKUAV
+ nXn3FxuVMnhZF3WrGqDoGte+uDnUACEk84P8tjKN/VTU6AtJzaXtWFbKF1DmEjPUyfiqm4J75TIwtfZq
+ D2I/evGyvvMw4xBXZY5vegWp+0I/GMp/2Odk81bzg0dit2akLQvihEdKUsrSua0yb6K2/JoT26Naj4GO
+ HVZeqmZpP/GvWOP9Jaol/wCtcybyWrDOfJNdNHajczSMB2FPaGUouaFgmyMxjcHBZFlcJBjlbQ1QdZAo
+ KXIrKe6FKHerL0GxGueZuNqB6/akbwHAvbj4IPbk1hw6jkS+UxntoVpcnyxzW1uuuQ+3ZTbibzQxqpA2
+ yKX1cnWgCK6u4IRmVukdsrRXBVa0t7Tcnlxa5xOKI5F43XK3FGG8FbfbB7FqTOHELVmYVcYz7yjLozc7
+ EKVtCr2OHh6Eesdv4KFsEjo7TSTRXzE+AVjKnutdlyrCQ9nthXsYfEhCN0di1U1DqqHM1+xrkzRRlgZc
+ uaU7ZeqKjrWruXOcPdVoP1Vqtu3lSMxc5tA1Ma+QR6gqwArktYbLlDo2Ev3YLRTtsusqSInmOqPH0BI2
+ Gr8ccFX0CHXg3FZRk7rrBI/ynGy5c0/EtoKMU17CpI8GtcRacqMyiShNaC4KyzJtTGowXK5NLdhS5ACL
+ KGEqhj+Sd9nnAa6lzmFOc3LRf/LWq603eM03in0a0X9VdH4QufT3QvWFc8p9q8hyycew4fNScUHynV6r
+ U9roxo9/NVtkYd7TkckcyjrYdpLX4BUjmJPBHSZTQf8AGSnsicBbF5LFHPkEQeDatOtUJNULURDd+IVL
+ LncGlaws8bl/Sf8Agv25wH4JksuUShxHSfc3wRt3u7VKw9Fynh+zRvayQtamkxAybb9VUfIQNzLkb2g/
+ NUjoO61dM+6jI0EChRuVxIWrNIPeXrieIQjlykRE4cmnxF4ks9ICipWo3WVe3+1OledG3Ab0aOYeLVjk
+ 5/prms+aE0ZZYskc69MdFozZbS9/aubEf6gVWsb4SBfZphyg8Vfch3HKOo1WtqqplloG/O/iEdWw53WW
+ sxrn7ULDG3diN9yo5tpn4LUpXsvTZZI2EOuNpfuuTD3AAjZycNPtmq/eKHuiiGy1cgM4fKKlquz33K91
+ TuUk/wDqSNRK2Z9JFg7HsRqapqbHA6ycScVG55tOOKrtWtG0qRwjbUCqdZoNqBxqpvH8EynrKX+jLxCZ
+ JEaPa781bJN6fvtJtquswFXveSq0uTx1gmv2OVG1v2qBjMsdkrmudzJADitQ1NnbjVSZNk5axreTNttS
+ XblA2WdoktO5jbrPiuUsSXUrYvFe1SQQTFsUprIAMUyj6sv8EwvZR7WNr5Ka1zXNU0jjW0+tVZxVuNxs
+ 9VXuoPJSRmNunpQu2p7HChaaKvsZiCFVprmqEHPvcQnX6rblyV3tbV/UcnRG297cbLAqP0rT7UNF6wj+
+ kV94b4xlfeIv7ldlMPxEIG7soaquKtBoanndGUNuouRjc/g1B8rWwxhoq6R1KJkkbnODjTWzO8EG2zFE
+ B0cXKpdIO3SuCL2vOUwNuo7EeKLvUsHWGKvtS8SuQYGNWlkfVzb6VTb6B4qtQa29OamvGLTVAjpejrFU
+ j1ndi1n2ewYoaVxDXUqnnJcnaHuF7naxTmYAKuARABVgk1zHaoieqE/vKPxzVCmGOoVLXqqim+tifu9G
+ bwT272vRG5SDxWTu3VCdXZeqbFjd2KIOpZxbRVkmsRu3C93BcjkOmdvnfX5BH7fLFkzQ2rWQWQ6p4KR+
+ QYvpz78O1W8rk0m2nR8kNwCNlZQ1+Io4LI34W4NH8KfE80tirCnMOO0bk11ebQJzCiDsuWkhNF9rnZRs
+ u0KnsD0d4X4Kpubuze+VL7v4KjrQ+fow/wDG38E/wUT2TxC2K3pzpZjISKXNorZha5+83qlwCdX8E44W
+ XArFPs4qNzdjVo9avkVYiFhmOK5WRG7xcqtw7LkDsTCDey7yQqdZT2BWzU5mV6N3hntblSAWiqyEhqst
+ NFYgjdI72QmZROG2bV4BqWqxfWic6nmvVDSHBa50j/7WonamtHSIWtlB+EJrK1s3VTpNMRU1wQjtWvln
+ Ld4opAyIuqNiP2iF8Y7QpafVyk9GTioS5waNbHipfuwNMU3QlvNIuV2x9U61dertWJvPfuQkyEPlrdo9
+ qA+xiIe1IAmOflEEVloAF5T2ZS95ylhs6NrBSvaUKNFFvKwzW5jZapIsndrGIhu5xRA9Zk8tVC+tNiEU
+ xNdhRHXFVwVrY69erPihC53JA1paRjjpVcwHg5epeuY4eC5ON8h9lqtSxFgHWNEXvlaCteZx4ABcmTJ+
+ KNoEHSFT+7+GagvXqhG3e80VcoymvcaqvY+Qe09UibYjbc1OEjGPw5ya6jG2bm9idYdaGc3qa+psq5YU
+ TaoPHBbT8gtamY7FfgpGb9ZPaDSjk6TKL6tTirPVd8ihvwzaGLnbVbkoOKs5JGSzrG4LSZW8zO6rbh+q
+ sCxH7EYvT4xHqOxbtW7Ndt6So1AKJmNFlE0ZIc0kr1tF61esb5L/AEz7q1oYitfJh4VQZoiHH2lKfaaP
+ mpvrYnuYyrSsG/Euh5q9zR5q+X+1UZaftJooB+0nNEGOvhVBmRzyTQ15t5CiLAWqUdlV1Im85yZHGDG1
+ uFk/VVZqnvfG6bRitG4kKOWEPyeONtALXzRJGN6oVsRLiV+7xOmd2LlXk9iaMnGuMLqp7Mqe3STXubVF
+ h/05FDJuKrtYVq7Vb2tXrvJqtjTvZ5K9oj75xWqGO4PQflR0YOOtSipE6p7L05scMjhxsrko44/mr5y3
+ uqXSPMl+3M/vlTcG/gvtOVOc2PoNHS7VSCNrPmVealU2oMZi/N9pgw6Y3J7ZbtaisRUHYE2w0Gu9G3du
+ WsnNdqNpig7ICbIuLaX8UZHVfosa7EyZvOHOzFDYtI+oY5aFsdAPrFauBQPZRWhg9tc40brJdciHgl+5
+ HRN0TUZHNEIOL5UHzP03a7BUYTlDxsZgtd5iiPQj/VA5NWMDfeucFiFemoqpVrqglPPXkp8/RGaHwR7Z
+ WqUYVuWMa5zV6z+1esK5SanvgLWyhn/aoIYZGSua+rgytMFRgACtSUuvRrdH0imwxANYMEN6DZLtxWli
+ dRzfmnSRjRurrM/MKtk1WsQCiG3lB0tHtHRKpBa7AFal5Nm8p0j8pDOg4tdf/lVacL7Q/FTPF1vWR88x
+ btYaJw2FUbNZb4Krsod8lWmj7xWsT4KFrhS79VXZ6EwR4lP7xVpzaZMWttO39iDI6BjVWyfJawIVsouw
+ bg3hmwqstZENRsly1nBowvuz66dsG5U3J2iIEc2/erLuadUpzdhQ7QgS3gMK/wCFyhJPZ+AXMa3sL7wr
+ briN+1at225M9l1PNajCVrANTKurtXbiicpstFLnFGCFryDi/BaJ73aJl9mtyLjS1wWLfhXOj+Fc+Jas
+ kXxrULfiRAXYM07tzFkzN76+mxRBv+9+RTmskIHdqvWS+DVqnKT4rWZKK9eWio+lrdbtLlHxNWvlHk1M
+ jgD57Ta3MV2RzeNys5SzRxjHWqgyNtGDN29XerbzZ43hqoTWNwxTmSX9oTof2TCRve+5G3IZH1vVGOEQ
+ 2E7Vy7m2PZKsQQl8mFp4oEaOF3R3LVIBpVzSiw6soubx3JsB6VU+OvNdRU2IbpPxXBepj+EKrIWM7Q2/
+ NzQgBszvkmt86jbJovXSt920nkZQyQHZShRfFGXDyWimyae051eZcVuPYtUUWsT5rVvVmtG2aGnoZTDL
+ iW1rvvQDi2tcFU3KkYqUbR1s9l4BG4qQxtDGV5o2KzJz41R7Q6zza4I6Zjqdm1VjfrHbtA3BWK0djRuC
+ bU0phTBEgU3jcn6XmqkTXEI2CGnbtCa919FZLaOzkAqsj3Dg2q9Y/wCFetf8IXrCfdVKnyWrI5OiqXFX
+ 5ssd2ALJGdhP8DJQ67XP4K5wR1gfFNt2QML3IseavZdqsquTimdwaAuQ/Z8ru8Stb9n1ZuwKk+0ZOYBd
+ gaosbXit63KmJ6h2on1h9m+ige2QgM5wG1MhbczA2diBYRPk5ZaDcSAi6FsjY5HUoNvFB+Vao3BUFwDU
+ zUDmu9uhr2KmUtLB/NZ+aLsmdQey65GXIqS2cUJJInQPweCLv/V9ojdQ7xvRl6RGtxVUX9Nmt+q2WHLn
+ u+Arnu+BYv8AhREVrVvvCObaoWm40r+avPN7VrOr3qfmorOWRQtB17L7yvvLT2ucvXV8CtR9BjaIoFrS
+ t/FEazadcUqr1fmoiG6narVNLL1nKsjwGjyVnJBX2yhPUvf2nFB7DVrs3ahUm7crq1RtDQtPWQ0r3TOb
+ 7qNmGP4V6mP4UTYLHb2uojE2R5pfjisKVRIv2eOahVhl+bHNcua0q4MWDPJakcZPcWlmyIsj36O5W5AA
+ cDZWKrSgWUE4ukosn0bHP5PYKr1Mnwq9jh7qtOuVpoqzO9Qse+wGVPNquVtO+S5jj/UWrkodxqVqZHGP
+ 6awZH8IWtlELeMoV+WwD36q1A8SMNRUXXqm3NfrHqIX43Wk7SNMe/cVoIMTuTn5Q42HX2esmusVbZs34
+ eSLspj02rqNbdQqaV4Lat5u69eBUeB1lyTnR8Cq6rjv5p8wvWPb3tb8ETM20d7NYeSNmzX2bj5K3k77b
+ O1XtICjEZAcRQhBhY4nAbqLp/Ja9rzVdYjberWT3F29OEuNoi5VkA95yZHDYL3GlzU5+wBMbK4F220jW
+ WLWvFarU0DuBVZTY7q1uVd7SGA8VrMIViWpjddVaKbnNuBzdqxpsVIxSnmURFyjvkuVdUbhhn0Uh5N2H
+ Yc28q251iP5rk2NYdrljUougYdGKAupcE7O9mUNqNh2hX8ownUf29qDBgM9T4egfQaVMyoNYiPkpBSpr
+ VU0Ya32ti0bX6R34JrJntq5xJvV8gb7y1cpp/UWrlH96unr4hXSkrXZE7ixX5NF4VCLooSCf5lU9o52j
+ qrORyQww2QdaKpV+XPPdYGqkmWZQffWvLIeLyr214ptqCJ3ean2MngaabGAK/rA/JSQuxa8j5qmLuqsa
+ 7zvVmVtAL91KI3tmj3u2oPyhoo3mMojfXNZNOO1FzukvApve9Cu1axD+9+qDKm+6j9YeatWKB1btyqNi
+ sRsx8Vz5G8Cvvkw4taU7lZJo6f7QTGtItC7XYWotkcNDtDJNq9SShaY1ujv5pTW9Z1EyOKhfKaCm5a1p
+ w9lYArb5rArVlI4hYsegHRvYTtGCbG2Qh2yt9VoZHAvVQgYxV20LWfRydJk8jWVxBG1aujfwejbyZ/gK
+ rXY5vEUzaOU8o35hb1yADkW1LG70dt+KsAkBxFUajbmwRuKvFQtUuYjo3sfxuR0kDx2i9axzgpyAQLbx
+ nLYpHAFOGBxqrJc4d1bK+ZUd2ElVrQkinWC1snf8AK9Q7/oWswxjuFU0xHjgtXKyT36K7KXH+oE6Zkoe
+ 4UuNCiJLNdDTV4rJpPArii5ue65WS65O+tqyjRnRsa6pfuC0Drh19tVuouWdo4ertctJk0eszojA9quw
+ z8o0yHYFQXBeaDRjaVD6G56vF4TgeaSiOa2qsxNAPW2p3Jte3yXKZOfArWZI1etI4hXZQxaszD4rUcDw
+ vQs3WAmGgADccLuxWIi5gbudtXrnqj3NPGMLWjjI4UXqnDuv/VXmVveZVBlqOT+0pr5GHfSq161N9Vfi
+ PmtU2n/gi/WernyBetrxC5RkT/BcpBq96v4rSQMsCzQhBzDRwVpuO1u5Od7JVc0LBeS8BH0MFhnAfC1x
+ O9qkkjiLYrWxtwzMKk4pkkUYDXXirqKy+wPeV8sQWvlbB7i1sqd8KdWeU1Cv0zvfX3cni8qoyVi1YWAc
+ F6to8FcKKSoB23r1UR8wqSZO0cHlEsjq3dW9OusoWzW00hH+XJ+axVnEqvoTdUEoq66RNjqTx/JWp7z1
+ AqU0cm6qOUwC/pj889rBrc3gUy1S7ei+Oh4K+7PciHXFN8F2VVQi0Xt2Hs9HGiZbJtOvvTzW4mibssX+
+ FFU7b/Q35m7hene1qhUfzWrRwiy3sQMnkuSFgcV0XKj8iteCtuMORuB5rn3uWiypth2NnOCy+uI3p5w1
+ Vffmh3R1epXdVpVsyya1/PXrH/GV6yT4yvWy/GVq5RMP6hWrlc/xprJcpkkia1zi0qtUYwau3KRj8miJ
+ ruVGQMaOwKrslhJ7qo3AZ9Z7R7y1soiHvr71GtWW3wC5GKR/grT8mf8AEF90effWpkYHF6kNiKGxxKlf
+ JyllpNMKrlI5YeF6DshyyKSz0X6rlZyhpYU1qh79Flrd1/pbom85yEUIowfPNSK9F1qg2yH8kRGCxn9x
+ WNG//VG6jhitNk7eT6TR0VShqg0ZnS5PGJLONTS5SPdqOrdHaT2G4tNDVG1t2qsLg8blrtIzhGmaw8i0
+ OafRij2F1/BOduatToqzJz34q/PvXYsKp7pajZgmgXtbrDM7KGAHKKt16V1TjcpHZPHpH2yLTcmxG+qk
+ dljMo0wvGwHwC1MmcDdac6ayjWSIM6pdVWXzsHdYVJNradsdG+Co6Eha9GjzXJs1uscU7tot2bKpjsAY
+ pdlq708qk3MDfmqoyFzSHbk18bqWZbL+CfZAo2u3FXw/3KOVwveKqJ8EkjKvpzytaR597NzRnqqZ8qb7
+ LSitYMd3mLXyWB3urRuyfU3B+C5krPeTJIppWlprrBTgyM5VtOCsS2TW8ObgfQt1sRDpb+C0MAssCtPu
+ aqk2I/xVhoqf9sfmrcxtO+Qzhlqg6Lt3ZwRoK7HAq1/pn5Z5Y3xuc120FViygwP9u5WsmnZlLfavVMqy
+ NzRhaYgKPd3WqjnPHFq5Q2X+wxy5KevGNyAL2hV0kR95Udd+fpSSHoNVOshZbjrWkBatWRid+1YtW9X3
+ rcsVUXJgGJxUlnDAeClr1arTxi25sVaIxyxtayxWorcqOa5pafNcowNa7mrasE+poKJ5jNHVXrXq9zj4
+ r3G57f8AuPJWTxdZ1fTnf15PwGb3VK11zZqjxVs9JWMnbZFgEjtUNb+cPmmOwpKPzW707kRipW74vzzE
+ SQMPiteAjgVrNkC9dTiFq5QzzVWODh2KMyPlbZbg1q5mUO94NRaIXTPb0RIXFF0v7OZAB161QiycUb7K
+ Bfe9AyXu2MX7u6uy3u4LtOJ9Gzi7Z7Q3cVUUcHK/BEM5uC1xQJpigeHk3twuQmidLGzdgp9GaOxRtXtd
+ 5puTtyOGWVrbWkrzm70Q/IohwctDJk9t2LalfcD8afqaEuFLD0YnAAt5vZ2ek5/Xf/hRQgE0FSrRvoqz
+ tLa31DirjMuSmJPtBc1vxL1ZV9UK3qZ7SLLAmtR7YlD3EcEGWAblTRkeKuBWCO5PHaEc1naY7lyjmxjz
+ XKF8njRQxxijWtTWdRnpxe2XO+f+EU8E1dQBCQEE4u9l36Kg6TgRwKkdswXCQp/Y9p/ga2CFki0mdrHB
+ BTDc8j559+aPxTYRGHuuqbRuTg7Cis1oMdy0cR1d6DGCr8f/AFONoF/SccGohtWxbd7vrd6F+a9V5ke9
+ avEnf2p0dLdcSrTQXH2nLlAChpaWG7FdgnbUW0s/km2LpmHU/RMktBlcWnYdy9cwPbzTVAve0FWHzMPj
+ giHc8fNXaJ3vq/JyeBqqvyeUe4rMjat3OVYDX2VCOxSSNJF9y59VWyHeC1snYfEqv2XyeqsY9vzVKp9i
+ eO9vzQMlk+6tZtJJn6/gioO1tFF2frmkda1RvTiCDwW4p9aGgWJBoi+OUEnYq6Mu4Ivc8R9lL1yhaxo7
+ VcS/ghHFFznUvzZSfap6eTD+WD+ebi9PCgvBY5/kMUHbbZr5qYY0k/JZR2AH55rzRVF49PJjvJHyzZUP
+ 5rvRiZ7KfM49NDyT6OonMeKSN2b1SG7rb1ylWtGDM1wqtZYI5qzX9i1itzV2JwabB3rWk8lq56uu2p0f
+ RxHBW7VptBpA7pDetdojtbReFosrfFbHNLrqqkU0TDYPmmsldf0H/kvWNVxBza7QeIqtfJmHg1OsXNY2
+ 5Pd2KOJjjrFetHwrnMK5rCvVA+K1oXhcwj3VquAVBWQ7L0WvaQ/csmLMnkNknoqxO0NNo0vVDgpNnjRX
+ uJrvcCnSBlXHddgi444Wa0PmuVklh74BCqyRjh3UbmHg5epJO+4rlI/iYr2NHjRQ6PrV3pxUj+s8n0sK
+ prMKNAWxR99TOxosnr0Wk/JSO9m15LKm7LTSsrH8o57j6eSn+YM2V9+vy9AIBSH2io3cCitLHzgUyaPA
+ r7TFzTz/ANVRA0qsM1ZCL8GjEqsjNHuCsso6T8FV95WsquNArYujzDOHbnIPI12tWil4tQc2MS5PJ0Xd
+ ErTapL79Hjo+xML2DV1bxe4IMsHRS3WTiEOQZJ3JQVymSSj+n+i5xj3VtBUGUH/sUkgmdcLr1Zno5m8N
+ vTmtqHG7BB3UbVUFQXOpcqsml+Mr71J4q+RruLFRzIneYVWxxfGgcqyM2CaWgWuCHIsDt6L2xsG80otU
+ mTuCqpFC0d41TWunIq7BtyeTdU0wBTRHw3JkdbsPAfRTo8na0X3F25cvEHDexOMMhjk9nFWnBsw+ElUr
+ oH7pB+ac6jZKdW9UewDt2IvgsustOAUz/ZPptHbmPCqi1S7dTeqO6SlfsjhJXPtDChU+jYW6o21U7d8b
+ h8v4WTndIPxzSTQMqxwF9UXStBpu2K3k8kTxtvwWMfmgS6PHetiNZIvmmg2TZWATqPYezBGCfmOPkUWP
+ va65WHc3olC/No8mpJJv2NTsoyvlO2q1TZYMFdmoNZ6tyFaJzRYcizEYtO8IZzYFbtie1+ONFXB7LvJN
+ DmUY4Ufx3owHXZWtP0Vidpjpu/FGN5JZZ1CrcYp3VZe8032kDbr81y0EbvdQ5DQ06hVLQPeCpQeCyiTw
+ UEfj6Nl2CYbzbKwZb6Np1EWPiY9hupphRfd4l6gfEtJGwtc32kwNYXjbtxV3Qu8U6hp0WqN0jg0YU2lc
+ hkRc3e9yrlOSCIg3Ea16H2PLLR6kiplUF3WZeF+7vo/e02SnWrE3euPmsocxro8BRyn7RT02IhSd1Rlh
+ oQhW5y/aku6GnyQCeN8aPbcqbv4G9MsRvNHA83N4ImtWnYtPkpJj2t/JMfG653asQucAqXeavcAiQ5tV
+ q35tHIeVj/BUwe29pVk1DsLKpas1WtjuWthuV62AKzDXiquvOcWuc3b6BkeCW4XKOZj99tpuKkc4WBaG
+ F6pWrdi0eJAqzt7Ew1ab6gk0TXOfG6yat1q0VvJcofA7zCvbkmUDtFkqkn7JiPayVX/sxw/qBauQAH/l
+ C1P2dX36q+Ix9lEyooXklP3NFPRqmsxsXprBsaue74l6x/xL1snxJ9uV72hpxKYxh3VVZSbRvoFp/WNp
+ qDrOKM+XO0krlYkIBapHuaHNLqNVC0UVIco1erJreW1B742kK8ksN16e+zo7T1o8ljMji7or7nKF90m+
+ FX5NN8CvhlHuFXsf8JzMb2EqVPXBXLK3HGSQD5jNGMKscsU932lgBcTzVrZWPBivyx3/AFq/KJj5K907
+ veXq3njIV91Z41Wrk0PwLVjYODQjeAqphjcWGmI4r10nmiHzPNVZypr3w9JrH2fFfuz5Gs2a9V66Q+K9
+ Y/zXrXeaveSgm91Nli5zUyaLmu+qIyho0p2qzHRz1UkucVV2Kq/yW5iuz1K3AbM3ZmEhcABgcfknFoaT
+ vaKK1fRWhUHsvCDmXkFa0MQ4xVQo2Ef0AuSnjf7y5oWCxRc4qkQp2pu034qJpoaNUz8dcqjr1UehK/e+
+ idur6E3gEwkGu+zcqPBOrUrJYWOoLNo7Vg1/yoreVVke68CtwXIVLHXUOCq91PZYqRsAOCDKXNuXaoRj
+ t9HbmwB8EC1oB7E93VBKsyxMp7KfucqKPIwAGNfbrvV5xWTCvZ8s3Por7/Q5wV72jxVxJ4BA6OQg9lEX
+ 6MMr1nKsUredeGptt2bCq0gVnAbFbcCAfRZ3c2ilPIyf2lFkVzN+05rlZZe5WpCa9voUaCT8laf80a5r
+ 7lZbWx+KDmuBDdlcE10bgSReqPjv9lXVCNaVVDQhVa1jwty5LKJW8HL7xa7zVFFKyF9twbzaKThmgjx1
+ 6Ihtyo2SF/jReraeDl93f4XrWhlb7hV9yxUNcXVcneg8+0FJJduqMe1DfIfkoZqalktPZtX7uKt37Frv
+ 0Tm+BViN1adLchowXnHFGtY7Bqa71SO8diONlNbpCLWF+xetPxL1p+Jeud8S9c/4ldO9eucV6wfCv9M+
+ 6nMcxmtcrD8b7FGqlb8UHMab8U4WKAq+lEX202N9qRhB1V93lX3aX4192d/2L7u0cZFzIBxcufk48Ffl
+ TBwauU/aD/dCppZ5SrTo32VTJ4wG1xQzY0WNEW/RRblQM+T4WsXx8exGwaj0GaFpfRuxepcvVFBmUNcB
+ vW4KzDE8M629XxuXq3L1bvJeqf5Ky2CYDuFOABqMRuV9FRVKvw3K07moAMaBaOxa8MTuLAr8kgP9MLWy
+ Ng4VCuikZwkXJZTOw9tCv3T9o/Ez9PQyXvVUndzNygC1ZdWic5mTPIbiuUgePdXPI4q6RqqHhdEqjsni
+ eO6E+yA0NbcApM9HI9r1orYtuuAJREA0hFA3cE5uVOLi7Y3Bq12WhscnOkYXUuwuRdGw2NqoKHbVYesv
+ QMR0b/ZwQsgP0hx2hPGTRuks6rQ0VuC+6PHeuWtoo+L1r5U33WJ1vKpbrrhRVklk96WippCe64lci2Y+
+ K3LYtfM30BLBc9u1NbG8tdvbtWtlM1e8r5pT7xVHE+K5zVfIPAK6pV6tHgnrxX1vVzSfBXRuK1Yig6gC
+ c6N7be1hwKMcjSzj6HgqPD/hWD/hXS8lfbu9lYP+FdP4Fi4e4vWU90othktkLHooiVgd+KnjYKMa65dq
+ qc7h7aifGAbbqYLWjafdWvCPmtaIj3l02+RXr6cWquePsaVJwVCancFbe0xRdovPBFjHGNjcaXVXJuc3
+ dtVJfsxi61DXyV7QtUBapkHBxXrpmcQnX2tTFP8AQhLr9dMkM2jPVkuKqw2FgJBvRY+5x6LrkKUB2liF
+ LJp1sVonsItXMKoNu5NbtT3DoNo3vFW8oNmNzHNWq2V/u0XI5LXvPWkyeCMN80TPOYq9FlyrlEpJ9pyo
+ 17PBG/5LUNfQj4K4LAZrwjajDqrWhIXMePBc6nuletarpGrntPisQmQdlSVR51eCoy0AtZtVcwLCnoWJ
+ mCRvav3eawzc69cplLq9jE6pEjes1ScFGOz0cSuc7zXPd5qW0TzEO4inzNk5+IRrX0JR7Sa7qSj0OUjY
+ 4doVJMjjtbxcsKLFYlckNayU3IsmFZpbzTotTS8Aye3feuT1T0hjVVm+FNtVDDm3+hR7QVUxgcFRkbCi
+ WsI7rle6QKwTUI0s07AVI7JpCHA821+SrlLGP7uqUDLJo/Zc381ahcWdrDcrniUdqsyMIKrUJ0jgWtG9
+ RxnvuAUbYxebgv8AT+NeocZQy91o85aODKWxx1rgv3rLnuG5riuZbO9165GKw2i2UVSb0XBzIxuAKDZY
+ hJJtcjrMTK7AjVC5YK5P0jalV2+SJcm2Wn4lg6q1WlC0AFq2U7rNvag2TFY+ntz0U7WXNLQQgPZ9G7PN
+ 3UO5mcM12ZymHBZR2UPotvWvk7yN7dZa9W8RmbcTqFTZQL5pLrW4dis1u3I6O78U+0+23dvTHPbosnZz
+ WnEpz34BcllDCdxuKu9C8Vz0s+a1m0RETy4e0g2VlU9xaALlqscqwWozvDkBlLNL7QNHK+SyerJd80X2
+ AdxbetB0MKqSTGpuv2KEaPpjag3Bapceyq6TdixK6SutLE+axd5p2q64VxRvqqCuCaHURIBotVpV4A8V
+ sK1ruCFzlSMHyqqNACAvPijamsDisC7itVozZS0XWZCmvdwV3oX3LXnjHFy9eHd29cmyWTwouRyYDvFP
+ M9m66gQfhViPAfwJk3uZn+g5SDe1ZUP5Z9Ka2+J8f+nTFa7Q7itbJofhonxZJoma19DTNcjyhApSygKC
+ 5SiK+ztUzttlb1+75RJH2V/JUmZHOPIrl45Ij5rkp2E7q09A0vVCyiGrijfZHYiTI/hisPQrC90Z9kp1
+ sRl5aRbs35smI64QLXmOi+9H5K/KD8l94/uC+8f3BfeP7wvvFPfC+8f3hevPxr139yLg4vTdQdiFMFcr
+ 71cAqbEXY0V8Ra3fmLLTfiU3KCj/ABor3DzViMjNlXfQ7xTGQWLJbW9c9o4NX3gjgtbKJfiWs9x4lYV9
+ B7eCYnfwJUO4sR5p+a7M5HuKVvWYR6X71kzHe0xW435RG3eNYBTCLLausYUCva1ck+SPuvWvZl4toVyr
+ Hx/3BchKH16IxKfK83vkTWYW3gejvX7vM+Pg4rXeyXvtXL5KR3HIN0hjceu2mZg8cxzH0sn3W08J7HsY
+ GtdTmLBcxerR0NWnzRDXincC54+ALnj4QvWD4AsKKLuqrzQLnLnM+Nc5q1a+DVc158gtVtPeXRC9cRwV
+ XvcfHNCqWr1P4fgnd9Q9z+CUO8nfwHYaV19ncO1N+0SEgtwFy14ogjZqRmkd4Zim8DmtxhGo9DB7fdVY
+ ptG7yVMrjjk9uP8ARObSlDmwWBzZKN7a+ZWTRcXZtZVbf6ULT1hmPZnbFHifkuRm+Jq5ok7pXKxvbxHo
+ QcSipe+UL1rZzdejnKZ2JycP4JUPeV1yfwb+CePbUHcP8HwR4o8PTlmN+iF3FTOdrOIqmtabGrjuTmtL
+ B2u1nn9EKW2N7ypYe93eWjhk0M7b6E2gVZyllnt2HNF45rjVOdGEblfmxXRKvZ81UAj0KbTcmM6rQPkn
+ jqNA/gi7mMJzPPbn0jvWSfIK/MRRa0TaqrXOar2OpsNFHtpa/BeSl75/HNit+eov9Bw9pS8Ef4JTO8sV
+ /TCl7yyc9h/gjggfbaFavC53yVxCwHmvVFXxv+FXtI8FlA2iyVKdllSaybNfzfPNadz3YKvb8/r6KsZU
+ 1skZ2n8/1wWlyM2PYdh4KEPBBrm5Ilp7ypUKunpXeyq1JoneYWqxkndf6FfQydnWkGbKnj/c/g5VJwai
+ 7dntP9Wy93b2ZmMiFqSR1KJ0dLdOk3audTjdmDBgbzwzNdZAN96HEKQ+2fxz43LHMUc8oPRT+C8P4F+Y
+ d/M3/jCk4qHQRl9KrmNHFyvfEFfO34V94Hwq/KK+4vXu+Bevd8K+8O+FRSMk0kbrq7iiBjbCrZnZXcqP
+ kee+1esatVzT4rALDMe25Ei9m2i1HOjqcAgTzBc3t7VUXHGmwrlRQ4+H19BfX19eKo36+vq0qMvZu+v/
+ ADgrTdh8QVygtdrVziOLVdKxXOb4P9Jw7PQj9gEpztyc7rEn+CXf7khKl4UzWWaxJoAmQi93SO92ZrqE
+ EnyG5FrhftWtcwFEnBVdi69UTRtNSgN7gn94/j6GKx9HKW+y0opv8CkbHPPYvVWe8hbl21uaqOqVbfCw
+ u3uCwAWPpYFYUWICeLVdviou16o15AC5/mFrNYfBXwM/BeqcODlz8ojWrlbx3ggGzB9PZTYY+jiqYbXL
+ YAFv1ruw/X0Vo8ovHXwv+tqvpJk7sXdU/X0ER5/X1+a7fr6//wBK002X79w+voKzJqP3bCtdoKtsNDgg
+ 5jyOzYrpCFqzOPir2OHhmxRThnyiTqsopz7BKG3+Dko9iqA6xR3p2WSdG6Piqi/PeFQJrHXB5+S1XjNI
+ cWxsLUx77m1w3I+hisfRlbviH45uDz/AgLBQ3jxWCwzbFe4Ln/JXkots/NXNC5gGbwV1MxG9QM4lFWms
+ JCwRE1A5XUVxKxWjhIDztNypUSSyYVTdFedo6ysMu2u3p2wnH6+vzXtHj9fW1Ac5nV3cPrgtJktHs6u0
+ H62I/X19V3rf+Z+vpyvw+vr9MFYfrjCu0cd60kV9MW7wiY8du9pXMZIPJa+THwWpI1/CQK+Mn3aq+MeS
+ uABQdvzyv60lPJNbNda3i5V0YHtRGiP2PKAeyQLXydxG9l4V9QfRs77k1nVaAo27hVRwsPPdRNjgdqMF
+ B6JAVrZgM1QSFNfSlT80zvLz/gE2bkUwdaGmaSyK69VtWBXNJ8FdG4rm04laxAWs4p0Y6MnoQtiqXW66
+ u4JoxMrnOPBQWgbIZXiUxlb261E5zntFreaLlMoiHvr7wHcGlajJX+7Rcnkp8XrVYxnzWUsnkroyKUuu
+ VVKx1wieWjNHFRu5V1X+K5aF7fdqucAtVzfAo4ragYnUeME3SDo6zhvVrbs4/X05a1+7t3fXkdiq+/6+
+ v/5Rt/XZ9eO9W637dtezt+qVX+3L51H58VZdd+FPr/O9Brfrt+v7kLN/YrTHVCEsBo7erDqMlbzmfoqR
+ XOA81grqjxWrLIPeXrK8QCmy/tHk4djGihP6IR/ZI7I3XHzX7rK+I7nXhcjlgjb7N/yVmR4kftuoqsbo
+ 3b23LGuamUQsl7zVyduA+yar93nZJ2O1Vr5M8je3WVHgt7yydm+QZnAHmtAVv/abVbFcSFjVazfJbk8Z
+ NV0jtVoqi6WNwpzeKs6AmIc599EH11bNVlTthb+aHGq5p+Jc3+9c3+4rmfMqmiqroWq6JtFqtarNs0RW
+ S92n45nOODlqgrmlcwrmjxXRV8lOCvLisoazsK5vzUkX2WpaaVt4rVyeJviSrdmEGlOarLZgwdjAr8ql
+ 8LlrzSH3yr6lYehcsor0oh8s2UU6dD8s0XfzHaubQqrKOOyqqqrSOx6KqDT6+vyquSrqjmdnZvH1ct31
+ 9fnvQpd9fX+cFRuGz9fr5Kz9fX0d6oK417a/X05Fspqx1/ZXf2cRcnOrVVP19fVQqx1G870d60sg5eT5
+ K/0JZnsDnx0Da7Fj6GtGS3sXJS37lgD8kL6cUdvBbs21HSRtkHtCqbNDA1kjL9VXqZ3tKSTrv/D0ty51
+ eKLJ4WSMOKynJm3GOQsZ2NTnHpNzc4Bc9vmue3zRtSM+ILnu/wC8BH94iHvL7xF8QX3iL4l69i9cFFJC
+ 61ZAv8V6wKttXOqrg+ndWrG9eqA4uWMYXrfJYvKmaRSsdfnmmGLXWT8kf9P0d/pRjrsc3NG/rRDMOx2Z
+ ujcW62xXyO81S2VrWmIuYbUbMbOKu5v19fjvQbzvr6+r1QV52zf9fRVHusm7X2Hju+r1Zfhv+vr8V7W3
+ 6+veQpiaeX1/jcvr6+tiMjtn19fmtVtWbh9f+pr8loWbt31u/Baq1kXFE4ehlHfH4LWIFVuz3rBclKT7
+ Lr1SWGvaxYhh+FXPqO1cz4Fi4Hc4IswJvq0ouLgGt64/ROkZLG8AbHJ19SomkU1f4LgBQSXI0qLKut03
+ 1X/9K9wWtIr3lbSuYvVherAWCIopWG4herfXgtSD4itVjQucRwC15HnxW9c0LmRhqNEwdZhGZjutGr/4
+ eSn+ZTNkz+83MUCve9ASRnw3rTZK6y84/wCVZNzuru+vrctx/L6+mrt+vr8d6pe5mxu3w/TyWkjOkZ9f
+ X6Kru3x+v/d6/FWGU3fX15Lefr6/HeiXi92OamzM9uAcKehLddpPyUPeWrLpGdV96plUTojvbeF+7zMk
+ 7AfRo6i1RY7tycZJBZ7UdJC4s6wRfJI8Pw5QKQDK2ubZ5ukVIr+1RR9Z1/8ACg/5qKGNo9pXCivWOfDN
+ gsM1CnDrM9AUot3o5KfapmyZ/eH8SN254PzzMLrg161UUw+ynejaabuk3emvaa027QjpBwI28PrzVfr6
+ +hTBX3D8vr/NMVajJaa3jYeP1Xinlr6PuNj6x7CqYHFG/f8AX141CtnwzXZztpf6D/8AkTTxQdvz0ZOX
+ N6r9YfNfvWT17YyvXaM7pLlWN7Xj2TVSSxmjm0/FR22NdaIG5ODsG4JxzHM+Y4Rtp4n+FHT/AH0TjS5b
+ 8+30MUc8Z3sQXOXOWKxWK5xV+aB/VlH45oXdWX8v4hUbt7QVNtpZPzzFR8E5t1+c57Tb29JqDm0dG5XC
+ rPrH9fNWd3z+v/K4Kmzb9fQ7pVuTnY/X5rRT3OtarsL/AMirLqFvW2H6/wDF7KtKuOYRN5jAa8VN3D6H
+ vlCvVchEVXFvo1jJYew0WVQvmMlA0i3xUZxbbFb0/ij6ALrnyG1/AIW9MH8wlSH+c5X3L1jPiC9cz4kK
+ ytPBHXr4KuufdWpC88VqQsHE1VzwzutWvNIfFMONWBZMR2hAW2ea5zfiCrdn2I6zR4rnt81zwrbUw7xV
+ Sey5p/i5Mf5YWVj+WcxTE/sFP1zclC93gtawziVysxJ9kKuTa7O3YqudZ4LWNYnYoSRmoKLohX2f0/T8
+ FaO/5/X+aohtafh9f+blZbQ1/D6/xQoNqTZ3qjXArcNmag9Y7BPPsqbu5yh3ivdKFFrK8ejlXBv55ncV
+ 4jPCx97S+hV2wfwHDMadqd3kfBYLD+BD3AslPtq00C1v8VZl1hRc1c1c1c1c1c1XDNk5P+2FlVep+f8A
+ Fg8fxWUV/wBt34ZxxV9SqRxMb4Zq7sEMz48Wg0VCwEFTZNEeRBuBzG3tFeCOUPvla6zXeO1POJt0XFBr
+ QGt7M8hea30T+6pl/8QAJxABAAICAQMEAwEBAQEAAAAAAQARITFBUWFxgZGhscHR8OEQ8SD/2gAIAQEA
+ AT8hFhzWMway6lM0b5SLkLlzmWtVF4xeJniLGOZVdlV1iQvCYHpMOHDvDdgs6xJfL0zK0UWKmzLEq51X
+ Khp60fiJsEvsQWF61n0j9ZFpYHgZwzjHaa2kTzHLgqq4drsjll7rx0twRSLcq8s1Y0yoPwF0F2brNfcs
+ GxHAtghrxH1y4DdNeW4qhNiMpizwYeYdWG11M5+ZhIYnBaKno4gAegBbVk/RDIWnOrlyHZFVHHf1hZVm
+ hcIN4DF+YixIoqF6wOd3GmBrK+OnOIqHVbTK3u+6+kaIcHD2hIQKm/rvFa0VW+TeIDnnaCFXhviZE0M3
+ jDfZ+IscVvCZ6eSXhVYRQvrUaqUj3g8FFqNYb4zxLNF0wbcA7FWrrmX+TpQIyZb/ALiWkQQs8MwUuA7E
+ T3Jj5YBM5LVRLO4BkZcXqG0FQa4/EuQsVYKX0lcuybQL6tK+bK9oLqQipSdSuPvxOzCyLw8ePqDlV2BU
+ XK/F4ZewALGlnDXjpMGJuzR1rdY6QG/5kacMPHTkuCOqtzbdj36ZwENzSXq19oT1CRbHmEuglpZXWWDZ
+ Sm1SvMpEPK1hr4+ooRpjSLCIU0PUSvSO7jSN1NS5QAOu0wHK9lRRR4XRMCuSMCxZaljFqM77RYF9cSym
+ zHFy7t6wS6LnR0iG27iPXtA1CCBun1lu2FdtRwgMkwChSPtT1jcBjMAFzL4ch1iG6pWhYoHC3uJYddKi
+ LIDKnHYgaxHRtFlSuTJ7kbFMMowSiorcq48Rmykttc1nPG4A7203pw+USGybAL6sLHhttUHuwWnfA2em
+ IOoeoX2aWmDfXmAwolsg4KMUdSr5iA9Eq65q62574lFShL4OD0JWGuxs9HXpBeO4QhtpCNdM2xctSikt
+ WS+RzeZeGMeVS1a1fk4iBK6FFixrk4fSPG2GjoM2jrgjQ7Xm/jmOPKKVa3v36czLVXh88nrsglxC98TA
+ GwBb0/8AZbprteKTZ87ljWJhHKBTUEzImOi/b0iaBXEVm3pGImze6lMx6bbyDv0jAJ49Q3cg4GihzFKo
+ DINONr7zDZGoN/WGKOWA2E2ug6QBqC2iNL34xBhoRo0bxllMMqgVL8EVKiKKbOkce5VtLxzzfmGrjBiW
+ i0eUPZ71BUAqsAGNY7ERfKAwJ3efHMcVFWKKR8v5jCgLnmOSnGYG8htVs936mPg8gUi3jmt9yKI5sbFl
+ 4S614zBVQObSw46P/HTKJmqro9usaDN9IS4y6iCmbXaa6Q8XIAd3FWV4PESLF3DlK4eU1MGgBy4Nnp9S
+ hhgY7Dt+dzKpBhFodefSBojUhVCx8cQKMGEZaenTqsKLKEjQXr3feY0CLqtXpz4gAKmcAPB1gGo3CQnv
+ AVhZoe6MlorA0dT3lHTnOKjUFFUVD38doq1rDosdVLd+5VPtLgq7YPMXVF+kUajvdvbtE0sGkdQWJYOw
+ lO5euxNi64irowvDuIQlOhcUVg0YZcS4ripc2ZZnliCdtQOcYEvw3MnSVAtjbyqYBDQzbL1tciuJfcAd
+ G4oQpV2vLxULpgwiU75pJQjiQb+YSi2VoZqMd6vB2lTmeWtDuDTAQoBkqsWEQHUmbq3XpFzKs2ylU48k
+ FUBeWnrqIrGQ4gllc23j4YC4TK4L0xhLzEQZ6jA69nqS2vVTQ49WIkjtG1pprzuAMzy0lM06XyXLxsU1
+ Ch1Fqr5lVOO3XEK/hIDuwIIFNaFyrs3dZGzJLWWg8BGhB+td4gNBRpTeFKvkuIQwSHybv0CIJEWIl1nK
+ uYYGoDmV8Ot7TtB0EFKu64/yXtAtBr2lq9AdYCAkFDFBogpOTFLutFxb2l21Xy/iJ3KwKA9RMj3Ibd4G
+ gsFA5Bq+ixUIl6X5SGukCcAwhE2XgYlJjW2ka3vvcN/pejO3MQLAcZ56wq6hc92aUKXnMRsaUatlAiAS
+ 7rIptrMXDxKgBcPeBQqkLeAoMP8AXABbOAKPdxBAgtKtK4t17YiLzgpVQX9y7QVRcjWvF37wCKQ3VAiV
+ 5zGBEatTxn8ylFhpdI8losvC75jwsNqaI3h2fEVk0u6m7xRjiVdNqqF+le06soLLdl6PXrERoVxQ2KZy
+ 8csWgthb+ZwcFPTm6ekoAA0ILQaLfxG2swsbyK3Wv4hJLlvNq3bmYA8ABlHnxUBSlUFyzRgOgfczHabN
+ Ol8Fx2w0WLfTfM5TrBN33A+2JlZfXk7Yo6laD8S2alstz2IFDaM9n7hKW9ELV0H6mVUAWDdmssVu2vGH
+ zFgclIN56QgrCWhcyr2WdYl9BjI/iKgY07lLeoSwWlvpCLGXNQ+XxGoYzN1auXua8MsUKvIFdZlAcZLz
+ 88wytB1HEE2VpbzuBFhDhhtcxIsjNrPZfWECw2XyO5lydOvaNISrBrpDAuu86COhymJd/FSYEMEgWPN5
+ X3lilNZDPpKQEOO3b/ZUgOZHVOz/AGJndqxVGhToxcEKiUqni7r6YMNnLap0F8fuHDJUjRZYCcyicOk2
+ Homx6cXCGs7Gi9+PqIliyjwbZlReI6cHsSgH4aCDwrfivaBlQBaQDjRbuFVatgUjyuT+YCHGLhZ6y8sU
+ 2ZvmMAG4EbLDMWtgmOCiKTZmBNMF93L4Irbc7i2lpyRk4BAbXpqUee1EzxatufE6hPKNtl80YiSruCUi
+ BYGr7fmVSqywmhhpcvOdyi1UqmSzp5JU3JBatyiv1GwsG2jMPdKG9Qp8ynG1KnkbPg1FRZFwFWAAXTR3
+ u5amJvdzHruuQDlp6pXgZYooQIJAUdNhpNjMIG5TQFr5Nl8whRQpXAFEC+Jfd+3WCbRYe5yxqgDFWKe6
+ keIi0ji3Qe3vcsEsKxHi9+kvutYVaE4+WV7WI2Of8lQvHKjmEJVxE2cvZjjlIBeOMEEQ6GFYOa2tStNO
+ FC61TuYz0hHkBSNr6fv2gJ7aKHjXviCAcjBUUo6oMF+TdfmEdoKt2EYwYzal8Y49JSIzr0OspoSm69Yo
+ Iu0v34ljLZgBa9rdy4EFYu33mWQatVgj4g8N0P7uLpRdlKB5PSWYMA00G+8WhwKl8XxLAVhrPWAJ0mJU
+ ltHvERgBS21zBKo1tbFLttgz0RZOCIIVOsXAjIHLmAGkCi5W85IkKoFkBFzADW6b3T0pioclpUGNpM/c
+ yikGijpWyPsYurmKfLBmsVFKM95TdFhOX2jCjlomcLdzAIjbj4nAJQBl1vdSmhBKcYTpHTHPFWTIxu7d
+ ZioFdHCeumAlyKQ9+vEA6DYPlhbeuSGYHalWv8lxdN0VQNeeJZJ1TcC4L4xGlSLVohzYnEQRlQXl4KOj
+ hJoHqdIoGgiPjzBGNukxmJZ5FFbX8XLVyD8rEGLvSJc1dlPqCZksRDi8sG3isVdgCvzN015DV65hNryt
+ IPAZjln1inr5byZ1xi4dgfNomM+l2QINNtgYyms2d+SOS0ncp6CAw5b6sGMWtN1+CGORenKxtFfBWiZB
+ bWGJeJK4B+YFKQoVarXmAuGVRRMZThPmHOgbAsHLq9cc6la2Q4jMFbqseVYrrRVQ2TNeweAgL7KQA4q1
+ /u0cQsF4v1mHFF0hvW4sJYkkbHm7xk6QWAQlEta1ZdYvGGKiXaVQ6GHORlQEu1MTZpgqo1MmvW1zvEpH
+ PhLZ0Rq75xAXsuK2jduYorDFLK0gZ67mjMIC9wyd5SmDmsNY1ztxzUACvYqld1EaUlsFZekAw1cxB6+Z
+ yrF1o6f3WDKtHeJCG3GafeJlzPYDxjeMQgKkU2PNvFzEumaGU1HoEc03T2MyuosKJDrf4gY6FhVTzWLO
+ nWFKteC6jitAaVyxy7QtwtxarB4iPVIPDhhqhk5FYlKRpYKHM4mklkM5RKtz4gutAtdysRqYot7RLSIp
+ TtXtLlijkT4ijrhNl0RsIxhUiQXOutRAKdGWWWh8AKL2L07JE14iJSzizMHFP2iDrbubBHacOsVLjVC6
+ F1joFnIll5aSuPiWtBnKH1MIrNq//JWh5XCqjWzvEkpNCjZY0uYhtVwQALS48zcwMscRHPPEVjbFKCvL
+ 0ZjAy4FZ6NnyQQeFAD8NXkeosCrtd7o+nESESSRl3eL65lgtU4Xpxtlt7fC8V1uWgpiv4TJRV1YnXXUq
+ Acj3+0tAVKK51RxqIXEKYpcDfM12f23/AIVMR3QH6v8AkAJzVHrhfgiiVIw7Q2Gr5mHTlC1wa+JkqBu2
+ qE331FX3t1EYVCwop77isnAQRLMmzEbBBxfVWX4mUGuqaMNa/cQTSVOEvD6mY+oGxrErYAdv+ymRDBTc
+ yLLg2AlNHvMCztUqHaq3qUsQCNVlwWC/ET2rUAC+m1exBEWR7bFnskq1OjaXeVTV1t6hCRa5uYemfibU
+ xXwi/EUKJMPeXcIDNKE0OPVdSgEVE0iNV3F95QiPEYpz4uvcYC46nGMx1mtKKdlPPJETDuvAert+YEa0
+ OVzh/wBlIWNUbAM13M+8SoIClAu+QXxlzLLCCwIavO6cpBG3GG6rZHs4mDsC1sK66fWIUiWKXSrVOwag
+ nvmB8HfsxNxaxOEOUujZiF52IW1dagk87PzqCKVHOb2LlVzcE/MjZ4WWo9THvEXFS2Ad1wlVGH8rCnq3
+ 4gNGcgl9sL5gisIvaLkV16uxlOzwg2+kXNIOK7/+QRutpUv1jVKtKgFs/ShekUIwAUhEAWPbPl6S+Fjp
+ CkFhxnGdR/SHLd4ipDQxiLOw3ReZltjynrW9nc6y06RsgGtOHrvctUBKJTfjh4iBwWy6cHpElKqwvTPL
+ EkjqKyu+8CoVeWOqs2Fe0YgTXFhnrEeSgrbj+O8bCgQOaee34qD34FPNPF9YH2XGo9TSkVlwygg85Vt5
+ q+uI4SjTVLwNl8JfrHuF2UThO3eGDxug2viGpqNF2GtnXxAkeEQQTvnpv0gqbLi2HD67vvFGWdrst3cr
+ sZuxu9+0HgT6wb92VW4BpBze78S3uTVSlC/zAsaSywwUcS/VcCT6hNzyD7QJSYTugu9mIrFtf3tx8zHQ
+ TOo8/Uo7t6/8pmaBiTgcNv8AhEICzBSA37kV3gsnLke+pfYnCKW23+uBHp5K2btd/wBUSqoIbQHfc8RS
+ lwKtp0vWHiXEIXhXKwJZB2sd61Bsk60qAnIQ1WFXnjPMbY1hS83lxsoxzmDYSNGXYUFmTV5ivxfOLdhp
+ zpMkMnSmWmcnJ0H+yqHTQg1zXfpKFRia45HOLuILIoC0w4eKin723qHWWYNdkSKdKuJ7RYL109BqWFgv
+ RbE36wH+WWzko+Q92CXbQtl6TZLG6tfRnR5u45z7sep0m8wWzIZVC4U7T9j6RqWLTnlWI3+LarB3NI83
+ Vyq8ShAJTFpNPox8LShQb4UZf8YUavNlfSQ9IKkUbbGkPeApAIYLcd39RzKOsie8fxl2dta81BFq3UHr
+ R+YLl26WvVz8ysoQ1NbDPZv0gNcPW38j7wBX1i5Q+iCdBMvUs9oBXB4Ds/uqAgolvk18Y9JXsx23AuGz
+ lHN9YjWDHFl3cAeId3z1iBbVl7csxoBiAj4IyrtjODChu87m/UZEgHpHIHcFeZswKjYxzbj331iZjBFa
+ /CPThjvkODvesRuCOxMPDnYRKltmZJ3iBQuI6wmpYAR1AA9OkF0Kr7gDRt+4rQABWimbL5iT2SkeZi6J
+ iYF5xKRRAJdI9b6QgbV2lh06D8QBZbSCA6ssrqNnaIUpegcPdPK1XMBtcxTg/HmITyU3dvKvHgh3P1M1
+ 1p4Pg8dIjdWS3pAAaXcuzrXrBbv3amkp0yQMhx3IDBKDVIxilAbeUKHu3Hes+waA/wBjbEq4zS/mUVut
+ CV7KxwjHAP6iwCFDkW+NN8RE4zVbp6BFeW6p+pS7pFNkL+eM+D3gC2HllbeYq4VbaLGlvijMYjWK2Q14
+ 6D3lpCzbZAUheC+X2llcCMUAUw+Zage5b5tzGBkDFq7s+KmUb5Rulag4XLzcp0RNVXytc4K9WItYbVab
+ /ZKRUCc2W8jiPGgaxTdrc660YYypJM5BXFOn0+YifkIFDBjF1LggSrRY9Gz/ANlAIAQCp0wBBgAUAKHt
+ BKBOlbmKN4MZK1jt9wCyjwVVL3zdekDYdDaFZjw/EEtkuVCrzG6uNpvcGEF1KDxMlJrxES4joD1DVZau
+ FSpFQ56ZHfU6S00ulSetAtO+JQAAa+da+IQsEklnhRw8dJiUWvC97hwvIn/LxirbU8TKkFNtL5K9eDmo
+ FReekq7zMj0u30f9l3/yomkuLyafhlBDGjI5E6CB6yjLCUC/kyD7hKe2sIoeDzZ3gggUFe9K58Z+5eTN
+ DA9Tft+YLo+8L7FdHNczOn6Q0O16g2VjQWx4wE3x4irWKV5zompobUvEsBgWweO/+QMC6I4GOKBXClvv
+ MZymXV6eJhJdGPU/DiUI3J5dEhwbpQu+N+8oLAErYPV7QOkqlMZlanDuIcTHNrGRCeznMK57YhV2hAJ5
+ l3bKwSprp+ozLKuCEC4SKtgKnbXF/Uciwb1GGFYa+YaCLLwGt+viLpgNsJ8iN9kbqNmiNYgdLscaMamc
+ UQXtw+SWKSJmLdaW0eJaXfBRCnLcvDlZsfXWUCo5Qte0WIiPX/UUK41RuutXCry9KpzllkyLnsxqAb/o
+ N/URyvH9yy4fAL9odwlRPRzy9Ya5r+bMDFypXfqz8f6gu2yXugx53MGQ0Le9CHO4K5eEbG6NV1NHqwzY
+ WjoOiQF6CurfmVWcb6MsQcQdArar9olDIbFMFgCZLgvt68SkjVVpUbfQ+ZuWwxZCoX1iGcEzQyUG2JWW
+ y9VLaWdD7luGZEXIKotyAZIaHAG1q65ro3CUC6pXTvPmAaC+Fz6y5eO/oiXxA7FYBIZA6t12InxxxQdB
+ Wj6gbFuj7+YSXsjX7BBDDauPoJFcQzyRAtXQ9mJgAymnQfel9KivBFJyaf7hJRslc6KhMI7IyB4AtUyD
+ rR6gjN99iILThTZ1H/lw2ovQc+ofEC4NjBEoI0jQ9+INjdb6/wDHrRSTYMKntAL5x3iMhfsywXZmVx8E
+ pZDgLYeZaMNXO3n54iZSTRRaegTC8cXsPea8GetQ/gyiBDZRqBISuQyjo+NRUaDaKr1/UOR4Jpd/7KKL
+ JwCviLUVY0Ae8FWITPQGY0bK0sG/L+IG+W8l5gKBit3Pt32xyRG4NjbCqZ42Oqn4jMVLgt1wanNnw3Xz
+ AasOWor3ZZoHAXp64iCOZJivW/xFthiZGAWUG75Dad8QiMnd+4vmhIVGnHPWKoqz02J14mOO6OkbzzC2
+ rdXxRmHRFU+GB7wRioDZgetzkBppFrp1iv1JdYaFgMI01bMqgb9Jdx7hJYWurxyZOIzkbSgbPIfuAPer
+ UPiiLkZcqv3H/KItkDSFMoV5t2X0SJhIQNKTr5gK7pbpnpCoXgRP3M/oI1XfZ7RbbzQRn+Mb20KPF1T1
+ IDDKIjh6ejfeAUULqzr/AGvSIVneaIZlS1KuTNQhbkBpz/kQCwyEhTDnNfqLWURos11bZhCK8whmg0Yx
+ AqClYUBnSn7jVQAKAprxziICVoArIC06SotMwMJ4Fp2Ez3jp5FbpeEsOhh3ASlmNlb7/ADMohvMDiG4R
+ 0CKtjsba7HX8QGzrBeaa9yyJlygepw+zOg+IX/iCqpIF1kx9TPpDgIbDCyDsUsTdMp/SplaA+uvaAhin
+ lrcBwEehcA29v5O67jkgP8wIau7V03XlIA1E4G32ldozZQVz+oCLKL8n/kvhsm8xY6TmvL1grVLQ5OK5
+ g6JOhE9MsolDJeuvwStMEpsldGCFdvJ9SBqzn8lzH1Diy5y44hoIcUUXySrd6Kfeomvlsa7t1HsoqEKK
+ 933CALEwmww+JQF7WhvD+YikE2+gredMDYwM2o947YuAo9+YqzgtGa3CbUVoqoAC0OVc+YVJVHZ3KLqA
+ 9WZhtbBq0l/EBaUwc53EqOwXnItsVdUy8bl9bGs1inr3lloty1mVjlWJOlJ+ZkaKQLuAK7FpfKDmgNzA
+ gCI4rMRbQc3ZqCpaGLeDiAUAW1n1gNJa9B7dmKxxkhrNjctSlkVllvrD3OBQoFkbCbPPe/8AYCtGOIrd
+ cL6IVUc0v3BNnxMeC3tFBSjopjrAV+cSkrYYLPciK9Vkum1/ydxdbP1CgavIfmokGetflMkZyUc8ALD1
+ gLRQBumzXtAWtDcqApa5gVCgW5HUt9+nGYq3SijUGmBrQtje6tJZdMjk6IzgXJSt2XuWREmqG8KIrhqO
+ RVqxn4hYoDUZqmC5byUCtzNJo4g4LMAizu8xedtoIvQCGW3xDCsxsaANZwNY3i+WKjuAFw6nCwqcmYJh
+ N1xrXiVDpoMoThtjDadLWNXEHmBRz0iTDTQv6KlwdTA0O+MwIKR0rSA7hka4Bomte3pB5JtMfUARFZFL
+ 9GpkWA0GZkxfDAZ8piGNwlqkMYhpUgrSf6XEwYQMOiu8oLTcGee3NeCImc1Wr2zn2IeBo8xL15HTHMuS
+ ukUrWfCU9yX1UOW4db1AFHd075Uo+IVU3BQA/MygNcrdK4uJWo8QCiB4/wCVJgVGLn87OiAqHPNw5l+n
+ +ImaqmaPyEu3DJ7yuJRw2dZqNReGAtsam0/MRUxCujm3PpqAWxWhaOSjNmzmD9jm8qRHk4NcxIX1NfoZ
+ U8r6RgGyZDddpmaA2fGJYKQUjefELKKJ1zEN3iqxUBkyopndcTq/O+uIhoEp8RGMtqdVa+szBCnqXU3U
+ iuU0QrSlPZJTlB1WoKXcipvZjFlqDWbzjnMrLys4n3xAMPUsfRl4NG2qnjfrCC6FlrmqD2iK7Wii1wWu
+ YirM6iQgGcSD6DKYcl7KNtYcQtsRpK1MZxuXWHObvxGHC0QTfmClun9sG+8F2fMXWQ22PHeDZJAMYavm
+ Ua7lofiK3RjeH6j2PUCjbmqiN5yUVjx2wRBnBvYHhYtfFJQRhiAb7X5jYLYoEL/UdxMFQWs1Q3w58JFr
+ MLhUAuL136Q4taqFqXlrzLEoRzgcYcblRsjez0vXpGZG7Vgbhbd52FHBjOXnzKEZKICrSZfGd+IJmIEa
+ CghVgk0UZDe/EDNJgMOOHuXBByWLIqUs7GIvUIBN8OGPmNIoZK5Gi8Ny7KDatawl9qlvZYViutGq3uWZ
+ lyrQ5qzL5YyAobWTlbsXtjtDXqE1Qrwn1KJLVvbpor0rEx+VVbdeIHWAEctbrBiJr0DeL86mA8ix91IF
+ szen8XfMaWo5BVDkoay8bgJ5i6RbnaVh1puWaXaiHhQN3d1mZIq83P2vlgilbDv6lr7wWNCS3bFlbqwR
+ 7wX6LQNwvDfJeB6xFUwVgKIuQvcEMdJ1IdnFsRBre9/s72QUE1FN7uPE3jMuj21ra7EVRmFJbzaQWK2g
+ ttq/+ossmxnTpvXMeOhdvslPBGcp8XEQib+4H8QGHVtU+B+YuBUBUq6sWKSBotVV8VB2dRD0uGUCyavg
+ cX3V8TD2DXC8YMHgiQxBwhOAGrObig3N3KDneYWz2yMezBYAGxajnMGNiCm1bcEoEbkc/NRdpjgKr5YR
+ UBBIPcb4lhlWbXUtpot0eIem/WINByjv41MOZ+iJgpmcWpQXgcCqD13BCqhQLqoKqsRq5mDyhtnjLBl8
+ P/tcSxoANg+iS0o26297llUKtFVW/MvuxLzNQlBnIiV7xYeMOa+jTAwlNl/3KGMoqrY48yqrkLHe8Xce
+ RWBXXHWPCFJM8L4mVKSaHvK88IuEpMsX7e0MATXgVRmIq+VEOOviCuLA1bCpNFj2qpdIo6R2fqVBLyo1
+ PUZml9T9RTCBymntT8QgGMQaUPHlx5hjBoJeO9651qHKBTAJl8uNVFCCi7QeehVVTAOY2VA2me+9pdtL
+ trkbhcmVju+YZLpVFcW3GaQBCmgy14jNlaDdlm9Q1lSbLbtFFVao4rkXQW6iBwuBTm6TPZirBjmJb6GN
+ QI2WhoEsccWRxhBFRc3ADkv6lGWNKAJqnTnMRpnDe7Q/ZEJWdAoHHHSE2mef0w3H/wAtwGDOo/nZdO8J
+ N+iDH2ccgB07RvrKRawGbS6KbHxFZvJXN53sa45lOxChUu8Qcq8kUbvUUsD5p15TUKKiRMwC/KSo+VdP
+ mMB5ds9yJbBlsxrintm+8wGWWXKTHoC3cI9LOQdHSQWYlO4w9oDWR4fRjUe1z5P5x2ZVQTRWDqlWspZQ
+ Lerct6zm6MUVqi/54gwILLEiACU6S+FYbK0yyC7khBU6ZuhafuJTaFeOqr5JUDZV6LLbfre+nGSU9FMr
+ X2RJSRTgAHqX9TKh8bXy+IqKDXod5okDtjs5z7RDADVerWCwXzStc+Lh2rNlRPSVHAHEBcz4G39RDnM5
+ 9Qv4lYnGLL4gqEPYRQgFvkj5uOUGlLh1IFC1YuN2WrqpCc4hbC9HXEAtnY5JZrc2qzEeVHaJADALXLiM
+ a/T/AGXmgzaygLrAMgQA2pT1gxARKtrHa4syQlbDGjcoNpyRGuOY8CBABTcGtjL1ZbUq+/7Im6Uaz/kU
+ NqALWi6xW4QZKu07q3cS7ldfBv5hBxlBvkyQEtmTrMtZrozw/usspzVpKp+U5IqBFBRViU573KalBf2m
+ oFLbRXkdY1uCxQlrw972fURQKlpkatHOZbXe+G1UWSGFdgcXfeZoUAM0FXfvfuRSbYaTpn5l40u6zw1F
+ UqzWdXn1PmCI4Bdh0h4AJbloSnD7wMSAAGcaG+Su0qlaFAVDu98R1HBG7tvLLDm+vDkgV/NmOGAUiD6S
+ zY9pzvxgWjjcOzgZ55yPqGxJA7bdgcFpVwS+HNg5t9y+JiiY1gCuxXvKoe893EbXKsre7luDY/RBFgcO
+ l0Y4T5ltWXLVns0kPMAVHb7Oqcjq5gzfVKD2dr2esIwLmXUfNwOTDFVXeh7miVfeU5g46GrHPM2A0FdR
+ KJHrVH6JZSKAxfL1jRaLf7DADnAfL9xGlIkpu5rOYNJaFkM4VS4lE7K/IJYb9rYwRA5+xmVA3vCUYhdg
+ xbYFoWPaXyhqtnsyQEBPtguxchj5hB1JvFjkXjmCpcQAVzOZivSUkkIbFeJgerVK4uJMyveAr8fcXHhS
+ gOKY9eiyrhtBSzS+wuO3e2+0yAb0pd+sDveTjMYy27ykRgsWaKZkoAutWamTZEPbMBlqhTpX9XFWIF2D
+ bWYYbX6SixY1yn0wOjbs/JGoRz0EO+ok5oM4KXdQ5ohTveXMadqqG75si3smphcYpqQvC1LxUtY1iMma
+ LVO/aGOsbjFp655hjLnh+pbXcdA/ECFWYK5GufOpheijUmOsVVWHFZqi9l1rEyKWVDwOiRD+BqKAdns3
+ EUUdRQvOkedwVNSXQayY+YEsODYqoB0uFTTyOJaRLxZRZ+ehHeJRKTHuSi9QCi7G/TW2UBymNN3Zbt3D
+ D5bSVXavmPiqkGuIdtdyMQQb0W9JcvDA7953oV3TcoLR29Wq/EdoypMuaqUiJSdYF2OkiaAuZ4WvpYMZ
+ C2toKxg37xQQiGbdGN0lW+7G4tXkWL0CYZwj5wxWLSb8xQ1Zw9O0pQWbH4cQ6OisiCY7pmK/halC8C+R
+ MnRmq3wJs7C+7LDBl3TsdWIFf2dulLPInEXaC1qu9gLTmsQEsWasavS99oLxBjOjhevPiInFVWMGhqz6
+ TICFtPOvNOpyt4P1HJVSxZj2gxJWF5gLpk894raNUnfS0yDYf3/aLaV/piOWiPNRUhpYWw6SsXKKHdff
+ /UJape3sRcUqyc9LzLE78mndWFQe8PKK/mWC9LRRjZd7h+cbyWrXpggMV21KwlTSHALXvLuW7iqEN8ly
+ jmXMdzOoamwbpzDOcXTcKGSHKvzL+gHUvPJ7RPZqCgP3EspB25W9wR7Cxsa+twerieLxLqXcuWuCm1xe
+ fqK0w8O3/sFQQXiLmChiNdzUIUtooCu+0u7IoSnefqU8lUsB4iNnAqCmnce35a4Qr5JivoQ7CVYefiDH
+ tnvcQKoN0BTP1L1NywiWXg8Ia9YRnVQ2ci0Pbo9Iglwzt2B8RTZQKrAUW14x6ym0oeAtHpn1jAbbLLd8
+ 4NSnUbEabS62uYJiBhCWcX1c57RLN2p7vfuyzsm/Kwl0ZogwuWnsTSjiVBypV6WQw+Fb0yJ9wA5il41C
+ ZI2HvUwpAsEb4Ikg2iPJF9oZ8sLNwVgVtdtlNaMmzrP/AD7H/lwPV5P8iumw/GK/WCoMDeBCELStvmEi
+ gXMqGlttplThqEQQDTsPABEOVVSl13pKGoIEgFvXO9uZczTQlF9TxTm4sLiG1jO3Bi3cmmsX8zDB1a2k
+ RamtbYx8oQzPdnyhZDYhq2fAQOOeFPhfxPICD9RFN2iheLZ01cLJwR5T9CUvd39rLYShRfaI1teZblbl
+ bTzNwuvlIFVQq1rOmIMqY5BtzyeKjUpOoUNYK5ccQYVC4YosTVY6QI9XGl5RPmLCvRTbK+YuFImEBp7G
+ 6lusW0pWXPEcQFe39xdiukh8bi03upMnGeYLWw5b1KclXziNUnu6IrDU8LA4klIq838xYY3IEfmDM5d7
+ vUwzHoMhkr49YCsAF29ygtAOr/UR2sasSAKWFd5mWae2V9sEKBUb5L0lAWDqoZn05LyHtivzKeC9N5m6
+ 1+r9RvWHz/iVYC8IESupEUVw5bloxA48HWJlvRFiem8NiB8yfqL8CtugqH3NuAoDN/iI7qBl7Lqqd6Jh
+ qVWiLdfl4qbkRU67r5y7iGgbdF1WjGs/c0HIGga30MQ0ttpozWMkRAtaoXlMvxEjGzRTd1n6lbVYDq1G
+ T0hABtSbt259DiIHIBd2h+MmQ4lSqUuoaqtD1ZTGgM9b3+YuO8MsDKuKcOZswaABHrY4gwGZSMq74sGG
+ eqiMvtSv2CZGN7r8MJogcKm/TEpACM0i6vpn4hXYMKWwFvYKxuoHSE8X/wAZQKG6xzz6w0sV6dEfmHSO
+ PuKpbmsZiKhvceDHdLuWaLlt9ZUzxTo6WygteekAVlUoTTzDi9Mpwcd9yzn8oqCtrrtEYK0eJQjnd1rw
+ ysOCgouM1ZKaoAVMKqqHpKIcrF9EtXnp73R9JZ6bcd77RA9OMjycR+DZAN9564JdSQUAtndVUtp60Kz1
+ y7xBXnQSe5UPKA6A+EJXVg4afss+YQDCrIA23riKu1ddSzyDm0HsQxCNAzrbyNl3kIOIz9mAvzLNFF6h
+ IoTRD1Ex/eYuTDA0Jeoi7t3bcAyI4u3CiFFC/CMlguuk8fFTHWZZQDnRBIN7aub1cpdZhpVj9xWpoCqt
+ FHMuyCnn8DBi7fS0/ZMtNXSn2SgsI8CfqXVkC39VgbCnJEU8amkEWzut4dRY4FCIC87iCZoRXTefxAoo
+ u7TnrAShnOLF5KFCja6MQEAFldGMAbcdx4P7rEdsyWbOKT8xhLObnL6altDULUchlA8RcYRxh1wVdQlG
+ rQEqh23mUO4lgqOmCEEWZhrvEXyUK6gppKUVm4JaGYaqvJfFXggE7yC7sy/xGaCm8034M4DVnGvkZn09
+ eHPzqUuBpYasEuvWu8cY0zfgaojgojdkx1N/iIbXf+YBUIxVuICBmG4Xg/PpEeEYWzr6fmLeDAaJZTLd
+ 0p03xmIePYAJkxecysVRoQdGyluudXRKCsPOZ3rHvEw2AWUDfrxXzBgGM5Wn3uVlMBA0S6uuLryMJVuV
+ m2Hg3E0Ao1BtnUOK3mGBUBilW14mCU1d/iN2rjIgJIB1Kxfe+zLBzzAhlqpSelhaB0r+DMDDVHJnKnO+
+ kuSBupp8yoVgQrYdwsW3ZprSHn/KD1hsQyo3VG7gMmRFcqzKva8JaL+oqYrFsO9czQCgwe/EaCkvuU00
+ McNXv8mc7YwR12PpDh36LYbWu4Eg1QehxikKzGIhZ15iK/ojReTJfepUyaGAumERiUKtRSgPo4hVhjLd
+ 80j9gKy03WkGXdMor8jAhaFY8Qvp1NUp1rpBFLYl7HMFjKxvv/sVKYCeHIQ1W4CqLZzNjuqCQolmxfPm
+ G2zij71A+aNiid27teuIAEgXYtrL6zYdHvcupSwQVnXhgjHDh5gzUhdORs9ZjMo2rayNMQFZ1PpKYweU
+ tlCPNJpmfjOEz78y66RrDafmOK6WpzuMFvtDN/c1hoNFTiWvGvUlzAl+P5lFC84MfzE09V1179pd3X9w
+ RQSjhHiKpbel9KpXzMLYawv4EwQNloZnDlayPSLxClJrvVq/iVQurCh4NYdbJdLNq/GGJbLQ2oNAYsTe
+ YuCChKN7QfzFJhxleb3MPA4FfJj3hIXQswg8fqJQbIUAK1fBAKlW0e46gQ4RtiG+uCUKETiL1dFR7IC1
+ Qt2X1HXZgesA/wBUqFgpGVdDZXPFd4HErbu3lv0gHWzSbhWZUYrDHbA6OveA5ON1j1hsHlEU5yjdSzx+
+ Sr6i+oiqyPyxXK+F7kYxUjsW8UMxt2gC9WWJkjTi4eF9rzcV4aLDfGBmtLsw8wNyVdEQqpGWWhdUhv8A
+ EsKtRS0U/JNQx0VIa6cFrBr1eo6xk14PiVNGUKkcuepBRJxVfgU+jG9jOFP1DQ4br92J1VLsPzFpghjL
+ gaeagm6Go1WX2y0Ld13zRj7hAQ4iLt/VwLMWSqt79YrqjP2BTFZgXK3wbIFGIwipflD8SujrXKnWksIN
+ I9AiyWh6xLwEo7jqYRastq9bI8FXNR8z6jZS9V/gfKJz/pVhec36Zga6MZTxZcx1Hq1fL6lDfMy6NGZR
+ YHgAxUWw0cP+nzAqYKbKrPrLJtlXAB24hoU2kH0mSdDTU9WK4g8CB7QlqkIq7UpBiKvW3xE47uI/VR7j
+ qik/c+aJH7qKosnof7ESBWhF88woycqFrpnrAAgrWQ9XUQ2OdoH2gIip/oOIWDkzXr2S5LD/AAshoSOB
+ E8kyLgRFnbHrDdTjF8ZmCwimUPPXp7ylHot6t5jwVuB+UuOHR1ZjoiejEkiqxA7Bg9oMJLRiPW889IxW
+ BilmFBp3g3uVwi4dURdJfb2hZ0sV10dfEw1DZSjL+uK9t92WKQGsajrQuap95gm9wo+1H5ggEaoH33FX
+ a9UdHgO5FvesY7yrUjjZBwrl1vEWvtclWUGT2gIXfLWzzDF5CCOl5uCBQGxuX4Z6TL6tWbCZHtyesA8S
+ sX3CjCqN0neZClGsFXtUxN0jTvpj7Yh0PkWXowGi59JRmcBQIoMbx4gqteLoIopAwtmnLsSzo5isCCLs
+ tlPmzfWWMQtoYD0lnaHJAfIRNEDCpQ6WkaAUHIbntE5qF6Bcq1f1qfmWK6JYL+YnFxdE8cPp0gBg2ip/
+ 4ksuPtGwfJdUDcSBQhZdCN7MPxLcQQHZu4+FzWCUO8bvWApRAkszoKqN9YJvmBGYe0zQFfUOYumjYI6E
+ qqdN0qQLhMFK9KYXGGCyg7LONUaVvrmy/SM9NJmz1xAaGWgAaeVYgwTBH+veCVMvAFzGP6tPmZ0eaDQG
+ S2AmyZDDda7uvxdR6tHKgN3pIp9kX6qCPdBPqWnY9PslGwVoIGrsYImUaAXTG6Q7qJXb/gprHhha0UkX
+ umS2j1beHUU47o/qgMF6UW+JkQzGS/USUAY6fnMELQrdDompkikp1NI7EbqU7p0kUI8gAzfO3OYngr1k
+ lCIoFF3sYpnDe6uggJ3dtFmZYnlL/EQlyjw/UABuRhCr8ENwJiQL48nmMKF8gFVKCBQ3CaJVjEpGRp+4
+ ooB5EqsZJakq7R/qIBHCR1YyxDkq4gN86YBauuuYBjSYnWVQd4MQjTQ7Jn4gMrZHkH8MwqOq2iGopVe0
+ /UAxOga+4Pt8WmketygwGvVhzW9QxSlPe4vGVhC2qurZbcP9mIFwtc8vEts0AXDfN1E2Axut0eK6TE4M
+ YBMec3zBOTlBRldbjgtkKky/mJs3usXceB3X0gECHW2L3cDpP9cxGjbdFNk/WgPxEbf1itKp3lpIC3NP
+ r0QqRVr7lujfIVdPX9RGkJQUV023Q7lxR+dp7W5fQl5YTdVlgIOKayzqJcC8y9iltKj4HrKPdCCgXktD
+ S9Yl28JpmGtGk4i4amDoutkoxYZtV8QUXJ4Kj3lLkdtN4vcwIZajm/4RZxiELOMsvd6wKSm1XLEaU7Cf
+ 5HHlwIoOOen3CeUEXA9hy+cR0B7xa8mX3lIujAZ+FqwRUjq/dQdAJ2/eMgdAgOPEuJFqwPoKlPzKXGdz
+ 9xjPjT+JvJmQi9NkXBMFQbOitb6yjrC0QtGLu+WCFZXw/MykdKmybwuPzAAUHFLMkBXLPm4NWWuEZ9Ig
+ EKFm1bySnKt4M+iYFf0ukFJo4gx8gWifIjK83JHSW45+0AWQoOV1KgOuIXl00NtXfzGqhqtsq/8AYNbv
+ N2YlCzyqqPHjiWAaikWzxGWQMvHPaDCC9FW10xFm7JdnuxLTJzCp9obVEwjfDvgxUFBlDkQ9WBBTdq9g
+ IdVUIGEXe+fWIRaFZfJk+pfHGD8RUF1eYLv0JxU8Xiutc+sqDYOk2nEuuIgWqRUmGhlXxFSWIQLwFDfW
+ tzCxVuLLgKpeuKigvjkiUeHvxHJigqmUc9E+Yn7ll5uDZt4PqUpAaQr4KekqRzJM3eZgUBhncU33b5h7
+ 1KUVsH7joICMMZurlo5Dl1HfDRAIxAp3iHMdqYDRE4TcWHp9bFTJ0nBa/uAbK1qw7WdtvYifB0rYOnHp
+ AIZghYUU+cSytUaWKYtoOzFkVcHpCBK1NMB5lm38QCqEd4zLoV3lhiQsHFpfrDw/c9G3hq668MXNaCwA
+ KLC7VdvWLNtXAIVdA/MDIwkLCqtLPBB5wQiWqrq++/Iw2uUzY2H1PzDIsRL1Y/7MpyUBdOD2MQUFaXWK
+ 5uoTqsBsgZ3jLxzLGusAZe24N+mgvsS9ektKAzuMHRZ/P/s0eICiR5vMOmg54xMeauIc5rM16JW+agbI
+ AEujr8upRYEcoBfo+YVKbeXLcDEUonZulGLVY4RHswfJnf8AbENIeD+JVh3cg/EpFF6/YIYKhBVBEsbl
+ vXAKxfMvCENdZhqfdQjBBRFthWNx6vV6HvtCcBlrLLUMIC9YbNj9StFYgoWANntmIMfVajurXYGqIoRV
+ m8PdihaEAhewgX5GGHGKUKPnCx4BBw0Htgi4daowe8Clgly4YLsH0G7MeI/BAWU368xUcItjxMAIB6MH
+ JACH18MuI88pS8yhxAVAOcy38V/Klief37pbNgA21zljTV2mmtW6jPqrBWz81Ho83Lqv3FUlmFKiY1XQ
+ X/5MRxTXWCrHIfqMcZ/FL0umx8RGLj8oVnQQKpYYcVFEbNNcJLAHb6Iw0WyRYr2P2mLeRXtLvdZ1MIq3
+ WfxKv0iO0v5zBNtE7jf4hhCiaxxx8Rnx0RiWt/jYhLBmsh5dfcbdqTk4nJeRaM1zh/cTJMXGh2V/ZmUj
+ LG+jCAc4d6lDitVz7R8szJL6gFNNdOmba5JwZX5K4qO02VOwLuMwGqF3VB2mOd0mAo83zLBq1XxdPwyh
+ GTJOVNfFkAQYowXpPcmMtBZtQAlF7cWPQ3cBngjWOOPv4irDWryQBYBkvCdJlAjQYsmHpgr0IFFSniKl
+ V0gO79IoAMifcpBsKAHL0/tRUFi0dD17veEVqs/5y41dGFyNwms7esQYNy7jhestdsVHx+JgSf8AgioG
+ g+tzViq0Q3qs961OIALKsXeXUBocAHoecTCg4AFV6EQgCOxD8cyxQUZ1jUHinowuSAStekAOMGSW5cUi
+ NAcX8QI+3BTb1tgmbr723LkXTSUfMVzjR91uzvMAROXK093HHEUAE3W8rHxBAgBZcDM4ueOssB2doy7a
+ kZ4OfhgVfJwy674IbLQ6w9szlhgiaM5QaKjBWVni2XkfiyB2kFcKsXjPZha4xue0Klm8UvzAFb6gN48c
+ S+lDxr0OXvGcbSWvzL5Uk1dZq4paImj90BlglgFhzUPOHCrXbcV9YqNGzeogRWk7TWFbeYhQNnRsjyBg
+ uN+lwMKOVwt7+kd9QOfVFwAsr2JXGZR0npFQzDQ3c9Ym/ZhJq3WBmm2LxdVBEt7630howWBoxr8zMcKn
+ kiAtSKQ7OPeKAWLQwOnd7Q18LnLdWNVV7ImtIukKXa57QaeCtNGdBzEK2VkC2u6OgaqCwJLRVGOxuVoc
+ G0c3zLuaHJVQUAcQ9wbXEG5DRVDJfMBE3yXWGrPliB3K2CqbuMoNLlbHj0fhjCMFB7m/iUDhVPjZ+ojj
+ RTpf/mYPkA7g/MBbBh2pdtRsAawtGCWlUOnfzGwNHUL+mNUo7s/EdpRqxloICAJb+A5jGINUKhXpBgpj
+ NY+9xCAOsY56cyvJWiUmCNKC6OXZLu5cAU6AW/QlO2VY+LzW4CWRsr+X9TAcGV6cdCo6MIMvQY3KHcaL
+ ddYXg2QQAuQeBhaAEyGNZzz/AMI6RRQvDePEopk2scPSDWi+CUmVlhSKtxtqx1c2zXPo3LAGreMnl3KX
+ UI0BXy5Y8hapcplru38E3ZyDN4+8+xKC5i/N8bzEL3CD4TMtWGHNc4faPNRRp2wVmFazDG+Ws680VDgZ
+ eSZnh3EFbWpwdIsoEtRQTtHi9W3ggSgBubPO3xFiUaIr0N+rMKOpS15ePmYqGnGbx0mbEcbehaLwmv8A
+ ZyGdZdbbmlJGPEJC8TkGq7GYDKhW1P1K938l/iVGTHJ/UCWl/U4lO0nIVAjgdUPyy+bgx1pmk7ylnOJi
+ 8pz3D9pZRGGw/MbeKuoIF38X/BMem7C/EYwFbkhmOCB6cx14ys7WaKrcZLCSwexYG4QEXNlbxK9q+oSV
+ G1Hp9jlghpQrSO1NLuwrFgVK5JmiIkAO3PSHh3ZFq8is6JbBSq1VLzUBZ7F9oFAKNZo10/Myyas2y0SG
+ 0WX51NLAtFo8Vv6llM7y2elEfQLHKN0iGNPeBKVUB3gU+oQGkNcpj6hoyjKc1ye0Q9AY+z+7zHjKJnIf
+ 31CmIzsvd5+MxKgBKUPhHZUg6DLWLmUE6m/cQcOw8zVniYZFMlseWOEZiwPjMRQwMbXuy+oOgCWhQMu4
+ kw4W++Yq5L3vYmHd+tHT+8FB1Oi8FZZdWYpD5KuBW7jowqhlGYhVEjnjl9dSvYiHLQKeGmaUTRWyj0go
+ aDLXR+I+WSlbXbXWMTYGlUeIN9umUP8AZTS9GtY8Q0fSCvL7OI1/eyRpsqAzECpFaR0n3DxatwmFHvld
+ cVHQckXQ1Wd2vxFaQzCAL45X2IQOEtDld9y+vaGYKCxL3defmGOpbrqWGYxe5h+orrLNtzq+a6zKq9LJ
+ iwpb6Sn89K/2ZljVkvmtvwTCxAjie4GDzmWWvmg+de0wm0FpTyzFcM01L1uD6X3hK21vcYSvvPFypgpy
+ Dg6soxWpFa2nAeJazki9Rs/USwuziEbt8wJYFXDQeYH2gi6zmDR4be5FmcQ92IUyaHyV+ZTCSBkXPxH2
+ lvss1Gh2f5Z39uwPuUuG4vC6zQ2xsu54MPSBBsEAC692VG7QnXpKxlcBfebXUTspk7wEJ4Brv3XmIE6H
+ pXEyzRM7tmQBFoadZkkgmNLfo27ONkrCnEDRFCMMo1n/ACBNmy3+ZcqjlEsTtn3i1XzmLXOpzXbTjrev
+ 7UExCJLNaKz6KMTlewMAmzwTPvALiCQeazXqfMvA2AfJn+8wGLuzXUYwhyHxjZ8MBtQceePfEPVQxQfW
+ 3MUOWYByelBbF+3oIv0YGXf5P3j2sHYt5vlMI0vpoenmdMlV/wAQVN5IqKVxesuR/ogC+Dpgz66rxBYw
+ gAIWFB6aJkVJrKNsYGLHH0QbLRbnoBlgulGC8h177lWYYDYgJSJYjx4Zg9at2c2e5LMkS9LLgPKyxA1h
+ vPUgdM9W4QqoDfPtBUcJQdBx+ZhCis8Qdc262HI9baiDzguhMDKoyCj+PSWoN7D/AAz81GrO7caF77dz
+ MhRKCW3oLx1YLDDuhGTGtPaKQ3bRY7itvaAACgU086mxpf05fhjntRFFgd2I4QNgOmdwC4Wi65sZkcNB
+ dJ+4q8hTBL1W3vcdwCQ3s6qU6r4bNda6RGXL/eIopDuo/EG2XqkflvUfmMUYcVb8xaGDjNxwUvRf3BSm
+ lEIq0rrf7xOAix6D+4MG8Sqt0MTIxA09Jg2yxdA+/wDJYiKHHH/pFDRvVX6zy/kT8TLDHRB+IhG4AOQv
+ GXLDGedEh6YutyqVLzlYDmuzUriUtZpvWB6cwJaFbIfdSICb+ib4Kxf1KYDwGglVkWHU0SpbO1GvmID2
+ aA+wN+k4uDtdX9k4jlg3ZZk9OOsRYKKQqOa2RqFFpgfMfKwoXPz+YdVer8lY9pSqcl3eHL9QtQnbB4Gq
+ l4vKANPS+lwizY2gPPsmujMpBmHYmK/ukEqww4wMGw5rXh/2W0pJHHDXx9RUA8s+v+/cthYT+sQIjNFP
+ pBSkvukXvd0hk6C0GA3Egl4d94kuoPNHhqjLpuBEuLQmntTBQvgLBWKXLFBhUxYHsxmUsIEErd8RQBcb
+ IZ6wGJTy5fdi3lXdUGR4HOcdOkQxeXBRbrtBa7yolEwg1+JlpAQWDl8wql0XFU1jlIgwqzjNRhSue/5j
+ nwCwvZ1qZY1Sbr4gKobMMOwy5yadeIpkikW6azmrNwNZQc7NX+GL0qS7e8Kc0ekSSWbFdO98HaIcyaIg
+ +ppVy9Lg+tcRQ063VvlYvAC0ODWcHLtjLGiVGzi/DF7izZeRw1A9hF3R6VFxwUwyH1FJU8U4cdY95Crr
+ SblmhC2xLOQc5oZTKg1+ZMyGPUTboOyWTOOp/cyAnqU/MQafkIhViWhYFf7KymSZc4oxA26wG+qKztZR
+ 9D9wmWOrNIWS5d4amsdP+ClM0B8MSMCguND9wrq90kBYSmk4hgvSwVN9vSC11FE9bqVf055mR2T9IgFZ
+ BsKnq3z2ilvSBQnOcZikAgLuZ47tSx004rPvLWR0pL1EEAFxgp54/EEwR0UQ6Y/MvDpMpP4eLz8RF+pg
+ oQwb11duZRMA0sCzD3seYe+F3KP9Sx96U1Kf3/sFFsQDoVUtS+Wo7QOHEtsHFgeiz5goKGEn2ZioYlDG
+ H4zETYMmVzZwdQgxG0tU36xGDYnPZ2+sEvFalbNmHvTh7QE2QKb6m/RgpdUB8jdcpaI4JbfWZmPi2LHv
+ KUuF0S/omWheMynwhaubco+EEFBRG94fEBNZNJHuLPMo5fZCPBd5e8YULm7b5rM1x7hPmoyi1WWFcW8+
+ jLM5TFP0NQtVsvaOq3Yxq1ctmdyixeGXWYNeC2+CAG2rFbpvVc+JbuHmqz2KDsS1dQzQ9YASO9ePQ/cY
+ YDnNXp/dpR4djz/DiA76Y8RbIYc9SIUudWyla8RCGkJRY+MQ+MJnbngz9QtbMKUTpRl9WCI6cWXfmLeH
+ 0n0QTNKqrPWtQmpUm586AmMWLAHsS0Fgo+GfbXpKbKpc6/r/AGyi1LnF/ENHAot61iYNlrWKmWUOhAbz
+ zNMMOJpPKJ+ET+4a766p/MBCrQL9yvAlrZTzqUTyqHBpzF4DaYL4li7mheI+JfGAfmE4AlWyXqeNQ5Q9
+ f6ik2WbR+JaGlYEbim+OWskdCUnz/wASv0H0x/seykAFrDq41Cy3qH0mWfJf4nEN1/azjq1h9sV2l1YC
+ rVf3qfURfQigYgbQGqTvKbMAbF56yzgz0lGgFwqGusEZnYUumtX0jGAhbQ/mOQoG9OGv7bCIFOXhkex0
+ 6w3BLNUqUU4xVQ3+lSAB1WiznLiJBxtN34Z4qKvL74tpRq84mS8jV7a+IJguYVr7HzBiPasIfF0fVGXC
+ oypgx0J7S3d+7/29JntzBpr6YmsDiyXcDqqWmfeVRZuAyOG5TDIGrRB1tuMf1FSo1TPF71AoI0tWJGY7
+ dNdE+5gweonxANgBnte+pRhT2utQJ0Qw5t7pmX/ruOUvHDUt0HoP5qaJ5igh6GIvNgTKCnxcHJAAopl4
+ f8mug2mfklkgdKa/8jqrmsOE4+IjkwkyBKBx9zJDIgrjqwXSDQ+pcoFQt3YPXmXJwcYh2qMLHNku77EH
+ HFLL/B1jLezjtLEWjWOJkwXAFpvPjPMaqbY231tjSqXF0e7LFFGujot6+IQgU2W1zU2TcpQjZ4Wtj/Eu
+ OqFq2ux59JiBGju9YzfaEONqVCsottDl6xEUZrN5WWuIzoodoa5qZUKLrEVcy9GqdxWcheqhArkAZwRv
+ FvVtuuNSstPAZ9UJ7Pmjd4+ialg4tl99yv1DS/mA8r2MEXYHmyDCFu7BuHUZ5pfknO3q/qZbjW2wb5pO
+ 0Qmgj6L+pbHrmW5e/rLICnCfTFKgdx9Tb3zYj3i8pZtsOFv3Js0UahrqFxXNpJ5y+SKbRMXpgRrpeZWE
+ 7wQ0w7Q9AwG+wCPZN8SsJo3gRe2vqYMLKAY79Doe8yuxu2/jx9y4VvUVjp5imTVi3g1HdP5uFWcH6YcL
+ zW2Jcou0uYYAdJh9yFbrdVtO1KT3ioMQTvXAcj1uMWLBHI2RQ3LE3AcQyo2C4aH6SXIANAB8Q0WEIWdN
+ CalGNN7iveEAIUCnh0i5ZBaVHw3l9YmOlAWC7bdxC1CtW0UZfghIxpIcMupTaTraLPApnMQgCixE2S02
+ B7H8zkdOWril0QAXUHEFobRkql7dKiVwyoDrQ3UCfRsCgzxp6SokFiCWcGeYVrAjhgTSrQcjz6fVxxwz
+ oyftgxM2seV8RBoXQj7qY4a3+hF31BijxcHLDwr6ktkYLjPMELwtl5d5qOwBpWXv2ISIcVTMpe7YBKoH
+ Q0iRVzhrDqoFVD7SyuXtF6WXiWgiGccQFLPdZPZmS7RZ/qKUIbQBXkli5Obxjwy172YYJmsBmd6V+4h3
+ hYiCAvMbGwyhzFceGWsNesFyiILklwWNC9dphxoWoH3/AFCTXgvJ1v8AcRGgBDGL1C2L0oRv17QFeT1+
+ sx1s/K/EBmBasjfiPpxGlRl6fLCGmlF+lgo9YmBRVU2elLEYACgtepnUHwBgCedPmGPSebH+QGCIM3ww
+ aGxNy0HFRV7xQVg+8WIw6wEr0fI/wwRoWtYgOuV6QDpMJUDFrz3+IbXgcvAde98VuWq1cosuq8djiFCh
+ ZZaeh5K9YjEj2/5x4lKj/m7bKpxBIQDAdOkuq+ntiidNe0R4q4lcSguuWYc1LMUAxemO2mDJ1GMyFbXm
+ m/mPlqVqfiaJi1FwJBCgrZB3jrH7Aaqj9v1qw9pU3Z1YQAczVtTke1iXNKB1UPaMCqD7uX4iSvYYOjbY
+ zdb8yxj8sYyVr0MQwivuifJNAfefNEMsk5bKumGYZM8r9CVkwrdI9xltoaAtR4KQPmD0gVsc7rxFBQK1
+ u+PaA9l3IRhMFo1GGlEtvV6IZwJyLMCYuCfsgDCnVj7jFmXrdEewYeWYQBnllgY2JCzVp1n9qUo5Ex4Z
+ YtK8wVa0aIOtFFdUgCg1o7EyDeekpTd+sCm5T1e0peXtMNnxFLoUr0mqplTzvUVZFQpQ1eqBqAyUrQX3
+ lyOF+2Ch74GUhjsOmtwRRBi/1JnLfus+sCX7m87HBPtlGIQaAxvpAVZA5pFxAnUX8zLHRyLfzB0eOSsp
+ gI6AhoXogNYAAFl3A6A9voWLlsunOmQwYIoV1dyymTAYxWeMbl8KtV4DB8RU45rPFj8xMTAckR0tM3xF
+ A5ev/LTUVusUx+SE3osEicEXOKtrcBOAYTk6f7CJQSrNj1PPljzFmmtv8+dQGRC7AbLwifPRmxQbM56P
+ yesSr3/w5mgt79Iao5rEyOYvauyg6F6X1Y1tm1Fr+6y9LIck1HeuIvJUkSnkw3Nw491H6jpD3feYgVW8
+ 8QU1Bq2tMqpVypV2fELcWHRSAzDFa0HIfMF+lP2Lr6gLOAQtjTIbyWYlgiF1FavNSqKIjde1zCKCGjUo
+ AmEpyX6QBotr51r5YlRcArozt7uIqWnQozV6lC0zAcvqZjYgLiqN+NysZ/WBf3K7Bfwl/iFWc3RLPN1A
+ TfAZwYMYLcFxvXwFjVYbJU5gsJVCXTpLcuxsSkt1XWKYsJebcSyuQf0MfLBZcKX0hZGUoEBfrBO3/jrK
+ dB/HWUaI6Evqx+yaXeU/cWdENlhj5ZQKtXDN04ihTG+0FAEnWc+zKjZdFBHlI2t1gCdEAcAYD2lXgFrt
+ NWLU+fYH5nyED9yxta4G/og2zy38RaIbpofbGFMFuBr3igKHND8Q2PIb+IJUUCAny9ohGrtSgymNQcKO
+ mp+EfiBkLUzm8xlR95NnZ0+SLxxa+WX+6EL1GVFhf4sYbupdHvBcrc2F33j0tyyGZmfjv+JSy9UYtyrz
+ fWDax1gheptXB56vaCQhhlt9By+Igg7u2x7vHghgaLhu1vPcdJ0zARAu7Dz3HrOTHJbU8h0+pdBsuCpU
+ 3OFerFp1GMm96tkgqKgUVoMtYW2ZHCshVG63Va4lWNcEse9xy4MTT+p1H+THvKndRyHbc4INrqlamWs3
+ ERA5H3PHSGmVK66mtkvDI/Q38EIoqyg6pj7g8r3hpZZdURraG0uX2YeJXzZziWUKwmW8yrQ8MX9Sgoy5
+ P1BLuwOIooFLrQA693HpBSAlC0RMNwGgLVgSgQlRwyYurznUQbaQWShaUiF4lcBtzQXBivV+IgRTYE05
+ AtafEXCxUQQeNMHi5u1YsfXXzHa1jGlDx31FyY3dQaLrh+hCrt5V+zp6RLzZw8sYVm2iXa+Jja67ytvw
+ ShjYh721+YAKNB/85c1DR0Y9230S67CDW9S63nMDKj5UQl10zfpLTfWGjYPGM4msVnZ+pQbtgdNpsrpE
+ 2DKtFKfU+16ZZd2ryqw6ZfaY3RV9CLUIEBYcMSJq+CK7nDxCvJKX6R+in5ieywR5+hma7hQfqZtOLMvf
+ HpGGu3LQ67wCijfTtOQ1cJat5gFQNpYfjxLDTc3xKlmrLK2zYOfMACHTXP779YyOA0Xx18Q0UjWKeyuL
+ 98QO6JhaXyNeNsWOjRVB0DiAGIbiPqq5nF9vu+GJQqWRprJ/bI6Es8PK6fphqtekOPcixWyQ46P7li6J
+ VXLjOt95jezFhpwW216yjLNgU8Vr0vBLIYnBh6OcYlmwOS+Wm3UEA9KxlieomAj7gkNxJVtlZvp3iw1D
+ JbHxHh6DHIHTfJLS+8u9zDqU8H/CO4rHgV/RMqaFnwRtWpv0nhiJAIQcPPDr9RAt3uQd9mWO40GEddpx
+ raneY7AVFXmpltwM25Y5BUGxe9443NL1XPowIm4ojtVQpRM2S0DGOJan4jZcZXvA2aFoXQ233jlAhA3S
+ dXuSpoXgisj5ZI7ESUM3nPSA2ABUGrod+IghT2IEcE3bganTJzxAlzYmYO4t4y/4KCWptX4M/mKz/tSl
+ 1mUhLP2INcfsY6SZoil3CP0tTmEsIV8cj549YgGRGUM2OcefqCqPb1BXe4ttg+xLsOVbwhgtnJ5Iposd
+ S5hD0wRpicqmXxKzeoCChpDcffH3B+4FquRrzURijSiLiXz0fq5Gco88m/8A5pAWx8qGYRxg2xd5ceIO
+ 7p7skP3GwHyFX6xl/NWSOMPys0b2gFX27QBotoC7fHXvEGSAg4O6/mUgFViY7D+faBcM59mfP3/xXSU8
+ 4ht9HZ1gtNJs1V1dHDzqYFGbE+Oz24jMB2q8d/H5gU6YitssFVdnNTM2AGFN2YYgXnF8q7mz0lk4Fc5y
+ U7+5k5LajQsx6j/ZiJawsC2hbG3iJMCNYnzbqImrrhb2WYqXYaHoP3BE2w1beM6zFFLmY76dHrw+Y2Xo
+ ypYrVu4dkEdI2RKaYa2FPUCn5lBzRGXOX4I+BwRKOlRvsRW2rNGb9Yigh5sfxGNNGvyHMcglbAPxHLRo
+ 2C3EdAdyoNAoJYZsHMzii7yvSvOCP2Jb5YEsNle3+RnvAvG9kvADZmgqDixZaN3rUotRWAHvULehui4t
+ dUs7Rit2M9cRC7YfdDvHLBQ9hhMKS0vKgVLW0OtvYxMunzYt6Ep6xRd1efzDKbMnlf0Q0SvWBKgd4lRY
+ Qyt6qviEiG6xiGyIV8r/AOzJTgwrtd+F94XSydFLPRPmB5609DMwK3u+afzFGYsr8/7LrwlvE3vH/OF9
+ IQAStZNz3InMJiunSVof1f8AkVB3n/l/KXNS/dEXnzFxKsSekVLQKDQwUGfeJhgSCrTfedoC2sP7cUFC
+ 2sD/AJ0OZcyGLNKmlcV0lNjMrB0/yO6xtL6r0OkZwKDQHMw3EZlS6TuMswOh+JijQ5Y9eCYxtaS5Vfao
+ F6juoP8AYcGtNtegS2VO6uem4ultilL2gCAAAAVQaIBRsPG+0YdiIO1DjziNLuGrt0rqJcWqMbolv+bI
+ MTK8Wup4ZRZtLe65jW0GGip1nzBOwU514Z7TdPsnAt0x9yo9Un6hWYrZIX16kdcxaoStvRPmXxtF+r/s
+ s2iGNIGonaD1zKQLXVnySjOtYse8UtCXeEz5iVm5hNuW7zK8VA2iX6cQVCDFkfY0whdL0iJp+Y8DJljZ
+ p6RV94Mg3+WyPcyBB6ov3FzFeAhyoA1iFpHBal54YYRcilRRAiIoYo6neZdYF2XWIlybuVT5lgbTxuFj
+ RS615riDgeAuuu3EtBbiuPdlipIqXadJVUGwwekolwE9gD8sGtwzcq4d3nzBzcpyTAdIg7p+0QVAvmpg
+ jNIeBhEgcFlYcRdcRAJwPOSYWW7Xo4etkwl/bH6gVz9AZcBS8uLL+YsDuGYEc/8ABiqPSmpVFuMtgQ90
+ 39SXOUnzP+ypVxld4hmWt+pLlqgA3Zrcsg4RUUVwMPh+pvbZGKdb8+0f5Ts5pW784lGCaJw9Xq/UJ0XH
+ QoHQ5iApjzLl494AAx2JcgDb2hqK5q+L/MANSGDl9Iuou92Je8WyyjBzFApNP78xTWxyJ69pTaNYzzBz
+ PHpKRpD0WjTC+aStWbbz/VmAUmqVmCqc0YfSBFUWC+5+GUClpFh6/wBmI1y+myzi91/5KXJKFvPU6Ypo
+ sXS19yzrjoj9SnhSCUG9L7TNW28H1USQsa3rGvmFZwvqER0Bnj/yYsQOv6QPVjWEiVHuk+yBM+If8jPX
+ KL/cy883dz5JZ10ARGFbAISxfTOoc4OUQSkguAF7v1im8EAWlE1qCjZTbZR+Zaoqbpru0ZcDLCWllxPS
+ zDCuTuVZFgszl6dILF3ukx1oc9yYQuauXqH3UQL+3ZH1FlIYrlU+yAS9JKb7Nxcfe1PuomUno18zYtC7
+ QYz+JUh0P1EW4C+7ibQ78wBrmXY/5sbVtYgAihHOgIraXNML3mQja3+blpGjcdaP2QBnIvnD7YtFagYz
+ fDvi2AiwAHkf1O4Hwf8AkVE4WO8ApQ8y5zm5dy5qXfEXtqEX0vf/ANiuVLinutF6fzLS4bA5SK+mASI0
+ 5avmC2clnkgKCxHJ3hNa90ckRizyLkeSE9om2B4/B9GUA6xCXJasEYBCMFD1IGw3Bt/HB3mVCi01Q6bZ
+ ehpLWP2iRlOX6itOPYhykODavSuY4EFLpyDpe0A60nPeWXN4M+kV0IFHiMEzVaHDj/ZwZIxkDNe0vgmS
+ ikvo3sfzHaOxYF91e8c9TxKRhSyqzcKK1kebzcQWcZSNw45DFPFQf2FgyPSWRdMmP65q4NlKbAj6q2AV
+ TmqFb9ZklXp+0Sr3qoi8GoFG6rAKmdQ2UXQWMuzr8xTUMLVHgWOIaVOzE+SJFOcF+GPSz81+yHDrDbD5
+ JfAABm2r2NektgggEp8ShEC0sC7bS6liJHD/ACaJjl9X+BRCFxCId5MF/MRFFLpMaWnUVnZQBRk9jBbE
+ 0Gtr0Dn1bQVsO4gcO7npiABgg5n2cwkcmLJc7c+pGPPindNmFXtECrmlgnSln1CAJFjxvxcD0jKywVvX
+ xFwz5Eb9jrMnUlT34nXyGfM5eZlMtwDm4rusENEFUv3gyGVBotINao6y1iG6C1o1CPILN93MsDFu6X/h
+ C44LtFVT14aiRuLhzU47m5zlWHqjKVlQuXLlS6xBcMyvGReIEtr/AIsTZbIdue0ITnMbDp6QwIMrRHcq
+ UfMKDtPCViD7D1fqUbIFBdfE4lUSsvXxNIBVc9XiKEwLpUo9IoCgKckRklynCVTGc3jiY6RQsJd3F2Db
+ bk6eTT6dYnAKOI6rY+bk7t+fHHMvolHIiPGeOlGelR8ABBVAdjj7eYogujN6IJyW9dS+o5gcHdfxC2xe
+ mvjt/dSJFAQL67PDe+qOmNK/VBp89e5KDcYOe0Fzw8RLVOOTr4iojXYLRNYiGLYWCbJS2V5ddK9opoAh
+ muFOKftNMvZwKasra+TqYjsKAbA2uFwnbe4gSOgyPXH9UVh6Egum3pAQKAyWW/M0SG7q+5FAu9pct7kt
+ WB7L7k2GflxaJtCvADf2SyzdCzpwQZVwIquRjW0Y7RCfAlWNf1S2WUxArjmDmrVhHhma0UXhr8y4Q3qI
+ /MbNYRsg3umLgA4BRGPuOhFUAXpFHt+IxViU3tf95gzMQnJ845z6Q96Xo36Bj3hA5rVuRWPV8TGFbbnn
+ Dn2Ym/DqHenP3MJX6yDmzcXoUiNMPhv1IYvXSHnfOudS0XWD6wvANXBuD5hqzpHaFVUTbI1iDGNpfUYh
+ sZN3BSBSO8fn8TOfWa0U/uL0UJZrFwRWri91H2y5RbRnmUXqu+EgEdB95CsrVJXiDV30l3O3/GjiWd2n
+ RYYVYHSUdNuhEXOoJ5gciJfaBrSlnGiKxUIpvHjnxACy7+Of0ivEClsi8eT8wJmrzcru7CaZeQWJlpnv
+ LbpB6mpShDqZlios5SepE30AvvwYFfHtmnz30+kpmFv3HFQv9ozTk7XxL7mjAMrx4O8sTxcHQfnzHrBX
+ R5lJChtWvWLph3Wl/XmZXILjO8/3/hYr/wA/v70g7FxZ3v8Ar+e+AEFLgbb2f3nli4vNBcEBWq6sPljn
+ tEmcCuDS7zuJ58AFQrB3yVvmIwWzelPN8tEyIqNt2eIWjLaixG0dwtDnJ0gJrUs1ujeHEO/KJP0RLBcp
+ Qj4T6mVG8On2QKomw0+LCN0Y938y288L8zFAdQU9ICil4sIgMo+uvglDMiPtn7iVFbQN5+Zhb0jgGsxG
+ ODlfj8xkFUAXpW4McMIuPQUFoL75aAEFxehg5QSqru34wREoWoqimH0C/WDEUDJXCPe3wR7ueC6DsdA4
+ CXdS7ACzh9esv8D0HAZfmMXONmTozJFp0C8AzAii4QRrrTkzFYU1FGnjO946ZhkXPjaAV49oFLmzYOWA
+ 5fAB/Mo2HrZVi13X6h87A/EyKHWyr4iZREdUkynga+D/AGK7a2BXYgBApQGuS4LFMAF6MotimmKHZ3jH
+ +Mu1Wh+pTfKnpevSCcoKdBuAAWAbRet943Urqv2zST4B9sws90BK7O9QX7E239RqphxK5a/MpK3ofucJ
+ pwvxFQjHN8ehBqFU5jrIMld0W3g6wa6Xl9sTegrBHYkFVdorDyxZ6Q4ylkpPq2lnK9PWER4UW/uW3bdq
+ 3zO7zyiuZOeTpGxsevPPkMbyEFmg+L4uWvUKuD9xcoOcwysvANHnvLoXZgZX+6w4UBoM/wDrKBtzis/j
+ J/VkcXVdcfX9rtNcXXU/uvz3KxB1ozfTzv8ArxrXVuVlVjnoxIPD5l9RTOM6iUBlooroth7srRjadX1o
+ x8RuaMyUKDszx3lkQLk4PTUSRQIHDMsRtyIt8xJJpmsvxiZ+60Av2mYsHTX6jrunhgMlXrVy2hRnDo3L
+ mgTCMnpojeNajN2dIlgDuis1uWXtk9aPqGYKMFNpF7EoYS4U0xDt1E8H+x1jYx9MTLMw9YwXbVnusV7B
+ toBvN/iJlYpUYXRXFFZjShd3dRhxr7lAKQU1YcY061E8SKUAXlrbKhSVm2173zWoAaoKpot4vb8QTQ2w
+ bvNZ5c9YEigJKu2sy4S1mCsXxjy/EslyFLtz/k5HfiUGfdglvWW9fczLhb9ZdvpLD+Ie6DSAae5BHlFL
+ 2gsoyXy2HHmUao5V71j5IiLCOYkDJWyrcV0t+oUrRagBywXKBe9ZtUCg3VsVWUC8XiCA7daqVXE9Pia2
+ IdZfWNatMx3m6UYLZ2B38QiWmsbU07YKhpt6PiBQxFIevKtZI1ouMrdZlRJdYDguBUtE34lpbY7Ou0J6
+ KWVLkWq4uVWLMlXNwU8Z/MRv6vt/4SU+RcdT9xLOjCsfoia4reMEzILdzMAW0cH7e0XXDZt/hX9ugGQt
+ dDH9j3O2bLx/f366RAZcc9/78+KBe89WP633esfXX3VnpuIE6V+IL7DcoigHI1iGzsacwaKCyF9H5mFM
+ YJZnpvWZtiAtVu+nXwzJd/rUFAJpStet8wQ6HLYh78QYJJsx9SwJa7NM4ier+ZgBDssJyPIkC0uGo67D
+ z6RX7xxtivA5/MXNiIepiWBlt01d3pIhQ86P5lkNPh9GJOM6h+Il1m7ifcqMj3lh0F9VfolzHFvywVAq
+ VzCbIgrb8ZcWm7UEodTjtjrFsdtelNMAN2yYqNG3FRrLbTa9HX0mBEBeeDVvWAVjel25b/rc8QduukNd
+ aemotEGp46S/ncKmSbVXnvCxQC1XbSHzb6RlK9TcANHvLCaOb/uCv7f7hMhev9zApvVDZueblHWdQfxO
+ K19Qwal8lfphSoFII0meYVCUsKW02t6IqkhQOskZocKmmMv4ZXG4NrHRv8RAZK0Aj7x09nlbDHPaV2AB
+ dU1+ZdQY4WnxctWqzWcQEUcKMEbVRsftgN3X3RfzLN6vWfiJBKbF/BByJulEO+2WUhVqnvuWxQcUzXp3
+ go8uk4LJbyVLTXuJcA1k3UoKnFguB5+pWgHWPTq6GLnBhOnEduP+WM7/AJZmdW6XWWf+dEv0xSCzDN9C
+ +JaLhM5ia6HCn9CZQF7Uf391mQHJ21/fjqZGusfd/f3iV3WTuf7X9eMAYylidexErR5MZdnPEpAVuMjK
+ AdJbuta57RThfFpQOgUAaz5gTVvoub77l2+dH4nqCUH1PkC/Qz0c1/yMyXBqfNQy0SB4Ut8piWxDxKVg
+ mdDp4Fiq3lRBm9RLZsG1Y37SwygoDmJU6qr/ABACqMVRK9wg1+OJf3CaL1jcHwoP3HhdMrg/MdxnoUAF
+ BHcu6SdmYhuWmC9QSeDO2qJR0BVbS2tbq8ekym4xoOtu/S4A8eUThrlHrFMgoE0N68RFak3YVs9/qJgV
+ qwqi91FAUU2bvmC1FssS8celTecQFVl20ykTwpHBh74zAjZs60Xjvn1lFQ+qPtNh7Vn0M3D5yI/qJJVq
+ V2xfV6zjl6ofaouFB5D3g7CuFAfNsEqPC7iSooepKHDBRRU7nzLrRbMNczHX4gHYimzEylb71F9pNVHj
+ OPDMnCX2FarEb17oEfUGDzX7o4F7NpfuLBPUIikHQgI++YpsNy6xCeuWiF4M+sAWT1QK55/CMfFNn1lj
+ jnGKuLYlnKG/75j2VjNtYgwSirAPn9x8euA1T07nSo7YcXmpVYl0v3FTeA37xZdh3ks6PzT8w1IgjZxF
+ NSmzV3TqA8KV785fqBb9q/EEOK0LMavMxCoE23rcz55tK9xT8xsFAFtDzuI4b4YnKXiXcyPliwDT+Qlm
+ NXYaxZyTTcdWfTAb52R+GOxVch/JK23sV9DKZueLyvUIhgS3DwRldI6ibPx/sQl409Ym4LnO+vB6wkrm
+ HB9n5cRKHWWWdFS7pi5tXNC3enj1gkRdgEeHPrKyXOqEXkidGouVR43pcbDRTbNe4xtjGbe1eZY29S/a
+ JHEo7ljTXiVGizRSqDXtVxqkaELk7uG7dM1Aihox+IEWjwSr9H9wPEOgFG3OH3ikCTKob21pZaxi2iqb
+ 8QSyMzXDlLNAdYC8YAFoMe1xS9k01l5rsZh1fb64D2M+kHNdEFzxjyRNajtHyyzsT2PgIBX1C1yHvA/a
+ lgjW51cEmfbLAqdV/UYhgd36lnHOqqUypUsDInFeYCyymZVkXmm5eAtDJvETVZMahNtUf7Eb9KRnuQM7
+ ha5NX+iKwB5KmAW+SBp9Eiml65IwhoBHFrq/G45Ko1yzj+8zKIN4x/f5CxdXVq1/Y9iU9P0gEoCOgMuW
+ NhxKXUcLnTrvex8QbLByCj159Z0YGMWfVghccB+NkooZo4mc+pr1xPeEN5WfwWK4svvCj8v+yjRPl+5f
+ r38uTI6bvkimTOH3AKDGZXUlXXzXDLabWZTf/CC9qpY+hoPuf5P4AIkq6MMEclXDFviBi0boZb/GjX7l
+ Qov6o1lS+8JtZ4Y4jHCvVRKYYquh+1KPWIu0FFj4azfeojZDjSrzcIWMuhR4/nMwgAVWglX2mWynclLQ
+ nlgeuDhicxEAd2XcduqlIRtjfaoWorXvDgzq+vZinuAQVpAtou+xn2jTirdT4cw9iqHHnofELXIyIA+R
+ 9oVUihrD6LN8tTL6OLvwshqs43Slrx+ollreLPNkqNMpVA8XxAIlsCl9d5oDcMxtUi8uivH3KdlVmMrr
+ tLMo+iPJVFTBTeMVfEobysPCnVIsecgL9SvUhtFPqy84IJQZNuJqEIxjMveQ3VgL7ajh9t4Hw6z7QEgG
+ 9cvWrxLwVF0W/qAPGF9IIHdm63majB2amALHXULPTpWpa6EspN94RgJGgMLMZviZ8b1QFy6JKOEQBLrq
+ IyUwKvFLUIWTjwhftL7DY7P8nO4tZTYXXrURhQgYzCqSg81cNyZqJzmeEucTDJll2hx2g3j6Tvp9YE6H
+ pHlFXtu4IFGDuZ+WWC0H5bgXiDvMqubMzW9DU2taeso4IM5017zdmMPzBS+YvZO4VSWd4ET34JXjhIq7
+ gr+JgRd/bS4ENX5lBxBq6iVGB1H458Oow0zjBXpcxgc2IPyS7bd30YrhQtourMMdpBmaxVX2fMHEgy0c
+ vnpDJAXC1h543CCouwWryZ37xQJFbbVQ1wZ8w4GnNFr4gdsTf8LMVYu+jiGZqW5pHqXKWmjjsyxVKUzj
+ Z0mBTYdEh5L25prvEBc6iiPkilKcWV92Fjpyg0+Ye6oaC6WPu7faiXb5qBmGFa1Do9fWUp0IG3alnvUP
+ yKwga6mI+ZSAN2Bl6aPjMsUo+woa+CMPRLW7TfeVgIbtcLUIY0pQqXw4jsuJUK5rs/mIer1uahVXVYLZ
+ JVlsUq8usiUHKY0qIqW01VX08ygcIWi7ePSJYSFrm+SAZBReSAFhdFvMsi4NZ1ZFluri4xyh0pZl1bsq
+ BJQdV9MTExCgqpXqwKRJnOocbD1f8S91Dov/AOQZS3q12cQOx54iArBZxOyQnTLMttqMXqBViGjcobWC
+ Np6yhVDs5WVCoB1xiXtadEm4pcB+k2a+H2nUW6vwReBeh1X9mCtKMbukf9mXaL4/4LvHDmDL32Zdal1y
+ y+ujcoWckGwOB9wXb0ZodH8QZzE+v3HV9IFRW+mKmcPx/wCzuN8UaRMtnMs8zGVyRQt0yyEpnMb0mE9Z
+ TjOaifNk22XbX5FS+IWpYUau1tOmYZZq9NY9yBKxsxTcOVWkYo5YNQB6BDApUeKuzvqZ6oKvKUfLABYU
+ KySjwGg091kpKUyo+8Y+Jh120A36Z+JW3zlZ7NRWWZvkb+ZzLvNR+FjQ8+Ztmrd0QXgV0C3LduGDC/WK
+ Wqcv8oLWHncNMJX/ACz0baJUtYWI4TGMkLcuIQr8FxlkvkB35xAVhQxSZa8rG1m7b7Y5QNv+u0p2uIUr
+ bw5kjpVxJNaw8oqBWmZ1WBtQYVuJmJBS3dlrXEaAMd4oIEVgdo4XuLAqKGsRTIDwgpGkwc5g0T7SsE20
+ pq7g0tUoa8itnaPsIZVCqc9H/INKAckH0u5YSaxm/fEurrTqCpobV5B/MQdNfigRi0TbdzW+M/mYFM8A
+ JvtfVn1HzWZVfzL9juS5Quj4lSomqFX3HaJm2/aZ+j9QpusJMK5zvrB4cXLvbLDWfMdkpNN/Uy8EQCOx
+ 9xsRvVxS5gfR58TBS140ZisdiKzrZuYh1X2T/wBeAlpZZ4jJidZS6ystA+kCqu96V5G5alHBvcYtPbiX
+ 5tJUUNltIpLbCjGJbq3qV7OIhSKtt7h+opCw3SfiYIAW2aeSzBBYRVAYAMEAl+AFr9ECqNy406gVvXM5
+ 1jcF2FOpAVoODfDiFKE2DdeSoR643Hs/uXeQAJZdFlkoFvFdCW7oCDu4I4u7Had5gtx+o/5SbJSb/wCb
+ QCOwq44YbnIlPe0iuOEAtHdg9dk0B+IDl8fqDul7kc1QaQtCAA4zP1LcT/rpMym/rpAjJkxg34htMAtU
+ diKidj0gsUDKupYWiu4fbNg3kX8TlLxb9EI7Pl949Znr+AY65Vcv8VLak3kL+1lCeqoH1KVk5tsUTVxD
+ NWt+8aq7mhFILfVXuJRgyLntFaO137wUbuVeblU3MNI+kwRMMS51lZcFD7P+y6l0PqfDPqVME3Lesoaz
+ LM1F8y7tLMwAtyxvo8bjB036x6maldWBrJSnW7uUCtWlVxeM+P8AkC7yh88/8FR9SUHq/qhEHSZuAOyZ
+ xdRcQB3URu0o719S7y86iN9Utz4YPuI028iUxMFptS/dn2hFKwAlNRliV6tKt+xMm5Z5Tbt5R/MsA1Qv
+ nRKmzjUHAV3jlrTqTs8Swuio+jQxVzmBeJwHvR5B18S7V6s8FhMJq2CvTCUytrkHL6QMl/rkcS3oRtD6
+ czDo5u8lXxfrKOudSqSIpcV9cF9xPsiJ0H3StOR3gCO7NwxZk/4mZ04IogxbxHLt8YlVu59w3R1a9iIg
+ 8kPeDQuEpvvGDN088wtribbBxOgpOIFUqu8vqmk67iK3kdyrb6Sq3icDF/MzTmqfMRptzQEsX5X6UrVw
+ s+hHaOP2f9VUGLLjHEYU5/OWmOjBXII+v+Du+kA6l1MsVOofDDSACF2miKzRJeW42Dg2+q8fMdZPbZHa
+ 6PzEpiC0aqGc8XES7JVu1e+4YaD3J3uuGrrkh993BbLsmHxuPDuRBZz+EqxrNS1DjmVwcar5iHaJuBNK
+ 7Ep5KOszKx7kr2eBSYbO1W+4TGHOSaCCsQIYgWgMdcQAzBvpSZ0sNOi5T5gxJp+ZYVydYhtf+eGXGDmA
+ cZeo0B9y4C3LlGbq/mZlOiKp0JdmeE9dsp6F7QXNa7SxNr7QlUraFPxGDMu82ARnYLlxTrC2SiR2qFl5
+ +xCUOYlo3KU0lcXBpiASyytEuBptOsIUqDXk+4bTKUOnWepCA3vXhIAoXYe+oW0jQyltzKAEy7JV7gul
+ vHeWNXx0iqndOb/4t6rI6Wgkao+k5esbu4fqZI0ke5Osup3Shz8y4y7Ipj5n2TuQ2ujcKKwKwXjiCf3x
+ fb6blOm8GV79FH8zBCfKXR55EOKVLaxQ0/ZG0IgGeG8R1qaMDoOtSzAEDZVutQmBKdaJr0Kc1TxxTjNJ
+ aCqqUFUovDJbrkVeE4FwILMRFqhrtTbGHE0ZbtlXls8NwWoOErf4lxA29U7+zFYtZlC4uN3YPhn2zPwM
+ sKc5HPo1L3LJcKAxW/WKh3FYdSDz0lml5Pi/8hNvZl2LFB4P/IMuoP8Ay/8AjiUm4SZYAvy/iA9xX4hF
+ 3rBVvNxEDOYtuPU5ljbs54vp6EI6YUNVy+kQyDeMBvDkgfNZV1fDMJBQOq6QwboJmmj1YWc7eILATQHH
+ aKv4sxb6jLFZFBXBK0vgvMAIG+8d106ypLeMwWC3WPEFrt+oxC7DXk3EMZt0+koGtOPemLFS1pc11mNp
+ LuZazL62S3Jb+5YwNS1o+4qyVQ/Eommbv92yjdn1L/Wi1RV62zeH7f4iMCOy1fgitFeifzLt2c0/3KeV
+ 2/1At23gfuXbT0fudYnxmTTLpTYVfGovIK/OcxJoAZd8b3EydcKD4wRbit2LX3PgWDBrs9Jb0ejFQ37z
+ K9JoUN9tZg6rQaQ04z8RDQBaoB081BswFyDfsdntK8czSYB2O66myNMqSxZXdeCrMap68tYSwzhzRtxX
+ rVd0ZuhKHW1yb5VTW14pgHCGFNAq6sdGeNnArEDFtxNILinInRhVYBpKnHZ+z2lli3kQ/Ercni8fYSg3
+ +l+GIRq98wOsvcuIag5q373NS0CL5lh4T9Cj7hIaCsyyXkfLcrf/AAYOAMuXMOmfMtnaXgwfUtHWj1Yw
+ ohDBDKrogiAe9Zt9PxBxOg3l8w0gqqYocW78zOW2+FHS/wC2QnqgKF6DH93hqqgOexzMN6PRwTIGq2HJ
+ 194htUhzisxAxppHWYf0ZR3K+YhZo6Qsi1jMG3VEa241q5mVwNJXB9EQbCfLSGy4Rh9YwpG+v+AF08Rd
+ IG4UwZp95hjhjpwYFfqLjY9VXxuHUKoi7piIFhB1ohqiwALXS2YEAaAD6lEyAeLgPNdcTBY3KshBuJQt
+ E4SV2g2TBq2n2imV7sscpUKlBhplK4z+A/2PG/MwW7eBmSfXy+tMARaX97gWT1C/mD4p4F/EClIVCYhM
+ 4DQbP4694FFgAnQePLz0IF0DxWAKw+K/kgcLAKCjTY2ZMZxmtBsAWQSiuTTZpeBh1hsj2gJQBVoTQL4B
+ 0qOAC7um7dpk9xO6MJGrpOaVqzBi3J5XhGCkGQYUgODdJeKWrwKxAOXuguHewbNo0nJzCWmeaN8ZiSiu
+ 2bK8Nh5gQwXbBV+KfZlqtDktDxuUvrDa95eesKYXx5/2PRb1lgXdGcbnYhY65rMDSIvyAfK39ErE1S8D
+ +4FQ4BxNnMq4kO0t5/5R2S6t6EVEpS/Kr+ZQbp9QLgqcUazrEY3Ym429vpCDgcU+76zCXZSxt9MXFrBZ
+ Q9OstK5AC2v7YNGz0cOXo9DvFSFJpC8aDEq4I6XWby/ED82Sq4KeHtFVh2vHdlGp2JRrEHrTtB37RXKx
+ e0N3WuILXYPondLZ7f7iuON0GUEV4xBuX/XLZvOJfXMt6wTACodW4AbV9idNzqnzLOfdE67gpZaFvT8H
+ USqqqBaFvEpilGuh8RLKVd3fSAyUhx36eM78wUCyms1rxcA29Nd73AAsBGy1ZYsvHfcqDtA3be4A5iz4
+ PxPp/UDKPNTYfCVFsYs4qW1g8ZqM91TceKuLjEo42LfDGXv2mHOMB/ua3BCoWo4ttvh6fiEWyiAtDOHY
+ bwNguBGrLYADlwG9h5bDiwYVl6kLLAmVu20y4XqDJvDpRLQ6UrvgtEMuIYnSNascLWuqk4RjBkyrxzyo
+ nqidxFUuS4wqhR1cmtqaRgu9yF2jdNHIYXGQHAqF0abtUQ4sHwE5OZpijNdfie8TiiUKOwT+GUxN0hp4
+ uVGAHLuOum7jHhZlpf41GqMvWn2QZvHSoQDlonSv/YqZXVa6Qxe/bD/YiNA0p6Vqi+jKDe9Yv0w+pDKE
+ vFT0s/Us085/FZ+IoUoNiU+zKHUoHEq5UFAMoHq1+YIxofQqXs7meeZTYSv0ty+hKPg7ivLvK79YoVgo
+ 4lmpZXN7mWIUMBQjxy1Z9MtxkurggC2jgi+EdGpSoSVSyq3XeYA7fpg5sq3l3YpTvF4+5htqZbmWHBEw
+ C3iASqDeIOFwn1LEwN8l/EWJaMgYl4TfzOz7GX2aHoxGzOsovltYqBWEdkhSVrzUc5SdCoWRpqzewZbe
+ OYjmLLbxaciyeFdxSG7NtBwA8XVQ6aJoLY0ex9y2Fdqvhp7ZZtgC6qAYM/2YnOoFF+JXihod+JsKdAB7
+ rEY7Ko+AjJz+gftLvTHwKO3cmUyQS7bdwKgBdrcxqLlWE1baXfXcAgM8FX5JmR+VA9y5l15Qn4nKDxRC
+ QaNVbxCDkdOCI3QKDniMEVdNRyKcB5x1oyAIdgWwI4ZzlMcUqbBkopOVYFj8HG8U0vegLUoWJYjTdcBS
+ Z0XsWXJWAKK7V3kX3RL6EqFBqqwKHiluRrKhsMCzuAHDgLmzS9CkejZLQQA02K5N1SdcdwMUItq1atKc
+ stpzavUYByRC7BYd+G8Gi6MYIBsG7wjyU5s5HUSkWthOickJaTzN+vUQyzpdNC4K16xRyX0mdROoj6g7
+ bs4bj1gl2vVnuRp8V1neaDaucvaKgbKQ+wb92WzwAs3nCfMtt8zVD6qPeOIYbhr4MeksrlV8g5xjnkzF
+ Quyi3BZ1o1LFJiLQTyL87mW6PhX4bjqj8Ap+yNKS3UPjMCzE4CPzBfyFxnA3+Jdq9WP92DV/mAq0peLc
+ H3MsCDjMXw41KqvVPyRx29bfuZMrepDMDUrb251qINBgm1gfHMVHjpAt2f3FJYB5ujrfMIhcivDhFw0J
+ YXxTBJqtcXouB6tfVT+LS66t5/dNYMOqxChQ7bX8wxAjqMpgnWjUooJGS2IZZb98RUuLu9WBfbHEMbQA
+ J1DJAqqKMNLDiD+m5XYP2aJW6L6qlO6+bblJKHYEWJ5pqI0BTt3hICqD/O0yokXTywRdazn9SFACijcP
+ llBFDAT7GCIYdiPoEcbdMqn5gubndv7gND2/5VMu50FTJEBgsPKr6YM7uD8Ii3LtdAL8QDCp0KHvFFbH
+ Qqohqr1zeb9JVll+2W5F9oFSLALi1119OvxGnlKsRbOCuqarJyGB2nAVo1bfBKxwJylLYC3Q0452N98L
+ 0JUeIVQLZjDi1a0irwjAXSiQwSqHuDDqqLwLwhYSwWxq15wne2zwMSrAqikUVcZFRrIltappdyht4Jow
+ 2XksnDiPe0cKBQ5rGDO0AdoWsVBTbhUzWS88bw42VIaqSqkoVgq0StZa4UaKCyhovbLERiCxrsL+X0jT
+ DtXfWViX130lX+I8Zkiyxlrr3lhul8r+YF7xP/jLbA9ZajJtQKd659JnKhttJ6MRG38I2gkFCs1x7x0U
+ AduyaV9CVBvNX3q5xGnmCwSrB29GLdVCkynT/IiqFPeOlm3T4x+Iqe6DGwftgCXfnn/lSquKmmQ4TrA2
+ 6DgWVC9HgYshA6ArtVs9qqCIrUeBgJd15l8/ISV79hqOWOjp17xbBl4vMe8XYMAodDiuDtAo2HVd31vU
+ 2RX1lilLM0WAwJXeYsnRwLB5AjRq4rWj2v8AyDusOwFiOEXYWW2wPD7nMV9UIswCej91+5RXy0YyS6ub
+ 1DTEVHmv9TZnmKABUp1F/Usg4GkW4Kxx8zUp41AiXY8Zittbcyk0f94lyzsfRf5NXKQY+op/zJ6o+ycg
+ Q6hcVrDK1cTYf1yowLPbpK0fZS69oCrUIbdKmYZcaNYN7xjkdaA1DXgC756lvBVo6xaiHhZSypFru8o1
+ 5a2FsW20URQi4AO3CNPAcRWnSG8aRdaovnFLsGLYF26mxrXLdeVN0yWAYYlNpbGn2p8iKG0NNDRQOXIG
+ 92BextuMkE0KltUvW/l01pi3XSWxdPJxbwa4N2QxCKrUN8GMDypHIoRCrAz7uWIFYD4mzSmC9HTz1ibE
+ AZ7Sv65VX2ga7wUrlbIoxjQULY00WgqAdYgBMr7RhvxQpH8TTINB9nPzOCbCl/Dn5iYDHCK/BALWRkIj
+ 6lS9x8ql9GYNCmkqvB0+ZTVNGZUOKT3lAOFbQvracTNpGlVh9XFBz3WcrFvgFTu5fuEvr/y63LmT7SxR
+ LszcwYADFHQmkBdNo7mUwBSKN8HqweUa0lNhjzGgz6syCX2Jz5etQW/egeb5YLJi7SiUp1iJV1wZxiIk
+ LjRWpekGz3xOd1JTflZyB8H4meW+sKxvX2gkAto5yPqbbG3KrKxAu9SmwA5W1rrCo0vDXFyiMJb4B/Eu
+ 4lHp+GvzLMASIpWGUc16f81f/L/5cGXKD0D3EGZbChGu4kCkd3FXYSLexYVWeJdUOH5mv+XGXJM5I3bA
+ 6fqLgHArVpxTScJk7mImLQFoBPDhxnVILqltZYZA2VVt8BnwD1ObLICboRKsy5OTd+QySYpKLAuRd3zZ
+ ZwZJiDUTlgA5vWaN5povVszNtZdsOTsyXrdi1okZ6tCWuqxgw9HDa04UwClCgRRq9cFX4LxaqzYiXXeL
+ tssyZzhsM4A0s8DK1fm846tvCtXKmoKqWbvO2FdYvpHNbB+ax/xXho+GfKFKbLLPZM+y/qWAguDqHGdk
+ qFhy3rVv7lqUTRH2cy5sp6MrpKXeI0VV7zGFBOMNcTLWs7SD0hgBuE6PPMBgnKXV7p/cWiACtB0swS3X
+ S0Zouqc76RFnkUsr4jZpp9HP1BM16eOJcw6l1L3/AMpRrpFYzcyx3iNWw++pZRRtRXj5+pZGocxM4GIE
+ w4cQWy/BKtZltdrg9G4QNFFk3RAOBrFQOQz3mWaGveoLbrDVdQmveAzDtQeGCIrIrB9SpVvvFSi3TMM8
+ E3694BThb7WQ5hm1Yr6kwWpcr7nDDUP+Vb0lJuV/xQ9+1iCK1zEWA8r1E/HzMvY8x0CtkVpyM+ksWtJ9
+ /wDRYpqXrIYvPY4HHqSwEGLZNJ0TqOHmAFyN2Ebrq8jbwUxAqtKAukqrwFIb1SF7K4Cq6DdoVZstA3uw
+ p0UUglkqgGQbcN3pvHMFoJBBgDDZqpYonCZJQ9INms3tuqrOWqtzV3FNiicsJRnY1jdiglKEVBwVUKwF
+ DvprLRgUQFWWUqwUx2Jh4hZjrAKDCu2rozNbha81jmUGCUsYtfRKxYot7QlmLY7zHcopLE0jTfmYRTX+
+ o+ZoHhTRvvT+5QDa4H56fedPRofSUuBRC990VYM1BoLvf4joZEHBX57zEtUfcyibqHal0YxFG5V+0C/E
+ fFzPYe06WIs1nzEBsupcuXu+kohxvB1WUDuX9ow10BelGfuAMmzqo1Wc55IIh0WWAF4dpQ4lmj5mOpYu
+ 9pRbNldZnoy8RRzcDyaj6MqFbkMj2nARAICL3aQz1U5EP1LLt5i6zx1Y6xTDzL02W4AbDIkobk+kXU/g
+ S/8AEq1l/wDdV/8AFruXqXUHkBr0nAXzgRWplE3VUfhi2x4OpMn1FcFih5D/AD/tDLdYg1FHr2g21KEa
+ vv5h4gYEwdq4p/cT5tzdoplwbK3VvQTJaIM2Lw2kxq3WqVq7C4oWG6lqKS8HBV6pLXTgjlbQ7IheeLNZ
+ UPUaVpyrATlSwvo8ZEyWLBNZpQUA2FGSunC2gUjMBQ1RVekAy0fKxKk2TMfR3LS2suuJ8Si919bKM9oH
+ Qq5VJ51DSrn6oqmSWGoEOazfV5uCqFNMyRaqVueYiZ54l9j2j4kuFl7kLiXStZWWZyEdRQlC4EviE1cv
+ 7jrntPuAu+p9wAr1T6zjDUUKpo6Gg9s+v/HTDTNxB3mXcMsUGjvKLVsc1hldLaHFq1OXa+FEbbunxivq
+ VzQDatEQ36n7ogNj5P7lQWXlcHTUbEkMBbeQ/NgrUDlB+5gnOrL2nPt0T5bgmWNZgPglhtkL3TcF9sn0
+ /wAiCLgpoFe8Y3SU4f8ASXWlq02P5lOV15P3MLszzklraPUPzD2fRf3Mi7+gH6nX2eBYgDJSbKyS0dGH
+ rZL+F/a1+Zf/AC3iX1f/AIWtT5ly4qNtiMzfd2ekDkxD0b/H/F6xKwXOb952Ah8pa/EqVOU5vUUPLLX2
+ IFQ4WgHywTe2Epa49IpQq9TAjcixq/HD3lIBYRlfREpRlbaOM7Vh4tmcigqFReTnOim88UUxWQCAZFcY
+ MjiwM8pzA0GjQNUp5DFLkqhbUSKhGgtdr68+XMtkZum69oqqU6HJ1gzrHace8J0dYmzsfyxnvLN9ZrNZ
+ +0/pdSa/4zMnSsMcZ7wcRMcTMKvMNIlTn/pHy/3Nv9birQ3+I7b2YDSEECjhV7Tj/hz/AM6y6/4fprJp
+ HYwq3wzAu195kPV+83xowlB/xnH/AC7/AODrv9EaciXgy1WOqgdLW0nSNOrl/wCS1rtnRY3OM7COUMoo
+ 6sXdH6YZ+BfaOf8ApOvg/wC3uEt/x/MVXoD2gU+X3P8An0s8XKYoseXqxpSDZnL28EuAz+KXSe+5xTm5
+ fVIB6blQ30iRX/UKo8wTJ0Edjkj1lLB6XV/JmDno512V99+ecx4UNUZRyDVGo7mrLogY7BP4+8X0vzP/
+ 2gAMAwEAAgADAAAAEJoAnHdMrvNNNMGE6MIPtMXLWxInfJBitBOvuyI24+7/AK++CYoyuPTqY44jba1n
+ cL7zi775MuuI6yZV1/0U0ZjAByQng0/TklLnhWbBYCJYrwRsrFRwXf6ANIffz68HfgGVWO5kI2FnTRh9
+ v59RwDoBiI6QhxnAQJYP1PCgOrOe6emOL94bfQENQXhdabir4xTQi7JrzZRMTo6jEExE6aZQw56EjdBi
+ GQp0nKG2rRIhgw4x1BY6krCD4xq/iJGjQZoTBCKoDgw8+O5UYMHOVQZJtyLIclgrr05X89Rbfhww7pgY
+ JwjwKOaQhQZhMfrzbQ4IEldjACAzfBENp0DWjiCTHTKLhxRxFdQJTiw1RkY34MKwUp1VQjJ1ZLzTMJ6A
+ mxzQ7YxjprhHvzlz7sLijVNYDYRySg1EH1C5opQDDTwKIqPBjpaDkxkDF7AKBAZKYwTRIhA4Jxrkvktl
+ bIwGpBADa2Sx/KbhZ/fIBCwlRAYprJAbvCjAD6x/jSwb4sZyUzxH2FWMzy6lBBz9pyRwacSIjAJCzJZ4
+ r7AKqx9VDBRKahoK6yzRjAPrTTTLbcgSgDpGQJQQn6iIYbY5aiBQzFy2jqYn8nJiTDRnz5YwBiBrLQYa
+ ooQb13qWAxZA5KRqo5Ebm+J1zp54Y4bg/YShAxRUOQShBissirxvkarUmny4Rmbycd1Jo41TQkHihzI6
+ KmI67kGlH7RRe9ApQQSD8Px2o5T5KA1xhs6URQIPijXZa4QlVzQGnLcGYNa0vLML+7qvN0BYGXqjHH+0
+ JD1QrjN8fbEKoE9UV4iQM2sFhkbKgTmAcZ6r9FISaMrLQiKC5bDWUQgr2DQwPyY/CQ/hWqTChCMx/BiQ
+ BGzSG1g1qT5yD/ZTh9Nk/hu7I7aaT+fSzkxURiDR0KrIp75ddvwaJiLZIASaiHBw7ramNLR76SXgrpRy
+ 5y4Lo6us3JPV1RjXbi6yaLzAIDc8xHf8ajPhggghKKtqZJiqxwzjQZzQ0vSq66DCsZ4Ua4Zr2+Gc0Gl/
+ ezriAYKcNO7CLRgphAayBwxiaiB5xju0gH/q/wCej+e48J79NtSyQk8AgUgeQMK0h+cOIArxW7wOYTtK
+ 3Jv+oWm3c0fr7/JUpnvAsjGGPI6Yc8cWKvg+CdKvglRGoyfRjCaU8ypk0ap15YP0IV5/UgFCiw4cI2ET
+ +kUX6Wq+6MgCHSnIqmY2vRgFalohuKdpZMJIaSwGYaR/tEg9JZu+mmcAuqgwjqGuTA6QNNZty2hptRIM
+ MY2KmQEw1lpRfD//AGMlmrMjsPAEj51aH83RyW/QPFIq/XceecUtkr7mHJMBEep6DmOiBXvjNEtCsXJs
+ BKWyivKGCJozyOthDfOeQIeNCCIHROPsDBzeGUSBAdpfJMuN4mppHMBosabfOHSQDDFbSFIDCCFAJHBJ
+ fk9n/XHf/8QAHxEBAQACAwEBAQEBAAAAAAAAAQAQESAxQSFRYTBx/9oACAEDAQE/EMLBncl8QZDwsE1A
+ dsB7oPRPyZxkvUZzziGchneGrVK/LgWuAPFqD8IZOAFu3Bm436nENeLU1BbgwCN1h/IIIIk1Ak4Fu3bm
+ 8CD8XuDBfEMS3DjCcD0T3M39WgEPadxgHlb6YIkFr4iuQHRBgezq11cMPSYEx4wjyxjGuI4F7RT0Joei
+ ZZ7KZD10mIr+JwnyvJj/ACeAV1dKKLH9JPYmsi4AqfCDDXE/UOG8LuQ+mCbWF6coC/ODB1GcwjD6iu3C
+ gwZ1W/GGK7kNX0wROBgvw4Szzk3NY+ZfqJwX0tzU0ZgMRYemEHvP0Wp6T3R28zEIwCOhmPK+IQpe5k7Y
+ juX8TEMHpJEMDEMPatYGN4amoY7MsErpdSXajcR+IdWCDcX8YXXKxyd8ELeR6EW8LAZ9aOiTFgwMmWuk
+ eIwOgwyI3L8DEP0wwJq1Aw3hx1jwxDGvGU/FkjAMHtdCYEH0jALcQy9vbfrDPmWo/wDDJ3R+9rU7oYhx
+ C7t24bc3hhxPpWxlu/jgWzQcBq1GN5nh1V+GIPwb4n+sxvpbtzeDd8tz+2ImE1TGWPg+p3DgXxsHAYW3
+ hqCSIeBGo+GN95KSC1gOy1gTAmpIIyEUKOGpei+4wWrU1DM4OAYGDahib8QYNubjDAwfqLfTkxgRqDbw
+ GCLxRj6YNWuDFqKWoYE+kEawb+FvBDPlFEON41a4bh/xA3xGPW0OauQY0GAxay3gwW8YM9uLCEWo+EMB
+ l1kT4OAW80MUHhbmL2R1LduIm1Bm3LgDgimYfUHZjeDeQ+EVG1A9Ldu3y56YG3HROB0XreWMW443bz7x
+ HZwZvB8uS7uDiGG8HCMKYQwtYfqPWNdkwBhcGsXBHkGoskC1ghaw1NRJt5OOXAEkNw5ogcKkiPAcBsOM
+ WUF7rXeBqCEwwTOAxBAn8xDiawYC3twQf0WrX+BF4Jbq48QQ3neCZNwW8Bah6STU5zfvOpMUMMnClqCD
+ OrVq1JkJooOUIzjUEureCjXi6uIy0cIkZG2O+FA1lrif5H0Z1NcQcHQkGjhZjeAO0e0OG8JhuPmULBt2
+ 8PBj9cDGsLjdvNEgyB2Ce6KahOC6wNYBg8F/zByF4EDjJiuQPgYJitW4K8Iyj2kyVwkZxG+qMQsm7du3
+ g5wGQRbzFdBzbyC/wR3lcAzoP+JYZ8Bxq1amrcuHovBiNxqMdzCTiHtxiRMawUOO+Jhm4Md27eXAYcTV
+ qY9s2q/bEOEDE0G/UseEAI3xSDAQCNRfyMMcCcf6wOwn8Ym4N8zGGUtaFrgFubhkLuY4LgjJtP8AiBCw
+ Q9SYaXtMILfAx4GoIyhB/jPuOB4EcBEeuO5fcPyd3Vo/fyJ6+QzxJNbS/hHEIcTk4ON2+Fk57Q97/8QA
+ IBEAAgIDAQEBAQEBAAAAAAAAAAEQESExQSBRYXGRMP/aAAgBAgEBPxCUodMNwqxZ/Qa0CLHpFAV9i4DY
+ uCCyIbUIeiVGYU8ziY/RZZIJA+QwXos4lQQ5syQvovQXIyaBZRZuwdZAnNRIXQ5CwUJQHzGG0i7j4CDQ
+ YmXIUCjGsiMRFTkKKGoiWUXAwgSKUzDB4qUJSpWcRgzI4ILaKIx2RmGZxqQmRAeoWFyQncXxCfAUQoag
+ MZsK/KH2krCiWecZ1RiFUcsAy7hTwt01iH3C2ITG/kbGfDhXZCZEmh5jF8D+BIJoaoYKE9BOXKA/mJGO
+ wirQOmKimyMdhtCYRG7AlFUY20bhsjUXOgYKliG32iye/getAfyVKUbX4YhDeJCFvroNEJDFqMizYQ5i
+ Iu0RfGA+IXxDxIoRUkUVqOgtSNvY3bF1jFIrhUJFfZkh1FKcmg0BycHyMwR8YnoIfgJHChcvAYsHhOKs
+ hUwfA1xmECoRoYjihoQWyFswn0xLHDKxUgUVwECHImMNMn4EwmTkGDQ3yP1ILP8AKJLX4u+Quy7EWpqw
+ tgPUIXijUKkEEFQjoIsLGwdRMdBIHiKK4RJwmT9DIuxRRrcFgBDgNBM2BRS2ohcrVCWpASKKEV2E90QQ
+ 0DUD+kWuNl4livcIpBI+w5goLMKm02MFiQqgyW5B87sPwUPyaqCFjhMgU2m4OBwDgKpoiQXCxNxM+/FG
+ /CEQGwjZQwQDfwQKJMLBA+gTExZYooqE4A+ES8KwlCpwZQU5mhghYeEoBcHgJBLPob8UZFihBgyWCHyK
+ sMoA4rmrIL4HBhCQ+aYKihGXodBIsbFC7MolALMuwuDX4F0DcCcV+Aukgrwu4UU7C85rQUF9FBKQkagu
+ MlIXK0BqVXhQgoagoMiiGhI+53Ua06kME5VRBA5BF2hFDEwIe8I/mFCxVohI5QckKjpFokjSj2hAyVBT
+ G6iAQF0h0QVBwHpQ4B+SsaPTEw5n+I/SE5lh2WPWFdmgG4XxAhuKQpMM0QmCEgpCHIoSBoIhM4ISkAXA
+ aUBMIF9QjFhBo3wM5xwZhAui5EwayBP2NH0GFiYmJBAoBZ5CR0YlBMgZS0H4GhFRATAnkvoKiNSMwhPG
+ OoXBKFCxYGTBJKDBMMch1jYWPyEIV4WRQiTBILDC3ZjUODG/BaC+RGEZMHFzY0Ab4TUXX02hxDisMDgS
+ VtQoYkCYeQSG4fXgWJiLfGRDXpVV0ZwSC8jk2M3FjEiiioc1oifYXAQOJqY0y4SlUF6gnFXMNSQUGlUu
+ 1FyRfiJWAxeZCgUKjJFPBMgkXIOkFeCQlgF5yYOFwUqGGxMuERYEBQoQ/gSoLyDQSY5iBYX8glFIuK9g
+ yqKgl5mGwvAtSDdn+xVmELuCO0o+hPw0EBYjklBxwQHAQsKhNBiCCvBXpxgGOESnKKofoYkEPiLGBwSe
+ pvGwyEDhQxuF+DY4IsIiDCtMoxHC/wDgBlPhVHeQBganI6KBKE/EQJy3KExsoQ4KN4lLC4WGxI/RUiJk
+ SBzkgkLloMUzJjExOSxuUZA3AkKeiFvKN2KUIpQpDgcLXglS1MbB9hAUiYbg5IkITBwT0L8qJeaz86UG
+ Nwk7NuRuCVBSOsSRXuLKoXY4FewGvFYsuFNllxYxyn8++8jKpgXuMKE7EHoKVB9CdwvSHG4UWWOGIssM
+ UN0LsyFsPQ//xAAoEAACAQMDBAIDAQEBAAAAAAAAAREhMUEQUWFxgZGhsfDB0eHxIDD/2gAIAQEAAT8Q
+ XLcgPagFE1Ih3t4Cv18gXNIU+DqWmQqckgGQYjaChsoQp2AK6ASaijU0E6S5HkB0Ae6kKYKrtR6evYAA
+ 6HLrxAT9wP8AYaQ++L8gWBrTBfew+BKNqoRHaIHF3pAFqUPchdwXgOsWRoTFBmQuDBnSVB07jGeuvkeY
+ sFbbw9GKWqUkcuGldyBtk8RjkAhZv4IdMeaezcTW1UheKYTtoQ6M34sBXAY4n2O+nK9BTxwm2tz2AOv3
+ TAmMAUSrwUjimzWZWIg7Y0HIp0V64cQ9v+pAPzvxM0aKeBcGq53AQOEKyZR9HgSlyRShIsprPwsWB+k1
+ REQeksEwAQRl7tjgxmydiggvMISQXbM/IHPbGsDTrYPQa0JhCCd4gTUTbeAdLtBscrtaZyql1kI4DeXM
+ AhGOgDKbIXlXLYIHvHlq40uA/LowEa4jNuEW4dI2G1h1uroG1pVSYvIn+hlSH8zC2Ow0vkTC8pSOkYgL
+ hrbQRC4jBlsB5fUG7YuIQvS39YE5QEnuL8cv6hpOi2K3grelXWwAy159FcAM2gMDzCuu8NdwBg6c/jIl
+ BpM25lIAHQ7WHorEeVkFQFS4ZSQnZjaIAC5TNTWDAiooo2hAGh2+hUUlaMG0LzbM4EAskXiSfsCFgD+y
+ ATXeLCunpXH7k2l0jxU8AiDavJIKwX5SA7u/igBw2Yp1C43sziHMaHtbHQgKbUBraE8Zs+cC2hmZQALt
+ rGECpPRwsB8LRUwd27DSHu4i+AE8dLgA5hnzegf3d8NVAptWTpKB/qY+rAGVckr/AEAo26SkkAN3qV/v
+ XAFGdqiKAkogcfIIQSZST1hAWprG1QSOGnJAASHvGiTF92yAKTAkQMTiLAiBRnF/YNAL50SgU2Of6yAp
+ jhd6JoISg1RuJyXAtF5ZRCCX3V6B6lnOtgFv5jniQCFreVI6ic/cjDadsFK8bL7zcfudOLGsyREerCBQ
+ HK9hBYq6CQXYgvksAhahr0SuICK89gKZpENhKb02GKWTE1cLI++BOnu4A51mQQbb2HIEPppqA68x8E5x
+ P9Akrs7aHkaRAFSnvcf4BK3krNmApfxJ2AVColFQvAR0kPlT7A/zF0+tgDMjejUBu1ZQy3YGerikKhX1
+ cIH6q2EQ/XAnpP5V3ZoNMtQL7kAk34cqQqQglghxwYZ3aFyr3YAfh7tPkA26hv5FpQc1wImQA2dEsVOd
+ GooumoitSlKtAZ4WWsZgI/8AV6aCamofqQt+buWWIBLZCp/C5DEYeZQAekct8cAioqu2PIXYPYA8VW0S
+ yCeSOBciOeQCUsrC9svUbjrOMe9YCmz9UgDBcUR5T5pPsBkMTTrSIAP2Ee20gPplVol7BnmK3QXdMPkA
+ mzmq9D2APGQZdEAlRjKtQFbRM7r9aBAsS2EZCW8EJp1XKg6g2+ze4AWk5NkF7vixgO4v75QnvhGdiPmU
+ lAVk+Q5MBbcZ0aQUJXnQUv664xtEwbYLn9IGCOtCJpKfn+SACP8ATu4AL0QYVtN4WrG0BKcURDKcjw9O
+ gWq6QikrixUaNgwiq0wc/GAISvqsgbXfEbJm6hcO9X4OSjPllHw4wD8CVleHs0/TRX+pXyxPO2EbiY/z
+ kIqAfhJpgJreurcwSyfbdRAtfTVJ5owMT2CCQ29S/wB70E7FLMAQTQAfMg9PGmAlJbulg40Ok0Avsr+l
+ gAJh/qUkI/0DGSTy1K94gveDFBB/pCU8AnIwRgBPOmzKsgAT6qg/l+iNe1cQ0FL1eDoFc0VwSA7JMLND
+ CD56dF6RGwASrRk2+A+fmwgzzrvAmehSZeRl9oQVbwxaZyOKwBTnfYvvwAFfltgs76jba2NpGV0cgAgD
+ pSAK4QWp+ABtHYbsQi5RfgCL+NsUiR/4JmvwCOJA8C71Q+N7Asm1gRNwLzGzA5hOjJKyB01CRsAPoNG0
+ kgHjgsn/AMgXc3e/9AktubCLNsU5AKTNB4GymANjm/F0BS0suR/piGg9bBuAzWM7kWysf1MKCsnhML3f
+ 3vECkpERKQjhJYhN8qEMrZLDJIJ0aSr5BXukcCQvra4Ov56WGx6oUjGdUQz9jGcAl02CCD3ljFCT77WE
+ oHXnyqmAEN8MrQD6iuibsnoHogPAmkI22j7fkDoJkgFvqAEvu/mLlynhbeA50Fl5lkI1QPPbHYU053jW
+ SEz4ofhFXSisoBbwdNB3DN0CVOK8hM57cCTv13IIEq/tV8KfYYT9sYgJ6PydCCJ2sIibov8Affoxgj4S
+ JwVodYA0znrAi6oAempo31AAm7Fjmn8lrYnQHcUqdCZdPJazsAnTNig9Nlp33YjMILOdPYZuPNSdU6CE
+ wE1dEQAOKucl1tsIah/7dgAekcA/sIJRGFZSkAZvD9i6ACBhX7qq4lANMU/uvgAH8e69WGgV7w4Affg+
+ PWes1E4noAP9UAA8BYjZdtbBqnZszglHpSIpC2/IIkBm/ZS1upZVQvZLKNoNv8gl3iATXlwaMXlLSDBj
+ 6Xl0jdZBDlJxj7RpsFhTaAGmUy0AHPw94pIkfkJv9Ie8wY20E+RQyIzfCPRWJhb3dTBWs4OdH0VYCQ6q
+ WgR0DBtrqLF+nVE/AphTO68086fQK6u+6gIBTsVEgTrh2MQRESumSWK8uRiu1fbraACgPEY7f8wjjzck
+ AvnSUQANlhJwtztYdEDrwn1YdP4OEAdGYZiLhDo11CwX2bbvkNkivdy0Bb3aL6IuQdQYLNJIDsViggI6
+ dJrfumjuDfK3qax3DHYTqDECx9QYrX7o8QVy5cCE2doJdboNM6DPIW2JmxoCC5/xC4AAzeRUMHGibmqz
+ nE3LD0xwOBJsoXEAZ6/fEOfuFBdnjyIaeXJABmQTdalwFbyqMAwqmDqfJAnoQaa46gt3Rw6JACOwIKOE
+ kBW+8ggidERgGe29joyAkn5HlgdRoijMTIU1AAnsNvc3NLwnJt8wQCPmKO1p2Qdwr/L4scygWQvFu4Ri
+ 4BWwj7MTUGJ7SvsewCpIk2aQgFNYMP2/RSIYYBBqTQHNx1X05GTRaEfOFhaCz743IFI+Upe4UyusfE23
+ wEHqdXz3SDO3Dve3KwpVEj5acAfz2Ci59lvQUGFeUQ+muT7iKtTG41+RB6sfBHVYrCcuouHGZxFVDFxL
+ QEsOkTAj6xqj9CASLNgBarZXwCBd+mQKNIb5wEu20fC88GM97GiZHCgYuuEQLZt/ExQpNDOsgDjbY3ZA
+ TJkAyMrZg6AQLKYx4Y9EgfQHyvFG2wYTpKevXRPoWRsLkaZ22toDpNs0kAo+qOOAdm0QORzMAT6wNAKS
+ ZCGKZHg8CqTQBjQcbp3PYAu7NKj8AultOOorEFvDQyQ4Cf4dFLxo86thwMoNNkAFZeJPSK5hO+uQOvwF
+ GIlGJZEWqq5APFu9swmNdIxCu9ShLoXfwHPWgMagTgABGW8pkBAU9RODIAChKKGAXWeiE1j2LifNGc2V
+ vHP0Kw3O17z1NEh8cLMOAmopxbBTeMoo2OgF8wF/CofdsARRan5MaAQ0MOvkS2/mJb/rp5c2KyYO9xe8
+ Zgfpdi8qVDsih9kG24PZTMMRsBWc+d0IeMs8lW9MgRbXvTOQG8KdxjuEvGkLmAChzOgA/UcSM/Ib2KkH
+ w6pmhAwZQ+4TFig0y1XIjD67jShehH/cdKKyQ9LrpPrRlkLKggWZaAzWoZBD0VIQKPXLnIUKxIwBW1CG
+ 5+adsVf3DgaOxl5cwWFueoYrA77gBU6jAAxIxDINkXZ1WN0XYNS7X+BzhwbI9NBjZ+YEzvAo3fsfjSCe
+ GV2bfccYJQ23sD959x7C4hPTXIX87YAFB8rv5cM/0DS4iUK2RJBIDXRIM+BgJEWZInh8oUaVnFtA+KOI
+ cwFI5BInXYQGTbUXMYLtEL+YgLY1cNPGMeCeFVBvL2uyEAGGgSNAq5ffVQJXyjcJ7W5rBVeoc/qBIjK3
+ lDkA8kZFmPBST3CAKuXZUnEXIzlQmd7/ALBvCHjvFtFT240DaYxqVUEFNN6Zv8QXW48gltPAemcACLyV
+ cogN785vBbIW6uI2P+MNQSQAf/OteIM6Z1L/AKQYiXkrPGeckgeLHy/YNe5xkD+oge1OvDo5hCPq7/mC
+ ERflhluEB1Phe+mQcUgJn2IcXCG3XEAIXqmfcrQ9GMoHAA6czBDMWVaQguRogj446QgwVZtywT+liW+g
+ n6M8dFMxBz96DfxKjo1sCYCvS0apyHcGP5eQNDorjBfAu98uTZBHaCMTsiRTuURYCLh0Wqi0iZidgXKZ
+ IAFMq96wEdet8YbARxRD+NdeSrEvsgxByJ+tP0LQ8T6+GcPTpIky4j3pG4ZwXNBegE1x9mS39DgjuCkj
+ 42OSQVP4NLxu4Ge9qMBZoAWB7dssCB/uyqXwAdYXt1oAiGzUMW9/QBzVRugUw0a3YmArO42T5QCiS34w
+ Fc/ZsYgo9pLP0MNQLqbdUWECPZMKUMZ2N1hCj639tfgFcTpuBddPUk8FoFAlCHUh6N4F9UhEHlPy+LCf
+ X5S44DYN1wJ/72SpMJra+LkCZ7eYdAi5P8z9hrciHV+ybIQgW9+NfoH21icFQ186AQUVycqAQwlTlJ+S
+ Egt39okp3gv9QmIHGiegNMlBoT2vnEsWBjGRi3IbmUC4ZHkMR5BL1JOQluCud3qYLASU1Hr3lAIEyOp2
+ jP6FQ9RHQH/P6gEhk6tl7MHaIXeA4EP8+PoINN2Cf+qKg3sqPHUrUSu778ADi8lA2R1cMYCHx8uvrAGZ
+ +uEgHf36yQJL16wDU/UUz1EqMkcJ4P8AGKn/AK2ArmFAmgUFGQdIFIUoztB4Lb1XJCv53kASOwJ1DAer
+ cGFcVXoCAg/S/KcgQk8O8Ace2JLGp94CtKgmqMGKbgO+ycVJgkCb9TKWwJUaqiATEhfONEiG7dpimzFl
+ RIOyCVCrcvsYguAUNSMfkqiU5nxXBUXzJmCKO2AAxHpcI/kLdQhm3sz2F+aWXgfsEdfytxX8i7TG7e1Z
+ kFSeGv8AADddVvAK14Oi3nJFFj0xGU49VmZAb3ZdagKPfqdxiBf5jg/5grxVyW0DdjmUwGVH0nUYhW/V
+ fH3DQXS66PJ9BOEgNlVaIs0nwOQQf0OpgAkp/WBKBHQS1EOkvXDIk9Xptp4QwgPWIiygITQAdoaTqXtt
+ 84QIaLIjDf45XAjZ/kDw2Uf8yHQnxAlr2bDTR8Mz3TawSHoKa1HVeRBJDtstGKMGYRGY0AQPvB3zbD5M
+ KFVpZCK+QaNk24MBivxYEkTeu+L5CqJpfiTBTJk3mIFfSFf4oVb1KFmAXn98gRjqgzBCODo3FWJRU0Ud
+ eVZo1wdN8jIIP3W/ponBiJ/qFhBnRLDBY/NCB7m6AgN3AISmJBUeV65yTSNgEF5QSmpAJoxvLQbmhvte
+ vcguFH+GFH7EB3yDfQm01WqqniPXqF7DmEB6iRzxs0haHELrIom6UjJASbbgDndVZBxLFv8AiTqsH39z
+ oOvD39HRPlmaBHd/rYgQ99762ByIquhjQKDVd6060QUcT7ucmCiV6iZATTdoBhVU/UAhl75rj/JoOJVg
+ IFHRyb3cgQFIF/fjwT0LbTt20BXNYQJuapRntkGC8+wFC2v0BcOwQqeJCDfJoFc8tCfUkYTBPAaydOzg
+ g5zIULWCgci8/JMjvCp3+UDdacKgRTTH+2kBbuN1ZC+7FCXnI2+bOWCFMc3m6AnFKjQIUS5D0jXguzuW
+ cDrLOkSV3touRtdRaqjRHWuy9nK2FIOCabv+IfzGQWXLPTIWLiogQA9FFJB2WM1NU075DJF50AZ8z3kU
+ O3iGzuklrCR1ydASyKclT8HVgO/SgZTwBRdFATwra3VB9pYEdaN9wVBOHv8Awg2UEhWBsAZcSLaIpeeQ
+ cQNrzk8aHl7MD9lJ6xHvxehAlogpX8gCQad/YsSB6Hx3IRNvNyCeqZI0xViiDYU9BHIocYxQRxaAugAj
+ i0ci4DRKoFlzkBAu0T2g4V0Xw8a4G5SSSQx5Cen60A4ACPbpSGhpK5YC2GIipkB08lYgTz4xA3CUZ7xA
+ 39oa40BmcCojvO7pGkvvHdmAW3QuvQBW3SSMmPShHE70Ac2bgtZOgGn/AHQoAVxR+UD9j3LFIwF291GA
+ O73F2cgLZLGjoOmzhKP02vGB5UoCV3X09y0SIwYVCABkfZ25L3OqwHKVRdtAhIFIil0RYYp31gjJRkPx
+ DAULbOW+xsiADMtRT+BUvgaL8hoM9+zNqhIBACVZR9GA/PX8DNrCmlAVjlNJ/ABPg31Qok71gVV7AeMc
+ GckxoeSgyJSONAZgBG51WBxnBLxu9EqHZktJ+JVetvjFgN/G6digQe+UCLQWkdJQO64cJdB6OkS/1tfA
+ AkzTBLcacYaz/eUEMHqEpjv+iimQRUbUECmqBIUrAFaXGGgQU8d0VFbScKtcVSEb2oH3RHQUov6grFOi
+ C7NC0J1QntPqXTqRBePsEpSE8iIgfAr3i3IVSHM2aigDT/Cc66BP5uiCZ2uDIgpyOndWj7My4gE/lVz6
+ EPsWcuIuU+Qt27vCDzEOjxofuvMr6JqAiT0TMck+QE//ADGr4gFN3yqZagFX0PI4wANk9G0ngQo+I25p
+ Nx8AgOvvV7QMWj+fiARzSoFPfw6ccOKlss2AI2ZjkgaYEMBFn9PywC6NfmE99QZfw+vGwgmNMqMEDs52
+ HwF/eWEefHVM/FAiW9TNBdigU2AdPYgFhtnmwAKKglkQlN2kPP7Hadiw02PU79GJJ2FRUkwNhS02vCWF
+ n7QmbFzIxA+b9ZbEaESddt70HxiGolrNzwQDM3jrpx3jpB/gGA+hNdZTyKRoqDZ90/Ysy8L0DHT0Q/UV
+ hOiBzJ8MTGfUEvycFytEl+ugHQuunh/ojmsESdCkaJ7PgIpfbC91KQ4IxF1LQxfUonoCKsNP6xUQx0Di
+ MtdjOgr0tHJ5jhIH5/wgM/8AHSIN+bPBnkkBUIwObWkWhIjBEnRDFNDg65IaFQzFuLxlmSI0f9/wE7FK
+ tBSzNxhX0pG3txNFYiCDl1VAQH3A7FRCW6I+RQdySLBuEA6PgQt++hGAGbfBGD4oCjHQMNIthLiAX0xy
+ FtGz3lAVn+Oh1MFdkXDywOnoUjsgAx3NH8sBJdmOQdokBjDCgMiCxTn/AASB9tZIcieiGk0QWZTItrKi
+ H1m60Bi+um2NAJS3PbLATV7R3QLjCBEzFe9BpxTjpjg7BrmwnD9+OyKR39kgQDzmKvXYAi8bu/584Ri2
+ 5Wf7YElkW994jGhmvTSAZ0tGkB+6NFMEACcBDzNbRmRkse/xHWyCJoWJOziTIAWzm/3yvl1VwLhAqSiU
+ tmEBvnUZ8NuIqkh78iMcXphKGyDHLEPPQojiIRruRkQqhaYXYOVtZfFEUgfAz6Y4A0H0Do3AokPuXrxm
+ qT3BbogT/MNhLqGgnVUZRukg0VBVC+Ka7ziKZ7hh/OMABpn4SLxVDFYq6OSLN8AbOfS6EDch4DBf2rLA
+ J3cxVFPqiHoMg+UTuOi8w71dARH5qWNjLZLtpl/AoCDBZ/oAKMK7+gYoJoBzItMBSC304BJ/I+/hAMmu
+ 4YxQzV/+doFDLqtEKszFrJ1tA/QcQhbHpZpH8gTi1EUZpzSkUi4bvIBW5xyWD0JDy+akELOZ3DzGCk4C
+ YfQxEZNmFw5m14OevUQeyKny1O0AGJFVALqugG5nSN24EXHBOeQvhMARSBvfPICmNUjDwLAPSo/17EsO
+ tgijBBK8hSIosKBeezBDzetEaAoUE1kDG9w3AYHulZr/AADXxTiGq5RMoG6G4zrYAARXy8oKkq3sCiiy
+ FpMNitG0xmRXpKo4ANsgS2US+DoqiCsQ115BCwJKYwrQ3hA+jHLpAsqCXMD32Jf+xqECMu3DDo8xNkFF
+ 4KxwHsYWHAlTcB8DndGHoHq9yAi0MImK87HHZ51LFCFJp510agCvOwSh6enJ3SRYgEv2jyEkW1IDMzvF
+ CgfscaCJVBj2cwwDr8IaCOICcZKXvBQyJlB7OArkFWAUDWgBt/moKSKpaJ6qbb2BUddyqrVRJ7+AQr2g
+ Ym2QZkFr21ucuoAJo2FmoINeOD5+sgEn2H+lBBmuOo3ABrOR+EAMm1yEAHnND/QCKReEROJaSsX7GiuA
+ S3afeQVC8knS1GzaCvLtA0mxgrs+KAlLgQaYvx1yIH+4kr8CJVW7EIblEO9aVAOItdXnKHQvdLE4AAlP
+ oRpNhE9S3X6Ej9109oAFTnr44YBWUd7Gmr94UD1XQVcAEWkFf5V+zpBff9HiWlqgS/bSpXHDg8tGoJKW
+ +OwkjL0hXQvBGWcsIagE+E/EoCtZSfeabhN4RGeQx6orkMmgTTbkQIui2ORiB0V5yeQnyoz3sATU0HoH
+ /JoNG2mcAX3qduAEPtAZHGPVtgQwADHxhoJKaG6GB1O1QASAGTGChRAEmzAzvSDAmF/HVAZ43C2AU4AJ
+ Dp3ay0cDUmIgRe2hDwH6g3f5E37r+AtBRJoERbFgWF7ACd8hwzbQVboO8QwvsirqwWJr5HgkI7uTXCwk
+ xp56gQKs9ZwdK6cYUNmwVKsDyF9+2mDCxv16dgWqo7Iqdkgsen+yABV3QKX5AVRtZgX47COGrZQiz2dL
+ sBUrtTQ0JhYUTCK57G0AxUDBTfYWFE5EMA9F5ZV7sgJ+hGLyd/kSKMMftAX2m+sTApBlQKg2BsQrnT3G
+ Qen7YDcjIiaKBTxkPumQhQiNlpbyAcW1Tv2ACPXjyykYgnCPwROxJUUqSEeqPO2gSwCBIIjLp9D6PooI
+ sqfxLIbGEuVRPFCV8vG1vhkGOqPuIBdqBR61fg0/9IU9shTn0LiuVIxAJ+13iAJQvN+wyevyCD38A8Q5
+ QAnrSHSBL6a32YvlHLoAWbnskDjBaYJOClpDZeR0ZpuEuAgCN4WDfzGBxFkFwG4WT9Ycgu8QX4O8YBUh
+ JmJHDS58BNA6W9Q3ATjONSi0BmO7sf1rf4OjfNE2/gAR7eLMJ+jjQDsn5VgSUsbfZAQ5Zv8ATAm1Z+91
+ AKifJd7WRYEfrc0q3IE3nIVQVelWVoQzBhECPaRsDYd0dUAFKxCxe4TAkHKf7WBHs5/L5UCD2QAAN7/Y
+ QiLc68AOtNBUV73CLeTTHkXWTr0hhCVmIHqMBU4lkfNoFypoN4CAxaSAAZwkF1QsBbMiqAdCQ7wSEPjp
+ iSuDdGHesV6Am/6PcX2CFH+ekGMzPFn7/wAWmMA1IN5DeARcGKppLXDk/FeRDMfc7tQsQ5faH44pDNVT
+ z+sEAZBkxcM4x4YgM8ir7nBDzVMBoID9DymCJppzGd4UmVFG9yMD1isHgTcf2yb4lcx9VuJz8lycew6R
+ w+JgLIGgipJAYMnThScVN60Qz1MFaZHDcBI8bGQ+doSWw4IZB/RVPwRvAxf+k2AYX0n3EO875IguKLBT
+ /tST5G8BruiVAK75rF4ciFH2CjgQkGghXA8RoBgrZ6qQL+yUQx3tf9FZaWQIlM7VIDXWoYB38vXIRw/l
+ 1iGKpSNF1WwIeyAqGSuyCwWSNKAiwDYsj0Qmo/0Dy2R+ERAaFbQJ1wBIHARBUN/QzKB+6AwHqM5ttIwG
+ aqVYe2ETPyeNg65k7sQo/CGBVz86MADUrnlCovI2U24F6qCQxvU/KhogCfiiNFWXlYA4NezsC7kSV+XF
+ ioKL/wBEDmBZAYm+lbABY4OEyDULSAceoMIU4FMZUW6vLohuVXt2tLNeSxNeyoXeqgCmwK7hjdBgd6gb
+ 4JqH8v53AGVsyfJ7xFA24lmSo+hENpK5ZIg+L+dzAlSFjJ67oUHEMAl58ygxeiy7jAq3ACLuPJj9wUhe
+ x4aE4JCSCor3QqxCV6v8TH2bK+iTmDTBp6gumCFQOl6vqEXldmVRzIDc/sn9sX4tOf5wAxdSJ18TNjNd
+ uPNRoAqHufNlY2MLfq3wIlQVzUBgV63kTkgF714kQb9Kn7FsDrJwwEonwGGdmGaMkOYxM2PonQCehRJK
+ t9PwxnMOFf0820FEdxG5CTQaZskswNd5yBxmsUGJ+nNCqdHUfoqa2LPcYhg/RRoKCfogBL1ynwA90zhH
+ GT0jzcw6DAvYVSIBVRLIXalDiBeasL9LCAGBRVn3QQ/JButH2gPWq1VE3t1FDK4K3hx+gVNYLT0DjZXS
+ 1YZMEez7RfBpOYbW1CYGxD+/uoXyDtdnAK1uI49Ap8LbjIgcw/7oQFF+Z/CyyVWVIqgB1j2V7F1BfbMv
+ cH9MjMGV4/PjoOKC89tFJvkxakx8iN057jkoulMiBvuqvoTuAWEK4mBC9Z0hgIsZezoAWVlBgl3BGmqO
+ yplBGX1nkDkuCAHSQp/k0KzmYyqgdXs80rxKMDQPlCSPgCF56E1vijddaifW4RgJbbhAg5I7XkFiyqUr
+ BD4kAfAcxNP4AshFQpZu4gONq7rdIQWWy0MIL8mpI9xiBFckOS6AQFFoRm/KYgBSZ5ooANXG8f3b0hJP
+ CC2AkB/GuA4FokMuT6hF1MEUZeFyFGKFUvQRPT/+hQ5BSyFgaihtQYTY1KgQGqR7BqTLHdDcjFjrPBho
+ Al8oFCfXcgZLRABfexWDQeiItVFNqroMD54oEG52bNSAsBZfplOz4gllXkjNyBIlhBAFwmgoF5MBbXQl
+ XAyjdcqXrDP7m0VLRLeuTs4gLU9n1+oRPypAtIHP/SEHXdA7ouDRd5vR1IAxq3LJIC3TIyICnzGnyDfF
+ U/4CEEVWFQAL+u6VtHUCI7NUE5UIsdgf6fAc7eCkP3MAYLziFH2irGR3BgvbOyaqkkH5niIVfiILaJfU
+ ADcIbVEZoAFYAHbIQQyMyEYoQ9WucDn6Ckxbmgj9H+rYAwHEYt0mABIcsGBVIgCGrDhRt/AgTcUWnbnp
+ Xn5gSMrjmMZbIQTnjzy6XAETcv4nmG0EZoAsp0ezgMzfgDHQtIC2wHJ/Ine1s0IIELFdQrMfgVwzmXKA
+ CY+LULgBsFsD3OjMRQBDb4BjlHomASWxk+Ff4Cg9gGPSQm1WF4JxTfDS4up+iSgu1gZ0V4UL/goDliqk
+ PO1VsCmYBzMRo5obw0RAGc+SmEAxEjGpYW4GS3ZxjhAHZv1umvdQD2x5h0sXVqwF3Y3cC4/MQDNLTG0U
+ vOAWQpH/ALwDTo4Fg9WgOKRF3yaVCuBsBBtSHArGIYMVvipUr6AiJtO8ZEOgHRL9Li1xZXDjSIArtnrw
+ HNulxuEhQ3j4wHWKRAkowhb4OmC4jxh7GEMXQBZ10DeWuzoGSC8gEozuIF8GqQ39obHa5YAbWJkGkkU/
+ XxkO8/DnUicmte6zhRDp4mD02qBEZhJkwrAB7rh+dmAMqCUCjyi5ALmZZ1DjEcSZdA0QBhO9Dg4AF0qM
+ b1+4OfKiSIGc5Bn4gC79xUgEUWJvdJTr2yUkFI5eMN7GkIvc57tBLun8CJHviCMLrXkBMc3L3A5epk8B
+ +ouIiOeo01FAz/DmQgEcCcUeigaRIOIixLRIJDaXIjvgCa5MyqVXLeyFrHepAu/xIAJDrmLmzU64A5cz
+ XhAArk6h8vr2wX1yPPwF+8yUMhBJciDgBdq6GcgEIpsu6A2AwplXVlUoWKtsgQH5z1uBJmnAMRFB+UFU
+ A9Ey7YDW0dnCYqouF/uBV7b0lQUxvzWLbpokt4HmvrloHIOV7QWDqKXwqn8hkXgqBd/cioOqUGlbP3Fs
+ 10Y+1Auj3MA5yGoJbcM9fxikn8IUhE9DYUGxXexDyroAEhZvICabtXofscP0SRD+aMYEZVFlFbSmMJVU
+ AkyLGvGAtfoH05aVEsww3a37WgH6LD7CorZey7at8gHH6m0rxIbfvGwEDpFUxyCntHVQAUc8pbXnRN74
+ QBLKVvPAp3L1qBW4CaWgN39As6CnfzukE1R2rvU4YnSo04M4M9ODDl9bNoEK3LTgKkXshmG3YDumcGEw
+ gbkatgLQDZLFET77IO2aHvAimcKgxAKEqeVARi7w8FVPacYUvsDzhKwrPaje9DwC1oCVPE30h5WVusGc
+ VMEAgTBQSs4EgElorWQAqvr0L9IFZrmXEz7sdpFh12lAgi1AUncCjboOSYY9jVbgfsw9QIVgTj99u52G
+ nGeCsDnjWQFGWz082X9DahgPBAde3Yg6v64YuYAAp/TTMHFmM6QXCdqbP+wpHUzpo7gVzTxhT9v8gV/o
+ wJzloSKnqQhOIGhuHCzQ1XUgfE96yOwGGgqsOQRPWLqFJXtXdVOXoGnFXQybonGcJWm/5A7FtTrdyAGA
+ eV1gXIaSqv8AaBAwOsDQe7oXSN74AgQpT+5mMhzZfkgJm1zQmtB7vo9kF/uNQgHTN9kWL9KHcfUwB6Dr
+ aBqNTG5aAi9iECDRIm/eLJlxf31q0wBKuArl5b6UFIngcLd4hAtxaYCyMkgK+/fHQDqvZ9YPYayx8GXs
+ djAWFUFo2otJoT6pgJDFVyzQMtDuABPj2NMctfUFTmapoouKpVoV/AYsqiGCPkBhWs5FgMa2FALnkap2
+ I+n0P8ArvfvCDL8RiCJ4S8gVDXaAzmSQRp28aFCIHMjPDqnJQDyOhGgiCVWa4HUtxruMfbIVbMIBLYOW
+ /wBzACq3yxIyS0la9O8XEZ5d+YdgNxYXGgE4AxvTcCPuBOvpdBi2lvKQADofcAVOxUSHkm2dQPRQMWG5
+ NikA/kR24b8sdoh6L0IHFN+0fwPCbjr8BDqStcH+7wBYWVWemk/N7KGZFeQQhEUdQKqTRMXGmb2Cxj0A
+ AoHJQhnUSeSCi7YALK1EL8gfyoQ4CZfkzskpcTIAibgc02pC+cVR+ABX138hobIqhbou6A++yvoZHXXi
+ NgFlqaWQtuzY0EZORQ7U9IImaqORF2kxgomcnH1BaLkFFwWQSSskBRN8Vqs5Z9IAc6QJb6kVPzC06FP2
+ 6wMOoJt3wk8CeNybKJeXfkJM8ECJalPQBG3QLMY8gHRevrgeE9qwhcDtHRb8gKoSNhCrgcPqFURAC92S
+ gYj6bwadEWzy+QvIWsH45gbDuSZPXUMopCSSxs0s9x+ZsxSAEFW6qMfExP18wHWiPC0MKevlYjJ++svr
+ N2KoOzEVcD8DiprY3JPx2xYOAiPZBBK7oMHVoYvk5jEFYF2pC1dYE3wsVFfyL0jBFInsqEHTRhm1FKFk
+ EObGvApdkaqUAT/QBRU2Aibh/wC4U+0C4QjbXLA3EQlPnkCT2koRb7J1E9sfcRGLU15WZxAQ449kWeyU
+ Ac867RPYvsCNhbzrXYlBMo2E108jUeZEnAY1SBlGOcM7MB/I/di5w4c1hluRF29x9GApcZvs5C3drGaB
+ gw/AQvLd5voHS1GG1VaebkNN213RsEyK0GsMk6WKuwz7QYDXKpHSllbgQX8OfIAHO54q4nKQB2i6B0AL
+ qABFqBXzfrEBtB/9RALNLTaYAVF8MbRWyCpNCfxDk+IABdbII6K2kegC1sgdtzsGbZ9AAtm3WyUSIcx1
+ qF29f2shC6vSdIpQ+0fQwci104+wqq+ePJAg+v4QpFUsVv4B3VAIGl9lfQUbY+1PYGFOQRKBe7OOlMK7
+ u0N+Am+zBc+xEZ/SFIuR+QNHUJG2CLFgUot3M0SnCoyB2aumEBR7+oK7l++DxRau+mhJrsJhRxE8Kdzu
+ OEEtB1y1CF9RZEyN1fD+wlyAK0WiHfJCLJ59zsVFGXnDRGkDBxazpXAI639PxXAU6a0DHehMO59AEGhg
+ JFQ+9sZVkePC2gvRgQHBxWz1f8wZwAmDTk2hsUXpzOy0H38EPCr1C7vnz0E9IF1guP6BMT7VpkIPKbQC
+ 7S5LDXRRtuN7ypU7SADP3h6kBth4CTOhFdRJ72Q2IdzmtIAo9Q5wJsn4IDQGeT2QZTytwAi/YdDAAi5Z
+ VUEouzbJ9RWKi4dAzh6YF2e0oLdAfsQg4UK7YDY/VDyA8kOrAgDV5hLqEEvmj/F1HcSj7Tn6QqCga2go
+ kADqlFQ30AMoXpjxkFKKnGQJyeLj5BHdLaK5wCpPtvoWJEWPByDjG4/bBI0Oo23DyArlWaKzwVzySDyq
+ giuA7+PQr8cnWXgJCLBVqpRIWTfrYFCv2jFqLgDvvGjRZoVfUIuuXnOctE4Coto0JkZEBl/6yiy+IOi5
+ QNMgbuX+A4tjD4Yvxi5cpdAWfI3dgHiCAq/L+9TJGynEDxrpSoXoNLev+YgMuuDikAtVTa2ACSdPBad9
+ xXitKCqN5J+e7IRv2r60ABYsiHv8MGiUxvmU1wa58m7APaCM2SUcgX7V8UwNfJUwAiBvkxpprdN4IJXA
+ cnCpqFygcngyoAdzRnhhFsF5y2eQk6QgoaiQZUuq/wCAH9JjjxBP9CU2AOZJQ5geO92gzNCgBrmAaWBY
+ SyeH+wgVzgQ16t5CpoPEK62LH4gCspT+NwRf6X2cUtXOh/N6Dzgs03fZdBw0vr+gSkdK5XB3kkCqfzLA
+ fV4t9Ar43pFAAJyMNBB4LGiHmZjBN84bZNQlE8IcQtRxKJ/BH6kEUVSI4Pqw5lwnFCtPvkOhBMgrD6hi
+ lIhej0ZIuMbufiCi8d+3OwM+94iP0uxHVEAO32+gL/8AIv2YjPH/AHJsaEJdIvKHKyEB3CKTqL+EOt/0
+ RSt1icAm5960IE+7fFCyl0wiBgonFT0HwO896GrxILAw+kVTX7SAhDF4GG8+64F7hzsjtLB/zLs/gA70
+ OSvAR7JF75ZiwB7CwZeLHYAco0Zqy2wTfCDir5tIDiCXcT/YnyTdBVjIFjQUChufIUT1gv5wm1Vrf9SF
+ +zoah5KySSiJIOhpbiVgJvzwEqt6YM86AO/dGpYi/KoMgULThCJ5NE1YQOBvFK+6AfU3EFjjYBFlVd94
+ FtfqKAOaHLISpvYJA+0K09Qv+BDEjMR10tHxD5DJF5FcY7/VBOKsVh5u7D43Mbg6wAewEdb9St/q9hrb
+ cFZcUG+pLamgV7kTTuEwzwG8VH8J1AU8h0AlZGEQfsujWCTGnvp1jECnfqwzpAlmFfOV7uDaBGInTa+A
+ RYCF5+ZHheAgfBTNiyqvShv1LnX5I7QF6WirhkPczHdsCkRDwETClMDnmaBrZ9nfYtySGD5sgpDuaosB
+ 1GxyAEjoYVYD3Mx66CjTgQyn790kjn6GFvsLeuN/YAZnBGeU6pj+Ai0YjuTN9qrfCGbjQ8KUGxoGIjK6
+ K1tUgfM79Mmgm+d6MBJlKaCWkXAG+AIwiw5ODTBYF6KaSBWY+ByL6s8U5BJLEcBbByK+hTs8EF9cQpU0
+ 6b1OgBxIHOdufcygPtbU2AFp4M7LLi5L96ESNprfH+oDQ5sKIJaxGLyECEI34YZoFLsgXXcPrDQCMzEC
+ 3o771QCvzn+YDJdg3H/dgQRcRVPsBGqhe3qmR9jQRA6TNEf3J/nb50ZSI2D/ANTLI3FHARsEzxi6YyPU
+ yJCBr90uSwCyxe+UDpwIFpeGb3dMjSu8k4YaxrGqPkAHHqw3iyqASrUwATsE5mvsXV/lEN0kB9DSIdw6
+ QCLItc4eaRJUtj8iivYZdQdy5Y9UBZVvI6smOdJvtIKlrQpNhTOoN8FrNun8CvXuOBIyhG+QE1MffBEn
+ zLogES9LvQdmwNHkoLjgqhP+SC32kBLjYP8A+MY+AMXm6cUQJyqd8PAE5khCUSDJ+QZCLmwm7/AJ/Sr2
+ rDzm8s2pe2gizlYOtSzUJMbE6HkROcFODq/YEcaouoCcWnAHUkqruHgIVfnu7lB9fygClMyJyAQeJrIj
+ zmoSFEizF+Kbb9AJN3M1wQCXma7OXYC7pw0M23h1ccQ/CUDYk2dNw8VTbnwYGM36z5g0dsRD+t2s5E0T
+ +jxRyIT0QIRY7aWmh4/BQU0sBNJgQLdZsHA4njueHfpYy/LBVGmjuDjSEAmbSINZI1CuhPFVMjJ5MK0M
+ JIrLddmwKdO6kQADxo9Wr4TQrXEwXpPAEwWQn5SjbSTLQL6l9nR8Amo8S/46SBKK0iYknu6SSEfMfU/g
+ L604UBXOJJYE3QNnSvxfrBvUb4A6w3PECLbS0ZGYROw2EQnAZmjhgFPmzwIKKkg3UgkL+YcE95z+lwBZ
+ JqikJzekbOHCPfAe+WB3bQk7i6y1g4Yk0KPo02AC41edLxZg6BbAwKLNHG+08LTEyJ59AntNLywOAqaF
+ +ei/+RriyUQAXpQC/wCpBHTwAn6BMERpZfuEfHoWMQHhQ4/0MDtXyxkdQKJv/W/AHH1p8YmDv3IK6rB5
+ kMzDiKT3EhTDgz2ZAB+iTgUuQFGhY9nbibkXHqUZlQRPmGBpNgh19EzY0qUwsmqhQnR1ZELL6ZHuJuR2
+ aSKhWZrbIMqbBN7b8hPUR9yXXtnFY3miiUZovyq8YE6Ahw6Hq0g6Nmhmq7BxOjOW2cg5SPdCG+v4Ro/q
+ EoJeh66VIKYhLesABq0AaKCm09nTpVtAVFwpB8DgEHYUPT+I1LFYDFOEXEga2v8AEJ3BB82iA+MSFBMO
+ Qvsu4iCsmN+NoD786vYaLFP9PZsBFNjflqIaBPPwmIhX7VIM7siPt/prFI47giIEPb0t6j3IHblBgXi1
+ gcPGnNEjUuaca8QJ9/VkdE2IS5weTQnR1CAoBHr5TgeL0kHwCbW0GWMXbeeoJ6acNS/IwGSYjb3IxKJf
+ ghHGzEneovrI0B28tEiWPH8seH+GJarQxGI5N6xgAIzoGKhLqgKNbM9bVDQkksCJxf3Uvpqm7cJewzho
+ JPMLKTjpHse3t5rsCfyimBF6u9gR/t0Ag1upr+qgGh6sSVjAv+oNfjKGM5p9kWIY/fJw6EHL5O1weoGh
+ 08G1bfWkAQQka3dm4Wao/akaUJjErGY0sCeNNthawgv2lZPGE6gx8g0JtHerHFoebcZ4ruKQMKG4Eu0S
+ 2iAURMnAoQ23CWqDsDoLtBgg/JEAaEZyw9u+9g2GzWboYBSo11lWECnbQyJBwqFPlf0oSQ8v0mxwDs3z
+ EfARTVvkKzYLisYGzWigQhVQdTQqgG8DEA7tHoHmYOpPAMZz++YJ3VQdE8x4PwCtXIiQb9qutjAEuCcF
+ qA+2aQ2QXdy+T+hb3d27fsGw1+ir2B3uQN94AXTkIUs8AXW3CBLKkmIUq1vHcBN6BaDFbaiB1pJwJCYN
+ E1GKoHQNFqUcsDGzXLJWgAhTpHCONP8AAJSf6gA6KGBvKC5X29rhIyLUcb/tQ5opFw/oIN6oKwaJSrKU
+ 4buMBRO400A2pIMJte6YHzdBrEqQ/IwwHB1qRlRCucyExFWDkGME6jV0sadTM/3OON6liNuzptOBYn+W
+ TvcyuI0acSp9cSpdA5TV6AZRTs38fSGJijnY0AOZl4722Dvab24gkcPd0aFt/RfcwinVmqf5AgmDAU2A
+ GHorrG9QQ2JyCBvV1+E/CrQUdVzM7gTm/U71KRVtpJ+IwpqEvgDcGhZO9Iy78YPjmYGCJy92I4A6cWBU
+ ASecKgL3WEFg2BCFbQNyAJ9Ogj5qgHMYkBz0iyJbIUdedbn6Acf8YRXlpmQQetskMT71W/YH7HgYD5po
+ MVQUEbMlwHQgN/igKxV9+CzqE0zsry0DTZmTE9rAdPCO0IwFMlALeDgq8LL/ANAuI7xdsAJqcOGCxgWg
+ hLYOC1zOMpIqnqlcTh8LXSDPTth2q5MBnySbiAB/b9C0Sh/DxYYOFyAg58oCCgBZjHNjQkmQ2MauBfsA
+ oTHAfKCK3eqP/kBkRHv+HF2J/kPFUcPrS4Ak4BdGaOgmwSl9oBhvY+OIBBX9Z0RBQi+0CtKlB4ATBfQJ
+ QDSH1AvXX0VFUu4M/OHaXZFNMaNhPEGjCMAEOVUOEESH+UiH/pZYBEmVFYUfzn3IApP+L5M1ByVy+76B
+ X4desdBK5opkufiBDAxXRhD1lAOmkOZ4+5PErFw4dGQeReopAKQp7yBhWO8ILE9Dt13HTxWnMlYhVUtb
+ QRQuiBYvWcXyGZymQTAXCfsT1h0zhunAVEkErR6OQNFqVrgB3+MstJuvsBD2jwBuEkUNDby75BqwCrDG
+ 8xd3ssC9Db0pA9PHGDEhbaIgupsIwLSTTccKem2mUo/RoVSUJs6npPB0Amq7dibUgq/CRow5xVYknjAC
+ xx57X/DVaYml6hjnk5+odxqFf4Ed3RQWxoPJogIeFviKsLPWEcp0Ag72nqPAHevdPANklL51FbjBz+tA
+ 9mkuuqgtyBmqjNdx15C01j9AwbyPlFTYIFLTu8Y4C47D4tD6ZlAoMK0XBzQtCisHon8m/SwGX14D+pIm
+ Xgd5CXqWg341sV1OsmEksC6mEOiAdyLQx+Gh9+nFQXvFyawoeafAQJavg/8AEKsyHFoCTGPDTyjpCqsp
+ o2UYL5OChvyLLs3ufgM1dEJi7rLas5NG4v8Aln1ACX+/MyJnulxgQuafSQI+k45fxaCLv9AswgdloBiF
+ RVxAjsTwDVVVn4BtKGCjJPw0eskUNTP1pHyskOh8WgCeJoo6cPAEIhPNjPgIpPKh4dOH2Ml3d/EbKBeC
+ NAYpNc+jFJN6DodQOe2CtoWiUZBhlJXpoW87xEOjyHOMtvZL2XHhWClMi3fTuoMtJmwHCJmPMcM8tIUS
+ I6fAICD+PdRd0JZzae6i4oHTBIQxG0gWfskGP8ffwSSkNdD1iQHM7BAE8ALqBidGklt/QhbCDq68gApZ
+ tEeMQl6df6UBwUqXC/nX9LYVAA+4Ix8SB6B+chHM3iBCVd3duwh9S2ezQ/wpe0kdiD5oLBSFqRJ9yram
+ 3KQ3+4TNzbw4NizQYe0A6hBHonFFL8hcKiBnNdMQyfZdVgQYY06mTFtp6B+vpzsAD8If7zA3W9d0AFuJ
+ kF8Rtoe0REWPpXDM8qALZRDEALLEbOYSXztmhSi117bDY2xVkD4W1AtW4BKYCgySB5oJjPxMGooO+9Zh
+ oFw3hFshd4E6RQO3cgLkBeRZj8lQAqJl1AKd1AYQVAw0YJiFFpqqmhhgvkJ2JTwe1ywxTCQ2LnhVg/8A
+ nQ+xGhF5bb45SFJxKgRWGCTogp30zxoDKBPTVcj/AAGtr6ZLBXs7EWFNYseCvzWLwH2Gn7rzleDtORMo
+ gFLPPxvEAsnpE7Yvz4Io4HbyOAH6Ap3EADMjD9woCVSygfANHSUff6+ELWGFOfNH5O3YJLDqoZ0mmRdA
+ BiVhzziAm4vQSpCsAVLbtlxApnBRXMG6aCkL7TvlcMwxB3XkHZl9FNMI7jtxIjYzaB/wdjoRfGTg97CA
+ u1k+3CoyPQY5Qtw+csA3CQx6GlUD6XZB1AFaaUvIVCll/pMw690F+iHQLOIAjnN5eoBBAR3BL1ALyyAh
+ En/oMkQkytE4Ca7LlhDB+CNtt4XiC7/8YK2gEoCNJowDWhiFvITyiDvEwJzEnq0CkS7gAIZWP57BO5fV
+ jQjfYdUDJ44H+l9gXPyXJoV2DQd9E7CXa0gRCQ4ET/FaXglXiC+mWZoXPSBzuDHN4DrRe/oAc+sOYdiA
+ C4SRMUWFEmyEhUwfi0oWn+pW0iM7011VZjHH7QTsAqPDF7QTVQ6mCrYIsECOwhj3HIHeg1EDas/AGy4d
+ eEbH5AVIqgIBKDZ6JaoCLPBIQtAFcQIkm0xEaCNzF8A7GBQ5Qi5PouiaEG7t3XPHADepIkwgCMxky+1J
+ wMvkg7jICvfuc0LUghcbSEK+bzja17KwlmUBiaw8+UBa/fJ4FXGgrUBUA7dsDReG6Eg5PCgAV/dMTsYl
+ 9OE3bVBAnZ8xBnShU9dUC4qG0fArNkfoOhf8ggrMsBKBF5eO2wZpSzj+sKj+hRPsEdnRo2EF7ivQioHc
+ PTEVtaQheugJrHM6PIinUJNKEpg4VYE/eJ4XXaMD5NsgOfxEiqNlC/MfFgPAwy1AcKtgRsJFE52BvHRC
+ BXJWx5GTW3olYi+MJWDlPowE1cwJHf8AEEZyg/gUjKqRRI30vUf0kdkQ0+APNttL8v4XXEMTQgGSt9UM
+ iEbQxMV/fOyoWp/skbWRFmZuGPBS+9ZIK/YDgg2zv/cxdzOqMjdopNdduNbGQRZ2vUAEw4QCuS4BHF8+
+ QIL/APXG4J7MAa/aGYOARa3N0YIBabCKIpXgOAC2WxHTlAxM+ZMHN5LtdGQq0tyBZpi0oAKyQNJW8NFR
+ J4kLekeGAPv03B0A+0JJOpQ/2ARygm81xU0BTpCTsFo8EHKOqY0gY2jc0cQzDsUw7LIB0+3HjkqpCXx+
+ jUaAPOJjEvAGsLSAGPLSWegO/AUCCJ9Iv2CBLSwiC27o0QXDlDGFcPUIprCqPY7Db0WAB+DTYAq+CeMB
+ N9G6hKZX3ZkAeq66iIl+myP1jbQCm/SERuc9zBdIqIFuiBNwk0aHVH5MUJKZHVAUOZMSABTbccsV9VAG
+ b0qYg9rGkx3mCgOIVkEQCTXISqcHsMdglkmTSOiPS7B07+J62DqlpcAg3SZZO0eeVwXPx0IG4AH0H3YH
+ 1qAGeQfyL+nadiiI7AY2u7zZo043+jqKTQqh/rvAtR0eZIZLxvOQEtfDZxMgNYguMVSr8IJmoKBpz1iE
+ 42GeJIb0y1thEDeBsaWNaPeAOj+UgLagmcFg6RM1sDELStrgHHrsuiTbI7dWhF5qXelczkFX+QQBaXBX
+ JWz0Ag+zra8+gA1IWjdxB6EAmzzaQVL4PT7GAVSOK3IAZmwvgHngnguITnVfftCGG4mi3b4PjC4XTkNA
+ mDnRANjvniWlCDRUH6QXAKOAF/8AXRiemBGvR9icDse6MeuKWhBEXrQiH1AYB4IrhVaBKjX1XVIdf+C5
+ lhaB7VCxRyMTQvIn6h1LCmlUeA6xPQxcgmELDRWqIJHM76SHsOWgH1cMPccHEBE/S7wI9E12cSqofUS/
+ IryJi/zQ1afjEN5/fqDjvNM6CC/rRAbCloyKNFJDdGIH/wABI4FHuFb5AJIyBU4xaJRRJoUqgCROOSru
+ pdJu0/ALfKJKbgTxu+ncx5xLDfRyIKGD4kSJsd9/kEmytanbKGIEE4BZOGhwF+oS6sKtq7ivWBUqTBAr
+ FRCP89xwwLE7gR2jAYpjAMHiERrIWsbgjJUoCrdEyqHyGg+PsSHZ+KGAA0r8u2mDgwOT0FX2mgIvc1lE
+ hieHxBNoQpoD4KCuwhfHiGsRukFfawv2IzuTkYUboZflsV4zlnAF1cAoUUyByMvGwj38+lUwXpei3Aj1
+ esoUPw0bQCKiBFxhSkwqBvp0jAFyCMG6Ekr5akTyLXDiKvfS+6skgTBzUGe+1VzcIrX4EJK8JGFIJE+Q
+ 7PIWB3ib1ToiAOvlzAh6bTdyKknqaBUA7g8z9ZwPAkBBxRIK/wB1CVwV/EBMuhBNXwHoTosb6wDM2YSD
+ W7g21rsNNe7o31D2gVemeJqQeS8NQjwgl6UUlAH2P5IJj/HtRw6mEhIbw2qhG0qTt0IBk9j09o7KvOH0
+ M5hU8UgVOQIW15PLQK79IiKBOawSsNeEMnDio3gAB1IojABHy0PgKuHQOnIUQ0aAX50gA5kobjAs3vxr
+ dwAK9bZo4n+vEBUPICmz+0NUBwHL66HQDgMwIaJs9APNbIITkHAMbN+0Q2bCCcuDV9Tbo/5DUIYjkJRa
+ RBdJdMI+W3Hl+FEg3C4ral5CIUp4KHaWO00HStLb6SeunCs5AH9z6zugw0Q+3GjQmB+1X12Ky3AEDWFl
+ HggEdngDdAitVkiICq/O2VmpE5VD9ivLilYsCV6+RHMiouEyW6yVpVOYRYZkdWcSAvshlpEE4UnK/pXO
+ MlNB6Za0KQ0nfb0NRAhIDqRBf2+mYdaC90Vmt5FdiYLT5G+fqBI96amKcwBCl+uTLS8CeNdhhC3vMfLY
+ I8sQ8919AvXlYjjFhEDClny6MI6nGwBa94ZILQxAB2a5l8z/ACBbfgPSlHXDboKUk/qMUBaT/G1oAvVg
+ HR4r9QxZv01YdqbaBQjUQOAAcJWgD0lYc3gjayYeb9+oQ1HM9SAcmtxW1vv+S6ZVFb2T2AHYMC7X+uQg
+ rIdyVYZQ8QrKMpmCOrYwiuxxE6aIHgXyRHc5EzVr8FOcw8BHklLd0CjzkMBp5ZLEJeUEo1MQQiwxAK3J
+ fsBAG1P8kwQjEOpUghwgTwEDJKGwIzHXuHERcR0pL8MgHLVKATBZSnIJgqsUAew7F0ZV0gCbNoYVdzQm
+ ehvO64IbY8EuUbrInCsv9mEbAOW60EeCTFwK7DADvNQ057ToXdkCN8mYl6CZeqGXBtZZcYyVu1Bb3qj+
+ AHAPCLoC9s/sAiKiDRAky8FvZzIFLRTa2QBbmgCXxBSAXW8SAUpUGgqr9RNlBDAXnbOC0/B9Nhd2C/Mb
+ uYJeBMesdTSIKNy0zQkrMmMbOwZKyOBMEyb0rtcvgFGNNMC+qgrmWHAJ/ETUJ5dfNEuKgmYlVZoREdMg
+ Eor5nQQcq/DtA/R0EXlUgxu2IL+QQBWeQhuXswRG/moKpc3sCvIjf8LDINhmdQSw3jmGDQTlzmxpTo5m
+ nOwIIrLoEohskIFS90BaB1RT09AFxzZNGxJUrM5REkuNq+RJrfRjgSCUmjyED+IRoAy1Mr1tNEgFEl0a
+ SOoSs2EV/pAJn/EYisQsARHqE8OnUPotqG36fHnOx3whPLuDmaMOEG0swoddSSJ/D0P4EhxnzAjS9CJ3
+ 2YzYU6mRSdR+WO/HAxX9NgwCr5oRQTA3CCjE1ACRBYSEZP8A6ZGw2YGElSo6Z/IJxusjoC+2CzFlWBog
+ lDNopKS5MLM1aMidQ1n1IftTwzCfEVRcnoH31zhe+Fx+AZ6gxGWmhtwnQ02uWNOT6jDHcHtHACX67gSg
+ nGB9tHtfsBtnwDVKKfMMIzgn6Wh+/Y0xfrhDwyAMH5hfYAcToP8AT7AoiyPBKSJx/wAzkqMJSEaBbpUb
+ fGjwFZ8SosKygUCelYA4zElmQ1gdRL/8NjEoQfsNLooAFSBMCuDBEOiipz9JH93qaTqszf8ASaWtnOyR
+ 2sHKqHSgkKThD93gpcKkJiFAx46hD1KnIhvkG5kwBPpxL5iogU9tJFa2W0GHeRbL8kkKUAZ5COO0sPJB
+ ILRW4IeSUd0RQIZwUr9yQoG9n7AVJYYTSV355ACoNYkK7f8AJgXhM7tGkItA0WNH8AX6y8Gjw4VAYfjq
+ PEwNIqj6WP7FNOWm0Ew/FNSRF3DnQUP4ggbRFPS8Y7p5J0EqjBtdXMbLH6JHBPjh1MoP1QfcviA0bfEp
+ 59qUI6dxmJaPo2K4UQZ72YnwH93GlPCkCCUAB6FRNHzVMLEwNQxRKhEaiQL1BRFBooCESXN+QYAd9YXE
+ gEMk+YwvHzrzcLyEiu1j/IjaoAV7vKBWuAFKJ7YMxQG8JQpZgDwFX74feQt5x5MqT2GxOp2Z+EBtmLed
+ xzyhv6PQpQvHH5iPVUFdhWpDXeATET0CtoxI2YnhcP6yADucItP+uRexaA85IsaMm9WkQ+coOs8jP0Cf
+ QkGSC23QGoBFf64LpekmYGHGmhewnPkKZgyRHQnMOe0i/AduoFmA8yLZ6ANaVMvLkV9Qo8Wu5sOiZldS
+ QeQOigII3BRnaZINIElp5k4SFpEW49CWsWJRkKQ4ytA6dd9zFRog5RMjED9BhFUQMAoB3vWZGMa6dgis
+ TOaPgLZhD0Qp3YFYiIghAQNc1vAvyEMqNBo50YIUClbIfcbNAU2pQ5Ez45b3Ea3shZwGQEoBGj6A/g7B
+ N1aIjuBA0SmQjAKHU24Q7vpOGkTWl2FVHYGdWjnU5LqWVgAWjM9b7iRS6ZLosSgsRG419AoATpRuaTyW
+ SSl1oLOpCxkmiSAaWd/sAui6sfRvToLt5BnpaExU0CNtMIBW1CaPlwVZzhE3JCXg+JgBpaEyBocCC30g
+ C4kJbAotsi6kQK3ufpjqi4MgVwgnHMiNaHoPoCJaXFIXHRACRrPsvoxrSSOTyl8H4NzIG+iQZHggfRKk
+ qmU3IFUxcWsBrel7GAqDEcQZbhLSCr5gAABHDubbWrAAAXYmBYCUk9oNZR1DCyAzCMFQKTsE7f6NUHIg
+ 1zYsfBIwvDJmmQJRehki7xWBNOS8lhROCPWj9FYWhSWDu9ZfeWCNJmKe2bjY+ugxfWIWEQ/A8AI/sDnJ
+ gI9UetCB3fXhoZlpE/8A22gIM1uBL0OLgdpY+1A5TdKaRog49QCvbZIjpTAP1FSloSJvQeLXbgV9gW5B
+ VmQwwUgzW5SqF9Txz9hYcMBzIOwl9wddAzpr9GiN3NoJylUHf9AR+jQ4n4iRNA1IZuaTQAlhE4K4Fu0d
+ PXJ1HwGbpXSkJAjqTwCdwkyBL0Qdht4egRa7+ULa4AgR93VcAoG0g7YQATH1kZYCJ8xsIBz+1ILj4AAJ
+ rjy7yCDJsC66AgADf+CBkgtw6rk0BD3tcmCCS2dlaKeQqadhQA5GxGkLg6dEbjloPA2ifE1a0RE9KtR3
+ YaDJSJH/ACAD3IohJvX6Q0rZXvKkgK3K/wCAARd3WDRibbxERmh4DJmqBNthngiWejAmvbuADt2bEPz2
+ GgqQ0Yc4rjFGhCH3aPcscH0fwQkEFtYRPow/Gvxa4DQV7UlwKZS0J+FSQP8AHj9NijHOB1ElGwEAjscq
+ wFysmcCHYG8Q2AoqCcDTg99OqTBSdYVIhqEtJtcvglh/evwH5qYVWokYPsLCdQuziQExd7liL/CII4gQ
+ wpdw/ofckptBAuMC+NAL3ekIAY/5PMVQADKNocczBigsJRb56KCCFekmcRANqeq15YFwAAkM2NYqAVTd
+ RuKaAMgu+VcCwT0kiD4dTLcArjYhThoMjDhCe5klgXMJgF4qeoIhsJcFqFPIZl7ynfAiTosKv/AQgTop
+ RchpDlKTiJAsfMA2OlNH+TEf2dcA9gmU/hNpVkBesik5kLnoZzqeAbFoiDHsN7kDUX33wI7H/BC1ia+p
+ ONRyB8iIopmCvd7caEkZgeo0a4XZ30QMiNeE6+V6hPZ6TV4qxngMtxm5SdF2Ka6AemMkkvTTGI15BBGs
+ V4QE8NeYqPo2gDaADfsxg2oUghZXXU0ELaArQxj2iWc88HQWQTF8EtlxEhOS5xct2Nh0vF4D9r2tYAPs
+ 5wZiwAAccJ/uvpiArfTKVR2AAAq0UtcMACRZ7YIcnUMVTrJzvIAu9TUrgCAAAKbyCMdAAADrikMJEJBc
+ 5ktoebmuHRzXl/kDVkFdDoOD3TYnIZcQxpeDYdAygfYCEVZDh/sIRz9w6D9V+GAzNGHoz1xEbzRoVs0k
+ 4h0jQrAKbrsRH69WA+vVBC4JOpSUArC7MELJrwF56XMSANt74lCe4HAcjUb73AB34BITUMo3AbgLikIA
+ dAEwuwK+vFHAxgqSiZ8mPQBSeKLnSCJ/GZGW5ZmYhfeGbY04DApC/mAOawypSN87zVs4ATcobpKJCJrg
+ RBJAc0UdYYBvNFixQASftEHmm1JIgQ78kgWckosT+BLOnBDPwEHVB4vS6jTwMAaHfIb7UvAsHMYcC/2N
+ NRPRRecOraLV/WnkUZu3Ke2EAOn/ADcNUKAARipGr+JNxgALDd4SwAXQIi88NVP0EDlxqIfcjJAOrvcK
+ HAMmjp+4osCGc1voXCAAJBpIWIagAgYt38zaAAr3eFsLcwARM2D8+9xmDuwjeGmF4KEUt+x4dkRDuSaH
+ oIYzC5G19xIA11fd/umD+DihKdnBSA2DU5ABPsjN42CCf6MfqWU5kdrqKjYIqMeW6oE73CmrCCNmdH18
+ ivwCEuDHQML6SScvH0domm4dQRBXj4H4bWUyYbehDBFIPUi0WM0jAFX0BBcXQLTQRfIateqjPQ2Y59MG
+ HlyIn0EqYCq1zINih4gkG7sDe/LSAwo0RAKo25NpBcANiyM1mUpawSKm5FK1BA8ygrFVpuIIY1oPZxb5
+ gBQckh8FkMSoH9A+Sg96o1hKUEQSB7QEPrkNoxb3vf1qomFhwO4NEu8U24gLekiGbCWhyaEwYxDuGwWA
+ CY/iXmZJKiC+FtQwFJ4us74Acqa/Q9cAAAFza4+7iNgAE0fFPUlATG7+Z1haBQIrRS/DzRuq5jrAAIAy
+ VCUgIQEUrWZxCAA0IeDEwFzGO0HB86tNLnSRd7ArnywMaOwG+5gBfAiZBh4u743ogRqXzmH49eJ9/wDz
+ FG/xBVu9KdBevNmueE6O8E0NP+SmoV1B86MKoPYQIuJh97ltEW8BFQgdPWdm4YBNXxhpZCLSIxY00tHP
+ bCudAqrxJPsAJVk2KAoxw0S1QQ/FLS8dJP4Yot9yJSF4oYY3kGPS7OAfMEdscjbxIJvb0RfZi0q8AzO8
+ mEjMvXrv2gep/wACMndgMIBjboFbGU9QIQXUShh1mhoIIvXd7/z9IedJBoYCXXFegqfeyaPQl6s5Bw8B
+ yq696NgRW2bN7gEKVdnm+FzZAICetJWwEEU/61YtoIwwjfQyGwEjI6VgkkI28YYNBstVJQyuQAKU+uZo
+ Kp4AAis41QdcCxjYqRmHWAiUC9mHOYLnWSIv0I2J15mdg+juHmimwW9A1L6l/YW0tOBIkCj/AAi4n4QA
+ n9i5QHs1LDwKNIhAWWogFg3ZnFBG3yw4wP8AGOIwgDatlc/BE0yMYAJT86L0jXa53CXIwTkHSe/CXnTA
+ 4VTEoIqr74RgqTaLIMNLET8siJMTFcQBOyWoUE1A3snFIjDqBjaZgHa+TKCN0jlVQnaVwEkcrfIE/jF5
+ MPKcECFdWES7ANbCzJoRu9YBNbkQBIsPxnecIzGGzEYLoIO57aWQKzo+LVJlp1WX3QVy22HW4H2k8A1g
+ DRIjQyx0TvO/LQgw+QZAST9sSc5gAZSkfl0wDESkbW/AdkwAxfMIpgAQ52mMeAAgm/3aDYQdeXNp8lCL
+ IAD6k6cwWIAAxa6ibyIdwAQtSG1R58wABGF+oglYAO6NStB7gMOoXmTYVY3Afdt8zAKP5KJQKrMI5I34
+ d3gdIZDeGFJmKj/ICuBg6Hf1bUSK1basFFs9m7qGiPrOoAYzehp2DPJKOV0+gn4wK4QKA6hPIw9L+Ap9
+ ge0L0yC2nC+oCnag0Gi2HwFhSKzLoKWOQseIlp63iCWABDV6Aq/DXOLV8tx/7Ars6rCj35cJ8oRWYnR9
+ C9zSnUVeuBy0WiJ3sqEhrBakWPSz9tQQOfAJ48mjN+GF7LhEbJcoPNE3mgxo5PqBUqWlVDAtGGN0QAG0
+ Pldsgk8v7DdHMAA5pPodZ6wAAL1qD7xgEAiXAzF7BghQAxt77kYAGnvzO2awQBae3JoEAUEqE3pMFS3r
+ SLqQRkAKRjpG4EqFCA6fUDuMFA3J8dcwEaLwSMSTGXlbwc8QVDeaziCgvevjYmWgma6HzCogy6ATJ81o
+ xCmISLU047ugXNxCfkHQMJ40kV3SAd+sSIyfHFQFPQivouBXqwgZoCyBIodxOwSmFUYAowD4J7eng6Su
+ EiSEs/EJsqxUAnMM6CHCADxXhOITjAqgKEYPOEBYQZFYH/wC0Co5b2aWCUT6KCEy9JNeMMdz3UoxoaGW
+ +069BN/0QW3HhLUomKe6bICX5qhiEA4r7l2WBkAJa46oKUFCC5/aEyFxQyEJpVcX00EEQ1yzJUCojEFY
+ SxoJkwh4/pB0tAVGI+QYcU5UgKlycg5MFsf4YihhAFm7yeIH2aZskzjDTZYBhThgjoWXKUggB9uJ+qhA
+ 8g0/jQ2SLcpTEZlixIU1UYX0D9BGvvcGGNMBuVuGMV8GKIcjjT2/cE+Mn8qCfgA9Z+oY1+Ios+lR84/c
+ VuADHdGRAdSxsR0bgKWb4QfsggRovyQ+3xKMAr5YELSTSQ9EsCH2NucCRTV2MAf/AOGgIgfAILQicCDE
+ Q28D8SLrSgI2xdhIPrAXTRfojsRHk6CG6Q3yaPdx1co6lU+YYU3a5IGOVD3YRaaaMi6V0sICApKy7Koe
+ 4ALDfBly8CAXUpXPTk5CAQkk1ku60A7Lr/OhE2iIG1wCtaQekqiD+b5ms50in3+wQUIqoOx7DONswJtk
+ G4UgsNBj6rcTrdMihb4DGVyloGm6IGQui1CDLw86G7ULyte2Lg2rUfqFAW8u4ra0orECm+GRKIWlXDG0
+ J0GcVMsL5+zFOhDEtxIEJHGldJQs87gHHb50FJD0YsJpSFdByKSipQZdM0+0RZKS9UwO/R6GBGBZWjm0
+ wDKOqPo2BVcKRpWArg6PqP1YZ7oWU2rexlCqvXmwbJr9wTTdCS6SulwHH9C5YDyaNhqr14Lw2RdEDeps
+ sR1OAsJVrCa8OxUNsqfNiNt8prdBNnUMkjISNXQs9V1VjsX9CwHsxYokem+Re32p/9k=
+
+
+
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Products/ProductForm.Designer.cs b/CompShop/CompShop/Forms/Products/ProductForm.Designer.cs
new file mode 100644
index 0000000..a920501
--- /dev/null
+++ b/CompShop/CompShop/Forms/Products/ProductForm.Designer.cs
@@ -0,0 +1,103 @@
+namespace CompShop
+{
+ partial class ProductForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ productsDataGridView = new DataGridView();
+ addButton = new Button();
+ editButton = new Button();
+ deleteButton = new Button();
+ ((System.ComponentModel.ISupportInitialize)productsDataGridView).BeginInit();
+ SuspendLayout();
+ //
+ // productsDataGridView
+ //
+ productsDataGridView.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
+ productsDataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ productsDataGridView.Location = new Point(12, 12);
+ productsDataGridView.Name = "productsDataGridView";
+ productsDataGridView.RowHeadersWidth = 51;
+ productsDataGridView.RowTemplate.Height = 29;
+ productsDataGridView.Size = new Size(851, 399);
+ productsDataGridView.TabIndex = 0;
+ //
+ // addButton
+ //
+ addButton.BackColor = SystemColors.Control;
+ addButton.Location = new Point(878, 12);
+ addButton.Name = "addButton";
+ addButton.Size = new Size(161, 60);
+ addButton.TabIndex = 1;
+ addButton.Text = "Добавить";
+ addButton.UseVisualStyleBackColor = false;
+ addButton.Click += addButton_Click;
+ //
+ // editButton
+ //
+ editButton.Location = new Point(878, 87);
+ editButton.Name = "editButton";
+ editButton.Size = new Size(161, 60);
+ editButton.TabIndex = 2;
+ editButton.Text = "Редактировать";
+ editButton.UseVisualStyleBackColor = true;
+ editButton.Click += editButton_Click;
+ //
+ // deleteButton
+ //
+ deleteButton.Location = new Point(878, 163);
+ deleteButton.Name = "deleteButton";
+ deleteButton.Size = new Size(161, 60);
+ deleteButton.TabIndex = 3;
+ deleteButton.Text = "Удалить";
+ deleteButton.UseVisualStyleBackColor = true;
+ deleteButton.Click += deleteButton_Click;
+ //
+ // ProductForm
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(1051, 423);
+ Controls.Add(deleteButton);
+ Controls.Add(editButton);
+ Controls.Add(addButton);
+ Controls.Add(productsDataGridView);
+ Name = "ProductForm";
+ Text = "Товары";
+ Load += ProductForm_Load;
+ ((System.ComponentModel.ISupportInitialize)productsDataGridView).EndInit();
+ ResumeLayout(false);
+ }
+
+ #endregion
+
+ private DataGridView productsDataGridView;
+ private Button addButton;
+ private Button editButton;
+ private Button deleteButton;
+ }
+}
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Products/ProductForm.cs b/CompShop/CompShop/Forms/Products/ProductForm.cs
new file mode 100644
index 0000000..7e330fa
--- /dev/null
+++ b/CompShop/CompShop/Forms/Products/ProductForm.cs
@@ -0,0 +1,101 @@
+using CompShop.Repos;
+using Unity;
+
+namespace CompShop
+{
+ public partial class ProductForm : Form
+ {
+ private readonly IUnityContainer _container;
+ private readonly IProductRepository _productRepository;
+
+ public ProductForm(IUnityContainer unityContainer, IProductRepository productRepository)
+ {
+ InitializeComponent();
+
+ _container = unityContainer ?? throw new ArgumentNullException(nameof(unityContainer));
+ _productRepository = productRepository ?? throw new ArgumentNullException(nameof(_productRepository));
+ }
+
+ private void ProductForm_Load(object sender, EventArgs e)
+ {
+ try
+ {
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ private void LoadList() => productsDataGridView.DataSource = _productRepository.ReadAll();
+
+ private bool TryGetIdentifierFromSelectedRow(out int id)
+ {
+ id = 0;
+ if (productsDataGridView.SelectedRows.Count < 1)
+ {
+ MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return false;
+ }
+
+ id = Convert.ToInt32(productsDataGridView.SelectedRows[0].Cells["Id"].Value);
+ return true;
+ }
+
+ private void addButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ _container.Resolve().ShowDialog();
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void editButton_Click(object sender, EventArgs e)
+ {
+ if (!TryGetIdentifierFromSelectedRow(out var findId))
+ {
+ return;
+ }
+
+ try
+ {
+ var form = _container.Resolve();
+ form.Id = findId;
+ form.ShowDialog();
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void deleteButton_Click(object sender, EventArgs e)
+ {
+ if (!TryGetIdentifierFromSelectedRow(out var findId))
+ {
+ return;
+ }
+
+ if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes)
+ {
+ return;
+ }
+
+ try
+ {
+ _productRepository.Delete(findId);
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ }
+}
diff --git a/CompShop/CompShop/Forms/Products/ProductForm.resx b/CompShop/CompShop/Forms/Products/ProductForm.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/CompShop/CompShop/Forms/Products/ProductForm.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Products/ProductSettingsForm.Designer.cs b/CompShop/CompShop/Forms/Products/ProductSettingsForm.Designer.cs
new file mode 100644
index 0000000..21650dc
--- /dev/null
+++ b/CompShop/CompShop/Forms/Products/ProductSettingsForm.Designer.cs
@@ -0,0 +1,156 @@
+namespace CompShop
+{
+ partial class ProductSettingsForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ saveButton = new Button();
+ productNameTextbox = new TextBox();
+ label1 = new Label();
+ label2 = new Label();
+ descriptionTextbox = new TextBox();
+ priceNumeric = new NumericUpDown();
+ label3 = new Label();
+ label4 = new Label();
+ typeCheckedListBox = new CheckedListBox();
+ ((System.ComponentModel.ISupportInitialize)priceNumeric).BeginInit();
+ SuspendLayout();
+ //
+ // saveButton
+ //
+ saveButton.Anchor = AnchorStyles.Bottom;
+ saveButton.Location = new Point(157, 436);
+ saveButton.Name = "saveButton";
+ saveButton.Size = new Size(94, 29);
+ saveButton.TabIndex = 0;
+ saveButton.Text = "Сохранить";
+ saveButton.UseVisualStyleBackColor = true;
+ saveButton.Click += saveButton_Click;
+ //
+ // productNameTextbox
+ //
+ productNameTextbox.Location = new Point(152, 36);
+ productNameTextbox.Name = "productNameTextbox";
+ productNameTextbox.Size = new Size(210, 27);
+ productNameTextbox.TabIndex = 1;
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Location = new Point(12, 36);
+ label1.Name = "label1";
+ label1.Size = new Size(94, 20);
+ label1.TabIndex = 2;
+ label1.Text = "Имя товара:";
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Location = new Point(12, 83);
+ label2.Name = "label2";
+ label2.Size = new Size(134, 20);
+ label2.TabIndex = 4;
+ label2.Text = "Описание товара:";
+ //
+ // descriptionTextbox
+ //
+ descriptionTextbox.Location = new Point(152, 83);
+ descriptionTextbox.Multiline = true;
+ descriptionTextbox.Name = "descriptionTextbox";
+ descriptionTextbox.Size = new Size(210, 132);
+ descriptionTextbox.TabIndex = 3;
+ //
+ // priceNumeric
+ //
+ priceNumeric.DecimalPlaces = 2;
+ priceNumeric.Location = new Point(152, 233);
+ priceNumeric.Name = "priceNumeric";
+ priceNumeric.Size = new Size(99, 27);
+ priceNumeric.TabIndex = 5;
+ priceNumeric.ThousandsSeparator = true;
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.Location = new Point(12, 235);
+ label3.Name = "label3";
+ label3.Size = new Size(48, 20);
+ label3.TabIndex = 6;
+ label3.Text = "Цена:";
+ //
+ // label4
+ //
+ label4.AutoSize = true;
+ label4.Location = new Point(12, 285);
+ label4.Name = "label4";
+ label4.Size = new Size(38, 20);
+ label4.TabIndex = 7;
+ label4.Text = "Вид:";
+ //
+ // typeCheckedListBox
+ //
+ typeCheckedListBox.FormattingEnabled = true;
+ typeCheckedListBox.Location = new Point(152, 285);
+ typeCheckedListBox.Name = "typeCheckedListBox";
+ typeCheckedListBox.Size = new Size(150, 114);
+ typeCheckedListBox.TabIndex = 8;
+ //
+ // ProductSettingsForm
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(409, 477);
+ Controls.Add(typeCheckedListBox);
+ Controls.Add(label4);
+ Controls.Add(label3);
+ Controls.Add(priceNumeric);
+ Controls.Add(label2);
+ Controls.Add(descriptionTextbox);
+ Controls.Add(label1);
+ Controls.Add(productNameTextbox);
+ Controls.Add(saveButton);
+ Name = "ProductSettingsForm";
+ Text = "Настройка товара...";
+ Load += ProductSettingsForm_Load;
+ ((System.ComponentModel.ISupportInitialize)priceNumeric).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private Button saveButton;
+ private TextBox productNameTextbox;
+ private Label label1;
+ private Label label2;
+ private TextBox descriptionTextbox;
+ private NumericUpDown priceNumeric;
+ private Label label3;
+ private Label label4;
+ private CheckedListBox typeCheckedListBox;
+ }
+}
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Products/ProductSettingsForm.cs b/CompShop/CompShop/Forms/Products/ProductSettingsForm.cs
new file mode 100644
index 0000000..7fe0b45
--- /dev/null
+++ b/CompShop/CompShop/Forms/Products/ProductSettingsForm.cs
@@ -0,0 +1,104 @@
+using CompShop.Entites;
+using CompShop.Entites.Enums;
+using CompShop.Repos;
+
+namespace CompShop
+{
+ public partial class ProductSettingsForm : Form
+ {
+ private readonly IProductRepository _productRepository;
+
+ private int? _productId;
+
+ public int Id
+ {
+ set
+ {
+ try
+ {
+ var product = _productRepository.Read(value);
+ if (product != null)
+ {
+ throw new InvalidDataException(nameof(product));
+ }
+ productNameTextbox.Text = product.Name;
+ descriptionTextbox.Text = product.Description;
+ foreach (ProductType elem in Enum.GetValues(typeof(ProductType)))
+ {
+ if ((elem & product.ProductType) != 0)
+ {
+
+ typeCheckedListBox.SetItemChecked(typeCheckedListBox.Items.IndexOf(elem), true);
+ }
+ }
+ priceNumeric.Value = product.Price;
+ _productId = value;
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ }
+ }
+
+ public ProductSettingsForm(IProductRepository productRepository)
+ {
+ InitializeComponent();
+ _productRepository = productRepository ?? throw new ArgumentNullException(nameof(productRepository));
+
+
+ foreach (var elem in Enum.GetValues(typeof(ProductType)))
+ {
+ typeCheckedListBox.Items.Add(elem);
+ }
+
+ }
+
+ private void ProductSettingsForm_Load(object sender, EventArgs e)
+ {
+
+ }
+
+ private void saveButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (string.IsNullOrWhiteSpace(productNameTextbox.Text) ||
+ string.IsNullOrWhiteSpace(descriptionTextbox.Text) || typeCheckedListBox.CheckedItems.Count == 0)
+ {
+ throw new Exception("Имеются незаполненные поля");
+ }
+
+ if (_productId.HasValue)
+ {
+
+ _productRepository.Update(CreateProduct(_productId.Value));
+ }
+ else
+ {
+
+ _productRepository.Create(CreateProduct(0));
+ }
+
+ Close();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при сохранении",
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ private Product CreateProduct(int id)
+ {
+ ProductType type = ProductType.None;
+ foreach (var elem in typeCheckedListBox.CheckedItems)
+ {
+ type |= (ProductType)elem;
+ }
+
+ return Product.CreateEntity(id, productNameTextbox.Text, descriptionTextbox.Text, priceNumeric.Value, type);
+ }
+
+ }
+}
diff --git a/CompShop/CompShop/Forms/Products/ProductSettingsForm.resx b/CompShop/CompShop/Forms/Products/ProductSettingsForm.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/CompShop/CompShop/Forms/Products/ProductSettingsForm.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageForm.Designer.cs b/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageForm.Designer.cs
new file mode 100644
index 0000000..5a3fe52
--- /dev/null
+++ b/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageForm.Designer.cs
@@ -0,0 +1,90 @@
+namespace CompShop.Forms.ProductsOnStorage
+{
+ partial class ProductsOnStorageForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ addButton = new Button();
+ productsDataGridView = new DataGridView();
+ editButton = new Button();
+ ((System.ComponentModel.ISupportInitialize)productsDataGridView).BeginInit();
+ SuspendLayout();
+ //
+ // addButton
+ //
+ addButton.BackColor = SystemColors.Control;
+ addButton.Location = new Point(881, 12);
+ addButton.Name = "addButton";
+ addButton.Size = new Size(161, 60);
+ addButton.TabIndex = 9;
+ addButton.Text = "Добавить";
+ addButton.UseVisualStyleBackColor = false;
+ addButton.Click += addButton_Click;
+ //
+ // productsDataGridView
+ //
+ productsDataGridView.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
+ productsDataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ productsDataGridView.Location = new Point(12, 12);
+ productsDataGridView.Name = "productsDataGridView";
+ productsDataGridView.RowHeadersWidth = 51;
+ productsDataGridView.RowTemplate.Height = 29;
+ productsDataGridView.Size = new Size(851, 400);
+ productsDataGridView.TabIndex = 8;
+ //
+ // editButton
+ //
+ editButton.Location = new Point(881, 78);
+ editButton.Name = "editButton";
+ editButton.Size = new Size(161, 60);
+ editButton.TabIndex = 10;
+ editButton.Text = "Редактировать";
+ editButton.UseVisualStyleBackColor = true;
+ editButton.Click += editButton_Click;
+ //
+ // ProductsOnStorageForm
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(1064, 450);
+ Controls.Add(editButton);
+ Controls.Add(addButton);
+ Controls.Add(productsDataGridView);
+ Name = "ProductsOnStorageForm";
+ Text = "Товары на складе";
+ Load += ProductsOnStorage_Load;
+ ((System.ComponentModel.ISupportInitialize)productsDataGridView).EndInit();
+ ResumeLayout(false);
+ }
+
+ #endregion
+
+ private Button addButton;
+ private DataGridView productsDataGridView;
+ private Button editButton;
+ }
+}
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageForm.cs b/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageForm.cs
new file mode 100644
index 0000000..4282b98
--- /dev/null
+++ b/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageForm.cs
@@ -0,0 +1,80 @@
+using CompShop.Repos;
+using Unity;
+
+namespace CompShop.Forms.ProductsOnStorage
+{
+ public partial class ProductsOnStorageForm : Form
+ {
+ private readonly IUnityContainer _container;
+ private readonly IProductOnStorageRepository _productOnStorageRepository;
+
+ public ProductsOnStorageForm(IUnityContainer unityContainer, IProductOnStorageRepository productOnStorageRepository)
+ {
+ InitializeComponent();
+
+ _container = unityContainer ?? throw new ArgumentNullException(nameof(unityContainer));
+ _productOnStorageRepository = productOnStorageRepository ?? throw new ArgumentNullException(nameof(productOnStorageRepository));
+ }
+
+ private void ProductsOnStorage_Load(object sender, EventArgs e)
+ {
+ try
+ {
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void LoadList() => productsDataGridView.DataSource = _productOnStorageRepository.ReadAll();
+
+ private bool TryGetIdentifierFromSelectedRow(out int id)
+ {
+ id = 0;
+ if (productsDataGridView.SelectedRows.Count < 1)
+ {
+ MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return false;
+ }
+
+ id = Convert.ToInt32(productsDataGridView.SelectedRows[0].Cells["Id"].Value);
+ return true;
+ }
+
+ private void addButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ _container.Resolve().ShowDialog();
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void editButton_Click(object sender, EventArgs e)
+ {
+ if (!TryGetIdentifierFromSelectedRow(out var findId))
+ {
+ return;
+ }
+
+ try
+ {
+ var form = _container.Resolve();
+ form.Id = findId;
+ form.ShowDialog();
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ }
+}
diff --git a/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageForm.resx b/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageForm.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageForm.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageSettingsForm.Designer.cs b/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageSettingsForm.Designer.cs
new file mode 100644
index 0000000..f6df6f2
--- /dev/null
+++ b/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageSettingsForm.Designer.cs
@@ -0,0 +1,133 @@
+namespace CompShop.Forms.ProductsOnStorage
+{
+ partial class ProductsOnStorageSettingsForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ productCombobox = new ComboBox();
+ label4 = new Label();
+ label3 = new Label();
+ countNumeric = new NumericUpDown();
+ storageCombobox = new ComboBox();
+ label1 = new Label();
+ saveButton = new Button();
+ ((System.ComponentModel.ISupportInitialize)countNumeric).BeginInit();
+ SuspendLayout();
+ //
+ // productCombobox
+ //
+ productCombobox.FormattingEnabled = true;
+ productCombobox.Location = new Point(155, 12);
+ productCombobox.Name = "productCombobox";
+ productCombobox.Size = new Size(151, 28);
+ productCombobox.TabIndex = 12;
+ //
+ // label4
+ //
+ label4.AutoSize = true;
+ label4.Location = new Point(15, 15);
+ label4.Name = "label4";
+ label4.Size = new Size(54, 20);
+ label4.TabIndex = 11;
+ label4.Text = "Товар:";
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.Location = new Point(15, 82);
+ label3.Name = "label3";
+ label3.Size = new Size(103, 20);
+ label3.TabIndex = 10;
+ label3.Text = "В количестве:";
+ //
+ // countNumeric
+ //
+ countNumeric.Location = new Point(155, 80);
+ countNumeric.Name = "countNumeric";
+ countNumeric.Size = new Size(99, 27);
+ countNumeric.TabIndex = 9;
+ countNumeric.ThousandsSeparator = true;
+ //
+ // storageCombobox
+ //
+ storageCombobox.FormattingEnabled = true;
+ storageCombobox.Location = new Point(155, 46);
+ storageCombobox.Name = "storageCombobox";
+ storageCombobox.Size = new Size(151, 28);
+ storageCombobox.TabIndex = 14;
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Location = new Point(15, 49);
+ label1.Name = "label1";
+ label1.Size = new Size(81, 20);
+ label1.TabIndex = 13;
+ label1.Text = "На складе:";
+ //
+ // saveButton
+ //
+ saveButton.Anchor = AnchorStyles.Bottom;
+ saveButton.Location = new Point(155, 175);
+ saveButton.Name = "saveButton";
+ saveButton.Size = new Size(94, 29);
+ saveButton.TabIndex = 15;
+ saveButton.Text = "Сохранить";
+ saveButton.UseVisualStyleBackColor = true;
+ saveButton.Click += saveButton_Click;
+ //
+ // ProductsOnStorageSettingsForm
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(411, 216);
+ Controls.Add(saveButton);
+ Controls.Add(storageCombobox);
+ Controls.Add(label1);
+ Controls.Add(productCombobox);
+ Controls.Add(label4);
+ Controls.Add(label3);
+ Controls.Add(countNumeric);
+ Name = "ProductsOnStorageSettingsForm";
+ Text = "Продукт на складе...";
+ Load += ProductsOnStorageSettingsForm_Load;
+ ((System.ComponentModel.ISupportInitialize)countNumeric).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private ComboBox productCombobox;
+ private Label label4;
+ private Label label3;
+ private NumericUpDown countNumeric;
+ private ComboBox storageCombobox;
+ private Label label1;
+ private Button saveButton;
+ }
+}
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageSettingsForm.cs b/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageSettingsForm.cs
new file mode 100644
index 0000000..22a3f16
--- /dev/null
+++ b/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageSettingsForm.cs
@@ -0,0 +1,101 @@
+using CompShop.Entites;
+using CompShop.Repos;
+
+namespace CompShop.Forms.ProductsOnStorage
+{
+ public partial class ProductsOnStorageSettingsForm : Form
+ {
+ private readonly IProductOnStorageRepository _productOnStorageRepository;
+ private readonly IProductRepository _productRepository;
+ private readonly IStorageRepository _storageRepository;
+
+ private int? _recordId;
+
+ public int Id
+ {
+ set
+ {
+ try
+ {
+ var record = _productOnStorageRepository.Read(value);
+ if (record == null)
+ {
+ throw new InvalidDataException("Record not found");
+ }
+
+ productCombobox.SelectedItem = record.Product;
+ storageCombobox.SelectedItem = record.Storage;
+ countNumeric.Value = record.Count;
+ _recordId = value;
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при загрузке данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ }
+
+ public ProductsOnStorageSettingsForm(
+ IProductOnStorageRepository productOnStorageRepository,
+ IProductRepository productRepository,
+ IStorageRepository storageRepository)
+ {
+ InitializeComponent();
+
+ _productOnStorageRepository = productOnStorageRepository ?? throw new ArgumentNullException(nameof(productOnStorageRepository));
+ _productRepository = productRepository ?? throw new ArgumentNullException(nameof(productRepository));
+ _storageRepository = storageRepository ?? throw new ArgumentNullException(nameof(storageRepository));
+
+ LoadComboboxes();
+ }
+ private void ProductsOnStorageSettingsForm_Load(object sender, EventArgs e)
+ {
+
+ }
+ private void LoadComboboxes()
+ {
+ productCombobox.DataSource = _productRepository.ReadAll().ToList();
+ productCombobox.DisplayMember = "Name";
+ productCombobox.ValueMember = "Id";
+
+ storageCombobox.DataSource = _storageRepository.ReadAll().ToList();
+ storageCombobox.DisplayMember = "Name";
+ storageCombobox.ValueMember = "Id";
+ }
+
+ private void saveButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (productCombobox.SelectedItem == null || storageCombobox.SelectedItem == null || countNumeric.Value < 1)
+ {
+ throw new Exception("Заполните все поля");
+ }
+
+ var selectedProduct = (Product)productCombobox.SelectedItem;
+ var selectedStorage = (Entites.Storage)storageCombobox.SelectedItem;
+ var count = (int)countNumeric.Value;
+
+ if (_recordId.HasValue)
+ {
+ _productOnStorageRepository.Update(CreateProductOnStorage(_recordId.Value, selectedProduct, selectedStorage, count));
+ }
+ else
+ {
+ _productOnStorageRepository.Create(CreateProductOnStorage(0, selectedProduct, selectedStorage, count));
+ }
+
+ Close();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private Entites.ProductsOnStorage CreateProductOnStorage(int id, Product product, Entites.Storage storage, int count)
+ {
+ return Entites.ProductsOnStorage.CreateEntity(id, product, storage, count);
+ }
+ }
+}
diff --git a/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageSettingsForm.resx b/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageSettingsForm.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/CompShop/CompShop/Forms/ProductsOnStorage/ProductsOnStorageSettingsForm.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Receipt/CheckForm.Designer.cs b/CompShop/CompShop/Forms/Receipt/CheckForm.Designer.cs
new file mode 100644
index 0000000..8c89a66
--- /dev/null
+++ b/CompShop/CompShop/Forms/Receipt/CheckForm.Designer.cs
@@ -0,0 +1,77 @@
+namespace CompShop.Forms.Receipt
+{
+ partial class CheckForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ addButton = new Button();
+ checksDataGridView = new DataGridView();
+ ((System.ComponentModel.ISupportInitialize)checksDataGridView).BeginInit();
+ SuspendLayout();
+ //
+ // addButton
+ //
+ addButton.BackColor = SystemColors.Control;
+ addButton.Location = new Point(878, 12);
+ addButton.Name = "addButton";
+ addButton.Size = new Size(161, 60);
+ addButton.TabIndex = 3;
+ addButton.Text = "Добавить";
+ addButton.UseVisualStyleBackColor = false;
+ addButton.Click += addButton_Click;
+ //
+ // checksDataGridView
+ //
+ checksDataGridView.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
+ checksDataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ checksDataGridView.Location = new Point(12, 12);
+ checksDataGridView.Name = "checksDataGridView";
+ checksDataGridView.RowHeadersWidth = 51;
+ checksDataGridView.RowTemplate.Height = 29;
+ checksDataGridView.Size = new Size(851, 399);
+ checksDataGridView.TabIndex = 2;
+ //
+ // CheckForm
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(1056, 450);
+ Controls.Add(addButton);
+ Controls.Add(checksDataGridView);
+ Name = "CheckForm";
+ Text = "Чеки";
+ Load += CheckForm_Load;
+ ((System.ComponentModel.ISupportInitialize)checksDataGridView).EndInit();
+ ResumeLayout(false);
+ }
+
+ #endregion
+
+ private Button addButton;
+ private DataGridView checksDataGridView;
+ }
+}
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Receipt/CheckForm.cs b/CompShop/CompShop/Forms/Receipt/CheckForm.cs
new file mode 100644
index 0000000..15f642e
--- /dev/null
+++ b/CompShop/CompShop/Forms/Receipt/CheckForm.cs
@@ -0,0 +1,46 @@
+using CompShop.Repos;
+using Unity;
+
+namespace CompShop.Forms.Receipt
+{
+ public partial class CheckForm : Form
+ {
+ private readonly IUnityContainer _container;
+ private readonly ICheckRepository _checkRepository;
+
+ public CheckForm(IUnityContainer unityContainer, ICheckRepository checkRepository)
+ {
+ InitializeComponent();
+
+ _container = unityContainer ?? throw new ArgumentNullException(nameof(unityContainer));
+ _checkRepository = checkRepository ?? throw new ArgumentNullException(nameof(checkRepository));
+ }
+
+ private void CheckForm_Load(object sender, EventArgs e)
+ {
+ try
+ {
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void LoadList() => checksDataGridView.DataSource = _checkRepository.ReadAll();
+
+ private void addButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ _container.Resolve().ShowDialog();
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ }
+}
diff --git a/CompShop/CompShop/Forms/Receipt/CheckForm.resx b/CompShop/CompShop/Forms/Receipt/CheckForm.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/CompShop/CompShop/Forms/Receipt/CheckForm.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Receipt/CheckSettingsForm .Designer.cs b/CompShop/CompShop/Forms/Receipt/CheckSettingsForm .Designer.cs
new file mode 100644
index 0000000..3f5c94e
--- /dev/null
+++ b/CompShop/CompShop/Forms/Receipt/CheckSettingsForm .Designer.cs
@@ -0,0 +1,134 @@
+namespace CompShop.Forms.Receipt
+{
+ partial class CheckSettingsForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ customerComboBox = new ComboBox();
+ label1 = new Label();
+ saveButton = new Button();
+ label4 = new Label();
+ productsDataGridView = new DataGridView();
+ ProductColoumn = new DataGridViewComboBoxColumn();
+ ProductCount = new DataGridViewTextBoxColumn();
+ ((System.ComponentModel.ISupportInitialize)productsDataGridView).BeginInit();
+ SuspendLayout();
+ //
+ // customerComboBox
+ //
+ customerComboBox.FormattingEnabled = true;
+ customerComboBox.Location = new Point(152, 6);
+ customerComboBox.Name = "customerComboBox";
+ customerComboBox.Size = new Size(151, 28);
+ customerComboBox.TabIndex = 18;
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Location = new Point(12, 9);
+ label1.Name = "label1";
+ label1.Size = new Size(97, 20);
+ label1.TabIndex = 17;
+ label1.Text = "Покупатель: ";
+ //
+ // saveButton
+ //
+ saveButton.Anchor = AnchorStyles.Bottom;
+ saveButton.Location = new Point(125, 297);
+ saveButton.Name = "saveButton";
+ saveButton.Size = new Size(94, 29);
+ saveButton.TabIndex = 19;
+ saveButton.Text = "Сохранить";
+ saveButton.UseVisualStyleBackColor = true;
+ saveButton.Click += saveButton_Click;
+ //
+ // label4
+ //
+ label4.AutoSize = true;
+ label4.Location = new Point(12, 44);
+ label4.Name = "label4";
+ label4.Size = new Size(54, 20);
+ label4.TabIndex = 15;
+ label4.Text = "Товар:";
+ //
+ // productsDataGridView
+ //
+ productsDataGridView.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ productsDataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ productsDataGridView.Columns.AddRange(new DataGridViewColumn[] { ProductColoumn, ProductCount });
+ productsDataGridView.Location = new Point(12, 67);
+ productsDataGridView.Name = "productsDataGridView";
+ productsDataGridView.RowHeadersWidth = 51;
+ productsDataGridView.RowTemplate.Height = 29;
+ productsDataGridView.Size = new Size(336, 224);
+ productsDataGridView.TabIndex = 20;
+ //
+ // ProductColoumn
+ //
+ ProductColoumn.HeaderText = "Товары";
+ ProductColoumn.MinimumWidth = 6;
+ ProductColoumn.Name = "ProductColoumn";
+ ProductColoumn.Resizable = DataGridViewTriState.True;
+ ProductColoumn.SortMode = DataGridViewColumnSortMode.Automatic;
+ ProductColoumn.Width = 125;
+ //
+ // ProductCount
+ //
+ ProductCount.HeaderText = "Количество";
+ ProductCount.MinimumWidth = 6;
+ ProductCount.Name = "ProductCount";
+ ProductCount.Width = 125;
+ //
+ // CheckSettingsForm
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(360, 338);
+ Controls.Add(productsDataGridView);
+ Controls.Add(saveButton);
+ Controls.Add(customerComboBox);
+ Controls.Add(label1);
+ Controls.Add(label4);
+ Name = "CheckSettingsForm";
+ Text = "Новый чек";
+ Load += CheckSettingsForm_Load;
+ ((System.ComponentModel.ISupportInitialize)productsDataGridView).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private ComboBox customerComboBox;
+ private Label label1;
+ private Button saveButton;
+ private Label label4;
+ private DataGridView productsDataGridView;
+ private DataGridViewComboBoxColumn ProductColoumn;
+ private DataGridViewTextBoxColumn ProductCount;
+ }
+}
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Receipt/CheckSettingsForm .cs b/CompShop/CompShop/Forms/Receipt/CheckSettingsForm .cs
new file mode 100644
index 0000000..23e6dbf
--- /dev/null
+++ b/CompShop/CompShop/Forms/Receipt/CheckSettingsForm .cs
@@ -0,0 +1,74 @@
+using CompShop.Entites;
+using CompShop.Repos;
+
+namespace CompShop.Forms.Receipt
+{
+ public partial class CheckSettingsForm : Form
+ {
+ private readonly ICheckRepository _checkRepository;
+ private readonly IProductRepository _productRepository;
+ private readonly IClientRepository _customerRepository;
+
+ public CheckSettingsForm(ICheckRepository checkRepository, IProductRepository productRepository, IClientRepository customerRepository)
+ {
+ InitializeComponent();
+
+ _checkRepository = checkRepository ?? throw new ArgumentNullException(nameof(checkRepository));
+ _productRepository = productRepository ?? throw new ArgumentNullException(nameof(productRepository));
+ _customerRepository = customerRepository ?? throw new ArgumentNullException(nameof(customerRepository));
+
+
+ ProductColoumn.DataSource = _productRepository.ReadAll().ToList();
+ ProductColoumn.DisplayMember = "Name";
+ ProductColoumn.ValueMember = "Id";
+
+ customerComboBox.DataSource = _customerRepository.ReadAll().ToList();
+ customerComboBox.DisplayMember = "Name";
+ customerComboBox.ValueMember = "Id";
+ }
+
+ public void CheckSettingsForm_Load(object sender, EventArgs e)
+ {
+
+ }
+
+ private void saveButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (productsDataGridView.RowCount < 1 || customerComboBox.SelectedItem == null)
+ {
+ throw new Exception("Необходимо выбрать товар и клиента");
+ }
+
+ var products = CreateListProducts();
+ var customer = (Client)customerComboBox.SelectedItem;
+
+ var check = Check.CreateEntity(0, products, customer, DateTime.Now);
+ _checkRepository.Create(check);
+
+ Close();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при создании чека", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ private List CreateListProducts()
+ {
+ var list = new List();
+ foreach (DataGridViewRow row in productsDataGridView.Rows)
+ {
+ if (row.Cells["ProductColoumn"].Value == null || row.Cells["ColumnCount"].Value == null)
+ {
+ continue;
+ }
+
+ list.Add(ProductInCheck.CreateElement(Convert.ToInt32(row.Cells["ProductColoumn"].Value), Convert.ToInt32(row.Cells["ProductCount"].Value)));
+ }
+
+ return list;
+ }
+ }
+}
+
diff --git a/CompShop/CompShop/Forms/Receipt/CheckSettingsForm .resx b/CompShop/CompShop/Forms/Receipt/CheckSettingsForm .resx
new file mode 100644
index 0000000..16cc2be
--- /dev/null
+++ b/CompShop/CompShop/Forms/Receipt/CheckSettingsForm .resx
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ True
+
+
+ True
+
+
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Storage/StorageForm.Designer.cs b/CompShop/CompShop/Forms/Storage/StorageForm.Designer.cs
new file mode 100644
index 0000000..838be25
--- /dev/null
+++ b/CompShop/CompShop/Forms/Storage/StorageForm.Designer.cs
@@ -0,0 +1,103 @@
+namespace CompShop.Forms.Storage
+{
+ partial class StorageForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ deleteButton = new Button();
+ editButton = new Button();
+ addButton = new Button();
+ storagesDataGridView = new DataGridView();
+ ((System.ComponentModel.ISupportInitialize)storagesDataGridView).BeginInit();
+ SuspendLayout();
+ //
+ // deleteButton
+ //
+ deleteButton.Location = new Point(869, 144);
+ deleteButton.Name = "deleteButton";
+ deleteButton.Size = new Size(161, 60);
+ deleteButton.TabIndex = 11;
+ deleteButton.Text = "Удалить";
+ deleteButton.UseVisualStyleBackColor = true;
+ deleteButton.Click += deleteButton_Click;
+ //
+ // editButton
+ //
+ editButton.Location = new Point(869, 78);
+ editButton.Name = "editButton";
+ editButton.Size = new Size(161, 60);
+ editButton.TabIndex = 10;
+ editButton.Text = "Редактировать";
+ editButton.UseVisualStyleBackColor = true;
+ editButton.Click += editButton_Click;
+ //
+ // addButton
+ //
+ addButton.BackColor = SystemColors.Control;
+ addButton.Location = new Point(869, 12);
+ addButton.Name = "addButton";
+ addButton.Size = new Size(161, 60);
+ addButton.TabIndex = 9;
+ addButton.Text = "Добавить";
+ addButton.UseVisualStyleBackColor = false;
+ addButton.Click += addButton_Click;
+ //
+ // storagesDataGridView
+ //
+ storagesDataGridView.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left;
+ storagesDataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ storagesDataGridView.Location = new Point(12, 12);
+ storagesDataGridView.Name = "storagesDataGridView";
+ storagesDataGridView.RowHeadersWidth = 51;
+ storagesDataGridView.RowTemplate.Height = 29;
+ storagesDataGridView.Size = new Size(851, 416);
+ storagesDataGridView.TabIndex = 8;
+ //
+ // StorageForm
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(1058, 440);
+ Controls.Add(deleteButton);
+ Controls.Add(editButton);
+ Controls.Add(addButton);
+ Controls.Add(storagesDataGridView);
+ Name = "StorageForm";
+ Text = "Склады";
+ Load += StorageForm_Load;
+ ((System.ComponentModel.ISupportInitialize)storagesDataGridView).EndInit();
+ ResumeLayout(false);
+ }
+
+ #endregion
+
+ private Button deleteButton;
+ private Button editButton;
+ private Button addButton;
+ private DataGridView storagesDataGridView;
+ }
+}
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Storage/StorageForm.cs b/CompShop/CompShop/Forms/Storage/StorageForm.cs
new file mode 100644
index 0000000..cdd946a
--- /dev/null
+++ b/CompShop/CompShop/Forms/Storage/StorageForm.cs
@@ -0,0 +1,102 @@
+
+using CompShop.Repos;
+using Unity;
+
+namespace CompShop.Forms.Storage
+{
+ public partial class StorageForm : Form
+ {
+ private readonly IUnityContainer _container;
+ private readonly IStorageRepository _repository;
+
+ public StorageForm(IUnityContainer unityContainer, IStorageRepository repository)
+ {
+ InitializeComponent();
+
+ _container = unityContainer ?? throw new ArgumentNullException(nameof(unityContainer));
+ _repository = repository ?? throw new ArgumentNullException(nameof(_repository));
+ }
+
+ private void StorageForm_Load(object sender, EventArgs e)
+ {
+ try
+ {
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ private void LoadList() => storagesDataGridView.DataSource = _repository.ReadAll();
+
+ private bool TryGetIdentifierFromSelectedRow(out int id)
+ {
+ id = 0;
+ if (storagesDataGridView.SelectedRows.Count < 1)
+ {
+ MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return false;
+ }
+
+ id = Convert.ToInt32(storagesDataGridView.SelectedRows[0].Cells["Id"].Value);
+ return true;
+ }
+
+ private void addButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ _container.Resolve().ShowDialog();
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void editButton_Click(object sender, EventArgs e)
+ {
+ if (!TryGetIdentifierFromSelectedRow(out var findId))
+ {
+ return;
+ }
+
+ try
+ {
+ var form = _container.Resolve();
+ form.Id = findId;
+ form.ShowDialog();
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void deleteButton_Click(object sender, EventArgs e)
+ {
+ if (!TryGetIdentifierFromSelectedRow(out var findId))
+ {
+ return;
+ }
+
+ if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes)
+ {
+ return;
+ }
+
+ try
+ {
+ _repository.Delete(findId);
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ }
+}
diff --git a/CompShop/CompShop/Forms/Storage/StorageForm.resx b/CompShop/CompShop/Forms/Storage/StorageForm.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/CompShop/CompShop/Forms/Storage/StorageForm.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Storage/StorageSettingsForm.Designer.cs b/CompShop/CompShop/Forms/Storage/StorageSettingsForm.Designer.cs
new file mode 100644
index 0000000..1835905
--- /dev/null
+++ b/CompShop/CompShop/Forms/Storage/StorageSettingsForm.Designer.cs
@@ -0,0 +1,109 @@
+namespace CompShop.Forms.Storage
+{
+ partial class StorageSettingsForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ label3 = new Label();
+ sizeNumeric = new NumericUpDown();
+ label1 = new Label();
+ adressTextbox = new TextBox();
+ saveButton = new Button();
+ ((System.ComponentModel.ISupportInitialize)sizeNumeric).BeginInit();
+ SuspendLayout();
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.Location = new Point(12, 67);
+ label3.Name = "label3";
+ label3.Size = new Size(100, 20);
+ label3.TabIndex = 11;
+ label3.Text = "Вместимость";
+ //
+ // sizeNumeric
+ //
+ sizeNumeric.Location = new Point(119, 65);
+ sizeNumeric.Name = "sizeNumeric";
+ sizeNumeric.Size = new Size(99, 27);
+ sizeNumeric.TabIndex = 10;
+ sizeNumeric.ThousandsSeparator = true;
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Location = new Point(12, 22);
+ label1.Name = "label1";
+ label1.Size = new Size(104, 20);
+ label1.TabIndex = 9;
+ label1.Text = "Адрес склада:";
+ //
+ // adressTextbox
+ //
+ adressTextbox.Location = new Point(119, 19);
+ adressTextbox.Name = "adressTextbox";
+ adressTextbox.Size = new Size(210, 27);
+ adressTextbox.TabIndex = 8;
+ //
+ // saveButton
+ //
+ saveButton.Anchor = AnchorStyles.Bottom;
+ saveButton.Location = new Point(129, 117);
+ saveButton.Name = "saveButton";
+ saveButton.Size = new Size(94, 29);
+ saveButton.TabIndex = 7;
+ saveButton.Text = "Сохранить";
+ saveButton.UseVisualStyleBackColor = true;
+ saveButton.Click += saveButton_Click;
+ //
+ // StorageSettingsForm
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(364, 158);
+ Controls.Add(label3);
+ Controls.Add(sizeNumeric);
+ Controls.Add(label1);
+ Controls.Add(adressTextbox);
+ Controls.Add(saveButton);
+ Name = "StorageSettingsForm";
+ Text = "Настройки склада";
+ Load += StorageFormSettings_Load;
+ ((System.ComponentModel.ISupportInitialize)sizeNumeric).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private Label label3;
+ private NumericUpDown sizeNumeric;
+ private Label label1;
+ private TextBox adressTextbox;
+ private Button saveButton;
+ }
+}
\ No newline at end of file
diff --git a/CompShop/CompShop/Forms/Storage/StorageSettingsForm.cs b/CompShop/CompShop/Forms/Storage/StorageSettingsForm.cs
new file mode 100644
index 0000000..0aa863f
--- /dev/null
+++ b/CompShop/CompShop/Forms/Storage/StorageSettingsForm.cs
@@ -0,0 +1,80 @@
+using CompShop.Repos;
+
+
+namespace CompShop.Forms.Storage
+{
+ public partial class StorageSettingsForm : Form
+ {
+ private readonly IStorageRepository _repository;
+
+ private int? _storageID;
+
+ public int Id
+ {
+ set
+ {
+ try
+ {
+ var storage = _repository.Read(value);
+ if (storage != null)
+ {
+ throw new InvalidDataException(nameof(storage));
+ }
+ adressTextbox.Text = storage.Adress;
+ sizeNumeric.Value = storage.Size;
+ _storageID = value;
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ }
+ }
+
+ public StorageSettingsForm(IStorageRepository repository)
+ {
+ InitializeComponent();
+ _repository = repository ?? throw new ArgumentNullException(nameof(repository));
+
+ }
+
+ private void StorageFormSettings_Load(object sender, EventArgs e)
+ {
+
+ }
+
+ private void saveButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (string.IsNullOrWhiteSpace(adressTextbox.Text))
+ {
+ throw new Exception("Имеются незаполненные поля");
+ }
+
+ if (_storageID.HasValue)
+ {
+
+ _repository.Update(CreateStorage(_storageID.Value));
+ }
+ else
+ {
+
+ _repository.Update(CreateStorage(0));
+ }
+
+ Close();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при сохранении",
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ private Entites.Storage CreateStorage(int id)
+ {
+ return Entites.Storage.CreateEntity(id, (int)sizeNumeric.Value, adressTextbox.Text);
+ }
+ }
+}
diff --git a/CompShop/CompShop/Forms/Storage/StorageSettingsForm.resx b/CompShop/CompShop/Forms/Storage/StorageSettingsForm.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/CompShop/CompShop/Forms/Storage/StorageSettingsForm.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/CompShop/CompShop/Program.cs b/CompShop/CompShop/Program.cs
index 70ba6d1..22edc1e 100644
--- a/CompShop/CompShop/Program.cs
+++ b/CompShop/CompShop/Program.cs
@@ -1,3 +1,8 @@
+using CompShop.Repos;
+using CompShop.Repos.Impements;
+using Unity;
+using Unity.Lifetime;
+
namespace CompShop
{
internal static class Program
@@ -8,10 +13,20 @@ namespace CompShop
[STAThread]
static void Main()
{
- // To customize application configuration such as set high DPI settings or default font,
- // see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize();
- Application.Run(new Form1());
+ Application.Run(CreateContainer().Resolve());
+ }
+ private static IUnityContainer CreateContainer()
+ {
+ var container = new UnityContainer();
+
+ container.RegisterType(new TransientLifetimeManager());
+ container.RegisterType(new TransientLifetimeManager());
+ container.RegisterType(new TransientLifetimeManager());
+ container.RegisterType(new TransientLifetimeManager());
+ container.RegisterType(new TransientLifetimeManager());
+
+ return container;
}
}
}
\ No newline at end of file
diff --git a/CompShop/CompShop/Repos/ICheckRepository.cs b/CompShop/CompShop/Repos/ICheckRepository.cs
new file mode 100644
index 0000000..1572f60
--- /dev/null
+++ b/CompShop/CompShop/Repos/ICheckRepository.cs
@@ -0,0 +1,11 @@
+using CompShop.Entites;
+
+namespace CompShop.Repos
+{
+ public interface ICheckRepository
+ {
+ IEnumerable ReadAll();
+ Check Read(int id);
+ void Create(Check check);
+ }
+}
diff --git a/CompShop/CompShop/Repos/IClientRepository.cs b/CompShop/CompShop/Repos/IClientRepository.cs
new file mode 100644
index 0000000..cb742d9
--- /dev/null
+++ b/CompShop/CompShop/Repos/IClientRepository.cs
@@ -0,0 +1,13 @@
+using CompShop.Entites;
+
+namespace CompShop.Repos
+{
+ public interface IClientRepository
+ {
+ IEnumerable ReadAll();
+ Client Read(int id);
+ void Create(Client client);
+ Client Update(Client client);
+ void Delete(int id);
+ }
+}
diff --git a/CompShop/CompShop/Repos/IProductOnStorageRepository.cs b/CompShop/CompShop/Repos/IProductOnStorageRepository.cs
new file mode 100644
index 0000000..138e378
--- /dev/null
+++ b/CompShop/CompShop/Repos/IProductOnStorageRepository.cs
@@ -0,0 +1,11 @@
+using CompShop.Entites;
+namespace CompShop.Repos
+{
+ public interface IProductOnStorageRepository
+ {
+ IEnumerable ReadAll();
+ ProductsOnStorage Read(int id);
+ void Create(ProductsOnStorage ps);
+ ProductsOnStorage Update(ProductsOnStorage storage);
+ }
+}
diff --git a/CompShop/CompShop/Repos/IProductRepository.cs b/CompShop/CompShop/Repos/IProductRepository.cs
new file mode 100644
index 0000000..904727e
--- /dev/null
+++ b/CompShop/CompShop/Repos/IProductRepository.cs
@@ -0,0 +1,13 @@
+using CompShop.Entites;
+
+namespace CompShop.Repos
+{
+ public interface IProductRepository
+ {
+ IEnumerable ReadAll();
+ Product Read(int id);
+ void Create(Product product);
+ Product Update(Product product);
+ void Delete(int id);
+ }
+}
diff --git a/CompShop/CompShop/Repos/IStorageRepository.cs b/CompShop/CompShop/Repos/IStorageRepository.cs
new file mode 100644
index 0000000..92093bd
--- /dev/null
+++ b/CompShop/CompShop/Repos/IStorageRepository.cs
@@ -0,0 +1,13 @@
+using CompShop.Entites;
+
+namespace CompShop.Repos
+{
+ public interface IStorageRepository
+ {
+ IEnumerable ReadAll();
+ Storage Read(int id);
+ void Create(Storage storage);
+ Storage Update(Storage storage);
+ void Delete(int id);
+ }
+}
diff --git a/CompShop/CompShop/Repos/Impements/CheckRepo.cs b/CompShop/CompShop/Repos/Impements/CheckRepo.cs
new file mode 100644
index 0000000..912f9f4
--- /dev/null
+++ b/CompShop/CompShop/Repos/Impements/CheckRepo.cs
@@ -0,0 +1,23 @@
+using CompShop.Entites;
+
+namespace CompShop.Repos.Impements
+{
+ public class CheckRepo : ICheckRepository
+ {
+
+ public void Create(Check check)
+ {
+
+ }
+
+ public Check Read(int id)
+ {
+ return Check.CreateEntity(0, new List(), new Client(), DateTime.Now);
+ }
+
+ public IEnumerable ReadAll()
+ {
+ return new List();
+ }
+ }
+}
diff --git a/CompShop/CompShop/Repos/Impements/ClientRepo.cs b/CompShop/CompShop/Repos/Impements/ClientRepo.cs
new file mode 100644
index 0000000..e9afa95
--- /dev/null
+++ b/CompShop/CompShop/Repos/Impements/ClientRepo.cs
@@ -0,0 +1,33 @@
+using CompShop.Entites;
+using CompShop.Entites.Enums;
+
+namespace CompShop.Repos.Impements
+{
+ public class ClientRepo : IClientRepository
+ {
+ public void Create(Client client)
+ {
+
+ }
+
+ public void Delete(int id)
+ {
+
+ }
+
+ public Client Read(int id)
+ {
+ return Client.CreateEntity(0, string.Empty, string.Empty, ClientType.Individual);
+ }
+
+ public IEnumerable ReadAll()
+ {
+ return new List();
+ }
+
+ public Client Update(Client client)
+ {
+ return Client.CreateEntity(0, string.Empty, string.Empty, ClientType.Individual);
+ }
+ }
+}
diff --git a/CompShop/CompShop/Repos/Impements/ProductRepo.cs b/CompShop/CompShop/Repos/Impements/ProductRepo.cs
new file mode 100644
index 0000000..f8e2d59
--- /dev/null
+++ b/CompShop/CompShop/Repos/Impements/ProductRepo.cs
@@ -0,0 +1,33 @@
+using CompShop.Entites;
+using CompShop.Entites.Enums;
+
+namespace CompShop.Repos.Impements
+{
+ public class ProductRepo : IProductRepository
+ {
+ public void Create(Product product)
+ {
+
+ }
+
+ public void Delete(int id)
+ {
+
+ }
+
+ public Product Read(int id)
+ {
+ return Product.CreateEntity(0, string.Empty, string.Empty, 0, ProductType.None);
+ }
+
+ public IEnumerable ReadAll()
+ {
+ return new List();
+ }
+
+ public Product Update(Product product)
+ {
+ return Product.CreateEntity(0, string.Empty, string.Empty, 0, ProductType.None);
+ }
+ }
+}
diff --git a/CompShop/CompShop/Repos/Impements/ProductsOnStorageRepo.cs b/CompShop/CompShop/Repos/Impements/ProductsOnStorageRepo.cs
new file mode 100644
index 0000000..8fc5199
--- /dev/null
+++ b/CompShop/CompShop/Repos/Impements/ProductsOnStorageRepo.cs
@@ -0,0 +1,27 @@
+using CompShop.Entites;
+
+namespace CompShop.Repos.Impements
+{
+ public class ProductsOnStorageRepo : IProductOnStorageRepository
+ {
+ public void Create(ProductsOnStorage ps)
+ {
+
+ }
+
+ public ProductsOnStorage Read(int id)
+ {
+ return ProductsOnStorage.CreateEntity(0, new Product(), new Storage(), 0);
+ }
+
+ public IEnumerable ReadAll()
+ {
+ return new List();
+ }
+
+ public ProductsOnStorage Update(ProductsOnStorage storage)
+ {
+ return ProductsOnStorage.CreateEntity(0, new Product(), new Storage(), 0);
+ }
+ }
+}
diff --git a/CompShop/CompShop/Repos/Impements/StorageRepo.cs b/CompShop/CompShop/Repos/Impements/StorageRepo.cs
new file mode 100644
index 0000000..08a565d
--- /dev/null
+++ b/CompShop/CompShop/Repos/Impements/StorageRepo.cs
@@ -0,0 +1,32 @@
+using CompShop.Entites;
+
+namespace CompShop.Repos.Impements
+{
+ public class StorageRepo: IStorageRepository
+ {
+ public void Create(Storage storage)
+ {
+
+ }
+
+ public void Delete(int id)
+ {
+
+ }
+
+ public Storage Read(int id)
+ {
+ return Storage.CreateEntity(0, 0, string.Empty);
+ }
+
+ public IEnumerable ReadAll()
+ {
+ return new List();
+ }
+
+ public Storage Update(Storage storage)
+ {
+ return Storage.CreateEntity(0, 0, string.Empty);
+ }
+ }
+}
diff --git a/CompShop/CompShop/photo_2024-10-27_23-57-36.jpg b/CompShop/CompShop/photo_2024-10-27_23-57-36.jpg
new file mode 100644
index 0000000..5aa0728
Binary files /dev/null and b/CompShop/CompShop/photo_2024-10-27_23-57-36.jpg differ