diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/283bc489-32a5-44a9-9e7f-8efa487fd57d.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/283bc489-32a5-44a9-9e7f-8efa487fd57d.vsidx
new file mode 100644
index 0000000..cdb7c57
Binary files /dev/null and b/LeatherProject/.vs/LeatherApp/FileContentIndex/283bc489-32a5-44a9-9e7f-8efa487fd57d.vsidx differ
diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/3a805508-2b96-4f21-8053-561ed0dbedcc.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/3a805508-2b96-4f21-8053-561ed0dbedcc.vsidx
deleted file mode 100644
index c5bf6ce..0000000
Binary files a/LeatherProject/.vs/LeatherApp/FileContentIndex/3a805508-2b96-4f21-8053-561ed0dbedcc.vsidx and /dev/null differ
diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/5fde8f5a-76dc-4613-9869-e0a775cb3903.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/5fde8f5a-76dc-4613-9869-e0a775cb3903.vsidx
deleted file mode 100644
index eefbeb4..0000000
Binary files a/LeatherProject/.vs/LeatherApp/FileContentIndex/5fde8f5a-76dc-4613-9869-e0a775cb3903.vsidx and /dev/null differ
diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/7c73ce9d-0b29-4319-abb2-30e91c35822f.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/7c73ce9d-0b29-4319-abb2-30e91c35822f.vsidx
new file mode 100644
index 0000000..f16c26e
Binary files /dev/null and b/LeatherProject/.vs/LeatherApp/FileContentIndex/7c73ce9d-0b29-4319-abb2-30e91c35822f.vsidx differ
diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/8149d271-bc96-416d-ba73-32416bb7ad1f.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/8149d271-bc96-416d-ba73-32416bb7ad1f.vsidx
new file mode 100644
index 0000000..8921635
Binary files /dev/null and b/LeatherProject/.vs/LeatherApp/FileContentIndex/8149d271-bc96-416d-ba73-32416bb7ad1f.vsidx differ
diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/873b852a-1096-4c86-b7ec-ea5fea8d5bc6.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/873b852a-1096-4c86-b7ec-ea5fea8d5bc6.vsidx
deleted file mode 100644
index 868ff89..0000000
Binary files a/LeatherProject/.vs/LeatherApp/FileContentIndex/873b852a-1096-4c86-b7ec-ea5fea8d5bc6.vsidx and /dev/null differ
diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/9a073f22-9779-4f76-8168-1979c30ff526.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/9a073f22-9779-4f76-8168-1979c30ff526.vsidx
new file mode 100644
index 0000000..76518bc
Binary files /dev/null and b/LeatherProject/.vs/LeatherApp/FileContentIndex/9a073f22-9779-4f76-8168-1979c30ff526.vsidx differ
diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/ac850e4f-3283-430a-85cb-f04f34b3cc34.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/ac850e4f-3283-430a-85cb-f04f34b3cc34.vsidx
deleted file mode 100644
index e5d360d..0000000
Binary files a/LeatherProject/.vs/LeatherApp/FileContentIndex/ac850e4f-3283-430a-85cb-f04f34b3cc34.vsidx and /dev/null differ
diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/bfdae01c-0f5b-47f1-a6ea-0deb71846242.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/bfdae01c-0f5b-47f1-a6ea-0deb71846242.vsidx
deleted file mode 100644
index 48cad70..0000000
Binary files a/LeatherProject/.vs/LeatherApp/FileContentIndex/bfdae01c-0f5b-47f1-a6ea-0deb71846242.vsidx and /dev/null differ
diff --git a/LeatherProject/.vs/LeatherApp/FileContentIndex/e187d4d9-07c7-4608-8129-68279151ed66.vsidx b/LeatherProject/.vs/LeatherApp/FileContentIndex/e187d4d9-07c7-4608-8129-68279151ed66.vsidx
new file mode 100644
index 0000000..6dc8886
Binary files /dev/null and b/LeatherProject/.vs/LeatherApp/FileContentIndex/e187d4d9-07c7-4608-8129-68279151ed66.vsidx differ
diff --git a/LeatherProject/HttpTestApp/App.config b/LeatherProject/HttpTestApp/App.config
new file mode 100644
index 0000000..3916e0e
--- /dev/null
+++ b/LeatherProject/HttpTestApp/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/LeatherProject/HttpTestApp/Form1.Designer.cs b/LeatherProject/HttpTestApp/Form1.Designer.cs
new file mode 100644
index 0000000..79dd008
--- /dev/null
+++ b/LeatherProject/HttpTestApp/Form1.Designer.cs
@@ -0,0 +1,130 @@
+namespace HttpTestApp
+{
+ partial class Form1
+ {
+ ///
+ /// 必需的设计器变量。
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// 清理所有正在使用的资源。
+ ///
+ /// 如果应释放托管资源,为 true;否则为 false。
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows 窗体设计器生成的代码
+
+ ///
+ /// 设计器支持所需的方法 - 不要修改
+ /// 使用代码编辑器修改此方法的内容。
+ ///
+ private void InitializeComponent()
+ {
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.button1 = new System.Windows.Forms.Button();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.textBox2 = new System.Windows.Forms.TextBox();
+ this.textBox3 = new System.Windows.Forms.TextBox();
+ this.button2 = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // textBox1
+ //
+ this.textBox1.Location = new System.Drawing.Point(12, 12);
+ this.textBox1.Multiline = true;
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(441, 91);
+ this.textBox1.TabIndex = 0;
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(89, 219);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(75, 23);
+ this.button1.TabIndex = 1;
+ this.button1.Text = "查询";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(10, 127);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(35, 12);
+ this.label1.TabIndex = 2;
+ this.label1.Text = "批号:";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(10, 161);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(35, 12);
+ this.label2.TabIndex = 3;
+ this.label2.Text = "卷号:";
+ //
+ // textBox2
+ //
+ this.textBox2.Location = new System.Drawing.Point(51, 124);
+ this.textBox2.Name = "textBox2";
+ this.textBox2.Size = new System.Drawing.Size(153, 21);
+ this.textBox2.TabIndex = 4;
+ //
+ // textBox3
+ //
+ this.textBox3.Location = new System.Drawing.Point(51, 158);
+ this.textBox3.Name = "textBox3";
+ this.textBox3.Size = new System.Drawing.Size(153, 21);
+ this.textBox3.TabIndex = 5;
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(322, 219);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(75, 23);
+ this.button2.TabIndex = 6;
+ this.button2.Text = "下载";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // Form1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(465, 256);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.textBox3);
+ this.Controls.Add(this.textBox2);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.textBox1);
+ this.Name = "Form1";
+ this.Text = "服务器测试程序";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TextBox textBox1;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.TextBox textBox2;
+ private System.Windows.Forms.TextBox textBox3;
+ private System.Windows.Forms.Button button2;
+ }
+}
+
diff --git a/LeatherProject/HttpTestApp/Form1.cs b/LeatherProject/HttpTestApp/Form1.cs
new file mode 100644
index 0000000..a9171a8
--- /dev/null
+++ b/LeatherProject/HttpTestApp/Form1.cs
@@ -0,0 +1,157 @@
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace HttpTestApp
+{
+ public partial class Form1 : Form
+ {
+ string SIP = "172.16.21.210";//"172.30.8.2";//"172.16.21.210";
+ public Form1()
+ {
+ InitializeComponent();
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ JObject parm = new JObject()
+ {
+ {"batch",textBox2.Text },
+ {"reel",textBox3.Text }
+ };
+
+ //从主机台取缺陷文件名列表和JSON数组
+ var obj = getDefectFromBatchReel(parm);
+ if (obj.Value("code") != 200)
+ throw new Exception(obj.Value("data"));
+ //
+ var defectInfo = obj.Value("data"); //文件名列表(主机台已对文件名排序,这里不需再排序(主机台按各自index进行的排序,比对在缺陷文件名后面)
+ if (defectInfo.Count < 1)
+ throw new Exception("主机台缺陷文件已不存在!");
+ textBox1.Text = "";
+ for (int i = 0; i < defectInfo.Count; i++)
+ {
+ textBox1.AppendText(defectInfo[i].ToString() + "\r\n");
+ }
+
+ }
+
+ ///
+ /// date,sn
+ ///
+ ///
+ ///
+ ///
+ private JObject getDefectFromBatchReel(JObject req)
+ {
+
+ JObject resp = postSync($"http://{SIP}:10086" + "/api/query_table", req.ToString());
+ if (!resp.Value("success"))//框架库内
+ throw new Exception(resp.Value("data"));//框架库内
+
+ //成功接收返回
+ JObject obj = JObject.Parse(resp.Value("data"));
+ return obj;
+ }
+ //HttpClient方式
+ private JObject postSync(string url, string json, bool recvResp = true, bool isJson = true)
+ {
+ JObject resp = new JObject();
+ try
+ {
+ HttpClient http = new HttpClient();
+ StringContent dataContent;
+ //第一种方式:data是json格式
+ if (isJson)
+ dataContent = new StringContent(json, System.Text.Encoding.UTF8, "application/json"); // {"PageNum":"1","PageSIze":"20","info":"311011500300661"}
+ else
+ {
+ // 第二种方式:form表单提交 内容post 提交都在StringContent请求body中添加
+ string lsUrlEncodeStr = json2Params(JObject.Parse(json));
+ dataContent = new StringContent(lsUrlEncodeStr, System.Text.Encoding.UTF8, "application/x-www-form-urlencoded"); //PageNum=1&PageSize=20&info=311011500300661
+ }
+
+ http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "token");
+ var taskstr = http.PostAsync(url, dataContent).Result.Content.ReadAsStringAsync();
+ //API.OutputDebugString("wlq postSync:url=" + url + ";resp=" + taskstr.Result);
+ //读取返回数据
+ //return taskstr.Result;
+ if (recvResp)
+ {
+ resp.Add("data", taskstr.Result);
+ resp.Add("success", true);
+ }
+ else
+ {
+ resp.Add("data", "");
+ resp.Add("success", true);
+ }
+ }
+ catch (Exception ex)
+ {
+ resp.Add("success", false);
+ resp.Add("data", ex.Message);
+ }
+
+ return resp;
+ }
+
+ private string json2Params(JObject json)
+ {
+ string result = "";
+ IEnumerable properties = json.Properties();
+ foreach (JProperty item in properties)
+ {
+ result += item.Name.ToString() + "=" + item.Value.ToString() + "&";
+ // item.Name 为 键
+ // item.Value 为 值
+ }
+
+ result = result.Substring(0, result.Length - 1);
+ //string result1 = WebUtility.UrlEncode(result);//转义字符大写
+ ////string result2 = HttpUtility.UrlEncode(result);//转义字符小写
+ return result;
+ }
+
+ private void button2_Click(object sender, EventArgs e)
+ {
+ JObject parm = new JObject()
+ {
+ {"batch",textBox2.Text },
+ {"reel",textBox3.Text }
+ };
+ var obj = getDefectFromBatchReelToExcel(parm);
+ var datas = Convert.FromBase64String(obj.Value("data"));
+ //var datas = resp.Value("data");
+
+ string path = $"{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx";
+ File.WriteAllBytes(path, datas);
+ return;
+ }
+
+
+ private JObject getDefectFromBatchReelToExcel(JObject req)
+ {
+ JObject resp = postSync($"http://{SIP}:10086" + "/api/get_defect_from_batch_reel", req.ToString());
+ if (!resp.Value("success"))//框架库内
+ throw new Exception(resp.Value("data"));//框架库内
+
+ //成功接收返回
+ JObject obj = JObject.Parse(resp.Value("data"));
+ return obj;
+ //var bmp = (new MemoryStream(Convert.FromBase64String(resp.Value("data"))));
+ //var strDAta = resp.Value("data");
+
+ }
+ }
+}
diff --git a/LeatherProject/HttpTestApp/Form1.resx b/LeatherProject/HttpTestApp/Form1.resx
new file mode 100644
index 0000000..29dcb1b
--- /dev/null
+++ b/LeatherProject/HttpTestApp/Form1.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/LeatherProject/HttpTestApp/HttpTestApp.csproj b/LeatherProject/HttpTestApp/HttpTestApp.csproj
new file mode 100644
index 0000000..68496e5
--- /dev/null
+++ b/LeatherProject/HttpTestApp/HttpTestApp.csproj
@@ -0,0 +1,84 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}
+ WinExe
+ HttpTestApp
+ HttpTestApp
+ v4.8
+ 512
+ true
+ true
+
+
+ x64
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ Form1.cs
+
+
+
+
+ Form1.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/LeatherProject/HttpTestApp/Program.cs b/LeatherProject/HttpTestApp/Program.cs
new file mode 100644
index 0000000..3d0efe5
--- /dev/null
+++ b/LeatherProject/HttpTestApp/Program.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace HttpTestApp
+{
+ internal static class Program
+ {
+ ///
+ /// 应用程序的主入口点。
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new Form1());
+ }
+ }
+}
diff --git a/LeatherProject/HttpTestApp/Properties/AssemblyInfo.cs b/LeatherProject/HttpTestApp/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..7ade4e1
--- /dev/null
+++ b/LeatherProject/HttpTestApp/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("HttpTestApp")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HttpTestApp")]
+[assembly: AssemblyCopyright("Copyright © 2024")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("9ccdbb60-3a3b-4b52-bd97-cd1edb1d5376")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
+//通过使用 "*",如下所示:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/LeatherProject/HttpTestApp/Properties/Resources.Designer.cs b/LeatherProject/HttpTestApp/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..dc3716c
--- /dev/null
+++ b/LeatherProject/HttpTestApp/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本: 4.0.30319.42000
+//
+// 对此文件的更改可能导致不正确的行为,如果
+// 重新生成代码,则所做更改将丢失。
+//
+//------------------------------------------------------------------------------
+
+namespace HttpTestApp.Properties
+{
+
+
+ ///
+ /// 强类型资源类,用于查找本地化字符串等。
+ ///
+ // 此类是由 StronglyTypedResourceBuilder
+ // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+ // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+ // (以 /str 作为命令选项),或重新生成 VS 项目。
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// 返回此类使用的缓存 ResourceManager 实例。
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HttpTestApp.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// 重写当前线程的 CurrentUICulture 属性,对
+ /// 使用此强类型资源类的所有资源查找执行重写。
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/LeatherProject/HttpTestApp/Properties/Resources.resx b/LeatherProject/HttpTestApp/Properties/Resources.resx
new file mode 100644
index 0000000..ffecec8
--- /dev/null
+++ b/LeatherProject/HttpTestApp/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/LeatherProject/HttpTestApp/Properties/Settings.Designer.cs b/LeatherProject/HttpTestApp/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..63782bd
--- /dev/null
+++ b/LeatherProject/HttpTestApp/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace HttpTestApp.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/LeatherProject/HttpTestApp/Properties/Settings.settings b/LeatherProject/HttpTestApp/Properties/Settings.settings
new file mode 100644
index 0000000..abf36c5
--- /dev/null
+++ b/LeatherProject/HttpTestApp/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/LeatherProject/HttpTestApp/bin/Debug.rar b/LeatherProject/HttpTestApp/bin/Debug.rar
new file mode 100644
index 0000000..39042a3
Binary files /dev/null and b/LeatherProject/HttpTestApp/bin/Debug.rar differ
diff --git a/LeatherProject/HttpTestApp/bin/Debug/20241203113313.xlsx b/LeatherProject/HttpTestApp/bin/Debug/20241203113313.xlsx
new file mode 100644
index 0000000..13358fb
Binary files /dev/null and b/LeatherProject/HttpTestApp/bin/Debug/20241203113313.xlsx differ
diff --git a/LeatherProject/HttpTestApp/bin/Debug/HttpTestApp.exe.config b/LeatherProject/HttpTestApp/bin/Debug/HttpTestApp.exe.config
new file mode 100644
index 0000000..3916e0e
--- /dev/null
+++ b/LeatherProject/HttpTestApp/bin/Debug/HttpTestApp.exe.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/LeatherProject/HttpTestApp/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs b/LeatherProject/HttpTestApp/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs
new file mode 100644
index 0000000..3cf0af3
--- /dev/null
+++ b/LeatherProject/HttpTestApp/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+//
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
diff --git a/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.Form1.resources b/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.Form1.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.Form1.resources differ
diff --git a/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.Properties.Resources.resources b/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.Properties.Resources.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.Properties.Resources.resources differ
diff --git a/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.csproj.CopyComplete b/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.csproj.CopyComplete
new file mode 100644
index 0000000..e69de29
diff --git a/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.csproj.FileListAbsolute.txt b/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..5dbd341
--- /dev/null
+++ b/LeatherProject/HttpTestApp/obj/Debug/HttpTestApp.csproj.FileListAbsolute.txt
@@ -0,0 +1,12 @@
+E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\bin\Debug\HttpTestApp.exe.config
+E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\bin\Debug\HttpTestApp.exe
+E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\bin\Debug\HttpTestApp.pdb
+E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\bin\Debug\Newtonsoft.Json.dll
+E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\obj\Debug\HttpTestApp.csproj.AssemblyReference.cache
+E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\obj\Debug\HttpTestApp.Form1.resources
+E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\obj\Debug\HttpTestApp.Properties.Resources.resources
+E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\obj\Debug\HttpTestApp.csproj.GenerateResource.cache
+E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\obj\Debug\HttpTestApp.csproj.CoreCompileInputs.cache
+E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\obj\Debug\HttpTestApp.csproj.CopyComplete
+E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\obj\Debug\HttpTestApp.exe
+E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\HttpTestApp\obj\Debug\HttpTestApp.pdb
diff --git a/LeatherProject/LeatherApp.sln b/LeatherProject/LeatherApp.sln
index fcae157..2e8fa74 100644
--- a/LeatherProject/LeatherApp.sln
+++ b/LeatherProject/LeatherApp.sln
@@ -15,6 +15,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GeBoShi", "GeBoShi\GeBoShi.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServerApp", "ServerApp\ServerApp.csproj", "{F1876CE2-8446-4EAE-8707-FE4BB19A1C18}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HttpTestApp", "HttpTestApp\HttpTestApp.csproj", "{9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -71,6 +73,14 @@ Global
{F1876CE2-8446-4EAE-8707-FE4BB19A1C18}.Release|Any CPU.Build.0 = Release|Any CPU
{F1876CE2-8446-4EAE-8707-FE4BB19A1C18}.Release|x64.ActiveCfg = Release|Any CPU
{F1876CE2-8446-4EAE-8707-FE4BB19A1C18}.Release|x64.Build.0 = Release|Any CPU
+ {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}.Debug|x64.Build.0 = Debug|Any CPU
+ {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}.Release|x64.ActiveCfg = Release|Any CPU
+ {9CCDBB60-3A3B-4B52-BD97-CD1EDB1D5376}.Release|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/LeatherProject/LeatherApp/LeatherApp.csproj b/LeatherProject/LeatherApp/LeatherApp.csproj
index 55edfb6..19cba0e 100644
--- a/LeatherProject/LeatherApp/LeatherApp.csproj
+++ b/LeatherProject/LeatherApp/LeatherApp.csproj
@@ -355,6 +355,12 @@
PartitionFrm.cs
+
+ Form
+
+
+ SelectReelFrm.cs
+
@@ -458,6 +464,9 @@
PartitionFrm.cs
+
+ SelectReelFrm.cs
+
ResXFileCodeGenerator
Resources.Designer.cs
diff --git a/LeatherProject/LeatherApp/Page/FHome.Designer.cs b/LeatherProject/LeatherApp/Page/FHome.Designer.cs
index cac14b8..95de6c0 100644
--- a/LeatherProject/LeatherApp/Page/FHome.Designer.cs
+++ b/LeatherProject/LeatherApp/Page/FHome.Designer.cs
@@ -41,6 +41,7 @@
this.lblLen = new Sunny.UI.UILabel();
this.lblSpeed = new Sunny.UI.UISymbolLabel();
this.uiTitlePanel1 = new Sunny.UI.UITitlePanel();
+ this.button4 = new System.Windows.Forms.Button();
this.txtDefectName = new Sunny.UI.UITextBox();
this.uiLabel10 = new Sunny.UI.UILabel();
this.button3 = new System.Windows.Forms.Button();
@@ -66,6 +67,7 @@
this.btnEnd = new Sunny.UI.UISymbolButton();
this.btnStart = new Sunny.UI.UISymbolButton();
this.uiTitlePanel2 = new Sunny.UI.UITitlePanel();
+ this.ucColorListDefect = new LeatherApp.UIExtend.UCColorList();
this.lineChartDefect = new Sunny.UI.UILineChart();
this.uiTitlePanel3 = new Sunny.UI.UITitlePanel();
this.uiDataGridView1 = new Sunny.UI.UIDataGridView();
@@ -89,6 +91,7 @@
this.lstboxLog = new Sunny.UI.UIListBox();
this.uiTitlePanel6 = new Sunny.UI.UITitlePanel();
this.uiPanel3 = new Sunny.UI.UIPanel();
+ this.picDefectImage = new LeatherApp.UIExtend.UCImageView();
this.pnlScannerImg = new Sunny.UI.UITitlePanel();
this.picScanner2 = new System.Windows.Forms.PictureBox();
this.picScanner1 = new System.Windows.Forms.PictureBox();
@@ -109,8 +112,6 @@
this.uiLabel6 = new Sunny.UI.UILabel();
this.uiTitlePanel8 = new Sunny.UI.UITitlePanel();
this.lineChartHouDu = new Sunny.UI.UILineChart();
- this.picDefectImage = new LeatherApp.UIExtend.UCImageView();
- this.ucColorListDefect = new LeatherApp.UIExtend.UCColorList();
this.uiPanel1.SuspendLayout();
this.uiTitlePanel1.SuspendLayout();
this.uiPanel2.SuspendLayout();
@@ -182,6 +183,7 @@
// uiTitlePanel1
//
this.uiTitlePanel1.BackColor = System.Drawing.Color.White;
+ this.uiTitlePanel1.Controls.Add(this.button4);
this.uiTitlePanel1.Controls.Add(this.txtDefectName);
this.uiTitlePanel1.Controls.Add(this.uiLabel10);
this.uiTitlePanel1.Controls.Add(this.button3);
@@ -219,6 +221,18 @@
this.uiTitlePanel1.TitleColor = System.Drawing.Color.White;
this.uiTitlePanel1.TitleForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
//
+ // button4
+ //
+ this.button4.ForeColor = System.Drawing.Color.Black;
+ this.button4.Location = new System.Drawing.Point(282, 36);
+ this.button4.Name = "button4";
+ this.button4.Size = new System.Drawing.Size(50, 36);
+ this.button4.TabIndex = 15;
+ this.button4.Text = "界面";
+ this.button4.UseVisualStyleBackColor = true;
+ this.button4.Visible = false;
+ this.button4.Click += new System.EventHandler(this.button4_Click);
+ //
// txtDefectName
//
this.txtDefectName.ButtonFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
@@ -266,7 +280,7 @@
// button3
//
this.button3.ForeColor = System.Drawing.Color.Black;
- this.button3.Location = new System.Drawing.Point(261, 5);
+ this.button3.Location = new System.Drawing.Point(226, 36);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(50, 36);
this.button3.TabIndex = 3;
@@ -297,7 +311,7 @@
// button2
//
this.button2.ForeColor = System.Drawing.Color.Black;
- this.button2.Location = new System.Drawing.Point(205, 5);
+ this.button2.Location = new System.Drawing.Point(170, 36);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(50, 36);
this.button2.TabIndex = 2;
@@ -323,7 +337,7 @@
// button1
//
this.button1.ForeColor = System.Drawing.Color.Black;
- this.button1.Location = new System.Drawing.Point(151, 5);
+ this.button1.Location = new System.Drawing.Point(116, 36);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(50, 36);
this.button1.TabIndex = 1;
@@ -816,6 +830,29 @@
this.uiTitlePanel2.TitleColor = System.Drawing.Color.White;
this.uiTitlePanel2.TitleForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
//
+ // ucColorListDefect
+ //
+ this.ucColorListDefect.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.ucColorListDefect.ColorChanged = null;
+ this.ucColorListDefect.FillColor = System.Drawing.Color.White;
+ this.ucColorListDefect.FillColor2 = System.Drawing.Color.White;
+ this.ucColorListDefect.FillDisableColor = System.Drawing.Color.White;
+ this.ucColorListDefect.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.ucColorListDefect.Location = new System.Drawing.Point(1, 38);
+ this.ucColorListDefect.MinimumSize = new System.Drawing.Size(1, 1);
+ this.ucColorListDefect.Name = "ucColorListDefect";
+ this.ucColorListDefect.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
+ this.ucColorListDefect.RectColor = System.Drawing.Color.White;
+ this.ucColorListDefect.RectDisableColor = System.Drawing.Color.White;
+ this.ucColorListDefect.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom;
+ this.ucColorListDefect.Size = new System.Drawing.Size(52, 42);
+ this.ucColorListDefect.Style = Sunny.UI.UIStyle.Custom;
+ this.ucColorListDefect.StyleCustomMode = true;
+ this.ucColorListDefect.TabIndex = 1;
+ this.ucColorListDefect.Text = "ucColorList1";
+ this.ucColorListDefect.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
+ //
// lineChartDefect
//
this.lineChartDefect.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@@ -897,7 +934,7 @@
dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle6.BackColor = System.Drawing.Color.White;
dataGridViewCellStyle6.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- dataGridViewCellStyle6.ForeColor = System.Drawing.Color.White;
+ dataGridViewCellStyle6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
dataGridViewCellStyle6.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(204)))), ((int)(((byte)(242)))), ((int)(((byte)(238)))));
dataGridViewCellStyle6.SelectionForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
@@ -1083,7 +1120,7 @@
this.uiTitlePanel4.RectColor = System.Drawing.Color.White;
this.uiTitlePanel4.RectDisableColor = System.Drawing.Color.White;
this.uiTitlePanel4.ShowText = false;
- this.uiTitlePanel4.Size = new System.Drawing.Size(420, 210);
+ this.uiTitlePanel4.Size = new System.Drawing.Size(420, 267);
this.uiTitlePanel4.Style = Sunny.UI.UIStyle.Custom;
this.uiTitlePanel4.TabIndex = 1;
this.uiTitlePanel4.Text = "▶ 幅宽";
@@ -1121,7 +1158,7 @@
this.lineChartFaceWidth.MouseDownType = Sunny.UI.UILineChartMouseDownType.Zoom;
this.lineChartFaceWidth.Name = "lineChartFaceWidth";
this.lineChartFaceWidth.Radius = 0;
- this.lineChartFaceWidth.Size = new System.Drawing.Size(414, 170);
+ this.lineChartFaceWidth.Size = new System.Drawing.Size(414, 227);
this.lineChartFaceWidth.Style = Sunny.UI.UIStyle.Custom;
this.lineChartFaceWidth.SubFont = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lineChartFaceWidth.TabIndex = 1;
@@ -1156,14 +1193,14 @@
this.uiTitlePanel5.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiTitlePanel5.ForeColor = System.Drawing.Color.White;
this.uiTitlePanel5.ForeDisableColor = System.Drawing.Color.White;
- this.uiTitlePanel5.Location = new System.Drawing.Point(433, 694);
+ this.uiTitlePanel5.Location = new System.Drawing.Point(433, 754);
this.uiTitlePanel5.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiTitlePanel5.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTitlePanel5.Name = "uiTitlePanel5";
this.uiTitlePanel5.RectColor = System.Drawing.Color.White;
this.uiTitlePanel5.RectDisableColor = System.Drawing.Color.White;
this.uiTitlePanel5.ShowText = false;
- this.uiTitlePanel5.Size = new System.Drawing.Size(753, 142);
+ this.uiTitlePanel5.Size = new System.Drawing.Size(753, 82);
this.uiTitlePanel5.Style = Sunny.UI.UIStyle.Custom;
this.uiTitlePanel5.TabIndex = 1;
this.uiTitlePanel5.Text = "▶ 日志";
@@ -1186,7 +1223,7 @@
this.lstboxLog.Name = "lstboxLog";
this.lstboxLog.Padding = new System.Windows.Forms.Padding(2);
this.lstboxLog.ShowText = false;
- this.lstboxLog.Size = new System.Drawing.Size(745, 97);
+ this.lstboxLog.Size = new System.Drawing.Size(745, 37);
this.lstboxLog.Style = Sunny.UI.UIStyle.Custom;
this.lstboxLog.TabIndex = 0;
this.lstboxLog.Text = "uiListBox1";
@@ -1242,6 +1279,15 @@
this.uiPanel3.Text = null;
this.uiPanel3.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
+ // picDefectImage
+ //
+ this.picDefectImage.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.picDefectImage.Location = new System.Drawing.Point(0, 0);
+ this.picDefectImage.Margin = new System.Windows.Forms.Padding(0);
+ this.picDefectImage.Name = "picDefectImage";
+ this.picDefectImage.Size = new System.Drawing.Size(350, 188);
+ this.picDefectImage.TabIndex = 1;
+ //
// pnlScannerImg
//
this.pnlScannerImg.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@@ -1549,7 +1595,7 @@
this.uiTitlePanel8.RectColor = System.Drawing.Color.White;
this.uiTitlePanel8.RectDisableColor = System.Drawing.Color.White;
this.uiTitlePanel8.ShowText = false;
- this.uiTitlePanel8.Size = new System.Drawing.Size(330, 210);
+ this.uiTitlePanel8.Size = new System.Drawing.Size(330, 267);
this.uiTitlePanel8.Style = Sunny.UI.UIStyle.Custom;
this.uiTitlePanel8.TabIndex = 2;
this.uiTitlePanel8.Text = "▶ 厚度";
@@ -1570,44 +1616,12 @@
this.lineChartHouDu.MouseDownType = Sunny.UI.UILineChartMouseDownType.Zoom;
this.lineChartHouDu.Name = "lineChartHouDu";
this.lineChartHouDu.Radius = 0;
- this.lineChartHouDu.Size = new System.Drawing.Size(324, 170);
+ this.lineChartHouDu.Size = new System.Drawing.Size(324, 227);
this.lineChartHouDu.Style = Sunny.UI.UIStyle.Custom;
this.lineChartHouDu.SubFont = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lineChartHouDu.TabIndex = 1;
this.lineChartHouDu.TouchPressClick = true;
//
- // picDefectImage
- //
- this.picDefectImage.Dock = System.Windows.Forms.DockStyle.Fill;
- this.picDefectImage.Location = new System.Drawing.Point(0, 0);
- this.picDefectImage.Margin = new System.Windows.Forms.Padding(0);
- this.picDefectImage.Name = "picDefectImage";
- this.picDefectImage.Size = new System.Drawing.Size(350, 188);
- this.picDefectImage.TabIndex = 1;
- //
- // ucColorListDefect
- //
- this.ucColorListDefect.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.ucColorListDefect.ColorChanged = null;
- this.ucColorListDefect.FillColor = System.Drawing.Color.White;
- this.ucColorListDefect.FillColor2 = System.Drawing.Color.White;
- this.ucColorListDefect.FillDisableColor = System.Drawing.Color.White;
- this.ucColorListDefect.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- this.ucColorListDefect.Location = new System.Drawing.Point(1, 38);
- this.ucColorListDefect.MinimumSize = new System.Drawing.Size(1, 1);
- this.ucColorListDefect.Name = "ucColorListDefect";
- this.ucColorListDefect.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
- this.ucColorListDefect.RectColor = System.Drawing.Color.White;
- this.ucColorListDefect.RectDisableColor = System.Drawing.Color.White;
- this.ucColorListDefect.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom;
- this.ucColorListDefect.Size = new System.Drawing.Size(52, 42);
- this.ucColorListDefect.Style = Sunny.UI.UIStyle.Custom;
- this.ucColorListDefect.StyleCustomMode = true;
- this.ucColorListDefect.TabIndex = 1;
- this.ucColorListDefect.Text = "ucColorList1";
- this.ucColorListDefect.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
- //
// FHome
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
@@ -1733,5 +1747,6 @@
private Sunny.UI.UILabel uiLabel10;
private Sunny.UI.UISymbolButton btnCut;
private Sunny.UI.UISymbolButton btnFenJuan;
+ private System.Windows.Forms.Button button4;
}
}
diff --git a/LeatherProject/LeatherApp/Page/FHome.cs b/LeatherProject/LeatherApp/Page/FHome.cs
index 26d956a..d0af0b6 100644
--- a/LeatherProject/LeatherApp/Page/FHome.cs
+++ b/LeatherProject/LeatherApp/Page/FHome.cs
@@ -19,6 +19,7 @@ using OpenCvSharp.Extensions;
using S7.Net;
using Service;
using SqlSugar;
+using SqlSugar.DbConvert;
using Sunny.UI;
using Sunny.UI.Win32;
using System;
@@ -181,6 +182,12 @@ namespace LeatherApp.Page
this.uilbHD.Visible = true;
else
this.uilbHD.Visible = false;
+
+ if (Config.CustomerName != "XCL")
+ {
+ btnCut.Visible = false;
+ btnFenJuan.Visible = false;
+ }
}
private void uiDataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
@@ -569,7 +576,7 @@ namespace LeatherApp.Page
}));
}
- private void reDrawHouDu(List HDpoints, double[] XSizeRange, double[] YSizeRange)
+ private void reDrawHouDu(Thickness HDpoints, double[] XSizeRange, double[] YSizeRange)
{
//AddTextEvent(DateTime.Now,$"绘图", $"门幅宽度, W={string.Join(", ", XSizeRange)},H={string.Join(", ", YSizeRange)}, LastData={JsonConvert.SerializeObject(points[points.Count-1])}");
if (YSizeRange[0] == YSizeRange[1])
@@ -583,91 +590,112 @@ namespace LeatherApp.Page
//防止超限
XSizeRange[1] += 0.01;
YSizeRange[1] += 0.1;
-
- UILineOption option = new UILineOption();
- option.XAxis.Name = "长度(米)";
- option.YAxis.Name = "厚度(mm)";
- option.Grid.Top = 20;
- option.Grid.Right = 20;
- //X轴数据类型
- option.XAxisType = UIAxisType.Value;
- //设置X/Y轴显示范围
- option.XAxis.SetRange(XSizeRange[0], XSizeRange[1]);
- option.YAxis.SetRange(YSizeRange[0], YSizeRange[1]);
- //坐标轴显示小数位数
- option.XAxis.AxisLabel.DecimalPlaces = option.YAxis.AxisLabel.DecimalPlaces = 1;
- //X/Y轴画参考线
- //option.YAxisScaleLines.Add(new UIScaleLine("上限", 3.5, Color.Red));
- //option.YAxisScaleLines.Add(new UIScaleLine("下限", 2.2, Color.Gold));
- //option.XAxisScaleLines.Add(new UIScaleLine(dt.AddHours(3).DateTimeString(), dt.AddHours(3), Color.Red));
- //option.XAxisScaleLines.Add(new UIScaleLine(dt.AddHours(6).DateTimeString(), dt.AddHours(6), Color.Red));
-
- option.ToolTip.Visible = true;
- //option.ToolTip.Formatter = "怎么自定义X,Y显示名称??{X}";
- option.Title = new UITitle();
- option.Title.Text = "";
- option.Title.SubText = "";
-
- Color color1 = Color.Blue;
- UILineSeries series1 = null;
- series1 = option.AddSeries(new UILineSeries("厚度1", color1));
- series1.Symbol = UILinePointSymbol.Circle;
- series1.ShowLine = true;
- series1.SymbolSize = 1;//4
- series1.SymbolLineWidth = 1;//2
- series1.SymbolColor = color1;
- series1.XAxisDecimalPlaces = 2;
- series1.YAxisDecimalPlaces = 1;
-
- Color color2 = Color.Red;
- UILineSeries series2 = null;
- series2 = option.AddSeries(new UILineSeries("厚度2", color2));
- series2.Symbol = UILinePointSymbol.Circle;
- series2.ShowLine = true;
- series2.SymbolSize = 1;//4
- series2.SymbolLineWidth = 1;//2
- series2.SymbolColor = color2;
- series2.XAxisDecimalPlaces = 2;
- series2.YAxisDecimalPlaces = 1;
-
- Color color3 = Color.Green;
- UILineSeries series3 = null;
- series3 = option.AddSeries(new UILineSeries("厚度3", color3));
- series3.Symbol = UILinePointSymbol.Circle;
- series3.ShowLine = true;
- series3.SymbolSize = 1;//4
- series3.SymbolLineWidth = 1;//2
- series3.SymbolColor = color3;
- series3.XAxisDecimalPlaces = 2;
- series3.YAxisDecimalPlaces = 1;
-
- double x;
- DateTime dt = DateTime.Now;
- foreach (var item in HDpoints)
+ this.BeginInvoke(new System.Action(() =>
{
- x = item.Y_Dis / 100; //cm -> m
+ UILineOption option;
+ UILineSeries series1, series2, series3;
+ if (this.lineChartHouDu.Option.Series.Count > 0)
+ {
+ option = this.lineChartHouDu.Option;
+ series1 = this.lineChartHouDu.Option.Series["厚度1"];
+ series2 = this.lineChartHouDu.Option.Series["厚度2"];
+ series3 = this.lineChartHouDu.Option.Series["厚度3"];
+
+ option.XAxis.SetRange(XSizeRange[0], XSizeRange[1]);
+ option.YAxis.SetRange(YSizeRange[0], YSizeRange[1]);
+ }
+ else
+ {
+ option = new UILineOption();
+ option.XAxis.Name = "长度(米)";
+ option.YAxis.Name = "厚度(mm)";
+ option.Grid.Top = 20;
+ option.Grid.Right = 20;
+ //X轴数据类型
+ option.XAxisType = UIAxisType.Value;
+ //设置X/Y轴显示范围
+ option.XAxis.SetRange(XSizeRange[0], XSizeRange[1]);
+ option.YAxis.SetRange(YSizeRange[0], YSizeRange[1]);
+ //坐标轴显示小数位数
+ option.XAxis.AxisLabel.DecimalPlaces = option.YAxis.AxisLabel.DecimalPlaces = 2;
+ //X/Y轴画参考线
+ //option.YAxisScaleLines.Add(new UIScaleLine("上限", 3.5, Color.Red));
+ //option.YAxisScaleLines.Add(new UIScaleLine("下限", 2.2, Color.Gold));
+ //option.XAxisScaleLines.Add(new UIScaleLine(dt.AddHours(3).DateTimeString(), dt.AddHours(3), Color.Red));
+ //option.XAxisScaleLines.Add(new UIScaleLine(dt.AddHours(6).DateTimeString(), dt.AddHours(6), Color.Red));
+
+ option.ToolTip.Visible = true;
+ //option.ToolTip.Formatter = "怎么自定义X,Y显示名称??{X}";
+ option.Title = new UITitle();
+ option.Title.Text = "";
+ option.Title.SubText = "";
+
+ Color color1 = Color.Blue;
+ series1 = null;
+ series1 = option.AddSeries(new UILineSeries("厚度1", color1));
+ series1.Symbol = UILinePointSymbol.Circle;
+ series1.ShowLine = true;
+ series1.SymbolSize = 1;//4
+ series1.SymbolLineWidth = 1;//2
+ series1.SymbolColor = color1;
+ series1.XAxisDecimalPlaces = 2;
+ series1.YAxisDecimalPlaces = 2;
+
+ Color color2 = Color.Red;
+ series2 = null;
+ series2 = option.AddSeries(new UILineSeries("厚度2", color2));
+ series2.Symbol = UILinePointSymbol.Circle;
+ series2.ShowLine = true;
+ series2.SymbolSize = 1;//4
+ series2.SymbolLineWidth = 1;//2
+ series2.SymbolColor = color2;
+ series2.XAxisDecimalPlaces = 2;
+ series2.YAxisDecimalPlaces = 2;
+
+ Color color3 = Color.Green;
+ series3 = null;
+ series3 = option.AddSeries(new UILineSeries("厚度3", color3));
+ series3.Symbol = UILinePointSymbol.Circle;
+ series3.ShowLine = true;
+ series3.SymbolSize = 1;//4
+ series3.SymbolLineWidth = 1;//2
+ series3.SymbolColor = color3;
+ series3.XAxisDecimalPlaces = 2;
+ series3.YAxisDecimalPlaces = 2;
+ }
+ double x;
+ DateTime dt = DateTime.Now;
+
+ var item = HDpoints;
+ x = item.Y_Dis / 100.0; //cm -> m
series1.Add(x, item.Value1);
series2.Add(x, item.Value2);
series3.Add(x, item.Value3);
- if (x < XSizeRange[0]) break;// AddTextEvent(DateTime.Now,$"绘图", $"门幅宽度超限 1!!!! {x}<{XSizeRange[0]}",WarningEnum.High);
- if (x > XSizeRange[1]) break;// AddTextEvent(DateTime.Now,$"绘图", $"门幅宽度超限 2!!!! {x}>{XSizeRange[1]}", WarningEnum.High);
- //if (item.Value1 < YSizeRange[0]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 3!!!! {item.Value1}<{YSizeRange[0]}", WarningEnum.High);
- //if (item.Value1 > YSizeRange[1]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 4!!!! {item.Value1}>{YSizeRange[1]}", WarningEnum.High);
- //if (item.Value2 < YSizeRange[0]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 5!!!! {item.Value2}<{YSizeRange[0]}", WarningEnum.High);
- //if (item.Value2 > YSizeRange[1]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 6!!!! {item.Value2}>{YSizeRange[1]}", WarningEnum.High);
- //if (item.Value3 < YSizeRange[0]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 7!!!! {item.Value3}<{YSizeRange[0]}", WarningEnum.High);
- //if (item.Value3 > YSizeRange[1]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 8!!!! {item.Value3}>{YSizeRange[1]}", WarningEnum.High);
- if ((DateTime.Now - dt).Seconds > 1)
- {
- AddTextEvent(DateTime.Now, $"绘图", $"测厚超时!!!!", WarningEnum.High, false);
- break;
- }
- }
- //====
- //option.GreaterWarningArea = new UILineWarningArea(3.5);
- //option.LessWarningArea = new UILineWarningArea(2.2, Color.Gold);
- this.BeginInvoke(new System.Action(() =>
- {
+
+ //foreach (var item in HDpoints)
+ //{
+ // x = item.Y_Dis / 100.0; //cm -> m
+ // series1.Add(x, item.Value1);
+ // series2.Add(x, item.Value2);
+ // series3.Add(x, item.Value3);
+ // if (x < XSizeRange[0]) break;// AddTextEvent(DateTime.Now,$"绘图", $"门幅宽度超限 1!!!! {x}<{XSizeRange[0]}",WarningEnum.High);
+ // if (x > XSizeRange[1]) break;// AddTextEvent(DateTime.Now,$"绘图", $"门幅宽度超限 2!!!! {x}>{XSizeRange[1]}", WarningEnum.High);
+ // //if (item.Value1 < YSizeRange[0]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 3!!!! {item.Value1}<{YSizeRange[0]}", WarningEnum.High);
+ // //if (item.Value1 > YSizeRange[1]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 4!!!! {item.Value1}>{YSizeRange[1]}", WarningEnum.High);
+ // //if (item.Value2 < YSizeRange[0]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 5!!!! {item.Value2}<{YSizeRange[0]}", WarningEnum.High);
+ // //if (item.Value2 > YSizeRange[1]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 6!!!! {item.Value2}>{YSizeRange[1]}", WarningEnum.High);
+ // //if (item.Value3 < YSizeRange[0]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 7!!!! {item.Value3}<{YSizeRange[0]}", WarningEnum.High);
+ // //if (item.Value3 > YSizeRange[1]) AddTextEvent(DateTime.Now, $"绘图", $"测厚超限 8!!!! {item.Value3}>{YSizeRange[1]}", WarningEnum.High);
+ // if ((DateTime.Now - dt).Seconds > 1)
+ // {
+ // AddTextEvent(DateTime.Now, $"绘图", $"测厚超时!!!!", WarningEnum.High, false);
+ // break;
+ // }
+ //}
+ //====
+ //option.GreaterWarningArea = new UILineWarningArea(3.5);
+ //option.LessWarningArea = new UILineWarningArea(2.2, Color.Gold);
+
this.lineChartHouDu.SetOption(option);
}));
}
@@ -932,13 +960,46 @@ namespace LeatherApp.Page
if (!string.IsNullOrWhiteSpace(Config.ErpDBConStr) && !string.IsNullOrWhiteSpace(Config.ErpSql) && !string.IsNullOrWhiteSpace(barCode))
{
AddTextEvent(DateTime.Now,"扫码", $"产品条码({barCode})到ERP查询对应数据...", WarningEnum.Normal);
- var rowData = this.loadErpData(barCode);
- if (rowData == null)
+ DataRow rowData = null; ;
+ if (Config.CustomerName == "XCL")
{
- AddTextEvent(DateTime.Now,"扫码", $"产品条码({barCode})无对应ERP数据,不做响应!", WarningEnum.Low);
- return;
+ var datatb = this.loadErpDataTable(barCode);
+ if (datatb == null || datatb.Rows.Count == 0)
+ {
+ AddTextEvent(DateTime.Now, "扫码", $"产品条码({barCode})无对应ERP数据,不做响应!", WarningEnum.Low);
+ return;
+ }
+ if (datatb.Rows.Count > 1)
+ {
+ SelectReelFrm srf = new SelectReelFrm(datatb);
+ srf.Render();
+ srf.Text = "ERP卷号选择";
+ srf.ShowDialog();
+ if (srf.IsOK)
+ {
+ rowData = datatb.Rows[srf.RowIndex];
+ AddTextEvent(DateTime.Now, "卷号选择", $"Index({srf.RowIndex})-批号:{srf.SelectBatch},卷号:{srf.SelectReel},长度:{srf.SelectLen}!");
+ }
+ else
+ {
+ AddTextEvent(DateTime.Now, "卷号选择", $"未选择卷号!", WarningEnum.High);
+ srf.Dispose();
+ return;
+ }
+ srf.Dispose();
+ }
+ else
+ rowData = datatb.Rows[0];
+ }
+ else
+ {
+ rowData = this.loadErpData(barCode);
+ if (rowData == null)
+ {
+ AddTextEvent(DateTime.Now, "扫码", $"产品条码({barCode})无对应ERP数据,不做响应!", WarningEnum.Low);
+ return;
+ }
}
-
barCodeName = rowData[0].ToString();
if (rowData.ItemArray.Length > 1) len = rowData[1].ToString();
@@ -1460,6 +1521,27 @@ namespace LeatherApp.Page
// }
//});
}
+
+ private DataTable loadErpDataTable(string barCode)
+ {
+ var paramList = new List() {
+ new SugarParameter("@code", barCode)
+ };
+ Stopwatch stopwatch = Stopwatch.StartNew();
+#if Oracle
+ var data = Utils.DBUtils.execSql(Config.ErpSql, paramList, SqlSugar.DbType.Oracle);
+#else
+ var data = Utils.DBUtils.execSql(Config.ErpSql, paramList);
+#endif
+ if (data == null || data.Rows.Count < 1)
+ {
+ AddTextEvent(DateTime.Now, "Erp查询结果", $"{barCode}: 时长={stopwatch.ElapsedMilliseconds}ms, 无数据!", WarningEnum.Normal);
+ return null;
+ }
+
+ AddTextEvent(DateTime.Now, "Erp查询结果", $"{barCode}: 时长={stopwatch.ElapsedMilliseconds}ms, {JsonConvert.SerializeObject(data.Rows[0])}", WarningEnum.Normal);
+ return data;
+ }
private class ScanPhotoInfo
{
///
@@ -1731,7 +1813,7 @@ namespace LeatherApp.Page
errStep = 7;
{
List lstEditDefect0 = GetDefectPuaseListByIndex(pindex);
- AddTextEvent(DateTime.Now, $"暂停", $"(图像{pindex})已达观察台,瑕疵二次判断=》({string.Join(",", lstEditDefect0.Select(m => m.Code).ToArray())})是否包含在({string.Join(",", curRecord.ProductInfo.DefectPauseOption.ToArray())})中。");
+ AddTextEvent(DateTime.Now, $"暂停", $"(图像{pindex})已达观察台,瑕疵二次判断=》({string.Join(",", lstEditDefect0.Select(m => m.Code).ToArray())})是否包含在({string.Join(",", curRecord.ProductInfo.DefectPauseOption.ToArray())})中。", WarningEnum.Normal, false);
//瑕疵选项过滤 curRecord.ProductInfo.DefectPauseOption.Count == 0 || lstEditDefect.Where(x => curRecord.ProductInfo.DefectPauseOption.Contains(x.Code)).Count() > 0
if (curRecord.ProductInfo.DefectPauseOption.Count == 0 || lstEditDefect0.Where(x => curRecord.ProductInfo.DefectPauseOption.Contains(x.Code)).Count() > 0)
{
@@ -1740,7 +1822,7 @@ namespace LeatherApp.Page
try
{
//暂停
- AddTextEvent(DateTime.Now, $"暂停", $"(图像{pindex})需瑕疵二次判断,已达观察台,进入暂停。");
+ AddTextEvent(DateTime.Now, $"暂停", $"(图像{pindex})需瑕疵二次判断,已达观察台,进入暂停。",WarningEnum.Normal, false);
if (!Config.StopPLC)
this.devContainer.devPlc.pauseDev();
else if (!Config.StopIO && devContainer.devIOCard.IsInit)
@@ -1796,7 +1878,7 @@ namespace LeatherApp.Page
if (row.uid == uid)
{
oldCode = this.uiDataGridView1.Rows[i].Cells["colCode"].Value.ToString();
- AddTextEvent(DateTime.Now, $"暂停", $"修改第({i + 1})行瑕疵名称 ({this.uiDataGridView1.Rows[i].Cells["colDefectName"].Value})->({row.Name})");
+ AddTextEvent(DateTime.Now, $"暂停", $"修改第({i + 1})行瑕疵名称 ({this.uiDataGridView1.Rows[i].Cells["colDefectName"].Value})->({row.Name})", WarningEnum.Normal, false);
this.uiDataGridView1.Rows[i].Cells["colCode"].Value = row.Code;
this.uiDataGridView1.Rows[i].Cells["colDefectName"].Value = row.Name;
//this.uiDataGridView1.Refresh();
@@ -1825,7 +1907,7 @@ namespace LeatherApp.Page
//double len = (double)this.lblLen.Tag;
//this.reDrawDefectPoints(curRecord.DefectInfoList, new double[] { 0, Math.Round(curRecord.FaceWidthMax + 0.005f, 2) }, new double[] { 0, len });
- AddTextEvent(DateTime.Now, $"二次检测", $"本次忽略{frmDefect.lstDel.Count}个瑕疵,本张图由{liDefectCount} -> {lstEditDefect.Count},总数{curRecord.DefectInfoList.Count}");
+ AddTextEvent(DateTime.Now, $"二次检测", $"本次忽略{frmDefect.lstDel.Count}个瑕疵,本张图由{liDefectCount} -> {lstEditDefect.Count},总数{curRecord.DefectInfoList.Count}", WarningEnum.Normal, false);
}
this.uiMiniPagination1.TotalCount = curRecord.DefectTotalCount = curRecord.DefectInfoList.Count;
//
@@ -1945,13 +2027,17 @@ namespace LeatherApp.Page
double d1 = 0, d2 = 0, d3 = 0;
if (devContainer.GetThicknessValue(out d1, out d2, out d3))
{
- if (Math.Abs(yqjimi - hdJMDis) * 100 > 3) //在3cm以内不做记录
+ if (Math.Abs(yqjimi - hdJMDis) * 100 > 10) //在10cm以内不做记录
{
//加入偏差计算
d1 = Math.Round(d1 + Config.DataOffset1, 2);
d2 = Math.Round(d2 + Config.DataOffset2, 2);
d3 = Math.Round(d3 + Config.DataOffset3, 2);
+ //限制0-5mm范围
+ d1 = d1 > 5 ? 5 : d1;
+ d2 = d2 > 5 ? 5 : d2;
+ d3 = d3 > 5 ? 5 : d3;
this.BeginInvoke(new System.Action(() =>
{
this.uilbHD.Text = $"当前厚度:{d1}, {d2}, {d3}";
@@ -1980,9 +2066,10 @@ namespace LeatherApp.Page
curRecord.ThicknessList.Select(t => t.Value2).ToList().Min(),
curRecord.ThicknessList.Select(t => t.Value3).ToList().Min(),
};
- reDrawHouDu(curRecord.ThicknessList,
+ reDrawHouDu(ThicknessInfo,
new double[] { 0, Math.Round(yqjimi * 100 + 0.005f, 2) },
- new double[] { Math.Round(hdMin.Min() - 0.5, 2), Math.Round(hdMax.Max() + 0.5f, 2) });
+ new double[] { (hdMin.Min()-0.1) <=0? 0: (hdMin.Min() - 0.1),
+ (hdMax.Max() + 0.1)> 5?5: (hdMax.Max() + 0.1) });
}
}
else
@@ -2229,12 +2316,12 @@ namespace LeatherApp.Page
//循环等待数据后期处理完成
Thread.Sleep(500);
List lstEditDefect = curRecord.DefectInfoList.Where(m => m.PhotoIndex == liPhotoIndex).ToList();
- AddTextEvent(DateTime.Now, $"暂停", $"(图像{liPhotoIndex})已达观察台,瑕疵二次判断=》({string.Join(",", lstEditDefect.Select(m => m.Code).ToArray())})是否包含在({string.Join(",", curRecord.ProductInfo.DefectPauseOption.ToArray())})中。");
+ AddTextEvent(DateTime.Now, $"暂停", $"(图像{liPhotoIndex})已达观察台,瑕疵二次判断=》({string.Join(",", lstEditDefect.Select(m => m.Code).ToArray())})是否包含在({string.Join(",", curRecord.ProductInfo.DefectPauseOption.ToArray())})中。", WarningEnum.Normal, false);
//瑕疵选项过滤
if (Config.OpenHalconDefect || curRecord.ProductInfo.DefectPauseOption.Count == 0 || lstEditDefect.Where(x => curRecord.ProductInfo.DefectPauseOption.Contains(x.Code)).Count() > 0)
{
//暂停
- AddTextEvent(DateTime.Now, $"暂停", $"(图像{liPhotoIndex})需瑕疵二次判断,已达观察台,进入暂停。");
+ AddTextEvent(DateTime.Now, $"暂停", $"(图像{liPhotoIndex})需瑕疵二次判断,已达观察台,进入暂停。", WarningEnum.Normal, false);
if (!Config.StopPLC)
this.devContainer.devPlc.pauseDev();
else if (!Config.StopIO && devContainer.devIOCard.IsInit)
@@ -2283,7 +2370,7 @@ namespace LeatherApp.Page
if (row.uid == uid)
{
oldCode = this.uiDataGridView1.Rows[i].Cells["colCode"].Value.ToString();
- AddTextEvent(DateTime.Now, $"暂停", $"修改第({i + 1})行瑕疵名称 ({this.uiDataGridView1.Rows[i].Cells["colDefectName"].Value})->({row.Name})");
+ AddTextEvent(DateTime.Now, $"暂停", $"修改第({i + 1})行瑕疵名称 ({this.uiDataGridView1.Rows[i].Cells["colDefectName"].Value})->({row.Name})", WarningEnum.Normal, false);
this.uiDataGridView1.Rows[i].Cells["colCode"].Value = row.Code;
this.uiDataGridView1.Rows[i].Cells["colDefectName"].Value = row.Name;
//this.uiDataGridView1.Refresh();
@@ -2312,7 +2399,7 @@ namespace LeatherApp.Page
//double len = (double)this.lblLen.Tag;
//this.reDrawDefectPoints(curRecord.DefectInfoList, new double[] { 0, Math.Round(curRecord.FaceWidthMax + 0.005f, 2) }, new double[] { 0, len });
- AddTextEvent(DateTime.Now, $"二次检测", $"本次忽略{frmDefect.lstDel.Count}个瑕疵,本张图由{liDefectCount} -> {lstEditDefect.Count},总数{curRecord.DefectInfoList.Count}");
+ AddTextEvent(DateTime.Now, $"二次检测", $"本次忽略{frmDefect.lstDel.Count}个瑕疵,本张图由{liDefectCount} -> {lstEditDefect.Count},总数{curRecord.DefectInfoList.Count}", WarningEnum.Normal, false);
}
this.uiMiniPagination1.TotalCount = curRecord.DefectTotalCount = curRecord.DefectInfoList.Count;
//
@@ -3627,26 +3714,53 @@ namespace LeatherApp.Page
string imgid = currentDate + i.ToString("000");
defectNameInfo = Config.getDefectItem(res.modelName, int.Parse(res.excelTable.Rows[i]["类别"].ToString()));
- defectInfo = new DefectInfo
+ if (defectNameInfo != null)
{
- PhotoIndex = res.photoIndex,
- Code = defectNameInfo.Value("code"),
- Name = defectNameInfo.Value("name"),
- X = double.Parse(res.excelTable.Rows[i]["X"].ToString()),//cm
- Y = Math.Round((res.photoIndex * res.bmp.Height * 1.0d / Config.cm2px_y + double.Parse(res.excelTable.Rows[i]["Y"].ToString())), 2),//cm
- //Y = Math.Round((res.PicDis * 100 - double.Parse(res.excelTable.Rows[i]["Y"].ToString())), 2),//cm
- Width = double.Parse(res.excelTable.Rows[i]["W"].ToString()),//cm
- Height = double.Parse(res.excelTable.Rows[i]["H"].ToString()),//cm
- ZXD = double.Parse(res.excelTable.Rows[i]["置信度"].ToString()),
- Contrast = double.Parse(res.excelTable.Rows[i]["对比度"].ToString()),
- Target = int.Parse(res.excelTable.Rows[i]["目标"].ToString()),
- imageID = imgid,//res.lstDefectBmp[i].Clone(),
- PicY = double.Parse(res.excelTable.Rows[i]["Y"].ToString()),//cm
- CurrDis = res.CurrDis,
- };
+ defectInfo = new DefectInfo
+ {
+ PhotoIndex = res.photoIndex,
+ Code = defectNameInfo.Value("code"),
+ Name = defectNameInfo.Value("name"),
+ X = double.Parse(res.excelTable.Rows[i]["X"].ToString()),//cm
+ Y = Math.Round((res.photoIndex * res.bmp.Height * 1.0d / Config.cm2px_y + double.Parse(res.excelTable.Rows[i]["Y"].ToString())), 2),//cm
+ //Y = Math.Round((res.PicDis * 100 - double.Parse(res.excelTable.Rows[i]["Y"].ToString())), 2),//cm
+ Width = double.Parse(res.excelTable.Rows[i]["W"].ToString()),//cm
+ Height = double.Parse(res.excelTable.Rows[i]["H"].ToString()),//cm
+ ZXD = double.Parse(res.excelTable.Rows[i]["置信度"].ToString()),
+ Contrast = double.Parse(res.excelTable.Rows[i]["对比度"].ToString()),
+ Target = int.Parse(res.excelTable.Rows[i]["目标"].ToString()),
+ imageID = imgid,//res.lstDefectBmp[i].Clone(),
+ PicY = double.Parse(res.excelTable.Rows[i]["Y"].ToString()),//cm
+ CurrDis = res.CurrDis,
+ };
+ }
+ else
+ {
+ step = 5000;
+ JArray defectItemList;
+ Config.LoadModelDefectItemList(res.modelName, out defectItemList);
+ AddTextEvent(DateTime.Now, $"label缺失", $"模型{res.modelName},label缺失,ID{int.Parse(res.excelTable.Rows[i]["类别"].ToString())},对应label数组:{defectItemList.ToString()}", WarningEnum.Low, true);
+ defectInfo = new DefectInfo
+ {
+ PhotoIndex = res.photoIndex,
+ Code = res.excelTable.Rows[i]["类别"].ToString()+"-未知",
+ Name = res.excelTable.Rows[i]["类别"].ToString() + "-未知",
+ X = double.Parse(res.excelTable.Rows[i]["X"].ToString()),//cm
+ Y = Math.Round((res.photoIndex * res.bmp.Height * 1.0d / Config.cm2px_y + double.Parse(res.excelTable.Rows[i]["Y"].ToString())), 2),//cm
+ //Y = Math.Round((res.PicDis * 100 - double.Parse(res.excelTable.Rows[i]["Y"].ToString())), 2),//cm
+ Width = double.Parse(res.excelTable.Rows[i]["W"].ToString()),//cm
+ Height = double.Parse(res.excelTable.Rows[i]["H"].ToString()),//cm
+ ZXD = double.Parse(res.excelTable.Rows[i]["置信度"].ToString()),
+ Contrast = double.Parse(res.excelTable.Rows[i]["对比度"].ToString()),
+ Target = int.Parse(res.excelTable.Rows[i]["目标"].ToString()),
+ imageID = imgid,//res.lstDefectBmp[i].Clone(),
+ PicY = double.Parse(res.excelTable.Rows[i]["Y"].ToString()),//cm
+ CurrDis = res.CurrDis,
+ };
+ }
defectInfo.ModifyUserCode = defectInfo.CreateUserCode = res.record.CreateUserCode;
- if (defectPauseForUser && res.record.ProductInfo.DefectPauseOption.Contains(defectInfo.Code))
+ if (defectPauseForUser && (res.record.ProductInfo.DefectPauseOption == null || res.record.ProductInfo.DefectPauseOption.Count == 0) && res.record.ProductInfo.DefectPauseOption.Contains(defectInfo.Code))
{
lock (lock_defectPuase)
{
@@ -5524,5 +5638,66 @@ namespace LeatherApp.Page
[Description("疵点数")]
public int Count { get; set; }
}
+ #region 界面调试
+ private void button4_Click(object sender, EventArgs e)
+ {
+ this.BeginInvoke(new System.Action(() =>
+ {
+ int length = 10000;
+ List ThicknessList = new List();
+ for (int i = 0; i < length; i++)
+ {
+ double yqjimi = i * 0.1;
+ int n1 = 1019, n2 = 1089, n3 = 1167;
+ //Random ran = new Random();
+ //int n1 = ran.Next(0, 5000);
+ double d1 = n1 / 1000.0;
+ //int n2 = ran.Next(0, 5000);
+ double d2 = n2 / 1000.0;
+ //int n3 = ran.Next(0, 5000);
+ double d3 = n3 / 1000.0;
+ //加入偏差计算
+ d1 = Math.Round(d1 + Config.DataOffset1, 2);
+ d2 = Math.Round(d2 + Config.DataOffset2, 2);
+ d3 = Math.Round(d3 + Config.DataOffset3, 2);
+
+ //限制0-5mm范围
+ d1 = d1 > 5 ? 5 : d1;
+ d2 = d2 > 5 ? 5 : d2;
+ d3 = d3 > 5 ? 5 : d3;
+ this.BeginInvoke(new System.Action(() =>
+ {
+ this.uilbHD.Text = $"当前厚度:{d1}, {d2}, {d3}";
+ }));
+
+ Thickness ThicknessInfo = new Thickness
+ {
+ Y_Dis = Math.Round(yqjimi * 100, 2),//cm
+ Value1 = d1,
+ Value2 = d2,
+ Value3 = d3,
+ };
+ ThicknessList.Add(ThicknessInfo);
+
+ List hdMax = new List(){
+ ThicknessList.Select(t=> t.Value1).ToList().Max(),
+ ThicknessList.Select(t => t.Value2).ToList().Max(),
+ ThicknessList.Select(t => t.Value3).ToList().Max(),
+ };
+ List hdMin = new List(){
+ ThicknessList.Select(t=> t.Value1).ToList().Min(),
+ ThicknessList.Select(t => t.Value2).ToList().Min(),
+ ThicknessList.Select(t => t.Value3).ToList().Min(),
+ };
+ reDrawHouDu(ThicknessInfo,
+ new double[] { 0, Math.Round(yqjimi * 100 + 0.005f, 2) },
+ new double[] { (hdMin.Min()-0.5) <=0? 0: (hdMin.Min() - 0.5),
+ (hdMax.Max() + 0.5)> 5?5: (hdMax.Max() + 0.5) });
+ //this.lineChartHouDu.Refresh();
+ //Thread.Sleep(100);
+ }
+ }));
+ }
+ #endregion
}
}
diff --git a/LeatherProject/LeatherApp/Page/FProductInfo.Designer.cs b/LeatherProject/LeatherApp/Page/FProductInfo.Designer.cs
index fba2eb8..52cb7a8 100644
--- a/LeatherProject/LeatherApp/Page/FProductInfo.Designer.cs
+++ b/LeatherProject/LeatherApp/Page/FProductInfo.Designer.cs
@@ -33,12 +33,12 @@
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
this.uiTitlePanel2 = new Sunny.UI.UITitlePanel();
this.tcbarTensionValue = new Sunny.UI.UITrackBar();
this.tcbarGain = new Sunny.UI.UITrackBar();
@@ -74,14 +74,6 @@
this.uiLabel7 = new Sunny.UI.UILabel();
this.uiTitlePanel5 = new Sunny.UI.UITitlePanel();
this.uiDataGridView1 = new Sunny.UI.UIDataGridView();
- this.col_code = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.col_zxd = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.col_area = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.col_contrast_lower = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.col_contrast_top = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.col_IsOR = new System.Windows.Forms.DataGridViewCheckBoxColumn();
- this.col_Len = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.col_Cnt = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.uiTitlePanel6 = new Sunny.UI.UITitlePanel();
this.uiDataGridView2 = new Sunny.UI.UIDataGridView();
this.col2_code = new System.Windows.Forms.DataGridViewTextBoxColumn();
@@ -105,6 +97,14 @@
this.cmbColor = new Sunny.UI.UIComboBox();
this.uiLabel3 = new Sunny.UI.UILabel();
this.uiLabel2 = new Sunny.UI.UILabel();
+ this.col_code = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.col_zxd = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.col_area = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.col_contrast_lower = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.col_contrast_top = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.col_IsOR = new System.Windows.Forms.DataGridViewCheckBoxColumn();
+ this.col_Len = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.col_Cnt = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.uiTitlePanel2.SuspendLayout();
this.uiTitlePanel3.SuspendLayout();
this.uiTitlePanel4.SuspendLayout();
@@ -724,68 +724,6 @@
this.uiDataGridView1.Style = Sunny.UI.UIStyle.Custom;
this.uiDataGridView1.TabIndex = 21;
//
- // col_code
- //
- this.col_code.DataPropertyName = "Code";
- this.col_code.HeaderText = "code";
- this.col_code.MinimumWidth = 8;
- this.col_code.Name = "col_code";
- this.col_code.ReadOnly = true;
- this.col_code.Visible = false;
- this.col_code.Width = 150;
- //
- // col_zxd
- //
- this.col_zxd.DataPropertyName = "ZXD";
- dataGridViewCellStyle3.NullValue = null;
- this.col_zxd.DefaultCellStyle = dataGridViewCellStyle3;
- this.col_zxd.HeaderText = "置信度";
- this.col_zxd.MinimumWidth = 20;
- this.col_zxd.Name = "col_zxd";
- this.col_zxd.Width = 150;
- //
- // col_area
- //
- this.col_area.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
- this.col_area.DataPropertyName = "Area";
- this.col_area.HeaderText = "面积(mm^2)";
- this.col_area.MinimumWidth = 20;
- this.col_area.Name = "col_area";
- //
- // col_contrast_lower
- //
- this.col_contrast_lower.DataPropertyName = "Contrast";
- this.col_contrast_lower.HeaderText = "对比度(下限)";
- this.col_contrast_lower.MinimumWidth = 80;
- this.col_contrast_lower.Name = "col_contrast_lower";
- this.col_contrast_lower.Width = 120;
- //
- // col_contrast_top
- //
- this.col_contrast_top.HeaderText = "对比度(上限)";
- this.col_contrast_top.MinimumWidth = 80;
- this.col_contrast_top.Name = "col_contrast_top";
- this.col_contrast_top.Width = 120;
- //
- // col_IsOR
- //
- this.col_IsOR.HeaderText = "或向选择";
- this.col_IsOR.MinimumWidth = 8;
- this.col_IsOR.Name = "col_IsOR";
- this.col_IsOR.Width = 150;
- //
- // col_Len
- //
- this.col_Len.HeaderText = "报警长度(m)";
- this.col_Len.Name = "col_Len";
- this.col_Len.Visible = false;
- //
- // col_Cnt
- //
- this.col_Cnt.HeaderText = "报警数量";
- this.col_Cnt.Name = "col_Cnt";
- this.col_Cnt.Visible = false;
- //
// uiTitlePanel6
//
this.uiTitlePanel6.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@@ -1164,6 +1102,67 @@
this.uiLabel2.Text = "产品颜色";
this.uiLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
+ // col_code
+ //
+ this.col_code.DataPropertyName = "Code";
+ this.col_code.HeaderText = "code";
+ this.col_code.MinimumWidth = 8;
+ this.col_code.Name = "col_code";
+ this.col_code.ReadOnly = true;
+ this.col_code.Visible = false;
+ this.col_code.Width = 150;
+ //
+ // col_zxd
+ //
+ this.col_zxd.DataPropertyName = "ZXD";
+ dataGridViewCellStyle3.NullValue = null;
+ this.col_zxd.DefaultCellStyle = dataGridViewCellStyle3;
+ this.col_zxd.HeaderText = "置信度";
+ this.col_zxd.MinimumWidth = 20;
+ this.col_zxd.Name = "col_zxd";
+ this.col_zxd.Width = 150;
+ //
+ // col_area
+ //
+ this.col_area.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+ this.col_area.DataPropertyName = "Area";
+ this.col_area.HeaderText = "面积(mm^2)";
+ this.col_area.MinimumWidth = 20;
+ this.col_area.Name = "col_area";
+ //
+ // col_contrast_lower
+ //
+ this.col_contrast_lower.DataPropertyName = "Contrast";
+ this.col_contrast_lower.HeaderText = "对比度(下限)";
+ this.col_contrast_lower.MinimumWidth = 80;
+ this.col_contrast_lower.Name = "col_contrast_lower";
+ this.col_contrast_lower.Width = 120;
+ //
+ // col_contrast_top
+ //
+ this.col_contrast_top.HeaderText = "对比度(上限)";
+ this.col_contrast_top.MinimumWidth = 80;
+ this.col_contrast_top.Name = "col_contrast_top";
+ this.col_contrast_top.Width = 120;
+ //
+ // col_IsOR
+ //
+ this.col_IsOR.HeaderText = "或向选择";
+ this.col_IsOR.MinimumWidth = 8;
+ this.col_IsOR.Name = "col_IsOR";
+ this.col_IsOR.Width = 150;
+ //
+ // col_Len
+ //
+ this.col_Len.HeaderText = "报警长度(m)";
+ this.col_Len.Name = "col_Len";
+ this.col_Len.Width = 130;
+ //
+ // col_Cnt
+ //
+ this.col_Cnt.HeaderText = "报警数量";
+ this.col_Cnt.Name = "col_Cnt";
+ //
// FProductInfo
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
@@ -1248,14 +1247,6 @@
private Sunny.UI.UIRadioButton rbMaterial4;
private Sunny.UI.UIRadioButton rbMaterial3;
private Sunny.UI.UIRadioButton rbMaterial2;
- private System.Windows.Forms.DataGridViewTextBoxColumn col_code;
- private System.Windows.Forms.DataGridViewTextBoxColumn col_zxd;
- private System.Windows.Forms.DataGridViewTextBoxColumn col_area;
- private System.Windows.Forms.DataGridViewTextBoxColumn col_contrast_lower;
- private System.Windows.Forms.DataGridViewTextBoxColumn col_contrast_top;
- private System.Windows.Forms.DataGridViewCheckBoxColumn col_IsOR;
- private System.Windows.Forms.DataGridViewTextBoxColumn col_Len;
- private System.Windows.Forms.DataGridViewTextBoxColumn col_Cnt;
private Sunny.UI.UINumPadTextBox uiNumPadTextBox1;
private Sunny.UI.UILabel uiLabel11;
private Sunny.UI.UISwitch uiSwitch1;
@@ -1265,5 +1256,13 @@
private Sunny.UI.UITextBox tbClass;
private Sunny.UI.UILabel uiLabel14;
private Sunny.UI.UISymbolButton uiSymbolButton1;
+ private System.Windows.Forms.DataGridViewTextBoxColumn col_code;
+ private System.Windows.Forms.DataGridViewTextBoxColumn col_zxd;
+ private System.Windows.Forms.DataGridViewTextBoxColumn col_area;
+ private System.Windows.Forms.DataGridViewTextBoxColumn col_contrast_lower;
+ private System.Windows.Forms.DataGridViewTextBoxColumn col_contrast_top;
+ private System.Windows.Forms.DataGridViewCheckBoxColumn col_IsOR;
+ private System.Windows.Forms.DataGridViewTextBoxColumn col_Len;
+ private System.Windows.Forms.DataGridViewTextBoxColumn col_Cnt;
}
}
diff --git a/LeatherProject/LeatherApp/Page/FProductInfo.cs b/LeatherProject/LeatherApp/Page/FProductInfo.cs
index ffd0afc..649d49b 100644
--- a/LeatherProject/LeatherApp/Page/FProductInfo.cs
+++ b/LeatherProject/LeatherApp/Page/FProductInfo.cs
@@ -259,8 +259,8 @@ namespace LeatherApp.Page
uiDataGridView1.Rows[i].Cells["col_contrast_top"].Value = ContrastToPercent(item1.ContrastTop);
uiDataGridView1.Rows[i].Cells["col_contrast_lower"].Value = ContrastToPercent(item1.ContrastLower);
uiDataGridView1.Rows[i].Cells["col_IsOR"].Value = item1.IsOR;
- //uiDataGridView1.Rows[i].Cells["col_Len"].Value = item1.DefectWarnLength;
- //uiDataGridView1.Rows[i].Cells["col_Cnt"].Value = item1.DefectWarnCnt;
+ uiDataGridView1.Rows[i].Cells["col_Len"].Value = item1.DefectWarnLength;
+ uiDataGridView1.Rows[i].Cells["col_Cnt"].Value = item1.DefectWarnCnt;
}
}
GradeLimit item2;
diff --git a/LeatherProject/LeatherApp/Page/FReport.cs b/LeatherProject/LeatherApp/Page/FReport.cs
index 615ab0f..f18ebcf 100644
--- a/LeatherProject/LeatherApp/Page/FReport.cs
+++ b/LeatherProject/LeatherApp/Page/FReport.cs
@@ -224,7 +224,8 @@ namespace LeatherApp.Page
};
reDrawHouDu(record.ThicknessList,
new double[] { 0, Math.Round(len + 0.005f, 2) },
- new double[] { hdMin.Min(), Math.Round(hdMax.Max() + 0.005f, 2) });
+ new double[] { (hdMin.Min()-0.1) <=0? 0: (hdMin.Min() - 0.1),
+ (hdMax.Max() + 0.1)> 5?5: (hdMax.Max() + 0.1) });
}
err = 3;
//
@@ -435,7 +436,7 @@ namespace LeatherApp.Page
var row2_cell6 = wsDefectsDetail.Row(rowIndex).Cell(cellIndex + 5);
//row2_cell6.SetDataType(XLDataType.Text);//类型设置不起作用 用"'"+内容代替
//row2_cell6.DataType = XLDataType.Text;
- row2_cell6.Value = "'" + ProductDefects.ReelId;
+ row2_cell6.Value = ProductDefects.ReelId;
row2_cell6.Style = row2_cell2.Style;
var row2_cell7 = wsDefectsDetail.Row(rowIndex).Cell(cellIndex + 6);
diff --git a/LeatherProject/LeatherApp/Page/SelectReelFrm.Designer.cs b/LeatherProject/LeatherApp/Page/SelectReelFrm.Designer.cs
new file mode 100644
index 0000000..48e9bdd
--- /dev/null
+++ b/LeatherProject/LeatherApp/Page/SelectReelFrm.Designer.cs
@@ -0,0 +1,225 @@
+namespace LeatherApp.Page
+{
+ partial class SelectReelFrm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.txtBatch = new Sunny.UI.UITextBox();
+ this.label3 = new System.Windows.Forms.Label();
+ this.txtLen = new Sunny.UI.UITextBox();
+ this.cmbReel = new Sunny.UI.UIComboBox();
+ this.lbErr = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.pnlBtm.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // pnlBtm
+ //
+ this.pnlBtm.Location = new System.Drawing.Point(1, 265);
+ this.pnlBtm.Size = new System.Drawing.Size(623, 55);
+ //
+ // btnCancel
+ //
+ this.btnCancel.Location = new System.Drawing.Point(495, 12);
+ this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
+ //
+ // btnOK
+ //
+ this.btnOK.Location = new System.Drawing.Point(380, 12);
+ this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(31, 87);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(79, 16);
+ this.label1.TabIndex = 2;
+ this.label1.Text = "当前批号:";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(31, 210);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(79, 16);
+ this.label2.TabIndex = 4;
+ this.label2.Text = "卷号选择:";
+ //
+ // txtBatch
+ //
+ this.txtBatch.ButtonFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
+ this.txtBatch.ButtonFillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
+ this.txtBatch.ButtonFillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
+ this.txtBatch.ButtonRectColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
+ this.txtBatch.ButtonRectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
+ this.txtBatch.ButtonRectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
+ this.txtBatch.ButtonStyleInherited = false;
+ this.txtBatch.ButtonSymbolOffset = new System.Drawing.Point(0, 0);
+ this.txtBatch.Cursor = System.Windows.Forms.Cursors.IBeam;
+ this.txtBatch.FillColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(251)))), ((int)(((byte)(250)))));
+ this.txtBatch.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.txtBatch.Location = new System.Drawing.Point(130, 80);
+ this.txtBatch.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+ this.txtBatch.MinimumSize = new System.Drawing.Size(1, 16);
+ this.txtBatch.Name = "txtBatch";
+ this.txtBatch.Padding = new System.Windows.Forms.Padding(5);
+ this.txtBatch.ReadOnly = true;
+ this.txtBatch.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
+ this.txtBatch.ScrollBarColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
+ this.txtBatch.ScrollBarStyleInherited = false;
+ this.txtBatch.ShowText = false;
+ this.txtBatch.Size = new System.Drawing.Size(466, 29);
+ this.txtBatch.Style = Sunny.UI.UIStyle.Custom;
+ this.txtBatch.StyleCustomMode = true;
+ this.txtBatch.TabIndex = 5;
+ this.txtBatch.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
+ this.txtBatch.Watermark = "";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(31, 139);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(47, 16);
+ this.label3.TabIndex = 6;
+ this.label3.Text = "长度:";
+ //
+ // txtLen
+ //
+ this.txtLen.ButtonFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
+ this.txtLen.ButtonFillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
+ this.txtLen.ButtonFillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
+ this.txtLen.ButtonRectColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
+ this.txtLen.ButtonRectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
+ this.txtLen.ButtonRectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
+ this.txtLen.ButtonStyleInherited = false;
+ this.txtLen.ButtonSymbolOffset = new System.Drawing.Point(0, 0);
+ this.txtLen.Cursor = System.Windows.Forms.Cursors.IBeam;
+ this.txtLen.FillColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(251)))), ((int)(((byte)(250)))));
+ this.txtLen.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.txtLen.Location = new System.Drawing.Point(130, 133);
+ this.txtLen.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+ this.txtLen.MinimumSize = new System.Drawing.Size(1, 16);
+ this.txtLen.Name = "txtLen";
+ this.txtLen.Padding = new System.Windows.Forms.Padding(5);
+ this.txtLen.ReadOnly = true;
+ this.txtLen.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
+ this.txtLen.ScrollBarColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
+ this.txtLen.ScrollBarStyleInherited = false;
+ this.txtLen.ShowText = false;
+ this.txtLen.Size = new System.Drawing.Size(466, 29);
+ this.txtLen.Style = Sunny.UI.UIStyle.Custom;
+ this.txtLen.StyleCustomMode = true;
+ this.txtLen.TabIndex = 7;
+ this.txtLen.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
+ this.txtLen.Watermark = "";
+ //
+ // cmbReel
+ //
+ this.cmbReel.DataSource = null;
+ this.cmbReel.DropDownStyle = Sunny.UI.UIDropDownStyle.DropDownList;
+ this.cmbReel.FillColor = System.Drawing.Color.White;
+ this.cmbReel.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.cmbReel.ItemHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(200)))), ((int)(((byte)(255)))));
+ this.cmbReel.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
+ this.cmbReel.Location = new System.Drawing.Point(130, 202);
+ this.cmbReel.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+ this.cmbReel.MinimumSize = new System.Drawing.Size(63, 0);
+ this.cmbReel.Name = "cmbReel";
+ this.cmbReel.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
+ this.cmbReel.Size = new System.Drawing.Size(466, 29);
+ this.cmbReel.Style = Sunny.UI.UIStyle.Custom;
+ this.cmbReel.TabIndex = 8;
+ this.cmbReel.Text = "uiComboBox1";
+ this.cmbReel.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
+ this.cmbReel.Watermark = "";
+ this.cmbReel.SelectedIndexChanged += new System.EventHandler(this.cmbReel_SelectedIndexChanged);
+ //
+ // lbErr
+ //
+ this.lbErr.AutoSize = true;
+ this.lbErr.Location = new System.Drawing.Point(127, 167);
+ this.lbErr.Name = "lbErr";
+ this.lbErr.Size = new System.Drawing.Size(47, 16);
+ this.lbErr.TabIndex = 9;
+ this.lbErr.Text = "Error";
+ this.lbErr.Visible = false;
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(127, 48);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(63, 16);
+ this.label4.TabIndex = 10;
+ this.label4.Text = "ERP信息";
+ //
+ // SelectReelFrm
+ //
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
+ this.ClientSize = new System.Drawing.Size(625, 323);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.lbErr);
+ this.Controls.Add(this.cmbReel);
+ this.Controls.Add(this.txtLen);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.txtBatch);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Name = "SelectReelFrm";
+ this.Text = "选择对应卷号";
+ this.ZoomScaleRect = new System.Drawing.Rectangle(15, 15, 800, 450);
+ this.Controls.SetChildIndex(this.pnlBtm, 0);
+ this.Controls.SetChildIndex(this.label1, 0);
+ this.Controls.SetChildIndex(this.label2, 0);
+ this.Controls.SetChildIndex(this.txtBatch, 0);
+ this.Controls.SetChildIndex(this.label3, 0);
+ this.Controls.SetChildIndex(this.txtLen, 0);
+ this.Controls.SetChildIndex(this.cmbReel, 0);
+ this.Controls.SetChildIndex(this.lbErr, 0);
+ this.Controls.SetChildIndex(this.label4, 0);
+ this.pnlBtm.ResumeLayout(false);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private Sunny.UI.UITextBox txtBatch;
+ private System.Windows.Forms.Label label3;
+ private Sunny.UI.UITextBox txtLen;
+ private Sunny.UI.UIComboBox cmbReel;
+ private System.Windows.Forms.Label lbErr;
+ private System.Windows.Forms.Label label4;
+ }
+}
\ No newline at end of file
diff --git a/LeatherProject/LeatherApp/Page/SelectReelFrm.cs b/LeatherProject/LeatherApp/Page/SelectReelFrm.cs
new file mode 100644
index 0000000..561a39c
--- /dev/null
+++ b/LeatherProject/LeatherApp/Page/SelectReelFrm.cs
@@ -0,0 +1,114 @@
+using Models;
+using Service;
+using SqlSugar;
+using Sunny.UI;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace LeatherApp.Page
+{
+ public partial class SelectReelFrm : UIEditForm
+ {
+ //private DataTable ErpTb;
+ RecordsService service = new RecordsService();
+ List ErpData = new List();
+ List Indexs = new List();
+
+ public string SelectBatch;
+ public string SelectReel;
+ public string SelectLen;
+
+ public int RowIndex = 0;
+ public SelectReelFrm(DataTable tb)
+ {
+ InitializeComponent();
+
+ txtBatch.Text = tb.Rows[0][2].ToString();
+ //ErpTb = tb.Clone();
+ label4.Text = $"ERP信息:{tb.Rows.Count}条";
+ InitView(tb);
+ }
+
+ private Expression> createQueryExpression()
+ {
+ return Expressionable.Create()
+ .And(it => it.CreateTime >= DateTime.Now.SetTime(0, 0, 0).AddDays(-1))
+ .And(it => it.CreateTime < DateTime.Now.SetTime(0, 0, 0).AddDays(1))
+ .AndIF(!string.IsNullOrWhiteSpace(txtBatch.Text), it => it.BatchId.Contains(txtBatch.Text.Trim()))
+ .ToExpression();//注意 这一句 不能少
+ }
+
+ private void InitView(DataTable ErpTb)
+ {
+ List list = new List();
+ int totalCount =0;
+ //var list2 = service.GetListNav(1, 10000, ref totalCount, createQueryExpression());
+ //if (list2 != null && list2.Count > 0)
+ //{
+ // for (int i = 0; i < ErpTb.Rows.Count; i++)
+ // {
+ // var find = list2.Find(x => x.ReelId == ErpTb.Rows[i][3].ToString() || x.BatchId == ErpTb.Rows[i][2].ToString());
+ // if (find == null)
+ // {
+ // Indexs.Add(i);
+ // list.Add(ErpTb.Rows[i][3].ToString());
+ // ErpData.Add(new string[] { ErpTb.Rows[i][2].ToString(), ErpTb.Rows[i][4].ToString(), ErpTb.Rows[i][1].ToString() });
+ // }
+ // }
+ //}
+ //else
+ {
+ for (int i = 0; i < ErpTb.Rows.Count; i++)
+ {
+ Indexs.Add(i);
+ list.Add(ErpTb.Rows[i][3].ToString());
+ ErpData.Add(new string[] { ErpTb.Rows[i][2].ToString(), ErpTb.Rows[i][4].ToString(), ErpTb.Rows[i][1].ToString() });
+ }
+ }
+ if (list.Count > 0)
+ {
+ cmbReel.DataSource = list;
+ cmbReel.SelectedIndex = 0;
+ txtLen.Text = ErpData[0][2];
+ }
+ else
+ {
+ lbErr.Visible = true;
+ lbErr.Text = $"ERP数据卷号都已经记录-{ErpTb.Rows.Count}";
+ }
+ }
+
+ private void cmbReel_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (cmbReel.SelectedIndex >= 0)
+ {
+ txtBatch.Text = ErpData[cmbReel.SelectedIndex][0];
+ txtLen.Text = ErpData[cmbReel.SelectedIndex][2];
+ RowIndex = Indexs[cmbReel.SelectedIndex];
+ }
+ }
+
+ private void btnCancel_Click(object sender, EventArgs e)
+ {
+ this.DialogResult = DialogResult.Cancel;
+ this.Close();
+ }
+
+ private void btnOK_Click(object sender, EventArgs e)
+ {
+ RowIndex = Indexs[cmbReel.SelectedIndex];
+ SelectBatch = txtBatch.Text;
+ SelectReel = cmbReel.Text;
+ SelectLen = txtLen.Text;
+ this.DialogResult= DialogResult.OK;
+ }
+ }
+}
diff --git a/LeatherProject/LeatherApp/Page/SelectReelFrm.resx b/LeatherProject/LeatherApp/Page/SelectReelFrm.resx
new file mode 100644
index 0000000..29dcb1b
--- /dev/null
+++ b/LeatherProject/LeatherApp/Page/SelectReelFrm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/LeatherProject/LeatherApp/Utils/DBUtils.cs b/LeatherProject/LeatherApp/Utils/DBUtils.cs
index ab347f3..f886146 100644
--- a/LeatherProject/LeatherApp/Utils/DBUtils.cs
+++ b/LeatherProject/LeatherApp/Utils/DBUtils.cs
@@ -118,15 +118,13 @@ namespace LeatherApp.Utils
//dt2.Columns.RemoveAt(0);
//dt2.Columns.RemoveAt(0);
+ //条码查询 mfg_material_goods
string sqlstr = $"select id,current_qty,batch_no,goods_code,material_id,mo_id from mfg_material_goods where id={parameters[0].Value}";
var dt2 = db.Ado.GetDataTable(sqlstr);
-
-
-
-
+ //根据mo_id 从 order_main_order 查询 material_id
sqlstr = $"select id,material_id from order_main_order where id={dt2.Rows[0]["mo_id"]}";
var dt4 = db.Ado.GetDataTable(sqlstr);
-
+ //根据material_id 从 base_material 查询 material_code material_name
sqlstr = $"select id,material_code,material_name from base_material where id={dt4.Rows[0]["material_id"]}";
var dt3 = db.Ado.GetDataTable(sqlstr);
diff --git a/LeatherProject/LeatherApp/bin/Debug/ErrorLog.txt b/LeatherProject/LeatherApp/bin/Debug/ErrorLog.txt
index 703f11f..d0ece71 100644
--- a/LeatherProject/LeatherApp/bin/Debug/ErrorLog.txt
+++ b/LeatherProject/LeatherApp/bin/Debug/ErrorLog.txt
@@ -253,3 +253,9 @@ Global捕获到未处理异常:System.OverflowException
在 Sunny.UI.UIControl.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
+2024-12-04 10:05:23
+Global捕获到未处理异常:System.Collections.Generic.KeyNotFoundException
+异常信息:给定关键字不在字典中。
+异常堆栈: 在 System.Collections.Concurrent.ConcurrentDictionary`2.get_Item(TKey key)
+ 在 LeatherApp.Page.FHome.<>c__DisplayClass38_0.b__0()
+
diff --git a/LeatherProject/LeatherApp/bin/Debug/SysConfig.ini b/LeatherProject/LeatherApp/bin/Debug/SysConfig.ini
index c1eac99..70a997f 100644
--- a/LeatherProject/LeatherApp/bin/Debug/SysConfig.ini
+++ b/LeatherProject/LeatherApp/bin/Debug/SysConfig.ini
@@ -27,6 +27,11 @@ CeHouIP=192.168.1.1
CeHouPort=64000
[Material]
SuedeList=BSF,SF,SL,SD
+SuedeList2=
+SuedeList3=XN
+SuedeList4=
+SuedeList5=
+SuedeList6=
[LIB]
model_path=./models/best_1113_bs12.fp16.trt
labels_path=./models/hexin.names
@@ -47,9 +52,9 @@ MiddleSuperposition=700
DBConStr=server=localhost;Database=LeatherDB;Uid=root;Pwd=123456; AllowLoadLocalInfile=true
ErpDBType=PostgreSQL
[ErpDB]
-ErpDBConStr1=Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=200.1.1.15)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=PUDB)));User Id=qcvi;Password=qcvi;Pooling='true';Max Pool Size=150
+ErpDBConStr1=Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=200.1.1.15)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=PUDB)));User Id=qcvi;Password=qcvi;Pooling='true';Max Pool Size=150;Validate Connection=true
ErpSql1=select * from tb_qc_prodinfo where PJXTBH=
-ServerDBConStr1=server=172.16.21.210;Database=LeatherDB;Uid=XCL001;Pwd=123456;AllowLoadLocalInfile=true
+ServerDBConStr=server=200.1.1.142;Database=LeatherDB;Uid=root;Pwd=Maimu888;AllowLoadLocalInfile=true
[LOG]
LogPath=D:\log\
[Halcon]
@@ -62,7 +67,7 @@ BeepTime=3000
CustomerName=
[Fun]
OpenJinShuJianCe=False
-OpenHouDuJiLu=False
+OpenHouDuJiLu=True
OpenFenJuan=True
OpenJMStop=True
StopLookDis=5.5
@@ -72,6 +77,6 @@ ClearDays=3
[BOffset]
EdgeOffset=3
[HouDuOffset]
-DataOffset1=1
-DataOffset2=2
-DataOffset3=3
+DataOffset1=0
+DataOffset2=0
+DataOffset3=0
diff --git a/LeatherProject/LeatherApp/obj/Debug/LeatherApp.Page.SelectReelFrm.resources b/LeatherProject/LeatherApp/obj/Debug/LeatherApp.Page.SelectReelFrm.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/LeatherProject/LeatherApp/obj/Debug/LeatherApp.Page.SelectReelFrm.resources differ
diff --git a/LeatherProject/LeatherApp/obj/Debug/LeatherApp.csproj.FileListAbsolute.txt b/LeatherProject/LeatherApp/obj/Debug/LeatherApp.csproj.FileListAbsolute.txt
index f1ef600..9b741f0 100644
--- a/LeatherProject/LeatherApp/obj/Debug/LeatherApp.csproj.FileListAbsolute.txt
+++ b/LeatherProject/LeatherApp/obj/Debug/LeatherApp.csproj.FileListAbsolute.txt
@@ -678,3 +678,4 @@ H:\CPL\GeBoshi\hy1127\V1.0\LeatherProject\LeatherApp\obj\Debug\LeatherApp.csproj
H:\CPL\GeBoshi\hy1127\V1.0\LeatherProject\LeatherApp\obj\Debug\LeatherApp.csproj.CopyComplete
H:\CPL\GeBoshi\hy1127\V1.0\LeatherProject\LeatherApp\obj\Debug\革博士AI智能检测系统.exe
H:\CPL\GeBoshi\hy1127\V1.0\LeatherProject\LeatherApp\obj\Debug\革博士AI智能检测系统.pdb
+E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\obj\Debug\LeatherApp.Page.SelectReelFrm.resources
diff --git a/LeatherProject/ServerApp/ServerApp.csproj b/LeatherProject/ServerApp/ServerApp.csproj
index 979bc5e..fad372c 100644
--- a/LeatherProject/ServerApp/ServerApp.csproj
+++ b/LeatherProject/ServerApp/ServerApp.csproj
@@ -14,7 +14,7 @@
true
- AnyCPU
+ x64
true
full
false
@@ -32,6 +32,9 @@
prompt
4
+
+ 服务器.ico
+
..\packages\ClosedXML.0.96.0\lib\net46\ClosedXML.dll
@@ -102,5 +105,8 @@
+
+
+
\ No newline at end of file
diff --git a/LeatherProject/ServerApp/ServerFrm.Designer.cs b/LeatherProject/ServerApp/ServerFrm.Designer.cs
index 87f341e..377cbef 100644
--- a/LeatherProject/ServerApp/ServerFrm.Designer.cs
+++ b/LeatherProject/ServerApp/ServerFrm.Designer.cs
@@ -37,6 +37,7 @@
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea3 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
System.Windows.Forms.DataVisualization.Charting.Legend legend3 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series3 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerFrm));
this.lstboxLog = new System.Windows.Forms.ListBox();
this.lineChartDefect = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.lineChartFaceWidth = new System.Windows.Forms.DataVisualization.Charting.Chart();
@@ -48,6 +49,9 @@
//
// lstboxLog
//
+ this.lstboxLog.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
this.lstboxLog.FormattingEnabled = true;
this.lstboxLog.ItemHeight = 12;
this.lstboxLog.Location = new System.Drawing.Point(12, 12);
@@ -115,6 +119,7 @@
this.Controls.Add(this.lineChartFaceWidth);
this.Controls.Add(this.lineChartDefect);
this.Controls.Add(this.lineChartHouDu);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "ServerFrm";
this.Text = "服务器监控";
this.Load += new System.EventHandler(this.ServerFrm_Load);
diff --git a/LeatherProject/ServerApp/ServerFrm.cs b/LeatherProject/ServerApp/ServerFrm.cs
index dc3a911..ab8c35a 100644
--- a/LeatherProject/ServerApp/ServerFrm.cs
+++ b/LeatherProject/ServerApp/ServerFrm.cs
@@ -32,7 +32,8 @@ namespace ServerApp
{
this.lstboxLog.Items.Clear();
WebService web = new WebService();
- web.dbConStr = "server=localhost;Database=LeatherDB;Uid=root;Pwd=123456; AllowLoadLocalInfile=true";
+ //web.dbConStr = "server=localhost;Database=LeatherDB;Uid=root;Pwd=123456; AllowLoadLocalInfile=true";
+ web.dbConStr = "server=localhost;Database=LeatherDB;Uid=root;Pwd=Maimu888; AllowLoadLocalInfile=true";
web.LogEvent = (warning, msg) =>
{
try
@@ -63,7 +64,7 @@ namespace ServerApp
MessageBox.Show($"数据报表生成失败:{ex.Message}");
}
};
- web.start("172.30.8.2", 10086);
+ web.start("172.16.21.210", 10086); //172.16.21.210 172.30.8.2
}
private void lstboxLog_DrawItem(object sender, DrawItemEventArgs e)
{
@@ -96,7 +97,7 @@ namespace ServerApp
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
- var list = data.DefectInfoList;
+ var list = data.DefectInfoList;
//绘图1
double len = Math.Round(data.Len * 100, 2);//cm
this.reDrawDefectPoints(data, new double[] { 0, Math.Round(data.FaceWidthMax + 0.005f, 2) }, new double[] { 0, len });
@@ -121,13 +122,14 @@ namespace ServerApp
};
reDrawHouDu(data.ThicknessList,
new double[] { 0, Math.Round(len + 0.005f, 2) },
- new double[] { hdMin.Min(), Math.Round(hdMax.Max() + 0.005f, 2) });
+ new double[] { (hdMin.Min()-0.1) <=0? 0: (hdMin.Min() - 0.1),
+ (hdMax.Max() + 0.1)> 5?5: (hdMax.Max() + 0.1) });
}
err = 2;
foreach (var item in list)
{
- if(string.IsNullOrEmpty(item.Name))
- item.Name = item.Code;
+ if (string.IsNullOrEmpty(item.Name))
+ item.Name = item.Code;
}
//
string Grade = "";
@@ -138,7 +140,7 @@ namespace ServerApp
{
ProName = data.BarCodeName,
BatchId = data.BatchId,
- ReelId = string.IsNullOrEmpty(data.PartReelId)? "'"+ data.ReelId : $"{data.ReelId}-{data.PartReelId}",
+ ReelId = string.IsNullOrEmpty(data.PartReelId) ? "'" + data.ReelId : $"{data.ReelId}-{data.PartReelId}",
Len = data.Len.ToString(),
Speed = Math.Round(data.Len / data.TimeLen, 2).ToString(),
Grade = Grade,
@@ -149,33 +151,42 @@ namespace ServerApp
PartNote2 = data.PartReelNote2,
};
err = 5;
- jdata.DefectTotal = data.DefectInfoList.GroupBy(x => x.Name).Select(g => new JDefectTotal { Name = g.Key, Count = g.Count() }).ToList();
- jdata.DefectDetail = data.DefectInfoList.Select(x => new JDefectDetail
+ if (data.DefectInfoList != null)
{
- Index = x.PhotoIndex,
- Name = x.Name,
- X = x.X,
- Y = Math.Round(x.Y / 100.0d, 2),
- Width = x.Width * 10,
- Height = x.Height * 10,
- ZXD = x.ZXD,
- Area = x.Area * 100,
- Contrast = x.Contrast
- })
- .OrderBy(x => x.Index).ThenBy(x => x.Y).ToList();
- jdata.FaceWidthDetail = data.FacePointList.Select(x => new JFaceWidthDetail
+ jdata.DefectTotal = data.DefectInfoList.GroupBy(x => x.Name).Select(g => new JDefectTotal { Name = g.Key, Count = g.Count() }).ToList();
+ jdata.DefectDetail = data.DefectInfoList.Select(x => new JDefectDetail
+ {
+ Index = x.PhotoIndex,
+ Name = x.Name,
+ X = x.X,
+ Y = Math.Round(x.Y / 100.0d, 2),
+ Width = x.Width * 10,
+ Height = x.Height * 10,
+ ZXD = x.ZXD,
+ Area = x.Area * 100,
+ Contrast = x.Contrast
+ })
+ .OrderBy(x => x.Index).ThenBy(x => x.Y).ToList();
+ }
+ if (data.FacePointList != null)
+ {
+ jdata.FaceWidthDetail = data.FacePointList.Select(x => new JFaceWidthDetail
+ {
+ Y = x[0],
+ data = x[1],
+ }).OrderBy(x => x.Y).ThenBy(x => x.Y).ToList();
+ }
+ if (data.ThicknessList != null)
{
- Y = x[0],
- data = x[1],
- }).OrderBy(x => x.Y).ThenBy(x => x.Y).ToList();
- jdata.ThicknessDetail = data.ThicknessList.Select(x => new JThicknessDetail
- {
- Y = x.Y_Dis,
- d1 = x.Value1,
- d2 = x.Value2,
- d3 = x.Value3,
- })
- .OrderBy(x => x.Y).ThenBy(x => x.Y).ToList();
+ jdata.ThicknessDetail = data.ThicknessList.Select(x => new JThicknessDetail
+ {
+ Y = x.Y_Dis,
+ d1 = x.Value1,
+ d2 = x.Value2,
+ d3 = x.Value3,
+ })
+ .OrderBy(x => x.Y).ThenBy(x => x.Y).ToList();
+ }
err = 6;
Product pd = new Product();
@@ -191,7 +202,7 @@ namespace ServerApp
var image1 = captureControl(this.lineChartDefect);
var image2 = captureControl(this.lineChartFaceWidth);
var image3 = captureControl(this.lineChartHouDu);
- var filePath = $"{path}缺陷列表_{data.BatchId}_{data.ReelId}.xlsx";
+ var filePath = $"{path}\\缺陷列表_{data.BatchId}_{data.ReelId}.xlsx";
err = 8;
filePath = $"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}\\temp.xlsx";
exportTabel(jdata, image1, image2, image3, filePath);
@@ -1070,17 +1081,21 @@ namespace ServerApp
// 截图操作函数
private byte[] captureControl(System.Windows.Forms.Control control)
{
- Bitmap bmp = new Bitmap(control.Width, control.Height);
- Graphics graphics = Graphics.FromImage(bmp);
- Rectangle rectangle = new Rectangle(0, 0, control.Width, control.Height);
- control.DrawToBitmap(bmp, rectangle);
- //bmp to jpg
- MemoryStream ms = new MemoryStream();
- bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);//bmp是已经获得的bitmap数据
- byte[] bytes = ms.GetBuffer();
- ms.Close();
+ byte[] bytes = null;
+ this.Invoke(new System.Action(() =>
+ {
+ Bitmap bmp = new Bitmap(control.Width, control.Height);
+ Graphics graphics = Graphics.FromImage(bmp);
+ Rectangle rectangle = new Rectangle(0, 0, control.Width, control.Height);
+ control.DrawToBitmap(bmp, rectangle);
+ //bmp to jpg
+ MemoryStream ms = new MemoryStream();
+ bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);//bmp是已经获得的bitmap数据
+ bytes = ms.GetBuffer();
+ ms.Close();
- graphics.Dispose();
+ graphics.Dispose();
+ }));
return bytes;
//bitmap.Save(@"C:\Images\Capture.jpg", ImageFormat.Jpeg);
//return Image.FromStream(new MemoryStream(bytes));
diff --git a/LeatherProject/ServerApp/ServerFrm.resx b/LeatherProject/ServerApp/ServerFrm.resx
index 29dcb1b..09a6983 100644
--- a/LeatherProject/ServerApp/ServerFrm.resx
+++ b/LeatherProject/ServerApp/ServerFrm.resx
@@ -117,4 +117,1137 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs
+ LEDTbCx/0m0sv9JtLL/SbSvf0m0r39JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0rn9JtLWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLL/SbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LL/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0rn9JtK9/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtK98AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA0m0tYNJtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0r3wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs
+ LH/SbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/02wsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCx/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbS1gAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0sv9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/89wKCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLH/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCx/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSufAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9wKCDSbSvf0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/02wsf89wKCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA02wsf9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0r39JtLL/SbSy/0m0sv9Jt
+ LL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9Jt
+ LL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9Jt
+ LL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9Jt
+ LL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/02wsf89wKCAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9wKCDSbSvf0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LL/TbCx/z3AoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA0m0rn9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLL/TbCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9wKCDSbSvf0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/z3AoIAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA0m0rn9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0tYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSbSvf0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSbS1g0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/89wKCAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLH/SbSy/0m0sv9Jt
+ K5/SbS1gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA02wsf9JtLL/SbSuf0m0rn9NsLEAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAANJtLL/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAANNsLEDSbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSvf02wsQAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsf9Jt
+ K9/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLL/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0r39Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLEAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCx/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/02wsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAANJtK5/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ K98AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/z3AoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAANJtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSvfAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCx/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLL8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSbS1g0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAANJtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0rnwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAANJtK5/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsQAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs
+ LEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSufAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0r39JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0r3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADSbSy/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSy/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLH/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtK58AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAz3AoINJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/z3AoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs
+ LEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Ns
+ LH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsf9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsf9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/TbCx/z3AoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAz3AoINJtK5/SbSvf0m0s/9JtLL/SbSufz3AoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Ns
+ LH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLL/SbSuf0m0rn9Jt
+ K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt
+ K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt
+ K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt
+ K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt
+ K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt
+ K5/SbSuf0m0rn9JtK5/SbSuf0m0sv9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs
+ LEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Ns
+ LH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/vJAn/6ayI/+msiP/prIj/6ay
+ I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay
+ I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay
+ I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay
+ I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay
+ I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay
+ I/+msiP/prIj/6ayI/+1myb/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP+1myb/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/6ayI//SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/7WbJv+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/prIj/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/tZsm/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+msiP/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs
+ LEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP+1myb/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/6ayI//SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/7WbJv+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/prIj/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/tZsm/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/prIj/6ayI/+tpiX/raYl/62mJf+tpiX/raYl/62mJf+tpiX/raYl/62mJf+tpiX/raYl/62m
+ Jf+tpiX/nr4h/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+msiP/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP+1myb/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/raYl/8t4Kv/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/7WbJv+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/6ay
+ I//SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/7Wb
+ Jv+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/8OE
+ Kf/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/8t4Kv+eviH/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/prIj/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/tZsm/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+1myb/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/8OE
+ Kf+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+msiP/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP+1myb/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/nr4h/8t4
+ Kv/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/7WbJv+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/6ayI//SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/7WbJv+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+tpiX/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/vJAn/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/prIj/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Ns
+ LH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/tZsm/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/7yQ
+ J//SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/LeCr/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+msiP/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP+1myb/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/tZsm/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/8OEKf+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/6ayI//SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/7WbJv+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+1myb/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/vJAn/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/prIj/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/tZsm/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/56+If/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP+tpiX/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+msiP/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP+1myb/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/7WbJv/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/w4Qp/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/6ayI//SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/7WbJv+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/8OEKf/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/8OEKf+eviH/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/prIj/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/tZsm/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/62mJf/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP+1myb/nr4h/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+msiP/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs
+ LEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP+1myb/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+eviH/raYl/62mJf+tpiX/raYl/62mJf+tpiX/raYl/62mJf+tpiX/raYl/62mJf+tpiX/raYl/62m
+ Jf+msiP/nr4h/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/6ayI//SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/7WbJv+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/prIj/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/tZsm/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+msiP/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP+1myb/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/6ay
+ I//SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/7Wb
+ Jv+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/prIj/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/tZsm/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJIP+XySD/l8kg/5fJ
+ IP+msiP/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP+8kCf/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay
+ I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay
+ I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay
+ I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay
+ I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/6ay
+ I/+msiP/prIj/6ayI/+msiP/prIj/6ayI/+msiP/prIj/62mJf/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Ns
+ LH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs
+ LEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ K9/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt
+ K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt
+ K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt
+ K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt
+ K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0rn9Jt
+ K5/SbSuf0m0rn9JtK5/SbSuf0m0rn9JtK5/SbSuf0m0sv9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Ns
+ LH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCx/0m0sv9Jt
+ K9/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0sv9Jt
+ K5/TbCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADSbS1g0m0r39JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtK9/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADSbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/PcCggAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs
+ LEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0tYNJtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADSbSuf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0r3wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02wsQNJt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJtK5/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSvfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9wKCDSbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSufAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA02wsf9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJt
+ LWDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbS1gAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAz3AoINJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0tYNJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0r3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSbSy/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ K9/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADSbSy/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsQAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADSbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/02wsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9w
+ KCDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0tYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJtLL/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9wKCDSbSy/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0r39Ns
+ LEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADTbCx/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/89w
+ KCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA02wsf9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADSbS1g0m0rn9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9Jt
+ LL/SbSy/0m0sv9JtLL/SbSy/0m0rn9NsLH/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSufAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPcCgg0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLL8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADTbCx/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0tYNJtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/z3AoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs
+ LH/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Ns
+ LEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs
+ LEDSbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz3AoINJtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9NsLH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCx/0m0r39JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0tYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA02wsf9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLL/TbCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTbCxA0m0sv9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ K9/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPcCgg0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSy/0m0tYM9w
+ KCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAM9wKCDTbCxA0m0sv9JtK9/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0tYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADTbCx/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSvf0m0sv9JtLL/SbSy/0m0sv9Jt
+ LL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9Jt
+ LL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9Jt
+ LL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9Jt
+ LL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtLL/SbSy/0m0sv9JtK9/SbSvf0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9wKCDSbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/02wsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Ns
+ LH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJt
+ LWDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/TbCx/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJtK5/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0r389w
+ KCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAANJtLL/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtK9/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLH/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSy/z3AoIAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAANNsLEDSbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/02wsf89wKCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNs
+ LEDSbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLWAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSbS1g0m0r39JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtK5/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA02wsf9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtK5/PcCggAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJt
+ LWDSbSuf0m0r39JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0sv9Ns
+ LH/PcCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0m0tYNJtK5/SbSuf0m0sv9Jt
+ K9/SbSvf0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9JtLP/SbSz/0m0s/9Jt
+ LP/SbSvf0m0sv9JtLL/TbCx/02wsQM9wKCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////+AAAAAAAAAAA/////////8AAAAAAAAAAAD////////8AAAAAAAAA
+ AAA////////8AAAAAAAAAAAAH///////8AAAAAAAAAAAAB///////+AAAAAAAAAAAAAP///////AAAAA
+ AAAAAAAAD///////gAAAAAAAAAAAAA///////wAAAAAAAAAAAAAf//////4AAAAAAAAAAAAAH//////8
+ AAAAAAAAAAAAAD//////+AAAAAAAAAAAAAA///////gAAAAAAAAAAAAA///////wAAB/////////////
+ ////8AAD/////////////////+AAB//////////////////gAB//////////////////4AA/////////
+ /////////8AAf//////////////////AAH/////////wf//4H///wAD/////////wB//8Af//8AA////
+ /////4AP/+AH///AAP////////+AD//AA///wAH/////////AAf/wAP//4AB/////////wAH/8AB//+A
+ Af////////8AB/+AAf//gAH/////////AAf/gAH//4AB/////////wAH/4AB//+AAf////////8AB/+A
+ Af//gAH/////////gA//gAH//4AB/////////8AP/4AB//+AAf/////////gP/+AAf//gAH/////////
+ ////gAH//4AB/////////////4AB//+AAf////////////+AAf//gAH/////////////gAH//4AB////
+ /////////4AB//+AAf////////////+AAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+A
+ AAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAA
+ Af//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAA
+ AAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAA
+ AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+A
+ AAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAA
+ Af//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAA
+ AAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAA
+ AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+A
+ AAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAA
+ Af//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAA
+ AAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAA
+ AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+A
+ AAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAA
+ Af//gAAAAAAAAAAAAAAAAAH//4AB/////////////4AB//+AAf////////////+AAf//gAH/////////
+ ////gAH//4AB/////////////4AB//+AAf////////////+AAf//gAH/////////////gAH//4AB//4A
+ AD///////4AB//+AAf/4AAAf//////+AAf//gAH/8AAAD///////gAH//4AB//AAAAf//////4AB//+A
+ Af/gAAAH//////+AAf//gAH/4AAAB///////gAH//4AB/+AAAAf//////4AB//+AAf/gAAAH//////+A
+ Af//gAH/4AAAB///////gAH//8AB//AAAAf//////4AB///AAP/wAAAP//////+AAf//wAD/+AAAH///
+ ////AAH//8AAf/4AAD///////wAD///AAH////////////4AA///4AA////////////8AAP//+AAH///
+ ////////+AAH///gAA////////////AAB///8AAD///////////AAAf///AAAH/////////+AAAP///4
+ AAAAAAAAAAAAAAAAH///+AAAAAAAAAAAAAAAAB////wAAAAAAAAAAAAAAAA////+AAAAAAAAAAAAAAAA
+ f////wAAAAAAAAAAAAAAAH////+AAAAAAAAAAAAAAAD/////wAAAAAAAAAAAAAAB/////+AAAAAAAAAA
+ AAAAA//////wAAAAAAAAAAAAAA///////AAAAAAAAAAAAAAf//////8AAAAAAAAAAAAAf///////wAAA
+ AAAAAAAAAf////////gAAAAAAAAAAA////8=
+
+
\ No newline at end of file
diff --git a/LeatherProject/ServerApp/WebServer/WebService.cs b/LeatherProject/ServerApp/WebServer/WebService.cs
index baf0b5a..e5802db 100644
--- a/LeatherProject/ServerApp/WebServer/WebService.cs
+++ b/LeatherProject/ServerApp/WebServer/WebService.cs
@@ -371,8 +371,9 @@ namespace ServerApp.WebServer
.First(m => m.BatchId == batch && m.ReelId == reel);
+ if(data == null )
+ throw new Exception($"批号:{batch},卷号:{reel},数据不存在!");
-
err = 2;
getReportEvent(data);
@@ -384,7 +385,8 @@ namespace ServerApp.WebServer
throw new Exception(file_path + " 缺陷文件不存在!");
res.Add("code", 200);
- res.Add("data", Convert.ToBase64String(File.ReadAllBytes(file_path)));
+ //res.Add("data", Convert.ToBase64String(File.ReadAllBytes(file_path)));
+ res.Add("data", (File.ReadAllBytes(file_path)));
}
else
throw new Exception($"文件错误:file_name={file_path}");
diff --git a/LeatherProject/ServerApp/bin/Debug/temp.xlsx b/LeatherProject/ServerApp/bin/Debug/temp.xlsx
new file mode 100644
index 0000000..13358fb
Binary files /dev/null and b/LeatherProject/ServerApp/bin/Debug/temp.xlsx differ
diff --git a/LeatherProject/ServerApp/bin/远程服务程序.rar b/LeatherProject/ServerApp/bin/远程服务程序.rar
new file mode 100644
index 0000000..de970dc
Binary files /dev/null and b/LeatherProject/ServerApp/bin/远程服务程序.rar differ
diff --git a/LeatherProject/ServerApp/obj/Debug/ServerApp.ServerFrm.resources b/LeatherProject/ServerApp/obj/Debug/ServerApp.ServerFrm.resources
index 6c05a97..86f88fc 100644
Binary files a/LeatherProject/ServerApp/obj/Debug/ServerApp.ServerFrm.resources and b/LeatherProject/ServerApp/obj/Debug/ServerApp.ServerFrm.resources differ
diff --git a/LeatherProject/ServerApp/服务器.ico b/LeatherProject/ServerApp/服务器.ico
new file mode 100644
index 0000000..4f7cb07
Binary files /dev/null and b/LeatherProject/ServerApp/服务器.ico differ