Browse Source

修改成自动布局

章政 7 years ago
parent
commit
3feb0a2c1b

+ 3 - 3
UAS_DLLTest/App.config

@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" ?>
+<?xml version="1.0" encoding="utf-8"?>
 <configuration>
     <startup> 
-        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
     </startup>
-</configuration>
+</configuration>

+ 55 - 33
UAS_DLLTest/Form1.Designer.cs

@@ -28,7 +28,8 @@
         /// </summary>
         private void InitializeComponent()
         {
-            this.groupBoxwithborder3 = new UAS_DLLTest.GroupBoxwithborder();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
+            this.Result = new UAS_DLLTest.GroupBoxwithborder();
             this.operateResult = new System.Windows.Forms.RichTextBox();
             this.Parameters = new UAS_DLLTest.GroupBoxwithborder();
             this.clearResult = new System.Windows.Forms.CheckBox();
@@ -36,27 +37,32 @@
             this.clear = new System.Windows.Forms.Button();
             this.confirm = new System.Windows.Forms.Button();
             this.Methods = new UAS_DLLTest.GroupBoxwithborder();
-            this.groupBoxwithborder3.SuspendLayout();
+            this.Result.SuspendLayout();
             this.Parameters.SuspendLayout();
             this.SuspendLayout();
             // 
-            // groupBoxwithborder3
-            // 
-            this.groupBoxwithborder3.BorderColor = System.Drawing.Color.Black;
-            this.groupBoxwithborder3.Controls.Add(this.operateResult);
-            this.groupBoxwithborder3.Location = new System.Drawing.Point(34, 494);
-            this.groupBoxwithborder3.Name = "groupBoxwithborder3";
-            this.groupBoxwithborder3.Size = new System.Drawing.Size(1219, 176);
-            this.groupBoxwithborder3.TabIndex = 2;
-            this.groupBoxwithborder3.TabStop = false;
-            this.groupBoxwithborder3.Text = "Result";
-            this.groupBoxwithborder3.TextColor = System.Drawing.Color.Black;
+            // Result
+            // 
+            this.Result.BorderColor = System.Drawing.Color.Black;
+            this.Result.Controls.Add(this.operateResult);
+            this.Result.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.Result.Location = new System.Drawing.Point(23, 323);
+            this.Result.Margin = new System.Windows.Forms.Padding(2);
+            this.Result.Name = "Result";
+            this.Result.Padding = new System.Windows.Forms.Padding(2);
+            this.Result.Size = new System.Drawing.Size(879, 141);
+            this.Result.TabIndex = 2;
+            this.Result.TabStop = false;
+            this.Result.Text = "Result";
+            this.Result.TextColor = System.Drawing.Color.Black;
             // 
             // operateResult
             // 
-            this.operateResult.Location = new System.Drawing.Point(17, 27);
+            this.operateResult.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.operateResult.Location = new System.Drawing.Point(11, 25);
+            this.operateResult.Margin = new System.Windows.Forms.Padding(2);
             this.operateResult.Name = "operateResult";
-            this.operateResult.Size = new System.Drawing.Size(1185, 143);
+            this.operateResult.Size = new System.Drawing.Size(856, 100);
             this.operateResult.TabIndex = 0;
             this.operateResult.Text = "";
             // 
@@ -67,9 +73,12 @@
             this.Parameters.Controls.Add(this.clearPara);
             this.Parameters.Controls.Add(this.clear);
             this.Parameters.Controls.Add(this.confirm);
-            this.Parameters.Location = new System.Drawing.Point(34, 240);
+            this.Parameters.Font = new System.Drawing.Font("微软雅黑", 12F);
+            this.Parameters.Location = new System.Drawing.Point(23, 160);
+            this.Parameters.Margin = new System.Windows.Forms.Padding(2);
             this.Parameters.Name = "Parameters";
-            this.Parameters.Size = new System.Drawing.Size(1219, 239);
+            this.Parameters.Padding = new System.Windows.Forms.Padding(2);
+            this.Parameters.Size = new System.Drawing.Size(879, 159);
             this.Parameters.TabIndex = 1;
             this.Parameters.TabStop = false;
             this.Parameters.Text = "Parameter";
@@ -78,9 +87,11 @@
             // clearResult
             // 
             this.clearResult.AutoSize = true;
-            this.clearResult.Location = new System.Drawing.Point(928, 193);
+            this.clearResult.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.clearResult.Location = new System.Drawing.Point(763, 129);
+            this.clearResult.Margin = new System.Windows.Forms.Padding(2);
             this.clearResult.Name = "clearResult";
-            this.clearResult.Size = new System.Drawing.Size(133, 22);
+            this.clearResult.Size = new System.Drawing.Size(111, 25);
             this.clearResult.TabIndex = 3;
             this.clearResult.Text = "clearResult";
             this.clearResult.UseVisualStyleBackColor = true;
@@ -88,18 +99,22 @@
             // clearPara
             // 
             this.clearPara.AutoSize = true;
-            this.clearPara.Location = new System.Drawing.Point(800, 193);
+            this.clearPara.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.clearPara.Location = new System.Drawing.Point(648, 129);
+            this.clearPara.Margin = new System.Windows.Forms.Padding(2);
             this.clearPara.Name = "clearPara";
-            this.clearPara.Size = new System.Drawing.Size(115, 22);
+            this.clearPara.Size = new System.Drawing.Size(99, 25);
             this.clearPara.TabIndex = 2;
             this.clearPara.Text = "clearPara";
             this.clearPara.UseVisualStyleBackColor = true;
             // 
             // clear
             // 
-            this.clear.Location = new System.Drawing.Point(594, 185);
+            this.clear.Font = new System.Drawing.Font("微软雅黑", 9F);
+            this.clear.Location = new System.Drawing.Point(455, 123);
+            this.clear.Margin = new System.Windows.Forms.Padding(2);
             this.clear.Name = "clear";
-            this.clear.Size = new System.Drawing.Size(92, 36);
+            this.clear.Size = new System.Drawing.Size(61, 28);
             this.clear.TabIndex = 1;
             this.clear.Text = "clear";
             this.clear.UseVisualStyleBackColor = true;
@@ -107,9 +122,11 @@
             // 
             // confirm
             // 
-            this.confirm.Location = new System.Drawing.Point(454, 185);
+            this.confirm.Font = new System.Drawing.Font("微软雅黑", 9F);
+            this.confirm.Location = new System.Drawing.Point(362, 123);
+            this.confirm.Margin = new System.Windows.Forms.Padding(2);
             this.confirm.Name = "confirm";
-            this.confirm.Size = new System.Drawing.Size(94, 36);
+            this.confirm.Size = new System.Drawing.Size(63, 28);
             this.confirm.TabIndex = 0;
             this.confirm.Text = "confirm";
             this.confirm.UseVisualStyleBackColor = true;
@@ -118,9 +135,12 @@
             // Methods
             // 
             this.Methods.BorderColor = System.Drawing.Color.Black;
-            this.Methods.Location = new System.Drawing.Point(34, 12);
+            this.Methods.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.Methods.Location = new System.Drawing.Point(23, 8);
+            this.Methods.Margin = new System.Windows.Forms.Padding(2);
             this.Methods.Name = "Methods";
-            this.Methods.Size = new System.Drawing.Size(1219, 222);
+            this.Methods.Padding = new System.Windows.Forms.Padding(2);
+            this.Methods.Size = new System.Drawing.Size(879, 148);
             this.Methods.TabIndex = 0;
             this.Methods.TabStop = false;
             this.Methods.Text = "Method";
@@ -128,16 +148,18 @@
             // 
             // Form1
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(1285, 684);
-            this.Controls.Add(this.groupBoxwithborder3);
+            this.ClientSize = new System.Drawing.Size(913, 471);
+            this.Controls.Add(this.Result);
             this.Controls.Add(this.Parameters);
             this.Controls.Add(this.Methods);
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.Margin = new System.Windows.Forms.Padding(2);
             this.Name = "Form1";
-            this.Text = "Form1";
+            this.Text = "UAS_DLL测试";
             this.Load += new System.EventHandler(this.Form1_Load);
-            this.groupBoxwithborder3.ResumeLayout(false);
+            this.Result.ResumeLayout(false);
             this.Parameters.ResumeLayout(false);
             this.Parameters.PerformLayout();
             this.ResumeLayout(false);
@@ -148,7 +170,7 @@
 
         private GroupBoxwithborder Methods;
         private GroupBoxwithborder Parameters;
-        private GroupBoxwithborder groupBoxwithborder3;
+        private GroupBoxwithborder Result;
         private System.Windows.Forms.CheckBox clearResult;
         private System.Windows.Forms.CheckBox clearPara;
         private System.Windows.Forms.Button clear;

+ 70 - 45
UAS_DLLTest/Form1.cs

@@ -2,12 +2,8 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
-using System.Data;
 using System.Drawing;
-using System.Linq;
 using System.Reflection;
-using System.Text;
-using System.Threading.Tasks;
 using System.Windows.Forms;
 
 namespace UAS_DLLTest
@@ -23,6 +19,7 @@ namespace UAS_DLLTest
         int icount = 0;
         Queue<Control> query = new Queue<Control>();//临时存储获取到的control控件
         MethodInfo[] method;
+        int RowItemCount = 3;
         public Form1()
         {
             InitializeComponent();
@@ -31,6 +28,47 @@ namespace UAS_DLLTest
             ParamCollection = Parameters.Controls;
         }
 
+        private void Form1_Load(object sender, EventArgs e)
+        {
+            //动态生成checkBox
+            method = helper.GetType().GetMethods();
+            List<MethodInfo> ShowMethods = new List<MethodInfo>();
+            for (int i = 0; i < method.Length; i++)
+            {
+                if (method[i].GetCustomAttributes(typeof(DescriptionAttribute), true).Length != 0)
+                {
+                    ShowMethods.Add(method[i]);
+                }
+            }
+            //动态的计算方法框的高度
+            //显示的控件才需要计数
+            int ControlHeight = 0;
+            Console.WriteLine(ShowMethods.Count);
+            for (int i = 0; i < ShowMethods.Count; i++)
+            {
+                RadioButton btn = new RadioButton();
+                btn.Name = method[i].Name;
+                btn.Text = method[i].Name;
+                btn.Anchor = AnchorStyles.Left;
+                btn.Anchor = AnchorStyles.Top;
+                btn.AutoSize = true;
+                ControlHeight = btn.Height;
+                //父控件三分之一的长度减去Radio的长度再除以2
+                btn.Location = new Point((Methods.Width / 6 - btn.Width) / 2 + (i % RowItemCount) * (Methods.Width / RowItemCount), 25 + (i / RowItemCount) * (btn.Height));
+                Methods.Controls.Add(btn);
+                btn.CheckedChanged += new EventHandler(radioButton_checkChanged);
+            }
+            //是否剩下一行没装满的
+            int LastRow = ShowMethods.Count % RowItemCount == 0 ? 0 : 1;
+            Methods.Size = new Size(Methods.Width, ControlHeight * (ShowMethods.Count / RowItemCount + ShowMethods.Count % RowItemCount+2));
+            Parameters.Location = new Point(Methods.Location.X, Methods.Location.Y + Methods.Size.Height);
+            Result.Location = new Point(Parameters.Location.X, Parameters.Location.Y + Parameters.Size.Height);
+            Height = Methods.Height + Parameters.Height + Result.Height + 50;
+            //使最大化窗口失效
+            MaximizeBox = false;
+            FormBorderStyle = FormBorderStyle.FixedSingle;
+        }
+
         private void radioButton_checkChanged(object sender, EventArgs e)
         {
             removeControl();
@@ -42,18 +80,19 @@ namespace UAS_DLLTest
                     //获取所有的参数
                     icount = 0;
                     param = helper.GetType().GetMethod(methodCollection[i].Name).GetParameters();
-                    for (int j = 1; j < param.Length+1; j++)
+                    for (int j = 1; j < param.Length + 1; j++)
                     {
                         //参数名i开头的才需要显示
-                        if (!param[j - 1].Name.StartsWith("o"))
+                        if (param[j - 1].Name.StartsWith("i"))
                         {
                             icount += 1;
                             ParamControl paramControl = new ParamControl();
                             paramControl.paramsName = param[j - 1].Name;
-                            paramControl.paramsValueName= param[j - 1].Name;
-                            paramControl.Anchor= AnchorStyles.Left;
+                            paramControl.Font = new Font("微软雅黑", 9F, FontStyle.Regular, GraphicsUnit.Point, 134);
+                            paramControl.paramsValueName = param[j - 1].Name;
+                            paramControl.Anchor = AnchorStyles.Left;
                             paramControl.Anchor = AnchorStyles.Top;
-                            paramControl.Location = new Point((Parameters.Width/3-paramControl.Width)/2+((j-1)%3)*(Parameters.Width / 3),15+((j-1)/3)*(paramControl.Height+10));
+                            paramControl.Location = new Point((Parameters.Width / 3 - paramControl.Width) / 2 + ((j - 1) % 3) * (Parameters.Width / 3), 25 + ((j - 1) / 3) * (paramControl.Height));
                             Parameters.Controls.Add(paramControl);
                         }
                     }
@@ -69,7 +108,7 @@ namespace UAS_DLLTest
             //拿到所有已经填写的参数
             for (int i = 0; i < ParamCollection.Count; i++)
             {
-                for (int j = 1; j < allParams.Length+1; j++)
+                for (int j = 1; j < allParams.Length + 1; j++)
                 {
                     if (j > icount)
                     {
@@ -77,9 +116,9 @@ namespace UAS_DLLTest
                     }
                     else
                     {
-                        if (ParamCollection[i] is ParamControl&& ((ParamControl)ParamCollection[i]).paramsValueName==param[j-1].Name)
+                        if (ParamCollection[i] is ParamControl && ((ParamControl)ParamCollection[i]).paramsValueName == param[j - 1].Name)
                         {
-                            if (param[j - 1].ParameterType.ToString()!= "System.String[]")
+                            if (param[j - 1].ParameterType.ToString() != "System.String[]")
                             {
                                 allParams[j - 1] = ((ParamControl)ParamCollection[i]).paramsValue;
                             }
@@ -94,61 +133,47 @@ namespace UAS_DLLTest
             //将out类型的参数放进去
             string oResult = "";
             //拿到需要触发的方法名
-            for (int i = 0; i < methodCollection.Count; i++) {
+            for (int i = 0; i < methodCollection.Count; i++)
+            {
                 if (((RadioButton)methodCollection[i]).Checked)
                 {
                     Type type = helper.GetType();
-                    MethodInfo method =  type.GetMethod(((RadioButton)methodCollection[i]).Name);
+                    MethodInfo method = type.GetMethod(((RadioButton)methodCollection[i]).Name);
                     oResult = method.Invoke(helper, allParams).ToString();
                 }
             }
             //输出out出的信息
-            operateResult.AppendText("返回值:"+oResult+",");
-            for (int i=0;i<param.Length;i++) {
-                if (param[i].Name.StartsWith("o")) {
-                    operateResult.AppendText(param[i].Name + ":" + allParams[i]+",");
-                }
-            }
-            operateResult.AppendText("\n");
-        }
-
-        private void Form1_Load(object sender, EventArgs e)
-        {
-            //动态生成checkBox
-            method = helper.GetType().GetMethods();
-            for (int i=0;i<method.Length;i++) {
-                //判断是否需要显示
-                if (method[i].GetCustomAttributes(typeof(DescriptionAttribute), true).Length==0)
+            operateResult.AppendText("返回值:" + oResult + ",");
+            for (int i = 0; i < param.Length; i++)
+            {
+                if (param[i].Name.StartsWith("o"))
                 {
-                    continue;
+                    operateResult.AppendText(param[i].Name + ":" + allParams[i] + ",");
                 }
-                RadioButton btn = new RadioButton();
-                btn.Name = method[i].Name;
-                btn.Text= method[i].Name;
-                btn.Anchor = AnchorStyles.Left;
-                btn.Anchor = AnchorStyles.Top;
-                btn.AutoSize = true;
-                btn.Location = new Point((Methods.Width / 3 - btn.Width) / 2 + (i % 3) * (Methods.Width / 3), 12 + (i / 3) * (btn.Height +0));
-                Methods.Controls.Add(btn);
-                btn.CheckedChanged += new EventHandler(radioButton_checkChanged);
             }
+            operateResult.AppendText("\n");
         }
 
         private void clear_Click(object sender, EventArgs e)
         {
             //清除信息
-            if (clearPara.Checked) {
-                for (int i=0;i< ParamCollection.Count;i++) {
-                    if (ParamCollection[i] is ParamControl) {
+            if (clearPara.Checked)
+            {
+                for (int i = 0; i < ParamCollection.Count; i++)
+                {
+                    if (ParamCollection[i] is ParamControl)
+                    {
                         ((ParamControl)ParamCollection[i]).paramsValue = "";
                     }
                 }
             }
             //清除日志
-            if (clearResult.Checked) {
+            if (clearResult.Checked)
+            {
                 operateResult.Clear();
             }
         }
+
         /// <summary>
         /// 移除所有控件
         /// </summary>
@@ -168,4 +193,4 @@ namespace UAS_DLLTest
             }
         }
     }
-}
+}

+ 167 - 0
UAS_DLLTest/Form1.resx

@@ -117,4 +117,171 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAABAAAACEAAABBAAAATAAAAE0AAABNAAAATQAAAE0AAABNAAAATQAAAE0AAABNAAAATQAA
+        AE0AAABNAAAATQAAAE0AAABNAAAATQAAAE0AAABNAAAATQAAAE0AAABNAAAATQAAAE0AAABNAAAATQAA
+        AE0AAABNAAAATQAAAE0AAABNAAAATQAAAE0AAABNAAAATQAAAE0AAABNAAAATQAAAE0AAABNAAAASgAA
+        ADQAAAAQAAAAAQAAAAAAAAACAAAAJAAAAHYAAACrAAAAtQAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
+        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
+        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
+        ALQAAAC0AAAAswAAAJgAAABOAAAADAAAAAAAAAAKAAAAWQAAANYAAAD5AAAA+wAAAPsAAAD7AAAA+wAA
+        APsAAAD7AAAA+wAAAPsAAAD7AAAA+wAAAPsAAAD7AAAA+wAAAPsAAAD7AAAA+wAAAPsAAAD7AAAA+wAA
+        APsAAAD7AAAA+wAAAPsAAAD7AAAA+wAAAPsAAAD7AAAA+wAAAPsAAAD7AAAA+wAAAPsAAAD7AAAA+wAA
+        APsAAAD7AAAA+wAAAPsAAAD7AAAA+wAAAPEAAACiAAAAJAAAAAAAAAANAAAAjAAAAP0AAAD/AAAA/wAA
+        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAOwAAAAAAAAANAAAAogAA
+        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADxAAAARgAA
+        AAAAAAANAQEBowICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wIC
+        Av8CAgL/AQAA/wAAAP8FBgX/DRMR/xkrJP8iQDX/J01A/ydPQf8nTkH/JUg7/x01Lf8SHBn/BwoK/wIB
+        Af8AAAD/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wIC
+        Av8CAgLxAQEBRwICAgAAAAANAwMDowQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQE
+        BP8EBAT/BAQE/wMDA/8DAgL/DRMR/yA/NP8ydF3/OJl2/zeqgf81soX/M7SG/zO0hv8ztIb/NLOG/zau
+        hP84on3/NYdq/ylYR/8VJR//BgUF/wMCAv8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQE
+        BP8EBAT/BAQE/wQEBP8EBATxAgICRwQEBAAAAAANAwMDowQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQE
+        BP8EBAT/BAQE/wQEBP8EBAT/AwIC/wgJCf8hQDX/NYpt/zWvhP8wt4f/K7SE/yqygv8qsYL/KrGC/yux
+        gv8rsYL/KrGC/yqxgv8qs4P/LbaG/zO1h/83n3v/LWVS/xEbF/8DAgL/BAQE/wQEBP8EBAT/BAQE/wQE
+        BP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBATxAgICRwQEBAAAAAANBQUFowcHB/8HBwf/BwcH/wcH
+        B/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8FBAT/DRcT/y5tWP82rob/LbaI/yqyhf8qsYT/K7GF/yux
+        hf8rsYX/K7GF/yuxhf8rsYX/K7GF/yuxhf8rsYX/K7GE/yqxhP8rtIf/MbaK/zaUdP8cOS//BQQF/wcG
+        Bv8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8GBgbxAgICRwcHBwAAAAANBgYHowgI
+        CP8ICAj/CAgI/wgICP8ICAj/CAgI/wgICP8ICAj/CAgI/wcFBv8RHBj/Mn9l/zS1iv8tsob/LbGF/y6x
+        hf8usYX/LrGF/y6xhf8usYX/LrGF/y6xhf8usYX/LrGF/y6xhf8usYX/LrGF/y6xhf8usYX/LbGF/y+1
+        iP83pYD/IEQ5/wgGB/8IBwj/CAgI/wgICP8ICAj/CAgI/wgICP8ICAj/CAgI/wgICP8ICAjxAwMDRwgI
+        CAAAAAANBwcIowoKCv8KCgv/CgoL/woKC/8KCgv/CgoL/woKC/8KCgv/CQcJ/w4WE/8ygGb/NLaK/y6x
+        hf8vsYX/L7GF/y+xhf8vsYX/L7GF/y+xhf8vsYX/L7KG/y+yhv8vsob/L7KF/y+xhf8vsYX/L7GF/y+x
+        hf8vsYX/L7GF/y+xhf8wtYj/N6eB/x9BNf8IBgf/CgoK/woKC/8KCgv/CgoL/woKC/8KCgv/CgoL/woK
+        C/8JCQrxBAQERwoKCgAAAAANCQkJowwMDP8MDAz/DAwM/wwMDP8MDAz/DAwM/wwMDP8MCwz/DAwM/yhk
+        T/80tYn/L7KF/y+xhf8vsYX/L7GF/y+xhf8vsYX/L7KF/zC0h/8vs4b/LauA/yymfP8sp33/Lq6D/zC1
+        h/8vs4b/L7GF/y+xhf8vsYX/L7GF/y+xhf8vsYX/MLWI/zWceP8VJiH/CwkK/wwMDP8MDAz/DAwM/wwM
+        DP8MDAz/DAwM/wwMDP8LCwzxBQUFRwwMDAAAAAANCgoKow0NDf8NDQ3/DQ0N/w0NDf8NDQ3/DQ0N/w0N
+        Df8LCQr/Gzgu/zSqgf8vt4f/L7WG/y+1hv8vtYb/L7WG/y+1hv8vtof/L7WG/yiUbv8dX0n/FTsv/xMv
+        Jv8TMSj/F0Q2/yF0V/8spnv/L7eH/y+1hv8vtYb/L7WG/y+1hv8vtYb/L7SG/zK6iv8sdl3/DhAP/w0M
+        DP8NDQ3/DQ0N/w0NDf8NDQ3/DQ0N/w0NDf8MDA3xBgYGRw0NDgAAAAANDQ0NoxEREf8QEBH/EBAR/xAQ
+        Ef8QEBH/EBAR/xAQEP8PEBH/K3pg/zK6jv8vtYn/L7WJ/y+1if8vtYn/L7WJ/y+2iv8usof/InVZ/xQn
+        IP8QDg//DwwO/xANDv8QDQ7/DwwO/xATEv8YQDL/KJdy/y+3i/8vtYn/L7WJ/y+1if8vtYn/L7WJ/y+3
+        i/8zq4T/Gjcu/w8MDv8QEBH/EBAR/xAQEf8QEBH/EBAR/xAQEf8PDxDxBwcHRxAQEQAAAAANDg4OoxIS
+        E/8SEhL/EhIS/xISEv8SEhL/EhIT/xEPEP8YLCb/MqeB/zC3i/8wtYr/MLWK/zC1iv8wtYr/MLWK/zC2
+        i/8jdlv/ExsZ/xEOEP8SEhL/EhIT/xISEv8SEhP/EhIT/xIREv8RDg//GDku/yqeef8wt4z/MLWK/zC1
+        iv8wtYr/MLWK/zC1iv8zuY7/J25Y/xEQEf8SEhL/EhIS/xISEv8SEhL/EhIS/xISEv8RERLxCAgIRxIS
+        EwAAAAANDw8QoxUVFf8VFRX/FRUV/xUVFf8VFRX/FRUV/xMQEf8iVET/NLeL/zO2iv8ztYr/M7WK/zO1
+        iv8ztYr/M7iM/yyZdf8XKiX/FBET/xUVFf8VFRX/FRUV/xUVFf8VFRX/FRUV/xUVFf8VFBX/FBIT/x9a
+        R/8ys4j/M7aK/zO1iv8ztYr/M7WK/zO1iv80uYz/MJd0/xYfHP8UExT/FRUV/xUVFf8VFRX/FRUV/xUV
+        Ff8TExTxCAgIRxQUFQAAAAANERESoxYWGP8WFhj/FhYX/xYWF/8WFhj/FhYX/xUVFv8odlz/NLyO/zO4
+        i/8zuIv/M7iL/zO4i/8zuYv/M7eL/yJhTP8VExX/FhYX/xYWF/8WFhf/FhYX/xYWF/8WFhf/FhYX/xYW
+        F/8WFhj/FhQW/xgmIf8smHT/NLuN/zO4i/8zuIv/M7iL/zO4i/8zuYz/M66E/xs2Lf8VExX/FhYY/xYW
+        F/8WFhf/FhYX/xYWGP8VFRbxCQkJRxYWFwAAAAANExMUoxkZGf8ZGRn/GRkZ/xkZGf8ZGRn/GBcY/xgd
+        HP8si2z/NL2Q/zO5jv8zuY7/M7mO/zO5jv8zu4//MKmB/xw4MP8YFRf/GRkZ/xkZGf8ZGRn/GRkZ/xkZ
+        Gf8ZGRn/GRkZ/xkZGf8ZGRn/GRgZ/xgXGP8mcVj/M7yP/zO5jv8zuY7/M7mO/zO5jv8zuY7/NLeM/yBL
+        Pf8XFBb/GRkZ/xkZGf8ZGRn/GRkZ/xkZGf8XFxjxCgoLRxkZGgAAAAANFRUVoxsbHP8bGxz/Gxsc/xsb
+        HP8bGxz/Gxkb/xwkIv8wlXT/NryR/zW5jv81uY7/NbmO/zW5jv82vJD/LpVz/xwmJP8bGRv/Gxsc/xsb
+        HP8bGxz/Gxsc/xsbHP8bGxz/Gxsc/xsbHP8bGxz/Gxsc/xoXGf8jVEX/NbeM/zW6j/81uY7/NbmO/zW5
+        jv81uY7/NrqP/yVYR/8aFhj/Gxwd/xsbHP8bGxz/Gxsc/xsbHP8aGhvxDAwMRxwcHQAAAAANFhYXox4e
+        Hv8eHh7/Hh4e/x4eHv8eHh7/Hhwd/x4nJf8xmHX/Ob6Q/zi7jv84u47/OLuO/zi7jv85vpH/Lolr/x0i
+        If8eHR7/Hh4e/x4eHv8eHh7/Hh4e/x4eHv8eHh7/Hh4e/x4eHv8eHh7/Hh4e/x0aHP8jSDz/NrOI/zi8
+        j/84u47/OLuO/zi7jv84u47/OLyP/yZbSf8dGRr/Hh4e/x4eHv8eHh7/Hh4e/x4eHv8cHB3xDAwNRx4e
+        HwAAAAANGBgZox8fIf8fHyH/Hx8h/x8fIf8fHyH/Hx0g/yAoJ/8ymnb/OcGQ/zi+jv84vo7/OL6O/zi+
+        jv85wZD/LoVn/x8hIv8fHyD/Hx8h/x8fIf8fHyH/Hx8h/x8fIf8fHyH/Hx8h/x8fIf8fHyH/Hx8h/x8c
+        Hv8kRTr/NrOH/zjAj/84vo7/OL6O/zi+jv84vo7/OL+P/ydcS/8eGh3/HyAh/x8fIf8fHyH/Hx8h/x8f
+        If8eHh/xDQ0NRyAgIQAAAAANGhoboyIiI/8iIiP/IiIj/yIiI/8iIiP/IiAi/yIrKf8zm3f/OcGT/zm+
+        kf85vpH/Ob6R/zm+kf86wpP/LoNn/yEjI/8iIiL/IiIj/yIiI/8iIiP/IiIj/yIiI/8iIiP/IiIj/yIi
+        I/8iIiP/IiIj/yEeIP8lQzn/NrKI/znAkv85vpH/Ob6R/zm+kf85vpH/Ob+S/yleTf8hHR//IiIj/yIi
+        I/8iIiP/IiIj/yIiI/8gICHxDg4PRyIiJAAAAAANHBwdoyQkJv8lJSb/JCQm/yQkJv8kJSb/JCIk/yQt
+        K/81nHn/PMKU/zy/kv88v5L/PL+S/zy/kv88wpX/MYRo/yMlJf8kJCX/JCUm/yQkJv8kJCb/JCQm/yQk
+        Jv8kJCb/JCQm/yQkJv8kJCb/JCUm/yQhI/8nRTz/ObKJ/zzBk/88v5L/PL+S/zy/kv88v5L/PMCT/ypg
+        Tv8jHyL/JSUm/yQkJv8kJCb/JCQm/yUlJv8jIyTxDw8QRyUlJgAAAAANHR0foyYmKf8nJyn/JiYp/yYm
+        Kf8nJyn/JiQn/yYvLf82nnn/PcWU/zzBkv88wZL/PMGS/zzBkv89xZT/MoZp/yUnKP8mJij/Jicp/yYm
+        Kf8mJin/JiYp/yYmKf8mJin/JiYp/yYmKf8mJin/Jycp/yYjJv8pRz3/OrWJ/zzDk/88wZL/PMGS/zzB
+        kv88wpL/PMKT/yxhUP8lIST/Jycp/yYmKf8mJin/JiYp/ycnKf8lJSfxEBAQRycnKQAAAAANICAhoysr
+        LP8rKyv/Kysr/ysrK/8rKyv/Kigq/ykyMP83n3v/PcWW/z3Ck/89wpP/PcKT/z3Ck/89xZb/NIhr/ygq
+        K/8qKiv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/yonKf8rSUD/OraL/z3E
+        lf89wpP/PcKT/z3Ck/89wpT/PMOU/y5jUv8pJSf/Kyss/ysrK/8rKyv/Kior/ysrLP8pKSrxERESRysr
+        LAAAAAANIiIjoy0tLv8tLS7/LS0u/y0tLv8tLS7/LCot/ys0Mv85oH7/QMWZ/z/Cl/8/wpf/P8KX/z/C
+        l/9AxZn/Nolu/yosLf8sLC7/LS0u/y0tLv8tLS7/LS0u/y0tLv8tLS7/LS0u/y0tLv8tLS7/LS0u/ywp
+        LP8tS0P/PbaO/0DEmP8/wpf/P8KX/z/Cl/8/wpf/P8OX/zBlVP8rJyr/LS0u/y0tLv8tLS7/LCwu/y0t
+        Lv8rKyzxEhITRy0tLwAAAAANJCQkoy8vMP8vLy//Ly8v/y8vL/8vLy//Ly0u/y42NP87oX//QcaZ/0DC
+        l/9Awpf/QMKX/0DCl/9BxZn/N4pv/y0vL/8vLi//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8v
+        L/8vLy//Ly8v/y4rLf8vTUT/PbeP/0DEmP9Awpf/QMKX/0DCl/9Aw5f/QMOX/zJnVv8tKSz/Ly8w/y8v
+        L/8vLy//Ly8v/y8vMP8tLS3xExMURy8vMAAAAAANJSUmozAwMv8wMDL/MDAy/zAwMv8wMDL/MC4w/y84
+        Nv87o4D/QMiZ/0DFl/9AxZf/QMWX/0DFl/9AyJn/OI1v/y8wMf8wLzH/MDAy/zAwMv8wMDL/MDAy/zAw
+        Mv8wMDL/MDAy/zAwMv8wMDL/MDAy/y8sMP8xT0b/PrmP/0DHmf9AxZf/QMWX/0DFl/9AxZf/QMaY/zRp
+        WP8vKy7/MDAy/zAwMv8wMDL/MDAy/zAwMv8uLjDxFBQVRzExMwAAAAANJiYoozMzNf8zMzT/MzM0/zMz
+        NP8zMzT/MjEz/zE6OP87pIL/Qcmc/0DGmv9Axpr/QMaa/0DGmv9ByZz/OY5z/zEzNP8zMjT/MzM0/zMz
+        NP8zMzT/MzM0/zMzNP8zMzT/MzM0/zMzNP8zMzT/MzM0/zIvMv8zUUj/P7uS/0HIm/9Axpr/QMaa/0DG
+        mv9Axpr/QMea/zVqWf8xLTD/MzM1/zMzNP8zMzT/MzM0/zMzNf8xMTLxFRUWRzQ0NQAAAAANKSkqozY2
+        OP82Njj/NjY4/zY2OP82Njj/NTQ2/zQ8O/8+pIP/RMmd/0TGm/9Expv/RMab/0TGm/9EyZ3/O450/zQ1
+        Nv82NTf/NjY4/zY2OP82Njj/NjY4/zY2OP82Njj/NjY4/zY2OP82Njj/NjY4/zUyNf81Ukr/QbuT/0TI
+        nP9Expv/RMab/0TGm/9Expv/Q8eb/zdrW/80MDP/NjY4/zY2OP82Njj/NjY4/zY2OP8zMzXxFhYWRzY2
+        OAAAAAANKiosozg4Ov84ODr/ODg6/zg4Ov84ODr/ODY5/zY+Pf9ApoT/Rcud/0XHm/9Fx5v/Rceb/0XH
+        m/9Gy53/PY90/zY3Of84Nzr/ODg6/zg4Ov84ODr/ODg6/zg4Ov84ODr/ODg6/zg4Ov84ODr/ODg6/zc0
+        N/82VEz/Q7yT/0XJnP9Fx5v/Rceb/0XHm/9FyJv/Rcib/zluXf82Mjb/ODg6/zg4Ov84ODr/ODg6/zg4
+        Ov81NTfxFhYXRzg4OgAAAAANLCwuozo6PP86Ojz/Ojo8/zo6PP86Ojz/Ojg7/zhBQP9AqYX/Rc6f/0XL
+        nP9Fy5z/Rcuc/0XLnf9Fzp7/PpJ2/zg5O/86OTz/Ojo8/zo6PP86Ojz/Ojo8/zo6PP86Ojz/Ojo8/zo6
+        PP86Ojz/Ojo8/zk3Ov85Vk7/Q7+U/0XNnv9Fy5z/Rcuc/0XLnP9Fy53/Rcyd/zpwX/84NDj/Ojo9/zo6
+        PP86Ojz/Ojo8/zo6Pf83NzrxGBgZRzo6PQAAAAANLi4wozw8P/88PD//PDw//zw8P/88PD//PDo+/zpD
+        Qv9CqYj/R86h/0bLn/9Gy5//Rsuf/0bLn/9HzqH/P5N5/zo7Pf88PD//PDw//zw8P/88PD//PDw//zw8
+        P/88PD//PDw//zw8P/88PD//PDw//zw5PP87WVH/RL+X/0fNoP9Gy5//Rsuf/0bLn/9Gy5//Rsyf/zxx
+        Yf87Nzv/PD0//zw8P/88PD//PDw//z09QP86OjzxGRkaRz09QAAAAAANMDAxoz8/QP8/P0D/Pz9A/z8/
+        QP8/P0D/Pz0//zxFRP9Eqoj/Sc6h/0nLn/9Jy5//Scuf/0nLn/9JzqH/QpV5/zw+P/8/PkD/Pz9A/z8/
+        QP8/P0D/Pz9A/z8/QP8/P0D/Pz9A/z8/QP8/P0D/Pz9A/z47Pv89WlH/R8CX/0nNoP9Jy5//Scuf/0nL
+        n/9Jy5//Scyg/z5zYv89OTz/Pz9A/z8/QP8/P0D/Pz9A/z8/QP88PD7xGhobRz8/QQAAAAANMTEzo0BA
+        Qv9AQEL/QEBC/0BAQv9AQEL/QD5B/z5HRf9FrYj/SdCh/0nNn/9JzZ//Sc2f/0nNn/9J0KH/QpZ6/z5A
+        Qf9AP0L/QEBC/0BAQv9AQEL/QEBC/0BAQv9AQEL/QEBC/0BAQv9AQEL/QEBC/z89QP8+XFP/R8GX/0nP
+        oP9JzZ//Sc2f/0nNn/9JzZ//Sc6f/0B1Y/8/Oz7/QEBD/0BAQv9AQEL/QEBC/0BAQ/8+PkDxGxscR0FB
+        QwAAAAANMzM1o0NDRv9DQ0X/Q0NF/0NDRf9DQ0X/QkFE/0BIR/9Froj/SdKh/0nPn/9Jz5//Sc+f/0nP
+        n/9J0qH/RJh7/0BBQ/9DQkX/Q0NF/0NDRf9DQ0X/Q0NF/0NDRf9DQ0X/Q0NF/0NDRf9DQ0X/Q0NF/0I/
+        Q/9AXlX/R8SY/0nRoP9Jz5//Sc+f/0nPn/9Jz5//SdCf/0F2ZP9BPUH/Q0NF/0NDRf9DQ0X/Q0NF/0ND
+        Rv9AQELxHBwcR0NDRQAAAAANNTU2o0VFR/9FRUf/RUVH/0VFR/9FRUf/RUNG/0JLSf9Hror/S9Ki/0rP
+        oP9Kz6D/Ss+g/0rPoP9L0qL/RZl9/0JERf9FREf/RUVH/0VFR/9FRUf/RUVH/0VFR/9FRUf/RUVH/0VF
+        R/9FRUf/RUVH/0RBRf9BYFf/ScSZ/0vRov9Kz6D/Ss+g/0rPoP9Kz6H/StCh/0N4Zv9DP0P/RUVH/0VF
+        R/9FRUf/RUVH/0VFR/9CQkPxHBwdR0VFRwAAAAANNjY4o0dHSv9HR0n/RkZJ/0ZGSf9HR0n/RkVI/0NM
+        TP9Ir43/TdKm/03PpP9Nz6T/Tc+k/03PpP9N0qb/Rpl+/0RFR/9HRkn/R0dJ/0ZGSf9GRkn/RkZJ/0ZG
+        Sf9GRkn/RkZJ/0ZGSf9GRkn/R0dJ/0ZDR/9DYVj/S8Sc/03Rpf9Nz6T/Tc+k/03PpP9Nz6T/TdCk/0R4
+        af9FQUX/R0dJ/0ZGSf9GRkn/RkZJ/0dHSv9DQ0bxHR0eR0dHSQAAAAANNzc5o0lJTP9JSUz/SUlM/0lJ
+        TP9JSUz/SUdK/0VOTf9JsI7/TdKm/03PpP9Nz6T/Tc+k/03PpP9N0qb/R5p//0ZHSf9JSEv/SUlM/0lJ
+        TP9JSUz/SUlM/0lJTP9JSUz/SUlM/0lJTP9JSUz/SUlM/0hFSf9FYlr/S8Sc/03Rpf9Nz6T/Tc+k/03P
+        pP9Nz6T/TdCl/0V6av9HQ0f/SUlM/0lJTP9JSUz/SUlL/0lJTP9FRUjxHh4fR0lJTAAAAAANOTk7o0pK
+        Tf9KSk3/SkpN/0pKTf9KSk3/SkhM/0dQTv9KsI7/TdKm/03PpP9Nz6T/Tc+k/03PpP9N0qb/R5uA/0dJ
+        S/9KSU3/SkpN/0pKTf9KSk3/SkpN/0pKTf9KSk3/SkpN/0pKTf9KSk3/SkpN/0lHS/9FZFz/S8Sc/03R
+        pf9Nz6T/Tc+k/03PpP9Nz6T/TdCk/0d7av9JRUn/SkpN/0pKTf9KSk3/SkpN/0pKTv9HR0rxHx8gR0tL
+        TgAAAAANOjo7o01NTf9NTU3/TU1N/01NTf9NTU3/TUtM/0lRUP9KsY7/TdSm/03RpP9N0aT/TdGk/03R
+        pP9N1Kb/SJ2B/0lLTP9NTE3/TU1N/01NTf9NTU3/TU1N/01NTf9NTU3/TU1N/01NTf9NTU3/TU1N/0xJ
+        S/9HZV3/TMac/03Tpf9N0aT/TdGk/03RpP9N0aT/TdKk/0h8bP9LR0r/TU1N/01NTf9NTU3/TU1N/01N
+        Tf9JSUrxHx8gR01NTwAAAAAOOzs9o01NUP9NTVD/TU1Q/01NUP9NTVD/TUtO/0lSUv9LtZD/Ttmo/07W
+        pv9O1qb/Ttam/07Wpv9N2aj/SqCD/0tMTf9NTE//TU1Q/01NUP9NTVD/TU1Q/01NUP9NTVD/TU1Q/01N
+        UP9NTVD/TU1Q/01KTf9JaF7/Tcue/07YqP9O1qb/Ttam/07Wpv9O1qf/Tdem/0h+bf9MSEz/TU1Q/01N
+        UP9NTVD/TU1Q/01NUP9KSkzxICAhR09PUQAAAAANPDw+o05OUv9NTVL/TU1S/01NUv9NTVL/TUxR/0xU
+        Vf9IpIf/R8CZ/0e9l/9HvZf/R72X/0e+mP9HwJn/SJR8/0xOUf9NTVL/TU1S/01NUv9NTVL/TU1S/01N
+        Uv9NTVL/TU1S/01NUv9NTVL/TU1S/01LUP9LZV//R7WS/0e/mP9HvZf/R72X/0e9l/9Hvpj/R7+Y/0p5
+        a/9NSU//TU1S/01NUv9NTVL/TU1S/05OUv9KSk7xISEiRkhISwAAAAAJPz9BnlFRUv9RUVL/UVFS/1FR
+        Uv9RUVL/UVBS/1BSU/9KXFj/SF5Y/0hdWP9IXVj/SF1Y/0hdWP9IXlj/TFtX/1FRU/9RUFL/UVFS/1FR
+        Uv9RUVL/UVFS/1FRUv9RUVL/UVFS/1FRUv9RUVL/UVFS/1FQUv9PVFT/SV1Y/0hdWP9IXVj/SF1Y/0hd
+        WP9IXVj/SF5Y/05XVf9RUFL/UVFS/1FRUv9RUVL/UVFS/1FRU/9NTU/wIyMkQUFBQgAAAAABR0dKhlNT
+        Vv5SUlX/UlJV/1JSVf9SUlX/UlJV/1JSVf9SUFT/Uk9T/1JPU/9ST1P/Uk9T/1JPU/9ST1P/UlBU/1JS
+        Vf9SUlX/UlJV/1JSVf9SUlX/UlJV/1JSVf9SUlX/UlJV/1JSVf9SUlX/UlJV/1JSVf9SUVX/UlBU/1JP
+        U/9ST1P/Uk9T/1JPU/9ST1P/Uk9T/1JRVP9SUlX/UlJV/1JSVf9SUlX/UlJV/1JSVf9TU1bkMTEyLE1N
+        TwBZWVsATExOO19fYtZVVVn+U1NX/1NTV/9TU1f/U1NX/1NTV/9TU1f/U1NX/1NTV/9TU1f/U1NX/1NT
+        V/9TU1f/U1NX/1NTV/9TU1f/U1NX/1NTV/9TU1f/U1NX/1NTV/9TU1f/U1NX/1NTV/9TU1f/U1NX/1NT
+        V/9TU1f/U1NX/1NTV/9TU1f/U1NX/1NTV/9TU1f/U1NX/1NTV/9TU1f/U1NX/1NTV/9TU1f/U1NX/1pa
+        XvdbW12UODg5Ck5OUABeXl4AAAAAAn19gDZ+foKAdnZ6jXZ2eox2dnqMdnZ6jHZ2eox2dnqMdnZ6jHZ2
+        eox2dnqMdnZ6jHZ2eox2dnqMdnZ6jHZ2eox2dnqMdnZ6jHZ2eox2dnqMdnZ6jHZ2eox2dnqMdnZ6jHZ2
+        eox2dnqMdnZ6jHZ2eox2dnqMdnZ6jHZ2eox2dnqMdnZ6jHZ2eox2dnqMdnZ6jHZ2eox2dnqMdnZ6jHZ2
+        eox2dnqMeHh8jIGBhGNlZWYUm5ucABUVFQBjY2UARUVFAGtrbgBmZmoAYWFlAGFhZQBhYWUAYWFlAGFh
+        ZQBhYWUAYWFlAGFhZQBhYWUAYWFlAGFhZQBhYWUAYWFlAGFhZQBhYWUAYWFlAGFhZQBhYWUAYWFlAGFh
+        ZQBhYWUAYWFlAGFhZQBhYWUAYWFlAGFhZQBhYWUAYWFlAGFhZQBhYWUAYWFlAGFhZQBhYWUAYWFlAGFh
+        ZQBhYWUAYWFlAGFhZQBhYWUAYmJmAGpqbQBfX2AAAAAAADo6OwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAA=
+</value>
+  </data>
 </root>

+ 25 - 33
UAS_DLLTest/Properties/Resources.Designer.cs

@@ -1,69 +1,61 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     此代码由工具生成。
-//     运行时版本: 4.0.30319.42000
+//     运行时版本:4.0.30319.42000
 //
-//     对此文件的更改可能导致不正确的行为,如果
-//     重新生成代码,则所做更改将丢失。
+//     对此文件的更改可能导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
 // </auto-generated>
 //------------------------------------------------------------------------------
 
-namespace UAS_DLLTest.Properties
-{
-
-
+namespace UAS_DLLTest.Properties {
+    using System;
+    
+    
     /// <summary>
-    ///   强类型资源类,用于查找本地化字符串等。
+    ///   一个强类型资源类,用于查找本地化字符串等。
     /// </summary>
     // 此类是由 StronglyTypedResourceBuilder
     // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
-    // 若要添加或除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+    // 若要添加或除成员,请编辑 .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
-    {
-
+    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()
-        {
+        internal Resources() {
         }
-
+        
         /// <summary>
-        ///   返回此类使用的缓存 ResourceManager 实例。
+        ///   返回此类使用的缓存 ResourceManager 实例。
         /// </summary>
         [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Resources.ResourceManager ResourceManager
-        {
-            get
-            {
-                if ((resourceMan == null))
-                {
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
                     global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UAS_DLLTest.Properties.Resources", typeof(Resources).Assembly);
                     resourceMan = temp;
                 }
                 return resourceMan;
             }
         }
-
+        
         /// <summary>
-        ///   覆盖当前线程的 CurrentUICulture 属性
-        ///   使用此强类型的资源类的资源查找
+        ///   使用此强类型资源类,为所有资源查找
+        ///   重写当前线程的 CurrentUICulture 属性
         /// </summary>
         [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Globalization.CultureInfo Culture
-        {
-            get
-            {
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
                 return resourceCulture;
             }
-            set
-            {
+            set {
                 resourceCulture = value;
             }
         }

+ 13 - 17
UAS_DLLTest/Properties/Settings.Designer.cs

@@ -1,28 +1,24 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.42000
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
 //
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
 // </auto-generated>
 //------------------------------------------------------------------------------
 
-namespace UAS_DLLTest.Properties
-{
-
-
+namespace UAS_DLLTest.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
-    {
-
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.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
-            {
+        
+        public static Settings Default {
+            get {
                 return defaultInstance;
             }
         }

+ 66 - 2
UAS_DLLTest/UAS_DLLTest.csproj

@@ -9,9 +9,25 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>UAS_DLLTest</RootNamespace>
     <AssemblyName>UAS_DLLTest</AssemblyName>
-    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+    <TargetFrameworkProfile />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <PlatformTarget>AnyCPU</PlatformTarget>
@@ -32,7 +48,17 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
+  <PropertyGroup>
+    <ApplicationIcon>U_Icon.ico</ApplicationIcon>
+  </PropertyGroup>
   <ItemGroup>
+    <Reference Include="BenQGuru.eMES.DLLService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=939cffa42430e6d8, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\UAS_MesInterface(4.0)\bin\Debug\BenQGuru.eMES.DLLService.dll</HintPath>
+    </Reference>
+    <Reference Include="Oracle.ManagedDataAccess">
+      <HintPath>..\UAS_MesInterface(4.0)\bin\Debug\Oracle.ManagedDataAccess.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core" />
     <Reference Include="System.Xml.Linq" />
@@ -41,7 +67,6 @@
     <Reference Include="System.Data" />
     <Reference Include="System.Deployment" />
     <Reference Include="System.Drawing" />
-    <Reference Include="System.Net.Http" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
   </ItemGroup>
@@ -52,8 +77,26 @@
     <Compile Include="Form1.Designer.cs">
       <DependentUpon>Form1.cs</DependentUpon>
     </Compile>
+    <Compile Include="GroupBoxwithborder.cs">
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="GroupBoxwithborder.Designer.cs">
+      <DependentUpon>GroupBoxwithborder.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ParamControl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="paramControl.Designer.cs">
+      <DependentUpon>ParamControl.cs</DependentUpon>
+    </Compile>
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="Form1.resx">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="paramControl.resx">
+      <DependentUpon>ParamControl.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="Properties\Resources.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>
@@ -62,6 +105,7 @@
     <Compile Include="Properties\Resources.Designer.cs">
       <AutoGen>True</AutoGen>
       <DependentUpon>Resources.resx</DependentUpon>
+      <DesignTime>True</DesignTime>
     </Compile>
     <None Include="Properties\Settings.settings">
       <Generator>SettingsSingleFileGenerator</Generator>
@@ -76,6 +120,26 @@
   <ItemGroup>
     <None Include="App.config" />
   </ItemGroup>
+  <ItemGroup>
+    <Content Include="U_Icon.ico" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include=".NETFramework,Version=v4.0">
+      <Visible>False</Visible>
+      <ProductName>Microsoft .NET Framework 4 %28x86 和 x64%29</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.4.5">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 4.5</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.

BIN
UAS_DLLTest/U_Icon.ico


+ 9 - 6
UAS_DLLTest/paramControl.Designer.cs

@@ -35,28 +35,31 @@
             // paramName
             // 
             this.paramName.AutoSize = true;
-            this.paramName.Location = new System.Drawing.Point(3, 11);
+            this.paramName.Location = new System.Drawing.Point(2, 4);
+            this.paramName.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
             this.paramName.Name = "paramName";
-            this.paramName.Size = new System.Drawing.Size(62, 18);
+            this.paramName.Size = new System.Drawing.Size(41, 12);
             this.paramName.TabIndex = 0;
             this.paramName.Text = "label1";
             this.paramName.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
             // 
             // paramValue
             // 
-            this.paramValue.Location = new System.Drawing.Point(110, 1);
+            this.paramValue.Location = new System.Drawing.Point(73, 1);
+            this.paramValue.Margin = new System.Windows.Forms.Padding(2);
             this.paramValue.Name = "paramValue";
-            this.paramValue.Size = new System.Drawing.Size(205, 28);
+            this.paramValue.Size = new System.Drawing.Size(138, 21);
             this.paramValue.TabIndex = 1;
             // 
             // ParamControl
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.paramValue);
             this.Controls.Add(this.paramName);
+            this.Margin = new System.Windows.Forms.Padding(2);
             this.Name = "ParamControl";
-            this.Size = new System.Drawing.Size(354, 32);
+            this.Size = new System.Drawing.Size(236, 26);
             this.ResumeLayout(false);
             this.PerformLayout();