refactoring and bug fix
This commit is contained in:
248
TelemetryIO/MainForm.Designer.cs
generated
248
TelemetryIO/MainForm.Designer.cs
generated
@ -28,66 +28,29 @@
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.PortSelector = new System.Windows.Forms.ComboBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.Send_btn = new System.Windows.Forms.Button();
|
||||
this.Connect_btn = new System.Windows.Forms.Button();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
||||
this.InfoLabel = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.SpeedSelector = new System.Windows.Forms.ComboBox();
|
||||
this.SendContinuous_btn = new System.Windows.Forms.Button();
|
||||
this.IMU_label = new System.Windows.Forms.Label();
|
||||
this.TestWrite_btn = new System.Windows.Forms.Button();
|
||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.ratePID_control = new TelemetryIO.RatePID();
|
||||
this.monitorVars1 = new TelemetryIO.MonitorVars();
|
||||
this.name_label = new System.Windows.Forms.Label();
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.Connect_btn = new System.Windows.Forms.Button();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.SpeedSelector = new System.Windows.Forms.ComboBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.PortSelector = new System.Windows.Forms.ComboBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.ratePID_control = new TelemetryIO.RatePID();
|
||||
this.tabControl1.SuspendLayout();
|
||||
this.tabPage1.SuspendLayout();
|
||||
this.tabPage2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// PortSelector
|
||||
//
|
||||
this.PortSelector.FormattingEnabled = true;
|
||||
this.PortSelector.Location = new System.Drawing.Point(63, 12);
|
||||
this.PortSelector.Name = "PortSelector";
|
||||
this.PortSelector.Size = new System.Drawing.Size(121, 21);
|
||||
this.PortSelector.TabIndex = 0;
|
||||
this.PortSelector.MouseDown += new System.Windows.Forms.MouseEventHandler(this.PortSelector_RefreshItems);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.label1.Location = new System.Drawing.Point(16, 14);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(41, 17);
|
||||
this.label1.TabIndex = 1;
|
||||
this.label1.Text = "Порт";
|
||||
//
|
||||
// Send_btn
|
||||
//
|
||||
this.Send_btn.Location = new System.Drawing.Point(118, 57);
|
||||
this.Send_btn.Name = "Send_btn";
|
||||
this.Send_btn.Size = new System.Drawing.Size(66, 21);
|
||||
this.Send_btn.TabIndex = 2;
|
||||
this.Send_btn.Text = "Send";
|
||||
this.Send_btn.UseVisualStyleBackColor = true;
|
||||
this.Send_btn.Click += new System.EventHandler(this.Send_btn_Click);
|
||||
//
|
||||
// Connect_btn
|
||||
//
|
||||
this.Connect_btn.Location = new System.Drawing.Point(19, 57);
|
||||
this.Connect_btn.Name = "Connect_btn";
|
||||
this.Connect_btn.Size = new System.Drawing.Size(79, 21);
|
||||
this.Connect_btn.TabIndex = 3;
|
||||
this.Connect_btn.Text = "Подключить";
|
||||
this.Connect_btn.UseVisualStyleBackColor = true;
|
||||
this.Connect_btn.Click += new System.EventHandler(this.Connect_btn_Click);
|
||||
//
|
||||
// InfoLabel
|
||||
//
|
||||
this.InfoLabel.Location = new System.Drawing.Point(12, 793);
|
||||
@ -96,52 +59,6 @@
|
||||
this.InfoLabel.TabIndex = 4;
|
||||
this.InfoLabel.Text = "Ok";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.label2.Location = new System.Drawing.Point(208, 14);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(69, 17);
|
||||
this.label2.TabIndex = 6;
|
||||
this.label2.Text = "Скорость";
|
||||
//
|
||||
// SpeedSelector
|
||||
//
|
||||
this.SpeedSelector.FormattingEnabled = true;
|
||||
this.SpeedSelector.Location = new System.Drawing.Point(283, 12);
|
||||
this.SpeedSelector.Name = "SpeedSelector";
|
||||
this.SpeedSelector.Size = new System.Drawing.Size(121, 21);
|
||||
this.SpeedSelector.TabIndex = 5;
|
||||
//
|
||||
// SendContinuous_btn
|
||||
//
|
||||
this.SendContinuous_btn.Location = new System.Drawing.Point(190, 57);
|
||||
this.SendContinuous_btn.Name = "SendContinuous_btn";
|
||||
this.SendContinuous_btn.Size = new System.Drawing.Size(109, 21);
|
||||
this.SendContinuous_btn.TabIndex = 7;
|
||||
this.SendContinuous_btn.Text = "Send_Continuous";
|
||||
this.SendContinuous_btn.UseVisualStyleBackColor = true;
|
||||
this.SendContinuous_btn.Click += new System.EventHandler(this.SendContinuous_btn_Click);
|
||||
//
|
||||
// IMU_label
|
||||
//
|
||||
this.IMU_label.Location = new System.Drawing.Point(496, 16);
|
||||
this.IMU_label.Name = "IMU_label";
|
||||
this.IMU_label.Size = new System.Drawing.Size(208, 19);
|
||||
this.IMU_label.TabIndex = 8;
|
||||
this.IMU_label.Text = "label3";
|
||||
//
|
||||
// TestWrite_btn
|
||||
//
|
||||
this.TestWrite_btn.Location = new System.Drawing.Point(318, 56);
|
||||
this.TestWrite_btn.Name = "TestWrite_btn";
|
||||
this.TestWrite_btn.Size = new System.Drawing.Size(75, 23);
|
||||
this.TestWrite_btn.TabIndex = 9;
|
||||
this.TestWrite_btn.Text = "TestWrite";
|
||||
this.TestWrite_btn.UseVisualStyleBackColor = true;
|
||||
this.TestWrite_btn.Click += new System.EventHandler(this.TestWrite_btn_Click);
|
||||
//
|
||||
// tabControl1
|
||||
//
|
||||
this.tabControl1.Alignment = System.Windows.Forms.TabAlignment.Bottom;
|
||||
@ -177,16 +94,6 @@
|
||||
this.tabPage2.Text = "Monitor";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// ratePID_control
|
||||
//
|
||||
this.ratePID_control.BackColor = System.Drawing.Color.AntiqueWhite;
|
||||
this.ratePID_control.bottom_label = null;
|
||||
this.ratePID_control.Location = new System.Drawing.Point(6, 6);
|
||||
this.ratePID_control.Name = "ratePID_control";
|
||||
this.ratePID_control.serial = null;
|
||||
this.ratePID_control.Size = new System.Drawing.Size(1240, 600);
|
||||
this.ratePID_control.TabIndex = 11;
|
||||
//
|
||||
// monitorVars1
|
||||
//
|
||||
this.monitorVars1.Location = new System.Drawing.Point(6, 6);
|
||||
@ -198,57 +105,144 @@
|
||||
// name_label
|
||||
//
|
||||
this.name_label.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.name_label.Location = new System.Drawing.Point(1203, 10);
|
||||
this.name_label.Location = new System.Drawing.Point(402, 11);
|
||||
this.name_label.Name = "name_label";
|
||||
this.name_label.Size = new System.Drawing.Size(148, 23);
|
||||
this.name_label.TabIndex = 11;
|
||||
this.name_label.Text = "name";
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
|
||||
this.pictureBox1.Location = new System.Drawing.Point(1287, 12);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(64, 64);
|
||||
this.pictureBox1.TabIndex = 12;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Controls.Add(this.Connect_btn);
|
||||
this.groupBox1.Controls.Add(this.label2);
|
||||
this.groupBox1.Controls.Add(this.SpeedSelector);
|
||||
this.groupBox1.Controls.Add(this.label1);
|
||||
this.groupBox1.Controls.Add(this.PortSelector);
|
||||
this.groupBox1.Location = new System.Drawing.Point(12, 4);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(232, 100);
|
||||
this.groupBox1.TabIndex = 13;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "Подключение";
|
||||
//
|
||||
// Connect_btn
|
||||
//
|
||||
this.Connect_btn.Location = new System.Drawing.Point(79, 71);
|
||||
this.Connect_btn.Name = "Connect_btn";
|
||||
this.Connect_btn.Size = new System.Drawing.Size(121, 21);
|
||||
this.Connect_btn.TabIndex = 9;
|
||||
this.Connect_btn.Text = "Подключить";
|
||||
this.Connect_btn.UseVisualStyleBackColor = true;
|
||||
this.Connect_btn.Click += new System.EventHandler(this.Connect_btn_Click);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.label2.Location = new System.Drawing.Point(4, 46);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(69, 17);
|
||||
this.label2.TabIndex = 8;
|
||||
this.label2.Text = "Скорость";
|
||||
//
|
||||
// SpeedSelector
|
||||
//
|
||||
this.SpeedSelector.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.SpeedSelector.FormattingEnabled = true;
|
||||
this.SpeedSelector.Location = new System.Drawing.Point(79, 44);
|
||||
this.SpeedSelector.Name = "SpeedSelector";
|
||||
this.SpeedSelector.Size = new System.Drawing.Size(121, 21);
|
||||
this.SpeedSelector.TabIndex = 7;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.label1.Location = new System.Drawing.Point(7, 19);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(41, 17);
|
||||
this.label1.TabIndex = 3;
|
||||
this.label1.Text = "Порт";
|
||||
//
|
||||
// PortSelector
|
||||
//
|
||||
this.PortSelector.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.PortSelector.FormattingEnabled = true;
|
||||
this.PortSelector.Location = new System.Drawing.Point(79, 18);
|
||||
this.PortSelector.Name = "PortSelector";
|
||||
this.PortSelector.Size = new System.Drawing.Size(121, 21);
|
||||
this.PortSelector.TabIndex = 2;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.label3.Location = new System.Drawing.Point(266, 12);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(130, 20);
|
||||
this.label3.TabIndex = 14;
|
||||
this.label3.Text = "Имя устройства";
|
||||
//
|
||||
// ratePID_control
|
||||
//
|
||||
this.ratePID_control.BackColor = System.Drawing.Color.AntiqueWhite;
|
||||
this.ratePID_control.bottom_label = null;
|
||||
this.ratePID_control.Location = new System.Drawing.Point(6, 6);
|
||||
this.ratePID_control.Name = "ratePID_control";
|
||||
this.ratePID_control.serial = null;
|
||||
this.ratePID_control.Size = new System.Drawing.Size(1299, 642);
|
||||
this.ratePID_control.TabIndex = 11;
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1363, 820);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.Controls.Add(this.name_label);
|
||||
this.Controls.Add(this.tabControl1);
|
||||
this.Controls.Add(this.TestWrite_btn);
|
||||
this.Controls.Add(this.IMU_label);
|
||||
this.Controls.Add(this.SendContinuous_btn);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.SpeedSelector);
|
||||
this.Controls.Add(this.InfoLabel);
|
||||
this.Controls.Add(this.Connect_btn);
|
||||
this.Controls.Add(this.Send_btn);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.PortSelector);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "MainForm";
|
||||
this.Text = "Form1";
|
||||
this.Text = "TelemetryIO";
|
||||
this.tabControl1.ResumeLayout(false);
|
||||
this.tabPage1.ResumeLayout(false);
|
||||
this.tabPage2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ComboBox PortSelector;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Button Send_btn;
|
||||
private System.Windows.Forms.Button Connect_btn;
|
||||
private System.Windows.Forms.Label InfoLabel;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.ComboBox SpeedSelector;
|
||||
private System.Windows.Forms.Button SendContinuous_btn;
|
||||
private System.Windows.Forms.Label IMU_label;
|
||||
private System.Windows.Forms.Button TestWrite_btn;
|
||||
private System.Windows.Forms.TabControl tabControl1;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
private RatePID ratePID_control;
|
||||
private MonitorVars monitorVars1;
|
||||
private System.Windows.Forms.Label name_label;
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.Button Connect_btn;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.ComboBox SpeedSelector;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.ComboBox PortSelector;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private RatePID ratePID_control;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,7 @@ namespace TelemetryIO
|
||||
private System.Timers.Timer packageReceivingTimeout = new System.Timers.Timer(5);
|
||||
private System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
|
||||
private System.Timers.Timer packageTransferTimer = new System.Timers.Timer(50);
|
||||
|
||||
private FormClosingEventArgs formArgs;
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
@ -33,17 +33,20 @@ namespace TelemetryIO
|
||||
SpeedSelector.Items.AddRange(speedItems);
|
||||
SpeedSelector.SelectedIndex = 3;
|
||||
|
||||
Send_btn.Enabled = false;
|
||||
|
||||
packageTransferTimer.AutoReset = true;
|
||||
timer.Interval = 100;
|
||||
timer.Interval = 500;
|
||||
timer.Start();
|
||||
timer.Tick += Timer_Tick;
|
||||
|
||||
ratePID_control.SubscribeOnEvent(serial);
|
||||
monitorVars1.subscribeOnMonitoringItemsReceived(serial);
|
||||
ratePID_control.bottom_label = InfoLabel;
|
||||
serial.HandShakeOccurred += Serial_HandShakeOccurred;
|
||||
serial.AnswerReceived += Serial_AnswerReceived;
|
||||
}
|
||||
|
||||
private void Serial_AnswerReceived(object sender, SerialEventArgs e)
|
||||
{
|
||||
if(e.Answer == "EXITAPP") base.OnFormClosing(formArgs);
|
||||
}
|
||||
|
||||
private void Serial_HandShakeOccurred(object sender, EventArgs e)
|
||||
@ -62,23 +65,12 @@ namespace TelemetryIO
|
||||
private void Timer_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (name_label.InvokeRequired) {
|
||||
name_label.BeginInvoke(new Action(() => IMU_label.Text = Telemetry.Instance.name)); // Асинхронный вызов
|
||||
name_label.BeginInvoke(new Action(() => name_label.Text = Telemetry.Instance.name)); // Асинхронный вызов
|
||||
}
|
||||
else
|
||||
{
|
||||
name_label.Text = Telemetry.Instance.name;
|
||||
}
|
||||
UpdateLabel(serial.view_str);
|
||||
}
|
||||
|
||||
private void serialSend()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void Send_btn_Click(object sender, EventArgs e)
|
||||
{
|
||||
serial.sendTest();
|
||||
}
|
||||
|
||||
private void Connect_btn_Click(object sender, EventArgs e)
|
||||
@ -115,16 +107,13 @@ namespace TelemetryIO
|
||||
return;
|
||||
}
|
||||
b.Text = "Отключить";
|
||||
Send_btn.Enabled = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
serial.Close();
|
||||
b.Text = "Подключить";
|
||||
Send_btn.Enabled = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void PortSelector_RefreshItems(object sender, MouseEventArgs e)
|
||||
@ -134,50 +123,10 @@ namespace TelemetryIO
|
||||
PortSelector.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
|
||||
private void SendContinuous_btn_Click(object sender, EventArgs e)
|
||||
{
|
||||
serial.sendTestCont();
|
||||
/*Button b = sender as Button;
|
||||
if (sendContinuousFlag == true)
|
||||
{
|
||||
sendContinuousFlag = false;
|
||||
packageTransferTimer.Stop();
|
||||
|
||||
b.Text = "Stop_Sending";
|
||||
}
|
||||
else
|
||||
{
|
||||
sendContinuousFlag = true;
|
||||
send_queue.Add(prepareTelegram());
|
||||
packageTransferTimer.Start();
|
||||
b.Text = "Send_Continuous";
|
||||
}*/
|
||||
}
|
||||
|
||||
protected override void OnFormClosing(FormClosingEventArgs e)
|
||||
{
|
||||
serial.Exit();
|
||||
base.OnFormClosing(e);
|
||||
}
|
||||
|
||||
public void UpdateLabel(string newText)
|
||||
{
|
||||
|
||||
if (IMU_label.InvokeRequired)
|
||||
{
|
||||
IMU_label.BeginInvoke(new Action(() => IMU_label.Text = newText)); // Асинхронный вызов
|
||||
}
|
||||
else
|
||||
{
|
||||
IMU_label.Text = newText;
|
||||
}
|
||||
}
|
||||
|
||||
private void TestWrite_btn_Click(object sender, EventArgs e)
|
||||
{
|
||||
float[] f = {0, 1, 2, 3, 4, 5, 6, 7, 8};
|
||||
serial.sendTestWrite(f);
|
||||
formArgs = e;
|
||||
if(serial.isOpen)serial.requestExit();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -117,4 +117,350 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
0ppQFP0Pxd+g80pnxg0AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAAMMOAADDDgAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEANQEBAPkBA
|
||||
QGhAQECDQEBAkEBAQI9AQECBQEBAakBAQEVAQEAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBACEBA
|
||||
QGFAQEC8QEBA+kBAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQNlAQECPQEBAPEBA
|
||||
QAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AABAQEADQEBAaEBAQOhAQED/QEBA/0BAQPpAQEDLQEBAnUBAQIBAQEBwQEBAcEBAQH5AQECYQEBAvkBA
|
||||
QPFAQED/QEBA/0BAQP9AQEDYQEBAZUBAQAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAABAQEAbQEBAwUBAQP9AQED/QEBAzEBAQGJAQEARAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAABAQEADQEBAOEBAQIhAQEDlQEBA/0BAQP9AQEDdQEBAUAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAkQEBA4UBAQP9AQEDlQEBAVEBAQAEAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBABEBAQFhAQEDTQEBA/0BA
|
||||
QP9AQEClQEBADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAVQEBA4EBAQP9AQEDBQEBAFQAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAQEBABEBAQG1AQEDzQEBA/0BAQNRAQEAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEABQEBAukBA
|
||||
QP9AQEDGQEBACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAJEBAQNJAQED/QEBA4UBAQB8AAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAQEBAXEBAQP9AQEDpQEBAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAPQEBAxUBA
|
||||
QP9AQEDWQEBADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAQEBAA0BAQN9AQED/QEBAXwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAEBAQA5AQEDTQEBA/0BAQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQFJAQED/QEBA2UBAQAIAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAJkBAQPZAQED+QEBAPQAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECpQEBA/0BA
|
||||
QG8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECBQEBA/0BA
|
||||
QLcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AABAQEAEQEBA8EBAQP9AQEAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAADgAAABMAAAAUAAAAEgAAAA4AAAAJAAAABAAA
|
||||
AAAAAAAAQEBAEkBAQPVAQED+QEBAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAQEBALUBAQP9AQEDfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAATAAAATgAAAJkAAADWAAAA9QAA
|
||||
APkAAADhAAAAqAAAAFkAAAARAAAAAQAAAABAQECsQEBA/0BAQGgAAAAAAAAAAAAAAAAAAAAAAAAAOQAA
|
||||
AIkAAADIAAAA6AAAAOoAAADQAAAAlgAAAEoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAkBAQLpAQED/QEBAswAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAA3AAAAtQAA
|
||||
APUAAADzAAAA7QAAAOsAAADsAAAA8AAAAPYAAAD9AAAAywAAAEAAAAAHQEBAbUBAQP9AQECWAAAAAAAA
|
||||
AAAAAAAgAAAAqQAAAPEAAAD7AAAA/QAAAP4AAAD+AAAA/AAAAPcAAADwAAAAtwAAADQAAAAEAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQCVAQED7QEBA/0BA
|
||||
QJsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAQAAABMAAAA3AAAAPQAAADWAAAAfAAAADQAAAAPAAAADAAAACcAAABrAAAAzwAAAPcAAADxAAAAWzs7
|
||||
O1JAQED/QEBAtQAAAAAAAAA3AAAA1gAAAPsAAADsAAAAjQAAAEFlAIUvLwBAHgAAADkAAAB9AAAA3QAA
|
||||
APcAAADeAAAATQAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AABAQECHQEBA/kBAQP9AQECKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAA0AAAA2wAAAPQAAACiAAAAGwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAoAAACRAAAA8QAAAPEnJyd2QEBA/0BAQLcAAAAhAAAA1gAAAPwAAAC2AAAAJQAAAAYAAAACwgD+Zb8A
|
||||
+RBCAFkDAAAACAAAABwAAACgAAAA9AAAAN8AAAA2AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAABAQEAGQEBAvUBAQP9AQED/QEBAzEBAQAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAtQAAAPYAAACiAAAAEAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAD/5QAC1L4ABAYFAJMAAAD1Gxsb3EBAQP9AQEClAAAAqwAAAPgAAAC0AAAAFgAA
|
||||
AAAAAAAAAAAAAMMA/6DDAP83wwD/BAAAAAAAAAAAAAAADwAAAKEAAAD1AAAAtgAAABIAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAjQEBA40BAQPxAQED/QEBA/0BAQP5AQECmQEBADgAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAO4AAADeAAAAHwAA
|
||||
AAEAAAAAAAAAAAAAAAAAAAAAAAAAAP/lAAL/5QAJ/+UAOv/lAEiolgASAAAAzxsbG/0/Pz/7MjIypAAA
|
||||
AOwAAADrAAAAJQAAAAEAAAAAAAAAAAAAAADDAP/QwwD/asMA/wkAAAAAAAAAAAAAAAAAAAAaAAAA1gAA
|
||||
APYAAABOAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAuEBAQP9AQED/QEBA/0BA
|
||||
QP9AQED/QEBA/UBAQIJAQEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AJUAAAD3HhoAgMu2ABn/5QAO/+UACf/lAAX/5QAC/+UAAf/lAAn/5QAs/+UAn//lAKb/5QAQ/+UAAAAA
|
||||
AG4AAADzAgICpgYGBqAAAAD1AAAAhwAAAAsAAAAAAAAAAAAAAADDAP8awwD/6cMA/5vDAP8NAAAAAAAA
|
||||
AAAAAAAAAAAAAQAAAHsAAADzAAAAmQAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQFFAQEDqQEBA/0BA
|
||||
QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQOpAQEBSAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAADNAAAA/GhdAFL74QBx/+UAe//lAGr/5QBN/+UALP/lACP/5QCJ/+UA7v/l
|
||||
AMv/5QAb/+UAAQAAAAAAAAAqAAAA7QAAAN4AAADbAAAA+wAAAEAAAAADAAAAAAAAAAAAAAAAwwD/ScMA
|
||||
//DDAP/LwwD/EAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAA7gAAANYAAAARAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AABAQEDpQEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA6gAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5wAAAP4AAAAe9NsACf/lAGj/5QDU/+UA8//l
|
||||
AP7/5QD9/+UA/v/lAOH/5QAt/+UAAgAAAAAAAAAAAAAADAAAAOwAAAD5AAAA+QAAAP4AAAAfAAAAAAAA
|
||||
AAAAAAAAwwD/JcMA/77DAP/6wwD/9cMA/zjDAP8DAAAAAAAAAAAAAAAAAAAADwAAAO0AAAD1AAAAEgAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAQEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA
|
||||
QP9AQED/QEBA/0BAQP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOUAAAD+AAAAIAAA
|
||||
AAEAAAAA/+UAFP/lAIP/5QDl/+UA/v/lAP//5QBI/+UABAAAAAAAAAAAAAAAAAAAAA0AAADuAAAA+QAA
|
||||
APgAAAD+AAAAHQAAAADDAP8AwwD/Y8MA/+XDAP/8wwD//8MA//7DAP/hwwD/P8MA/wMAAAAAAAAAAAAA
|
||||
AAwAAADuAAAA+QAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA
|
||||
QP9AQED/QEBA/xSnwv9AQED/QEBA/0BAQP9AQED/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAADFAAAA/AAAAEUAAAACAAAAAAAAAAAAAAAA/+UAP//lAPH/5QD+/+UADgAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAvAAAA8gAAANwAAADaAAAA/AAAADy6APMbwwD/rMMA/+nDAP/CwwD/kMMA/2PDAP+YwwD/7sMA
|
||||
/+XDAP9JwwD/AwAAAAAAAAApAAAA8gAAAOAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAABAQED/QEBA/0BA
|
||||
QP9AQED/MGVv/y1seP8tbHj/LWx4/y1seP8Mutn/QEBA/0BAQP9AQED/QEBA/wAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAhgAAAPkAAACRAAAACAAAAAAAAAAAAAAAAP/lAAD/5QDE/+UA9//l
|
||||
AAsAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAPgAAACeAAAAmQAAAPkHAAqGuwD1TMMA/yzDAP8KwwD/BsMA
|
||||
/wbDAP8EwwD/CcMA/x/DAP98wwD/y8MA/1LDAP8DAAAAbQAAAPcAAACnAAAACAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAQEBA/0BAQP9AQED/QEBA/yKFl/8ck6n/HJOp/xyTqf8ck6n/CMTm/0BAQP9AQED/QEBA/0BA
|
||||
QP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcAAADvAAAA7gAAACoAAAABAAAAAAAA
|
||||
AAAAAAAA/+UAZP/lAPH/5QAJAAAAAAAAAAAAAAAAAAAAEgAAAOEAAAD8AAAASwAAAEMAAAD2AAAA6yUA
|
||||
NBmVAMMBwwD/AAAAAAAAAAAAAAAAAAAAAADDAP8BwwD/CcMA/xfDAP9UogDUNwwAFNYAAAD9AAAAVgAA
|
||||
AAMAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/xKt
|
||||
yf9AQED/QEBA/0BAQP9AQED/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApgAA
|
||||
APoAAAC5AAAAGQAAAAEAAAAAAAAAAP/lAA//5QDh/+UABwAAAAAAAAAAAAAACQAAAKcAAAD7AAAAwAAA
|
||||
AAYAAAAAAAAAuQAAAPwAAACuAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDAP8AswDrCiAA
|
||||
LZoBAAL5AAAAygAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQED/QEBA/0BAQP9AQED/Ml5m/0BA
|
||||
QP9AQED/QEBA/0BAQP82Vlz/QEBA/0BAQP9AQED/QEBA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAB8AAADSAAAA/AAAALgAAAAqAAAADAAAAAQAAAAB/uQAicCsAAYAAAAHAAAAGAAA
|
||||
AKsAAAD8AAAA6QAAACoAAAABAAAAAAAAACMAAADoAAAA/QAAAKsAAAASAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAADAAAAJcAAAD0AAAA8AAAAD0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBA/0BA
|
||||
QP9AQED/QEBA/xyUqv8Sq8b/MGNs/xSmwP8Sq8f/JICQ/0BAQP9AQED/QEBA/0BAQP8AAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAANIAAAD3AAAA7QAAAIsAAABDAAAAIa6b
|
||||
AEMWEgA9AAAAggAAAOgAAAD7AAAA5wAAAEAAAAABAAAAAAAAAAAAAAAAAAAAPAAAAOoAAAD8AAAA5AAA
|
||||
AHoAAAAvAAAADAAAAAwAAAArAAAAcAAAANMAAAD2AAAA8AAAAFUAAAAFAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAEBAQP9AQED/QEBA/0BAQP9AQED/OkxP/w600v8yXmb/QEBA/w+z0P9AQED/QEBA/0BA
|
||||
QP9AQED/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAqQAA
|
||||
AO8AAAD7AAAA/gAAAP8AAAD/AAAA/gAAAPwAAAD4AAAAuQAAACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAnAAAAwAAAAP0AAAD5AAAA9QAAAPEAAADvAAAA8AAAAPQAAAD9AAAAxwAAADwAAAAHAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQED/QEBA/0BAQP9AQED/PUVG/z1FR/8lfo7/PUVH/z1F
|
||||
R/8Rrsv/QEBA/0BAQP9AQED/QEBA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAABAAAABYAAACEAAAA2gAAAPoAAAD/AAAA/wAAAPoAAADZAAAAfQAAAAgAAAABAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAB5AAAA2AAAAPoAAAD+AAAA/wAAAPoAAADaAAAAgwAA
|
||||
ABIAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBA/0BAQP9AQED/QEBA/yCL
|
||||
n/8ZmrH/GJy0/xmasf8ZmrH/F5+3/0BAQP9AQED/QEBA/0BAQP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAD4AAADIAAAA/AAAAPIAAADsCAAP7AAAAOwAAADxAAAA9wAA
|
||||
AP0AAADDAAAALQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAC7AAAA+gAAAP0AAAD+AAAA/wAA
|
||||
AP8AAAD+AAAA+wAAAPIAAACuAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBA
|
||||
QP9AQED/QEBA/0BAQP8fjaH/LWt2/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/AAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAFcAAADwAAAA9QAAANEAAABvBAAIK5MA
|
||||
wCkZACQMAAAALAAAAHUAAADcAAAA+wAAAO4AAABFAAAAAAAAAAAAAAAAAAAAAAAAAD8AAADqAAAA/QAA
|
||||
AOoAAACAAAAAOQAAABoAAAAcAAAAPgAAAIYAAADqAAAA+QAAANkAAAA5AAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAABAQED/QEBA/0BAQP9AQED/LWt2/xiet/8LvN7/IYeZ/zRbY/9AQED/QEBA/0BA
|
||||
QP9AQED/QEBA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAADwAAAA8wAA
|
||||
AJUAAAALAAAAAMMA/wHDAP96wwD/BQAAAAAAAAAAAAAADgAAAKQAAAD7AAAA7AAAACgAAAAAAAAAAAAA
|
||||
ACkAAADsAAAA/QAAAKsAAAATAAAABAAAAAIAAAAAAAAAAAAAAAMAAAAJAAAAIQAAALMAAAD9AAAA2QAA
|
||||
ACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBA/0BAQP9AQED/QEBA/0BAQP9AQED/GJy0/ytv
|
||||
e/8Sq8f/DrXV/0BAQP9AQED/QEBA/0BAQP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AA4AAADLAAAA+gAAAJMAAAAAAAAAAAAAAADDAP8EwwD/t8MA/y0AAAAAAAAAAAAAAAAAAAAFAAAApgAA
|
||||
APwAAAC9AAAAAAAAAAQAAADCAAAA/AAAAKgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAEAAAAVAAAAtAAAAPwAAACqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQP9AQED/QEBA/0BA
|
||||
QP9AQED/QEBA/xictP8hiJv/BM3y/xyUq/9AQED/QEBA/0BAQP9AQED/AAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAIAAABXAAAA/QAAANQAAAALAAAAAAAAAAAAAAAAwwD/CsMA/+fDAP9gAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAABMAAADmAAAA+QAAAEUAAABLAAAA/gAAAOIAAAAQAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAP/lAAH/5QA1/uQARAAAACMAAADrAAAA8gAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AABAQED/QEBA/0BAQP9AQED/IoSW/wy52P8VpL7/MWFq/zxISv9AQED/QEBA/0BAQP9AQED/QEBA/wAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAApwAAAPkAAABsAAAAAAAAAAAAAAAAwwD/AcMA
|
||||
/yzDAP/6wwD/kwAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAfwAAAPsAAACaAAAAnQAAAPkAAAB3AAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAA/+UAAf/lACP/5QCb/+UAnv/lAAkAAAAGAAAAjAAAAPsAAACKAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAQEBA/0BAQP9AQED/QEBA/y5oc/86TVD/QEBA/0BAQP9AQED/QEBA/0BA
|
||||
QP9AQED/QEBA/0BAQP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAOAAAAD1AAAAKAAA
|
||||
AAAAAAAAwwD/AMMA/wjDAP9lwwD//MMA/8PDAP8CAAAAAAAAAAAAAAAAAAAAAgAAADgAAAD9AAAA2wAA
|
||||
ANwJBgD2iXsAT//lAIH/5QB2/+UAVP/lADP/5QAT/+UAE//lAIb/5QDn/+UAxv/lABn/5QAAAAAAAgAA
|
||||
AEAAAAD9AAAAyQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQP9AQED/QEBA/0BAQP89Rkj/HZKn/xGu
|
||||
zP8Rrsz/Ea7M/xGuzP9AQED/QEBA/0BAQP9AQED/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AA0AAAD5AAAA8QAAAAzDAP8AwwD/AMMA/w7DAP9GwwD/1sMA//7DAP/uwwD/NcMA/wMAAAAAAAAAAAAA
|
||||
AAAAAAAaAAAA/gAAAPkAAAD5AAAA8UE6AA3/5QAT/+UAhP/lAO7/5QD3/+UA8//lAO//5QD2/+UA4v/l
|
||||
ACz/5QABAAAAAAAAAAAAAAAdAAAA/gAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQED/QEBA/0BA
|
||||
QP9AQED/Cr7e/zVZYP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/wAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAPAAAA9QAAAPAUAB4QwwD/BMMA/xzDAP+DwwD/8MMA//TDAP/xwwD/9sMA
|
||||
/+LDAP8+wwD/AwAAAAAAAAAAAAAAHQAAAP4AAAD4AAAA+QAAAO8AAAAM/+UAAP/lAAT/5QAn/+UApP/l
|
||||
APz/5QD+/+UA8//lAEf/5QACAAAAAAAAAAAAAAAAAAAAGwAAAP4AAADqAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAQEBA/0BAQP9AQED/QEBA/wq+3v9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA
|
||||
QP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAANQAAADwKgA5OMMA/yrDAP+swwD/08MA
|
||||
/6bDAP94wwD/U8MA/5DDAP/mwwD/4cMA/0jDAP8DAAAAAwAAAEAAAAD8AAAA2gAAAN0AAADwAAAALAAA
|
||||
AAAAAAAA/+UAAP/lAAv/5QBf/+UA///lAO3/5QAEAAAAAAAAAAAAAAAAAAAAAwAAADoAAAD8AAAAzwAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQP9AQED/QEBA/0BAQP8lf4//GZy0/yZ8jf8mfI3/JnyN/yZ8
|
||||
jf9AQED/QEBA/0BAQP9AQED/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAACWAAAA9SoA
|
||||
OYjBAPxAwwD/IMMA/wEAAAAAAAAAAAAAAADDAP8BwwD/F8MA/3jDAP/IwwD/TUMAWgsAAACIAAAA9wAA
|
||||
AJkAAAChAAAA9AAAAHIAAAAAAAAAAAAAAAD/5QAA/+UAFf/lANv/5QDmAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAgAAAB+AAAA9wAAAJYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEDpQEBA/0BAQP9AQED/QEBA/0BA
|
||||
QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAFAAAASgAAAPUAAADcAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDAP8AwwD/C8EA
|
||||
/FKFAK5OAAAA7AAAAO0AAABDAAAAVAAAAP0AAADXAAAADQAAAAAAAAAAAAAAAP/lAAr/5QCB/+UA4QAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAdAAAA4AAAAPAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBATkBA
|
||||
QOlAQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA6UBAQE8AAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACzAAAA9gAAAKcAAAATAAAAAQAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAEAAAAYAAAAtQAAAPgAAACsAAAAAAAAABIAAADGAAAA9wAAAJoAAAAAAAAAAAAA
|
||||
AAD/5QAC/+UAK//lANgAAAAAAAAAAAAAAAAAAAAQAAAAowAAAPcAAAC2AAAABwAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAADT09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT
|
||||
0/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAMgAAANoAAAD1AAAApwAA
|
||||
ACQAAAALAAAAAwAAAAEAAAABAAAAAwAAAAgAAAAnAAAAtwAAAPwAAADVAAAAIQAAAAAAAAADAAAAOQAA
|
||||
AO8AAAD1AAAAmAAAAAwAAAAA/+UAAP/lABD/5QCKAAAAAAAAAAEAAAAbAAAApQAAAPUAAADdAAAAMgAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT
|
||||
0//T09P/09PT/9PT0//T09P/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAUAAABGAAAA2AAAAPYAAADiAAAAgQAAAD4AAAAgAAAAIQAAAEQAAACOAAAA7AAAAPoAAADUAAAANgAA
|
||||
AAAAAAAAAAAAAAAAAAYAAABRAAAA8AAAAPoAAADYAAAAbwAAACqDdQARzLYAOQAAADMAAAB9AAAA2QAA
|
||||
APYAAADeAAAASQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANPT0/9/Mhr/fzIa/38y
|
||||
Gv/T09P/09PT/9PT0//T09P/fzIa/38yGv9/Mhr/09PT/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADEAAACzAAAA7AAAAPYAAAD8AAAA/gAAAP4AAAD8AAAA+QAA
|
||||
AO4AAACnAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAADoAAADJAAAA/QAAAPkAAAD1AgEA8RQQ
|
||||
APIAAADwAAAA9QAAAPYAAAC2AAAANAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AADT09P/fzIa/38yGv9/Mhr/09PT/9PT0//T09P/09PT/38yGv9/Mhr/fzIa/9PT0/8AAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAEYAAACSAAAAywAA
|
||||
AOUAAADjAAAAxQAAAIcAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAA
|
||||
AFQAAAClAAAA4AAAAPkAAAD1AAAA1QAAAJcAAABMAAAAEAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAA09PT/38yGv9/Mhr/fzIa/9PT0//T09P/09PT/9PT0/9/Mhr/fzIa/38y
|
||||
Gv/T09P/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAACAAAABgAAAAoAAAANAAAADwAAAA8AAAALAAAABQAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANPT0//T09P/09PT/9PT0//T09P/09PT/9PT
|
||||
0//T09P/09PT/9PT0//T09P/09PT/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADT09P/09PT/9PT
|
||||
0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAA09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/AAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAANPT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT
|
||||
0//T09P/09PT/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADT09P/09PT/9PT0//T09P/09PT/9PT
|
||||
0//T09P/09PT/9PT0//T09P/09PT/9PT0/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAA////////////////////////4Af///////8AAH///////AAAH//////4D/AP//////A//gP/
|
||||
////4P//gf/////B///g/////8P///B/////h///+H////+H///8P////4////4/////D//4Bh////8f
|
||||
/+ABHgD//h//wAAYAD/+H/+AABAAH/4f/4HwAAAP/A//B/ABxg/4B/8HwAHHB/gD/wACA4cHwAD/AAID
|
||||
h4fAAP8ABgcDh8AA/wgOBgGHwAD/Dh4AAIfAAP8PHgAAB8AA/wccAfAHwAD/gxgh/g/AAP+AACD8D8AA
|
||||
/8AAcAAfwAD/4AH4AD/AAP/gAfwAf8AA/8AA+AB/wAD/gADwAD/AAP+CMGAwH8AA/w44QfwfwAD+DjwD
|
||||
+A/AAP4cPAfgD8AA/hwcAAEPwAD+GA4AAY/AAP4ABgQDj8AA/gAABwcPwAD+A4AHjw/AAP4P8AOPD8AA
|
||||
/wPwQ44P4AH/AABAyB/gAf+AAOAAH+AB/8AB8AA/4AH/8Af8AH/gAf////4B/+AB////////4AH/////
|
||||
///gAf///////+AB////////4AH/////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////8=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
@ -16,6 +16,7 @@ namespace TelemetryIO.Models
|
||||
public string name = "";
|
||||
public float[] raw_imu = new float[6];
|
||||
public float[] quaternion = new float[4];
|
||||
public float[] battery = new float[4];
|
||||
public float[] motor_act = new float[4];
|
||||
public float[] motor_sp = new float[4];
|
||||
public float[] pid0 = new float[9];
|
||||
@ -24,26 +25,28 @@ namespace TelemetryIO.Models
|
||||
public float[] pid3 = new float[9];
|
||||
|
||||
private Telemetry() {
|
||||
dictMonitor.Add("rawAx", new VarAddress(0, 0));
|
||||
dictMonitor.Add("rawAy", new VarAddress(0, 1));
|
||||
dictMonitor.Add("rawAz", new VarAddress(0, 2));
|
||||
dictMonitor.Add("rawGx", new VarAddress(0, 3));
|
||||
dictMonitor.Add("rawGy", new VarAddress(0, 4));
|
||||
dictMonitor.Add("rawGz", new VarAddress(0, 5));
|
||||
dictMonitor.Add("rawAx", new VarAddress(RAW_IMU_ADDRESS, 0));
|
||||
dictMonitor.Add("rawAy", new VarAddress(RAW_IMU_ADDRESS, 1));
|
||||
dictMonitor.Add("rawAz", new VarAddress(RAW_IMU_ADDRESS, 2));
|
||||
dictMonitor.Add("rawGx", new VarAddress(RAW_IMU_ADDRESS, 3));
|
||||
dictMonitor.Add("rawGy", new VarAddress(RAW_IMU_ADDRESS, 4));
|
||||
dictMonitor.Add("rawGz", new VarAddress(RAW_IMU_ADDRESS, 5));
|
||||
|
||||
dictMonitor.Add("Qw", new VarAddress(1, 0));
|
||||
dictMonitor.Add("Qx", new VarAddress(1, 1));
|
||||
dictMonitor.Add("Qy", new VarAddress(1, 2));
|
||||
dictMonitor.Add("Qz", new VarAddress(1, 3));
|
||||
dictMonitor.Add("Qw", new VarAddress(Q_ADDRESS, 0));
|
||||
dictMonitor.Add("Qx", new VarAddress(Q_ADDRESS, 1));
|
||||
dictMonitor.Add("Qy", new VarAddress(Q_ADDRESS, 2));
|
||||
dictMonitor.Add("Qz", new VarAddress(Q_ADDRESS, 3));
|
||||
|
||||
dictMonitor.Add("motor0_Act", new VarAddress(100, 0));
|
||||
dictMonitor.Add("motor1_Act", new VarAddress(100, 1));
|
||||
dictMonitor.Add("motor2_Act", new VarAddress(100, 2));
|
||||
dictMonitor.Add("motor3_Act", new VarAddress(100, 3));
|
||||
dictMonitor.Add("motor4_Act", new VarAddress(100, 4));
|
||||
dictMonitor.Add("motor5_Act", new VarAddress(100, 5));
|
||||
dictMonitor.Add("motor6_Act", new VarAddress(100, 6));
|
||||
dictMonitor.Add("motor7_Act", new VarAddress(100, 7));
|
||||
dictMonitor.Add("Battery[V]", new VarAddress(BAT_ADDRESS, 0));
|
||||
|
||||
dictMonitor.Add("motor0_Act", new VarAddress(MOTORS_ACT_ADDRESS, 0));
|
||||
dictMonitor.Add("motor1_Act", new VarAddress(MOTORS_ACT_ADDRESS, 1));
|
||||
dictMonitor.Add("motor2_Act", new VarAddress(MOTORS_ACT_ADDRESS, 2));
|
||||
dictMonitor.Add("motor3_Act", new VarAddress(MOTORS_ACT_ADDRESS, 3));
|
||||
dictMonitor.Add("motor4_Act", new VarAddress(MOTORS_ACT_ADDRESS, 4));
|
||||
dictMonitor.Add("motor5_Act", new VarAddress(MOTORS_ACT_ADDRESS, 5));
|
||||
dictMonitor.Add("motor6_Act", new VarAddress(MOTORS_ACT_ADDRESS, 6));
|
||||
dictMonitor.Add("motor7_Act", new VarAddress(MOTORS_ACT_ADDRESS, 7));
|
||||
}
|
||||
|
||||
public VarAddress getVarAdress(string name)
|
||||
@ -81,35 +84,43 @@ namespace TelemetryIO.Models
|
||||
if (slot != 9999) Debug.WriteLine(slot);
|
||||
switch (slot)
|
||||
{
|
||||
case 0://RAW IMU
|
||||
case RAW_IMU_ADDRESS://RAW IMU
|
||||
set_float(raw_imu, data, offset, len);
|
||||
break;
|
||||
|
||||
case 1://quaternion
|
||||
case Q_ADDRESS://quaternion
|
||||
set_float(quaternion, data, offset, len);
|
||||
break;
|
||||
|
||||
case 100://motors act
|
||||
case BAT_ADDRESS://battery
|
||||
set_float(battery, data, offset, len);
|
||||
break;
|
||||
|
||||
case MOTORS_ACT_ADDRESS://motors act
|
||||
set_float(motor_act, data, offset, len);
|
||||
break;
|
||||
|
||||
case 1000:
|
||||
case MOTORS_SP_ADDRESS://motors act
|
||||
set_float(motor_sp, data, offset, len);
|
||||
break;
|
||||
|
||||
case PID0_ADDRESS:
|
||||
set_float(pid0, data, offset, len);
|
||||
break;
|
||||
|
||||
case 1001:
|
||||
case PID1_ADDRESS:
|
||||
set_float(pid1, data, offset, len);
|
||||
break;
|
||||
|
||||
case 1002:
|
||||
case PID2_ADDRESS:
|
||||
set_float(pid2, data, offset, len);
|
||||
break;
|
||||
|
||||
case 1003:
|
||||
case PID3_ADDRESS:
|
||||
set_float(pid3, data, offset, len);
|
||||
break;
|
||||
|
||||
case 9999:
|
||||
case NAME_ADDRESS:
|
||||
set_name(data);
|
||||
break;
|
||||
}
|
||||
@ -132,6 +143,20 @@ namespace TelemetryIO.Models
|
||||
name = Encoding.ASCII.GetString(data, 0, 16);
|
||||
}
|
||||
|
||||
public const int RAW_IMU_ADDRESS = 0;
|
||||
public const int Q_ADDRESS = 1;
|
||||
|
||||
public const int BAT_ADDRESS = 50;
|
||||
|
||||
public const int MOTORS_ACT_ADDRESS = 100;
|
||||
public const int MOTORS_SP_ADDRESS = 101;
|
||||
|
||||
public const int PID0_ADDRESS = 1000;
|
||||
public const int PID1_ADDRESS = 1001;
|
||||
public const int PID2_ADDRESS = 1002;
|
||||
public const int PID3_ADDRESS = 1003;
|
||||
|
||||
public const int NAME_ADDRESS = 9999;
|
||||
}
|
||||
|
||||
public class VarAddress
|
||||
|
97
TelemetryIO/MonitorVars.Designer.cs
generated
97
TelemetryIO/MonitorVars.Designer.cs
generated
@ -29,102 +29,127 @@
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.MainFormPlot = new ScottPlot.WinForms.FormsPlot();
|
||||
this.mon_test_label = new System.Windows.Forms.Label();
|
||||
this.add_btn = new System.Windows.Forms.Button();
|
||||
this.del_btn = new System.Windows.Forms.Button();
|
||||
this.monNames_label = new System.Windows.Forms.Label();
|
||||
this.monitorItems_cb = new System.Windows.Forms.ComboBox();
|
||||
this.monitorItems_lb = new System.Windows.Forms.ListBox();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.AutoScale_check = new System.Windows.Forms.CheckBox();
|
||||
this.StartStop_btn = new System.Windows.Forms.Button();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// MainFormPlot
|
||||
//
|
||||
this.MainFormPlot.DisplayScale = 0F;
|
||||
this.MainFormPlot.Location = new System.Drawing.Point(238, 58);
|
||||
this.MainFormPlot.Location = new System.Drawing.Point(238, 0);
|
||||
this.MainFormPlot.Name = "MainFormPlot";
|
||||
this.MainFormPlot.Size = new System.Drawing.Size(923, 539);
|
||||
this.MainFormPlot.Size = new System.Drawing.Size(951, 597);
|
||||
this.MainFormPlot.TabIndex = 0;
|
||||
//
|
||||
// mon_test_label
|
||||
//
|
||||
this.mon_test_label.AutoSize = true;
|
||||
this.mon_test_label.Location = new System.Drawing.Point(3, 11);
|
||||
this.mon_test_label.Name = "mon_test_label";
|
||||
this.mon_test_label.Size = new System.Drawing.Size(78, 13);
|
||||
this.mon_test_label.TabIndex = 2;
|
||||
this.mon_test_label.Text = "mon_test_label";
|
||||
//
|
||||
// add_btn
|
||||
//
|
||||
this.add_btn.Location = new System.Drawing.Point(20, 88);
|
||||
this.add_btn.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.add_btn.Location = new System.Drawing.Point(130, 3);
|
||||
this.add_btn.Name = "add_btn";
|
||||
this.add_btn.Size = new System.Drawing.Size(75, 23);
|
||||
this.add_btn.Size = new System.Drawing.Size(87, 26);
|
||||
this.add_btn.TabIndex = 3;
|
||||
this.add_btn.Text = "add_btn";
|
||||
this.add_btn.Text = "Добавить";
|
||||
this.add_btn.UseVisualStyleBackColor = true;
|
||||
this.add_btn.Click += new System.EventHandler(this.add_btn_Click);
|
||||
//
|
||||
// del_btn
|
||||
//
|
||||
this.del_btn.Location = new System.Drawing.Point(20, 135);
|
||||
this.del_btn.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.del_btn.Location = new System.Drawing.Point(67, 439);
|
||||
this.del_btn.Name = "del_btn";
|
||||
this.del_btn.Size = new System.Drawing.Size(75, 23);
|
||||
this.del_btn.TabIndex = 4;
|
||||
this.del_btn.Text = "del_btn";
|
||||
this.del_btn.Text = "Удалить";
|
||||
this.del_btn.UseVisualStyleBackColor = true;
|
||||
this.del_btn.Click += new System.EventHandler(this.del_btn_Click);
|
||||
//
|
||||
// monNames_label
|
||||
//
|
||||
this.monNames_label.AutoSize = true;
|
||||
this.monNames_label.Location = new System.Drawing.Point(597, 11);
|
||||
this.monNames_label.Name = "monNames_label";
|
||||
this.monNames_label.Size = new System.Drawing.Size(35, 13);
|
||||
this.monNames_label.TabIndex = 5;
|
||||
this.monNames_label.Text = "label1";
|
||||
//
|
||||
// monitorItems_cb
|
||||
//
|
||||
this.monitorItems_cb.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.monitorItems_cb.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.monitorItems_cb.FormattingEnabled = true;
|
||||
this.monitorItems_cb.Location = new System.Drawing.Point(20, 58);
|
||||
this.monitorItems_cb.Location = new System.Drawing.Point(3, 3);
|
||||
this.monitorItems_cb.Name = "monitorItems_cb";
|
||||
this.monitorItems_cb.Size = new System.Drawing.Size(121, 21);
|
||||
this.monitorItems_cb.Size = new System.Drawing.Size(121, 24);
|
||||
this.monitorItems_cb.TabIndex = 6;
|
||||
//
|
||||
// monitorItems_lb
|
||||
//
|
||||
this.monitorItems_lb.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.monitorItems_lb.FormattingEnabled = true;
|
||||
this.monitorItems_lb.Location = new System.Drawing.Point(20, 180);
|
||||
this.monitorItems_lb.ItemHeight = 16;
|
||||
this.monitorItems_lb.Location = new System.Drawing.Point(3, 52);
|
||||
this.monitorItems_lb.Name = "monitorItems_lb";
|
||||
this.monitorItems_lb.Size = new System.Drawing.Size(121, 316);
|
||||
this.monitorItems_lb.Size = new System.Drawing.Size(214, 372);
|
||||
this.monitorItems_lb.TabIndex = 8;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Controls.Add(this.AutoScale_check);
|
||||
this.groupBox1.Controls.Add(this.StartStop_btn);
|
||||
this.groupBox1.Location = new System.Drawing.Point(3, 480);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(214, 100);
|
||||
this.groupBox1.TabIndex = 11;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "Управление трендом";
|
||||
//
|
||||
// AutoScale_check
|
||||
//
|
||||
this.AutoScale_check.AutoSize = true;
|
||||
this.AutoScale_check.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.AutoScale_check.Location = new System.Drawing.Point(45, 67);
|
||||
this.AutoScale_check.Name = "AutoScale_check";
|
||||
this.AutoScale_check.Size = new System.Drawing.Size(120, 21);
|
||||
this.AutoScale_check.TabIndex = 12;
|
||||
this.AutoScale_check.Text = "Авто масштаб";
|
||||
this.AutoScale_check.UseVisualStyleBackColor = true;
|
||||
this.AutoScale_check.CheckedChanged += new System.EventHandler(this.AutoScale_check_CheckedChanged);
|
||||
//
|
||||
// StartStop_btn
|
||||
//
|
||||
this.StartStop_btn.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.StartStop_btn.Location = new System.Drawing.Point(51, 24);
|
||||
this.StartStop_btn.Name = "StartStop_btn";
|
||||
this.StartStop_btn.Size = new System.Drawing.Size(108, 31);
|
||||
this.StartStop_btn.TabIndex = 11;
|
||||
this.StartStop_btn.Text = "Старт";
|
||||
this.StartStop_btn.UseVisualStyleBackColor = true;
|
||||
this.StartStop_btn.Click += new System.EventHandler(this.StartStop_btn_Click);
|
||||
//
|
||||
// MonitorVars
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Controls.Add(this.monitorItems_lb);
|
||||
this.Controls.Add(this.monitorItems_cb);
|
||||
this.Controls.Add(this.monNames_label);
|
||||
this.Controls.Add(this.del_btn);
|
||||
this.Controls.Add(this.add_btn);
|
||||
this.Controls.Add(this.mon_test_label);
|
||||
this.Controls.Add(this.MainFormPlot);
|
||||
this.Name = "MonitorVars";
|
||||
this.Size = new System.Drawing.Size(1240, 600);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private ScottPlot.WinForms.FormsPlot MainFormPlot;
|
||||
private System.Windows.Forms.Label mon_test_label;
|
||||
private System.Windows.Forms.Button add_btn;
|
||||
private System.Windows.Forms.Button del_btn;
|
||||
private System.Windows.Forms.Label monNames_label;
|
||||
private System.Windows.Forms.ComboBox monitorItems_cb;
|
||||
private System.Windows.Forms.ListBox monitorItems_lb;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.CheckBox AutoScale_check;
|
||||
private System.Windows.Forms.Button StartStop_btn;
|
||||
}
|
||||
}
|
||||
|
@ -3,9 +3,11 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using TelemetryIO.Models;
|
||||
@ -20,12 +22,16 @@ namespace TelemetryIO
|
||||
private List<string> monitorNames = new List<string>();
|
||||
private List<ScottPlot.Plottables.Signal> signals = new List<ScottPlot.Plottables.Signal>();
|
||||
|
||||
private List<MonitorItem> monItems = new List<MonitorItem>();
|
||||
|
||||
private List<int[]>[] plotContent = new List<int[]>[32];
|
||||
|
||||
private Timer updateTimer = new Timer();
|
||||
private System.Windows.Forms.Timer updateTimer = new System.Windows.Forms.Timer();
|
||||
private float[] monitoring = new float[32];
|
||||
private int test_index = 0;
|
||||
private bool isSubscribed = false;
|
||||
private bool isMonitoring = true;
|
||||
private bool isAutoScale = true;
|
||||
|
||||
private string processingName = "";
|
||||
private int processingIndex = -1;
|
||||
@ -35,14 +41,12 @@ namespace TelemetryIO
|
||||
initMonitoringBuffer();
|
||||
|
||||
updateTimer.Interval = 100;
|
||||
|
||||
MainFormPlot.Plot.Axes.AutoScale();
|
||||
AutoScale_check.Checked = isAutoScale;
|
||||
|
||||
monitorItems_cb.Items.AddRange(Telemetry.Instance.getKeys());
|
||||
monitorItems_cb.SelectedIndex = 0;
|
||||
updateTimer.Tick += UpdateTimer_Tick;
|
||||
updateTimer.Start();
|
||||
//MainFormPlot.
|
||||
}
|
||||
|
||||
public void subscribeOnMonitoringItemsReceived(SerialHandler s)
|
||||
@ -58,7 +62,7 @@ namespace TelemetryIO
|
||||
{
|
||||
if(e.Answer == "ADD")
|
||||
{
|
||||
monitorNames.Add(processingName);
|
||||
MonitorItem item = new MonitorItem(processingName, processingIndex);
|
||||
processingIndex++;
|
||||
if (monitorItems_lb.InvokeRequired)
|
||||
{
|
||||
@ -68,14 +72,21 @@ namespace TelemetryIO
|
||||
{
|
||||
monitorItems_lb.Items.Add(processingName);
|
||||
}
|
||||
monitorList.Add(new double[1024]);
|
||||
MainFormPlot.Plot.Add.Signal(monitorList[monitorList.Count - 1]);
|
||||
|
||||
|
||||
if (StartStop_btn.InvokeRequired)
|
||||
{
|
||||
StartStop_btn.Invoke(new Action(() => StartStop_btn.Enabled = true));
|
||||
}
|
||||
else
|
||||
{
|
||||
StartStop_btn.Enabled = true;
|
||||
}
|
||||
|
||||
monItems.Add(item);
|
||||
}
|
||||
else if(e.Answer == "REMOVE")
|
||||
{
|
||||
monitorNames.RemoveAt(processingIndex);
|
||||
monitorList.RemoveAt(processingIndex);
|
||||
monItems.RemoveAt(processingIndex);
|
||||
if (monitorItems_lb.InvokeRequired)
|
||||
{
|
||||
monitorItems_lb.Invoke(new Action(() => monitorItems_lb.Items.RemoveAt(processingIndex)));
|
||||
@ -88,55 +99,89 @@ namespace TelemetryIO
|
||||
if (processingIndex >= 0) processingIndex--;
|
||||
}else if(e.Answer == "REMOVEALL")
|
||||
{
|
||||
monitorNames.Clear();
|
||||
monitorList.Clear();
|
||||
monItems.Clear();
|
||||
if (monitorItems_lb.InvokeRequired)
|
||||
{
|
||||
monitorItems_lb.Invoke(new Action(() => monitorItems_lb.Items.Clear()));
|
||||
}
|
||||
else
|
||||
{
|
||||
monitorItems_lb.Items.Clear();
|
||||
}
|
||||
if (StartStop_btn.InvokeRequired)
|
||||
{
|
||||
StartStop_btn.Invoke(new Action(() =>
|
||||
{
|
||||
StartStop_btn.Text = "Старт";
|
||||
StartStop_btn.Enabled = false;
|
||||
})
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
StartStop_btn.Text = "Старт";
|
||||
StartStop_btn.Enabled = false;
|
||||
}
|
||||
isMonitoring = false;
|
||||
}
|
||||
else if (e.Answer == "MONITORON")
|
||||
{
|
||||
if (StartStop_btn.InvokeRequired)
|
||||
{
|
||||
StartStop_btn.Invoke(new Action(() => StartStop_btn.Text = "Стоп"));
|
||||
}
|
||||
else StartStop_btn.Text = "Стоп";
|
||||
isMonitoring = true;
|
||||
}
|
||||
else if (e.Answer == "MONITOROFF")
|
||||
{
|
||||
if (StartStop_btn.InvokeRequired)
|
||||
{
|
||||
StartStop_btn.Invoke(new Action(() => StartStop_btn.Text = "Старт"));
|
||||
}
|
||||
else StartStop_btn.Text = "Старт";
|
||||
isMonitoring = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void Serial_MonitoringItemsReceived(object sender, MonitoringEventArgs e)
|
||||
{
|
||||
for(int i = 0; i < monitorList.Count; i++)
|
||||
for(int i = 0; i < monItems.Count; i++)
|
||||
{
|
||||
ShiftLeft(monitorList[i]);
|
||||
monitorList[i][monitorList[i].Length - 1] = e.Data[i];
|
||||
monItems[i].Insert(e.Data[i]);
|
||||
}
|
||||
|
||||
monitoring = new float[monitorList.Count];
|
||||
for (int i = 0; i < monitorList.Count; i++)
|
||||
monitoring = new float[monItems.Count];
|
||||
for (int i = 0; i < monItems.Count; i++)
|
||||
{
|
||||
monitoring[i] = (float)monitorList[i][monitorList[i].Length - 1];
|
||||
monitoring[i] = (float)monItems[i].Last;
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateTimer_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (mon_test_label.InvokeRequired)
|
||||
{
|
||||
mon_test_label.Invoke(new Action(() => mon_test_label.Text = string.Join(", ", monitoring)));
|
||||
}
|
||||
else
|
||||
{
|
||||
mon_test_label.Text = string.Join(", ", monitoring);
|
||||
}
|
||||
|
||||
if (monNames_label.InvokeRequired)
|
||||
{
|
||||
monNames_label.Invoke(new Action(() => monNames_label.Text = string.Join(", ", monitorNames)));
|
||||
}
|
||||
else monNames_label.Text = string.Join(", ", monitorNames);
|
||||
|
||||
if (monitorList.Count > 0)
|
||||
if (monItems.Count > 0)
|
||||
{
|
||||
MainFormPlot.Plot.Clear();
|
||||
for(int i = 0; i < monitorList.Count; i++)
|
||||
for(int i = 0; i < monItems.Count; i++)
|
||||
{
|
||||
var sig = MainFormPlot.Plot.Add.Signal(monitorList[i]);
|
||||
sig.LegendText = monitorNames[i];
|
||||
var sig = MainFormPlot.Plot.Add.Signal(monItems[i].data);
|
||||
sig.LegendText = monItems[i].name;
|
||||
sig.Color = ScottPlot.Color.FromColor(monItems[i].color);
|
||||
if (monitorItems_lb.InvokeRequired)
|
||||
{
|
||||
monitorItems_lb.Invoke(new Action(() => monitorItems_lb.Items[i] = monItems[i].name + "\t" + monItems[i].Last));
|
||||
}
|
||||
else
|
||||
{
|
||||
monitorItems_lb.Items[i] = monItems[i].name + "\t" + monItems[i].Last;
|
||||
}
|
||||
}
|
||||
MainFormPlot.Plot.Legend.IsVisible = true;
|
||||
MainFormPlot.Plot.Legend.Orientation = ScottPlot.Orientation.Horizontal;
|
||||
MainFormPlot.Plot.Axes.AutoScale();
|
||||
if(isAutoScale) MainFormPlot.Plot.Axes.AutoScale();
|
||||
MainFormPlot.Refresh();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -164,9 +209,93 @@ namespace TelemetryIO
|
||||
serial.RemoveMonitoringItem(processingIndex);
|
||||
}
|
||||
|
||||
private void ShiftLeft(double[] arr)
|
||||
private void StartStop_btn_Click(object sender, EventArgs e)
|
||||
{
|
||||
Buffer.BlockCopy(arr, sizeof(double), arr, 0, (arr.Length - 1)*sizeof(double));
|
||||
if(isMonitoring)
|
||||
{
|
||||
serial.stopMonitoring();
|
||||
}
|
||||
else
|
||||
{
|
||||
serial.startMonitoring();
|
||||
}
|
||||
}
|
||||
|
||||
private void AutoScale_check_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
CheckBox cb = sender as CheckBox;
|
||||
if (cb.Checked) isAutoScale = true;
|
||||
else isAutoScale = false;
|
||||
}
|
||||
}
|
||||
|
||||
public class MonitorItem
|
||||
{
|
||||
public double[] data = new double[2048];
|
||||
public System.Drawing.Color color = System.Drawing.Color.Red;
|
||||
public string name = "";
|
||||
public int order = 0;
|
||||
private static int col = 0;
|
||||
private bool firstScan = true;
|
||||
public int Length
|
||||
{
|
||||
get { return data.Length; }
|
||||
}
|
||||
|
||||
public double Last
|
||||
{
|
||||
get { return data[data.Length - 1]; }
|
||||
}
|
||||
|
||||
private System.Drawing.Color[] colors =
|
||||
{
|
||||
System.Drawing.Color.Red,
|
||||
System.Drawing.Color.Green,
|
||||
System.Drawing.Color.Blue,
|
||||
System.Drawing.Color.Orange,
|
||||
System.Drawing.Color.Orchid,
|
||||
System.Drawing.Color.Purple,
|
||||
System.Drawing.Color.Pink,
|
||||
System.Drawing.Color.Black,
|
||||
System.Drawing.Color.Gray,
|
||||
System.Drawing.Color.SkyBlue,
|
||||
System.Drawing.Color.Magenta,
|
||||
System.Drawing.Color.DarkGreen,
|
||||
System.Drawing.Color.LightGreen,
|
||||
System.Drawing.Color.YellowGreen,
|
||||
System.Drawing.Color.DarkRed,
|
||||
};
|
||||
|
||||
private void init()
|
||||
{
|
||||
color = colors[col % 16];
|
||||
col++;
|
||||
}
|
||||
public MonitorItem()
|
||||
{
|
||||
init();
|
||||
}
|
||||
|
||||
public MonitorItem(string name, int order)
|
||||
{
|
||||
this.name = name;
|
||||
this.order = order;
|
||||
init();
|
||||
}
|
||||
|
||||
public void Insert(double d)
|
||||
{
|
||||
if (firstScan)
|
||||
{
|
||||
for(int i = 0; i < data.Length; i++)
|
||||
{
|
||||
data[i] = d;
|
||||
}
|
||||
firstScan = false;
|
||||
return;
|
||||
}
|
||||
Buffer.BlockCopy(data, sizeof(double), data, 0, (data.Length - 1) * sizeof(double));
|
||||
data[data.Length - 1] = d;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
12
TelemetryIO/RatePID.Designer.cs
generated
12
TelemetryIO/RatePID.Designer.cs
generated
@ -160,9 +160,10 @@
|
||||
//
|
||||
// Save_btn
|
||||
//
|
||||
this.Save_btn.Location = new System.Drawing.Point(1012, 562);
|
||||
this.Save_btn.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.Save_btn.Location = new System.Drawing.Point(1097, 608);
|
||||
this.Save_btn.Name = "Save_btn";
|
||||
this.Save_btn.Size = new System.Drawing.Size(75, 23);
|
||||
this.Save_btn.Size = new System.Drawing.Size(90, 30);
|
||||
this.Save_btn.TabIndex = 18;
|
||||
this.Save_btn.Text = "Сохранить";
|
||||
this.Save_btn.UseVisualStyleBackColor = true;
|
||||
@ -170,9 +171,10 @@
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Location = new System.Drawing.Point(1107, 562);
|
||||
this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.button1.Location = new System.Drawing.Point(1193, 608);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
||||
this.button1.Size = new System.Drawing.Size(90, 30);
|
||||
this.button1.TabIndex = 19;
|
||||
this.button1.Text = "Отменить";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
@ -1167,7 +1169,7 @@
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.Save_btn);
|
||||
this.Name = "RatePID";
|
||||
this.Size = new System.Drawing.Size(1200, 600);
|
||||
this.Size = new System.Drawing.Size(1300, 650);
|
||||
this.tabControl1.ResumeLayout(false);
|
||||
this.tab_pid0.ResumeLayout(false);
|
||||
this.pid0_panel.ResumeLayout(false);
|
||||
|
@ -56,6 +56,8 @@ namespace TelemetryIO
|
||||
private bool isTimeout = false;
|
||||
private readonly int responseTimeout = 2000;
|
||||
private System.Timers.Timer timeout = new System.Timers.Timer(3000);
|
||||
|
||||
private bool exitPending = false;
|
||||
|
||||
|
||||
public struct Telegram
|
||||
@ -101,84 +103,101 @@ namespace TelemetryIO
|
||||
private void Serial_DataReceived(object sender, SerialDataReceivedEventArgs e)
|
||||
{
|
||||
SerialPort sp = (SerialPort)sender;
|
||||
|
||||
|
||||
while (sp.BytesToRead > 0)
|
||||
try
|
||||
{
|
||||
if (!sp.IsOpen) return;
|
||||
byte b = (byte)sp.ReadByte();
|
||||
while (sp.BytesToRead > 0)
|
||||
{
|
||||
if (!sp.IsOpen) return;
|
||||
byte b = (byte)sp.ReadByte();
|
||||
|
||||
if (b == ESCAPE_END)
|
||||
{//END BYTE IS RECEIVED
|
||||
timeout.Stop();
|
||||
isTimeout = false;
|
||||
byte[] unscape = EscapeSeqToBytes(rx_buf.ToArray());
|
||||
uint checksum = crc32(unscape, unscape.Length - 4);
|
||||
uint re_checksum = DataSlots.bytes_to_uint(unscape, unscape.Length - 4);
|
||||
if (re_checksum == checksum)
|
||||
{
|
||||
//Parse telegram
|
||||
int cmd = DataSlots.bytes_to_int(unscape, 0);
|
||||
int slot = DataSlots.bytes_to_int(unscape, 4);
|
||||
int len = DataSlots.bytes_to_int(unscape, 8);
|
||||
int offset = DataSlots.bytes_to_int(unscape, 12);
|
||||
byte[] data = new byte[len];
|
||||
Array.Copy(unscape, 16, data, 0, len);
|
||||
if (b == ESCAPE_END)
|
||||
{//END BYTE IS RECEIVED
|
||||
timeout.Stop();
|
||||
isTimeout = false;
|
||||
byte[] unscape = EscapeSeqToBytes(rx_buf.ToArray());
|
||||
uint checksum = crc32(unscape, unscape.Length - 4);
|
||||
uint re_checksum = DataSlots.bytes_to_uint(unscape, unscape.Length - 4);
|
||||
if (re_checksum == checksum)
|
||||
{
|
||||
//Parse telegram
|
||||
int cmd = DataSlots.bytes_to_int(unscape, 0);
|
||||
int slot = DataSlots.bytes_to_int(unscape, 4);
|
||||
int len = DataSlots.bytes_to_int(unscape, 8);
|
||||
int offset = DataSlots.bytes_to_int(unscape, 12);
|
||||
byte[] data = new byte[len];
|
||||
Array.Copy(unscape, 16, data, 0, len);
|
||||
|
||||
if (cmd == TELE_CMD_RD_ONCE)
|
||||
{
|
||||
telemetry.setSlot(slot, data, offset, len);
|
||||
OnAnswerReceived(slot.ToString());
|
||||
//DataSlots.setSlot(slot, data, offset, len);
|
||||
}
|
||||
else if (cmd == TELE_CMD_RD_MON_ON)
|
||||
{//READ MONITORING DATA
|
||||
for(int i = 0; i < data.Length/4; i++)
|
||||
if (cmd == TELE_CMD_RD_ONCE)
|
||||
{
|
||||
monitor[i] = BitConverter.ToSingle(data, i*4);
|
||||
telemetry.setSlot(slot, data, offset, len);
|
||||
OnAnswerReceived(slot.ToString());
|
||||
//DataSlots.setSlot(slot, data, offset, len);
|
||||
}
|
||||
OnMonitoringItemsReceived(monitor);
|
||||
view_str = string.Join(", ", monitor.Select(x => "" + x).ToArray(), 0, data.Length/4);
|
||||
}
|
||||
else if (cmd == TELE_CMD_WR)
|
||||
{//WRITTING OPERATION IS DONE WITH SUCCESS
|
||||
if (data[0] == 'O' && data[1] == 'k')
|
||||
else if (cmd == TELE_CMD_RD_MON_ON)
|
||||
{//READ MONITORING DATA
|
||||
for (int i = 0; i < data.Length / 4; i++)
|
||||
{
|
||||
monitor[i] = BitConverter.ToSingle(data, i * 4);
|
||||
}
|
||||
OnMonitoringItemsReceived(monitor);
|
||||
OnAnswerReceived("MONITORON");
|
||||
view_str = string.Join(", ", monitor.Select(x => "" + x).ToArray(), 0, data.Length / 4);
|
||||
}
|
||||
else if (cmd == TELE_CMD_WR)
|
||||
{//WRITTING OPERATION IS DONE WITH SUCCESS
|
||||
if (data[0] == 'O' && data[1] == 'k')
|
||||
{
|
||||
Debug.Write("Data is written\n");
|
||||
OnAnswerReceived("Data is written");
|
||||
}
|
||||
}
|
||||
else if (cmd == TELE_CMD_HELLO)
|
||||
{//HANDSHAKING ANSWER
|
||||
telemetry.setSlot(9999, data, 0, 0);
|
||||
view_str = Encoding.ASCII.GetString(data);
|
||||
req_buffer.Clear();
|
||||
OnHandShakeOccurred();
|
||||
getPIDs();
|
||||
}
|
||||
else if (cmd == TELE_CMD_RD_MON_ADD)
|
||||
{
|
||||
Debug.Write("Data is written\n");
|
||||
OnAnswerReceived("Data is written");
|
||||
OnAnswerReceived("ADD");
|
||||
isMonitorEmpty = false;
|
||||
}
|
||||
}else if(cmd == TELE_CMD_HELLO)
|
||||
{//HANDSHAKING ANSWER
|
||||
telemetry.setSlot(9999, data, 0, 0);
|
||||
view_str = Encoding.ASCII.GetString(data);
|
||||
req_buffer.Clear();
|
||||
OnHandShakeOccurred();
|
||||
getPIDs();
|
||||
}else if(cmd == TELE_CMD_RD_MON_ADD)
|
||||
{
|
||||
OnAnswerReceived("ADD");
|
||||
isMonitorEmpty = false;
|
||||
}
|
||||
else if(cmd == TELE_CMD_RD_MON_REMOVE)
|
||||
{
|
||||
OnAnswerReceived("REMOVE");
|
||||
}else if(cmd == TELE_CMD_RD_MON_REMOVEALL)
|
||||
{
|
||||
OnAnswerReceived("REMOVEALL");
|
||||
isMonitorEmpty = true;
|
||||
else if (cmd == TELE_CMD_RD_MON_REMOVE)
|
||||
{
|
||||
OnAnswerReceived("REMOVE");
|
||||
}
|
||||
else if (cmd == TELE_CMD_RD_MON_REMOVEALL)
|
||||
{
|
||||
if (exitPending)
|
||||
{
|
||||
com_port.Close();
|
||||
OnAnswerReceived("EXITAPP");
|
||||
}
|
||||
else OnAnswerReceived("REMOVEALL");
|
||||
}
|
||||
else if (cmd == TELE_CMD_RD_MON_OFF)
|
||||
{
|
||||
OnAnswerReceived("MONITOROFF");
|
||||
}
|
||||
Debug.WriteLine($"cmd = {cmd}");
|
||||
waitingForResponse = false;
|
||||
sendNextRequest();
|
||||
}
|
||||
}
|
||||
waitingForResponse = false;
|
||||
sendNextRequest();
|
||||
}
|
||||
else if (b == ESCAPE_BEGIN)
|
||||
{//START BYTE IS RECEIVED
|
||||
rx_buf.Clear();
|
||||
}
|
||||
else
|
||||
{//FILLING BUFFER
|
||||
rx_buf.Add(b);
|
||||
else if (b == ESCAPE_BEGIN)
|
||||
{//START BYTE IS RECEIVED
|
||||
rx_buf.Clear();
|
||||
}
|
||||
else
|
||||
{//FILLING BUFFER
|
||||
rx_buf.Add(b);
|
||||
}
|
||||
}
|
||||
}catch(Exception ex)
|
||||
{
|
||||
Debug.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
@ -202,6 +221,7 @@ namespace TelemetryIO
|
||||
isTimeout = true;
|
||||
req_buffer.Clear();
|
||||
this.Close();
|
||||
if(exitPending) OnAnswerReceived("EXITAPP");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -213,11 +233,10 @@ namespace TelemetryIO
|
||||
com_port.Close();
|
||||
}
|
||||
|
||||
public void Exit()
|
||||
public void requestExit()
|
||||
{
|
||||
RemoveMonitoringItems();
|
||||
while (isMonitorEmpty || isTimeout) ;
|
||||
if(!isTimeout)Close();
|
||||
exitPending = true;
|
||||
}
|
||||
|
||||
public void putRequest(byte[] request)
|
||||
@ -292,6 +311,11 @@ namespace TelemetryIO
|
||||
putRequest(prepareTelegram(TELE_CMD_RD_MON_REMOVEALL, 0, new byte[0], 0));
|
||||
}
|
||||
|
||||
public void saveFloats(float[] data)
|
||||
{
|
||||
prepareTelegram(TELE_CMD_WR, 1000, data, 0);
|
||||
}
|
||||
|
||||
byte crc8(byte[] data, int length)
|
||||
{
|
||||
byte crc = 0x00; // Initial value
|
||||
|
Reference in New Issue
Block a user