Курсовая работа: "Визуализация бинарного поиска"
This commit is contained in:
commit
bcd334d031
BIN
.vs/BinarySearch_PIBD-11_ShipilovNikita/v17/.wsuo
Normal file
BIN
.vs/BinarySearch_PIBD-11_ShipilovNikita/v17/.wsuo
Normal file
Binary file not shown.
3
.vs/ProjectSettings.json
Normal file
3
.vs/ProjectSettings.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"CurrentProjectSetting": null
|
||||
}
|
6
.vs/VSWorkspaceState.json
Normal file
6
.vs/VSWorkspaceState.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"ExpandedNodes": [
|
||||
""
|
||||
],
|
||||
"PreviewInSolutionExplorer": false
|
||||
}
|
BIN
.vs/slnx.sqlite
Normal file
BIN
.vs/slnx.sqlite
Normal file
Binary file not shown.
BIN
BinarySearch/.vs/BinarySearch/DesignTimeBuild/.dtbcache.v2
Normal file
BIN
BinarySearch/.vs/BinarySearch/DesignTimeBuild/.dtbcache.v2
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
BinarySearch/.vs/BinarySearch/v17/.futdcache.v2
Normal file
BIN
BinarySearch/.vs/BinarySearch/v17/.futdcache.v2
Normal file
Binary file not shown.
BIN
BinarySearch/.vs/BinarySearch/v17/.suo
Normal file
BIN
BinarySearch/.vs/BinarySearch/v17/.suo
Normal file
Binary file not shown.
BIN
BinarySearch/.vs/ProjectEvaluation/binarysearch.metadata.v7.bin
Normal file
BIN
BinarySearch/.vs/ProjectEvaluation/binarysearch.metadata.v7.bin
Normal file
Binary file not shown.
BIN
BinarySearch/.vs/ProjectEvaluation/binarysearch.projects.v7.bin
Normal file
BIN
BinarySearch/.vs/ProjectEvaluation/binarysearch.projects.v7.bin
Normal file
Binary file not shown.
25
BinarySearch/BinarySearch.sln
Normal file
25
BinarySearch/BinarySearch.sln
Normal file
@ -0,0 +1,25 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.8.34330.188
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BinarySearch", "BinarySearch\BinarySearch.csproj", "{D32DE24F-D9A3-411A-91C6-142A6FA1B7CF}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{D32DE24F-D9A3-411A-91C6-142A6FA1B7CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D32DE24F-D9A3-411A-91C6-142A6FA1B7CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D32DE24F-D9A3-411A-91C6-142A6FA1B7CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D32DE24F-D9A3-411A-91C6-142A6FA1B7CF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {6D9191C7-467F-4DA5-A5FB-D9795C6A8B77}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
111
BinarySearch/BinarySearch/Algorithm/BinarySearchAlgorithm.cs
Normal file
111
BinarySearch/BinarySearch/Algorithm/BinarySearchAlgorithm.cs
Normal file
@ -0,0 +1,111 @@
|
||||
using BinarySearch.State;
|
||||
|
||||
namespace BinarySearch.Algorithm;
|
||||
|
||||
/// <summary>
|
||||
/// Класс-Реализатор
|
||||
/// </summary>
|
||||
public class BinarySearchAlgorithm
|
||||
{
|
||||
private List<int> sortedArray;
|
||||
private int target;
|
||||
private int left { get; set; }
|
||||
private int right { get; set; }
|
||||
private int mid { get; set; }
|
||||
private int? targetIndex { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор класса-реализатора
|
||||
/// </summary>
|
||||
/// <param name="array"></param>
|
||||
/// <param name="target"></param>
|
||||
public BinarySearchAlgorithm(List<int> array, int target)
|
||||
{
|
||||
targetIndex = null;
|
||||
sortedArray = array;
|
||||
this.target = target;
|
||||
left = 0;
|
||||
right = array.Count - 1;
|
||||
mid = left + (right - left) / 2;
|
||||
SortArray();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Сортировка массива
|
||||
/// </summary>
|
||||
private void SortArray()
|
||||
{
|
||||
sortedArray.Sort();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Совершение шага алгоритма
|
||||
/// </summary>
|
||||
public void ExecuteStep()
|
||||
{
|
||||
if (left <= right)
|
||||
{
|
||||
if (sortedArray[mid] == target)
|
||||
{
|
||||
targetIndex = mid;
|
||||
left = mid + 1;
|
||||
right = mid - 1;
|
||||
return;
|
||||
}
|
||||
if (left == right)
|
||||
{
|
||||
targetIndex = -1;
|
||||
left = mid + 1;
|
||||
right = mid - 1;
|
||||
return;
|
||||
}
|
||||
if (sortedArray[mid] < target)
|
||||
{
|
||||
left = mid + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
right = mid - 1;
|
||||
}
|
||||
mid = left + (right - left) / 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
targetIndex = -1;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Создание состояние актуального шага
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public SearchState CreateState()
|
||||
{
|
||||
return new SearchState(left, right, mid, targetIndex, sortedArray, target);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Восстановление шага алгоритма по состоянию
|
||||
/// </summary>
|
||||
/// <param name="state"></param>
|
||||
public void RestoreState(SearchState state)
|
||||
{
|
||||
left = state.Left;
|
||||
right = state.Right;
|
||||
mid = state.Mid;
|
||||
targetIndex = state.TargetIndex;
|
||||
sortedArray = state.Array;
|
||||
target = state.Target;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Проверка на завершенность алгоритма
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool IsOver()
|
||||
{
|
||||
return left <= right;
|
||||
}
|
||||
}
|
||||
|
||||
|
127
BinarySearch/BinarySearch/Algorithm/BinarySearchVisualizer.cs
Normal file
127
BinarySearch/BinarySearch/Algorithm/BinarySearchVisualizer.cs
Normal file
@ -0,0 +1,127 @@
|
||||
using BinarySearch.State;
|
||||
|
||||
namespace BinarySearch.Algorithm;
|
||||
|
||||
/// <summary>
|
||||
/// Класс для визуализации бинарного поиска.
|
||||
/// </summary>
|
||||
public class BinarySearchVisualizer
|
||||
{
|
||||
private readonly MainForm _mainForm;
|
||||
private readonly List<int> _array;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор класса BinarySearchVisualizer.
|
||||
/// </summary>
|
||||
/// <param name="mainForm">Главная форма приложения.</param>
|
||||
/// <param name="array">Массив, который будет визуализироваться.</param>
|
||||
public BinarySearchVisualizer(MainForm mainForm, List<int> array)
|
||||
{
|
||||
_mainForm = mainForm ?? throw new ArgumentNullException(nameof(mainForm));
|
||||
_array = array;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Визуализация текущего состояния поиска.
|
||||
/// </summary>
|
||||
/// <param name="state">Текущее состояние поиска.</param>
|
||||
public void Visualize(SearchState state)
|
||||
{
|
||||
Color color;
|
||||
if (state.TargetIndex == null)
|
||||
{
|
||||
color = Color.Orange;
|
||||
} else if (state.TargetIndex >= 0)
|
||||
{
|
||||
color = Color.Green;
|
||||
} else
|
||||
{
|
||||
color = Color.Red;
|
||||
}
|
||||
UpdateFlowLayoutPanelByStep(state, color);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обновление панели с элементами.
|
||||
/// </summary>
|
||||
public void UpdateFlowLayoutPanel()
|
||||
{
|
||||
_mainForm.flowLayoutPanelArray.Controls.Clear();
|
||||
_mainForm.flowLayoutPanelIndex.Controls.Clear();
|
||||
|
||||
if (_array != null)
|
||||
{
|
||||
for (int i = 0; i < _array.Count; i++)
|
||||
{
|
||||
TextBox textBox = new()
|
||||
{
|
||||
Text = _array[i].ToString(),
|
||||
Width = 40,
|
||||
ReadOnly = false
|
||||
};
|
||||
|
||||
TextBox textBoxIndex = new()
|
||||
{
|
||||
Text = i.ToString(),
|
||||
Width = 40,
|
||||
ReadOnly = true,
|
||||
Enabled = false
|
||||
};
|
||||
|
||||
_mainForm.flowLayoutPanelArray.Controls.Add(textBox);
|
||||
_mainForm.flowLayoutPanelIndex.Controls.Add(textBoxIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обновление панели с элементами по шагам
|
||||
/// </summary>
|
||||
/// <param name="state"></param>
|
||||
/// <param name="color"></param>
|
||||
private void UpdateFlowLayoutPanelByStep(SearchState state, Color color)
|
||||
{
|
||||
_mainForm.flowLayoutPanelArray.Controls.Clear();
|
||||
_mainForm.flowLayoutPanelIndex.Controls.Clear();
|
||||
if (state.Mid < state.Target)
|
||||
{
|
||||
_mainForm.labelMid.Text = "";
|
||||
}
|
||||
if (_array != null)
|
||||
{
|
||||
for (int i = 0; i < _array.Count; i++)
|
||||
{
|
||||
TextBox textBox = new()
|
||||
{
|
||||
Text = _array[i].ToString(),
|
||||
Width = 40,
|
||||
ReadOnly = true
|
||||
};
|
||||
|
||||
if (i < state.Left || i > state.Right)
|
||||
{
|
||||
textBox.BackColor = Color.Black;
|
||||
textBox.ForeColor = Color.White;
|
||||
textBox.Enabled = false;
|
||||
}
|
||||
if (i == state.Mid)
|
||||
{
|
||||
textBox.BackColor = color;
|
||||
textBox.ForeColor = Color.White;
|
||||
textBox.Enabled = true;
|
||||
}
|
||||
|
||||
TextBox textBoxIndex = new()
|
||||
{
|
||||
Text = i.ToString(),
|
||||
Width = 40,
|
||||
ReadOnly = true,
|
||||
Enabled = false
|
||||
};
|
||||
|
||||
_mainForm.flowLayoutPanelArray.Controls.Add(textBox);
|
||||
_mainForm.flowLayoutPanelIndex.Controls.Add(textBoxIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
44
BinarySearch/BinarySearch/Algorithm/Manager.cs
Normal file
44
BinarySearch/BinarySearch/Algorithm/Manager.cs
Normal file
@ -0,0 +1,44 @@
|
||||
using BinarySearch.State;
|
||||
|
||||
namespace BinarySearch.Algorithm;
|
||||
|
||||
/// <summary>
|
||||
/// Класс, управляющий выполнением бинарного поиска.
|
||||
/// </summary>
|
||||
public class Manager
|
||||
{
|
||||
private readonly StateStorage _storage;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор класса Manager
|
||||
/// </summary>
|
||||
/// <param name="storage">Хранилище состояний.</param>
|
||||
public Manager(StateStorage storage)
|
||||
{
|
||||
_storage = storage;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Выполнение бинарного поиска.
|
||||
/// </summary>
|
||||
/// <param name="parameters">Параметры поиска.</param>
|
||||
public void ExecuteBinarySearch(SearchParameters parameters)
|
||||
{
|
||||
if (parameters == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(parameters));
|
||||
}
|
||||
BinarySearchAlgorithm algorithm = new(parameters.Array, parameters.Target);
|
||||
SearchState? state;
|
||||
_storage.Clear();
|
||||
|
||||
while (algorithm.IsOver())
|
||||
{
|
||||
state = algorithm.CreateState();
|
||||
_storage.AddState(state);
|
||||
algorithm.ExecuteStep();
|
||||
}
|
||||
state = algorithm.CreateState();
|
||||
_storage.AddState(state);
|
||||
}
|
||||
}
|
34
BinarySearch/BinarySearch/Algorithm/SearchParameters.cs
Normal file
34
BinarySearch/BinarySearch/Algorithm/SearchParameters.cs
Normal file
@ -0,0 +1,34 @@
|
||||
namespace BinarySearch.Algorithm;
|
||||
|
||||
/// <summary>
|
||||
/// Класс-Параметр
|
||||
/// </summary>
|
||||
public class SearchParameters
|
||||
{
|
||||
public List<int>? Array { get; }
|
||||
public int Target { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор класса-параметра
|
||||
/// </summary>
|
||||
public SearchParameters()
|
||||
{
|
||||
Array = new List<int>();
|
||||
Target = 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор класса-параметра с параметрами
|
||||
/// </summary>
|
||||
/// <param name="array"></param>
|
||||
/// <param name="target"></param>
|
||||
public SearchParameters(List<int>? array, int target)
|
||||
{
|
||||
Array = array;
|
||||
if (Array != null)
|
||||
{
|
||||
Array.Sort();
|
||||
}
|
||||
Target = target;
|
||||
}
|
||||
}
|
26
BinarySearch/BinarySearch/BinarySearch.csproj
Normal file
26
BinarySearch/BinarySearch/BinarySearch.csproj
Normal file
@ -0,0 +1,26 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net7.0-windows</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Update="Properties\Resources.Designer.cs">
|
||||
<DesignTime>True</DesignTime>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Update="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
17
BinarySearch/BinarySearch/BinarySearch.csproj.user
Normal file
17
BinarySearch/BinarySearch/BinarySearch.csproj.user
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Compile Update="Forms\AddForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Update="Forms\InfoForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Update="Forms\InitDataForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Update="Forms\MainForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
</Project>
|
89
BinarySearch/BinarySearch/Forms/AddForm.Designer.cs
generated
Normal file
89
BinarySearch/BinarySearch/Forms/AddForm.Designer.cs
generated
Normal file
@ -0,0 +1,89 @@
|
||||
namespace BinarySearch.Forms
|
||||
{
|
||||
partial class AddForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
buttonAdd = new Button();
|
||||
labelAdd = new Label();
|
||||
numericUpDownNumber = new NumericUpDown();
|
||||
((System.ComponentModel.ISupportInitialize)numericUpDownNumber).BeginInit();
|
||||
SuspendLayout();
|
||||
//
|
||||
// buttonAdd
|
||||
//
|
||||
buttonAdd.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
buttonAdd.Location = new Point(2, 41);
|
||||
buttonAdd.Name = "buttonAdd";
|
||||
buttonAdd.Size = new Size(303, 23);
|
||||
buttonAdd.TabIndex = 5;
|
||||
buttonAdd.Text = "Добавить элемент";
|
||||
buttonAdd.UseVisualStyleBackColor = true;
|
||||
buttonAdd.Click += buttonAdd_Click;
|
||||
//
|
||||
// labelAdd
|
||||
//
|
||||
labelAdd.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
labelAdd.AutoSize = true;
|
||||
labelAdd.Location = new Point(2, 14);
|
||||
labelAdd.Name = "labelAdd";
|
||||
labelAdd.Size = new Size(93, 15);
|
||||
labelAdd.TabIndex = 4;
|
||||
labelAdd.Text = "Введите число:";
|
||||
//
|
||||
// numericUpDownNumber
|
||||
//
|
||||
numericUpDownNumber.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
numericUpDownNumber.Location = new Point(101, 12);
|
||||
numericUpDownNumber.Maximum = new decimal(new int[] { 200, 0, 0, 0 });
|
||||
numericUpDownNumber.Minimum = new decimal(new int[] { 200, 0, 0, int.MinValue });
|
||||
numericUpDownNumber.Name = "numericUpDownNumber";
|
||||
numericUpDownNumber.Size = new Size(204, 23);
|
||||
numericUpDownNumber.TabIndex = 3;
|
||||
//
|
||||
// AddForm
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
ClientSize = new Size(308, 83);
|
||||
Controls.Add(buttonAdd);
|
||||
Controls.Add(labelAdd);
|
||||
Controls.Add(numericUpDownNumber);
|
||||
Name = "AddForm";
|
||||
Text = "Добавить элемент";
|
||||
((System.ComponentModel.ISupportInitialize)numericUpDownNumber).EndInit();
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private Button buttonAdd;
|
||||
private Label labelAdd;
|
||||
private NumericUpDown numericUpDownNumber;
|
||||
}
|
||||
}
|
34
BinarySearch/BinarySearch/Forms/AddForm.cs
Normal file
34
BinarySearch/BinarySearch/Forms/AddForm.cs
Normal file
@ -0,0 +1,34 @@
|
||||
using BinarySearch.Algorithm;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace BinarySearch.Forms;
|
||||
|
||||
public partial class AddForm : Form
|
||||
{
|
||||
public delegate void AddNumberDelegate(int number);
|
||||
public event AddNumberDelegate AddNumberEvent;
|
||||
public AddForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void buttonAdd_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Получаем значение из numericUpDownNumber
|
||||
int number = (int)numericUpDownNumber.Value;
|
||||
|
||||
// Вызываем событие и передаем значение в главную форму
|
||||
AddNumberEvent?.Invoke(number);
|
||||
|
||||
// Закрываем текущую форму
|
||||
this.Close();
|
||||
}
|
||||
}
|
120
BinarySearch/BinarySearch/Forms/AddForm.resx
Normal file
120
BinarySearch/BinarySearch/Forms/AddForm.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
121
BinarySearch/BinarySearch/Forms/InfoForm.Designer.cs
generated
Normal file
121
BinarySearch/BinarySearch/Forms/InfoForm.Designer.cs
generated
Normal file
@ -0,0 +1,121 @@
|
||||
namespace BinarySearch
|
||||
{
|
||||
partial class InfoForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(InfoForm));
|
||||
groupBox1 = new GroupBox();
|
||||
richTextBox1 = new RichTextBox();
|
||||
fontDialog1 = new FontDialog();
|
||||
pictureBox1 = new PictureBox();
|
||||
groupBox2 = new GroupBox();
|
||||
richTextBox2 = new RichTextBox();
|
||||
groupBox1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
|
||||
groupBox2.SuspendLayout();
|
||||
SuspendLayout();
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
groupBox1.Controls.Add(richTextBox1);
|
||||
groupBox1.Location = new Point(13, 13);
|
||||
groupBox1.Margin = new Padding(4);
|
||||
groupBox1.Name = "groupBox1";
|
||||
groupBox1.Padding = new Padding(4);
|
||||
groupBox1.Size = new Size(491, 320);
|
||||
groupBox1.TabIndex = 0;
|
||||
groupBox1.TabStop = false;
|
||||
groupBox1.Text = "Основное";
|
||||
//
|
||||
// richTextBox1
|
||||
//
|
||||
richTextBox1.Location = new Point(8, 30);
|
||||
richTextBox1.Margin = new Padding(4);
|
||||
richTextBox1.Name = "richTextBox1";
|
||||
richTextBox1.Size = new Size(475, 283);
|
||||
richTextBox1.TabIndex = 0;
|
||||
richTextBox1.Text = resources.GetString("richTextBox1.Text");
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
pictureBox1.BorderStyle = BorderStyle.FixedSingle;
|
||||
pictureBox1.Image = (Image)resources.GetObject("pictureBox1.Image");
|
||||
pictureBox1.Location = new Point(511, 13);
|
||||
pictureBox1.Name = "pictureBox1";
|
||||
pictureBox1.Size = new Size(506, 542);
|
||||
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
|
||||
pictureBox1.TabIndex = 1;
|
||||
pictureBox1.TabStop = false;
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
groupBox2.Controls.Add(richTextBox2);
|
||||
groupBox2.Location = new Point(13, 340);
|
||||
groupBox2.Name = "groupBox2";
|
||||
groupBox2.Size = new Size(491, 215);
|
||||
groupBox2.TabIndex = 2;
|
||||
groupBox2.TabStop = false;
|
||||
groupBox2.Text = "Использование программы";
|
||||
//
|
||||
// richTextBox2
|
||||
//
|
||||
richTextBox2.Location = new Point(8, 28);
|
||||
richTextBox2.Name = "richTextBox2";
|
||||
richTextBox2.Size = new Size(475, 181);
|
||||
richTextBox2.TabIndex = 0;
|
||||
richTextBox2.Text = resources.GetString("richTextBox2.Text");
|
||||
//
|
||||
// InfoForm
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(9F, 21F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
BackColor = Color.PapayaWhip;
|
||||
ClientSize = new Size(1029, 563);
|
||||
Controls.Add(groupBox2);
|
||||
Controls.Add(pictureBox1);
|
||||
Controls.Add(groupBox1);
|
||||
Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
Margin = new Padding(4);
|
||||
Name = "InfoForm";
|
||||
Text = "Информация об алгоритме";
|
||||
groupBox1.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
|
||||
groupBox2.ResumeLayout(false);
|
||||
ResumeLayout(false);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private GroupBox groupBox1;
|
||||
private RichTextBox richTextBox1;
|
||||
private FontDialog fontDialog1;
|
||||
private PictureBox pictureBox1;
|
||||
private GroupBox groupBox2;
|
||||
private RichTextBox richTextBox2;
|
||||
}
|
||||
}
|
20
BinarySearch/BinarySearch/Forms/InfoForm.cs
Normal file
20
BinarySearch/BinarySearch/Forms/InfoForm.cs
Normal file
@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace BinarySearch
|
||||
{
|
||||
public partial class InfoForm : Form
|
||||
{
|
||||
public InfoForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
863
BinarySearch/BinarySearch/Forms/InfoForm.resx
Normal file
863
BinarySearch/BinarySearch/Forms/InfoForm.resx
Normal file
@ -0,0 +1,863 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="richTextBox1.Text" xml:space="preserve">
|
||||
<value>Бинарный поиск — тип поискового алгоритма, который последовательно делит пополам заранее отсортированный массив данных, чтобы обнаружить нужный элемент. Другие его названия — двоичный поиск, метод половинного деления, дихотомия.
|
||||
|
||||
Основная последовательность действий алгоритма выглядит так:
|
||||
|
||||
1. Сортируем массив данных.
|
||||
2. Делим его пополам и находим середину.
|
||||
3. Сравниваем срединный элемент с заданным искомым элементом.
|
||||
4. Если искомое число больше среднего — продолжаем поиск в правой части массива (если он отсортирован по возрастанию): делим ее пополам, повторяя пункт 3. Если же заданное число меньше — алгоритм продолжит поиск в левой части массива, снова возвращаясь к пункту 3.
|
||||
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="fontDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAABF4AAASFCAYAAACWvRgTAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
|
||||
EQAACxEBf2RfkQAApzZJREFUeF7s/U+PHOeBLnoefYEW9QHaLa+PZVDb/gPIO0tqwPRKts6C9KIJqzeU
|
||||
AWkk3DtzxZGOdHcWJVizG5OGvT2i0Z7VTNuEe+uG1V5d2AbEXlzg+khukqJsWrLUlZNPVr3Ft4JvZmVW
|
||||
5Z+IzN8PeEBWZmREZFZWVsRTb0T8lxEAAAAAq7CneAEAAABYDcULAAAAwIooXgAAAABWRPECAAAAsCKK
|
||||
FwAAAIAVUbwAAAAArIjiBQAAAGBFFC8AAAAAK6J4AQAAAFgRxQsAAADAiiheAAAAAFZE8QIAAACwIooX
|
||||
AAAAgBVRvAAAAACsiOIFAAAAYEUULwAAAAArongBAAAAWBHFCwAAAMCKKF4AAAAAVkTxAgAAALAiihcA
|
||||
AACAFVG8AAAAAKyI4gUATuPz/xyN7n06Gt29Nxrd/sNo9OFH+/mft0WGnbyPb328/77+w59Go08/G285
|
||||
7h288QGAeSleAGBR2QFN0aJgkV1Mypg/frJfOgIAx1K8AMA88pf+/NX/wzvtnVGRXUxKmD99evBDAgC0
|
||||
KF4AYBaFi8jx+f1HChgAmELxAgDTKFxEFksKmM8+P/gBAgBC8QIAXdlx/I+77R1LETk+OQeSE/ECwITi
|
||||
BQBqOWmoUS4ip09GvzgBLwAoXgDg0Mf32juQInKyfHBnNPrkzwc/YACwmxQvAJBDInJ1ltaOo4icPjlf
|
||||
EgDsKMULALstpYvzuYisPsoXAHaU4gWA3Waki8j6knMoAcCOUbwAsLuc00Vk/fn0s4MfQADYDYoXAHZT
|
||||
Dnto7RSKyGqTE+662hEAO0TxAsDuyU5fa4dQRNaTHOIHADtC8QLA7vn9R+2dQRFZX5xsF4AdoXgBYLc4
|
||||
xEikH3HIEQA7QvECwO7ITp7RLiL9iUOOANgBihcAdsdHf2zv/InI5uIqRwBsOcULALvBCXVF+hmjXgDY
|
||||
cooXAHbDvU/aO30isvk41wsAW0zxAsBucG4Xkf7GFY4A2GKKFwC2X84h0drZE5F+JFc4AoAtpXgBYPs5
|
||||
qa5I/+MkuwBsKcULANvPYUYi/Y/DjQDYUooXALabqxmJDCOubgTAllK8ALDdPvlzeydPRPoV53kBYEsp
|
||||
XgDYbh/fa+/kiUj/8tnnBz+4ALA9FC8AbLccvtDawROR/uVPnx784ALA9lC8ALDd/uNuewdPRPqXP35y
|
||||
8IMLANtD8QLAdnNFI5Hh5O69gx9cANgeihcAtltr505E+pmP/njwgwsA20PxAsB2a+3ciUg/o3gBYAsp
|
||||
XgDYbq2dOxHpZxQvAGwhxQsA2621cyci/YziBYAtpHgBYLs5ua7IcPKHPx384ALA9lC8ALDdXE5aZDhx
|
||||
OWkAtpDiBYDtlkMXWjt4ItK//OnPBz+4ALA9FC8AbLeP77V38ESkf/ns84MfXADYHooXALbbJ39u7+CJ
|
||||
SL/ywZ2DH1oA2C6KFwC2295eeydPRPqVWx8f/NACwHZRvACw/ZxgV6T/cWJdALaU4gWA7ZdL1LZ29ESk
|
||||
P3F+FwC2lOIFgO336WftHT0R6Uc+/OjghxUAto/iBYDdkPNHtHb4RGTzuffpwQ8qAGwfxQsAuyHnj2jt
|
||||
8InI5vP5fx78oALA9lG8ALAbcnWjD++0d/pEZHP56I8HP6QAsJ0ULwDsDifZFelfjHYBYMspXgDYHZNR
|
||||
Lx+1d/5EZP0x2gWAHaB4AWC35CSerR1AEVlvUoIa7QLADlC8ALB7XOFIZPNxJSMAdoTiBYDdk7+yO9Gu
|
||||
yObiECMAdojiBYDd9Oln7R1CEVltcohRzrcEADtC8QLA7nKVI5H15oM7zusCwM5RvACw25QvIuvLZ58f
|
||||
/OABwO5QvACA8kVk9fmTk+kCsJsULwAQyheR1SSHFxnpAsAOU7wAQKF8EVluciJd53QBYMcpXgCglr/M
|
||||
Z2extRMpIvPn1sfjLU1XLwIAxQsAdOUv9B/9sb0zKSKzk0OL/vjJwQ8TAKB4AYBp7n1q9IvIIklh6dAi
|
||||
ADhC8QIAx1HAiMxODiv69LODHxgAoKZ4AYB5pYDJDmZrx1Nk15JDiu7ec8UiADiG4gUAFpVDKVLC3PnD
|
||||
/s5na6dUZBuTkV8pW4xuAYC5KV4A4LTyF/9P/rx/Oeqc4yKjYkqyoyoypJT3borFvJ9zoty8v12hCABO
|
||||
RPECAAzL5cuXR//lv/yXSfJ/AIAeU7wAAMOieAEABkTxAgAMi+IFABgQxQsAMCyKFwBgQBQvAMCwKF4A
|
||||
gAFRvAAAw6J4AQAGRPECAAyL4gUAGBDFCwAwLIoXAGBAFC8AwLAoXgCAAVG8AADDongBAAZE8QIADIvi
|
||||
BQAYEMULADAsihcAYEAULwDAsCheAIABUbwAAMOieAEABkTxAgAMi+IFABgQxQsAMAw3btwYXbp0aXTm
|
||||
zJnD4uXRRx8dXbhwYXTz5s2DqQAAekXxAgD0261bt0bPP//8YdkyLZnm9u3bB48CAOgFxQsA0F8pXc6e
|
||||
PdssWlp5/PHHlS8AQJ8oXgCAftrb25trpEs33/nOdw7mAACwcYoXAKCf3n///WaxclweeuihyflgAAB6
|
||||
QPECAPRPRrucP3++WazME6NeAICeULwAAP2T4mWRc7t088UvfvFgTgAAG7W54qW1kSQiIiKyjORwIwCA
|
||||
HlC8iIiIyPZF8QIA9ITiRURERLYvuaw0AEAP9KN4AQConfRS0iXf+ta3DuYEALBRihcAoJ9+9rOfHdle
|
||||
mDc5zOjmzZsHcwEA2CjFCwDQTycd9ZLHAAD0hOIFAOivW7duLXRZ6Zzb5fbt2wePBgDYOMULANBvKV/m
|
||||
Gfly6dIlpQsA0DeKFwBgGN5///3R+fPnR48++ujhNsSZM2cmhcuNGzcOpgIA6BXFCwAwLJcvXz7chsj/
|
||||
AQB6TPECAAyL4gUAGBDFCwAwLIoXAGBAFC8AwLAoXgCAAVG8AADDongBAAZE8QIADIviBQAYEMULADAs
|
||||
ihcAYEAULwDAsCheAIABUbwAAMOieAEABkTxAgAMi+IFABgQxQsAMCyKFwBgQBQvAMCwKF4AgAFRvAAA
|
||||
w6J4AQAGRPECAAyL4gUAGBDFCwAwLIoXAGBAFC8AwLDcuHFjUrgk+T8AQI8pXgB2zaefjUZ//GQ0+uiP
|
||||
o9F/3B2NPvxoNPqft0VEZJX58M7+Z+7tP4xGf/jT/mcxADtB8QKwC7KBf/fe/oZ/a4dARETWn3wmpwT/
|
||||
5M8HH9YAbCPFC8A2S+Fy6+P2Br+IiPQnv/9oNPrTpwcf3gBsE8ULwDb67HOFi4jIEKOAAdg6iheAbZPz
|
||||
t7Q25kVEZDjJ4aF7ewcf7AAMmeIFYFtkA90oFxGR7UlGv3z+nwcf8gAMleIFYBtkwzwb6K0NdxERGW7y
|
||||
2Z7DRwEYLMULwNApXUREtjsf3FG+AAyY4gVgyJQuIiK7kZQvDjsCGCTFC8CQOaeLiMjuJEW7E+4CDI7i
|
||||
BWCo/vCn9oa5iIhsb27/4eCXAABDoXgBGKIMN29tkIuIyPbnkz8f/DIAYAgULwBD9B932xvjIiKy/cn5
|
||||
XhxyBDAYiheAofnTp+0NcRER2Z3kcFMABkHxAjA0RruIiIhRLwCDoXgBGJJPP2tvgIuIyO7lj58c/HIA
|
||||
oM8ULwBD8tEf2xvfIiKye7n18cEvBwD6TPECMCS//6i98S0iIrsZhxsB9J7iBWAoHGYkIiLdONwIoPcU
|
||||
LwBDkY3r1ka3iIjsbnIIKgC9pngBGIo7f2hvdIuIyO7m93cPfkkA0FeKF4ChyEkUWxvdIiKyu8llpQHo
|
||||
NcULwFA4sa6IiLTy+X8e/KIAoI8ULwBD0drYFhERUbwA9JriBWAoWhvbIiIiiheAXlO8AAxFa2NbRERE
|
||||
8QLQa4oXgKFobWyLiIgoXgB6TfECMBStjW0RERHFC0CvKV4AhqK1sS0iIqJ4Aeg1xQvAULQ2tkVERBQv
|
||||
AL2meAEYitbGtoiIiOIFoNcULwBD0drYFhERUbwA9JriBWAoWhvbIiIiiheAXlO8AAxFa2NbRERE8QLQ
|
||||
a4oXgKFobWyLiIgoXgB6TfECMBStjW0RERHFC0CvKV4AhqK1sS0iIqJ4Aeg1xQvAULQ2tnchv7u1N/rL
|
||||
Lzx65PdGyV88fGb0pcfOji4+d2n0r7+62Xy8iMi2R/EC0GuKF4ChaG1s70Lq4uWZZy8cyVefPnd43xf+
|
||||
6ouj3/777eY8RES2OYoXgF5TvAAMRWtjexdSipeHHnqoef8v/u39w/vfeudacxoRkW2O4gWg1xQvAEPR
|
||||
2tjehRxXvPzu1mj0wkuXJ79P8m9rGhGRbY7iBaDXFC8AQ9Ha2N6FzFu85P63qxEv139yY3L7cYcf5dww
|
||||
me6n//Le4W1vvXP1yLxKMm3uq6fNba++cWWyvHracl93+pKsVx5XDpvKeWqu/ej6A9OVeUxLPW15zvVt
|
||||
JZl3pi+vR/l6VuppT1pq5Tm2Xssky2i9bsm749vzmpTXZ9Zopsyn9dqVlNdwnmVN+z7ke1heg+70re/v
|
||||
tMzzfc+6ltcsyyrTZvl5LvW0dbrrNe01+814HbKMaal/Zpb1/s66dNd91nq0vge5bZ7nt4tRvAD0muIF
|
||||
YChaG9u7kHkPNco5XsqOXR7zzDcvTB4za0c1ufK970+mKztxZXl/83dfeWDad//pZ5PfW3UJ0botKfNp
|
||||
3VfWufwerP9/8bnvHJk261fu66Z+TernXD8+KfOoX496ma2UaTPfv/7bJ5rzPS55bObVei2n3febm7cm
|
||||
y8t9OXly1jP/5uv6e1yS17Ksb6scmLwuz56fTPOlLz/euW80evHl/dFSWUaWW16Xb/y3bx2ZLt/D3J6d
|
||||
/jJ9Wa/khfF86nm3Un/fy3M7fPzBeyTrm9v/62NnD1+Herq8Bt2iY9bzyP/raZO8TmV+rdSvcZm2+x6e
|
||||
dV/Wr7w2Ofl1/Tzqeef/ub2VTFtPl/nk9vK6lfl357mrUbwA9JriBWAoWhvbu5CyI5od6+5fxbOzm/u6
|
||||
O6OTne0NFi/1jvCD990vZC5++9KR0QXZkf1B5y/9r77+5gPPI/PIzmxur29rFS/1zv6012NaeZS0ljVv
|
||||
8tjMd97iZfIcDkqS7mvz1vj7lJ3t7kmUy7pPW86vb946fP55bH1fKaRSppR5Zh1efOmVyfO9/564X7xk
|
||||
HnXBk+Vn/pm+vr2b+vuQ+dfPISM5ymOz/DLdk09//YH1KutQP771PJIyfff7WgqT7vqW51i/R8q0rfdG
|
||||
6748Nuuf1PPJ/0spVN+Wx+d9W25rpbweL3Ret/L8UsrU0+9iFC8AvaZ4ARiK1sb2LqTeEW3l4fHOXA47
|
||||
qHfyJjvwGyxeyiiMZ765XyLU95Wd5G88e39ExbSUHf6sX73DmXWcp3iZ3Pbs+cnz+eu/2Z++9Xr0pXj5
|
||||
6c9/OfW1mZRZ4/XrrufVH16f3Pbk0+ceeJ2S8nqX519uz/LzunRLjHJfSoKnnv76wdf3vw/dsiIpr1/r
|
||||
eZaU9Wi9xnXKep0580jzvrynsh71+zXFQ6ZvfW8n3/uq7EhSWmZdVlG8vPbGlcltrcPLyvevzD//5utZ
|
||||
xUtZ12nTXPz285P7rzYOTdqlKF4Aek3xAjAUrY3tXUjZEc3OZnbUSjLCJTt+pdzIDnTZodvfQd0/JKSb
|
||||
7KSWndZkWvHSHR2RzFO81I8vBUx935NPf22yvNZ5MbrJ9NmxzPTd2+cpXq7+8N3J19kJLveV16jOPMVL
|
||||
7u8mr2XrXBwleWymm6d4qcuNafPM6JVpj/nnn+8f3lI/hywj34s89zJdef71vMp7qiTftzzn8h44rnjJ
|
||||
crLsVllS7i/fr7L8aSnr3Hr/JeV7VcqpWc8jyfst86vnUcqM3F/fnufYvX3R4qW8V+p1KHntf98vZcpr
|
||||
mNvy9bRSJSnFyrSfl5+Nbz9uHrsQxQtAryleAIaitbG9Cyk7otlpbd2fpGDI75P7O+T3S4j8Bb4cmvTa
|
||||
61cO51WKllbxUnaS89iyjN+Od3AvPre/E1jvaNalxWRUxsv3d/BbxUuZd3n8rJTn0d2hb82nfs75OudK
|
||||
yXPNDnp9X9arPKZknuIljy2vY/e1bJUR5bGZ76y0vmez5pdl3i9E7hdTk9d+vP55rcoIljyvMr/yfS47
|
||||
8OU5z0o5J8w8xcus72vuT0k17f463efYTXlPldE45etZyfzqeeS55Pbue6F1e55vPa9W6vdNnmdrmjrl
|
||||
NZyneMnrmmm6o5JKcoLe3J/pWvfvShQvAL2meAEYitbG9i6k7IjO2mktO5/1Dvm0oqG749otXso0WWb9
|
||||
u6pOvaNZlxZl3uX+7tdZrzLiZdqOZJ1Mnx3KB08KO7t4yf9TEuX1yPOv7+u+Hsm8xUv3vvK47gmBS/LY
|
||||
3J/XMvPuJvfVxUspUaaNeCnzu1+I7L+epZjK653HpzDLfTnMqkybQ5JyX/k+1++DvCbTsr+c/hQv5XCs
|
||||
bvEyz/MoyWuWx9S3JeV7Uk9fipc8v/p7l5Tz8eT/Zfo8zxz+111+nTJt/p/Hzypecl93neqU4uXJp841
|
||||
79+VKF4Aek3xAjAUrY3tXUjZEZ2101p2Rusd8mlFQ+7LtGWHv1W8lGSns4zwyEiJVkFR35ad03qHuVW8
|
||||
lHKhtQPfTXnuZV3r22cVL6WAKOfZqO9r7cCetHgpz2/a+Wry2NzfXf9p9+V7MW09krKeZXll3erypnzd
|
||||
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
|
||||
7Xwizp+yvUkB88mfDz5cAGBzFC8AbJ7CRURWlVwBLVdCA4ANUbwAsFk5JCB/mW7tMImILCu5IppLUAOw
|
||||
AYoXADYjf4FWuIjIuqOAAWDNFC8ArFcKlwz9b+0QiYisKwoYANZE8QLAeihcRKSPUcAAsGKKFwBWS+Ei
|
||||
IkPI3XsKGABWQvECwGooXERkaMl5p3KFNQUMAEukeAFgubLDkqH7rZ0aEZEhJAVMrrgGAEugeAFgOfb2
|
||||
RqOP77V3YkREhhgFDABLoHgB4HRSuGRo/od32jsuIiJDjwIGgFNQvABwMgqX7cq7P7kxuvjcpdEzz16Y
|
||||
5NU3roz+9Vc3D+/P/1946fLk39/evD164eXLk+nymLfeuXZkXnV++++3J/Mq8y3zaE17fbwOb71ztZnc
|
||||
V0977UfXJ/Oqb6vvy2Na99XPM/9255tk/fL4zKd7X8lP/+W9yTT5t9yWr6etU9J6HjKspID5P359c3T5
|
||||
8mURERlobty4cbA1uzaKFwAWo3DZrvzu1mj04suXD38n/+UXHh39xcNnJv9/6KGHDqe78r3vT25LYZH7
|
||||
S8rj/uEfv3Nkvskv/u39yfxy/5ceOzv66799YvL/M2ceeaCA+N2tvcP7W/nGs996YNp6/Y67L7dn3TOv
|
||||
rHemKeuWEqme9t1/+tnk9swjxVF9X1Kva1mv3Hbx289PHtMqV67+8Pr+smYUMzKcpJx78qmvTb6nIiIy
|
||||
rKR8WTPFCwCLcR6X7Uldujz25cePjN4oI1zK16V4efjMI6MfVCNBSrmSwuG1N64c3p4iIrdn+rqIKNOn
|
||||
fKlLjVJm/M3ffeXwtnJ7lnua4qV+nvVzyrStsuTV19+cTNudviTPodz/1NNfP7y9FDYXnztaQmU5zzx7
|
||||
frKcaaN9ZHjJ9zKFYnkviIjIMKJ4AWAQXLloO5JCICXIF/7qi8cWAileuuVKSSkiMp9yWxnh8Q+dEiIp
|
||||
86rLjrIuqyle9iajXOr1K/n1zVuT++6PXBlNypYs85lvnm8WRClRsq7Z6a7nWZaTx5Tbkiwj86tLGhlu
|
||||
PrgzGv2f/9ft0XffvHJk6LqIiPQ3Tzxxf1Rtvl4zxQsAJ6eAGXbKCI261JiWUpa0zudSlx0pcPJ1GUly
|
||||
9UfXJ7fVyXK788pjUmZ01yW3d9exXl497bT77o9EufTAupQROKXwyeOf+eaFyeNzX3c9U6JkFM/b49sy
|
||||
XV2yTEbWvHR58pi6VCqv3axzxkj/k8Ilh1nmcEsAhiVlS+kfFC8ADJICZphZ5LwjxxUvpazI4Url6/p3
|
||||
fTfdeeUxuX2R4qWeXzeZf5m+PM9ZqYuXzPtLX3788P/1KJzyOqS0KeVSPSKmjP4phxuVebRG28gwonAB
|
||||
GD7FyzgAbIdPPxuNbn3c3nmR/mWZxcuTT39tcn9dvOTrjPzojjIpqQuLn/78l811ybxy+7TiJdN3kxEs
|
||||
WXaZ/v7zfKW5HklZl8w7hxCVsqWMzsnzyH31qJycCyb35fFlWWXdykiYUsR0CyXpfxQuANtD8TIOANsl
|
||||
BcyHH7V3ZqQ/Kece6Z5XpZXjipdu2VFKidb0raQcKQVHfXvmnXVsFS/18mbdV8qPeZ5nd3n5OudtefLp
|
||||
c0dKmNw37RCi8twzXT1Cpp5G+p279xQuANtE8TIOANvp3qcKmD6nLilyzpLWNCUpEPI7u1VevPrG/lWA
|
||||
6nKklDrznLg365ET1rYOx+kWIeW2RYqX+rZusdNNWe+MnMnX5bwtDz98ZvTVp88dWcfWuWqSzCNlTQ5F
|
||||
qkfPSP+TQyZz6CQA20XxMg4A200B09+Uk8vm9/Ezz16YjN5IXn3jyuipv79/FZ5SvKRQyPS5/613rk5O
|
||||
WJvbc8LZbsHy2uvfndxXpk/pUeadMiLT59Cki889P5kuJUXmWacsN8VJvs4hQYsWL8k///yXk3XPvOrn
|
||||
mXnm66xTpsshT3lsffWmUqTk9rqgKiNpSklTUtYh93UfI/1MDpHMSD0AtpPiZRwAdoMCpp9JgfDkU187
|
||||
8rs5qUdqlENmMrojIznq6TIKZNpIkrffuXpY7NTJvH978/aktOjeNy1ZfpZzkuIlyfMshUidlEY/+NH+
|
||||
4ULdw4mSzDOvT27vns8lj2+dv6VcSclJdfsdhQvAblC8jAPAblHA9DMZTZLCIaNQ6hPfJnXxUk8777lL
|
||||
Ms/uvHMYT4qXbqHRSll+XYicNGXdF1n/RVOKl1YpI5uPwgVgtyhexgFg9+Q8CrliiAJmGOkWL8vIIsXL
|
||||
tJPv9jEZCZNz1szzvGS9UbgA7CbFi+IFYKeVAqa1kyT9ySqKl+S116/MdQLenHtl1iFNfcoiV1GS9SQF
|
||||
r8IFYHcpXsYBgBQwuaJIa6dJNp9VFS/bmPJaOanu5pPCJYc2ArDbFC+KFwAqCph+JudF6Z73RdrxWm0+
|
||||
H9zZH0m3t3fwwQLATlO8KF4AaFDAiMiiUbgA0KJ4UbwAMIMCRkSOi8IFgFkUL4oXAOaQE2PmiiStnS4R
|
||||
2c0oXACYh+JF8QLAAlLAuAS1iNy9p3ABYD6KF8ULACeQK5UoYER2Lzn0MIcgAsC8FC+KFwBOQQEjfU6u
|
||||
bvTWO1dHzzx7YfTXf/vEJK++cWX0r7+62ZxepieHGmbEGwAsSvGieAFgCRQw0rf87tbe6OK3n59s6/zl
|
||||
Fx6dlC75N19/4a++6JLTc0bhAsBpKV7GAYBlUcBIn3L9JzcmKV+XMuahhx4avfbGlSPTytEoXABYFsWL
|
||||
4gWAJcv5H3KlEwWM9DHv/tPPJts/L7x0uXn/rkfhAsCyKV7GAYBVKAVMa+dOZFN59Y03JyNe6pEwsl+U
|
||||
KlwAWAXFi+IFgBVLAZMrobR29nYtOa/Iu+Md/ovPXZqc8DV5651rM0/2mpPDTkvrPCWZ1wsvXz4y/+40
|
||||
ybUfXZ86j5Lcn+la982znMk0L10e/fRf3mveVy8/RUh5XtOSx2S6afNMZj2vqz98d7Ltc/G55x+4b1eT
|
||||
wiWHCALAqihexgGAddj1AqY+2WuSE73+xcNnJv/PyV5bRcIv/u39w+m7aY3ayGiOzDP50mNnJyeUzbTd
|
||||
k8lmXco8pp3r5Mr3vj+Z5syZRx64L8vJfVlOlpFltZaTeWQZrVKm3JfnkPV55psXJvOYljKfWYcKZT6T
|
||||
5/7lxzu3j0Yvvry/0ad02c8Hd/ZHpO3tHfyAAsCKKF7GAYB12uUC5gc/uv5AWfLW974/KQtScHRHaaR4
|
||||
aZUjdWlRT5vf6yk/MjKk3J755/aLz33n8LZf37x1uB3QLSmSFBjlCkBZTr1e//zzX05uf2z8uPr2117/
|
||||
7uT2uhCZt3jp3leKob/5u688cF/WPa9Xnmf3vjLPt6vlTUqdZy9Mbn/tjTePTL+LUbgAsG6Kl3EAYBMc
|
||||
gnQ/00Zx5PZWcdEtLfbLhfOT2+rSpdyXUSn1yJWfHpQnX3363JH5lJT1ySiUep6Z15NPf23u5ayieMl9
|
||||
5cpE9WPL8rvrdvWH1ye31WXMLkbhAsCmKF7GAYBNygk9cyWV1s7iriSlQesQmVK8dMuJVvFSRoGkdOgm
|
||||
55TJ9GWESplvzjeTsqIuODKvlDi5vSynnOdl1nJ+8av3D8ufMq9VFC9Jq6gqI36+8ey3jkz76uv7J9Od
|
||||
dk6YbY/CBYBNU7yMAwB9kAJmFy5BnZIih/F0k9/J3cNnppUTreKl/t3eSqYvj6/LiPL/UsqUw5syQiQj
|
||||
Y/L/UpwsupysZ2uakkx7kuIl9+e8MvXrNe21yvMpr3EOOfqHf7x/yNW25+49hQsAm6d4GQcA+iRXWNnm
|
||||
AuY3/3571L1aT0qD1nlLSimSsqa+vVW8lBEz9SiUbvanHU1GiuTxKVvKOVNyW+aTk8+W9SijSMrIklKI
|
||||
zLOcpBQvTz59bjKPOtMOc0qOL15GoxfH8yiPz/QZodN9/UqyTuVqR7sw8iWH8OVQPgDoA8XLOADQR9te
|
||||
wNQpBUfrkJ+UC/W0Sat4KedXqU9428pkvgfnbtn/er/EyGN/c/PWZGRIOVynFCD117l/nuUkZT2XfahR
|
||||
Uk4QnBKnHqXTmnZXkkP2MnIMAPpE8TIOAPTZthcwkyLkoGDpXo0nJUfrqkMPFi/75Ul+rx93KE3mm5Km
|
||||
nm852W4O38l8y6iVsg5PPf31g6/nX06yyuKlPI+sXznZbj3apk5uf/WNK4fnqtm2KFwA6DPFyzgAMATb
|
||||
UMBk5z/nGckhLykB8nXKg/w+/sb49jJd7s8hP7k9IzrqeSSt0iJFRIqTPCbzzLxz//68Lh0WLWW67uia
|
||||
sh7d27vnUslIk7KcHELUXU4paZJVFi9JDsXKdDlUqntS3ZLMK8VMpsvy5hmpM5QoXAAYAsXLOAAwFDlv
|
||||
Ra7QMtQC5r+//uZkhEb9ezilQUaRlGlSFJRpHjs4l0o9j2RaaZFS5Jlvnp/Ms7uMp/6+jFo5evhQSbnS
|
||||
UXfUTS4fXV8iOinLqZfRXU6y6uKlnJ9m2nySepTOtHPADC0KFwCGRPEyDgAMTSlgWjulQ0jKlBQFsw6N
|
||||
mXbfvMlJZMsyVjnKY13LaaWUVPMUKlnHoY92SeGocAFgaBQvihcABiwFTK7g0tpJle1PGTWz7SfVTeGS
|
||||
Q+0AYIgUL4oXALaAAmb3ktEuOS9NipfTjg7qaz64sz+ya2/v4I0OAAOkeFG8ALBFFDC7k3IJ7mkn1R1y
|
||||
FC4AbBPFyzgAsG0UMNufnK9lm65QlChcANhGihfFCwBbLCcizRVgWju5In2JwgWAbaZ4UbwAsANSwAz1
|
||||
EtSy3bl7T+ECwHZTvCheANghuTKMAkb6kBwKl0PiAGDbKV4ULwDsIAWMbCo59C0jsABgVyheFC8A7DAF
|
||||
jKwrChcAdpXiRfECAAoYWVkULgDsOsWL4gUAJnK+jVxZRgEjy4jCBQD2KV4ULwBwRClgWjvTIsclxZ3C
|
||||
BQDuU7woXgCgKQVMrjzT2rkW6SaFSw5ZAwCOUrwoXgBgJgWMzMoHd/ZHSO3tHbxhAIAjFC+KFwCYiwJG
|
||||
6ihcAGA+ihfFCwAsRAGz21G4AMBiFC+KFwA4kZxANVeuae2cy/ZF4QIAJ6N4UbwAwKmkgHEJ6u3O3XsK
|
||||
FwA4KcWL4gUAliJXtFHAbFdySFkOLQMATk7xongBgKVSwAw/OYQsI5kAgNNTvCheAGAlFDDDi8IFAJZP
|
||||
8aJ4AYCVUsD0PwoXAFgdxYviBQBWLucJyRVxFDD9isIFAFZP8aJ4AYC1KQVMqwSQ9SUFmMIFANZD8aJ4
|
||||
AYC1SwGTK+a0SgFZXVK45NAvAGB9FC+KFwDYGAXMevLBnf2RRnt7By88ALA2ihfFCwBsnAJmNVG4AMDm
|
||||
KV4ULwDQGwqY5UThAgD9oXhRvABA73z2+f4Vd1qlgkyPwgUA+kfxongBgN7KlXdcgnq+3L2ncAGAPlK8
|
||||
KF4AoPdyJR4FTDs5NCuHaAEA/aR4UbwAwGAoYO4nh2JlRBAA0G+KF8ULAAzOLhcwChcAGBbFi+IFAAZr
|
||||
lwoYhQsADJPiRfECAIOWE8rmSj7bWsAoXABg2BQvihcA2Ao5wWwKmFZ5McSkSFK4AMDwKV4ULwCwVVLA
|
||||
5Eo/rTJjCEnhkkOoAIDtoHhRvADAVhpaAfPBnf0ROzl0CgDYHooXxQsAbLW+FzAKFwDYbooXxQsA7IS+
|
||||
FTAKFwDYDYoXxQsA7JTPPt+/UlCrDFlHFC4AsFsUL4oXANhJuWLQui9BffeewgUAdo3iRfECADstVxBa
|
||||
dQGTQ5xyqBMAsHsUL4oXAGBsFQVMDmnKyBoAYHcpXhQvAEBlGQWMwgUAKBQvihcAoOEkBYzCBQDoUrwo
|
||||
XgCAKXIi3FyB6LgCRuECAEyjeFG8AADHyIlxU8D87tZo9MJL9zeeXv5fLitcAICZFC/jAADM47PPR6P/
|
||||
5X/d6MYTADAwipdxAADmteGNJwBgYBQv4wAAzEvxAgAsQvEyDgDAvBQvAMAiFC/jAADMS/ECACxC8TIO
|
||||
AMC8FC8AwCIUL+MAAMxL8QIALELxMg4AwLwULwDAIhQv4wAAzEvxAgAsQvEyDgDAvBQvAMAiFC/jAADM
|
||||
S/ECACxC8TIOAMC81rXxdPPmzdGNGzcmyf8XVT/+vffeO7gVAFg3xcs4AADzWtfG02mXUz/+W9/61sGt
|
||||
AMC6rWvbYQrFCwAwLOvaeDrtcurHK14AYHPWte0wheIFABiWdW08nXY59eMVLwCwOevadphC8QIADMu6
|
||||
Np5Ou5z68YoXANicdW07TKF4AQCGZV0bT6ddTv14xQsAbM66th2mULwAAMOyro2n0y6nfrziBQA2Z13b
|
||||
DlMoXgCAYVnXxtNpl1M/fpHi5fbt25PLT7sMNQAsx7q2HaZQvAAAw7KujafTLqd+/DzFy9WrV0dPPPHE
|
||||
4WNKzpw5M7pw4cLo5s2bB1Ped+XKldGjjz66cLIcANgV69p2mELxAgAMy7o2nk67nPrxs4qXW7duNQuX
|
||||
bh555JEHRsDUy1gkKV8AYFec9nf6KSleAIBhWdfG02mXUz9+WvGyt7c3Onfu3OF0X/ziFyeHGOVwo8go
|
||||
l1deeeXw/pQv5b5IEZORMt2kWCmPyaiY7v3Xr18/mAMAbL91bTtMoXgBAIZlXRtP9XLOnj07OdxnkeQx
|
||||
5fHTipfvf//7h9OkdKlLldp3v/vdw+mOe84pc+oRNK1DlABgl6xr22EKxQsAMCzr2niql3PatIqXFCRl
|
||||
ZMpDDz00syCpy5QUNLMoXgDgKMXLOAAA89qW4uWXv/zl4f1f//rXD25tS5ny/PPPT6ZNSTNtZEwoXgDg
|
||||
KMXLOAAA89pE8XKS5dSPbxUvOc9K7kuRkvOwHKcclrTI6JhE8QLArlvXtsMUihcAYFjWtfF02uXUj28V
|
||||
L/X9uWR0udRzSW4r99dRvADAYk77O/2UFC8AwLCsa+PptMupH39c8bJIFC8AsJjT/k4/JcULADAs69p4
|
||||
Ou1y6sfPKl5SpLz55puTgmTezKJ4AYCjTvs7/ZQULwDAsKxr4+m0y6kf3ype6ktJf+c73zm49fQULwBw
|
||||
1Lq2HaZQvAAAw7KujafTLqd+fKt4ef/99w/v/8pXvnJw6+kpXgDgqHVtO0yheAEAhmVdG0+nXU79+Fbx
|
||||
UhckOdzoxo0bB/ecjuIFAI5a17bDFIoXAGBY1rXxdNrl1I9vFS9RH270yCOPjN57772De6ZzjhcAWMy6
|
||||
th2mULwAAMOyro2n0y6nfvy04iUlyfnz5w+nSy5cuDC6fv36pIRJaZJkNMyVK1cmhcpxhyUpXgDgqHVt
|
||||
O0yheAEAhmVdG0+nXU79+GnFS6Qoef755w+nPS6PP/74wSPbFC8AcNS6th2mULwAAMOyro2n0y6nfvys
|
||||
4qW4evXqkcKkldx/7dq1g0e0KV4A4Kh1bTtMoXgBAIZlwxtPK3f79u3JoUUpYkpy2FFuBwAWp3gZBwBg
|
||||
XttevAAAy6V4GQcAYF6KFwBgEYqXcQAA5qV4AQAWoXgZBwBgXooXAGARipdxAADmpXgBABaheBkHAGBe
|
||||
ihcAYBGKl3EAAOaleAEAFqF4GQcA4Dh7e6PRx/dGo//by/c3nv63/03xAgDMpngZBwBglj99Ohr9/qPR
|
||||
6H/eHo2u/+TG6IWXLk+S/3/0x9Ho8/88mBAAoEPxongBAKb49LP7hctxUcAAAC2KF8ULANCRwuXWx+2C
|
||||
5bgoYACAmuJF8QIAHDhN4dKNAgYACMWL4gUAdt4yC5du/vAnBQwA7DLFi+IFAHbWKguXOjlPjAIGAHaT
|
||||
4kXxAgA7JwVIDgVqlSSrTAqYXCEJANgdihfFCwDsjL290ejje+1SZJ1RwADA7lC8KF4AYOulcMmhPh/e
|
||||
aRchm4oCBgC2n+JF8QIAW6uvhUs3ChgA2F6KF8ULAGydoRQu3aSAyQl/AYDtoXhRvADA1hhq4dJNrrSk
|
||||
gAGA7aB4UbwAwFbIoToZMdIqMoaaXHnJJagBYNgUL4oXABi0jAzZtsKlGwUMAAyX4kXxAgCDlMIlh+S0
|
||||
ioptjQIGAIZH8aJ4AYBB2cXCpRsFDAAMh+JF8QIAg6BweTA5kbACBgD6TfGieAGAXlO4zE7Ob6OAAYD+
|
||||
UrwoXgCgl1Ik5JCaVtkgDyYFTK7sBAD0i+JF8QIAvbK3Nxp9fK9dLsjxUcAAQL8oXhQvANALKVxyyMyH
|
||||
d9qFgiwWBQwA9IPiRfECABulcFltFDAAsFmKF8ULAGyEwmW9SQGTExUDAOuleFG8AMBaKVw2m1whSgED
|
||||
AOujeFG8AMDa5JCXjLxoFQKy3uSKUS5BDQCrp3hRvADAymWEhcKln1HAAMBqKV4ULwCwMilccmhLa4df
|
||||
+hUFDACshuJF8QIAS6dwGW4UMACwXIoXxQsALI3CZXuSEyArYADg9BQvihcAODWFy3Ym5+VRwADA6She
|
||||
FC8AcGLZIc+hKa2ddtmepIDJFakAgMUpXhQv7LD33ntvdOPGjRMH2F17e6PRx/faO+myvVHAbJ+bN28e
|
||||
/l7P/xdVPz7bFQA8SPGieGGHPfHEE0d+FhYNsHtSuOTQkw/vtHfMZTeigNkep90ZqB9/4cKFg1sBqCle
|
||||
xoFddfbs2SM/C4sG2B0KF2lFATN8iheA1VO8jAO76tFHH538DJw5c2Z09erVY/Pmm2/62YEdo3CReZIC
|
||||
JidYZngULwCrp3gZB3ZV+RlIATOPHMftZwd2g8JFTpJc2UoBMyyKF4DVU7yMA7uq/AzkXC/zULzAbsih
|
||||
IxnB0NqxFpknudKVS1APg+IFYPUUL+PALqpLFMULEBmpoHCRZUYB03+KF4DVU7yMA7sol3wsPwPnzp07
|
||||
uHW2kxYvt2/fnjzW5Sahn1K45BCR1o6zyDKigOmvTRUv2TbI9oDtAmAXKF7GgV2UDZ3yMzDvhtIixUvm
|
||||
f+nSpcMT+LaS5WaewGYoXGTdUcD0z7qLl5ysPyNty2NKcqL/adsFV65cmWxPLJp5R/QCrJriZRzYRXXx
|
||||
Mu8P/7zFSzaQ6ulmJRtGyhdYL4WLbDo5cbMCph9OuzNQP35W8ZIRLq3CpZsUMN0RMPUyFkm2MQD64LSf
|
||||
taekeIFNyV+cFv3hn7d4KfMuf71KEZOiJ4/Pv+UvV2U+/iIF66FwkT4l5xNSwGzeaXcG6sfPKl5yWHOZ
|
||||
LtsA2R5IGRPZPnjllVcO78/2Q7kvUsRk26Kbelsi2xbd+69fv34wB4DNOu1n7SkpXmBT6lEp165dO7h1
|
||||
tnmLl2xMJbNkXtmwKvOqN7CA5cqObQ7xaO38imw6KWByJS02o94ZOHv27KQ8WSR5THl8vm5JCVKmSVky
|
||||
7Xf+m2++eTjdPDsm9QiabFcA9JXiZRzYRc8///zhz8C8fxGat3iZV70OxxU1wOL29kajj++1d3ZF+hYF
|
||||
zGbUOwOnzbTipR6ZclxBUsqUPOY4ihdgKBQv48Au+trXvnb4MzBv6bHs4qX+C5jiBZYnhUsO4fjwTnsH
|
||||
V6TPUcCs16qLlxwmVO6f5yqK9R9ljhsNq3gBhkLxMg7sonpo8LyH+Zy2eMlyynHaueJRvQ6KFzg9hYts
|
||||
UxQw63HanYH68a3i5cc//vHh/TnM+Tj1H2XmHR0zz7QAm6R4GQd2UXn/5zwr81q0eEnRkg2obIjVw4xb
|
||||
UbzAySlcZJuTAiYnhmY1Vl281PdnmyPbA3Xq8711o3gBtsVpP2tPSfECm5CSo7z/s9Eyr0WKl5w3prUx
|
||||
lY2sDDXOX70y6qXcrniBxSlcZJeSK3IpYJbvtDsD9eOPK14WjeIF2Ban/aw9JcULbEJ9RaNFfvDnLV5S
|
||||
utTTZUMsxUr3kKb6A0jxAovJIRgZCdDaQRXZ5uQKXS5BvTyn3RmoH39c8ZKrFmVbYt4cR/ECDMVpP2tP
|
||||
SfECm1CfWyXnXJlXNmrm+dnJqJYyTQ41mqb+AFK8wHzyF3+Fi4gCZllOuzNQP75VvNTnbMmJc5dJ8QIM
|
||||
xWk/a09J8QLrVh9mlIJkEfMUL/U0xx3GVH8AKV5gthQuOdSitQMqsstRwJzOaXcG6se3ipdFtgsWpXgB
|
||||
huK0n7WnpHiBdcv5Vcp7/9q1awe3zmee4qW+bGRrA6zIvOqRMYoXaFO4iMwXBczJrLp4ibogWebve8UL
|
||||
MBSKl3FgV9Tndll0tEvMU7zU00xbRs71Uh/ulChe4CiFi8jJkhNOK2Dmt47ipT7cKCfen+cw53mKFMUL
|
||||
MBSKl3Fgm6XkyIZQUl9lKBsr5fZ5U4+WSer76hPn1qVK7isbWJkm5U8Z6VJPp3iBfQoXkdMn50FSwMxn
|
||||
HcVLnD9//nC6Mm1Oxp9thJQmSbYFsp2QbZTkOIoXYCgUL+PANsuGSP1+X1XqDZ5sOLWmqfPKK68c+QuY
|
||||
4oVdlx3EHCrR2okUkZMlBUyuAMZ06ypeIifXLdMel/xx5jiKF2AoFC/jwDbbRPES+StWfQ6XkmwklZKl
|
||||
LmgUL+yqvb3R6ON77Z1GEVlOFDDTrbN4ifzRpS5MWsn985yHTvECDIXiZRzYZnXxMs8G0SIyvzLvaRs8
|
||||
KVRSwiQ2iuC+FC45FOLDO+0dxXXmX391c3T9J+Of1XF++++3m9PMSh7/0395b3TtR9dHb71zdfTCS5cn
|
||||
X7emFdlkFDD9kcOPs42QIqYkhx3Vhy4DbAvFyziwzTZdvABH9aVw+cW/vT/66tPnRn/x8P1zP5V86bGz
|
||||
o7feudZ8XMnvbo1GL7x8efSXX3hwZNtDDz107ONFNhkFDADrpHgZB7ZZXbws+4dc8QLz69MIl4xKKYXL
|
||||
X//tE6OL3740ue21N66Mnvnm/RNg/s3ffaU5AuZ3t/YmpU2myXzK45OMmskImJOMnBFZd1LAfPLngx9S
|
||||
AFgRxcs4sM0UL7BZfSpckqs/fHfyM/vwmUdGb79ztTlNRsNk1EumS/lS35eRLi++vL/xkEOK6vtEhppc
|
||||
SSxXFAOAVVC8jAPbbJXFS/0BoniBB+VQhvxFvbWjt4lkpEoODcqhQK+98WZzmpJf37x1OG1GsZTbyzy+
|
||||
8FdfPDK9yDYkVxZzCWoAlk3xMg5ss3LyumTZ5UjmV+YN3Je/nPepcCm5+sPrk9973VEs0/LuP/3sgel/
|
||||
+vNfHhQ3VyZf55Cid39yY3KYUU6u2zrEKIceZXTM5BCkm7cn54Z55tkLo4vP5RCl9rlgMp/MM9Nk2uTV
|
||||
8TIzj+60WX49Xf5fl0V1Mt/Mp0xb1qs7XZb9dmPdfnOwXtPmX5J5ltekdX+SExBnmmknIq6f17TnlPlP
|
||||
G3mU+7rLnzV9N3mdWq9Ba75J1i/Pp/Ue6D6Xvp8DSAEDwDIpXsYBgGVI4ZJDFlo7cptORqo88+z5SWnS
|
||||
2pluJaNecg6XPKbsTKe8KaNgXn3jzQdOzpvRMN35X/ne9yf3ZYc/05eUx3zjv33ryPQ51Kncl+kyzzJ9
|
||||
RtqUomTynL55/5DHerokBU93vpkm9+VQqpzfJtN3X5MyqqdVUJV1+8azR9e5m1JynTnzSLOIyDKy/Na8
|
||||
fjN+3ct9WY/8v6x3/ZzKPLL+9ePr++qRSbOm7ybTZnkPHmr24HzL7fleZN7dIqscmpbXun4u+X89XR+j
|
||||
gAFgGRQv4wDAafS5cCmpd7qPG61RksekoCg705MrGb20v+GQkQvZgc7IlxQLyVvf+/5hkVGP4ijFy/55
|
||||
Za4dFhH1uWTqURhZ7osvvXJkPcttmfbic985vP0HP7r+wPPJfLMedemRx2d9s271uW3KOrSmPU3x8urr
|
||||
b06m6z63kjKf5Kmnv354e5Z98bnnH3hcbi/FWXm+uW1akVLu23TxkhEwmc9Xnzp3+Pom5XvZem36GAUM
|
||||
AKeheBkHAE5iCIVLSXaM6xKlNU039Y56dvbr4qUeeVKnHJ5UFxMpXjKPcnhSnbok6d7XTdYn07YKkTqZ
|
||||
7smnvzZZZtnZb61XSe7LtOXwlzz+NMVLHn/x2/vlSQqH7nPL/SlRsox8T7705ccP7yvzby07I5ByXyme
|
||||
Mp++Fy95fg+Pv2et90ruy7y6t/c5d+8pYABYnOJlHABYxJAKl5J6p3vaOUW6yWNKWZPHlOIlX087R0ce
|
||||
k3Kk3jEvxUvrMZm+lCStnfMUJ+VcKDk3yDzFy/84KFkyciRfd9c7y6lTSpky+iLrdNriJc8phUspdepR
|
||||
OZlHbsvonzJdua8covTCy688sJ55XNarLDvLmVaklPtaxUvm302+z/V5WzJtbj9N8ZLz4WQemb77XJI8
|
||||
9zyfej5DSM7flCuVKWAAmJfiZRwAmEd2tHLIQWtnrO+pd4xbI09aKTvfeUwZOZJDaPL1rOIlO9N1GXBc
|
||||
8ZLRIbm/Lif++ee/nOywp2jJOuTfrz59bvL/VhmQZSZl+qf+/ujhO3nuuX1Wllm8ZN0zkqX8v55XeT1+
|
||||
8W83D78n5fUth2XNSrd4aU1TMm3ES4qsktdev3L4PasPY8rjT1O85N/u+nST5dbzGVJSwOTKZQBwHMXL
|
||||
OAAwy97eaPTxvfbO15BSRna0CoVWSglQT19GZNTnWamTHfDsTNejOBYtXlJupEDJfFISlR35aWVAclgi
|
||||
jKd/5pvnJ9OV8qVeRkZ1lBEX3ZTyozyH1nLmLV7qx9ejXsp9eXw9EifLz7TltcrlvrvrV1KvZyleMp9u
|
||||
spxpxUu5raT7fc20rde6zGOR4uXJp84dWf9u6vkMMQoYAI6jeBkHAFpSuOSQgg/vtHe4hpbsHGdnPDvH
|
||||
rcsB18mVdcq09RV/ypWOpp2TpRQT9Q77ccVLOZwphUJdRtQjYMq03Xm3knm82JnH/ULj+NE+5XU6TfGS
|
||||
aeoSI69Zyp9yVahyuFdZr7KeuVx3/dhZyXynFSnlvnmLl7LcejRN67Vuzbfc3i1eklKg1dNuaxQwAEyj
|
||||
eBkHAGrbVrjUKaNeUpxMO1wo5ULKkEzXLRj2d7D3r67TLTEm9zUuWZ1yIfNqFRm5JHV9X+ZRj04p003K
|
||||
lIPLEtfzKaM/uimHRJV5lMIohcFxoyyyDqcpXso0KZDydSmCcpLZvK71yXRLEVO+F1l2fV6dMl0rmXZZ
|
||||
xUu3mMq0re9Za77l9lbxku/l5LXoXNp7m6OAAaBL8TIOAMQ2Fy51ctnn8jswO/kpCHKYzqs5TOfZC5OC
|
||||
Ivdlp7tVbKTESDGRaTJ9Rmtc++H1yQ55eVw9fSleyuiHLCfLy8lyc3t3Z72UQ499+fH9ef/o+uFVgDKP
|
||||
Mv9SAjz59LnJPDNd5pud/EyXy1fX833t9e9O5pv55Dln+iSPzXzKqJPMN9Mk5RCmklcP5pHp83Xr9SmH
|
||||
FtXFVrkiUW6vS6luSZPk/Da5LcnrW69nznNTlzRZj8yzPLakVZDU09fPqXwf6lIq0+a21muQ98x+cXf0
|
||||
9jLv+jXPCXYzj/JcMl1e5/yb5aaYKdNuW1LAfPLngw8XAHaa4mUcAHbbrhQudbLDn5ErpWSpkx3ouhxo
|
||||
pTy+flzm9eJLrzxQRpTRFCkMcn/9mJQjpfAoyU5/d7qULVlmduLr4iU77mXHvk4pber5Jm+Pd/inTV+X
|
||||
Dq1puslzai2jjGKp7yulR3ekSClkuiNo8lwzfXeZeb1+8KP9UTxlnllW/dj6vlbx0p1nKbPqETaZtjvd
|
||||
POkWL0m+7r5Xkiw357Kpp93G5ApouRIaALtL8TIOALsrhwTkL9OtHaZdSXa4UxLk32mH7kxLpj/usXXx
|
||||
kq/rx3SnrVOmm2ed6nl2d/xbqaefZ/7dlOeUebTuX1bKeibzPK8+Z5uey0mSK6K5BDXAblK8KF6AU7h5
|
||||
8+bo+vXrB18xJPkL9K4XLutKt3jZhrRGtYjMEwUMwO5RvChegAXduHFj8oF59uz+yUefeOKJg3sYghQu
|
||||
Gfrf2iGS1WQbi5dcBSiH8She5KRRwADsDsXLOACz3L59e1K2XLp0aXTmzIPnw1C8DIPCZXPZxuJFZFlR
|
||||
wABsP8XLOABdKVuuXr06unDhQrNsqaN46TeFy+aTc3uc5DwqIruUu/cUMADbSvEyDkCkbLly5cqkSKk/
|
||||
I46L4qWfFC4iMrTkvFO5wpoCBmC7KF7GAXZXOV/LomVLHcVLv2SHJUP3Wzs1IiJDSAqYXHENgO2geBkH
|
||||
2C3lfC2PPvrokc+Ck0bx0g97e6PRx/faOzEiIkOMAgZgOyhexgG2Ww4hyiWf5zlfy0mieNmsFC4Zmv/h
|
||||
nfaOi4jI0KOAARg2xcs4MK9yWIoMJylFVlG21MnImdayZbX57nevjP7P/+u2wkVEdiYpYP6PX99sfiaK
|
||||
SH+SfQao5X1R9h3y/zVTvDAs9Q+MiGwmf/HwmdGLL73iKjkisrP511/dHD351Nean5EisvlsYMeanlO8
|
||||
jAPzUryIbDYPPfTQ6LU3rjR3REREdikpX7702NnmZ6WIbDaKF7oUL+PAvOofmBzCkq+l3zl37tyRn/dV
|
||||
xKFG68//+/vXXLlIRHYyH9wZTQ6z/O6bV5qfjyKymWTfoGwb5muo5T2xwfeH4oVh2fAPDCdUTq57/vz5
|
||||
pV3JqI6T626OS0eLyK4khUtOJJ4TigP9Yz+BWTb8/lC8MCw+ULdDTni2zBJG8bJ5ChgR2dYoXGAY7Ccw
|
||||
y4bfH4oXhsUH6vZ57733RleuXBmdPXvy4+QVL/3x6Wej0a2P2zsvMoy8+5Mbo4vPXRo98+yFSV5948rk
|
||||
XBbl/vz/hZcuT/797c3boxdevjyZLo95651rR+ZVJydjzrzKfMs8WtNeH6/DW+9cbSb3dafNvFone772
|
||||
o+uTx3RvT+rnmX8zbXeaWevRXfdFnp8MIwoXGBb7Ccyy4feH4oVh8YG63W7evDm6evXqkWN054nipX9S
|
||||
wHz4UXtnRvqZ390ajV58+f5nbK5eleT/Oalyme7df/rZ5LYUC2WaMl3yjf/2rSPzTX7xb++P/vIL+yPc
|
||||
cjLSv/7bJyaPyXzf7pQ1v7u1N3ry6elXi/mbv/vKkWmf+eaFyXy6JUfuy3LqdS+3pxjJvLIOmaas2z/8
|
||||
43eOTjeed73sksyzLplefePNw9cg8yrzS1JMlelkOLl7T+ECQ2M/gVk2/P5QvDAsPlB3R84LkxImJ+c9
|
||||
c+b+Tl0ripf+uvepAmYoufK9709+nr7wV188MqokhcZrb7x5+HUpXh4+88ikNCkjTVKulCu8pJQp06fA
|
||||
SBGRsqKeb5n+zHg+9WiVUph86cuPH95Wbs+8T1O81OXSxeeePzLtxW8/f2QdZ827zv84eD26r1t5fnm8
|
||||
K4ENJzlkModOAsNjP4FZNvz+ULwwLD5Qd9es88IoXvpPAdPvpGRIOZIS5LjDY1K8TCsTfn3z1mTkR+ZT
|
||||
bitFzTeefXAkzNUfXp/Mqx49UgqTumApt2c+pyte9p9nSpJ62qSse1nPWfMuqZfRmqb1ekg/k0MkM1IP
|
||||
GC77Ccyy4feH4oVh8YFKpIS5dOnS4XlhFC/DoYDpZ376819OfpaeevrrzfvrlOKldT6XblmRESYZ/VKm
|
||||
z211WiVOKUdWUbyU55lDjbrrUkaolPnPmndJipXuOtWZZx6y2ShcYHvYT2CWDb8/FC8Miw9UunJemBQx
|
||||
DIsCpl8po1LqQ4SmZXbxcr9oyWE3pXgon9utZNpu8VKPPKlvz/St4qU7zzqZf5m+PM9ZWaR4SVmTx7RG
|
||||
8yTd16M1jWwmChfYPvYTmGXD7w/FC8PiAxW2R86jkCuGKGA2n1JIXHzu/sllp2V28XL0XCl1eZGvy+iS
|
||||
bupzvJRRJN0S6LjiJcvNY+qUc8uU6Q+f57cvNdejpJ53Hl9u6+b44uXBc8fIZqNwge1lP4FZNvz+ULww
|
||||
LD5QYfuUAqa1kyTryXGHzNQ5rngpJ5QtZcqrr785+XreE8yW+Xcv7zyreMn03XIk93UPNVrkec6adz3N
|
||||
rHO45P7u6yGbSQpehQtsN/sJzLLh94fihWHxgQrbKwVMrijS2mmS1aaUFPlsPe7yx2XUyGNffvyBMiGX
|
||||
Vc59dbFRTjCbE9pOKzBKJmXHs+ebRUXu6857Mv0CxUt9W/cy1t3Mmvf9aUajF1/a/73Uet3K6zFtRIys
|
||||
PilccmgjsP3sJzDLht8fiheGxQcqbD8FzGaSw2ZyaE4+X3Py2bfeuToZdfLqG1eOlB2leEmZkulzf6ZN
|
||||
8ZDbW0XFa69/d3JfmT7zref90395b/KY/+fr+0VFRolknnXK5a4zj3ydYmbR4iXJ88y6Z155nmVdMs98
|
||||
nXUqjz+ueElSLNWvW5lfCqTcNk/hJMvPB3f2R9Lt7R18sABbz34Cs2z4/aF4YVh8oMLuUMCsPyklnvnm
|
||||
fmFQJ+VIGYFSH2r04kuvHJnu4TOPjH7wo6OHCJW8/c7Vw4KiTkbOpJgoxco8yfK755CZt3hJ8jzLCJ86
|
||||
Wf8yEmbe4iWZ9bopXdYbhQvsLvsJzLLh94fihWHxgQq7RwGz/qRkSbGRkSjdQ36653ipp62nm5YUEa15
|
||||
p3jJfI+bT1n+Mk5WW9Y9WUZBMut1k9VG4QLYT2CWDb8/FC8Miw9U2F05MWauSNLa6ZL1pVu8LCuleDmu
|
||||
AFlm8SLDj8IFKOwnMMuG3x+KF4bFByqQAsYlqDeXVRUvV3/47lznQ/npz385mU7xInfvKVyA++wnMMuG
|
||||
3x+KF4bFBypQ5EolCpj1Z1XFi8i8yaGHOQQRoGY/gVk2/P5QvDAsPlCBLgXM+uP8JbKJ5FDDjHgDaLGf
|
||||
wCwbfn8oXhgWH6jANAoYke2MwgWYh/0EZtnw+0PxwrD4QAWOo4AR2Y4oXIBF2E9glg2/PxQvDIsPVGAe
|
||||
Of9DrnSigBEZXhQuwEnYT2CWDb8/FC8Miw9UYBGlgGnt3IlIv5KiVOECnJT9BGbZ8PtD8cKw+EAFTiIF
|
||||
TK6E0trZE5HNJoVLDhEEOA37Ccyy4feH4oVh8YEKnIYCRtadXAHqrXeujp559sLor//2idGTT5+bXIr7
|
||||
X391szn9LuWDO/sj0vb2Dn5AAU7BfgKzbPj9oXhhWHygAsuggJF15He39kbPfPPC5HfWX37h0Unx8hcP
|
||||
n5l8/YW/+uLOXpZb4QKsgv0EZtnw+0PxwrD4QAWWSQEjq871n9w4MrolZczFbz8/euihhyYjX+pptz0K
|
||||
F2CV7Ccwy4bfH4oXhsUHKrAKOaFnrqTS2lkUWXau/vD6ThUvChdgHewnMMuG3x+KF4bFByqwSilgXIJa
|
||||
VpnJ4UfPnp8UL7twnpe79xQuwHrYT2CWDb8/FC8Miw9UYB1yhZVtLmDe/cmN0cXnLk1O+Jocd7LXnBx2
|
||||
WlqPy7lLXn3jypH5t85ncu1H1yfzmHWuk7Kc1n2/vXl79MLLl48spztN1i/rkkN+WvfVz+Gn//Le4fKm
|
||||
pX6+mb5+nnlNjxvFknnkd9gLL11u3r8tySF8OZQPYF3sJzDLht8fiheGxQcqsE7bVsD87tZossNfPkdz
|
||||
wtf6ZK8pQh58zN7h9N20DpdJsZB5Jl967OzkhLKZNvOvS4vMN8vPfdNKiCvf+/7hcrrlzLzLefeffjZ1
|
||||
GZl/eQ7d16aV+vn+P19/8/D2PI/yXJJv/LdvPbCsybldnnt+cv82ly45ZC8jxwDWzX4Cs2z4/aF4YVh8
|
||||
oAKbsE0FTEZ+JHWRcfWH706KgzNnHjlSWiS/vnlr8pnbLQvq0qLc9ot/e39ShHTLj3/++S8nt//N333l
|
||||
8La60Mlyu8VK7i9lSpZTzy/Lye2t5eT2ejnzFi/d+0oxlGV070t+8KPro9feuHJkvbNeKYEyz4yGKbdn
|
||||
Xrn94fHzzOPK7dsUhQuwafYTmGXD7w/FC8PiAxXYpG0+BKkUFBef+86R21MmpEhIyVDf3i0tUi6Uc5d0
|
||||
D+vJfeVKPqWoKIXOM9/cf0y3/CjlSg7hyf1lNE69nLrcOLzvmxcmRU65bVXFy7S05lluax3uNPQoXIC+
|
||||
sJ/ALBt+fyheGBYfqMCm5bwVuULLthUwpWioS4skxUWrnGgVLxnVUUbNdPPqG29Ops//u/PNyJbuaJiU
|
||||
Kyk9uss/bjk5z0p3OfmdscriJWVSzpuT87189elznfXdP4Qpt3VH9Qw5Chegb+wnMMuG3x+KF4bFByrQ
|
||||
F6WAae2UDiEpFbrJ4UApCOrpSvHRHa3RKl4yj/r3ezeZvhQi5ZLKmW93GRkNk8Ny3h7Pu4x8KcVJltOd
|
||||
bzf1ckrxMi31c6gzT/GSUUD1c87/UyJ151kOtcr9GcHTKoGGkhSOChegj+wnMMuG3x+KF4bFByrQNylg
|
||||
cgWX1k5qn1Ou0lMnxUBKg3q6aYfJTCteUlSU0SetlMe/+vr+CJgcLpTHpph46u+/fmTemb4ckvSNZ/dP
|
||||
WLvockrxkkIkhUed7uiUOrOKl4xiefHl/d9HX33q3OS1KaNZpo2iyTqVqzh1D5EaQlK45FA7gL6yn8As
|
||||
G35/KF4YFh+oQF8NtYApKeXHl778eHXb9MNkWsXLk09/rTltN935ToqM8dc5fOg3N29NCo9u0fLU0/ul
|
||||
TL4uo0rmOXRnFYcazbpv1jyHmA/u7I/s2ts7eKMD9JT9BGbZ8PtD8cKw+EAF+m6IBUwZwZHCIIf33L99
|
||||
sYIhV0fK53Prcsp1Mt+UNPX5ZDKyJcVPKVXKCJtMm3O61Ovw1njZWc4//OPREwG3sqripVtSJaU0as0z
|
||||
I16yDkMZ7aJwAYbGfgKzbPj9oXhhWHygAkPR1wIm5yXJeUZyyEsOfckJYVN25HP1sapIyH0Xn3t+cnsZ
|
||||
fVKnVVqkkCjzSgGReadAybJy0ttSVJTpjo6uyRWJzk8eW5cdub1b0tTL+a+PnZ26nGRVxUtZfl6jsuxM
|
||||
n9tnvS718+hjFC7AUNlPYJYNvz8ULwyLD1RgaHIi0lwBprWTu4m8fVAQ1L+HM3rjxZdeOTx0py4KUjzU
|
||||
50wpmVZa5LGZV+ZZLyMpVy4qpUZ9JaMkJUnm2R11k0tE5/b60KLcnktUt5ZTzhWTrKJ4SXLS3/p1zHq8
|
||||
9sabh8/haPGyfyhVpps2v01H4QIMnf0EZtnw+0PxwrD4QAWGKgVMny5BnTIlIzVapUqSkmPaffMmh9Vk
|
||||
Gfl3nvOxnDRlOVnfVS6nlSx73ueXdVz3+s2Tu/cULsDw2U9glg2/PxQvDIsPVGDocmWYPhUwsrvJoXA5
|
||||
JA5gG9hPYJYNvz8ULwyLD1RgWyhgZFPJoW8ZgQWwTewnMMuG3x+KF4bFByqwbRQwsq4oXIBtZj+BWTb8
|
||||
/lC8MCw+UIFtpYCRVUXhAuwC+wnMsuH3h+KFYfGBCmyznG8jV5ZRwMgyonABdon9BGbZ8PtD8cKw+EAF
|
||||
dkEpYFo70yLHJcWdwgXYNfYTmGXD7w/FC8PiAxXYJSlgcuWZ1s61SDcpXHLIGsAusp/ALBt+fyheGBYf
|
||||
qMAuUsDIrHxwZ3+E1N7ewRsGYAfZT2CWDb8/FC8Miw9UYJcpYKSOwgXgPvsJzLLh94fihWHxgQqggNn1
|
||||
KFwAHmQ/gVk2/P5QvDAsPlAB7ssJVHPlmtbOuWxfFC4A09lPYJYNvz8ULwyLD1SAB6WAcQnq7c7dewoX
|
||||
gFnsJzDLht8fiheGxQcqwHS5oo0CZruSQ8pyaBkAs9lPYJYNvz8ULwyLD1SA4ylghp8cQpaRTADMx34C
|
||||
s2z4/aF4YVh8oALMTwEzvChcAE7GfgKzbPj9oXhhWHygAixOAdP/KFwATsd+ArNs+P2heGFYfKACnEzO
|
||||
E5Ir4ihg+hWFC8By2E9glg2/PxQvDIsPVIDTKQVMqwSQ9SUFmMIFYHnsJzDLht8fiheGxQcqwHKkgMkV
|
||||
c1qlgKwuKVxy6BcAy2U/gVk2/P5QvDAsPlABlksBs558cGd/pNHe3sELD8BS2U9glg2/PxQvDIsPVIDV
|
||||
UMCsJgoXgPWwn8AsG35/KF4YFh+oAKulgFlOFC4A62U/gVk2/P5QvDAsPlAB1uOzz/evuNMqFWR6FC4A
|
||||
m2E/gVk2/P5QvDAsPlAB1itX3nEJ6vly957CBWBT7Ccwy4bfH4oXhsUHKsBm5Eo8Cph2cmhWDtECYHPs
|
||||
JzDLht8fiheGxQcqwGYpYO4nh2JlRBAAm2c/gVk2/P5QvDAsPlAB+mGXCxiFC0D/2E9glg2/PxQvDIsP
|
||||
VIB+2aUCRuEC0F/2E5hlw+8PxUtXNqj++Mn+8dr/cddwapFu8jORnY/bf9j/WbETAuSEsrmSz7b+zlS4
|
||||
AJHPuk/+vH8i7WwH5TPvwzvtzw2RXUx+Hsq+Qn5O8vPSl3OgKV56ULxkYypvDB+cIifL78cfsCkr7ZjA
|
||||
bsvGVQqY1ufEEJONR59rsNtStmRkX3YkW58TInJ8MqDhT+Ofo02WMIqXDRYv2ZjyISqy3JQPVmB3ZcMq
|
||||
ZWzrM2IISeGSHS1gdx2O5POHWZGlZlNXAlS8bKB4+exzhYvIqpOfsb4MLQQ2Y2gFzAfjHazsaGWHC9hd
|
||||
OZRa4SKy2qz7963iZc3FSz5IW994EVlN8qEK7La+FzAKFyDyWeWPsyLrS05XkEER66B4WVPxko0pH6Qi
|
||||
m4nRL0D0rYBRuABFTkFglIvIZrKOP9QqXtZQvGRDL21a65ssIutJfgaVL0Bs+pBfhQtQy7npWp8VIrK+
|
||||
rLp8UbysuHhRuoj0J8oXoDb5C/Oaf0fnKoYKF6BwGgKR/iSjYldF8bLC4kXpItK/5GfSTg9QyxWEVl3A
|
||||
bOoqCkB/ffLn9ueFiGwuqxr5onhZYfHinC4i/Ux+NgG6VlHA5PMmI2sAailindNFpJ/JSLRlU7ysqHhJ
|
||||
U9b6JopIP7KKD1RgOyyjgFG4ALMYFS/S3+RcbMsepap4WUHxkm9S6xsoIv3Kui4fBwzTSQoYhQtwHH+g
|
||||
Fel/lj1CXvGyguLlP+62v3ki0q845Ag4Ts4JlZ2k4woYhQswD3+gFRlOljlCXvGy5OLF5eBEhhU7SsA8
|
||||
srPU+it1ChmfI8C8cqLt7ueIiPQzOeRoWRflULwsuXgx2kVkWDHqBVhECpjsOKVwyaFIAPMy2kVkeFnW
|
||||
qBfFyxKLl/zFq/XNEpF+x1+rAYBVM9pFZHjJwIplULwssXjxYSoyzNy9d/BDDACwIq5kJDLMLOOPtIqX
|
||||
JRYvPkxFhpkcvwkAsCpGxosMN8v4I63iZUnFiw9TkWHH4UYAwKp8PN5xa21/iEj/kwEWp6V4WVLxkpPu
|
||||
tL5JIjKMLPNycQAANRfgEBl2Tnt1I8XLkoqXO39of4NEZBjJOZoAAFahte0hIsPJaUfHK16WVLzkkrSt
|
||||
b5CIDCO/X9IZywEAap993t72EJHh5LSj4xUvSypenFhXZNhZxrGbAABdzgUpMvz84U8HP9AnpHhZUvHS
|
||||
+uaIyLACALBsf/q0vd0hIsPJaU9LoHhRvIjIQQAAlk3xIjL8KF5OSPEiIt0AACyb4kVk+FG8nJDiRUS6
|
||||
AQBYNsWLyPCjeDkhxYuIdAMAsGyKF5HhR/FyQooXEekGAGDZFC8iw4/i5YQULyLSDQDAsileRIYfxcsJ
|
||||
KV5EpBsAgGVTvIgMP4qXE1K8iEg3AADLpngRGX4ULyekeBGRbgAAlk3xIjL8KF5OSPEiIt0AACyb4kVk
|
||||
+FG8nJDiRUS6AQBYNsWLyPCjeDkhxYuIdAMAsGyKF5HhR/FyQooXEekGAGDZFC8iw4/i5YQULyLSDQDA
|
||||
sileRIYfxcsJKV5EpBsAgGVTvIgMP4qXE1K8iEg3AADLpngRGX4ULyekeBGRbgAAlk3xIjL8KF5OSPEi
|
||||
It0AACyb4kVk+FG8nJDiRUS6AQBYNsWLyPCjeDkhxYuIdAMAsGyKF5HhR/FyQooXEekGAGDZFC8iw4/i
|
||||
5YQULyLSDQDAsm1r8fLuT26Mrv3oevO+efPqG1dGb79zrXnftuWtd66O/vVXN5v3tXJ9/Pq+8NLl0W//
|
||||
/Xbz/m5++i/vTaavl9G6TU4WxcsJKV6OT35A82GYH/rW/YskH8wXn7s0eubZC5N/8yHQmm5IWfSXzaKv
|
||||
52/GH7Ld6cttp/0lJ+0AACzbNhYvPxtvy5d9qdPsK+Txf/23TzTvm5V5y4i+5Mr3vj95rmfOPNK8v5vf
|
||||
3dobPfPNC6OHHnportLkd7dGk4Il05fvR+u2TSfftxRQQ/v+JYqXEypPOlmG1jdn6MkPaF6f/MC27p83
|
||||
L758/032l194dPQXD595oDgY2g9fCpDynK7OWYKU1/OtOVv9fMhm+vr1L7flg7iedpMZ8gdoNwAAy7aN
|
||||
xUu2hbNNn+3S0/xBNY9fpHh5959+Nnr4zCNzb0/3JW8dFC9f+KsvNu/vZtuKl9/evD16YbxPmPdMn4qg
|
||||
RaJ4OaHypJNlaH1zhp5lFC+loEjhUn9o1Dvp+QE8SdO9ydS/bOb94Civ57YUL/kelg/QrNM8vxT6HgCA
|
||||
ZdvWQ42yLXjaP7xlG3LR4iU77kMrXpJsK8/7em1T8fLqG28e7i9kn1Dxong5ldY3Z+gpRcFpipcyj9fe
|
||||
uNK8P8n9QyteknxwLlI2lNdi6MVLt3BRvAAATOfkutOTbchdKV4WyVCKl6xb5t0qlPIcnnz6a4ff40zX
|
||||
hyLopFG8nFB50skytL45Q09+IPL6LKN4mfXhmPuHWLwsmnleizp9LV6+9NjZw+9Z1ifrkq/n+aXQ9wAA
|
||||
LNsQi5ds12UbtBxGlHMM5lyNL7z8yuE0OXVAaz9h8tiXL0+mnzxmPE0en0PTk3qnu2xT5v9ZVn1OyHrb
|
||||
Mv/PYzOvybbweJoyv+S0I2+mpbwOZf7lddhf/v1t+kw3bd2TWedpzLy78z2ueMlzrqcv67lI8dJabmtZ
|
||||
01LPf9rjfjB+vvOuT9+jeDmh8qSTZWh9c4ae/EDk9ckPSPe+7g9qpql/4PL/WR+Omab8P/dn2Fl9/yI/
|
||||
9IukfOiVXyI5QW79YVOmq59fPjzr+0qm/bJJuicTzvMpr2drXq3pk+7rX26bVrxkncrzKfNpTXeavD3+
|
||||
/tQflooXAIDphli81Nut5Y9uSf3H0vw/t9WPe/v/de1w2nJux/J1/p/bnnzq3OH0uT3zee1/v3I4XUnO
|
||||
h1IKj4x06d5fMmvHP9vG9T5GK7O2YXNS3Mw/y69fh7LcvE6ZR/08k3rdk1/82/uT27/x7LeOzD+35zUp
|
||||
jyv/z795XbrP7Tc3bx2+7t3ps/1flxqzio6rP3z3cJ3zvMo8s97zbtPPU7zUUbwoXg5uOZ3WN2foKR+4
|
||||
3XIhP1jlh7z8oJYf3HI5uPLYack0rdtLWuVEksKk+2HZzawf5Kx75p/nVJ/0t+Qfnnv+yPOr051v+YCq
|
||||
b0vq+eZ1Ka9NPgzzb/e5HTd9/fqX9e8WL7m9/DLofk9mHea1jCheAACmG3Lxku3KbBfn62zr1SfSbW0L
|
||||
Z9qk3i7872+8OZku09fTJrn94fE2a1lGbvvtzVuji99+frKD3t2OXeRQo4waaW3T1zluXuVqRJlPts1L
|
||||
mfLa6989vD3b3K+Nn2NuTzHy1afPPTDfVvEyGdXy7PnJ7fW88/xffOmVw/Urr2WmvzjeV8ntj3358SPF
|
||||
TlmfTF9ex2lFR9Yl69wtWcrtf/N3Xzm8bVYUL4tRvIyzDK1vztCTH4i8PvWOf1I+wOofmPyw5YM5H5z1
|
||||
h8C0edTJ/a0P4lYyn0w/K7PmlfXMNHkOSXkOub08r/x78duXDp9H+WVRt/NJ65dNip8yj/r1ySiRMv/6
|
||||
Qzi/vFrT5/9l+vq1K+vfLV7yAZ/bs5x62tb3ZNlRvAAATDfk4mXWNl53W7g8pvVHv0ybbdLu7Zk+O/vd
|
||||
ZUwbIbLoOV4y3+Myazu5FC9PPv31I7eXUifrksNp6vuu/vD65DH1Nnzr+ZTbWlc6yvyffOprR0qN3FYK
|
||||
k+46T0qZg7Kq7FO0io56uu5hT/V98+w7KF4Wo3gZZxla35yhp3x41h8a5bbujn99X/1B2JpHN7l/3uIl
|
||||
HwL1B+W0tB6b5L4sLx+U3enyQZP7UrrUtyf5kMtj6ttaxUu5rbUO137048l99etTWu4yUqjOzw5Kmfq1
|
||||
K+tfv/5lunm/J8uO4gUAYLohFy+t7cuS7rZw2U5tbfdn2v/62NkHbs/0rf2AZRUvp0051Ki7vJQUWe/c
|
||||
V9+elHWvX4fW80lBk8e3iqrMP6997i/b2OVwq+5rsj99q2RpFy9Z7zNnHpnMt5tcgaheZp0yv6zDrNTL
|
||||
az1+2v19j+LlhOo3xzK0vjlDT/nArT80yg9bPny6P6hl+vrDozWPbnJ/6wN3Fcl6ZnmtXyJltErrgyCl
|
||||
yzzFy6znUl6L+oM7hU6r/U/KutavXWv983qX+ZbvRUkZUTPt9S/r1Eoe33pMN4oXAIDphly8zNqGb20L
|
||||
57Zs2149GE2RP5qWw2Naf9zM7a1t510oXl59fb/kaD2XVvHSGklzf/r5i5fs02Q+01Ivs5vMJ/MsKe+B
|
||||
/AG7vr31eMWL4uXgltNpfXOGntYHbtnJnpVdLV7KvLuHJJWU16L+cM3X0557mV/92rXWP/fntlmZ9vpn
|
||||
frmvlXmGGCaKFwCA6XapeMn2YA6Rye35A2OS/z/zzfPNbcvc19oWXkbxMikvnr0wmf+slJKolVUWL9Pm
|
||||
nay6eJk24qWknve01POf5zGKF8XLwS2n0/rmDD2tD9xyOE7u6/6AltQfqq15dJP788HVuq+bfDDVH5St
|
||||
/MN4HVuPTbJ+Wd4qipdcMSlfL1K8tA5hKinrWr92rfXP/bktx2mW70E385YoJ4niBQBgul0qXpJcoSjb
|
||||
uLk/f5CdtR2ax2e67u3LKl4y77Id30rOl9I910mdVRYv5dChi8995/C2klbxUubROvntIsXLk0/vnzum
|
||||
PlHySaJ4WYziZZxlaH1zhp7WB245rKUe1TIr83xo5/7WB24rWW7rQ7POtOIjyYdClreK4iWZdehQeS3q
|
||||
D+5yJaLWL6SyrvVr11r/st6zXuNVRvECADDdLhUv5dyD8+4rZNrWfsC04uWnP//l5PZWWbGKrLJ4yTyy
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="richTextBox2.Text" xml:space="preserve">
|
||||
<value>Данная программа позволяет вам посмотреть на графическую демонастрацию работы алгоритма "Бинарный поиск".
|
||||
|
||||
Для этого вам потребуется создать базовый целочисленный массив и указать какой элемент вы хотите найти. Так же если у вас есть сохраненный .bin файл с сохраненным состоянием там, то можете выгрузить его (CTRL+L).
|
||||
После того как у вас появится в главной форме массив нажмите на кнопку запуска алгоритма. Теперь вы можете пройтись вперед и просмотреть шаги выполнения алгоритма. Так же можно сохранить данный массив (CTRL+S).
|
||||
|
||||
Желаю вам успехов в изучении алгоритмов!</value>
|
||||
</data>
|
||||
</root>
|
131
BinarySearch/BinarySearch/Forms/InitDataForm.Designer.cs
generated
Normal file
131
BinarySearch/BinarySearch/Forms/InitDataForm.Designer.cs
generated
Normal file
@ -0,0 +1,131 @@
|
||||
namespace BinarySearch
|
||||
{
|
||||
partial class InitDataForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
numericUpDownNumber = new NumericUpDown();
|
||||
labelAdd = new Label();
|
||||
buttonAdd = new Button();
|
||||
buttonSave = new Button();
|
||||
listBoxArray = new ListBox();
|
||||
buttonReset = new Button();
|
||||
((System.ComponentModel.ISupportInitialize)numericUpDownNumber).BeginInit();
|
||||
SuspendLayout();
|
||||
//
|
||||
// numericUpDownNumber
|
||||
//
|
||||
numericUpDownNumber.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
numericUpDownNumber.Location = new Point(159, 10);
|
||||
numericUpDownNumber.Maximum = new decimal(new int[] { 200, 0, 0, 0 });
|
||||
numericUpDownNumber.Minimum = new decimal(new int[] { 200, 0, 0, int.MinValue });
|
||||
numericUpDownNumber.Name = "numericUpDownNumber";
|
||||
numericUpDownNumber.Size = new Size(275, 23);
|
||||
numericUpDownNumber.TabIndex = 0;
|
||||
//
|
||||
// labelAdd
|
||||
//
|
||||
labelAdd.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
labelAdd.AutoSize = true;
|
||||
labelAdd.Location = new Point(12, 12);
|
||||
labelAdd.Name = "labelAdd";
|
||||
labelAdd.Size = new Size(141, 15);
|
||||
labelAdd.TabIndex = 1;
|
||||
labelAdd.Text = "Введите искомое число:";
|
||||
//
|
||||
// buttonAdd
|
||||
//
|
||||
buttonAdd.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
buttonAdd.Location = new Point(12, 157);
|
||||
buttonAdd.Name = "buttonAdd";
|
||||
buttonAdd.Size = new Size(422, 23);
|
||||
buttonAdd.TabIndex = 2;
|
||||
buttonAdd.Text = "Добавить элемент";
|
||||
buttonAdd.UseVisualStyleBackColor = true;
|
||||
buttonAdd.Click += buttonAdd_Click;
|
||||
//
|
||||
// buttonSave
|
||||
//
|
||||
buttonSave.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
buttonSave.Location = new Point(12, 186);
|
||||
buttonSave.Name = "buttonSave";
|
||||
buttonSave.Size = new Size(422, 23);
|
||||
buttonSave.TabIndex = 3;
|
||||
buttonSave.Text = "Сохранить";
|
||||
buttonSave.UseVisualStyleBackColor = true;
|
||||
buttonSave.Click += buttonSave_Click;
|
||||
//
|
||||
// listBoxArray
|
||||
//
|
||||
listBoxArray.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
listBoxArray.FormattingEnabled = true;
|
||||
listBoxArray.ItemHeight = 15;
|
||||
listBoxArray.Items.AddRange(new object[] { "" });
|
||||
listBoxArray.Location = new Point(12, 43);
|
||||
listBoxArray.Name = "listBoxArray";
|
||||
listBoxArray.Size = new Size(422, 79);
|
||||
listBoxArray.TabIndex = 4;
|
||||
//
|
||||
// buttonReset
|
||||
//
|
||||
buttonReset.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
buttonReset.Location = new Point(12, 128);
|
||||
buttonReset.Name = "buttonReset";
|
||||
buttonReset.Size = new Size(422, 23);
|
||||
buttonReset.TabIndex = 5;
|
||||
buttonReset.Text = "Сбросить";
|
||||
buttonReset.UseVisualStyleBackColor = true;
|
||||
buttonReset.Click += buttonReset_Click;
|
||||
//
|
||||
// InitDataForm
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
ClientSize = new Size(446, 220);
|
||||
Controls.Add(buttonReset);
|
||||
Controls.Add(listBoxArray);
|
||||
Controls.Add(buttonSave);
|
||||
Controls.Add(buttonAdd);
|
||||
Controls.Add(labelAdd);
|
||||
Controls.Add(numericUpDownNumber);
|
||||
Name = "InitDataForm";
|
||||
Text = "Добавление данных";
|
||||
((System.ComponentModel.ISupportInitialize)numericUpDownNumber).EndInit();
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private NumericUpDown numericUpDownNumber;
|
||||
private Label labelAdd;
|
||||
private Button buttonAdd;
|
||||
private Button buttonSave;
|
||||
private ListBox listBoxArray;
|
||||
private Button buttonReset;
|
||||
}
|
||||
}
|
89
BinarySearch/BinarySearch/Forms/InitDataForm.cs
Normal file
89
BinarySearch/BinarySearch/Forms/InitDataForm.cs
Normal file
@ -0,0 +1,89 @@
|
||||
using BinarySearch.Algorithm;
|
||||
using BinarySearch.Forms;
|
||||
namespace BinarySearch;
|
||||
|
||||
/// <summary>
|
||||
/// Форма для инициализации данных перед выполнением поиска.
|
||||
/// </summary>
|
||||
public partial class InitDataForm : Form
|
||||
{
|
||||
/// <summary>
|
||||
/// Делегат для передачи параметров поиска.
|
||||
/// </summary>
|
||||
/// <param name="searchParameters">Параметры поиска.</param>
|
||||
public delegate void InitParametersDelegate(SearchParameters searchParameters);
|
||||
|
||||
/// <summary>
|
||||
/// Событие, срабатывающее при инициализации параметров поиска.
|
||||
/// </summary>
|
||||
public event InitParametersDelegate? InitParametersEvent;
|
||||
|
||||
private List<int> _arrayInit;
|
||||
|
||||
/// <summary>
|
||||
/// Инициализирует новый экземпляр формы InitDataForm.
|
||||
/// </summary>
|
||||
public InitDataForm()
|
||||
{
|
||||
_arrayInit = new List<int>();
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обновляет элементы списка на форме.
|
||||
/// </summary>
|
||||
private void UpdateListBox()
|
||||
{
|
||||
listBoxArray.Items.Clear();
|
||||
foreach (int number in _arrayInit)
|
||||
{
|
||||
listBoxArray.Items.Add(number);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обработчик события нажатия кнопки "Добавить число".
|
||||
/// Открывает диалоговое окно для добавления числа.
|
||||
/// </summary>
|
||||
private void buttonAdd_Click(object sender, EventArgs e)
|
||||
{
|
||||
AddForm addForm = new();
|
||||
addForm.AddNumberEvent += AddNumberEventHandler;
|
||||
addForm.ShowDialog();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обработчик события добавления числа из диалогового окна.
|
||||
/// Добавляет число в список и обновляет элементы списка на форме.
|
||||
/// </summary>
|
||||
/// <param name="number">Добавленное число.</param>
|
||||
private void AddNumberEventHandler(int number)
|
||||
{
|
||||
_arrayInit.Add(number);
|
||||
UpdateListBox();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обработчик события нажатия кнопки "Сбросить".
|
||||
/// Очищает список и обновляет элементы списка на форме.
|
||||
/// </summary>
|
||||
private void buttonReset_Click(object sender, EventArgs e)
|
||||
{
|
||||
_arrayInit.Clear();
|
||||
UpdateListBox();
|
||||
numericUpDownNumber.Value = 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обработчик события нажатия кнопки "Сохранить".
|
||||
/// Формирует объект параметров поиска и вызывает событие инициализации параметров поиска.
|
||||
/// </summary>
|
||||
private void buttonSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
SearchParameters parameters = new SearchParameters(_arrayInit, (int)numericUpDownNumber.Value);
|
||||
InitParametersEvent?.Invoke(parameters);
|
||||
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
|
120
BinarySearch/BinarySearch/Forms/InitDataForm.resx
Normal file
120
BinarySearch/BinarySearch/Forms/InitDataForm.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
306
BinarySearch/BinarySearch/Forms/MainForm.Designer.cs
generated
Normal file
306
BinarySearch/BinarySearch/Forms/MainForm.Designer.cs
generated
Normal file
@ -0,0 +1,306 @@
|
||||
namespace BinarySearch
|
||||
{
|
||||
partial class MainForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
groupBoxTools = new GroupBox();
|
||||
buttonStepBack = new Button();
|
||||
buttonStart = new Button();
|
||||
buttonStepForward = new Button();
|
||||
buttonInfo = new Button();
|
||||
buttonAddData = new Button();
|
||||
flowLayoutPanelArray = new FlowLayoutPanel();
|
||||
labelIsTarget = new Label();
|
||||
labelTarget = new Label();
|
||||
flowLayoutPanelIndex = new FlowLayoutPanel();
|
||||
menuStrip1 = new MenuStrip();
|
||||
файлToolStripMenuItem = new ToolStripMenuItem();
|
||||
toolStripMenuItemSave = new ToolStripMenuItem();
|
||||
toolStripMenuItemLoad = new ToolStripMenuItem();
|
||||
saveFileDialog = new SaveFileDialog();
|
||||
openFileDialog = new OpenFileDialog();
|
||||
labelMid = new Label();
|
||||
progressBarSteps = new ProgressBar();
|
||||
groupBox1 = new GroupBox();
|
||||
groupBox2 = new GroupBox();
|
||||
textBoxSteps = new TextBox();
|
||||
textBoxStep = new TextBox();
|
||||
groupBoxTools.SuspendLayout();
|
||||
menuStrip1.SuspendLayout();
|
||||
groupBox1.SuspendLayout();
|
||||
groupBox2.SuspendLayout();
|
||||
SuspendLayout();
|
||||
//
|
||||
// groupBoxTools
|
||||
//
|
||||
groupBoxTools.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
groupBoxTools.AutoSize = true;
|
||||
groupBoxTools.Controls.Add(buttonStepBack);
|
||||
groupBoxTools.Controls.Add(buttonStart);
|
||||
groupBoxTools.Controls.Add(buttonStepForward);
|
||||
groupBoxTools.Controls.Add(buttonInfo);
|
||||
groupBoxTools.Controls.Add(buttonAddData);
|
||||
groupBoxTools.Location = new Point(788, 27);
|
||||
groupBoxTools.Name = "groupBoxTools";
|
||||
groupBoxTools.Size = new Size(200, 384);
|
||||
groupBoxTools.TabIndex = 0;
|
||||
groupBoxTools.TabStop = false;
|
||||
groupBoxTools.Text = "Инструменты";
|
||||
//
|
||||
// buttonStepBack
|
||||
//
|
||||
buttonStepBack.Location = new Point(11, 109);
|
||||
buttonStepBack.Name = "buttonStepBack";
|
||||
buttonStepBack.Size = new Size(183, 23);
|
||||
buttonStepBack.TabIndex = 4;
|
||||
buttonStepBack.Text = "Шаг назад";
|
||||
buttonStepBack.UseVisualStyleBackColor = true;
|
||||
buttonStepBack.Click += buttonStepBack_Click;
|
||||
//
|
||||
// buttonStart
|
||||
//
|
||||
buttonStart.Location = new Point(11, 138);
|
||||
buttonStart.Name = "buttonStart";
|
||||
buttonStart.Size = new Size(183, 23);
|
||||
buttonStart.TabIndex = 3;
|
||||
buttonStart.Text = "Начать бинарный поиск";
|
||||
buttonStart.UseVisualStyleBackColor = true;
|
||||
buttonStart.Click += buttonStart_Click;
|
||||
//
|
||||
// buttonStepForward
|
||||
//
|
||||
buttonStepForward.Location = new Point(11, 80);
|
||||
buttonStepForward.Name = "buttonStepForward";
|
||||
buttonStepForward.Size = new Size(183, 23);
|
||||
buttonStepForward.TabIndex = 2;
|
||||
buttonStepForward.Text = "Шаг вперед";
|
||||
buttonStepForward.UseVisualStyleBackColor = true;
|
||||
buttonStepForward.Click += buttonStepForward_Click;
|
||||
//
|
||||
// buttonInfo
|
||||
//
|
||||
buttonInfo.Location = new Point(11, 22);
|
||||
buttonInfo.Name = "buttonInfo";
|
||||
buttonInfo.Size = new Size(183, 23);
|
||||
buttonInfo.TabIndex = 1;
|
||||
buttonInfo.Text = "Информация";
|
||||
buttonInfo.UseVisualStyleBackColor = true;
|
||||
buttonInfo.Click += buttonInfo_Click;
|
||||
//
|
||||
// buttonAddData
|
||||
//
|
||||
buttonAddData.Location = new Point(11, 51);
|
||||
buttonAddData.Name = "buttonAddData";
|
||||
buttonAddData.Size = new Size(183, 23);
|
||||
buttonAddData.TabIndex = 0;
|
||||
buttonAddData.Text = "Ввести данные";
|
||||
buttonAddData.UseVisualStyleBackColor = true;
|
||||
buttonAddData.Click += buttonAddData_Click;
|
||||
//
|
||||
// flowLayoutPanelArray
|
||||
//
|
||||
flowLayoutPanelArray.Location = new Point(12, 96);
|
||||
flowLayoutPanelArray.Name = "flowLayoutPanelArray";
|
||||
flowLayoutPanelArray.Size = new Size(757, 36);
|
||||
flowLayoutPanelArray.TabIndex = 3;
|
||||
//
|
||||
// labelIsTarget
|
||||
//
|
||||
labelIsTarget.AutoSize = true;
|
||||
labelIsTarget.Location = new Point(12, 34);
|
||||
labelIsTarget.Name = "labelIsTarget";
|
||||
labelIsTarget.Size = new Size(114, 15);
|
||||
labelIsTarget.TabIndex = 4;
|
||||
labelIsTarget.Text = "Искомое значение:";
|
||||
//
|
||||
// labelTarget
|
||||
//
|
||||
labelTarget.AutoSize = true;
|
||||
labelTarget.Location = new Point(132, 34);
|
||||
labelTarget.Name = "labelTarget";
|
||||
labelTarget.Size = new Size(74, 15);
|
||||
labelTarget.TabIndex = 5;
|
||||
labelTarget.Text = "Не выбрано";
|
||||
//
|
||||
// flowLayoutPanelIndex
|
||||
//
|
||||
flowLayoutPanelIndex.Location = new Point(12, 56);
|
||||
flowLayoutPanelIndex.Name = "flowLayoutPanelIndex";
|
||||
flowLayoutPanelIndex.Size = new Size(757, 36);
|
||||
flowLayoutPanelIndex.TabIndex = 4;
|
||||
//
|
||||
// menuStrip1
|
||||
//
|
||||
menuStrip1.Items.AddRange(new ToolStripItem[] { файлToolStripMenuItem });
|
||||
menuStrip1.Location = new Point(0, 0);
|
||||
menuStrip1.Name = "menuStrip1";
|
||||
menuStrip1.Size = new Size(988, 24);
|
||||
menuStrip1.TabIndex = 6;
|
||||
menuStrip1.Text = "menuStrip1";
|
||||
//
|
||||
// файлToolStripMenuItem
|
||||
//
|
||||
файлToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItemSave, toolStripMenuItemLoad });
|
||||
файлToolStripMenuItem.Name = "файлToolStripMenuItem";
|
||||
файлToolStripMenuItem.Size = new Size(48, 20);
|
||||
файлToolStripMenuItem.Text = "Файл";
|
||||
//
|
||||
// toolStripMenuItemSave
|
||||
//
|
||||
toolStripMenuItemSave.Enabled = false;
|
||||
toolStripMenuItemSave.Name = "toolStripMenuItemSave";
|
||||
toolStripMenuItemSave.ShortcutKeys = Keys.Control | Keys.S;
|
||||
toolStripMenuItemSave.Size = new Size(173, 22);
|
||||
toolStripMenuItemSave.Text = "Сохранить";
|
||||
toolStripMenuItemSave.Click += toolStripMenuItemSave_Click;
|
||||
//
|
||||
// toolStripMenuItemLoad
|
||||
//
|
||||
toolStripMenuItemLoad.Name = "toolStripMenuItemLoad";
|
||||
toolStripMenuItemLoad.ShortcutKeys = Keys.Control | Keys.L;
|
||||
toolStripMenuItemLoad.Size = new Size(173, 22);
|
||||
toolStripMenuItemLoad.Text = "Загрузить";
|
||||
toolStripMenuItemLoad.Click += toolStripMenuItemLoad_Click;
|
||||
//
|
||||
// saveFileDialog
|
||||
//
|
||||
saveFileDialog.Filter = "bin file | *.bin";
|
||||
//
|
||||
// openFileDialog
|
||||
//
|
||||
openFileDialog.FileName = "openFileDialog1";
|
||||
openFileDialog.Filter = "bin file | *.bin";
|
||||
//
|
||||
// labelMid
|
||||
//
|
||||
labelMid.AutoSize = true;
|
||||
labelMid.Location = new Point(12, 140);
|
||||
labelMid.Name = "labelMid";
|
||||
labelMid.Size = new Size(0, 15);
|
||||
labelMid.TabIndex = 7;
|
||||
//
|
||||
// progressBarSteps
|
||||
//
|
||||
progressBarSteps.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
||||
progressBarSteps.Location = new Point(12, 377);
|
||||
progressBarSteps.Name = "progressBarSteps";
|
||||
progressBarSteps.Size = new Size(770, 23);
|
||||
progressBarSteps.TabIndex = 8;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
groupBox1.Controls.Add(textBoxSteps);
|
||||
groupBox1.Location = new Point(12, 310);
|
||||
groupBox1.Name = "groupBox1";
|
||||
groupBox1.Size = new Size(133, 61);
|
||||
groupBox1.TabIndex = 9;
|
||||
groupBox1.TabStop = false;
|
||||
groupBox1.Text = "Количество шагов";
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
groupBox2.Controls.Add(textBoxStep);
|
||||
groupBox2.Location = new Point(151, 310);
|
||||
groupBox2.Name = "groupBox2";
|
||||
groupBox2.Size = new Size(131, 61);
|
||||
groupBox2.TabIndex = 10;
|
||||
groupBox2.TabStop = false;
|
||||
groupBox2.Text = "Актуальный шаг";
|
||||
//
|
||||
// textBoxSteps
|
||||
//
|
||||
textBoxSteps.Enabled = false;
|
||||
textBoxSteps.Location = new Point(6, 22);
|
||||
textBoxSteps.Name = "textBoxSteps";
|
||||
textBoxSteps.Size = new Size(121, 23);
|
||||
textBoxSteps.TabIndex = 0;
|
||||
//
|
||||
// textBoxStep
|
||||
//
|
||||
textBoxStep.Enabled = false;
|
||||
textBoxStep.Location = new Point(4, 22);
|
||||
textBoxStep.Name = "textBoxStep";
|
||||
textBoxStep.Size = new Size(121, 23);
|
||||
textBoxStep.TabIndex = 1;
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
BackColor = Color.Moccasin;
|
||||
ClientSize = new Size(988, 412);
|
||||
Controls.Add(groupBox2);
|
||||
Controls.Add(groupBox1);
|
||||
Controls.Add(progressBarSteps);
|
||||
Controls.Add(labelMid);
|
||||
Controls.Add(flowLayoutPanelIndex);
|
||||
Controls.Add(labelTarget);
|
||||
Controls.Add(labelIsTarget);
|
||||
Controls.Add(flowLayoutPanelArray);
|
||||
Controls.Add(groupBoxTools);
|
||||
Controls.Add(menuStrip1);
|
||||
MainMenuStrip = menuStrip1;
|
||||
Name = "MainForm";
|
||||
Text = "Бинарный поиск";
|
||||
groupBoxTools.ResumeLayout(false);
|
||||
menuStrip1.ResumeLayout(false);
|
||||
menuStrip1.PerformLayout();
|
||||
groupBox1.ResumeLayout(false);
|
||||
groupBox1.PerformLayout();
|
||||
groupBox2.ResumeLayout(false);
|
||||
groupBox2.PerformLayout();
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private GroupBox groupBoxTools;
|
||||
private Button buttonInfo;
|
||||
private Button buttonAddData;
|
||||
private Button buttonStepForward;
|
||||
private Button buttonStart;
|
||||
public FlowLayoutPanel flowLayoutPanelArray;
|
||||
private Label labelIsTarget;
|
||||
private Label labelTarget;
|
||||
public FlowLayoutPanel flowLayoutPanelIndex;
|
||||
private MenuStrip menuStrip1;
|
||||
private ToolStripMenuItem файлToolStripMenuItem;
|
||||
private ToolStripMenuItem toolStripMenuItemSave;
|
||||
private ToolStripMenuItem toolStripMenuItemLoad;
|
||||
private SaveFileDialog saveFileDialog;
|
||||
private OpenFileDialog openFileDialog;
|
||||
public Label labelMid;
|
||||
private Button buttonStepBack;
|
||||
private ProgressBar progressBarSteps;
|
||||
private GroupBox groupBox1;
|
||||
private GroupBox groupBox2;
|
||||
private TextBox textBoxSteps;
|
||||
private TextBox textBoxStep;
|
||||
}
|
||||
}
|
188
BinarySearch/BinarySearch/Forms/MainForm.cs
Normal file
188
BinarySearch/BinarySearch/Forms/MainForm.cs
Normal file
@ -0,0 +1,188 @@
|
||||
using BinarySearch.Algorithm;
|
||||
using BinarySearch.State;
|
||||
|
||||
namespace BinarySearch;
|
||||
|
||||
/// <summary>
|
||||
/// Главная форма приложения для визуализации бинарного поиска.
|
||||
/// </summary>
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
private readonly StateStorage _stateStorage;
|
||||
private readonly Manager _manager;
|
||||
private SearchParameters _parameters;
|
||||
private BinarySearchVisualizer _visualizer;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор главной формы.
|
||||
/// </summary>
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
_stateStorage = new StateStorage();
|
||||
_manager = new Manager(_stateStorage);
|
||||
_parameters = new SearchParameters();
|
||||
_visualizer = new BinarySearchVisualizer(this, _parameters.Array);
|
||||
buttonStepForward.Enabled = false;
|
||||
buttonStepBack.Enabled = false;
|
||||
buttonStart.Enabled = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обработчик события добавления данных.
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void buttonAddData_Click(object sender, EventArgs e)
|
||||
{
|
||||
InitDataForm initDataForm = new();
|
||||
initDataForm.InitParametersEvent += InitParametersEventHandler;
|
||||
initDataForm.ShowDialog();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обработчик события инициализации параметров поиска.
|
||||
/// </summary>
|
||||
/// <param name="searchParameters"></param>
|
||||
private void InitParametersEventHandler(SearchParameters searchParameters)
|
||||
{
|
||||
_parameters = new SearchParameters(searchParameters.Array, searchParameters.Target);
|
||||
_visualizer = new BinarySearchVisualizer(this, _parameters.Array);
|
||||
_visualizer.UpdateFlowLayoutPanel();
|
||||
labelTarget.Text = searchParameters.Target.ToString();
|
||||
buttonStart.Enabled = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обработчик события запуска бинарного поиска.
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void buttonStart_Click(object sender, EventArgs e)
|
||||
{
|
||||
_stateStorage.Reset();
|
||||
_visualizer.UpdateFlowLayoutPanel();
|
||||
_manager.ExecuteBinarySearch(_parameters);
|
||||
progressBarSteps.Maximum = _stateStorage.GetStatesCount();
|
||||
textBoxSteps.Text = _stateStorage.GetStatesCount().ToString();
|
||||
progressBarSteps.Value = 0;
|
||||
textBoxStep.Text = 0.ToString();
|
||||
toolStripMenuItemSave.Enabled = true;
|
||||
buttonStepForward.Enabled = true;
|
||||
buttonStepBack.Enabled = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обработчик события шага вперед бинарного поиска.
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void buttonStepForward_Click(object sender, EventArgs e)
|
||||
{
|
||||
SearchState? searchState = _stateStorage.GetNextState();
|
||||
progressBarSteps.Value = _stateStorage.GetCurrentIndex()+1;
|
||||
textBoxStep.Text = (_stateStorage.GetCurrentIndex() + 1).ToString();
|
||||
SearchState? searchStateCheck = _stateStorage.GetNextState();
|
||||
if (searchStateCheck == null && searchState != null)
|
||||
{
|
||||
buttonStepForward.Enabled = false;
|
||||
if (searchState.TargetIndex != null && searchState.TargetIndex >= 0)
|
||||
{
|
||||
MessageBox.Show($"Число {searchState.Target} найдено с индексом: {searchState.TargetIndex}", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
} else if (searchState.TargetIndex != null && searchState.TargetIndex < 0)
|
||||
{
|
||||
MessageBox.Show($"Число {searchState.Target} не найдено", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
_visualizer.Visualize(searchState);
|
||||
return;
|
||||
}
|
||||
searchState = _stateStorage.GetPreviousState();
|
||||
if (searchState == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_visualizer.Visualize(searchState);
|
||||
buttonStepForward.Enabled = true;
|
||||
buttonStepBack.Enabled = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обработчик события шага назад бинарного поиска.
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void buttonStepBack_Click(object sender, EventArgs e)
|
||||
{
|
||||
SearchState? searchState = _stateStorage.GetPreviousState();
|
||||
if (searchState == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
progressBarSteps.Value = _stateStorage.GetCurrentIndex()+1;
|
||||
textBoxStep.Text = (_stateStorage.GetCurrentIndex() + 1).ToString();
|
||||
_visualizer.Visualize(searchState);
|
||||
buttonStepForward.Enabled = true;
|
||||
buttonStepBack.Enabled = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обработчик события открытия формы информации
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void buttonInfo_Click(object sender, EventArgs e)
|
||||
{
|
||||
InfoForm infoForm = new();
|
||||
infoForm.ShowDialog();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обработчик события сохранения состояния в файл.
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void toolStripMenuItemSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
if (_stateStorage.SaveToFile(saveFileDialog.FileName))
|
||||
{
|
||||
MessageBox.Show("Сохранение прошло успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Не сохранилось", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обработчик события загрузки состояния из файла.
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void toolStripMenuItemLoad_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
if (_stateStorage.LoadFromFile(openFileDialog.FileName))
|
||||
{
|
||||
SearchState? state = _stateStorage.GetNextState();
|
||||
if (state != null)
|
||||
{
|
||||
_parameters = new SearchParameters(state.Array, state.Target);
|
||||
_visualizer = new BinarySearchVisualizer(this, _parameters.Array);
|
||||
_visualizer.UpdateFlowLayoutPanel();
|
||||
labelTarget.Text = state.Target.ToString();
|
||||
_stateStorage.GetPreviousState();
|
||||
}
|
||||
buttonStart.Enabled = true;
|
||||
MessageBox.Show("Загрузка прошла успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Не загрузилось", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
129
BinarySearch/BinarySearch/Forms/MainForm.resx
Normal file
129
BinarySearch/BinarySearch/Forms/MainForm.resx
Normal file
@ -0,0 +1,129 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="saveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>132, 17</value>
|
||||
</metadata>
|
||||
<metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>267, 17</value>
|
||||
</metadata>
|
||||
</root>
|
17
BinarySearch/BinarySearch/Program.cs
Normal file
17
BinarySearch/BinarySearch/Program.cs
Normal file
@ -0,0 +1,17 @@
|
||||
namespace BinarySearch
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[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 MainForm());
|
||||
}
|
||||
}
|
||||
}
|
63
BinarySearch/BinarySearch/Properties/Resources.Designer.cs
generated
Normal file
63
BinarySearch/BinarySearch/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Этот код создан программой.
|
||||
// Исполняемая версия:4.0.30319.42000
|
||||
//
|
||||
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
||||
// повторной генерации кода.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace BinarySearch.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
|
||||
/// </summary>
|
||||
// Этот класс создан автоматически классом 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() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
|
||||
/// </summary>
|
||||
[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("BinarySearch.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Перезаписывает свойство CurrentUICulture текущего потока для всех
|
||||
/// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
120
BinarySearch/BinarySearch/Properties/Resources.resx
Normal file
120
BinarySearch/BinarySearch/Properties/Resources.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
34
BinarySearch/BinarySearch/State/SearchState.cs
Normal file
34
BinarySearch/BinarySearch/State/SearchState.cs
Normal file
@ -0,0 +1,34 @@
|
||||
namespace BinarySearch.State;
|
||||
|
||||
/// <summary>
|
||||
/// Класс-состояние
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class SearchState
|
||||
{
|
||||
public int Left { get; }
|
||||
public int Right { get; }
|
||||
public int Mid { get; }
|
||||
public List<int> Array { get; }
|
||||
public int Target { get; }
|
||||
public int? TargetIndex { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор класса состояния
|
||||
/// </summary>
|
||||
/// <param name="left"></param>
|
||||
/// <param name="right"></param>
|
||||
/// <param name="mid"></param>
|
||||
/// <param name="targetIndex"></param>
|
||||
/// <param name="array"></param>
|
||||
/// <param name="target"></param>
|
||||
public SearchState(int left, int right, int mid, int? targetIndex, List<int> array, int target)
|
||||
{
|
||||
Left = left;
|
||||
Right = right;
|
||||
Mid = mid;
|
||||
TargetIndex = targetIndex;
|
||||
Array = array;
|
||||
Target = target;
|
||||
}
|
||||
}
|
148
BinarySearch/BinarySearch/State/StateStorage.cs
Normal file
148
BinarySearch/BinarySearch/State/StateStorage.cs
Normal file
@ -0,0 +1,148 @@
|
||||
using System.Runtime.Serialization.Formatters.Binary;
|
||||
|
||||
namespace BinarySearch.State;
|
||||
|
||||
/// <summary>
|
||||
/// Класс-Хранилище
|
||||
/// </summary>
|
||||
public class StateStorage
|
||||
{
|
||||
private List<SearchState> states;
|
||||
private int currentIndex;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор класса-хранилища
|
||||
/// </summary>
|
||||
public StateStorage()
|
||||
{
|
||||
states = new List<SearchState>();
|
||||
currentIndex = -1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получение количества элементов хранилище
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public int GetStatesCount() { return states.Count; }
|
||||
|
||||
/// <summary>
|
||||
/// Получения актуального индекса
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public int GetCurrentIndex() { return currentIndex; }
|
||||
|
||||
/// <summary>
|
||||
/// Добавление состояния в хранилище
|
||||
/// </summary>
|
||||
/// <param name="state"></param>
|
||||
public void AddState(SearchState state)
|
||||
{
|
||||
states.Add(state);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Очистка хранилища
|
||||
/// </summary>
|
||||
public void Clear()
|
||||
{
|
||||
states.Clear();
|
||||
Reset();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Сброс актуального индекса
|
||||
/// </summary>
|
||||
public void Reset()
|
||||
{
|
||||
currentIndex = -1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получение следующего состояния
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public SearchState? GetNextState()
|
||||
{
|
||||
if (currentIndex+1 < states.Count)
|
||||
{
|
||||
currentIndex++;
|
||||
return states[currentIndex];
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получение предыдущего состояния
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public SearchState? GetPreviousState()
|
||||
{
|
||||
if (currentIndex > 0 && currentIndex < states.Count)
|
||||
{
|
||||
currentIndex--;
|
||||
return states[currentIndex];
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Проверка на то дошли ли мы до конца хранилища
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool IsTraversalComplete()
|
||||
{
|
||||
return currentIndex >= states.Count - 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Сохранение хранилища в бинарный файл
|
||||
/// </summary>
|
||||
/// <param name="filename"></param>
|
||||
/// <returns></returns>
|
||||
public bool SaveToFile(string filename)
|
||||
{
|
||||
try
|
||||
{
|
||||
BinaryFormatter formatter = new BinaryFormatter();
|
||||
using FileStream fs = new FileStream(filename, FileMode.Create);
|
||||
#pragma warning disable SYSLIB0011
|
||||
formatter.Serialize(fs, states);
|
||||
#pragma warning restore SYSLIB0011
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Error saving file: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Загрузка хранилища из бинарного файла
|
||||
/// </summary>
|
||||
/// <param name="filename"></param>
|
||||
/// <returns></returns>
|
||||
public bool LoadFromFile(string filename)
|
||||
{
|
||||
try
|
||||
{
|
||||
BinaryFormatter formatter = new BinaryFormatter();
|
||||
using FileStream fs = new FileStream(filename, FileMode.Open);
|
||||
#pragma warning disable SYSLIB0011
|
||||
states = (List<SearchState>)formatter.Deserialize(fs);
|
||||
#pragma warning restore SYSLIB0011
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Error loading file: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v7.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v7.0": {
|
||||
"BinarySearch/1.0.0": {
|
||||
"runtime": {
|
||||
"BinarySearch.dll": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"BinarySearch/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,18 @@
|
||||
{
|
||||
"runtimeOptions": {
|
||||
"tfm": "net7.0",
|
||||
"frameworks": [
|
||||
{
|
||||
"name": "Microsoft.NETCore.App",
|
||||
"version": "7.0.0"
|
||||
},
|
||||
{
|
||||
"name": "Microsoft.WindowsDesktop.App",
|
||||
"version": "7.0.0"
|
||||
}
|
||||
],
|
||||
"configProperties": {
|
||||
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"C:\\Users\\Shiplov\\source\\repos\\BinarySearch_PIBD-11_ShipilovNikita\\BinarySearch\\BinarySearch\\BinarySearch.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"C:\\Users\\Shiplov\\source\\repos\\BinarySearch_PIBD-11_ShipilovNikita\\BinarySearch\\BinarySearch\\BinarySearch.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\Users\\Shiplov\\source\\repos\\BinarySearch_PIBD-11_ShipilovNikita\\BinarySearch\\BinarySearch\\BinarySearch.csproj",
|
||||
"projectName": "BinarySearch",
|
||||
"projectPath": "C:\\Users\\Shiplov\\source\\repos\\BinarySearch_PIBD-11_ShipilovNikita\\BinarySearch\\BinarySearch\\BinarySearch.csproj",
|
||||
"packagesPath": "C:\\Users\\Shiplov\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\Shiplov\\source\\repos\\BinarySearch_PIBD-11_ShipilovNikita\\BinarySearch\\BinarySearch\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\Shiplov\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net7.0-windows"
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net7.0-windows7.0": {
|
||||
"targetAlias": "net7.0-windows",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net7.0-windows7.0": {
|
||||
"targetAlias": "net7.0-windows",
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
},
|
||||
"Microsoft.WindowsDesktop.App.WindowsForms": {
|
||||
"privateAssets": "none"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.100\\RuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Shiplov\.nuget\packages\</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.8.0</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="C:\Users\Shiplov\.nuget\packages\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
|
@ -0,0 +1,4 @@
|
||||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v7.0", FrameworkDisplayName = ".NET 7.0")]
|
@ -0,0 +1,25 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Этот код создан программой.
|
||||
// Исполняемая версия:4.0.30319.42000
|
||||
//
|
||||
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
||||
// повторной генерации кода.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("BinarySearch")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("BinarySearch")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("BinarySearch")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
|
||||
[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
|
||||
|
||||
// Создано классом WriteCodeFragment MSBuild.
|
||||
|
@ -0,0 +1 @@
|
||||
1d747fb8a31ff8aaece430d2476a61103b8e3209701086c3b8734998b4b745be
|
Binary file not shown.
@ -0,0 +1,19 @@
|
||||
is_global = true
|
||||
build_property.ApplicationManifest =
|
||||
build_property.StartupObject =
|
||||
build_property.ApplicationDefaultFont =
|
||||
build_property.ApplicationHighDpiMode =
|
||||
build_property.ApplicationUseCompatibleTextRendering =
|
||||
build_property.ApplicationVisualStyles =
|
||||
build_property.TargetFramework = net7.0-windows
|
||||
build_property.TargetPlatformMinVersion = 7.0
|
||||
build_property.UsingMicrosoftNETSdkWeb =
|
||||
build_property.ProjectTypeGuids =
|
||||
build_property.InvariantGlobalization =
|
||||
build_property.PlatformNeutralAssembly =
|
||||
build_property.EnforceExtendedAnalyzerRules =
|
||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||
build_property.RootNamespace = BinarySearch
|
||||
build_property.ProjectDir = C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
@ -0,0 +1,10 @@
|
||||
// <auto-generated/>
|
||||
global using global::System;
|
||||
global using global::System.Collections.Generic;
|
||||
global using global::System.Drawing;
|
||||
global using global::System.IO;
|
||||
global using global::System.Linq;
|
||||
global using global::System.Net.Http;
|
||||
global using global::System.Threading;
|
||||
global using global::System.Threading.Tasks;
|
||||
global using global::System.Windows.Forms;
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
||||
17617cbbbb9c70f103e1bc84611596da5414cd65c4cbfd62e5ffa2cd30ef04af
|
@ -0,0 +1,20 @@
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\bin\Debug\net7.0-windows\BinarySearch.exe
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\bin\Debug\net7.0-windows\BinarySearch.deps.json
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\bin\Debug\net7.0-windows\BinarySearch.runtimeconfig.json
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\bin\Debug\net7.0-windows\BinarySearch.dll
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\bin\Debug\net7.0-windows\BinarySearch.pdb
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\obj\Debug\net7.0-windows\BinarySearch.GeneratedMSBuildEditorConfig.editorconfig
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\obj\Debug\net7.0-windows\BinarySearch.AssemblyInfoInputs.cache
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\obj\Debug\net7.0-windows\BinarySearch.AssemblyInfo.cs
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\obj\Debug\net7.0-windows\BinarySearch.csproj.CoreCompileInputs.cache
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\obj\Debug\net7.0-windows\BinarySearch.dll
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\obj\Debug\net7.0-windows\refint\BinarySearch.dll
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\obj\Debug\net7.0-windows\BinarySearch.pdb
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\obj\Debug\net7.0-windows\BinarySearch.genruntimeconfig.cache
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\obj\Debug\net7.0-windows\ref\BinarySearch.dll
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\obj\Debug\net7.0-windows\BinarySearch.MainForm.resources
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\obj\Debug\net7.0-windows\BinarySearch.csproj.GenerateResource.cache
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\obj\Debug\net7.0-windows\BinarySearch.InitDataForm.resources
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\obj\Debug\net7.0-windows\BinarySearch.InfoForm.resources
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\obj\Debug\net7.0-windows\BinarySearch.Forms.AddForm.resources
|
||||
C:\Users\Shiplov\source\repos\BinarySearch_PIBD-11_ShipilovNikita\BinarySearch\BinarySearch\obj\Debug\net7.0-windows\BinarySearch.Properties.Resources.resources
|
Binary file not shown.
@ -0,0 +1,11 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v7.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v7.0": {}
|
||||
},
|
||||
"libraries": {}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
{
|
||||
"runtimeOptions": {
|
||||
"tfm": "net7.0",
|
||||
"frameworks": [
|
||||
{
|
||||
"name": "Microsoft.NETCore.App",
|
||||
"version": "7.0.0"
|
||||
},
|
||||
{
|
||||
"name": "Microsoft.WindowsDesktop.App",
|
||||
"version": "7.0.0"
|
||||
}
|
||||
],
|
||||
"additionalProbingPaths": [
|
||||
"C:\\Users\\Shiplov\\.dotnet\\store\\|arch|\\|tfm|",
|
||||
"C:\\Users\\Shiplov\\.nuget\\packages"
|
||||
],
|
||||
"configProperties": {
|
||||
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true,
|
||||
"Microsoft.NETCore.DotNetHostPolicy.SetAppPaths": true
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
@ -0,0 +1 @@
|
||||
25f9c3050f970304723cee3b20bcbf874bf3fff9365ec968ddade2be0586b906
|
Binary file not shown.
Binary file not shown.
BIN
BinarySearch/BinarySearch/obj/Debug/net7.0-windows/apphost.exe
Normal file
BIN
BinarySearch/BinarySearch/obj/Debug/net7.0-windows/apphost.exe
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
71
BinarySearch/BinarySearch/obj/project.assets.json
Normal file
71
BinarySearch/BinarySearch/obj/project.assets.json
Normal file
@ -0,0 +1,71 @@
|
||||
{
|
||||
"version": 3,
|
||||
"targets": {
|
||||
"net7.0-windows7.0": {}
|
||||
},
|
||||
"libraries": {},
|
||||
"projectFileDependencyGroups": {
|
||||
"net7.0-windows7.0": []
|
||||
},
|
||||
"packageFolders": {
|
||||
"C:\\Users\\Shiplov\\.nuget\\packages\\": {}
|
||||
},
|
||||
"project": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\Users\\Shiplov\\source\\repos\\BinarySearch_PIBD-11_ShipilovNikita\\BinarySearch\\BinarySearch\\BinarySearch.csproj",
|
||||
"projectName": "BinarySearch",
|
||||
"projectPath": "C:\\Users\\Shiplov\\source\\repos\\BinarySearch_PIBD-11_ShipilovNikita\\BinarySearch\\BinarySearch\\BinarySearch.csproj",
|
||||
"packagesPath": "C:\\Users\\Shiplov\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\Shiplov\\source\\repos\\BinarySearch_PIBD-11_ShipilovNikita\\BinarySearch\\BinarySearch\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\Shiplov\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net7.0-windows"
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net7.0-windows7.0": {
|
||||
"targetAlias": "net7.0-windows",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net7.0-windows7.0": {
|
||||
"targetAlias": "net7.0-windows",
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
},
|
||||
"Microsoft.WindowsDesktop.App.WindowsForms": {
|
||||
"privateAssets": "none"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.100\\RuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
8
BinarySearch/BinarySearch/obj/project.nuget.cache
Normal file
8
BinarySearch/BinarySearch/obj/project.nuget.cache
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "HM7korIVwiBWjMmV/uHAObjv0X4KmytAWZoSMpBbHgkLArKWuV9FBcza8FWniuc9HTB3YhxSOB2WQ7stkxmMCQ==",
|
||||
"success": true,
|
||||
"projectFilePath": "C:\\Users\\Shiplov\\source\\repos\\BinarySearch_PIBD-11_ShipilovNikita\\BinarySearch\\BinarySearch\\BinarySearch.csproj",
|
||||
"expectedPackageFiles": [],
|
||||
"logs": []
|
||||
}
|
Loading…
Reference in New Issue
Block a user