From 568549df0476fd2b8d55b03eacbd4f6c53dba410 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D0=B8=D0=BD=D0=B0=20=D0=A7=D1=83=D0=B1?= =?UTF-8?q?=D1=8B=D0=BA=D0=B8=D0=BD=D0=B0?= Date: Wed, 13 Sep 2023 09:05:24 +0400 Subject: [PATCH 1/4] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=BE=D0=B2=20=D1=81?= =?UTF-8?q?=D1=83=D1=89=D0=BD=D0=BE=D1=81=D1=82=D0=B8,=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=BC=D0=B5=D1=89=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=D0=BA=D0=B8?= =?UTF-8?q?=20(=D0=BF=D0=BE=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80=D1=83)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sailboat/Sailboat/Direction.cs | 29 + Sailboat/Sailboat/DrawingSailboat.cs | 232 ++++ Sailboat/Sailboat/EntitySailboat.cs | 65 + Sailboat/Sailboat/Form1.Designer.cs | 39 - Sailboat/Sailboat/FormSailboat.Designer.cs | 134 ++ .../Sailboat/{Form1.cs => FormSailboat.cs} | 4 +- Sailboat/Sailboat/FormSailboat.resx | 1105 +++++++++++++++++ Sailboat/Sailboat/Program.cs | 2 +- .../Sailboat/Properties/Resources.Designer.cs | 63 + .../{Form1.resx => Properties/Resources.resx} | 0 Sailboat/Sailboat/Sailboat.csproj | 15 + 11 files changed, 1646 insertions(+), 42 deletions(-) create mode 100644 Sailboat/Sailboat/Direction.cs create mode 100644 Sailboat/Sailboat/DrawingSailboat.cs create mode 100644 Sailboat/Sailboat/EntitySailboat.cs delete mode 100644 Sailboat/Sailboat/Form1.Designer.cs create mode 100644 Sailboat/Sailboat/FormSailboat.Designer.cs rename Sailboat/Sailboat/{Form1.cs => FormSailboat.cs} (53%) create mode 100644 Sailboat/Sailboat/FormSailboat.resx create mode 100644 Sailboat/Sailboat/Properties/Resources.Designer.cs rename Sailboat/Sailboat/{Form1.resx => Properties/Resources.resx} (100%) diff --git a/Sailboat/Sailboat/Direction.cs b/Sailboat/Sailboat/Direction.cs new file mode 100644 index 0000000..31bfff6 --- /dev/null +++ b/Sailboat/Sailboat/Direction.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Sailboat +{ + internal enum DirectionType + { + /// + /// Вверх + /// + Up = 1, + /// + /// Вниз + /// + Down = 2, + /// + /// Влево + /// + Left = 3, + /// + /// Вправо + /// + Right = 4 + + } +} diff --git a/Sailboat/Sailboat/DrawingSailboat.cs b/Sailboat/Sailboat/DrawingSailboat.cs new file mode 100644 index 0000000..9ab0542 --- /dev/null +++ b/Sailboat/Sailboat/DrawingSailboat.cs @@ -0,0 +1,232 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Sailboat +{ + internal class DrawingSailboat + { + /// + /// Класс-сущность + /// + public EntitySailboat? EntitySailboat { get; private set; } + /// + /// Ширина окна + /// + private int _pictureWidth; + /// + /// Высота окна + /// + private int _pictureHeight; + /// + /// Левая координата прорисовки автомобиля + /// + private int _startPosX; + /// + /// Верхняя кооридната прорисовки автомобиля + /// + private int _startPosY; + /// + /// Ширина прорисовки автомобиля + /// + private readonly int _carWidth = 110; + /// + /// Высота прорисовки автомобиля + /// + private readonly int _carHeight = 60; + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес + /// Цвет кузова + /// Дополнительный цвет + /// Признак наличия обвеса + /// Признак наличия антикрыла + /// Признак наличия гоночной полосы + /// Ширина картинки + /// Высота картинки + /// true - объект создан, false - проверка не пройдена, нельзя создать объект в этих размерах + public bool Init(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyKit, bool wing, bool sportLine, int width, int height) + { + // TODO: Продумать проверки + _pictureWidth = width; + _pictureHeight = height; + EntitySailboat = new EntitySailboat(); + EntitySailboat.Init(speed, weight, bodyColor, additionalColor, bodyKit, wing, sportLine); + return true; + } + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + public void SetPosition(int x, int y) + { + // TODO: Изменение x, y + _startPosX = x; + _startPosY = y; + } + /// + /// Изменение направления перемещения + /// + /// Направление + public void MoveTransport(DirectionType direction) + { + if (EntitySailboat == null) + { + return; + } + switch (direction) + { + //влево + case DirectionType.Left: + if (_startPosX - EntitySailboat.Step > 0) + { + _startPosX -= (int)EntitySailboat.Step; + } + break; + //вверх + case DirectionType.Up: + if (_startPosY - EntitySailboat.Step > 0) + { + _startPosY -= (int)EntitySailboat.Step; + } + break; + // вправо + case DirectionType.Right: + // TODO: Продумать логику + break; + //вниз + case DirectionType.Down: + // TODO: Продумать логику + break; + } + } + /// + /// Прорисовка объекта + /// + /// + public void DrawTransport(Graphics g) + { + if (EntitySailboat == null) + { + return; + } + Pen pen = new(Color.Black); + Brush additionalBrush = new + SolidBrush(EntitySailboat.AdditionalColor); + // обвесы + if (EntitySailboat.BodyKit) + { + g.DrawEllipse(pen, _startPosX + 90, _startPosY, 20, 20); + g.DrawEllipse(pen, _startPosX + 90, _startPosY + 40, 20, + 20); + g.DrawRectangle(pen, _startPosX + 90, _startPosY + 10, + 20, 40); + g.DrawRectangle(pen, _startPosX + 90, _startPosY, 15, + 15); + g.DrawRectangle(pen, _startPosX + 90, _startPosY + 45, + 15, 15); + g.FillEllipse(additionalBrush, _startPosX + 90, + _startPosY, 20, 20); + g.FillEllipse(additionalBrush, _startPosX + 90, + _startPosY + 40, 20, 20); + g.FillRectangle(additionalBrush, _startPosX + 90, + _startPosY + 10, 20, 40); + g.FillRectangle(additionalBrush, _startPosX + 90, + _startPosY + 1, 15, 15); + g.FillRectangle(additionalBrush, _startPosX + 90, + _startPosY + 45, 15, 15); + g.DrawEllipse(pen, _startPosX, _startPosY, 20, 20); + g.DrawEllipse(pen, _startPosX, _startPosY + 40, 20, 20); + g.DrawRectangle(pen, _startPosX, _startPosY + 10, 20, + 40); + g.DrawRectangle(pen, _startPosX + 5, _startPosY, 14, + 15); + g.DrawRectangle(pen, _startPosX + 5, _startPosY + 45, + 14, 15); + g.FillEllipse(additionalBrush, _startPosX, _startPosY, + 20, 20); + g.FillEllipse(additionalBrush, _startPosX, _startPosY + + 40, 20, 20); + g.FillRectangle(additionalBrush, _startPosX + 1, + _startPosY + 10, 25, 40); + g.FillRectangle(additionalBrush, _startPosX + 5, + _startPosY + 1, 15, 15); + g.FillRectangle(additionalBrush, _startPosX + 5, + _startPosY + 45, 15, 15); + g.DrawRectangle(pen, _startPosX + 35, _startPosY, 39, + 15); + g.DrawRectangle(pen, _startPosX + 35, _startPosY + 45, + 39, 15); + g.FillRectangle(additionalBrush, _startPosX + 35, + _startPosY + 1, 40, 15); + g.FillRectangle(additionalBrush, _startPosX + 35, + _startPosY + 45, 40, 15); + } + //границы автомобиля + g.DrawEllipse(pen, _startPosX + 10, _startPosY + 5, 20, 20); + g.DrawEllipse(pen, _startPosX + 10, _startPosY + 35, 20, 20); + g.DrawEllipse(pen, _startPosX + 80, _startPosY + 5, 20, 20); + g.DrawEllipse(pen, _startPosX + 80, _startPosY + 35, 20, 20); + g.DrawRectangle(pen, _startPosX + 9, _startPosY + 15, 10, 30); + g.DrawRectangle(pen, _startPosX + 90, _startPosY + 15, 10, + 30); + g.DrawRectangle(pen, _startPosX + 20, _startPosY + 4, 70, 52); + //задние фары + Brush brRed = new SolidBrush(Color.Red); + g.FillEllipse(brRed, _startPosX + 10, _startPosY + 5, 20, 20); + g.FillEllipse(brRed, _startPosX + 10, _startPosY + 35, 20, + 20); + //передние фары + Brush brYellow = new SolidBrush(Color.Yellow); + g.FillEllipse(brYellow, _startPosX + 80, _startPosY + 5, 20, + 20); + g.FillEllipse(brYellow, _startPosX + 80, _startPosY + 35, 20, + 20); + //кузов + Brush br = new SolidBrush(EntitySailboat.BodyColor); + g.FillRectangle(br, _startPosX + 10, _startPosY + 15, 10, 30); + g.FillRectangle(br, _startPosX + 90, _startPosY + 15, 10, 30); + g.FillRectangle(br, _startPosX + 20, _startPosY + 5, 70, 50); + //стекла + Brush brBlue = new SolidBrush(Color.LightBlue); + g.FillRectangle(brBlue, _startPosX + 70, _startPosY + 10, 5, + 40); + g.FillRectangle(brBlue, _startPosX + 30, _startPosY + 10, 5, + 40); + g.FillRectangle(brBlue, _startPosX + 35, _startPosY + 8, 35, + 2); + g.FillRectangle(brBlue, _startPosX + 35, _startPosY + 51, 35, + 2); + //выделяем рамкой крышу + g.DrawRectangle(pen, _startPosX + 35, _startPosY + 10, 35, + 40); + g.DrawRectangle(pen, _startPosX + 75, _startPosY + 15, 25, + 30); + g.DrawRectangle(pen, _startPosX + 10, _startPosY + 15, 15, + 30); + // спортивная линия + if (EntitySailboat.SportLine) + { + g.FillRectangle(additionalBrush, _startPosX + 75, + _startPosY + 23, 25, 15); + g.FillRectangle(additionalBrush, _startPosX + 35, + _startPosY + 23, 35, 15); + g.FillRectangle(additionalBrush, _startPosX + 10, + _startPosY + 23, 20, 15); + } + // крыло + if (EntitySailboat.Wing) + { + g.FillRectangle(additionalBrush, _startPosX, _startPosY + + 5, 10, 50); + g.DrawRectangle(pen, _startPosX, _startPosY + 5, 10, + 50); + } + } + } +} diff --git a/Sailboat/Sailboat/EntitySailboat.cs b/Sailboat/Sailboat/EntitySailboat.cs new file mode 100644 index 0000000..c9fda1f --- /dev/null +++ b/Sailboat/Sailboat/EntitySailboat.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Sailboat +{ + internal class EntitySailboat + { + /// + /// Скорость + /// + public int Speed { get; private set; } + /// + /// Вес + /// + public double Weight { get; private set; } + /// + /// Основной цвет + /// + public Color BodyColor { get; private set; } + /// + /// Дополнительный цвет (для опциональных элементов) + /// + public Color AdditionalColor { get; private set; } + /// + /// Признак (опция) наличия обвеса + /// + public bool BodyKit { get; private set; } + /// + /// Признак (опция) наличия антикрыла + /// + public bool Wing { get; private set; } + /// + /// Признак (опция) наличия гоночной полосы + /// + public bool SportLine { get; private set; } + /// + /// Шаг перемещения автомобиля + /// + public double Step => (double)Speed * 100 / Weight; + /// + /// Инициализация полей объекта-класса спортивного автомобиля + /// + /// Скорость + /// Вес автомобиля + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия обвеса + /// Признак наличия антикрыла + /// Признак наличия гоночной полосы + public void Init(int speed, double weight, Color bodyColor, Color + additionalColor, bool bodyKit, bool wing, bool sportLine) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + BodyKit = bodyKit; + Wing = wing; + SportLine = sportLine; + } + } +} diff --git a/Sailboat/Sailboat/Form1.Designer.cs b/Sailboat/Sailboat/Form1.Designer.cs deleted file mode 100644 index dede0e6..0000000 --- a/Sailboat/Sailboat/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace Sailboat -{ - 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 - } -} \ No newline at end of file diff --git a/Sailboat/Sailboat/FormSailboat.Designer.cs b/Sailboat/Sailboat/FormSailboat.Designer.cs new file mode 100644 index 0000000..6d9dcd1 --- /dev/null +++ b/Sailboat/Sailboat/FormSailboat.Designer.cs @@ -0,0 +1,134 @@ +namespace Sailboat +{ + partial class FormSailboat + { + /// + /// 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(FormSailboat)); + this.pictureBoxSailboat = new System.Windows.Forms.PictureBox(); + this.buttonCreate = new System.Windows.Forms.Button(); + this.buttonLeft = new System.Windows.Forms.Button(); + this.buttonUp = new System.Windows.Forms.Button(); + this.buttonRight = new System.Windows.Forms.Button(); + this.buttonDown = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxSailboat)).BeginInit(); + this.SuspendLayout(); + // + // pictureBoxSailboat + // + this.pictureBoxSailboat.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBoxSailboat.Location = new System.Drawing.Point(0, 0); + this.pictureBoxSailboat.Name = "pictureBoxSailboat"; + this.pictureBoxSailboat.Size = new System.Drawing.Size(1466, 741); + this.pictureBoxSailboat.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBoxSailboat.TabIndex = 0; + this.pictureBoxSailboat.TabStop = false; + // + // buttonCreate + // + this.buttonCreate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.buttonCreate.Location = new System.Drawing.Point(12, 683); + this.buttonCreate.Name = "buttonCreate"; + this.buttonCreate.Size = new System.Drawing.Size(127, 46); + this.buttonCreate.TabIndex = 1; + this.buttonCreate.Text = "Создать"; + this.buttonCreate.UseVisualStyleBackColor = true; + // + // buttonLeft + // + this.buttonLeft.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonLeft.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonLeft.BackgroundImage"))); + this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.buttonLeft.Location = new System.Drawing.Point(1294, 691); + this.buttonLeft.Name = "buttonLeft"; + this.buttonLeft.Size = new System.Drawing.Size(30, 30); + this.buttonLeft.TabIndex = 2; + this.buttonLeft.UseVisualStyleBackColor = true; + // + // buttonUp + // + this.buttonUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonUp.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonUp.BackgroundImage"))); + this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.buttonUp.Location = new System.Drawing.Point(1343, 646); + this.buttonUp.Name = "buttonUp"; + this.buttonUp.Size = new System.Drawing.Size(30, 30); + this.buttonUp.TabIndex = 3; + this.buttonUp.UseVisualStyleBackColor = true; + // + // buttonRight + // + this.buttonRight.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonRight.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonRight.BackgroundImage"))); + this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.buttonRight.Location = new System.Drawing.Point(1393, 691); + this.buttonRight.Name = "buttonRight"; + this.buttonRight.Size = new System.Drawing.Size(30, 30); + this.buttonRight.TabIndex = 4; + this.buttonRight.UseVisualStyleBackColor = true; + // + // buttonDown + // + this.buttonDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonDown.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonDown.BackgroundImage"))); + this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.buttonDown.Location = new System.Drawing.Point(1343, 691); + this.buttonDown.Name = "buttonDown"; + this.buttonDown.Size = new System.Drawing.Size(30, 30); + this.buttonDown.TabIndex = 5; + this.buttonDown.UseVisualStyleBackColor = true; + // + // FormSailboat + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1466, 741); + this.Controls.Add(this.buttonDown); + this.Controls.Add(this.buttonRight); + this.Controls.Add(this.buttonUp); + this.Controls.Add(this.buttonLeft); + this.Controls.Add(this.buttonCreate); + this.Controls.Add(this.pictureBoxSailboat); + this.Name = "FormSailboat"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Парусник"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxSailboat)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private PictureBox pictureBoxSailboat; + private Button buttonCreate; + private Button buttonLeft; + private Button buttonUp; + private Button buttonRight; + private Button buttonDown; + } +} \ No newline at end of file diff --git a/Sailboat/Sailboat/Form1.cs b/Sailboat/Sailboat/FormSailboat.cs similarity index 53% rename from Sailboat/Sailboat/Form1.cs rename to Sailboat/Sailboat/FormSailboat.cs index 224bdaa..14e0cf0 100644 --- a/Sailboat/Sailboat/Form1.cs +++ b/Sailboat/Sailboat/FormSailboat.cs @@ -1,8 +1,8 @@ namespace Sailboat { - public partial class Form1 : Form + public partial class FormSailboat : Form { - public Form1() + public FormSailboat() { InitializeComponent(); } diff --git a/Sailboat/Sailboat/FormSailboat.resx b/Sailboat/Sailboat/FormSailboat.resx new file mode 100644 index 0000000..6d82dad --- /dev/null +++ b/Sailboat/Sailboat/FormSailboat.resx @@ -0,0 +1,1105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + 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 + 50AUaKAL0X+qT/dFPoAoz/69/wAP5UygC1a/6tv96p6AK13/AAfjVegCW2/1v4GrlAEc/wDqWqlQAD7w + +taNABWcfvH60AFXYP8AUrQBJVO5/wBd+AoAiqxafx/hQBZqC6/1a/71AFWnwf69Px/lQBepkv8Aqn/3 + TQBRooAKKAL0X+qT/dFPoAoz/wCvf8P5UygC1a/6tvrU9AFa7/g/Gq9AEtt/rfwq5QBHP/qWqlQAD7w+ + taNABWcfvH60AFXYP9StAElU7n/XfgKAIqsWn8f4UAWaguv9Wv1oAq0+D/Xp+P8AKgC9TJf9U/8AumgC + jRQB/9kA/9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4SEA0OEQ4LCxAWEBET + FBUVFQwPFxgWFBgSFBUU/9sAQwEDBAQFBAUJBQUJFA0LDRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU + FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/8AAEQgBaAFoAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAA + AAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGh + CCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0 + dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh + 4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIB + AgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBka + JicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZ + mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwD + AQACEQMRAD8A/SWiiigBrfcb6V2Fce33G+ldhQAUUUUAcgv3F+lLSL9xfpS0ANb7jfSuwrj2+430rsKA + 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 + Brfcb6V2FFFABRRRQByC/cX6UtFFABRRRQB//9k= + + + + + /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwg + JC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIy + MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAFoAWgDASIAAhEBAxEB/8QA + HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh + MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW + V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG + x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF + BgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV + YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE + hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq + 8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD26iiigBD901pVmn7prSoAKKKKAM0fdFLSD7opaAEP3TWlWafu + mtKgAooooAzR90UtIPuiloAQ/dNaVZp+6a0qACiiigDNH3RS0g+6KWgBD901pVmn7prSoAKKKKAM0fdF + LSD7opaAEP3TWlWafumtKgAooooAzR90UtIPuiloAQ/dNaVZp+6a0qACiiigDNH3RS0g+6KWgBD901pV + mn7prSoAKKKKAM0fdFLSD7opaACiiigBMj1FGR6itKigDNJGDzWlRWaAMDigDSorNwPQUEDB4oAARgc0 + ZHqK0qKAM0kYPNaVFZoAwOKANKis3A9BQQMHigABGBzRkeorSooAzSRg81pUVmgDA4oA0qKzcD0FBAwe + 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 + /U/iamoAqXQ+dfpUGB6UAT2o/eH/AHat0ARXH+ob8P51SwPSgByAeYn+8P51oUAFZoAwKADA9Kvxf6lP + 90UAPqlcD9834UARYHpVq0+631oAsVXu/ur9aAKuB6VJbj9+v4/yoAvUyX/VP/umgChgelGB6UALSGgD + SooAoSf61/8AeNNoAuW3+p/E1LQBVuvvr9Kg7UATWv8ArD9Kt0ARXH+pb8P51TFACp/rF/3h/OtCgArN + HQUALV6L/VJ/uigB9Urj/XNQBHVm1+631oAsVXuvur9aAK1SQf65fx/lQBdpkv8Aqn/3TQBRooA//9kA + /9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4SEA0OEQ4LCxAWEBETFBUVFQwP + FxgWFBgSFBUU/9sAQwEDBAQFBAUJBQUJFA0LDRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU + FBQUFBQUFBQUFBQUFBQUFBQU/8AAEQgBZwFnAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAAB + AgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEV + UtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6 + g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn + 6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQH + BQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1 + Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWm + p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMR + AD8A/SWiiigCW2/4+of+uq/zFdTXLW3/AB9Q/wDXVf5iupoAKgvv+PG4/wCubfyNT1Bff8eNx/1zb+Ro + A5j/AOtRR/8AWooAltv+PqH/AK6r/MV1Nctbf8fUP/XVf5iupoAKgvv+PG4/65t/I1PUF9/x43H/AFzb + +RoA5j/61FH/ANaigCW2/wCPqH/rqv8AMV1Nctbf8fUP/XVf5iupoAKgvv8AjxuP+ubfyNT1Bff8eNx/ + 1zb+RoA5j/61FH/1qKAJbb/j6h/66r/MV1Nctbf8fUP/AF1X+YrqaACoL7/jxuP+ubfyNT1Bff8AHjcf + 9c2/kaAOY/8ArUUf/WooAltv+PqH/rqv8xXU1y1t/wAfUP8A11X+YrqaACoL7/jxuP8Arm38jU9QX3/H + jcf9c2/kaAOY/wDrUUf/AFqKAJbb/j6h/wCuq/zFdTXLW3/H1D/11X+YrqaACoL7/jxuP+ubfyNT1Bff + 8eNx/wBc2/kaAOY/+tRR/wDWooAltv8Aj6h/66r/ADFdTXLW3/H1D/11X+YrqaACoL7/AI8bj/rm38jU + 9QX3/Hjcf9c2/kaAOY/+tRR/9aigAooooATzE/vUeYv96uvooA5S1kH2q3+b/lqv8xXV1Bff8eNx/wBc + 2/ka5by14+XtQB2FQX3/AB43H/XNv5GuX8tf7tSWsY+1W/y/8tV/mKAIvMXj5u1L5i/3q6+igDlLWQfa + rf5v+Wq/zFdXUF9/x43H/XNv5GuW8tePl7UAdhUF9/x43H/XNv5GuX8tf7tSWsY+1W/y/wDLVf5igCLz + F4+btS+Yv96uvooA5S1kH2q3+b/lqv8AMV1dQX3/AB43H/XNv5GuW8tePl7UAdhUF9/x43H/AFzb+Rrl + /LX+7UlrGPtVv8v/AC1X+YoAi8xePm7UvmL/AHq6+igDlLWQfarf5v8Alqv8xXV1Bff8eNx/1zb+Rrlv + LXj5e1AHYVBff8eNx/1zb+Rrl/LX+7UlrGPtVv8AL/y1X+YoAi8xePm7UvmL/err6KAOUtZB9qt/m/5a + r/MV1dQX3/Hjcf8AXNv5GuW8tePl7UAdhUF9/wAeNx/1zb+Rrl/LX+7UlrGPtVv8v/LVf5igCLzF4+bt + S+Yv96uvooA5S1kH2q3+b/lqv8xXV1Bff8eNx/1zb+RrlvLXj5e1AHYVBff8eNx/1zb+Rrl/LX+7UlrG + PtVv8v8Ay1X+YoAi8xePm7UvmL/err6KAOUtZB9qt/m/5ar/ADFdXUF9/wAeNx/1zb+RrlvLXj5e1AHY + VBff8eNx/wBc2/ka5fy1/u1Jaxj7Vb/L/wAtV/mKAIvMXj5u1L5if3q6+igDkPMT+9RXX0UAFFFFAEF9 + /wAeNx/1zb+RrmP/AK1dPff8eNx/1zb+RrlvMXj5u1ADqltv+PqH/rqv8xUPmL/eqS1kH2q3+b/lqv8A + MUAdXRRRQBBff8eNx/1zb+RrmP8A61dPff8AHjcf9c2/ka5bzF4+btQA6pbb/j6h/wCuq/zFQ+Yv96pL + WQfarf5v+Wq/zFAHV0UUUAQX3/Hjcf8AXNv5GuY/+tXT33/Hjcf9c2/ka5bzF4+btQA6pbb/AI+of+uq + /wAxUPmL/eqS1kH2q3+b/lqv8xQB1dFFFAEF9/x43H/XNv5GuY/+tXT33/Hjcf8AXNv5GuW8xePm7UAO + qW2/4+of+uq/zFQ+Yv8AeqS1kH2q3+b/AJar/MUAdXRRRQBBff8AHjcf9c2/ka5j/wCtXT33/Hjcf9c2 + /ka5bzF4+btQA6pbb/j6h/66r/MVD5i/3qktZB9qt/m/5ar/ADFAHV0UUUAQX3/Hjcf9c2/ka5j/AOtX + T33/AB43H/XNv5GuW8xePm7UAOqW2/4+of8Arqv8xUPmL/eqS1kH2q3+b/lqv8xQB1dFFFAEF9/x43H/ + AFzb+RrmP/rV099/x43H/XNv5GuW8xePm7UAOqW2/wCPqH/rqv8AMVD5i/3qktZB9qt/m/5ar/MUAdXR + RRQAUUUUAch5af3aPLX+7S0UAPtYx9qt/l/5ar/MV1dctbf8fUP/AF1X+YrqaACoL7/jxuP+ubfyNT1B + ff8AHjcf9c2/kaAOW8tePl7Uvlr/AHaX/wCtRQA+1jH2q3+X/lqv8xXV1y1t/wAfUP8A11X+YrqaACoL + 7/jxuP8Arm38jU9QX3/Hjcf9c2/kaAOW8tePl7Uvlr/dpf8A61FAD7WMfarf5f8Alqv8xXV1y1t/x9Q/ + 9dV/mK6mgAqC+/48bj/rm38jU9QX3/Hjcf8AXNv5GgDlvLXj5e1L5a/3aX/61FAD7WMfarf5f+Wq/wAx + XV1y1t/x9Q/9dV/mK6mgAqC+/wCPG4/65t/I1PUF8rPZ3CqCWMbAAdelAHLeWvHy9qXy1/u1RufEeiWO + sJpF3rmlW2rSEbbCa9hS4bPAxHuDH64rRlgeEssiFWHXjCn0IPegBbWMfarf5f8Alqv8xXV1y1t/x9Q/ + 9dV/mK6mgAqC+/48bj/rm38jU9QX3/Hjcf8AXNv5GgDlvLXj5e1L5a/3aX/61FAD7WMfarf5f+Wq/wAx + XV1y1t/x9Q/9dV/mK6mgAqC+/wCPG4/65t/I1PUF9/x43H/XNv5GgDlvLXj5e1L5a/3aX/61FAD7WMfa + rf5f+Wq/zFdXXLW3/H1D/wBdV/mK6mgAqC+/48bj/rm38jU9QX3/AB43H/XNv5GgDlvLXj5e1L5af3aX + /wCtRQAnlp/dopaKAE8xP71HmL/err6KAOUtZB9qt/m/5ar/ADFdXUF9/wAeNx/1zb+RrlvLXj5e1AHY + VBff8eNx/wBc2/ka5fy1/u1Jaxj7Vb/L/wAtV/mKAIvMXj5u1L5i/wB6uvooA5S1kH2q3+b/AJar/MV1 + dQX3/Hjcf9c2/ka5by14+XtQB2FQX3/Hjcf9c2/ka5fy1/u1Jaxj7Vb/AC/8tV/mKAIvMXj5u1L5i/3q + 6+igDlLWQfarf5v+Wq/zFdXUF9/x43H/AFzb+RrlvLXj5e1AHYVBff8AHjcf9c2/ka5fy1/u1Jaxj7Vb + /L/y1X+YoAi8xePm7UvmL/err6KAOUtZB9qt/m/5ar/MV1dQX3/Hjcf9c2/ka5by14+XtQB17fdP9a/P + r/gq5+1xrvwR8NaF4D8GahNpPiLxFbyXN3qVrK0c9rZg7FEbKQVZ23/MOR5fBr7WMa4PFfkB/wAFnf8A + k5rwj/2JVp/6W3tAHwlcXEl1cPJPI08spLvIzbmZicsxJJyT3Jr7z/YL/wCCid/8KNQsvAHxO1O41HwH + cOsVnqlyxkl0diMAHu0HqOq8la+AKF+8KAP6e9PuYbz7Bc208d1bXBilhuIXBjmjbBVlI+U5+8GHJAIN + dbX4p/8ABPj/AIKDyfBaa2+HXxGvJLr4f3B8qy1CRiz6K7HHzY5a3OckDlTyK/Xm3e3vLWC6t5Y7q1uI + 1lguIcPHNGwyrKR8vOdwYckAg0AdnUF9/wAeNx/1zb+Rrl/LX+7UlrGPtVv8v/LVf5igCLzF4+btS+Yv + 96uvooA5S1kH2q3+b/lqv8xXV1Bff8eNx/1zb+RrlvLXj5e1AHYVBff8eNx/1zb+Rrl/LX+7UlrGPtVv + 8v8Ay1X+YoAi8xePm7UvmL/err6KAOUtZB9qt/m/5ar/ADFdXUF9/wAeNx/1zb+RrlvLXj5e1AHYVBff + 8eNx/wBc2/ka5fy1/u1Jaxj7Vb/L/wAtV/mKAIvMXj5u1L5if3q6+igDkPMT+9RXX0UAFFFFAEF9/wAe + Nx/1zb+RrmP/AK1dPff8eNx/1zb+RrlvMXj5u1ADqltv+PqH/rqv8xUPmL/eqS1kH2q3+b/lqv8AMUAd + XRRRQBBff8eNx/1zb+RrmP8A61dPff8AHjcf9c2/ka5bzF4+btQA6pbb/j6h/wCuq/zFQ+Yv96pLWQfa + rf5v+Wq/zFAHV0UUUAQX3/Hjcf8AXNv5GuY/+tXT33/Hjcf9c2/ka5bzF4+btQA6pbb/AI+of+uq/wAx + UPmL/eqS1kH2q3+b/lqv8xQB1dFFFAEF9/x43H/XNv5GuY/+tXT33/Hjcf8AXNv5GuW8xePm7UAOr8f/ + APgs9/yc14R/7Eq0/wDS29r9f/MX1r8gP+Cz3/JzXhH/ALEq0/8AS29oA+BaKKKAFj/1i/X1x+tffH/B + Pz/goBN8FLqz+HnxFupLr4fzSeXY6hI536K7HuBy0BJyyjlD8wr4GpU++v19cUAf06280N5awXdtPHdW + 1xGssNxC4eOaNhlWUj5efvBhyQCDVm2/4+of+uq/zFfjz/wT9/b9m+Ct5afDz4i3ct18P5m2WOoSMXfR + XY85A5MBzllHKH5hX7A6fcw3n2C4tp47q2uTHNDcQyAxzRtgqykfKc/eDDkgEGgDrqKKKAIL7/jxuP8A + rm38jXMf/Wrp77/jxuP+ubfyNct5i8fN2oAdUtt/x9Q/9dV/mKh8xf71SWsg+1W/zf8ALVf5igDq6KKK + AIL7/jxuP+ubfyNcx/8AWrp77/jxuP8Arm38jXLeYvHzdqAHVLbf8fUP/XVf5iofMX+9UlrIPtVv83/L + Vf5igDq6KKKACiiigDkPLT+7R5a/3aWigB9rGPtVv8v/AC1X+Yrq65a2/wCPqH/rqv8AMV1NABUF9/x4 + 3H/XNv5Gp6gvv+PG4/65t/I0Act5a8fL2pfLX+7S/wD1qKAH2sY+1W/y/wDLVf5iurrlrb/j6h/66r/M + V1NABUF9/wAeNx/1zb+RqeoL7/jxuP8Arm38jQBy3lrx8val8tf7tL/9aigB9rGPtVv8v/LVf5iurrlr + b/j6h/66r/MV1NABUF9/x43H/XNv5Gp6gvv+PG4/65t/I0Act5a8fL2pfLX+7S//AFqKAH2sY+1W/wAv + /LVf5iurrlrb/j6h/wCuq/zFdTQAV+K3/Bar/k6bwt/2Jtr/AOlt9X7U1+K3/Bar/k6bwt/2Jtr/AOlt + 9QB8AUUUUAFFFFACr94fX1xX33/wT5/4KDSfBWa2+HXxGvJLn4f3B8qyv5GLPorscYbHLW5zkgcoeRXw + HSx/fX6+uKAP6dLd7e8tYLq3ljurW4jWWC4hw8c0bDKspHy853BhyQCDUnlr/dr8f/8Agn7/AMFAJvgp + d2nw8+It3JdfD+eQR2OoSOd+iuxHUDloCTllHKH5hX6+288N9awXVtPHdW1xGs0NxC4eOaNhlWUj5efv + BhyQCDQBPaxj7Vb/AC/8tV/mK6uuWtv+PqH/AK6r/MV1NABUF9/x43H/AFzb+RqeoL7/AI8bj/rm38jQ + By3lrx8val8tf7tL/wDWooAfaxj7Vb/L/wAtV/mK6uuWtv8Aj6h/66r/ADFdTQAVBff8eNx/1zb+Rqeo + L7/jxuP+ubfyNAHLeWvHy9qXy0/u0v8A9aigBPLT+7RS0UAJ5if3qPMX+9XX0UAcpayD7Vb/ADf8tV/m + K6uoL7/jxuP+ubfyNct5a8fL2oA7CoL7/jxuP+ubfyNcv5a/3aktYx9qt/l/5ar/ADFAEXmLx83al8xf + 71dfRQBylrIPtVv83/LVf5iurqC+/wCPG4/65t/I1y3lrx8vagDsKgvv+PG4/wCubfyNcv5a/wB2pLWM + farf5f8Alqv8xQBF5i8fN2pfMX+9XX0UAcpayD7Vb/N/y1X+Yrq6gvv+PG4/65t/I1y3lrx8vagDsKgv + v+PG4/65t/I1y/lr/dqS1jH2q3+X/lqv8xQBF5i8fN2pfMX+9XX0UAcpayD7Vb/N/wAtV/mK6uoL7/jx + uP8Arm38jXLeWvHy9qAOwr8Vv+C1X/J03hb/ALE21/8AS2+r9eTGuDxX5Af8Fnf+TmvCP/YlWn/pbe0A + fA1FFFABRRRQAUUUUALH/rF+vrj9a++P+Cfn7f8AN8Fbqz+HnxFupLr4fTyeVZX8jnforsecgctAc5ZR + yh+YV8DUL94UAf09adcw3jWN1bzx3VrcGOWC4hcPHNG2CrKR8vP3gw5IBBrrq/FT/gnz/wAFB5vgvcWv + w7+Il7JcfD+4Pk2OoyMWfRHYgfNjlrc5yQOVPIr9eLd4Ly1t7q2kjuLW4jWWGaHDxvGwyrKR8vIPDDkj + INAHZ1Bff8eNx/1zb+Rrl/LX+7UlrGPtVv8AL/y1X+YoAi8xePm7UvmL/err6KAOUtZB9qt/m/5ar/MV + 1dQX3/Hjcf8AXNv5GuW8tePl7UAdhUF9/wAeNx/1zb+Rrl/LX+7UlrGPtVv8v/LVf5igCLzF4+btS+Yn + 96uvooA5DzE/vUV19FABRRRQBBff8eNx/wBc2/ka5j/61dPff8eNx/1zb+RrlvMXj5u1ADue3Wub+I3x + K8N/BvwTqHjLxZqMekaDpih5JWOWkbqkUa/xOxGAO5Iro96HjdX5i/8ABaTxZfLN8MPDccoGlyW93qck + afdkl3oiE+4Un86AOn8Uf8FutLs9WuIdA+FNxqWmo5EV3ea8trJIPUxC3fAP+9WT/wAPyLj/AKI1F/4U + 3/3LX5X0UAfqbJ/wXGnkjdT8GocMCOfEx/8AkWqH/D7OT/oi9r/4Ubf/ACNX5g0UAfp9/wAPs5P+iL2v + /hRt/wDI1Oj/AOC20sciMPgxa5Ug8eI2/wDkavy/ooA/VD/h+Rcf9Eai/wDCm/8AuWj/AIfkXH/RGov/ + AApv/uWvyvooA/U2T/guNPJG6n4NQ4YEc+Jj/wDItUP+H2cn/RF7X/wo2/8AkavzBooA/T7/AIfZyf8A + RF7X/wAKNv8A5Gp0f/BbaWORGHwYtcqQePEbf/I1fl/RQB+qH/D8i4/6I1F/4U3/ANy0f8PyLj/ojUX/ + AIU3/wBy1+V9FAH6myf8Fxp5I3U/BqHDAjnxMf8A5Fqh/wAPs5P+iL2v/hRt/wDI1fmDRQB+n6/8Fs5M + jPwXtcf9jEx/T7NXyD+2b+1M/wC1x8SNJ8Xt4cTwvLY6PHpH2SO8+0h1SaeXfv2Lj/XYxivn6igAoooo + AKKKKACiiigAooooAWP76/X1xX3x/wAE/f2/pvgpd2nw9+I15JdfD+eQRWOoSOd+iuxAwQOWgOcso5Q/ + MK+BqWP/AFi/X1x+tAH9OtvPFfWsF1azx3VrcRrNDcQuHjmjYZVlI+XkfMGHJAINWbb/AI+of+uq/wAx + X48f8E/f2/5vgpd2vw8+It3Jc/D+eTy7HUJGJfRXY85A5aA5yyDlD8wr9g9PuYbz7Bc208d1bXBilhuI + XBjmjbBVlI+U5+8GHJAINAHW0UUUAQX3/Hjcf9c2/ka5j/61dPff8eNx/wBc2/ka5bzF4+btQA6pbb/j + 6h/66r/MVD5i/wB6pLWQfarf5v8Alqv8xQB1dFFFABRRRQByHlp/do8tf7tLRQA+1jH2q3+X/lqv8xXV + 1y1t/wAfUP8A11X+YrqaAEb7p+lfkP8A8FvP+SjfDH/sFXf/AKOWv14b7p+lfkP/AMFvP+SjfDH/ALBV + 3/6OWgD80KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi + iigAHUV9+f8ABPn/AIKDy/BWW1+HfxFvJLv4f3B8my1CQkvorscHdjlrc5yQOVbkV8B0qffX6+uKAP6d + Ld7e8tYLq3ljurW4jWWC4hw8c0bDKspHy853BhyQCDUnlr/dr8f/APgn7+35N8Fb2z+HnxFu5br4fzuI + 7HUJHLvorse4HPkHOWUcofmFfr7bzw31rBdW08d1bXEazQ3ELh45o2GVZSPl5+8GHJAINAE9rGPtVv8A + L/y1X+Yrq65a2/4+of8Arqv8xXU0AFQX3/Hjcf8AXNv5Gp6gvv8AjxuP+ubfyNAHLeWvHy9qXy0/u0v/ + ANaigBPLT+7RS0UAJ5if3qPMX+9XX0UAcpayD7Vb/N/y1X+Yrq6gvv8AjxuP+ubfyNct5a8fL2oA69vu + n6V+Q/8AwW8/5KN8Mf8AsFXf/o5a/Ukxrg8V+Vf/AAWs/wCR9+Fv/YHuv/R60Afm3RRRQAUUUUAFFFFA + BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACx/fX6+uK++P+Cfv + 7f03wVu7T4e/Ea8kuvh9PIIrHUJHO/RXYgYIHLQHOWUcofmFfA1Kv3h9fXFAH9POnXMN41jdW88d1a3B + jlguIXDxzRtgqykfLz94MOSAQa66vxU/4J7/APBQSX4M3Fr8OfiLeSXPgC5byrHUJW3tojsQPm/vW5zk + j+A81+vzQhQuNjrjIK/dbIBJX25BoA62oL7/AI8bj/rm38jXL+Wv92pLWMfarf5f+Wq/zFAEXmLx83al + 8xP71dfRQByHmJ/eorr6KACiiigCC+/48bj/AK5t/I1zH/1q6e+/48bj/rm38jXLeYvHzdqAHV+VP/Ba + r/kffhZ/2B7v/wBHrX6qGRcHmvyr/wCC1n/I+/C3/sD3X/o9aAPzbooooAKKKKACiiigAooooAKKKKAC + iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoop0f8ArF7cigBFO1genNf0W/su + y30v7MPwkfUxi/bwtp4dW67PIXyz/wB81+WP7A/7Bd7+0VqkPjPxhbTWPw106XftKFZdXkQ/6qLAP7rg + h3XnJwMnlf2ZVoo0jjhRYoUQIkahQgUABQo6YAHyqOQMk0ALUtt/x9Q/9dV/mKh8xf71SWsg+1W/zf8A + LVf5igDq6KKKACiiigDkPLT+7R5a/wB2looAfaxj7Vb/AC/8tV/mK6uuWtv+PqH/AK6r/MV1NACN90/S + vyH/AOC3n/JRvhj/ANgq7/8ARy1+vDfdP0r8h/8Agt5/yUb4Y/8AYKu//Ry0AfmhRRRQAUUUUAFFFFAB + RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFKv3h9aAEHUV9r/sFfsG + Xv7Resw+LvF0Fxpvw0sZyCcMkuryKQPJiYciPs8q9/kXLHKp+wX+wbe/tGaxbeL/ABbbXGmfDSxmIPLJ + Lq0i8GGJhyI+zyjv8ifMfl/ZvStKsNB0iy0vSbKHTNKsYFt7SztUVI4olGEVUH3QACABzgkmgCTQdJ0/ + QbPS9L0qzt9N0uyEVvaWNuiokMSkBFVB90AZAA5wSTXZ1y1t/wAfUP8A11X+YrqaACoL7/jxuP8Arm38 + jU9QX3/Hjcf9c2/kaAOW8tePl7Uvlp/dpf8A61FACeWn92ilooATzE/vUeYv96uvooA5S1kH2q3+b/lq + v8xXV1Bff8eNx/1zb+RrlvLXj5e1AHXt90/SvyH/AOC3n/JRvhj/ANgq7/8ARy1+pJRQCcY96/MH/gtP + 4auhqXwu1+OHdpv2S909mQ/LHIskbqD7lXNAH5i0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF + ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFKn31+tAAhIZSMZz3r7c/YJ/YIvv2jL6Pxh4wtrjT/AIaafJuL + Lujl1aRePKiIUkRcEPIpzngZPKs/YM/YLvf2jNTg8WeMILjTvhvZyg/NuSXVZAQfJiIX/V8YeRefTmv2 + b8P6Rp+g2elaXpNlDp2lWIjgtLK1RUjgiUgIqovCgAEAehJNAEWk6bp2gaRYaVpNrb6bpVnAsFrY26Kk + cMSjCKqD7oABAA5wSTVnzF/vV19FAHKWsg+1W/zf8tV/mK6uoL7/AI8bj/rm38jXLeWvHy9qAOwqC+/4 + 8bj/AK5t/I1y/lr/AHaktYx9qt/l/wCWq/zFAEXmLx83al8xP71dfRQByHmJ/eorr6KACiiigCC+/wCP + G4/65t/I1zH/ANaunvv+PG4/65t/I1y3mLx83agB469/w61xvxc+DvhX49+Ab/wV4x0832jXzIQ0ThJb + aQH93NC4BMcijgHBBHyP8pNdh5i/3qktZB9qt/m/5ar/ADFAH5i+LP8AgiTq/wDa858M/EqwbS2ZjGmq + adIk8SnopZGYP9QFrD/4ci+Of+ikeHv/AACuK/YGigD8fW/4Ij+OI1LH4k+HgFGTmzuKr/8ADljxl/0U + 3wz/AOAtxX7B33/Hjcf9c2/ka5bzF4+btQB+U3/Dlfxn/wBFO8M/+AtxQv8AwRV8ZyMFHxN8NEscDFrc + V+rXmL/eqS1kH2q3+b/lqv8AMUAflT/w5F8c/wDRSfD3/gFcUf8ADkXxz/0Ujw9/4BXFfsDRQB+Prf8A + BEfxxGpY/Enw8Aoyc2dxVf8A4cseMv8Aopvhn/wFuK/YO+/48bj/AK5t/I1y3mLx83agD8pv+HK/jP8A + 6Kd4Z/8AAW4oX/gir4zkYKPib4aJY4GLW4r9WvMX+9UlrIPtVv8AN/y1X+YoA/Kn/hyL45/6KT4e/wDA + K4o/4ci+Of8AopHh7/wCuK/YGigD8fW/4Ij+OI1LH4k+HgFGTmzuKr/8OWPGX/RTfDP/AIC3FfsHff8A + Hjcf9c2/ka5bzF4+btQB+U//AA5X8Z/9FN8Nf+AtxXyl+1r+y7qX7Jnj/TPCWq65Z+ILm+0mPVlubBXW + MI800QGG75hr+gUyLg81+QH/AAWd/wCTmvCP/YlWn/pbe0AfA1FFFABRRRQAUUUUAFFFOj/1idOo64x+ + vH50AJG22RT6HNfbn7BP7A93+0JqVv4x8aW01n8ObOXiIFo5NZdSB5cZXkRDnfIvOM455qb9gn9gK9/a + I1JPG/jS2msPhtZuXEfzRy6u6nHloQCRFwd8g55wvPI/Y7TdPsND0uz03TbaCx06ziW3tLW3RUiijUYV + VQfdCrkADnBJNAC6fp9lo2m2mm6daW+nafZwrb2tnbQrHFFGowiIg4QKoIAHABI6mrtt/wAfUP8A11X+ + YqHzF/vVJayD7Vb/ADf8tV/mKAOrooooAgvv+PG4/wCubfyNcx/9aunvv+PG4/65t/I1y3mLx83agB1S + 23/H1D/11X+YqHzF/vVJayD7Vb/N/wAtV/mKAOrooooAKKKKAOQ8tP7tHlr/AHaWigB9rGPtVv8AL/y1 + X+Yrq65a2/4+of8Arqv8xXU0AFQX3/Hjcf8AXNv5Gp6gvv8AjxuP+ubfyNAHLeWvHy9qXy1/u0v/ANai + gB9rGPtVv8v/AC1X+Yrq65a2/wCPqH/rqv8AMV1NABUF9/x43H/XNv5Gp6gvv+PG4/65t/I0Act5a8fL + 2pfLX+7S/wD1qKAH2sY+1W/y/wDLVf5iurrlrb/j6h/66r/MV1NABUF9/wAeNx/1zb+RqeoL7/jxuP8A + rm38jQBy3lrx8val8tf7tL/9aigB9rGPtVv8v/LVf5iurrlrb/j6h/66r/MV1NABX4rf8Fqv+TpvC3/Y + m2v/AKW31ftTX4rf8Fqv+TpvC3/Ym2v/AKW31AHwBRRRQAUUUUAFFFLG22RT6HNAAudwx1zxX29+wT+w + PdftDahB4z8a28lj8OLWT5YlDRy6xIhAMSFfmEQx80i854GTyE/YM/YIu/2hdRtvGXjO3ns/htZzfLHl + 45NYkU4MURHIiGCHkXnCnHNfspp+n2Wjabaabp1pb6dp9nCtva2dtCscUUajCIiDhAqggAcAEjqaAJNH + 0yy0eHS9O06zt9N0+zWK3trO1hWNII1wERUHCKFyABwASOprsq5a2/4+of8Arqv8xXU0AFQX3/Hjcf8A + XNv5Gp6gvv8AjxuP+ubfyNAHLeWvHy9qXy1/u0v/ANaigB9rGPtVv8v/AC1X+Yrq65a2/wCPqH/rqv8A + MV1NABUF9/x43H/XNv5Gp6gvv+PG4/65t/I0Act5a8fL2pfLT+7S/wD1qKAE8tP7tFLRQAnmJ/eo8xf7 + 1dfRQBylrIPtVv8AN/y1X+Yrq6gvv+PG4/65t/I1y3lrx8vagDsKgvv+PG4/65t/I1y/lr/dqS1jH2q3 + +X/lqv8AMUAReYvHzdqXzF/vV19FAHKWsg+1W/zf8tV/mK6uoL7/AI8bj/rm38jXLeWvHy9qAOwqC+/4 + 8bj/AK5t/I1y/lr/AHaktYx9qt/l/wCWq/zFAEXmLx83al8xf71dfRQBylrIPtVv83/LVf5iurqC+/48 + bj/rm38jXLeWvHy9qAOwqC+/48bj/rm38jXL+Wv92pLWMfarf5f+Wq/zFAEXmLx83al8xf71dfRQBylr + IPtVv83/AC1X+Yrq6gvv+PG4/wCubfyNct5a8fL2oA7CvxW/4LVf8nTeFv8AsTbX/wBLb6v168tfSvyA + /wCCz3/JzXhH/sSrT/0tvaAPgWiiigAoopUzvXHJzxQAsf8ArFxjOR1xj9eK+4v2Cf2Ab39ojUU8a+NL + WWx+G9mxYRfPFLq8iH/VIQCwi4+eQfNzheeRF+wT+wPdftDanb+MvGVvNZfDiyl+RPmSXWZFODEhX5hE + Od0g5xnH+z+y+i6bZaLb6Xpum2kFjp1oIre0tbZFRIo1ICqqD7qquQAOcEk0AR6fY2OjaZZ6fp1pb6dp + 1pEtvaWltGscUUajCoiDhAqggAcAEjqan8xf71dfRQBylrIPtVv83/LVf5iurqC+/wCPG4/65t/I1y3l + rx8vagDsKgvv+PG4/wCubfyNcv5a/wB2pLWMfarf5f8Alqv8xQBF5i8fN2pfMX+9XX0UAcpayD7Vb/N/ + y1X+Yrq6gvv+PG4/65t/I1y3lrx8vagDsKgvv+PG4/65t/I1y/lr/dqS1jH2q3+X/lqv8xQBF5i8fN2p + fMT+9XX0UAch5if3qK6+igAooooAgvv+PG4/65t/I1zH/wBaunvv+PG4/wCubfyNct5i8fN2oAdUtt/x + 9Q/9dV/mKh8xf71SWsg+1W/zf8tV/mKAOrooooAgvv8AjxuP+ubfyNcx/wDWrp77/jxuP+ubfyNct5i8 + fN2oAdUtt/x9Q/8AXVf5iofMX+9UlrIPtVv83/LVf5igDq6KKKAIL7/jxuP+ubfyNcx/9aunvv8AjxuP + +ubfyNct5i8fN2oAdUtt/wAfUP8A11X+YqHzF/vVJayD7Vb/ADf8tV/mKAOrooooAgvv+PG4/wCubfyN + cx/9aunvv+PG4/65t/I1y3mLx83agB1fj/8A8Fnv+TmvCP8A2JVp/wClt7X6/wDmL61+QH/BZ7/k5rwj + /wBiVaf+lt7QB8C0UU6PPmLjGc98Y/XigBFzuGOueK+3v2Cv2B7r9oTUIPGfjW3ksfhxayfLEoaOXWJE + IBiQr8wiGPmkXnPAyeRJ+wT+wDe/tE6injbxrazWPw3s2LiL54pdXkU48pCAWEXB3yD5ucLz8w/Y/T7G + x0bTLPT9OtLfTtOtIlt7S0to1jiijUYVEQcIFUEADgAkdTQAun6bZ6Nptpp2nWdvpun2kS29tZ2sKxpB + GowiKg4RQoIAHABPc1ctv+PqH/rqv8xUPmL/AHqktZB9qt/m/wCWq/zFAHV0UUUAQX3/AB43H/XNv5Gu + Y/8ArV099/x43H/XNv5GuW8xePm7UAOqW2/4+of+uq/zFQ+Yv96pLWQfarf5v+Wq/wAxQB1dFFFAEF9/ + x43H/XNv5GuY/wDrV099/wAeNx/1zb+RrlvMXj5u1ADqltv+PqH/AK6r/MVD5i/3qktZB9qt/m/5ar/M + UAdXRRRQAUUUUAch5af3aPLX+7S0UAPtYx9qt/l/5ar/ADFdXXLW3/H1D/11X+YrqaACoL7/AI8bj/rm + 38jU9QX3/Hjcf9c2/kaAOW8tePl7Uvlr/dpf/rUUAPtYx9qt/l/5ar/MV1dctbf8fUP/AF1X+YrqaACo + L7/jxuP+ubfyNT1Bff8AHjcf9c2/kaAOW8tePl7Uvlr/AHaX/wCtRQA+1jH2q3+X/lqv8xXV1y1t/wAf + UP8A11X+YrqaACoL7/jxuP8Arm38jU9QX3/Hjcf9c2/kaAOW8tePl7Uvlr/dpf8A61FAD7WMfarf5f8A + lqv8xXV1y1t/x9Q/9dV/mK6mgBG4Umvzq/4K2fsta78VvD+h/Ejwlp76tqXh21mtNUsrZS80lnu8xZEA + 6+UwkLAc4ev0WqG8bZZztkjbGxyDgjigD+Wdo9jbTjAPJwB3x0xnrxX21+wp/wAE/b/9oDUrXxr45tZ9 + M+HMDiRI23xy6wwbOyIgbhCejSDnn5eeR+teofB/4e65rx13Uvh54Sv9dZxI+qXWh2z3G8dzKyFs++a6 + x5GcKG+VVGFjwQI8DGMcAcdKAI9F02y0e30zTtOsrfT9PsxFb2tnawLGkEakBEVBwihQQAOACR1NdjXL + W3/H1D/11X+YrqaACoL7/jxuP+ubfyNT1Bff8eNx/wBc2/kaAOW8tePl7Uvlr/dpf/rUUAPtYx9qt/l/ + 5ar/ADFdXXLW3/H1D/11X+YrqaACoL7/AI8bj/rm38jU9QX3/Hjcf9c2/kaAOW8tePl7Uvlr/dpf/rUU + APtYx9qt/l/5ar/MV1dctbf8fUP/AF1X+YrqaACoL7/jxuP+ubfyNT1Bff8AHjcf9c2/kaAOW8tePl7U + vlp/dpf/AK1FACeWn92ilooATzE/vUeYv96uvooA5S1kH2q3+b/lqv8AMV1dQX3/AB43H/XNv5GuW8te + Pl7UAdhUF9/x43H/AFzb+Rrl/LX+7UlrGPtVv8v/AC1X+YoAi8xePm7UvmL/AHq6+igDlLWQfarf5v8A + lqv8xXV1Bff8eNx/1zb+RrlvLXj5e1AHYVBff8eNx/1zb+Rrl/LX+7UlrGPtVv8AL/y1X+YoAi8xePm7 + UvmL/err6KAOUtZB9qt/m/5ar/MV1dQX3/Hjcf8AXNv5GuW8tePl7UAdhUF9/wAeNx/1zb+Rrl/LX+7U + lrGPtVv8v/LVf5igCLzF4+btS+Yv96uvooA5S1kH2q3+b/lqv8xXV1Bff8eNx/1zb+RrlvLXj5e1AHYV + Bff8eNx/1zb+Rrl/LX+7UlrGPtVv8v8Ay1X+YoAi8xePm7UvmL/err6KAOUtZB9qt/m/5ar/ADFdXUF9 + /wAeNx/1zb+RrlvLXj5e1AHYVBff8eNx/wBc2/ka5fy1/u1Jaxj7Vb/L/wAtV/mKAIvMXj5u1L5i/wB6 + uvooA5S1kH2q3+b/AJar/MV1dQX3/Hjcf9c2/ka5by14+XtQB2FQX3/Hjcf9c2/ka5fy1/u1Jaxj7Vb/ + AC/8tV/mKAIvMXj5u1L5i/3q6+igDlLWQfarf5v+Wq/zFdXUF9/x43H/AFzb+RrlvLXj5e1AHYVBff8A + Hjcf9c2/ka5fy1/u1Jaxj7Vb/L/y1X+YoAi8xePm7UvmJ/err6KAOQ8xP71FdfRQAUUUUAQX3/Hjcf8A + XNv5GuY/+tXT33/Hjcf9c2/ka5bzF4+btQA6pbb/AI+of+uq/wAxUPmL/eqS1kH2q3+b/lqv8xQB1dFF + FAEF9/x43H/XNv5GuY/+tXT33/Hjcf8AXNv5GuW8xePm7UAOqW2/4+of+uq/zFQ+Yv8AeqS1kH2q3+b/ + AJar/MUAdXRRRQBBff8AHjcf9c2/ka5j/wCtXT33/Hjcf9c2/ka5bzF4+btQA6pbb/j6h/66r/MVD5i/ + 3qktZB9qt/m/5ar/ADFAHV0UUUAQX3/Hjcf9c2/ka5j/AOtXT33/AB43H/XNv5GuW8xePm7UAOqW2/4+ + of8Arqv8xUPmL/eqS1kH2q3+b/lqv8xQB1dFFFAEF9/x43H/AFzb+RrmP/rV099/x43H/XNv5GuW8xeP + m7UAOqW2/wCPqH/rqv8AMVD5i/3qktZB9qt/m/5ar/MUAdXRRRQBBff8eNx/1zb+RrmP/rV099/x43H/ + AFzb+RrlvMXj5u1ADqltv+PqH/rqv8xUPmL/AHqktZB9qt/m/wCWq/zFAHV0UUUAQX3/AB43H/XNv5Gu + Y/8ArV099/x43H/XNv5GuW8xePm7UAOqW2/4+of+uq/zFQ+Yv96pLWQfarf5v+Wq/wAxQB1dFFFABRRR + QByHlp/do8tf7tLRQA+1jH2q3+X/AJar/MV1dctbf8fUP/XVf5iupoAKgvv+PG4/65t/I1PUF9/x43H/ + AFzb+RoA5by14+XtS+Wv92l/+tRQA+1jH2q3+X/lqv8AMV1dctbf8fUP/XVf5iupoAKgvv8AjxuP+ubf + yNT1Bff8eNx/1zb+RoA5by14+XtS+Wv92l/+tRQA+1jH2q3+X/lqv8xXV1y1t/x9Q/8AXVf5iupoAKgv + v+PG4/65t/I1PUF9/wAeNx/1zb+RoA5by14+XtS+Wv8Adpf/AK1FAD7WMfarf5f+Wq/zFdXXLW3/AB9Q + /wDXVf5iupoAKgvv+PG4/wCubfyNT1Bff8eNx/1zb+RoA5by14+XtS+Wv92l/wDrUUAPtYx9qt/l/wCW + q/zFdXXLW3/H1D/11X+YrqaACoL7/jxuP+ubfyNT1Bff8eNx/wBc2/kaAOW8tePl7Uvlr/dpf/rUUAPt + Yx9qt/l/5ar/ADFdXXLW3/H1D/11X+YrqaACoL7/AI8bj/rm38jU9QX3/Hjcf9c2/kaAOW8tePl7Uvlr + /dpf/rUUAPtYx9qt/l/5ar/MV1dctbf8fUP/AF1X+YrqaACoL7/jxuP+ubfyNT1Bff8AHjcf9c2/kaAO + W8tePl7Uvlp/dpf/AK1FACeWn92ilooAKKKKAJbb/j6h/wCuq/zFdTRRQAVBff8AHjcf9c2/kaKKAOY/ + +tRRRQBLbf8AH1D/ANdV/mK6miigAqC+/wCPG4/65t/I0UUAcx/9aiiigCW2/wCPqH/rqv8AMV1NFFAB + UF9/x43H/XNv5GiigDmP/rUUUUAS23/H1D/11X+YrqaKKACoL7/jxuP+ubfyNFFAHMf/AFqKKKAJbb/j + 6h/66r/MV1NFFABUF9/x43H/AFzb+RoooA5j/wCtRRRQBLbf8fUP/XVf5iupoooAKgvv+PG4/wCubfyN + FFAHMf8A1qKKKAJbb/j6h/66r/MV1NFFABUF9/x43H/XNv5GiigDmP8A61FFFABRRRQB/9k= + + + + + /9j/4AAQSkZJRgABAQEASABIAAD/4Rz6RXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAExAAIAAAAm + AAAASgEyAAIAAAAUAAAAcIdpAAQAAAABAAAAhIglAAQAAAABAAAA8AAAAShXaW5kb3dzIFBob3RvIEVk + aXRvciAxMC4wLjEwMDExLjE2Mzg0ADIwMjM6MDk6MTIgMjA6MDc6MjgAAAWQAwACAAAAFAAAAMaQBAAC + AAAAFAAAANqSkQACAAAAAzAwAACSkgACAAAAAzAwAACgAQADAAAAAQABAAAAAAAAMjAyMzowOToxMiAx + OToyMTowMgAyMDIzOjA5OjEyIDE5OjIxOjAyAAAAAAEACwACAAAAJgAAAQIAAAAAV2luZG93cyBQaG90 + byBFZGl0b3IgMTAuMC4xMDAxMS4xNjM4NAAABgEDAAMAAAABAAYAAAEaAAUAAAABAAABdgEbAAUAAAAB + AAABfgEoAAMAAAABAAIAAAIBAAQAAAABAAABhgICAAQAAAABAAAbawAAAAAAAABgAAAAAQAAAGAAAAAB + /9j/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0 + Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy + MjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAEAAQADASEAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAA + AAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0Kx + wRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4 + eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl + 5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQD + BAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygp + KjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk + paanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIR + AxEAPwD26igC9F/qk/3RT6AKU/8Ar3/D+VR0AWrX/Vt/vVPQBWuv4PxqvQBLb/678DVygCOf/UtVKgAH + 3h9a0aACs4/eP1oAKuwf6laAJKp3H+u/AUARVYtf4/woAs1Bdf6tf96gCrUkH+vT8f5UAXaZL/qn/wB0 + 0AUaKACigC9F/qk/3RT6AKM/+vf8P5UygC1a/wCrb/eqegCtd/wfjVegCW2/134GrlAEc/8AqGqlQAD7 + w+taNABWcfvH60AFXYP9QtAElU7n/XfgKAIqsWn8f4UAWaguv9Wv+9QBVp8H+vT8f5UAXqZL/qn/AN00 + AUaKAL3lR/8APNfyo8qP/nmv5UAU2Zg7AMwAJAANJvf++3/fRoAtQorxBmUMxzkkZNP8qP8A55r+VAFe + fKSAJlRjOFOKi3v/AH2/76NAE1v+8Zt/zY6buan8qP8A55r+VAEU6hIwUAU56rxVfe/99v8Avo0APjZm + kVWYkE8gnNWvKj/55r+VACNGgQkIvT0qmHfH32/76NAAXfH32/76NXFjQoCUXp6UAL5Uf/PNfyqrIzLI + yqxAB4AOKAGb3/vt/wB9GrECh4yXAY56tzQBL5Uf/PNfyqC4/dsuz5c9dvFAEO9/77f99GpYMvIQ+WGM + 4Y5oAseVH/zzX8qZMipEWVQrDGCBg0AVd7/32/76NKrMXUFmIJAIJoAueVH/AM81/Kjyo/8Anmv5UAPo + oAz3/wBY/wDvGkoAuW/+oX8f51LQBUuv9cP92oaAJ7X7z/QVaoAguv8AVD/eqrmgBhu7a3nQT3EMTZzt + eQKf1qx/aun/APP/AGv/AH+X/GgBG1XTypH2+16f89l/xql/aFl/z+2v/f5f8aAD+0LL/n9tf+/y/wCN + XV1XTwoH2+16f89l/wAaAF/tXT/+f+1/7/L/AI1X+1W9xOwhuIZCTnCSBj+lAD6tWv8Aqj/vUAT1Vuvv + J9DQBBU1r/rj/u0AW6iuP9Q34fzoAp0qf6xP94UAaFFAFHz5f7/6Cjz5f7/6CgCwkMbIrMuWYZJyaX7P + F/d/U0AQO7xSMiNhR0GKb58v9/8AQUASxKJ1LSfMwOM9Kk+zxf3f1NAEUo8gr5Xy7uveo/Pl/v8A6CgB + 8bNM+yQ7lxnHSuS+KeuzeFfAF/qFgTHeNthhcH7jMcbvqBkj3xQB8e3FzPdXDz3EzyzSHc8jsSzH1JNR + ZNABk0UAFGTQAZNTWl5c2N1Hc2k8kE8Z3JJGxVlPsaAPsr4b6xL4n8AaTq19811NGyyt03Mjsm7j125r + pJGaF9kZ2rjOOtADPPl/v/oKkiHnlvN+bb07UAS/Z4v7v6mo5VECho/lYnGetAEXny/3/wBBTkd5ZFR2 + yp6jFAE/2eL+7+ppHhjVGZVwyjIOTQBX8+X+/wDoKPPl/v8A6CgBlFAF6L/VJ/uin0AUZ/8AXv8Ah/Km + UAWrX/Vt/vVPQBWu/wCD8ar0AS23+u/A1538fv8AkmE3/X3D/M0AfKFFABRQAUUAFFAH178Ef+SSaN/v + T/8Ao567a5/134CgCKrFp/H+FAFmoLr/AFa/71AFWnwf69Px/lQBepkv+qf/AHTQBRooAtfZU/vN+lH2 + VP7zUAR+e6EoAuF4GR6UfapPRfyoAcsQmXzGJDN1x0p32VP7zUARsxtm2JggjPzUfapPRfyoAVc3JIfj + b020/wCyp/eagBrp9nAdCSc45rzH47ytJ8MJ9wHF3D0+poA+V6KACigAooAKKAPrb4Kzsnwl0YAD70/X + /rs9egIn2gF3JBzjigB32VP7zUxs2xATnd13UAJ9qk9F/KhWNy2x8AAZ+WgCT7Kn95qa0QhXzFJLL0z0 + oAb9qk9F/Kjz3chCFw3BwPWgCT7Kn95qPsqf3m/SgCeigDPf/WP/ALxpKALlv/qF/H+dS0AVLn/XD/dq + GgCe1+8/0FWqAILr/VD/AHq8s+On/JMLj/r7h/maAPlqigAooAKKACigD6x+DH/JJ9H/AN6f/wBHPXo9 + r/qj/vUAT1VuvvJ9DQBBU1t/rj/u0AW6iuP9Q34fzoAp0qf6xP8AeFAGhRQBW+1/7H60fa/9j9aAEFuZ + Pn3AbucY9aPsp/vj8qAAS+R+627tvfOKX7X/ALH60AJtNyd+duOMdaPsp/vj8qADm1Ofvbvwpftf+x+t + ACF/tH7vG3vnOa80+PEJj+GE/wA2c3cPb3NAHyrRQAUUAFFABRQB9b/BWAv8JdGO7HzT9v8Aps9d8H+z + /u8bu+c4oAX7X/sfrSc3Rz93b+NAB9lP98flRtNsd+d2eMdKAF+1/wCx+tIZfP8A3W3bu75zQAfZT/fH + 5UG3Mfz7gdvOMelAC/a/9j9aPtf+x+tAFeigC9F/qk/3RT6AKM/+vf8AD+VMoAtWv+rb/eqegCtd/wAH + 41XoAltv9d+Brzv4/f8AJMJv+vuH+ZoA+UKKACigAooAKKAPr34I/wDJJNG/3p//AEc9dtc/678BQBFV + i0/j/CgCzUF1/q1/3qAKtPg/16fj/KgC9TJf9U/+6aAKNFAEv2aT2/Oj7NJ7fnQBKs6ooQhsqMHil+0p + 6N+VAETRtMxkXG09Mmk+zSe350APRhbgo4OSc8U/7Sno35UARuftJGwfd65pv2aT2/OgBVUwNvccdOK8 + 2+PUqyfDCfGf+PuHr9TQB8qUUAFFABRQAUUAfXPwTmVPhLowOfvT9P8Ars9d2ymdt6DjpzQAn2aT2/On + IfsxO8fe6YoAk+0p6N+VMdhcAIgOQc80AM+zSe350qxtCwkbG0dcGgCX7Sno35UjTq6lAGywwOKAIvs0 + nt+dH2aT2/OgC5RQBnv/AKx/940lAFy3/wBQv4/zqWgCpdf64f7tQ0AT2v3n+gq1QBBdf6of71eWfHT/ + AJJhcf8AX3D/ADNAHy1RQAUUAFFABRQB9Y/Bj/kk+j/70/8A6OevR7X/AFR/3qAJ6q3X3k+hoAgqa1/1 + x/3aALdRXH+ob8P50AU6VP8AWJ/vCgDQooAj8+P+9R58X98UAVjG7MzBSQSSDSeTJ/cNAE8UixxhHOGH + UGn+fH/foAgmBlk3RgsAMZFM8mT+4aAJIf3JbzPlz0zU3nx/36AI5mWVAqHc2c4FeX/HZGX4YT7lI/0u + H+ZoA+WKKACigAooAKKAPrT4Lxu3wm0YhSfmn/8ARz16HCyxIVc7WznBoAk8+P8Av1DN++K+X82OuKAI + /Jk/uGnwgxSbpAVBGMmgCfz4/wC/TJZFkjKIcsegFAEHkyf3DSiN1ZWKkAEEmgCz58X98UefH/eoApUU + AXov9Un+6KfQBRn/ANe/4fyplAFq1/1bf71T0AVrv+D8ar0AS23+u/A1538fv+SYTf8AX3D/ADNAHyhR + QAUUAFFABRQB9e/BH/kkmjf70/8A6Oeu2uf9d+AoAiqxafx/hQBZqC6/1a/71AFWnwf69Px/lQBepkv+ + qf8A3TQBRooAMH0P5UYPofyoAuxsoiQFh90d6fvX+8PzoApzZMzEcjjkfSo8H0P5UAWbYhUYMcc96n3r + /eH50AV7k7tm3nGelV8H0P5UAS2/yy5PAx3rzr4+kH4XzYIP+lw/zNAHyjRQAUUAFFABRQB9efBFgPhJ + o2SB80/f/ps9dvcfNLkcjHagCLB9D+VWLY7d+7jOOtAFjev94fnUFyQyKFOee1AFbB9D+VSQ5Eyk8Dnk + /SgC5vX+8PzpkjKYnAYfdPegClg+h/KjB9D+VAGjRQBnv/rH/wB40lAFy3/1C/j/ADqWgCndf64f7tRU + AT2n3n+gq1QBBdf6of71eWfHT/kmNx/19w/zNAHy1RQAUUAFFABRQB9Y/Bj/AJJPo/8Avz/+jnr0e1/1 + R/3qAJ6q3f3k+hoAgqW1/wBcf92gC5UVx/qG/D+dAFOlT/WJ/vCgDQooAKKAM9/9Y/8AvGkoAuW/+oX8 + f50XFxFa27zzyJFDGCzu5wFA7k0AeeXvxm8BxXJRtaZioxujtpGU/Qgc1X/4XV4C/wCgvN/4By//ABNA + EkXxv8AxEn+1pjn/AKc5f/ial/4Xr4A/6Cs//gJL/wDE0ARy/HHwDIm3+1pxzn/jzl/+JrhPir8SvCvi + fwNLpmkahJNdNcRyBWt3QYXOeSMUAeDUUAFFABRQAUUAfQXw0+J/hLw54A07SdU1GSG7gaUui2zuBukZ + hyBjoa7KL44+AY02/wBrTnnP/HnL/wDE0ASf8L18Af8AQVn/APASX/4mopfjf4BlIP8Aa0wx/wBOcv8A + 8TQBH/wurwF/0F5v/AOX/wCJqxYfGXwHNdrGutFGfgNLbSIo+pIwKAPRIZo7iFJopFkjcbldTkMPUGku + P9Q34fzoAp0qf6xP94UAaFFAGdk+p/OjJ9T+dAF2NVMSEqPujtT9i/3R+VAFObiZgOBxwPpXl/x3uLyH + 4c7bZm8uW9jjuCD/AAbWOD7bgtAHy82c80lABRQAUUAFFABRQAUUAFFABRQAUUAFKOtAH1R8ELi8n+Gd + v9pZykdzKkBY/wDLMEH8slq9JhyZlB5HPX6UAXNi/wB0flTJFUROQo+6e1AFLJ9T+dGT6n86ACigC9F/ + qk/3RT6AKM/+vf8AD+VUdS0201fTp9Pv4FntZ02SRsOCP6EdjQB8sfEb4b3vgnUvNQtcaRO58i4xyv8A + sP8A7Q/X9BwdABRQAUUAFFABRQAUUAFFABRQAUUAFeg/DT4Z3fjW/F1db7fRYHAmmHBkP9xPf1Pb68UA + fUljY2um2EFjZQJBbQII440GAoFXIP8AXp+P8qAL1Ml/1T/7poAo0UAXfIj/ALtHkRf3BQBVMjqzKGIA + JAFHnSf3zQBPFGskYdxlj1Jp/kRf3BQBma1pdlqtjNpt9brPZzpiSJ+h/wDr9MelfKXxH+HF34H1HzI9 + 9xpM7Ytrg9Qefkf/AGsD2z+YoA4SigAooAKKACigAooAKKACigAooA9C+Gnw0uvG1+t1ch7fRYGHnTDg + yH+4nv6nt+lfVGk6faafaQ6faQJDaQR7YokGAoH/AOv9aANHyI/7tMljWOMugww6EUAQedJ/fNAkdmVS + xIJAIoAteRF/cFHkR/3aAJKKAM9/9Y/+8aSgC5b/AOoX8f51LQBUuv8AXD/drO1LTbPWNNuNOv7dbi1u + F2yRN39Px9+3FAHyx8R/hxe+CdR82LdcaRMf3Fzjkf7D+jfoR+NcGRg4oAKKACigAooAKKACigAooAK9 + B+Gnw0u/Gt79put9vosLfvpsYMpH8Ce/qe31xQB9SWNha6ZYw2NjAkFrAuyONBgKP896v2v+uP8Au0AW + 6iuP9Q34fzoAp0qf6xP94UAaFFAFP7TJ7flR9pk9vyoAlWBXUOS2WGTzS/Zk9W/OgCJpGhYxrjaOmRSf + aZPb8qAHoouAXcnIOOKf9mT1b86AM/WNIsdT06XTr6BLi1uFKyRyDqPb0PfNfKXxG+HF34I1IyRl7jSJ + 2/0e4x93/Yf0Yfr19qAODooAKKACigAooAKKACigD0L4a/DO68a34urkSW+iwN+9nxzKeuxPf1PbPrxX + 1TpemWdjYx2NnAlta26hI4ohgKP89/rQBd+yp6tTXUW4DoTknHNADPtMnt+VKsjTMI2xtPXAoAl+zJ6t + +dI0CopcFsqMjmgCL7TJ7flR9pk9vyoAiooAvRf6pP8AdFPoAoz/AOvf8P5UygC1a/6tv96p6AK13/B+ + NZmp6ZZazp0+n6jbx3FrOhR43GfxHoR2I6GgD5Y+JHw4vPBOo+ZEHn0mdz5Fxj7v+w/ow/Xt3rgyCOtA + BRQAUUAFFABRQAV6D8NPhpd+Nb77TdB7fRoH/fTdDKf7ie/qe1AH1JYWFppdhBY2MCQWsCBI40GAoH+e + taNp/H+FAFmoLr/Vr/vUAVafB/r0/H+VAF6mS/6p/wDdNAFGigCx9k/2/wBKPsn+3+lACC4MfybQdvGc + +lH2o/3B+dAAIvP/AHu7bu7YzS/ZP9v9KAE3G2OzG7POelH2o/3B+dABzdHH3dv40v2T/b/SgClq2jWe + p6ZPY6hCtzazrseNx+vsR2r5R+I/w4vPBGp+ZHum0idv9HuP7v8AsP8A7Q/X9KAOEooAKKACigAooA9B + +Gnw0uvGmo/abnfBo0DfvpuhlP8AcT39T2+uK+qtM0q0sdOhs7GJLa1gXZFEg4UCgC39k/2/0pObU4+9 + u/CgA+1H+4Pzo3G5OzG3HOetAC/ZP9v9KQxeR+93btvbGKAD7Uf7g/Og3Bk+TaBu4zn1oAX7J/t/pR9k + /wBv9KALNFAGe/8ArH/3jSUAXLf/AFC/j/OpaAKlz/rh/u1DQBPa/ef6CrVAEF1/qh/vVlalptlrGnza + fqNulxaTrtkjfv8A/X9+1AHyt8RvhxeeBtQ3pvn0qdv9HucZx/sNxw3H41wtABRQAUUAFeg/DX4aXXja + 9F1ch7fRYGxNPjBlP9xPf1PagD6lsbK10yxhsbKBILWBdkcSDhRWla/6o/WgCeqt195PoaAIKmtv9cf9 + 2gC3UVx/qG/D+dAFOlT/AFif7woA0KKAIPtSf3W/Sj7Un91qAI/IdyXBXDcjJ9aPssnqv50AOWUQL5bA + ll646U77Un91qAI2U3Lb0wABj5qPssnqv50AKubYkvzu6baf9qT+61ADXf7QAiAg5zzTfssnqv50AUtW + 0O11fSriw1G3juLSZdskZ7+hHoenNfKfxI+HV74J1QNGHn0mdv8AR7nb0/2H9GH69fXABwh4OKKAClAy + cUAegfDP4aXXjW/+1XYeDRYWxNOBzIf7ie/qe31xX1Tp+k2+n6fBZ2EEVvawrtjjQYCj/PegC19lk9V/ + OnI/2cFHBJznigB32pP7rUxs3JBTjb13UAJ9lk9V/OhVNs298EEY+WgCT7Un91qa0onXy1BDN0z0oAb9 + lk9V/OjyHQhyVwvJwfSgCT7Un91qPtSf3W/SgCrRQBei/wBUn+6KfQBRn/17/h/KmUAWrX/Vt/vVPQBW + u/4PxqvQBLbf678DVygCOf8A1LVjappVjrWmz6dqNulxaTrteNh+o9COoNAHyv8AEX4c3vgfUi6759Jn + Y/ZrnHT/AGH9GH69vQcLQAV6D8NfhpdeNdQF1ch4NFgb99MOsp/uJ7+p7fpQB9SWFhaaZYw2Njbx29tA + gSOOMYCj/H3rWg/1K0ASVTuf9d+AoAiqxafx/hQBZqC6/wBWv+9QBVp8H+vT8f5UAXqZL/qn/wB00AUa + KAH+RL/c/UUeRL/c/UUAWEmjVFVmwyjBGDS/aIv736GgCB0eWRnRcqehzTfIl/ufqKAJYmEClZPlYnOO + tSfaIv736GgCKU+eV8r5tvXtUfkS/wBz9RQA+NWhffINq4xnrU32iL+9+hoAbJKkiFEOWPQYqDyJf7n6 + igCpqmi22s6ZPp2pWiz2c67ZI3wR9R6Eeor5d8efCrWfDGpO2n2tzqGlyHdFPFGXZB/dcDoR69DQBN8P + fhLqvifUlm1e1udP0mIgySSoUeX/AGUBGefXoK+nrDSodN0+CysbVILSBQsUSYAUf570AWfIl/ufqKnj + lSNAjnDDqMUAO+0Rf3v0NQyK0z74xuXGM9KAGeRL/c/UVJEfILeb8u7p3oAl+0Rf3v0NRysJ1Cx/MwOc + dKAIvIl/ufqKciPFIruuFHU5oAn+0Rf3v0NI80bIyq2WYYAwaAK/kS/3P1FHkS/3P1FAF6igDPf/AFj/ + AO8aSgC5b/6hfx/nUtAFS6/1w/3ahoAntfvP9BVqgCC6/wBUP96qtAD4v9cn1q9QAj/cb6Vngkcg4oAC + SeSc1oJ9xfpQAtUZf9c/1oAZVq1/1R/3qAJ6q3X3k+hoAgqa1/1x/wB2gC3UVx/qG/D+dAFOlT/WJ/vC + gDQooAZ5sf8Az0X86PNj/vr+dAFNlYuxCsQSSCBSbH/uN/3yaALULqkQVmCsM5BODT/Nj/vr+dAFefLy + AplhjGVGai2P/cb/AL5NAE1v+7Zt/wAuem7ip/Nj/vr+dAEU7B4wEIY56LzVfY/9xv8Avk0APjVlkVmU + gA8kjFWvNj/vr+dACNIhQgOvT1qmEfH3G/75NAAUfH3G/wC+TVxZECAF16etAC+bH/fX86qyKzSMyqSC + eCBmgBmx/wC43/fJqxAwSMhyFOejcUAS+bH/AH1/OoLj94y7Pmx1280AQ7H/ALjf98mpYMpIS+VGMZYY + oAsebH/fX86ZM6vEVVgzHGADk0AVdj/3G/75NKqsHUlWABBJIoAuebH/AH1/OjzY/wDnov50AUaKAL0X + +qT/AHRT6AKM/wDr3/D+VMoAtWv+rb/eqegCtd/wfjVegCW2/wBd+Bq5QBHP/qGqlQAD7w+taNABWcfv + H60AFXYP9QtAElU7n/XfgKAIqsWn8f4UAWaguv8AVr/vUAVafB/r0/H+VAF6mS/6p/8AdNAFGigAooAv + Rf6pP90U+gClP/r3/D+VR0AWrX/Vt/vVPQBWuv4PxqvQBLb/AOu/A1coAjn/ANS1UqAAfeH1rRoAKzj9 + 4/WgAq7B/qVoAkqncf678BQBFVi1/j/CgCzUF1/q1/3qAKtSQf69Px/lQBdpkv8Aqn/3TQBRooA//9kA + /9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4SEA0OEQ4LCxAWEBETFBUVFQwP + FxgWFBgSFBUU/9sAQwEDBAQFBAUJBQUJFA0LDRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU + FBQUFBQUFBQUFBQUFBQUFBQU/8AAEQgBaAFoAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAAB + AgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEV + UtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6 + g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn + 6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQH + BQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1 + Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWm + p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMR + 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 + /q2rr6KKACiiigDkI/8AVrS0UUAFFFFAH//Z + + + \ No newline at end of file diff --git a/Sailboat/Sailboat/Program.cs b/Sailboat/Sailboat/Program.cs index 62a824b..89c8af2 100644 --- a/Sailboat/Sailboat/Program.cs +++ b/Sailboat/Sailboat/Program.cs @@ -11,7 +11,7 @@ namespace Sailboat // 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(new FormSailboat()); } } } \ No newline at end of file diff --git a/Sailboat/Sailboat/Properties/Resources.Designer.cs b/Sailboat/Sailboat/Properties/Resources.Designer.cs new file mode 100644 index 0000000..268d3e7 --- /dev/null +++ b/Sailboat/Sailboat/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace Sailboat.Properties { + using System; + + + /// + /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. + /// + // Этот класс создан автоматически классом StronglyTypedResourceBuilder + // с помощью такого средства, как ResGen или Visual Studio. + // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen + // с параметром /str или перестройте свой проект VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Sailboat.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Перезаписывает свойство CurrentUICulture текущего потока для всех + /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/Sailboat/Sailboat/Form1.resx b/Sailboat/Sailboat/Properties/Resources.resx similarity index 100% rename from Sailboat/Sailboat/Form1.resx rename to Sailboat/Sailboat/Properties/Resources.resx diff --git a/Sailboat/Sailboat/Sailboat.csproj b/Sailboat/Sailboat/Sailboat.csproj index b57c89e..13ee123 100644 --- a/Sailboat/Sailboat/Sailboat.csproj +++ b/Sailboat/Sailboat/Sailboat.csproj @@ -8,4 +8,19 @@ enable + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file From e7832c9d05120ae6a0b9df1bb3a1d09b46c0b30e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D0=B8=D0=BD=D0=B0=20=D0=A7=D1=83=D0=B1?= =?UTF-8?q?=D1=8B=D0=BA=D0=B8=D0=BD=D0=B0?= Date: Fri, 22 Sep 2023 17:19:54 +0400 Subject: [PATCH 2/4] =?UTF-8?q?=D0=9D=D0=B0=D1=80=D0=B8=D1=81=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BB=D0=B0=20=D0=BF=D0=B0=D1=80=D1=83=D1=81=D0=BD=D0=B8?= =?UTF-8?q?=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sailboat/Sailboat/Direction.cs | 2 +- Sailboat/Sailboat/DrawingSailboat.cs | 103 ++++++++++----------- Sailboat/Sailboat/EntitySailboat.cs | 2 +- Sailboat/Sailboat/FormSailboat.Designer.cs | 5 + Sailboat/Sailboat/FormSailboat.cs | 55 ++++++++++- 5 files changed, 108 insertions(+), 59 deletions(-) diff --git a/Sailboat/Sailboat/Direction.cs b/Sailboat/Sailboat/Direction.cs index 31bfff6..46e7fda 100644 --- a/Sailboat/Sailboat/Direction.cs +++ b/Sailboat/Sailboat/Direction.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace Sailboat { - internal enum DirectionType + public enum DirectionType { /// /// Вверх diff --git a/Sailboat/Sailboat/DrawingSailboat.cs b/Sailboat/Sailboat/DrawingSailboat.cs index 9ab0542..fd82435 100644 --- a/Sailboat/Sailboat/DrawingSailboat.cs +++ b/Sailboat/Sailboat/DrawingSailboat.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace Sailboat { - internal class DrawingSailboat + public class DrawingSailboat { /// /// Класс-сущность @@ -31,11 +31,11 @@ namespace Sailboat /// /// Ширина прорисовки автомобиля /// - private readonly int _carWidth = 110; + private readonly int _boatWidth = 180; /// /// Высота прорисовки автомобиля /// - private readonly int _carHeight = 60; + private readonly int _boatHeight = 180; /// /// Инициализация свойств /// @@ -97,11 +97,17 @@ namespace Sailboat break; // вправо case DirectionType.Right: - // TODO: Продумать логику + if (_startPosX + EntitySailboat.Step + _boatWidth < _pictureWidth) + { + _startPosX += (int)EntitySailboat.Step; + } break; //вниз case DirectionType.Down: - // TODO: Продумать логику + if (_startPosY + EntitySailboat.Step + _boatHeight < _pictureHeight) + { + _startPosY += (int)EntitySailboat.Step; + } break; } } @@ -119,7 +125,7 @@ namespace Sailboat Brush additionalBrush = new SolidBrush(EntitySailboat.AdditionalColor); // обвесы - if (EntitySailboat.BodyKit) + /*if (EntitySailboat.BodyKit) { g.DrawEllipse(pen, _startPosX + 90, _startPosY, 20, 20); g.DrawEllipse(pen, _startPosX + 90, _startPosY + 40, 20, @@ -167,6 +173,7 @@ namespace Sailboat g.FillRectangle(additionalBrush, _startPosX + 35, _startPosY + 45, 40, 15); } + //границы автомобиля g.DrawEllipse(pen, _startPosX + 10, _startPosY + 5, 20, 20); g.DrawEllipse(pen, _startPosX + 10, _startPosY + 35, 20, 20); @@ -175,58 +182,42 @@ namespace Sailboat g.DrawRectangle(pen, _startPosX + 9, _startPosY + 15, 10, 30); g.DrawRectangle(pen, _startPosX + 90, _startPosY + 15, 10, 30); - g.DrawRectangle(pen, _startPosX + 20, _startPosY + 4, 70, 52); - //задние фары - Brush brRed = new SolidBrush(Color.Red); - g.FillEllipse(brRed, _startPosX + 10, _startPosY + 5, 20, 20); - g.FillEllipse(brRed, _startPosX + 10, _startPosY + 35, 20, - 20); - //передние фары - Brush brYellow = new SolidBrush(Color.Yellow); - g.FillEllipse(brYellow, _startPosX + 80, _startPosY + 5, 20, - 20); - g.FillEllipse(brYellow, _startPosX + 80, _startPosY + 35, 20, - 20); - //кузов - Brush br = new SolidBrush(EntitySailboat.BodyColor); - g.FillRectangle(br, _startPosX + 10, _startPosY + 15, 10, 30); - g.FillRectangle(br, _startPosX + 90, _startPosY + 15, 10, 30); - g.FillRectangle(br, _startPosX + 20, _startPosY + 5, 70, 50); - //стекла - Brush brBlue = new SolidBrush(Color.LightBlue); - g.FillRectangle(brBlue, _startPosX + 70, _startPosY + 10, 5, - 40); - g.FillRectangle(brBlue, _startPosX + 30, _startPosY + 10, 5, - 40); - g.FillRectangle(brBlue, _startPosX + 35, _startPosY + 8, 35, - 2); - g.FillRectangle(brBlue, _startPosX + 35, _startPosY + 51, 35, - 2); - //выделяем рамкой крышу - g.DrawRectangle(pen, _startPosX + 35, _startPosY + 10, 35, - 40); - g.DrawRectangle(pen, _startPosX + 75, _startPosY + 15, 25, - 30); - g.DrawRectangle(pen, _startPosX + 10, _startPosY + 15, 15, - 30); - // спортивная линия - if (EntitySailboat.SportLine) + g.DrawRectangle(pen, _startPosX + 20, _startPosY + 4, 70, 52);*/ + + //основной корпус парусника + Point[] hull = new Point[] { - g.FillRectangle(additionalBrush, _startPosX + 75, - _startPosY + 23, 25, 15); - g.FillRectangle(additionalBrush, _startPosX + 35, - _startPosY + 23, 35, 15); - g.FillRectangle(additionalBrush, _startPosX + 10, - _startPosY + 23, 20, 15); - } - // крыло - if (EntitySailboat.Wing) + new Point(_startPosX + 40, _startPosY + 110), + new Point(_startPosX + 140, _startPosY + 110), + new Point(_startPosX + 170, _startPosY + 140), + new Point(_startPosX + 140, _startPosY + 170), + new Point(_startPosX + 40, _startPosY + 170) + }; + g.DrawPolygon(pen, hull); + + g.DrawEllipse(pen, _startPosX + 50, _startPosY + 120, 90, 40); + + //усиленный корпус парусника + Point[] hullCooler = new Point[] { - g.FillRectangle(additionalBrush, _startPosX, _startPosY - + 5, 10, 50); - g.DrawRectangle(pen, _startPosX, _startPosY + 5, 10, - 50); - } + new Point(_startPosX + 30, _startPosY + 100), + new Point(_startPosX + 150, _startPosY + 100), + new Point(_startPosX + 190, _startPosY + 140), + new Point(_startPosX + 150, _startPosY + 180), + new Point(_startPosX + 30, _startPosY + 180) + }; + g.DrawPolygon(pen, hullCooler); + + //парус + + g.DrawLine(pen, new Point(_startPosX + 95, _startPosY + 140),new Point (_startPosX + 95, _startPosY + 20)); + Point[] sail = new Point[] + { + new Point(_startPosX + 95, _startPosY + 20), + new Point(_startPosX + 160, _startPosY + 140), + new Point(_startPosX + 45, _startPosY + 140) + }; + g.DrawPolygon(pen, sail); } } } diff --git a/Sailboat/Sailboat/EntitySailboat.cs b/Sailboat/Sailboat/EntitySailboat.cs index c9fda1f..79dfc2a 100644 --- a/Sailboat/Sailboat/EntitySailboat.cs +++ b/Sailboat/Sailboat/EntitySailboat.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace Sailboat { - internal class EntitySailboat + public class EntitySailboat { /// /// Скорость diff --git a/Sailboat/Sailboat/FormSailboat.Designer.cs b/Sailboat/Sailboat/FormSailboat.Designer.cs index 6d9dcd1..fd83356 100644 --- a/Sailboat/Sailboat/FormSailboat.Designer.cs +++ b/Sailboat/Sailboat/FormSailboat.Designer.cs @@ -57,6 +57,7 @@ this.buttonCreate.TabIndex = 1; this.buttonCreate.Text = "Создать"; this.buttonCreate.UseVisualStyleBackColor = true; + this.buttonCreate.Click += new System.EventHandler(this.buttonCreate_Click); // // buttonLeft // @@ -68,6 +69,7 @@ this.buttonLeft.Size = new System.Drawing.Size(30, 30); this.buttonLeft.TabIndex = 2; this.buttonLeft.UseVisualStyleBackColor = true; + this.buttonLeft.Click += new System.EventHandler(this.buttonMove_Click); // // buttonUp // @@ -79,6 +81,7 @@ this.buttonUp.Size = new System.Drawing.Size(30, 30); this.buttonUp.TabIndex = 3; this.buttonUp.UseVisualStyleBackColor = true; + this.buttonUp.Click += new System.EventHandler(this.buttonMove_Click); // // buttonRight // @@ -90,6 +93,7 @@ this.buttonRight.Size = new System.Drawing.Size(30, 30); this.buttonRight.TabIndex = 4; this.buttonRight.UseVisualStyleBackColor = true; + this.buttonRight.Click += new System.EventHandler(this.buttonMove_Click); // // buttonDown // @@ -101,6 +105,7 @@ this.buttonDown.Size = new System.Drawing.Size(30, 30); this.buttonDown.TabIndex = 5; this.buttonDown.UseVisualStyleBackColor = true; + this.buttonDown.Click += new System.EventHandler(this.buttonMove_Click); // // FormSailboat // diff --git a/Sailboat/Sailboat/FormSailboat.cs b/Sailboat/Sailboat/FormSailboat.cs index 14e0cf0..3606e69 100644 --- a/Sailboat/Sailboat/FormSailboat.cs +++ b/Sailboat/Sailboat/FormSailboat.cs @@ -2,9 +2,62 @@ namespace Sailboat { public partial class FormSailboat : Form { + private DrawingSailboat? _drawingSailboat; public FormSailboat() { InitializeComponent(); } + private void Draw() + { + if (_drawingSailboat == null) + { + return; + } + Bitmap bmp = new(pictureBoxSailboat.Width, + pictureBoxSailboat.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawingSailboat.DrawTransport(gr); + pictureBoxSailboat.Image = bmp; + } + private void buttonCreate_Click(object sender, EventArgs e) + { + Random random = new(); + _drawingSailboat = new DrawingSailboat(); + _drawingSailboat.Init(random.Next(100, 300), + random.Next(1000, 3000), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), + random.Next(0, 256)), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), + random.Next(0, 256)), + Convert.ToBoolean(random.Next(0, 2)), + Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)), pictureBoxSailboat.Width, pictureBoxSailboat.Height); + _drawingSailboat.SetPosition(random.Next(10, 100), random.Next(10, 100)); + Draw(); + } + private void buttonMove_Click(object sender, EventArgs e) + { + if (_drawingSailboat == null) + { + return; + } + string name = ((Button)sender)?.Name ?? string.Empty; + switch (name) + { + case "buttonUp": + _drawingSailboat.MoveTransport(DirectionType.Up); + break; + case "buttonDown": + _drawingSailboat.MoveTransport(DirectionType.Down); + break; + case "buttonLeft": + _drawingSailboat.MoveTransport(DirectionType.Left); + break; + case "buttonRight": + _drawingSailboat.MoveTransport(DirectionType.Right); + break; + } + Draw(); + + } } -} \ No newline at end of file +} \ No newline at end of file From d164bcbf1f04b86d36f6c90317f0ba76b95ac783 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D0=B8=D0=BD=D0=B0=20=D0=A7=D1=83=D0=B1?= =?UTF-8?q?=D1=8B=D0=BA=D0=B8=D0=BD=D0=B0?= Date: Fri, 22 Sep 2023 18:05:35 +0400 Subject: [PATCH 3/4] =?UTF-8?q?=D0=A0=D0=B0=D1=81=D0=BA=D1=80=D0=B0=D1=81?= =?UTF-8?q?=D0=B8=D0=BB=D0=B0=20=D0=BF=D0=B0=D1=80=D1=83=D1=81=D0=BD=D0=B8?= =?UTF-8?q?=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sailboat/Sailboat/DrawingSailboat.cs | 43 ++++++++++++++++++---------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/Sailboat/Sailboat/DrawingSailboat.cs b/Sailboat/Sailboat/DrawingSailboat.cs index fd82435..3ade4a5 100644 --- a/Sailboat/Sailboat/DrawingSailboat.cs +++ b/Sailboat/Sailboat/DrawingSailboat.cs @@ -184,19 +184,6 @@ namespace Sailboat 30); g.DrawRectangle(pen, _startPosX + 20, _startPosY + 4, 70, 52);*/ - //основной корпус парусника - Point[] hull = new Point[] - { - new Point(_startPosX + 40, _startPosY + 110), - new Point(_startPosX + 140, _startPosY + 110), - new Point(_startPosX + 170, _startPosY + 140), - new Point(_startPosX + 140, _startPosY + 170), - new Point(_startPosX + 40, _startPosY + 170) - }; - g.DrawPolygon(pen, hull); - - g.DrawEllipse(pen, _startPosX + 50, _startPosY + 120, 90, 40); - //усиленный корпус парусника Point[] hullCooler = new Point[] { @@ -206,18 +193,44 @@ namespace Sailboat new Point(_startPosX + 150, _startPosY + 180), new Point(_startPosX + 30, _startPosY + 180) }; + g.FillPolygon(additionalBrush, hullCooler); g.DrawPolygon(pen, hullCooler); - //парус + //основной корпус парусника + + Brush Brush = new + SolidBrush(EntitySailboat.BodyColor); + + Point[] hull = new Point[] + { + new Point(_startPosX + 40, _startPosY + 110), + new Point(_startPosX + 140, _startPosY + 110), + new Point(_startPosX + 170, _startPosY + 140), + new Point(_startPosX + 140, _startPosY + 170), + new Point(_startPosX + 40, _startPosY + 170) + }; + g.FillPolygon(Brush, hull); + g.DrawPolygon(pen, hull); + + Brush addBrush = new + SolidBrush(Color.Green); + + g.FillEllipse(addBrush, _startPosX + 50, _startPosY + 120, 90, 40); + g.DrawEllipse(pen, _startPosX + 50, _startPosY + 120, 90, 40); + + //парус + Brush sailBrush = new + SolidBrush(Color.Cyan); - g.DrawLine(pen, new Point(_startPosX + 95, _startPosY + 140),new Point (_startPosX + 95, _startPosY + 20)); Point[] sail = new Point[] { new Point(_startPosX + 95, _startPosY + 20), new Point(_startPosX + 160, _startPosY + 140), new Point(_startPosX + 45, _startPosY + 140) }; + g.FillPolygon(sailBrush, sail); g.DrawPolygon(pen, sail); + g.DrawLine(pen, new Point(_startPosX + 95, _startPosY + 140), new Point(_startPosX + 95, _startPosY + 20)); } } } From dbbef182637a6131842642ba1182e60c8b4bde1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D0=B8=D0=BD=D0=B0=20=D0=A7=D1=83=D0=B1?= =?UTF-8?q?=D1=8B=D0=BA=D0=B8=D0=BD=D0=B0?= Date: Tue, 26 Sep 2023 16:26:50 +0400 Subject: [PATCH 4/4] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=20=D0=BD=D0=B0=20=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=80=20?= =?UTF-8?q?=D0=BE=D0=BA=D0=BD=D0=B0=20=D0=B8=20=D0=B8=D0=B7=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BA=D0=BE=D0=BE=D1=80=D0=B4?= =?UTF-8?q?=D0=B8=D0=BD=D0=B0=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sailboat/Sailboat/DrawingSailboat.cs | 198 ++++++--------------- Sailboat/Sailboat/EntitySailboat.cs | 24 +-- Sailboat/Sailboat/FormSailboat.Designer.cs | 14 +- Sailboat/Sailboat/FormSailboat.cs | 9 +- 4 files changed, 70 insertions(+), 175 deletions(-) diff --git a/Sailboat/Sailboat/DrawingSailboat.cs b/Sailboat/Sailboat/DrawingSailboat.cs index 3ade4a5..97f82b7 100644 --- a/Sailboat/Sailboat/DrawingSailboat.cs +++ b/Sailboat/Sailboat/DrawingSailboat.cs @@ -8,71 +8,38 @@ namespace Sailboat { public class DrawingSailboat { - /// - /// Класс-сущность - /// public EntitySailboat? EntitySailboat { get; private set; } - /// - /// Ширина окна - /// private int _pictureWidth; - /// - /// Высота окна - /// private int _pictureHeight; - /// - /// Левая координата прорисовки автомобиля - /// private int _startPosX; - /// - /// Верхняя кооридната прорисовки автомобиля - /// private int _startPosY; - /// - /// Ширина прорисовки автомобиля - /// - private readonly int _boatWidth = 180; - /// - /// Высота прорисовки автомобиля - /// - private readonly int _boatHeight = 180; - /// - /// Инициализация свойств - /// - /// Скорость - /// Вес - /// Цвет кузова - /// Дополнительный цвет - /// Признак наличия обвеса - /// Признак наличия антикрыла - /// Признак наличия гоночной полосы - /// Ширина картинки - /// Высота картинки - /// true - объект создан, false - проверка не пройдена, нельзя создать объект в этих размерах - public bool Init(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyKit, bool wing, bool sportLine, int width, int height) + private readonly int _boatWidth = 160; + private readonly int _boatHeight = 160; + public bool Init(int speed, double weight, Color bodyColor, Color additionalColor, bool hull, bool sail, int width, int height) { - // TODO: Продумать проверки + if (width < _boatWidth || height < _boatHeight) + { + return false; + } _pictureWidth = width; _pictureHeight = height; EntitySailboat = new EntitySailboat(); - EntitySailboat.Init(speed, weight, bodyColor, additionalColor, bodyKit, wing, sportLine); + EntitySailboat.Init(speed, weight, bodyColor, additionalColor, hull, sail); return true; } - /// - /// Установка позиции - /// - /// Координата X - /// Координата Y public void SetPosition(int x, int y) { - // TODO: Изменение x, y + if (x < 0 || x + _boatWidth > _pictureWidth) + { + x = 0; + } + if (y < 0 || y + _boatHeight > _pictureHeight) + { + y = 0; + } _startPosX = x; _startPosY = y; } - /// - /// Изменение направления перемещения - /// - /// Направление public void MoveTransport(DirectionType direction) { if (EntitySailboat == null) @@ -81,28 +48,24 @@ namespace Sailboat } switch (direction) { - //влево case DirectionType.Left: if (_startPosX - EntitySailboat.Step > 0) { _startPosX -= (int)EntitySailboat.Step; } break; - //вверх case DirectionType.Up: if (_startPosY - EntitySailboat.Step > 0) { _startPosY -= (int)EntitySailboat.Step; } break; - // вправо case DirectionType.Right: if (_startPosX + EntitySailboat.Step + _boatWidth < _pictureWidth) { _startPosX += (int)EntitySailboat.Step; } break; - //вниз case DirectionType.Down: if (_startPosY + EntitySailboat.Step + _boatHeight < _pictureHeight) { @@ -111,103 +74,43 @@ namespace Sailboat break; } } - /// - /// Прорисовка объекта - /// - /// public void DrawTransport(Graphics g) { if (EntitySailboat == null) { return; } - Pen pen = new(Color.Black); + Pen pen = new(Color.Black, 4); Brush additionalBrush = new SolidBrush(EntitySailboat.AdditionalColor); - // обвесы - /*if (EntitySailboat.BodyKit) - { - g.DrawEllipse(pen, _startPosX + 90, _startPosY, 20, 20); - g.DrawEllipse(pen, _startPosX + 90, _startPosY + 40, 20, - 20); - g.DrawRectangle(pen, _startPosX + 90, _startPosY + 10, - 20, 40); - g.DrawRectangle(pen, _startPosX + 90, _startPosY, 15, - 15); - g.DrawRectangle(pen, _startPosX + 90, _startPosY + 45, - 15, 15); - g.FillEllipse(additionalBrush, _startPosX + 90, - _startPosY, 20, 20); - g.FillEllipse(additionalBrush, _startPosX + 90, - _startPosY + 40, 20, 20); - g.FillRectangle(additionalBrush, _startPosX + 90, - _startPosY + 10, 20, 40); - g.FillRectangle(additionalBrush, _startPosX + 90, - _startPosY + 1, 15, 15); - g.FillRectangle(additionalBrush, _startPosX + 90, - _startPosY + 45, 15, 15); - g.DrawEllipse(pen, _startPosX, _startPosY, 20, 20); - g.DrawEllipse(pen, _startPosX, _startPosY + 40, 20, 20); - g.DrawRectangle(pen, _startPosX, _startPosY + 10, 20, - 40); - g.DrawRectangle(pen, _startPosX + 5, _startPosY, 14, - 15); - g.DrawRectangle(pen, _startPosX + 5, _startPosY + 45, - 14, 15); - g.FillEllipse(additionalBrush, _startPosX, _startPosY, - 20, 20); - g.FillEllipse(additionalBrush, _startPosX, _startPosY + - 40, 20, 20); - g.FillRectangle(additionalBrush, _startPosX + 1, - _startPosY + 10, 25, 40); - g.FillRectangle(additionalBrush, _startPosX + 5, - _startPosY + 1, 15, 15); - g.FillRectangle(additionalBrush, _startPosX + 5, - _startPosY + 45, 15, 15); - g.DrawRectangle(pen, _startPosX + 35, _startPosY, 39, - 15); - g.DrawRectangle(pen, _startPosX + 35, _startPosY + 45, - 39, 15); - g.FillRectangle(additionalBrush, _startPosX + 35, - _startPosY + 1, 40, 15); - g.FillRectangle(additionalBrush, _startPosX + 35, - _startPosY + 45, 40, 15); - } - - //границы автомобиля - g.DrawEllipse(pen, _startPosX + 10, _startPosY + 5, 20, 20); - g.DrawEllipse(pen, _startPosX + 10, _startPosY + 35, 20, 20); - g.DrawEllipse(pen, _startPosX + 80, _startPosY + 5, 20, 20); - g.DrawEllipse(pen, _startPosX + 80, _startPosY + 35, 20, 20); - g.DrawRectangle(pen, _startPosX + 9, _startPosY + 15, 10, 30); - g.DrawRectangle(pen, _startPosX + 90, _startPosY + 15, 10, - 30); - g.DrawRectangle(pen, _startPosX + 20, _startPosY + 4, 70, 52);*/ - + //усиленный корпус парусника - Point[] hullCooler = new Point[] + if (EntitySailboat.Hull) { - new Point(_startPosX + 30, _startPosY + 100), - new Point(_startPosX + 150, _startPosY + 100), - new Point(_startPosX + 190, _startPosY + 140), - new Point(_startPosX + 150, _startPosY + 180), - new Point(_startPosX + 30, _startPosY + 180) - }; - g.FillPolygon(additionalBrush, hullCooler); - g.DrawPolygon(pen, hullCooler); + Point[] hullCooler = new Point[] + { + new Point(_startPosX, _startPosY + 80), + new Point(_startPosX + 120, _startPosY + 80), + new Point(_startPosX + 160, _startPosY + 120), + new Point(_startPosX + 120, _startPosY + 160), + new Point(_startPosX, _startPosY + 160) + }; + g.FillPolygon(additionalBrush, hullCooler); + g.DrawPolygon(pen, hullCooler); + } + //основной корпус парусника - Brush Brush = new SolidBrush(EntitySailboat.BodyColor); Point[] hull = new Point[] { - new Point(_startPosX + 40, _startPosY + 110), - new Point(_startPosX + 140, _startPosY + 110), - new Point(_startPosX + 170, _startPosY + 140), - new Point(_startPosX + 140, _startPosY + 170), - new Point(_startPosX + 40, _startPosY + 170) + new Point(_startPosX + 10, _startPosY + 90), + new Point(_startPosX + 110, _startPosY + 90), + new Point(_startPosX + 140, _startPosY + 120), + new Point(_startPosX + 110, _startPosY + 150), + new Point(_startPosX + 10, _startPosY + 150) }; g.FillPolygon(Brush, hull); g.DrawPolygon(pen, hull); @@ -215,22 +118,25 @@ namespace Sailboat Brush addBrush = new SolidBrush(Color.Green); - g.FillEllipse(addBrush, _startPosX + 50, _startPosY + 120, 90, 40); - g.DrawEllipse(pen, _startPosX + 50, _startPosY + 120, 90, 40); + g.FillEllipse(addBrush, _startPosX + 20, _startPosY + 100, 90, 40); + g.DrawEllipse(pen, _startPosX + 20, _startPosY + 100, 90, 40); //парус - Brush sailBrush = new - SolidBrush(Color.Cyan); - - Point[] sail = new Point[] + if (EntitySailboat.Sail) { - new Point(_startPosX + 95, _startPosY + 20), - new Point(_startPosX + 160, _startPosY + 140), - new Point(_startPosX + 45, _startPosY + 140) - }; - g.FillPolygon(sailBrush, sail); - g.DrawPolygon(pen, sail); - g.DrawLine(pen, new Point(_startPosX + 95, _startPosY + 140), new Point(_startPosX + 95, _startPosY + 20)); + Brush sailBrush = new + SolidBrush(EntitySailboat.AdditionalColor); + + Point[] sail = new Point[] + { + new Point(_startPosX + 65, _startPosY), + new Point(_startPosX + 130, _startPosY + 120), + new Point(_startPosX + 15, _startPosY + 120) + }; + g.FillPolygon(sailBrush, sail); + g.DrawPolygon(pen, sail); + g.DrawLine(pen, new Point(_startPosX + 65, _startPosY + 120), new Point(_startPosX + 65, _startPosY)); + } } } } diff --git a/Sailboat/Sailboat/EntitySailboat.cs b/Sailboat/Sailboat/EntitySailboat.cs index 79dfc2a..8aa513f 100644 --- a/Sailboat/Sailboat/EntitySailboat.cs +++ b/Sailboat/Sailboat/EntitySailboat.cs @@ -25,17 +25,13 @@ namespace Sailboat /// public Color AdditionalColor { get; private set; } /// - /// Признак (опция) наличия обвеса + /// Признак (опция) наличия усиленного корпуса /// - public bool BodyKit { get; private set; } + public bool Hull { get; private set; } /// - /// Признак (опция) наличия антикрыла + /// Признак (опция) наличия паруса /// - public bool Wing { get; private set; } - /// - /// Признак (опция) наличия гоночной полосы - /// - public bool SportLine { get; private set; } + public bool Sail { get; private set; } /// /// Шаг перемещения автомобиля /// @@ -47,19 +43,17 @@ namespace Sailboat /// Вес автомобиля /// Основной цвет /// Дополнительный цвет - /// Признак наличия обвеса - /// Признак наличия антикрыла - /// Признак наличия гоночной полосы + /// Признак наличия усиленного корпуса + /// Признак наличия паруса public void Init(int speed, double weight, Color bodyColor, Color - additionalColor, bool bodyKit, bool wing, bool sportLine) + additionalColor, bool hull, bool sail) { Speed = speed; Weight = weight; BodyColor = bodyColor; AdditionalColor = additionalColor; - BodyKit = bodyKit; - Wing = wing; - SportLine = sportLine; + Hull = hull; + Sail = sail; } } } diff --git a/Sailboat/Sailboat/FormSailboat.Designer.cs b/Sailboat/Sailboat/FormSailboat.Designer.cs index fd83356..4226e22 100644 --- a/Sailboat/Sailboat/FormSailboat.Designer.cs +++ b/Sailboat/Sailboat/FormSailboat.Designer.cs @@ -43,7 +43,7 @@ this.pictureBoxSailboat.Dock = System.Windows.Forms.DockStyle.Fill; this.pictureBoxSailboat.Location = new System.Drawing.Point(0, 0); this.pictureBoxSailboat.Name = "pictureBoxSailboat"; - this.pictureBoxSailboat.Size = new System.Drawing.Size(1466, 741); + this.pictureBoxSailboat.Size = new System.Drawing.Size(882, 453); this.pictureBoxSailboat.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; this.pictureBoxSailboat.TabIndex = 0; this.pictureBoxSailboat.TabStop = false; @@ -51,7 +51,7 @@ // buttonCreate // this.buttonCreate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.buttonCreate.Location = new System.Drawing.Point(12, 683); + this.buttonCreate.Location = new System.Drawing.Point(12, 395); this.buttonCreate.Name = "buttonCreate"; this.buttonCreate.Size = new System.Drawing.Size(127, 46); this.buttonCreate.TabIndex = 1; @@ -64,7 +64,7 @@ this.buttonLeft.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonLeft.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonLeft.BackgroundImage"))); this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.buttonLeft.Location = new System.Drawing.Point(1294, 691); + this.buttonLeft.Location = new System.Drawing.Point(710, 403); this.buttonLeft.Name = "buttonLeft"; this.buttonLeft.Size = new System.Drawing.Size(30, 30); this.buttonLeft.TabIndex = 2; @@ -76,7 +76,7 @@ this.buttonUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonUp.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonUp.BackgroundImage"))); this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.buttonUp.Location = new System.Drawing.Point(1343, 646); + this.buttonUp.Location = new System.Drawing.Point(759, 358); this.buttonUp.Name = "buttonUp"; this.buttonUp.Size = new System.Drawing.Size(30, 30); this.buttonUp.TabIndex = 3; @@ -88,7 +88,7 @@ this.buttonRight.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonRight.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonRight.BackgroundImage"))); this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.buttonRight.Location = new System.Drawing.Point(1393, 691); + this.buttonRight.Location = new System.Drawing.Point(809, 403); this.buttonRight.Name = "buttonRight"; this.buttonRight.Size = new System.Drawing.Size(30, 30); this.buttonRight.TabIndex = 4; @@ -100,7 +100,7 @@ this.buttonDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonDown.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonDown.BackgroundImage"))); this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.buttonDown.Location = new System.Drawing.Point(1343, 691); + this.buttonDown.Location = new System.Drawing.Point(759, 403); this.buttonDown.Name = "buttonDown"; this.buttonDown.Size = new System.Drawing.Size(30, 30); this.buttonDown.TabIndex = 5; @@ -111,7 +111,7 @@ // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1466, 741); + this.ClientSize = new System.Drawing.Size(882, 453); this.Controls.Add(this.buttonDown); this.Controls.Add(this.buttonRight); this.Controls.Add(this.buttonUp); diff --git a/Sailboat/Sailboat/FormSailboat.cs b/Sailboat/Sailboat/FormSailboat.cs index 3606e69..66139d6 100644 --- a/Sailboat/Sailboat/FormSailboat.cs +++ b/Sailboat/Sailboat/FormSailboat.cs @@ -23,14 +23,9 @@ namespace Sailboat { Random random = new(); _drawingSailboat = new DrawingSailboat(); - _drawingSailboat.Init(random.Next(100, 300), - random.Next(1000, 3000), - Color.FromArgb(random.Next(0, 256), random.Next(0, 256), - random.Next(0, 256)), - Color.FromArgb(random.Next(0, 256), random.Next(0, 256), - random.Next(0, 256)), + _drawingSailboat.Init(random.Next(100, 300), random.Next(1000, 3000), Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), Convert.ToBoolean(random.Next(0, 2)), - Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)), pictureBoxSailboat.Width, pictureBoxSailboat.Height); + Convert.ToBoolean(random.Next(0, 2)), pictureBoxSailboat.Width, pictureBoxSailboat.Height); _drawingSailboat.SetPosition(random.Next(10, 100), random.Next(10, 100)); Draw(); }