Browse Source

Merge branch 'master' of ssh://10.10.100.21/source/mes-client

Hcsy 8 years ago
parent
commit
3b1d2d9f62
44 changed files with 4544 additions and 893 deletions
  1. 1 1
      UAS-MES/CustomControl/AccordionMenu/AccordionMenu.cs
  2. 2 1
      UAS-MES/CustomControl/Pagination/Pagination.cs
  3. 2 1
      UAS-MES/CustomControl/Pagination/PaginationDbFind.cs
  4. 2 1
      UAS-MES/CustomControl/TextBoxWithIcon/BlurSearch.cs
  5. 2 1
      UAS-MES/CustomControl/TextBoxWithIcon/MaCodeSearchTextBox.cs
  6. 2 1
      UAS-MES/CustomControl/TextBoxWithIcon/SearchTextBox.cs
  7. 994 0
      UAS-MES/DataOperate/AccessDBHelper.cs
  8. 14 9
      UAS-MES/FunctionCode/Make/Make_BigBoxCollection.cs
  9. 0 1
      UAS-MES/FunctionCode/Make/Make_CheckNoRelpace.cs
  10. 1 1
      UAS-MES/FunctionCode/Make/Make_ColorBoxLabelPrint.cs
  11. 157 215
      UAS-MES/FunctionCode/Make/Make_PackageCollection.Designer.cs
  12. 43 5
      UAS-MES/FunctionCode/Make/Make_PackageCollection.cs
  13. 166 228
      UAS-MES/FunctionCode/Make/Make_PackageCollectionWeigh.Designer.cs
  14. 44 4
      UAS-MES/FunctionCode/Make/Make_PackageCollectionWeigh.cs
  15. 0 18
      UAS-MES/FunctionCode/Make/Make_PackageCollectionWeigh.resx
  16. 42 41
      UAS-MES/FunctionCode/Make/Make_UpdateCollectCode.Designer.cs
  17. 0 12
      UAS-MES/FunctionCode/Make/Make_UpdateCollectCode.resx
  18. 2 2
      UAS-MES/FunctionCode/OQC/OQC_Inspection.cs
  19. 2 1
      UAS-MES/FunctionCode/Query/Query_ProductTraceBack.cs
  20. 2 1
      UAS-MES/FunctionCode/SystemSetting/SystemSetting_SysNav.cs
  21. 7 15
      UAS-MES/Login.cs
  22. 18 211
      UAS-MES/PublicMethod/LogicHandler.cs
  23. 1 1
      UAS-MES/PublicMethod/Print.cs
  24. 15 0
      UAS_CheckWork/App.config
  25. 72 63
      UAS_CheckWork/Form1.Designer.cs
  26. 117 25
      UAS_CheckWork/Form1.cs
  27. 15 0
      UAS_CheckWork/Form1.resx
  28. 243 0
      UAS_CheckWork/Form2.Designer.cs
  29. 155 0
      UAS_CheckWork/Form2.cs
  30. 135 0
      UAS_CheckWork/Form2.resx
  31. 28 0
      UAS_CheckWork/LoadingCircle.Designer.cs
  32. 470 0
      UAS_CheckWork/LoadingCircle.cs
  33. 70 3
      UAS_CheckWork/Program.cs
  34. 37 17
      UAS_CheckWork/Properties/Settings.Designer.cs
  35. 11 6
      UAS_CheckWork/Properties/Settings.settings
  36. 76 0
      UAS_CheckWork/SetLoadingWindow.Designer.cs
  37. 60 0
      UAS_CheckWork/SetLoadingWindow.cs
  38. 1253 0
      UAS_CheckWork/SetLoadingWindow.resx
  39. 3 3
      UAS_CheckWork/Tools/DataHelper.cs
  40. 242 0
      UAS_CheckWork/Tools/ExcelHandler.cs
  41. BIN
      UAS_CheckWork/Tools/NPOI.dll
  42. 29 1
      UAS_CheckWork/UAS_CheckWork.csproj
  43. BIN
      UAS_CheckWork/tool/NPOI.dll
  44. 9 4
      UAS_MesInterface(4.0)/MesHelper.cs

+ 1 - 1
UAS-MES/CustomControl/AccordionMenu/AccordionMenu.cs

@@ -54,7 +54,7 @@ namespace UAS_MES.CustomControl.AccordionMenu
             this.Width = m_nPanFunWidth;
 
             //查询该用户所在的组别有权限查看的模块
-            dh = new DataHelper();
+            dh = SystemInf.dh;
 
             if (User.UserAccountType == "admin")
             {

+ 2 - 1
UAS-MES/CustomControl/Pagination/Pagination.cs

@@ -4,6 +4,7 @@ using System.Data;
 using System.IO;
 using System.Windows.Forms;
 using UAS_MES.DataOperate;
+using UAS_MES.Entity;
 
 namespace UAS_MES.CustomControl.Pagination
 {
@@ -52,7 +53,7 @@ namespace UAS_MES.CustomControl.Pagination
         bool AddEnable1;
         DataGridView Dgv;
         DataTable dt;
-        DataHelper dh = new DataHelper();
+        DataHelper dh = SystemInf.dh;
 
         public bool DeleteEnable
         {

+ 2 - 1
UAS-MES/CustomControl/Pagination/PaginationDbFind.cs

@@ -4,6 +4,7 @@ using System.Data;
 using System.IO;
 using System.Windows.Forms;
 using UAS_MES.DataOperate;
+using UAS_MES.Entity;
 
 namespace UAS_MES.CustomControl.Pagination
 {
@@ -52,7 +53,7 @@ namespace UAS_MES.CustomControl.Pagination
         bool AddEnable1;
         DataGridView Dgv;
         DataTable dt;
-        DataHelper dh = new DataHelper();
+        DataHelper dh = SystemInf.dh;
 
         public bool DeleteEnable
         {

+ 2 - 1
UAS-MES/CustomControl/TextBoxWithIcon/BlurSearch.cs

@@ -7,12 +7,13 @@ using System.Linq;
 using System.Text;
 using System.Windows.Forms;
 using UAS_MES.DataOperate;
+using UAS_MES.Entity;
 
 namespace UAS_MES.CustomControl.TextBoxWithIcon
 {
     public partial class BlurSearch : UserControl
     {
-        DataHelper dh = new DataHelper();
+        DataHelper dh = SystemInf.dh;
 
         public delegate void OnTextChange(object sender, EventArgs e);
 

+ 2 - 1
UAS-MES/CustomControl/TextBoxWithIcon/MaCodeSearchTextBox.cs

@@ -4,6 +4,7 @@ using System.Data;
 using System.Windows.Forms;
 using UAS_MES.CustomControl.CustomCheckBox;
 using UAS_MES.DataOperate;
+using UAS_MES.Entity;
 using UAS_MES.PublicMethod;
 
 namespace UAS_MES.CustomControl.TextBoxWithIcon
@@ -264,7 +265,7 @@ namespace UAS_MES.CustomControl.TextBoxWithIcon
 
         public void GetData(bool LeaveOrEnter)
         {
-            DataHelper dh = new DataHelper();
+            DataHelper dh = SystemInf.dh;
             string sql = "";
             //将查询到的结果返回界面
             if (TextBox.Text != "")

+ 2 - 1
UAS-MES/CustomControl/TextBoxWithIcon/SearchTextBox.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Data;
 using System.Windows.Forms;
 using UAS_MES.DataOperate;
+using UAS_MES.Entity;
 using UAS_MES.PublicMethod;
 
 namespace UAS_MES.CustomControl.TextBoxWithIcon
@@ -322,7 +323,7 @@ namespace UAS_MES.CustomControl.TextBoxWithIcon
 
         public void GetData()
         {
-            DataHelper dh = new DataHelper();
+            DataHelper dh = SystemInf.dh;
             string sql = "";
             //将查询到的结果返回界面
             if (TextBox.Text != "")

+ 994 - 0
UAS-MES/DataOperate/AccessDBHelper.cs

@@ -0,0 +1,994 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.OleDb;
+using System.Linq;
+using System.Text;
+using System.Windows;
+
+namespace UAS_MES.DataOperate
+{
+    class AccessDBHelper
+    {
+        private string _fileName;
+        private string _connectionString;
+        private OleDbConnection _odcConnection = null;
+        private OleDbCommand command = null;
+
+        public AccessDBHelper(string fileName)
+        {
+            this._fileName = fileName;
+            //this._connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";";
+            this._connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";";
+        }
+
+
+        public AccessDBHelper(string fileName,string password)
+        {
+            this._fileName = fileName;
+            //this._connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Jet OLEDB:Database Password="+password+";";
+            this._connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Jet OLEDB:Database Password=" + password + ";";
+        }
+
+        public void Open()
+        {
+            try
+            {
+                // 建立连接
+                this._odcConnection = new OleDbConnection(this._connectionString);
+                // 打开连接
+                this._odcConnection.Open();
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show(ex.Message);
+            }
+        }
+
+        public void Close()
+        {
+            this._odcConnection.Close();
+        }
+
+
+        public DataTable GetDataTable(string sql)
+        {
+            DataTable ds = new DataTable();
+            command = new OleDbCommand(sql, this._odcConnection);
+            Reconnect(command);
+            OleDbDataAdapter adapter = new OleDbDataAdapter(command);
+            try
+            {
+                adapter.Fill(ds);
+            }
+            catch (Exception ex)
+            {
+                throw new Exception("sql語句: " + sql + " 執行失敗!" + ex.Message);
+            }
+            adapter.Dispose();
+            return ds;
+        }
+
+        public DataSet GetDataSet(string sql)
+        {
+            DataSet ds = new DataSet();
+            command = new OleDbCommand(sql, this._odcConnection);
+            Reconnect(command);
+            OleDbDataAdapter adapter = new OleDbDataAdapter(command);
+            try
+            {
+                adapter.Fill(ds);
+            }
+            catch (Exception ex)
+            {
+                throw new Exception("sql語句: " + sql + " 執行失敗!"+ex.Message);
+            }
+            adapter.Dispose();
+            return ds;
+        }
+
+        public void Reconnect(OleDbCommand cmd)
+        {
+            if (cmd.Connection.State == ConnectionState.Closed)
+            {
+                cmd.Connection.Open();
+                //超时重连
+            }
+        }
+
+        /// <summary>
+        /// 根据表名获取该表字段数据类型
+        /// </summary>
+        public DataTable GetColumnDataType(string TableName)
+        {
+            DataTable dt = new DataTable();
+            command = new OleDbCommand("select Column_Name,Data_Type from cols where TABLE_name=upper('" + TableName + "')", this._odcConnection);
+            Reconnect(command);
+            OleDbDataAdapter ad = new OleDbDataAdapter(command);
+            ad.Fill(dt);
+            ad.Dispose();
+            command.Dispose();
+            return dt;
+        }
+
+        /// <summary>
+        /// 获取第一行第一列的信息
+        /// </summary>
+        public object getFieldDataByCondition(string TableName, string Field, string Condition)
+        {
+            DataTable dt = new DataTable();
+            string sql = "select " + Field + " from " + TableName + " where " + Condition;
+            command = new OleDbCommand(sql, this._odcConnection);
+            Reconnect(command);
+            OleDbDataAdapter ad = new OleDbDataAdapter();
+            ad.SelectCommand = command;
+            try
+            {
+                ad.Fill(dt);
+            }
+            catch (Exception)
+            {
+                this._odcConnection = new OleDbConnection(this._connectionString);
+                this._odcConnection.Open();
+                command = new OleDbCommand(sql, this._odcConnection);
+                ad = new OleDbDataAdapter();
+                ad.SelectCommand = command;
+                ad.Fill(dt);
+            }
+            ad.Dispose();
+            command.Dispose();
+            if (dt.Rows.Count > 0)
+            {
+                return dt.Rows[0][0];
+            }
+            else
+            {
+                return "";
+            }
+        }
+
+        /// <summary>
+        /// 获取指定表的记录的条数 ,带条件
+        /// </summary>
+        /// <returns></returns>
+        public int getRowCount(string TableName, string Condition)
+        {
+            DataTable dt = new DataTable();
+            string sql = "select count(1) from " + TableName + " where " + Condition;
+            command = new OleDbCommand(sql, this._odcConnection);
+            Reconnect(command);
+            OleDbDataAdapter ad = new OleDbDataAdapter(command);
+            ad.Fill(dt);
+            ad.Dispose();
+            command.Dispose();
+            return int.Parse(dt.Rows[0][0].ToString());
+        }
+
+        /// <summary>
+        /// 获取指定表的记录的条数 ,不带条件
+        /// </summary>
+        /// <param name="TableName"></param>
+        /// <returns></returns>
+        public int getRowCount(string TableName)
+        {
+            DataTable dt = new DataTable();
+            string sql = "select count(1) from " + TableName;
+            command = new OleDbCommand(sql, this._odcConnection);
+            Reconnect(command);
+            OleDbDataAdapter ad = new OleDbDataAdapter(command);
+
+            ad.Fill(dt);
+            ad.Dispose();
+            command.Dispose();
+            return int.Parse(dt.Rows[0][0].ToString());
+        }
+
+        /// <summary>
+        /// 通过表名和获取单行的记录
+        /// </summary>
+        public DataTable getFieldsDataByCondition(string TableName, string[] Fields, string Condition)
+        {
+            DataTable dt = new DataTable();
+            string sql = "select ";
+            sql += AddField(Fields);
+            sql += " from " + TableName + " where " + Condition + " and rownum=1";
+            command = new OleDbCommand(sql, this._odcConnection);
+            Reconnect(command);
+            OleDbDataAdapter ad = new OleDbDataAdapter(command);
+            try
+            {
+                ad.Fill(dt);
+            }
+            catch (Exception)
+            {
+                this._odcConnection = new OleDbConnection(this._connectionString);
+                this._odcConnection.Open();
+                command = new OleDbCommand(sql, this._odcConnection);
+                ad = new OleDbDataAdapter();
+                ad.SelectCommand = command;
+                ad.Fill(dt);
+            }
+            ad.Dispose();
+            command.Dispose();
+            return dt;
+        }
+
+        /// <summary>
+        /// 将DataTable导入到指定的表中
+        /// </summary>
+        /// <param name="DataTable"></param>
+        /// <param name="TableName"></param>
+        public void InsertDataTable(DataTable DataTable, string TableName)
+        {
+            for (int i = 0; i < DataTable.Rows.Count; i++)
+            {
+                for (int j = 0; j < DataTable.Columns.Count; j++)
+                {
+
+                }
+            }
+        }
+
+        /// <summary>
+        /// 按分页获取数据
+        /// </summary>
+        /// <param name="TableName">表名</param>
+        /// <param name="Fields">查询字段</param>
+        /// <param name="CurrentPage">当前页面</param>
+        /// <param name="PageSize">页面展示条数</param>
+        /// <param name="Caller"></param>
+        /// <returns></returns>
+        // SELECT * FROM (SELECT   A.*  FROM (SELECT* FROM datalist) A WHERE ROWNUM <= 50) WHERE ROWNUM >= 21
+        public DataTable getFieldsDatasByPageing(string TableName, string Fields, int CurrentPage, int PageSize, string Caller, params string[] condition)
+        {
+            DataTable dt = new DataTable();
+            StringBuilder sql = new StringBuilder();
+            //先查询出配置出去的列
+            //获取查询的列
+            string[] caption = GetCaptionFromField(Fields);
+            //获取对应列的描述
+            string[] field = GetField(Fields);
+            sql.Append(" select * from (select RowNum RN, A.* from (select ");
+            sql.Append(AddField(caption));
+            if (condition.Length > 0)
+            {
+                if (condition[0] != null && condition[0].Trim() != "")
+                    sql.Append(" from " + TableName + " where " + condition[0] + " ) A where ROWNUM <=" + CurrentPage * PageSize + ") where RN>" + (CurrentPage - 1) * PageSize);
+                else
+                    sql.Append(" from " + TableName + ") A where ROWNUM <= " + CurrentPage * PageSize + ") where RN> " + (CurrentPage - 1) * PageSize);
+            }
+            command = new OleDbCommand(sql.ToString(), this._odcConnection);
+            Reconnect(command);
+            OleDbDataAdapter ad = new OleDbDataAdapter(command);
+            ad.Fill(dt);
+            ad.Dispose();
+            command.Dispose();
+            dt.Columns.RemoveAt(0);
+            foreach (DataColumn dc in dt.Columns)
+            {
+                dc.ColumnName = field[dt.Columns.IndexOf(dc)];
+                dc.Caption = caption[dt.Columns.IndexOf(dc)];
+            }
+            return dt;
+        }
+
+        /// <summary>
+        /// 通过表名,字段和条件获取DataTable类型的数据
+        /// </summary>
+        public DataTable getFieldsDatasByCondition(string TableName, string[] Fields, string Condition)
+        {
+            DataTable dt = new DataTable();
+            string sql = "select ";
+            sql += AddField(Fields);
+            sql += " from " + TableName + " where " + Condition;
+
+            command = new OleDbCommand(sql, this._odcConnection);
+            Reconnect(command);
+            OleDbDataAdapter ad = new OleDbDataAdapter(command);
+            try
+            {
+                ad.Fill(dt);
+            }
+            catch (Exception)
+            {
+                this._odcConnection = new OleDbConnection(this._connectionString);
+                this._odcConnection.Open();
+                command = new OleDbCommand(sql, this._odcConnection);
+                ad = new OleDbDataAdapter();
+                ad.SelectCommand = command;
+                ad.Fill(dt);
+            }
+            ad.Dispose();
+            command.Dispose();
+            return dt;
+        }
+
+        /// <summary>
+        /// 通过表名,字段获取DataTable类型的数据
+        /// </summary>
+        public DataTable getFieldsDatas(string TableName, string Fields)
+        {
+            DataTable dt = new DataTable();
+            string sql = "select ";
+            sql += Fields;
+            sql += " from " + TableName;
+            command = new OleDbCommand(sql, this._odcConnection);
+            Reconnect(command);
+            OleDbDataAdapter ad = new OleDbDataAdapter(command);
+            ad.SelectCommand = command;
+            try
+            {
+                ad.Fill(dt);
+            }
+            catch (Exception)
+            {
+                this._odcConnection = new OleDbConnection(this._connectionString);
+                this._odcConnection.Open();
+                command = new OleDbCommand(sql, this._odcConnection);
+                ad = new OleDbDataAdapter();
+                ad.SelectCommand = command;
+                ad.Fill(dt);
+            }
+            ad.Dispose();
+            command.Dispose();
+            return dt;
+        }
+
+
+        /// <summary>
+        /// 获取DbFind的数据的DataTable的结构
+        /// </summary>
+        /// <param name="field"></param>
+        /// <param name="caller"></param>
+        /// <returns></returns>
+        public DataTable GetDbFindDataTable(string field, string caller)
+        {
+            string sql = "select * from dbfindsetui where ds_caller='" + caller + "' and ds_whichui='" + field + "'";
+            DataTable dt = (DataTable)ExecuteSql(sql, "select");
+            if (dt.Rows.Count != 0)
+            {
+                //通过#号分割字段
+                string[] dbfield = dt.Rows[0]["ds_findtoui"].ToString().Split('#');
+                string[] cnfield = dt.Rows[0]["ds_dbcaption"].ToString().Split('#');
+                //获取查询要查询的Table
+                string dbtable = dt.Rows[0]["ds_tables"].ToString();
+                //拼接查询的字段
+                for (int i = 0; i < dbfield.Length; i++)
+                {
+                    dbfield[i] = dbfield[i].Split(',')[0];
+                }
+                //新建一个空的DataTable
+                DataTable dt1 = new DataTable();
+                //往空的DataTable添加结构,ColumnName是中文,Caption是实际的字段名称
+                for (int i = 0; i < cnfield.Length; i++)
+                {
+                    dt1.Columns.Add(cnfield[i]);
+                    dt1.Columns[i].Caption = dbfield[i];
+                }
+                //返回一个带有结构的空的DataTable
+                //DbFind.BindTable1 = dbtable;
+                return dt1;
+            }
+            else
+            {
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// 检测内容是否存在
+        /// </summary>
+        /// <param name="TableName"></param>
+        /// <param name="Condition"></param>
+        /// <returns></returns>
+        public bool CheckExist(string TableName, string Condition)
+        {
+            string sql = "select count(1) from " + TableName + " where " + Condition;
+            command = new OleDbCommand(sql, this._odcConnection);
+            Reconnect(command);
+            OleDbDataAdapter ad = new OleDbDataAdapter(command);
+            DataTable dt = new DataTable();
+            try
+            {
+                ad.Fill(dt);
+            }
+            catch (Exception)
+            {
+                this._odcConnection = new OleDbConnection(this._connectionString);
+                this._odcConnection.Open();
+                command = new OleDbCommand(sql, this._odcConnection);
+                ad = new OleDbDataAdapter();
+                ad.SelectCommand = command;
+                ad.Fill(dt);
+            }
+            ad.Dispose();
+            command.Dispose();
+            return int.Parse(dt.Rows[0][0].ToString()) > 0;
+        }
+
+        /// <summary>
+        /// 直接执行SQL,同时传入SQL的类型
+        /// </summary>
+        /// <param name="SQL"></param>
+        /// <param name="Type"></param>
+        /// <returns></returns>
+        public object ExecuteSql(string SQL, string Type, params object[] names)
+        {
+            object result = null;
+            command = new OleDbCommand(SQL, this._odcConnection);
+            Reconnect(command);
+            //用来拼接参数的
+            if (names.Length > 0)
+            {
+                string[] par = SQL.Split(':');
+                //用来存参数的数组
+                StringBuilder[] addpar = new StringBuilder[par.Length - 1];
+                for (int i = 0; i < par.Length - 1; i++)
+                {
+                    //新建一个char类型的数组用来存储每个字节的变量
+                    char[] c = par[i + 1].ToCharArray();
+                    addpar[i] = new StringBuilder();
+                    for (int j = 0; j < c.Length; j++)
+                    {
+                        if (c[j] != ' ' && c[j] != ',' && c[j] != ')')
+                        {
+                            addpar[i].Append(c[j]);
+                        }
+                        else
+                        {
+                            break;
+                        }
+                    }
+                }
+                for (int i = 0; i < addpar.Length; i++)
+                    command.Parameters.Add(new OleDbParameter(addpar[i].ToString(),names[i]));
+            }
+
+            switch (Type.ToUpper())
+            {
+                case "SELECT":
+                    OleDbDataAdapter ad = new OleDbDataAdapter(command);
+                    result = new DataTable();
+                    try
+                    {
+                        ad.Fill((DataTable)result);
+                    }
+                    catch (Exception)
+                    {
+                        this._odcConnection = new OleDbConnection(this._connectionString);
+                        this._odcConnection.Open();
+                        command = new OleDbCommand(SQL, this._odcConnection);
+                        ad = new OleDbDataAdapter();
+                        ad.SelectCommand = command;
+                        ad.Fill((DataTable)result);
+                    }
+                    break;
+                case "DELETE":
+                    try
+                    {
+                        result = command.ExecuteNonQuery();
+                    }
+                    catch (Exception)
+                    {
+                        command.Connection = new OleDbConnection(this._connectionString);
+                        command.Connection.Open();
+                        result = command.ExecuteNonQuery();
+                    }
+                    break;
+                case "UPDATE":
+                    try
+                    {
+                        result = command.ExecuteNonQuery();
+                    }
+                    catch (Exception)
+                    {
+                        command.Connection = new OleDbConnection(this._connectionString);
+                        command.Connection.Open();
+                        result = command.ExecuteNonQuery();
+                    }
+                    break;
+                case "INSERT":
+                    try
+                    {
+                        result = command.ExecuteNonQuery();
+                    }
+                    catch (Exception)
+                    {
+                        command.Connection = new OleDbConnection(this._connectionString);
+                        command.Connection.Open();
+                        result = command.ExecuteNonQuery();
+                    }
+                    break;
+            }
+            command.Dispose();
+            return result;
+        }
+
+        /// <summary>
+        /// 为了同步BS端的条码维护,检测时允许问号的存在,在检测时默认将问号换成:Param参数
+        /// </summary>
+        /// <param name="SQL"></param>
+        public void CheckSQL(string SQL)
+        {
+            SQL = SQL.Replace("?", ":Param");
+            command = new OleDbCommand(SQL, this._odcConnection);
+            command.ExecuteNonQuery();
+            command.Dispose();
+        }
+
+        public int GetDistinctRowCount(string TableName, string Field)
+        {
+            DataTable dt = new DataTable();
+            string sql = "select distinct count('" + Field + "') from " + TableName;
+            command = new OleDbCommand(sql, this._odcConnection);
+            Reconnect(command);
+            OleDbDataAdapter ad = new OleDbDataAdapter(command);
+            try
+            {
+                ad.Fill(dt);
+            }
+            catch (Exception)
+            {
+                this._odcConnection = new OleDbConnection(this._connectionString);
+                this._odcConnection.Open();
+                command = new OleDbCommand(sql, this._odcConnection);
+                ad = new OleDbDataAdapter();
+                ad.SelectCommand = command;
+                ad.Fill(dt);
+            }
+            ad.Dispose();
+            command.Dispose();
+            return int.Parse(dt.Rows[0][0].ToString());
+        }
+
+        /// <summary>
+        /// 根据Caller获取流水号
+        /// </summary>
+        /// <param name="Caller"></param>
+        /// <returns></returns>
+        public string GetSerialNumberByCaller(string Caller)
+        {
+            string SerialNumber = getFieldDataByCondition("MaxNumbers", "mn_number", "mn_tablename='" + Caller + "'").ToString();
+            UpdateByCondition("MaxNumbers", "mn_number=mn_number+1", "mn_tablename='" + Caller + "'");
+            return SerialNumber;
+        }
+
+        /// <summary>
+        /// 通过序列的名称获取序列
+        /// </summary>
+        /// <param name="SeqName"></param>
+        /// <returns></returns>
+        public string GetSEQ(string SeqName)
+        {
+            DataTable dt = new DataTable();
+            dt = (DataTable)ExecuteSql("SELECT " + SeqName + ".NEXTVAL FROM DUAL", "select");
+            return dt.Rows[0][0].ToString();
+        }
+
+        /// <summary>
+        /// 通过序列的名称获取序列
+        /// </summary>
+        /// <param name="SeqName"></param>
+        /// <returns></returns>
+        public string[] GetSEQ(string SeqName, int Num)
+        {
+            DataTable dt = new DataTable();
+            dt = (DataTable)ExecuteSql("SELECT " + SeqName + ".nextval  FROM DUAL CONNECT BY LEVEL<=" + Num, "select");
+            string[] SerialNum = new string[dt.Rows.Count];
+            for (int i = 0; i < dt.Rows.Count; i++)
+            {
+                SerialNum[i] = dt.Rows[i][0].ToString();
+            }
+            return SerialNum;
+        }
+
+        public void SaveDataTable(DataTable dt, string TableName, string ID, params string[] sql)
+        {
+            if (dt == null)
+            {
+                return;
+            }
+            StringBuilder sb = new StringBuilder();
+            //预防插入的DataTable中存在不属于该表的列,在进行下一步操作之前全部剔除
+            DataTable data = (DataTable)ExecuteSql("select Column_Name,Data_Type from cols where TABLE_name=upper('" + TableName + "')", "select");
+            //将所有的字段拼接起来
+            for (int i = 0; i < data.Rows.Count; i++)
+            {
+                sb.Append("#" + data.Rows[i]["Column_Name"].ToString());
+            }
+            //移除掉所有不属于该表的列
+            for (int i = dt.Columns.Count - 1; i >= 0; i--)
+            {
+                if (!sb.ToString().Contains(dt.Columns[i].ColumnName.ToUpper()))
+                {
+                    dt.Columns.RemoveAt(i);
+                }
+            }
+            sb.Clear();
+            //计算有多少个是新加的行,根据主键为空来进行判断
+            int NewRowCount = 0;
+            for (int i = 0; i < dt.Rows.Count; i++)
+            {
+                if (dt.Rows[i][ID] == null || dt.Rows[i][ID].ToString() == "")
+                {
+                    NewRowCount = NewRowCount + 1;
+                }
+            }
+            if (sql.Length > 0)
+            {
+                if (NewRowCount > 0)
+                {
+                    //获取参数的个数
+                    int paramsNum = sql[0].Split(':').Length - 1;
+                    //解析参数的数据
+                    string[] param = GetParamFromSQL(sql[0]);
+                    //新建一个二维数组去
+                    string[][] param_array = new string[paramsNum][];
+                    //实例化每个一维数组
+                    for (int i = 0; i < paramsNum; i++)
+                    {
+                        param_array[i] = new string[NewRowCount];
+                    }
+                    //设置每列参数的索引
+                    int num = 0;
+                    //变量所有的行,如果有主键为空的则移除,不为空的进行参数的拼接
+                    for (int i = dt.Rows.Count - 1; i >= 0; i--)
+                    {
+                        if (dt.Rows[i][ID] == null || dt.Rows[i][ID].ToString() == "")
+                        {
+                            //当为新添加行的时候才去设置参数,设置过后索引+1
+                            for (int j = 0; j < paramsNum; j++)
+                            {
+                                param_array[j][num] = dt.Rows[i][param[j]].ToString();
+                            }
+                            dt.Rows.RemoveAt(i);
+                            num++;
+                        }
+                    }
+                    BatchInsertDataTable(sql[0], param, param_array);
+                }
+            }
+            sb.Clear();
+            sb.Append("update " + TableName + " set ");
+            int ColumnCount = dt.Columns.Count;
+            int RowCount = dt.Rows.Count;
+            //存数据的参数
+            List<string[]> Parameter = new List<string[]>();
+            //存参数名的参数
+            string[] ParName = new string[ColumnCount];
+            for (int i = 0; i < ColumnCount; i++)
+            {
+                ParName[i] = dt.Columns[i].ColumnName;
+                if (i == dt.Columns.Count - 1)
+                    sb.Append(dt.Columns[i].ColumnName + "=:" + dt.Columns[i].ColumnName);
+                else
+                    sb.Append(dt.Columns[i].ColumnName + "=:" + dt.Columns[i].ColumnName + ",");
+            }
+            sb.Append(" where " + ID + " =:" + ID);
+            //先添加参数
+            Parameter.Add(ParName);
+            //添加参数的具体内容
+            for (int i = 0; i < ColumnCount; i++)
+            {
+                string[] par = new string[RowCount];
+                for (int j = 0; j < RowCount; j++)
+                {
+                    par[j] = dt.Rows[j][i].ToString();
+                }
+                Parameter.Add(par);
+            }
+            BatchInsert(sb.ToString(), Parameter.ToArray());
+        }
+
+        /// <summary>
+        /// 批量通过SQL来执行插入操作 ,参数的第一个数一个string[]数组,用来传递需要添加的参数的名称
+        /// 之后的是名称参数数组对应的 ,所有的插入参数数据长度必须是一致的
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="names"></param>
+        public void BatchInsert(string sql, params object[][] names)
+        {
+            command = new OleDbCommand(sql, this._odcConnection);
+            Reconnect(command);
+            //因为第一个数组保存的是参数的名称,所以循环从1而不是0开始
+            //将第一个数组的下标固定为0作为循环添加的参数的名称
+            for (int i = 1; i <= names[0].Length; i++)
+            {
+                command.Parameters.Add(new OleDbParameter(names[0][i - 1].ToString(),names[i]));
+            }
+            try
+            {
+                command.ExecuteNonQuery();
+            }
+            catch (Exception)
+            {
+                command.Connection = new OleDbConnection(this._connectionString);
+                command.Connection.Open();
+                command.ExecuteNonQuery();
+            }
+            command.Dispose();
+        }
+
+        public void BatchInsertDataTable(string sql, string[] param, params object[][] param1)
+        {
+            command = new OleDbCommand(sql, this._odcConnection);
+            Reconnect(command);
+            //因为第一个数组保存的是参数的名称,所以循环从1而不是0开始
+            //将第一个数组的下标固定为0作为循环添加的参数的名称
+            for (int i = 0; i < param.Length; i++)
+            {
+                command.Parameters.Add(new OleDbParameter(param[i].ToString(),param1[i]));
+            }
+            try
+            {
+                command.ExecuteNonQuery();
+            }
+            catch (Exception)
+            {
+                command.Connection = new OleDbConnection(this._connectionString);
+                command.Connection.Open();
+                command.ExecuteNonQuery();
+            }
+            command.Dispose();
+        }
+
+        /// <summary>
+        /// 取Configs表中的配置,进行该客户是否执行某个操作
+        /// </summary>
+        /// <param name="Code"></param>
+        /// <param name="Caller"></param>
+        /// <returns></returns>
+        public object GetConfig(string Code, string Caller)
+        {
+            DataTable dt = new DataTable();
+            string sql = "select Data from configs where code='" + Code + "' and caller='" + Caller + "'";
+            dt = (DataTable)ExecuteSql(sql, "select");
+            if (dt.Rows.Count == 0)
+            {
+                return "";
+            }
+            else
+            {
+                return dt.Rows[0]["Data"];
+            }
+        }
+
+
+        //将数据类型的列类型转换为DataTable
+        public DataTable DataTypeColumnToDataTable(DataTable dt)
+        {
+            DataTable dt1 = new DataTable();
+            dt1.Rows.Add();
+            foreach (DataRow dr in dt.Rows)
+            {
+                dt1.Columns.Add(dr[0].ToString());
+                int index = dt.Rows.IndexOf(dr);
+                if (dr[1].ToString() == "NUMBER")
+                {
+                    dt1.Rows[0][index] = 0;
+                }
+                if (dr[1].ToString() == "VARCHAR2")
+                {
+                    dt1.Rows[0][index] = "这是一段文字";
+                }
+                if (dr[1].ToString() == "DATE")
+                {
+                    dt1.Rows[0][index] = DateTime.Now.ToString("yyyy-MM-dd");
+                }
+                if (dr[1].ToString() == "FLOAT")
+                {
+                    dt1.Rows[0][index] = 1.0;
+                }
+                if (dr[1].ToString() == "CLOB")
+                {
+                    dt1.Rows[0][index] = "一段长文字";
+                }
+            }
+            return dt1;
+        }
+
+
+        /// <summary>
+        /// 通过条件更新
+        /// </summary>
+        /// <param name="TableName"></param>
+        /// <param name="update"></param>
+        /// <param name="condition"></param>
+        public string UpdateByCondition(string TableName, string update, string condition)
+        {
+            string sql = "update " + TableName + " set " + update + " where " + condition;
+            command = new OleDbCommand(sql, this._odcConnection);
+
+            Reconnect(command);
+            try
+            {
+                command.ExecuteNonQuery();
+            }
+            catch (Exception)
+            {
+                command.Connection = new OleDbConnection(this._connectionString);
+                command.Connection.Open();
+                command.ExecuteNonQuery();
+            }
+            command.Dispose();
+            return sql;
+        }
+
+        /// <summary>
+        /// 调用存储过程
+        /// </summary>
+        /// <param name="ProcedureName"></param>    
+        /// <param name="param"></param>
+        public void CallProcedure(string ProcedureName, ref string[] param)
+        {
+            command = new OleDbCommand(ProcedureName);
+            command.Connection = this._odcConnection;
+            Reconnect(command);
+            command.CommandText = ProcedureName;
+            command.CommandType = CommandType.StoredProcedure;
+            for (int i = 0; i < param.Length; i++)
+                command.Parameters.Add(new OleDbParameter(param[i].ToString(), OleDbType.VarChar, 200, param[i]));
+            try
+            {
+                command.ExecuteNonQuery();
+            }
+            catch (Exception)
+            {
+                command.Connection = new OleDbConnection(this._connectionString);
+                command.Connection.Open();
+                command.ExecuteNonQuery();
+            }
+            for (int i = 0; i < command.Parameters.Count; i++)
+                param[i] = command.Parameters[i].Value.ToString();
+            command.Dispose();
+        }
+
+        /// <summary>
+        /// 出现异常进行回滚的执行方法
+        /// </summary>
+        /// <param name="SQL"></param>
+        public void ExecuteSQLTran(params string[] SQL)
+        {
+            OleDbTransaction tx = this._odcConnection.BeginTransaction();
+            command = new OleDbCommand();
+            command.Connection = this._odcConnection;
+            command.Transaction = tx;
+            try
+            {
+                foreach (string sql in SQL)
+                {
+
+                    if (!String.IsNullOrEmpty(sql))
+                    {
+                        command.CommandText = sql;
+                        try
+                        {
+                            command.ExecuteNonQuery();
+                        }
+                        catch (Exception)
+                        {
+                            command.Connection = new OleDbConnection(this._connectionString);
+                            command.Connection.Open();
+                            command.ExecuteNonQuery();
+                        }
+                    }
+                }
+                tx.Commit();
+            }
+            catch (Exception E)
+            {
+                tx.Rollback();
+                throw new Exception(E.Message);
+            }
+            command.Dispose();
+        }
+
+        /// <summary>
+        /// 用于将string 的数组转换成SQL的查询内容
+        /// </summary>
+        /// <param name="Fields"></param>
+        /// <returns></returns>
+        private string AddField(string[] Fields)
+        {
+            string sql = " ";
+            foreach (string field in Fields)
+            {
+                sql += field + ",";
+            }
+            return sql.Substring(0, sql.Length - 1);
+        }
+        /// <summary>
+        /// 通过查询的内容获取到字段的描述
+        /// </summary>
+        /// <param name="field"></param>
+        /// <returns></returns>
+        private static string[] GetCaptionFromField(string field)
+        {
+            string[] caption = field.Split(',');
+            for (int i = 0; i < caption.Length; i++)
+            {
+                caption[i] = caption[i].Substring(0, caption[i].LastIndexOf("as")).Trim();
+            }
+            return caption;
+        }
+
+        /// <summary>
+        /// 通过查询的语句获取查询的字段
+        /// </summary>
+        /// <param name="field"></param>
+        /// <returns></returns>
+        private static string[] GetField(string field)
+        {
+            string[] fields = field.Split(',');
+            for (int i = 0; i < fields.Length; i++)
+            {
+                fields[i] = fields[i].Substring(fields[i].LastIndexOf("as") + 2, fields[i].Length - fields[i].LastIndexOf("as") - 2).Trim();
+            }
+            return fields;
+        }
+
+        public object GetLabelParam(string sql)
+        {
+            DataTable dt = new DataTable();
+            command = new OleDbCommand(sql, this._odcConnection);
+            Reconnect(command);
+            OleDbDataAdapter ad = new OleDbDataAdapter();
+            ad.SelectCommand = command;
+            try
+            {
+                ad.Fill(dt);
+            }
+            catch (Exception)
+            {
+                this._odcConnection = new OleDbConnection(this._connectionString);
+                this._odcConnection.Open();
+                command = new OleDbCommand(sql, this._odcConnection);
+                ad = new OleDbDataAdapter();
+                ad.SelectCommand = command;
+                ad.Fill(dt);
+            }
+            if (dt.Rows.Count > 0)
+            {
+                ad.Dispose();
+                command.Dispose();
+                return dt.Rows[0][0];
+            }
+            else
+            {
+                command.Dispose();
+                return "";
+            }
+        }
+
+        public static string[] GetParamFromSQL(string SQL)
+        {
+            string[] par = SQL.Split(':');
+            //用来存参数的数组
+            StringBuilder[] addpar = new StringBuilder[par.Length - 1];
+            string[] param = new string[par.Length - 1];
+            for (int i = 0; i < par.Length - 1; i++)
+            {
+                //新建一个char类型的数组用来存储每个字节的变量
+                char[] c = par[i + 1].ToCharArray();
+                addpar[i] = new StringBuilder();
+
+                for (int j = 0; j < c.Length; j++)
+                {
+                    if (c[j] != ' ' && c[j] != ',' && c[j] != ')')
+                    {
+                        addpar[i].Append(c[j]);
+                    }
+                    else
+                    {
+                        break;
+                    }
+                }
+            }
+            for (int i = 0; i < par.Length - 1; i++)
+            {
+                param[i] = addpar[i].ToString();
+            }
+            return param;
+        }
+    }
+}

+ 14 - 9
UAS-MES/FunctionCode/Make/Make_BigBoxCollection.cs

@@ -255,7 +255,7 @@ namespace UAS_MES.Make
                         string error;
                         if (int.Parse(pa_totalqty.Text == "" ? "0" : pa_totalqty.Text) > 0)
                         {
-                            if (!LogicHandler.CheckPackRule(pr_packrule.Text, pa_outboxcode.Text, outboxcode.Text, pa_makecode.Text, pa_custcode.Text, pa_prodcode.Text, "大箱", out error))
+                            if (!LogicHandler.CheckPackRule(pr_packrule.Text, pa_outboxcode.Text, outboxcode.Text, pa_makecode.Text, pa_salecode.Text, pa_prodcode.Text, "大箱", out error))
                             {
                                 OperateResult.AppendText(">>" + error + "\n", Color.Red, outboxcode);
                                 return;
@@ -299,12 +299,12 @@ namespace UAS_MES.Make
                                         pa_makecode.Text = carton_macode;
                                         dh.ExecuteSql("update package set pa_makecode='" + carton_macode + "' where pa_outboxcode='" + pa_outboxcode.Text + "'", "update");
                                     }
-                                  
+
                                     //如果是线内并且下一工序等于当前岗位资源工序
                                     if (pa_nextstep != "" && pa_nextstep == User.CurrentStepCode)
                                     {
                                         LogicHandler.OutBoxStepPass(outboxcode.Text, pa_makecode.Text, User.UserSourceCode, User.UserCode, "栈板采集成功,栈板号:" + pa_outboxcode.Text, "栈板采集");
-                                    }                
+                                    }
                                     //更新箱号的NextStepCode
                                     if (pa_totalqty.Text == "1")
                                     {
@@ -320,8 +320,11 @@ namespace UAS_MES.Make
                                     {
                                         dh.ExecuteSql("update package set pa_status=1 where pa_outboxcode='" + pa_outboxcode.Text + "'", "update");
                                         OperateResult.AppendText("大箱" + pa_outboxcode.Text + "已装满,封箱成功");
-                                        pa_outboxcode.Focus();
-                                        pa_outboxcode.SelectAll();
+                                        if (!AutoOutBoxCode.Checked)
+                                        {
+                                            pa_outboxcode.Focus();
+                                            pa_outboxcode.SelectAll();
+                                        }
                                         if (AutoPrint.Checked)
                                         {
                                             OperateResult.AppendText(">>箱已装满,自动打印!\n", Color.Green);
@@ -429,8 +432,7 @@ namespace UAS_MES.Make
             {
                 if (dh.getFieldDataByCondition("package", "pa_status", "pa_outboxcode='" + pa_outboxcode.Text + "'").ToString() == "1")
                 {
-                   // doc = lbl.Documents.Open(ftpOperater.DownLoadTo + PrintLabel.Text);
-                    if (Print.CodeSoft(Tag.ToString(),ref lbl, PrintLabel.Text, PrintLabel.SelectedValue.ToString(), PrinterList.Text, pa_outboxcode.Text, int.Parse(PrintNum.Text), pa_makecode.Text, pa_prodcode.Text, "大箱标", "0", out ErrorMessage))
+                    if (Print.CodeSoft(Tag.ToString(), ref lbl, PrintLabel.Text, PrintLabel.SelectedValue.ToString(), PrinterList.Text, pa_outboxcode.Text, int.Parse(PrintNum.Text), pa_makecode.Text, pa_prodcode.Text, "大箱标", "0", out ErrorMessage))
                     {
                         OperateResult.AppendText(">>打印箱号" + pa_outboxcode.Text + "\n", Color.Black);
                     }
@@ -438,8 +440,11 @@ namespace UAS_MES.Make
                     {
                         OperateResult.AppendText(ErrorMessage + "\n", Color.Red);
                     }
-                    pa_outboxcode.Focus();
-                    pa_outboxcode.SelectAll();
+                    if (!AutoOutBoxCode.Checked)
+                    {
+                        pa_outboxcode.Focus();
+                        pa_outboxcode.SelectAll();
+                    }
                 }
                 else OperateResult.AppendText(">>必须封箱才能进行打印\n", Color.Red);
             }

+ 0 - 1
UAS-MES/FunctionCode/Make/Make_CheckNoRelpace.cs

@@ -60,7 +60,6 @@ namespace UAS_MES.Make
                      
                     }
                     //记录MakeProcess和一般的操作日志
-                    LogicHandler.InsertMessageLog(User.UserName, "变更序列号,备注:" + ReplaceReason.Text, "变更成功", "MakeSerial|ms_sncode=" + new_sncode.Text, "");
                     LogicHandler.InsertMakeProcess(new_sncode.Text, dh.getFieldDataByCondition("MakeSerial", "ms_makecode", "ms_sncode='" + new_sncode.Text + "'").ToString(),User.UserSourceCode,"序列号转换操作", "变更序列号成功,备注:" + ReplaceReason.Text, User.UserName);
                     OperateResult.AppendText(">>序列号" + old_sncode.Text + "已成功替换为" + new_sncode.Text + "\n", Color.Green);
                 }

+ 1 - 1
UAS-MES/FunctionCode/Make/Make_ColorBoxLabelPrint.cs

@@ -148,7 +148,7 @@ namespace UAS_MES.Make
                 if (CheckTSN.Checked == true && ms_id != null)
                 {
                     sql.Clear();
-                    sql.Append("select ms_id from makeserial where ms_id='" + ms_id + "'");
+                    sql.Append("select ms_id from makeserial where ms_id='" + ms_id + "' and ms_sncode = '"+sncode.Text+"'");
                     dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
                     if (dt.Rows.Count > 0)
                     {

+ 157 - 215
UAS-MES/FunctionCode/Make/Make_PackageCollection.Designer.cs

@@ -113,10 +113,9 @@
             // 
             this.pa_makecode.AutoSize = true;
             this.pa_makecode.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_makecode.Location = new System.Drawing.Point(1108, 534);
-            this.pa_makecode.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_makecode.Location = new System.Drawing.Point(831, 427);
             this.pa_makecode.Name = "pa_makecode";
-            this.pa_makecode.Size = new System.Drawing.Size(0, 27);
+            this.pa_makecode.Size = new System.Drawing.Size(0, 21);
             this.pa_makecode.TabIndex = 76;
             this.pa_makecode.Visible = false;
             // 
@@ -125,10 +124,9 @@
             this.label13.AutoSize = true;
             this.label13.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.label13.ForeColor = System.Drawing.Color.Black;
-            this.label13.Location = new System.Drawing.Point(9, 692);
-            this.label13.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.label13.Location = new System.Drawing.Point(7, 554);
             this.label13.Name = "label13";
-            this.label13.Size = new System.Drawing.Size(72, 27);
+            this.label13.Size = new System.Drawing.Size(58, 21);
             this.label13.TabIndex = 105;
             this.label13.Text = "序列号";
             // 
@@ -136,10 +134,9 @@
             // 
             this.Cancel.AutoSize = true;
             this.Cancel.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.Cancel.Location = new System.Drawing.Point(372, 692);
-            this.Cancel.Margin = new System.Windows.Forms.Padding(4);
+            this.Cancel.Location = new System.Drawing.Point(279, 554);
             this.Cancel.Name = "Cancel";
-            this.Cancel.Size = new System.Drawing.Size(114, 31);
+            this.Cancel.Size = new System.Drawing.Size(93, 25);
             this.Cancel.TabIndex = 129;
             this.Cancel.Text = "取消装箱";
             this.Cancel.UseVisualStyleBackColor = true;
@@ -148,10 +145,9 @@
             // 
             this.pa_id.AutoSize = true;
             this.pa_id.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_id.Location = new System.Drawing.Point(1065, 534);
-            this.pa_id.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_id.Location = new System.Drawing.Point(799, 427);
             this.pa_id.Name = "pa_id";
-            this.pa_id.Size = new System.Drawing.Size(0, 27);
+            this.pa_id.Size = new System.Drawing.Size(0, 21);
             this.pa_id.TabIndex = 153;
             this.pa_id.Visible = false;
             // 
@@ -159,10 +155,9 @@
             // 
             this.pr_packrule.AutoSize = true;
             this.pr_packrule.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pr_packrule.Location = new System.Drawing.Point(1132, 522);
-            this.pr_packrule.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pr_packrule.Location = new System.Drawing.Point(849, 418);
             this.pr_packrule.Name = "pr_packrule";
-            this.pr_packrule.Size = new System.Drawing.Size(0, 27);
+            this.pr_packrule.Size = new System.Drawing.Size(0, 21);
             this.pr_packrule.TabIndex = 173;
             this.pr_packrule.Visible = false;
             // 
@@ -170,10 +165,9 @@
             // 
             this.pa_status.AutoSize = true;
             this.pa_status.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_status.Location = new System.Drawing.Point(1040, 570);
-            this.pa_status.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_status.Location = new System.Drawing.Point(780, 456);
             this.pa_status.Name = "pa_status";
-            this.pa_status.Size = new System.Drawing.Size(0, 27);
+            this.pa_status.Size = new System.Drawing.Size(0, 21);
             this.pa_status.TabIndex = 174;
             this.pa_status.Visible = false;
             // 
@@ -181,10 +175,9 @@
             // 
             this.pa_sccode.AutoSize = true;
             this.pa_sccode.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_sccode.Location = new System.Drawing.Point(1108, 570);
-            this.pa_sccode.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_sccode.Location = new System.Drawing.Point(831, 456);
             this.pa_sccode.Name = "pa_sccode";
-            this.pa_sccode.Size = new System.Drawing.Size(0, 27);
+            this.pa_sccode.Size = new System.Drawing.Size(0, 21);
             this.pa_sccode.TabIndex = 176;
             this.pa_sccode.Visible = false;
             // 
@@ -192,10 +185,9 @@
             // 
             this.pa_checkno.AutoSize = true;
             this.pa_checkno.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_checkno.Location = new System.Drawing.Point(1100, 570);
-            this.pa_checkno.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_checkno.Location = new System.Drawing.Point(825, 456);
             this.pa_checkno.Name = "pa_checkno";
-            this.pa_checkno.Size = new System.Drawing.Size(0, 27);
+            this.pa_checkno.Size = new System.Drawing.Size(0, 21);
             this.pa_checkno.TabIndex = 177;
             this.pa_checkno.Visible = false;
             // 
@@ -203,10 +195,9 @@
             // 
             this.pa_downstatus.AutoSize = true;
             this.pa_downstatus.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_downstatus.Location = new System.Drawing.Point(1116, 570);
-            this.pa_downstatus.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_downstatus.Location = new System.Drawing.Point(837, 456);
             this.pa_downstatus.Name = "pa_downstatus";
-            this.pa_downstatus.Size = new System.Drawing.Size(0, 27);
+            this.pa_downstatus.Size = new System.Drawing.Size(0, 21);
             this.pa_downstatus.TabIndex = 178;
             this.pa_downstatus.Visible = false;
             // 
@@ -214,10 +205,9 @@
             // 
             this.pa_standardqty.AutoSize = true;
             this.pa_standardqty.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_standardqty.Location = new System.Drawing.Point(1132, 588);
-            this.pa_standardqty.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_standardqty.Location = new System.Drawing.Point(849, 470);
             this.pa_standardqty.Name = "pa_standardqty";
-            this.pa_standardqty.Size = new System.Drawing.Size(0, 27);
+            this.pa_standardqty.Size = new System.Drawing.Size(0, 21);
             this.pa_standardqty.TabIndex = 180;
             this.pa_standardqty.Visible = false;
             // 
@@ -225,10 +215,9 @@
             // 
             this.pr_sendchecktype.AutoSize = true;
             this.pr_sendchecktype.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pr_sendchecktype.Location = new System.Drawing.Point(945, 546);
-            this.pr_sendchecktype.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pr_sendchecktype.Location = new System.Drawing.Point(709, 437);
             this.pr_sendchecktype.Name = "pr_sendchecktype";
-            this.pr_sendchecktype.Size = new System.Drawing.Size(0, 27);
+            this.pr_sendchecktype.Size = new System.Drawing.Size(0, 21);
             this.pr_sendchecktype.TabIndex = 182;
             this.pr_sendchecktype.Visible = false;
             // 
@@ -236,10 +225,9 @@
             // 
             this.mcd_remainqty_label.AutoSize = true;
             this.mcd_remainqty_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.mcd_remainqty_label.Location = new System.Drawing.Point(629, 588);
-            this.mcd_remainqty_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.mcd_remainqty_label.Location = new System.Drawing.Point(472, 470);
             this.mcd_remainqty_label.Name = "mcd_remainqty_label";
-            this.mcd_remainqty_label.Size = new System.Drawing.Size(92, 27);
+            this.mcd_remainqty_label.Size = new System.Drawing.Size(74, 21);
             this.mcd_remainqty_label.TabIndex = 196;
             this.mcd_remainqty_label.Text = "待采集数";
             // 
@@ -247,20 +235,18 @@
             // 
             this.mcd_remainqty.AutoSize = true;
             this.mcd_remainqty.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.mcd_remainqty.Location = new System.Drawing.Point(739, 588);
-            this.mcd_remainqty.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.mcd_remainqty.Location = new System.Drawing.Point(554, 470);
             this.mcd_remainqty.Name = "mcd_remainqty";
-            this.mcd_remainqty.Size = new System.Drawing.Size(0, 27);
+            this.mcd_remainqty.Size = new System.Drawing.Size(0, 21);
             this.mcd_remainqty.TabIndex = 197;
             // 
             // mcd_inqty_label
             // 
             this.mcd_inqty_label.AutoSize = true;
             this.mcd_inqty_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.mcd_inqty_label.Location = new System.Drawing.Point(629, 548);
-            this.mcd_inqty_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.mcd_inqty_label.Location = new System.Drawing.Point(472, 438);
             this.mcd_inqty_label.Name = "mcd_inqty_label";
-            this.mcd_inqty_label.Size = new System.Drawing.Size(92, 27);
+            this.mcd_inqty_label.Size = new System.Drawing.Size(74, 21);
             this.mcd_inqty_label.TabIndex = 194;
             this.mcd_inqty_label.Text = "已采集数";
             // 
@@ -268,30 +254,27 @@
             // 
             this.mcd_inqty.AutoSize = true;
             this.mcd_inqty.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.mcd_inqty.Location = new System.Drawing.Point(739, 548);
-            this.mcd_inqty.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.mcd_inqty.Location = new System.Drawing.Point(554, 438);
             this.mcd_inqty.Name = "mcd_inqty";
-            this.mcd_inqty.Size = new System.Drawing.Size(0, 27);
+            this.mcd_inqty.Size = new System.Drawing.Size(0, 21);
             this.mcd_inqty.TabIndex = 195;
             // 
             // pa_remark_label
             // 
             this.pa_remark_label.AutoSize = true;
             this.pa_remark_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_remark_label.Location = new System.Drawing.Point(629, 625);
-            this.pa_remark_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_remark_label.Location = new System.Drawing.Point(472, 500);
             this.pa_remark_label.Name = "pa_remark_label";
-            this.pa_remark_label.Size = new System.Drawing.Size(52, 27);
+            this.pa_remark_label.Size = new System.Drawing.Size(42, 21);
             this.pa_remark_label.TabIndex = 198;
             this.pa_remark_label.Text = "备注";
             // 
             // CollecRemark
             // 
             this.CollecRemark.AutoSize = true;
-            this.CollecRemark.Location = new System.Drawing.Point(689, 696);
-            this.CollecRemark.Margin = new System.Windows.Forms.Padding(4);
+            this.CollecRemark.Location = new System.Drawing.Point(517, 557);
             this.CollecRemark.Name = "CollecRemark";
-            this.CollecRemark.Size = new System.Drawing.Size(119, 19);
+            this.CollecRemark.Size = new System.Drawing.Size(96, 16);
             this.CollecRemark.TabIndex = 201;
             this.CollecRemark.Text = "采集备注信息";
             this.CollecRemark.UseVisualStyleBackColor = true;
@@ -301,12 +284,12 @@
             this.pa_remark.AllPower = null;
             this.pa_remark.BackColor = System.Drawing.Color.White;
             this.pa_remark.ID = null;
-            this.pa_remark.Location = new System.Drawing.Point(689, 628);
-            this.pa_remark.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.pa_remark.Location = new System.Drawing.Point(517, 502);
+            this.pa_remark.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.pa_remark.Multiline = true;
             this.pa_remark.Name = "pa_remark";
             this.pa_remark.Power = null;
-            this.pa_remark.Size = new System.Drawing.Size(196, 56);
+            this.pa_remark.Size = new System.Drawing.Size(148, 46);
             this.pa_remark.Str = null;
             this.pa_remark.Str1 = null;
             this.pa_remark.Str2 = null;
@@ -335,11 +318,11 @@
             this.groupBoxWithBorder2.Controls.Add(this.PrintList_label);
             this.groupBoxWithBorder2.Controls.Add(this.PrintNum_label);
             this.groupBoxWithBorder2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.groupBoxWithBorder2.Location = new System.Drawing.Point(565, 8);
-            this.groupBoxWithBorder2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.groupBoxWithBorder2.Location = new System.Drawing.Point(424, 6);
+            this.groupBoxWithBorder2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.groupBoxWithBorder2.Name = "groupBoxWithBorder2";
-            this.groupBoxWithBorder2.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
-            this.groupBoxWithBorder2.Size = new System.Drawing.Size(595, 210);
+            this.groupBoxWithBorder2.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
+            this.groupBoxWithBorder2.Size = new System.Drawing.Size(446, 168);
             this.groupBoxWithBorder2.TabIndex = 172;
             this.groupBoxWithBorder2.TabStop = false;
             this.groupBoxWithBorder2.Text = "打印";
@@ -352,11 +335,10 @@
             this.PrintNum.Enabled = false;
             this.PrintNum.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.PrintNum.ID = null;
-            this.PrintNum.Location = new System.Drawing.Point(340, 163);
-            this.PrintNum.Margin = new System.Windows.Forms.Padding(4);
+            this.PrintNum.Location = new System.Drawing.Point(255, 130);
             this.PrintNum.Name = "PrintNum";
             this.PrintNum.Power = null;
-            this.PrintNum.Size = new System.Drawing.Size(40, 27);
+            this.PrintNum.Size = new System.Drawing.Size(31, 23);
             this.PrintNum.Str = null;
             this.PrintNum.Str1 = null;
             this.PrintNum.Str2 = null;
@@ -366,20 +348,19 @@
             // 
             this.label1.AutoSize = true;
             this.label1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.label1.Location = new System.Drawing.Point(356, 21);
-            this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.label1.Location = new System.Drawing.Point(267, 16);
             this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(92, 27);
+            this.label1.Size = new System.Drawing.Size(74, 21);
             this.label1.TabIndex = 181;
             this.label1.Text = "当前批号";
             // 
             // StepCount
             // 
             this.StepCount.LineCode = null;
-            this.StepCount.Location = new System.Drawing.Point(163, 23);
-            this.StepCount.Margin = new System.Windows.Forms.Padding(4, 9, 4, 9);
+            this.StepCount.Location = new System.Drawing.Point(122, 18);
+            this.StepCount.Margin = new System.Windows.Forms.Padding(3, 7, 3, 7);
             this.StepCount.Name = "StepCount";
-            this.StepCount.Size = new System.Drawing.Size(84, 29);
+            this.StepCount.Size = new System.Drawing.Size(63, 23);
             this.StepCount.Source = null;
             this.StepCount.StepCode = null;
             this.StepCount.TabIndex = 193;
@@ -389,41 +370,37 @@
             this.checkweightlabel.AutoSize = true;
             this.checkweightlabel.CutLength = null;
             this.checkweightlabel.ForeColor = System.Drawing.Color.Red;
-            this.checkweightlabel.Location = new System.Drawing.Point(152, 2);
-            this.checkweightlabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
-            this.checkweightlabel.MaximumSize = new System.Drawing.Size(267, 0);
+            this.checkweightlabel.Location = new System.Drawing.Point(114, 1);
+            this.checkweightlabel.MaximumSize = new System.Drawing.Size(200, 0);
             this.checkweightlabel.Name = "checkweightlabel";
-            this.checkweightlabel.Size = new System.Drawing.Size(0, 27);
+            this.checkweightlabel.Size = new System.Drawing.Size(0, 21);
             this.checkweightlabel.TabIndex = 180;
             // 
             // ob_nowcheckqty
             // 
             this.ob_nowcheckqty.AutoSize = true;
             this.ob_nowcheckqty.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ob_nowcheckqty.Location = new System.Drawing.Point(464, 112);
-            this.ob_nowcheckqty.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.ob_nowcheckqty.Location = new System.Drawing.Point(348, 89);
             this.ob_nowcheckqty.Name = "ob_nowcheckqty";
-            this.ob_nowcheckqty.Size = new System.Drawing.Size(0, 27);
+            this.ob_nowcheckqty.Size = new System.Drawing.Size(0, 21);
             this.ob_nowcheckqty.TabIndex = 178;
             // 
             // ob_batchqty
             // 
             this.ob_batchqty.AutoSize = true;
             this.ob_batchqty.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ob_batchqty.Location = new System.Drawing.Point(464, 65);
-            this.ob_batchqty.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.ob_batchqty.Location = new System.Drawing.Point(348, 51);
             this.ob_batchqty.Name = "ob_batchqty";
-            this.ob_batchqty.Size = new System.Drawing.Size(0, 27);
+            this.ob_batchqty.Size = new System.Drawing.Size(0, 21);
             this.ob_batchqty.TabIndex = 177;
             // 
             // ob_nowcheckqty_label
             // 
             this.ob_nowcheckqty_label.AutoSize = true;
             this.ob_nowcheckqty_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ob_nowcheckqty_label.Location = new System.Drawing.Point(356, 112);
-            this.ob_nowcheckqty_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.ob_nowcheckqty_label.Location = new System.Drawing.Point(267, 89);
             this.ob_nowcheckqty_label.Name = "ob_nowcheckqty_label";
-            this.ob_nowcheckqty_label.Size = new System.Drawing.Size(92, 27);
+            this.ob_nowcheckqty_label.Size = new System.Drawing.Size(74, 21);
             this.ob_nowcheckqty_label.TabIndex = 176;
             this.ob_nowcheckqty_label.Text = "当前批数";
             // 
@@ -431,10 +408,9 @@
             // 
             this.ob_batchqty_label.AutoSize = true;
             this.ob_batchqty_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ob_batchqty_label.Location = new System.Drawing.Point(356, 67);
-            this.ob_batchqty_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.ob_batchqty_label.Location = new System.Drawing.Point(267, 53);
             this.ob_batchqty_label.Name = "ob_batchqty_label";
-            this.ob_batchqty_label.Size = new System.Drawing.Size(92, 27);
+            this.ob_batchqty_label.Size = new System.Drawing.Size(74, 21);
             this.ob_batchqty_label.TabIndex = 175;
             this.ob_batchqty_label.Text = "标准批数";
             // 
@@ -442,10 +418,9 @@
             // 
             this.ob_checkno.AutoSize = true;
             this.ob_checkno.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ob_checkno.Location = new System.Drawing.Point(464, 21);
-            this.ob_checkno.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.ob_checkno.Location = new System.Drawing.Point(348, 16);
             this.ob_checkno.Name = "ob_checkno";
-            this.ob_checkno.Size = new System.Drawing.Size(0, 27);
+            this.ob_checkno.Size = new System.Drawing.Size(0, 21);
             this.ob_checkno.TabIndex = 175;
             this.ob_checkno.TextChanged += new System.EventHandler(this.ob_checkno_TextChanged);
             // 
@@ -458,13 +433,12 @@
             this.SendCheck.Font = new System.Drawing.Font("微软雅黑", 9F);
             this.SendCheck.Image = null;
             this.SendCheck.IsShowBorder = true;
-            this.SendCheck.Location = new System.Drawing.Point(493, 162);
-            this.SendCheck.Margin = new System.Windows.Forms.Padding(4);
+            this.SendCheck.Location = new System.Drawing.Point(370, 130);
             this.SendCheck.MoveImage = ((System.Drawing.Image)(resources.GetObject("SendCheck.MoveImage")));
             this.SendCheck.Name = "SendCheck";
             this.SendCheck.NormalImage = ((System.Drawing.Image)(resources.GetObject("SendCheck.NormalImage")));
             this.SendCheck.Power = null;
-            this.SendCheck.Size = new System.Drawing.Size(60, 30);
+            this.SendCheck.Size = new System.Drawing.Size(45, 24);
             this.SendCheck.TabIndex = 174;
             this.SendCheck.Tag = "ifread";
             this.SendCheck.Text = "送检";
@@ -479,13 +453,12 @@
             this.Packing.Font = new System.Drawing.Font("微软雅黑", 9F);
             this.Packing.Image = null;
             this.Packing.IsShowBorder = true;
-            this.Packing.Location = new System.Drawing.Point(20, 162);
-            this.Packing.Margin = new System.Windows.Forms.Padding(4);
+            this.Packing.Location = new System.Drawing.Point(15, 130);
             this.Packing.MoveImage = ((System.Drawing.Image)(resources.GetObject("Packing.MoveImage")));
             this.Packing.Name = "Packing";
             this.Packing.NormalImage = ((System.Drawing.Image)(resources.GetObject("Packing.NormalImage")));
             this.Packing.Power = null;
-            this.Packing.Size = new System.Drawing.Size(67, 30);
+            this.Packing.Size = new System.Drawing.Size(50, 24);
             this.Packing.TabIndex = 173;
             this.Packing.Text = "封箱";
             this.Packing.UseVisualStyleBackColor = true;
@@ -496,10 +469,10 @@
             this.PrintLabel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.PrintLabel.Font = new System.Drawing.Font("微软雅黑", 9F);
             this.PrintLabel.FormattingEnabled = true;
-            this.PrintLabel.Location = new System.Drawing.Point(163, 114);
-            this.PrintLabel.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.PrintLabel.Location = new System.Drawing.Point(122, 91);
+            this.PrintLabel.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.PrintLabel.Name = "PrintLabel";
-            this.PrintLabel.Size = new System.Drawing.Size(180, 28);
+            this.PrintLabel.Size = new System.Drawing.Size(136, 25);
             this.PrintLabel.TabIndex = 159;
             this.PrintLabel.SelectedValueChanged += new System.EventHandler(this.PrintLabel_SelectedValueChanged);
             // 
@@ -507,29 +480,28 @@
             // 
             this.label3.AutoSize = true;
             this.label3.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.label3.Location = new System.Drawing.Point(7, 114);
-            this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.label3.Location = new System.Drawing.Point(5, 90);
             this.label3.Name = "label3";
-            this.label3.Size = new System.Drawing.Size(92, 27);
+            this.label3.Size = new System.Drawing.Size(74, 21);
             this.label3.TabIndex = 160;
             this.label3.Text = "打印标签";
             // 
             // AutoPrint
             // 
             this.AutoPrint.Checked = false;
-            this.AutoPrint.Location = new System.Drawing.Point(111, 164);
-            this.AutoPrint.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.AutoPrint.Location = new System.Drawing.Point(83, 131);
+            this.AutoPrint.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
             this.AutoPrint.Name = "AutoPrint";
-            this.AutoPrint.Size = new System.Drawing.Size(120, 29);
+            this.AutoPrint.Size = new System.Drawing.Size(90, 23);
             this.AutoPrint.TabIndex = 166;
             // 
             // PrintList
             // 
             this.PrintList.Font = new System.Drawing.Font("微软雅黑", 9F);
-            this.PrintList.Location = new System.Drawing.Point(163, 68);
-            this.PrintList.Margin = new System.Windows.Forms.Padding(8, 9, 8, 9);
+            this.PrintList.Location = new System.Drawing.Point(122, 54);
+            this.PrintList.Margin = new System.Windows.Forms.Padding(6, 7, 6, 7);
             this.PrintList.Name = "PrintList";
-            this.PrintList.Size = new System.Drawing.Size(181, 28);
+            this.PrintList.Size = new System.Drawing.Size(136, 22);
             this.PrintList.TabIndex = 158;
             // 
             // Printing
@@ -540,13 +512,12 @@
             this.Printing.Font = new System.Drawing.Font("微软雅黑", 9F);
             this.Printing.Image = null;
             this.Printing.IsShowBorder = true;
-            this.Printing.Location = new System.Drawing.Point(415, 162);
-            this.Printing.Margin = new System.Windows.Forms.Padding(4);
+            this.Printing.Location = new System.Drawing.Point(311, 130);
             this.Printing.MoveImage = ((System.Drawing.Image)(resources.GetObject("Printing.MoveImage")));
             this.Printing.Name = "Printing";
             this.Printing.NormalImage = ((System.Drawing.Image)(resources.GetObject("Printing.NormalImage")));
             this.Printing.Power = null;
-            this.Printing.Size = new System.Drawing.Size(60, 30);
+            this.Printing.Size = new System.Drawing.Size(45, 24);
             this.Printing.TabIndex = 150;
             this.Printing.Tag = "ifread";
             this.Printing.Text = "打印";
@@ -557,10 +528,9 @@
             // 
             this.PrintList_label.AutoSize = true;
             this.PrintList_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.PrintList_label.Location = new System.Drawing.Point(7, 64);
-            this.PrintList_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.PrintList_label.Location = new System.Drawing.Point(5, 50);
             this.PrintList_label.Name = "PrintList_label";
-            this.PrintList_label.Size = new System.Drawing.Size(112, 27);
+            this.PrintList_label.Size = new System.Drawing.Size(90, 21);
             this.PrintList_label.TabIndex = 116;
             this.PrintList_label.Text = "打印机列表";
             // 
@@ -568,10 +538,9 @@
             // 
             this.PrintNum_label.AutoSize = true;
             this.PrintNum_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.PrintNum_label.Location = new System.Drawing.Point(280, 158);
-            this.PrintNum_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.PrintNum_label.Location = new System.Drawing.Point(210, 126);
             this.PrintNum_label.Name = "PrintNum_label";
-            this.PrintNum_label.Size = new System.Drawing.Size(52, 27);
+            this.PrintNum_label.Size = new System.Drawing.Size(42, 21);
             this.PrintNum_label.TabIndex = 124;
             this.PrintNum_label.Text = "份数";
             // 
@@ -600,11 +569,11 @@
             this.groupBoxWithBorder1.Controls.Add(this.pr_code);
             this.groupBoxWithBorder1.Controls.Add(this.pa_code_label);
             this.groupBoxWithBorder1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.groupBoxWithBorder1.Location = new System.Drawing.Point(5, 8);
-            this.groupBoxWithBorder1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.groupBoxWithBorder1.Location = new System.Drawing.Point(4, 6);
+            this.groupBoxWithBorder1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.groupBoxWithBorder1.Name = "groupBoxWithBorder1";
-            this.groupBoxWithBorder1.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
-            this.groupBoxWithBorder1.Size = new System.Drawing.Size(548, 210);
+            this.groupBoxWithBorder1.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
+            this.groupBoxWithBorder1.Size = new System.Drawing.Size(411, 168);
             this.groupBoxWithBorder1.TabIndex = 171;
             this.groupBoxWithBorder1.TabStop = false;
             this.groupBoxWithBorder1.Text = "装箱信息";
@@ -617,10 +586,9 @@
             this.locksalecode.CheckState = System.Windows.Forms.CheckState.Checked;
             this.locksalecode.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.locksalecode.ForeColor = System.Drawing.Color.Red;
-            this.locksalecode.Location = new System.Drawing.Point(392, 15);
-            this.locksalecode.Margin = new System.Windows.Forms.Padding(4);
+            this.locksalecode.Location = new System.Drawing.Point(294, 19);
             this.locksalecode.Name = "locksalecode";
-            this.locksalecode.Size = new System.Drawing.Size(119, 19);
+            this.locksalecode.Size = new System.Drawing.Size(96, 16);
             this.locksalecode.TabIndex = 196;
             this.locksalecode.Text = "当前订单锁定";
             this.locksalecode.UseVisualStyleBackColor = true;
@@ -629,10 +597,9 @@
             // 
             this.PreFix_label.AutoSize = true;
             this.PreFix_label.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.PreFix_label.Location = new System.Drawing.Point(241, 19);
-            this.PreFix_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.PreFix_label.Location = new System.Drawing.Point(181, 14);
             this.PreFix_label.Name = "PreFix_label";
-            this.PreFix_label.Size = new System.Drawing.Size(46, 24);
+            this.PreFix_label.Size = new System.Drawing.Size(37, 20);
             this.PreFix_label.TabIndex = 195;
             this.PreFix_label.Text = "前缀";
             // 
@@ -642,11 +609,11 @@
             this.PreFix.BackColor = System.Drawing.Color.White;
             this.PreFix.Font = new System.Drawing.Font("微软雅黑", 9F);
             this.PreFix.ID = null;
-            this.PreFix.Location = new System.Drawing.Point(307, 19);
-            this.PreFix.Margin = new System.Windows.Forms.Padding(8, 9, 8, 9);
+            this.PreFix.Location = new System.Drawing.Point(230, 15);
+            this.PreFix.Margin = new System.Windows.Forms.Padding(6, 7, 6, 7);
             this.PreFix.Name = "PreFix";
             this.PreFix.Power = null;
-            this.PreFix.Size = new System.Drawing.Size(49, 27);
+            this.PreFix.Size = new System.Drawing.Size(38, 23);
             this.PreFix.Str = null;
             this.PreFix.Str1 = null;
             this.PreFix.Str2 = null;
@@ -657,10 +624,9 @@
             // 
             this.pa_salecode_label.AutoSize = true;
             this.pa_salecode_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_salecode_label.Location = new System.Drawing.Point(282, 168);
-            this.pa_salecode_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_salecode_label.Location = new System.Drawing.Point(212, 134);
             this.pa_salecode_label.Name = "pa_salecode_label";
-            this.pa_salecode_label.Size = new System.Drawing.Size(92, 27);
+            this.pa_salecode_label.Size = new System.Drawing.Size(74, 21);
             this.pa_salecode_label.TabIndex = 185;
             this.pa_salecode_label.Text = "订单编号";
             // 
@@ -668,10 +634,9 @@
             // 
             this.ma_code_label.AutoSize = true;
             this.ma_code_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ma_code_label.Location = new System.Drawing.Point(10, 168);
-            this.ma_code_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.ma_code_label.Location = new System.Drawing.Point(8, 134);
             this.ma_code_label.Name = "ma_code_label";
-            this.ma_code_label.Size = new System.Drawing.Size(72, 27);
+            this.ma_code_label.Size = new System.Drawing.Size(58, 21);
             this.ma_code_label.TabIndex = 186;
             this.ma_code_label.Text = "工单号";
             // 
@@ -679,31 +644,28 @@
             // 
             this.ms_salecode.AutoSize = true;
             this.ms_salecode.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ms_salecode.Location = new System.Drawing.Point(391, 168);
-            this.ms_salecode.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.ms_salecode.Location = new System.Drawing.Point(293, 134);
             this.ms_salecode.Name = "ms_salecode";
-            this.ms_salecode.Size = new System.Drawing.Size(0, 27);
+            this.ms_salecode.Size = new System.Drawing.Size(0, 21);
             this.ms_salecode.TabIndex = 188;
             // 
             // ms_makecode
             // 
             this.ms_makecode.AutoSize = true;
             this.ms_makecode.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ms_makecode.Location = new System.Drawing.Point(126, 168);
-            this.ms_makecode.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
-            this.ms_makecode.MaximumSize = new System.Drawing.Size(200, 0);
+            this.ms_makecode.Location = new System.Drawing.Point(94, 134);
+            this.ms_makecode.MaximumSize = new System.Drawing.Size(150, 0);
             this.ms_makecode.Name = "ms_makecode";
-            this.ms_makecode.Size = new System.Drawing.Size(0, 27);
+            this.ms_makecode.Size = new System.Drawing.Size(0, 21);
             this.ms_makecode.TabIndex = 187;
             // 
             // OutBoxLength_label
             // 
             this.OutBoxLength_label.AutoSize = true;
             this.OutBoxLength_label.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.OutBoxLength_label.Location = new System.Drawing.Point(111, 19);
-            this.OutBoxLength_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.OutBoxLength_label.Location = new System.Drawing.Point(83, 14);
             this.OutBoxLength_label.Name = "OutBoxLength_label";
-            this.OutBoxLength_label.Size = new System.Drawing.Size(46, 24);
+            this.OutBoxLength_label.Size = new System.Drawing.Size(37, 20);
             this.OutBoxLength_label.TabIndex = 184;
             this.OutBoxLength_label.Text = "长度";
             // 
@@ -713,11 +675,11 @@
             this.OutBoxLength.BackColor = System.Drawing.Color.White;
             this.OutBoxLength.Font = new System.Drawing.Font("微软雅黑", 9F);
             this.OutBoxLength.ID = null;
-            this.OutBoxLength.Location = new System.Drawing.Point(173, 19);
-            this.OutBoxLength.Margin = new System.Windows.Forms.Padding(8, 9, 8, 9);
+            this.OutBoxLength.Location = new System.Drawing.Point(130, 15);
+            this.OutBoxLength.Margin = new System.Windows.Forms.Padding(6, 7, 6, 7);
             this.OutBoxLength.Name = "OutBoxLength";
             this.OutBoxLength.Power = null;
-            this.OutBoxLength.Size = new System.Drawing.Size(49, 27);
+            this.OutBoxLength.Size = new System.Drawing.Size(38, 23);
             this.OutBoxLength.Str = null;
             this.OutBoxLength.Str1 = null;
             this.OutBoxLength.Str2 = null;
@@ -731,11 +693,10 @@
             this.pr_outboxinnerqty.Enabled = false;
             this.pr_outboxinnerqty.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.pr_outboxinnerqty.ID = null;
-            this.pr_outboxinnerqty.Location = new System.Drawing.Point(120, 92);
-            this.pr_outboxinnerqty.Margin = new System.Windows.Forms.Padding(4);
+            this.pr_outboxinnerqty.Location = new System.Drawing.Point(90, 74);
             this.pr_outboxinnerqty.Name = "pr_outboxinnerqty";
             this.pr_outboxinnerqty.Power = null;
-            this.pr_outboxinnerqty.Size = new System.Drawing.Size(137, 27);
+            this.pr_outboxinnerqty.Size = new System.Drawing.Size(104, 23);
             this.pr_outboxinnerqty.Str = null;
             this.pr_outboxinnerqty.Str1 = null;
             this.pr_outboxinnerqty.Str2 = null;
@@ -749,13 +710,12 @@
             this.DeleteAll.Font = new System.Drawing.Font("微软雅黑", 9F);
             this.DeleteAll.Image = null;
             this.DeleteAll.IsShowBorder = true;
-            this.DeleteAll.Location = new System.Drawing.Point(473, 52);
-            this.DeleteAll.Margin = new System.Windows.Forms.Padding(4);
+            this.DeleteAll.Location = new System.Drawing.Point(355, 42);
             this.DeleteAll.MoveImage = ((System.Drawing.Image)(resources.GetObject("DeleteAll.MoveImage")));
             this.DeleteAll.Name = "DeleteAll";
             this.DeleteAll.NormalImage = ((System.Drawing.Image)(resources.GetObject("DeleteAll.NormalImage")));
             this.DeleteAll.Power = "ifspecial";
-            this.DeleteAll.Size = new System.Drawing.Size(60, 30);
+            this.DeleteAll.Size = new System.Drawing.Size(45, 24);
             this.DeleteAll.TabIndex = 181;
             this.DeleteAll.Text = "拆箱";
             this.DeleteAll.UseVisualStyleBackColor = true;
@@ -764,10 +724,10 @@
             // AutoGenBoxCode
             // 
             this.AutoGenBoxCode.AutoSize = true;
-            this.AutoGenBoxCode.Location = new System.Drawing.Point(333, 51);
-            this.AutoGenBoxCode.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.AutoGenBoxCode.Location = new System.Drawing.Point(250, 40);
+            this.AutoGenBoxCode.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.AutoGenBoxCode.Name = "AutoGenBoxCode";
-            this.AutoGenBoxCode.Size = new System.Drawing.Size(114, 31);
+            this.AutoGenBoxCode.Size = new System.Drawing.Size(93, 25);
             this.AutoGenBoxCode.TabIndex = 171;
             this.AutoGenBoxCode.Text = "自动生成";
             this.AutoGenBoxCode.UseVisualStyleBackColor = true;
@@ -776,10 +736,9 @@
             // 
             this.pa_currentqty_label.AutoSize = true;
             this.pa_currentqty_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_currentqty_label.Location = new System.Drawing.Point(285, 93);
-            this.pa_currentqty_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_currentqty_label.Location = new System.Drawing.Point(214, 74);
             this.pa_currentqty_label.Name = "pa_currentqty_label";
-            this.pa_currentqty_label.Size = new System.Drawing.Size(92, 27);
+            this.pa_currentqty_label.Size = new System.Drawing.Size(74, 21);
             this.pa_currentqty_label.TabIndex = 95;
             this.pa_currentqty_label.Text = "已装数量";
             // 
@@ -787,10 +746,9 @@
             // 
             this.pr_detail_label.AutoSize = true;
             this.pr_detail_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pr_detail_label.Location = new System.Drawing.Point(282, 128);
-            this.pr_detail_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pr_detail_label.Location = new System.Drawing.Point(212, 102);
             this.pr_detail_label.Name = "pr_detail_label";
-            this.pr_detail_label.Size = new System.Drawing.Size(92, 27);
+            this.pr_detail_label.Size = new System.Drawing.Size(74, 21);
             this.pr_detail_label.TabIndex = 80;
             this.pr_detail_label.Text = "产品名称";
             // 
@@ -801,11 +759,11 @@
             this.pa_outboxcode.Font = new System.Drawing.Font("微软雅黑", 12F);
             this.pa_outboxcode.ForeColor = System.Drawing.Color.Black;
             this.pa_outboxcode.ID = null;
-            this.pa_outboxcode.Location = new System.Drawing.Point(120, 52);
-            this.pa_outboxcode.Margin = new System.Windows.Forms.Padding(8, 9, 8, 9);
+            this.pa_outboxcode.Location = new System.Drawing.Point(90, 42);
+            this.pa_outboxcode.Margin = new System.Windows.Forms.Padding(6, 7, 6, 7);
             this.pa_outboxcode.Name = "pa_outboxcode";
             this.pa_outboxcode.Power = null;
-            this.pa_outboxcode.Size = new System.Drawing.Size(192, 34);
+            this.pa_outboxcode.Size = new System.Drawing.Size(145, 29);
             this.pa_outboxcode.Str = null;
             this.pa_outboxcode.Str1 = null;
             this.pa_outboxcode.Str2 = null;
@@ -816,20 +774,18 @@
             // 
             this.pa_currentqty.AutoSize = true;
             this.pa_currentqty.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_currentqty.Location = new System.Drawing.Point(390, 91);
-            this.pa_currentqty.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_currentqty.Location = new System.Drawing.Point(292, 72);
             this.pa_currentqty.Name = "pa_currentqty";
-            this.pa_currentqty.Size = new System.Drawing.Size(0, 27);
+            this.pa_currentqty.Size = new System.Drawing.Size(0, 21);
             this.pa_currentqty.TabIndex = 169;
             // 
             // pr_code_label
             // 
             this.pr_code_label.AutoSize = true;
             this.pr_code_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pr_code_label.Location = new System.Drawing.Point(10, 128);
-            this.pr_code_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pr_code_label.Location = new System.Drawing.Point(8, 102);
             this.pr_code_label.Name = "pr_code_label";
-            this.pr_code_label.Size = new System.Drawing.Size(92, 27);
+            this.pr_code_label.Size = new System.Drawing.Size(74, 21);
             this.pr_code_label.TabIndex = 81;
             this.pr_code_label.Text = "产品编号";
             // 
@@ -837,20 +793,18 @@
             // 
             this.pr_detail.AutoSize = true;
             this.pr_detail.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pr_detail.Location = new System.Drawing.Point(391, 128);
-            this.pr_detail.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pr_detail.Location = new System.Drawing.Point(293, 102);
             this.pr_detail.Name = "pr_detail";
-            this.pr_detail.Size = new System.Drawing.Size(0, 27);
+            this.pr_detail.Size = new System.Drawing.Size(0, 21);
             this.pr_detail.TabIndex = 168;
             // 
             // pr_outboxinnerqty_label
             // 
             this.pr_outboxinnerqty_label.AutoSize = true;
             this.pr_outboxinnerqty_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pr_outboxinnerqty_label.Location = new System.Drawing.Point(10, 91);
-            this.pr_outboxinnerqty_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pr_outboxinnerqty_label.Location = new System.Drawing.Point(8, 72);
             this.pr_outboxinnerqty_label.Name = "pr_outboxinnerqty_label";
-            this.pr_outboxinnerqty_label.Size = new System.Drawing.Size(92, 27);
+            this.pr_outboxinnerqty_label.Size = new System.Drawing.Size(74, 21);
             this.pr_outboxinnerqty_label.TabIndex = 97;
             this.pr_outboxinnerqty_label.Text = "箱内容量";
             // 
@@ -858,11 +812,10 @@
             // 
             this.pr_code.AutoSize = true;
             this.pr_code.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pr_code.Location = new System.Drawing.Point(126, 128);
-            this.pr_code.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
-            this.pr_code.MaximumSize = new System.Drawing.Size(200, 0);
+            this.pr_code.Location = new System.Drawing.Point(94, 102);
+            this.pr_code.MaximumSize = new System.Drawing.Size(150, 0);
             this.pr_code.Name = "pr_code";
-            this.pr_code.Size = new System.Drawing.Size(0, 27);
+            this.pr_code.Size = new System.Drawing.Size(0, 21);
             this.pr_code.TabIndex = 167;
             this.pr_code.TextChanged += new System.EventHandler(this.pr_code_TextChanged);
             // 
@@ -870,20 +823,18 @@
             // 
             this.pa_code_label.AutoSize = true;
             this.pa_code_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_code_label.Location = new System.Drawing.Point(10, 54);
-            this.pa_code_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_code_label.Location = new System.Drawing.Point(8, 42);
             this.pa_code_label.Name = "pa_code_label";
-            this.pa_code_label.Size = new System.Drawing.Size(52, 27);
+            this.pa_code_label.Size = new System.Drawing.Size(42, 21);
             this.pa_code_label.TabIndex = 113;
             this.pa_code_label.Text = "箱号";
             // 
             // OperateResult
             // 
             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(5, 534);
-            this.OperateResult.Margin = new System.Windows.Forms.Padding(4);
+            this.OperateResult.Location = new System.Drawing.Point(4, 427);
             this.OperateResult.Name = "OperateResult";
-            this.OperateResult.Size = new System.Drawing.Size(595, 149);
+            this.OperateResult.Size = new System.Drawing.Size(447, 120);
             this.OperateResult.TabIndex = 155;
             this.OperateResult.Text = "";
             // 
@@ -894,13 +845,12 @@
             this.Clean.DownImage = ((System.Drawing.Image)(resources.GetObject("Clean.DownImage")));
             this.Clean.Image = null;
             this.Clean.IsShowBorder = true;
-            this.Clean.Location = new System.Drawing.Point(520, 690);
-            this.Clean.Margin = new System.Windows.Forms.Padding(4);
+            this.Clean.Location = new System.Drawing.Point(390, 552);
             this.Clean.MoveImage = ((System.Drawing.Image)(resources.GetObject("Clean.MoveImage")));
             this.Clean.Name = "Clean";
             this.Clean.NormalImage = ((System.Drawing.Image)(resources.GetObject("Clean.NormalImage")));
             this.Clean.Power = null;
-            this.Clean.Size = new System.Drawing.Size(80, 30);
+            this.Clean.Size = new System.Drawing.Size(60, 24);
             this.Clean.TabIndex = 148;
             this.Clean.Text = "清除";
             this.Clean.UseVisualStyleBackColor = true;
@@ -911,11 +861,10 @@
             this.sn_code.AllPower = "ifall";
             this.sn_code.BackColor = System.Drawing.Color.White;
             this.sn_code.ID = null;
-            this.sn_code.Location = new System.Drawing.Point(99, 692);
-            this.sn_code.Margin = new System.Windows.Forms.Padding(4);
+            this.sn_code.Location = new System.Drawing.Point(74, 554);
             this.sn_code.Name = "sn_code";
             this.sn_code.Power = "ifread";
-            this.sn_code.Size = new System.Drawing.Size(229, 25);
+            this.sn_code.Size = new System.Drawing.Size(173, 21);
             this.sn_code.Str = null;
             this.sn_code.Str1 = null;
             this.sn_code.Str2 = null;
@@ -937,12 +886,11 @@
             this.pa_indate,
             this.pd_id});
             this.PackageDetail.EnableContentClick = true;
-            this.PackageDetail.Location = new System.Drawing.Point(5, 224);
-            this.PackageDetail.Margin = new System.Windows.Forms.Padding(4);
+            this.PackageDetail.Location = new System.Drawing.Point(4, 179);
             this.PackageDetail.Name = "PackageDetail";
             this.PackageDetail.ReadOnly = true;
             this.PackageDetail.RowTemplate.Height = 23;
-            this.PackageDetail.Size = new System.Drawing.Size(1149, 300);
+            this.PackageDetail.Size = new System.Drawing.Size(862, 240);
             this.PackageDetail.TabIndex = 134;
             // 
             // pd_barcode
@@ -1007,13 +955,12 @@
             this.CloseServer.DownImage = ((System.Drawing.Image)(resources.GetObject("CloseServer.DownImage")));
             this.CloseServer.Image = null;
             this.CloseServer.IsShowBorder = true;
-            this.CloseServer.Location = new System.Drawing.Point(1041, 628);
-            this.CloseServer.Margin = new System.Windows.Forms.Padding(4);
+            this.CloseServer.Location = new System.Drawing.Point(781, 502);
             this.CloseServer.MoveImage = ((System.Drawing.Image)(resources.GetObject("CloseServer.MoveImage")));
             this.CloseServer.Name = "CloseServer";
             this.CloseServer.NormalImage = ((System.Drawing.Image)(resources.GetObject("CloseServer.NormalImage")));
             this.CloseServer.Power = null;
-            this.CloseServer.Size = new System.Drawing.Size(80, 30);
+            this.CloseServer.Size = new System.Drawing.Size(60, 24);
             this.CloseServer.TabIndex = 207;
             this.CloseServer.Text = "关闭服务";
             this.CloseServer.UseVisualStyleBackColor = true;
@@ -1026,13 +973,12 @@
             this.BuildServer.DownImage = ((System.Drawing.Image)(resources.GetObject("BuildServer.DownImage")));
             this.BuildServer.Image = null;
             this.BuildServer.IsShowBorder = true;
-            this.BuildServer.Location = new System.Drawing.Point(933, 628);
-            this.BuildServer.Margin = new System.Windows.Forms.Padding(4);
+            this.BuildServer.Location = new System.Drawing.Point(700, 502);
             this.BuildServer.MoveImage = ((System.Drawing.Image)(resources.GetObject("BuildServer.MoveImage")));
             this.BuildServer.Name = "BuildServer";
             this.BuildServer.NormalImage = ((System.Drawing.Image)(resources.GetObject("BuildServer.NormalImage")));
             this.BuildServer.Power = null;
-            this.BuildServer.Size = new System.Drawing.Size(80, 30);
+            this.BuildServer.Size = new System.Drawing.Size(60, 24);
             this.BuildServer.TabIndex = 206;
             this.BuildServer.Text = "开启服务";
             this.BuildServer.UseVisualStyleBackColor = true;
@@ -1044,11 +990,10 @@
             this.Port.BackColor = System.Drawing.Color.White;
             this.Port.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.Port.ID = null;
-            this.Port.Location = new System.Drawing.Point(1003, 582);
-            this.Port.Margin = new System.Windows.Forms.Padding(4);
+            this.Port.Location = new System.Drawing.Point(752, 466);
             this.Port.Name = "Port";
             this.Port.Power = null;
-            this.Port.Size = new System.Drawing.Size(151, 27);
+            this.Port.Size = new System.Drawing.Size(114, 23);
             this.Port.Str = null;
             this.Port.Str1 = null;
             this.Port.Str2 = null;
@@ -1058,10 +1003,9 @@
             // 
             this.Port_label.AutoSize = true;
             this.Port_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.Port_label.Location = new System.Drawing.Point(923, 580);
-            this.Port_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.Port_label.Location = new System.Drawing.Point(692, 464);
             this.Port_label.Name = "Port_label";
-            this.Port_label.Size = new System.Drawing.Size(52, 27);
+            this.Port_label.Size = new System.Drawing.Size(42, 21);
             this.Port_label.TabIndex = 204;
             this.Port_label.Text = "端口";
             // 
@@ -1071,11 +1015,11 @@
             this.IP.BackColor = System.Drawing.Color.White;
             this.IP.Font = new System.Drawing.Font("微软雅黑", 9F);
             this.IP.ID = null;
-            this.IP.Location = new System.Drawing.Point(1003, 539);
-            this.IP.Margin = new System.Windows.Forms.Padding(8, 9, 8, 9);
+            this.IP.Location = new System.Drawing.Point(752, 431);
+            this.IP.Margin = new System.Windows.Forms.Padding(6, 7, 6, 7);
             this.IP.Name = "IP";
             this.IP.Power = null;
-            this.IP.Size = new System.Drawing.Size(151, 27);
+            this.IP.Size = new System.Drawing.Size(114, 23);
             this.IP.Str = null;
             this.IP.Str1 = null;
             this.IP.Str2 = null;
@@ -1085,19 +1029,18 @@
             // 
             this.IP_label.AutoSize = true;
             this.IP_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.IP_label.Location = new System.Drawing.Point(923, 539);
-            this.IP_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.IP_label.Location = new System.Drawing.Point(692, 431);
             this.IP_label.Name = "IP_label";
-            this.IP_label.Size = new System.Drawing.Size(30, 27);
+            this.IP_label.Size = new System.Drawing.Size(25, 21);
             this.IP_label.TabIndex = 202;
             this.IP_label.Text = "IP";
             // 
             // Make_PackageCollection
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
-            this.ClientSize = new System.Drawing.Size(1172, 730);
+            this.ClientSize = new System.Drawing.Size(879, 584);
             this.Controls.Add(this.CloseServer);
             this.Controls.Add(this.BuildServer);
             this.Controls.Add(this.Port);
@@ -1129,7 +1072,6 @@
             this.Controls.Add(this.label13);
             this.Controls.Add(this.pa_makecode);
             this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
-            this.Margin = new System.Windows.Forms.Padding(4);
             this.Name = "Make_PackageCollection";
             this.Tag = "Make!PackageCollection";
             this.Text = "包装采集";

+ 43 - 5
UAS-MES/FunctionCode/Make/Make_PackageCollection.cs

@@ -281,7 +281,7 @@ namespace UAS_MES.Make
                             return;
                         }
                         sql.Clear();
-                        sql.Append("select nvl(pa_iostatus,0)pa_iostatus,pa_outno,pa_mothercode from package where pa_outboxcode='" + pa_outboxcode.Text + "'");
+                        sql.Append("select nvl(pa_iostatus,0)pa_iostatus,pa_outno,pa_mothercode,pa_type from package where pa_outboxcode='" + pa_outboxcode.Text + "'");
                         dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
                         string MotherBoxCode = "";
                         if (dt.Rows.Count > 0)
@@ -367,10 +367,29 @@ namespace UAS_MES.Make
                                     LoadGridData();
                                     LoadCheckQTY();
                                     dh.ExecuteSql("update packagedetail set pd_innerqty=(select pa_packageqty from package where pa_outboxcode='" + pa_outboxcode.Text + "') where pd_innerboxcode='" + pa_outboxcode.Text + "'", "update");
-                                    //如果母箱号不为空,需要更新总数
                                     if (MotherBoxCode != "")
                                     {
-                                        dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherBoxCode + "') where pa_outboxcode='" + MotherBoxCode + "' and pa_type=3", "update");
+                                        dt = (DataTable)dh.ExecuteSql("select pa_mothercode,pa_type from package where pa_outboxcode='" + MotherBoxCode + "'", "select");
+                                        //如果母箱号不为空,需要更新总数
+                                        if (dt.Rows.Count > 0)
+                                        {
+                                            if (dt.Rows[0]["pa_type"].ToString() == "2")
+                                            {
+                                                string MotherCode2 = dt.Rows[0]["pa_mothercode"].ToString();
+                                                //更新大箱数量
+                                                dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherBoxCode + "') where pa_outboxcode='" + MotherBoxCode + "'", "update");
+                                                //外层有栈板则更新栈板数量
+                                                if (MotherCode2 != "")
+                                                {
+                                                    dh.ExecuteSql("update packagedetail set pd_innerqty=(select sum(pd_innerqty) from packagedetail where pd_outboxcode='" + MotherBoxCode + "') where pd_innerboxcode='" + MotherBoxCode + "'", "update");
+                                                    dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherCode2 + "') where pa_outboxcode='" + MotherCode2 + "'", "update");
+                                                }
+                                            }
+                                            if (dt.Rows[0]["pa_type"] == "3")
+                                            {
+                                                dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherBoxCode + "') where pa_outboxcode='" + MotherBoxCode + "'", "update");
+                                            }
+                                        }
                                     }
                                     //采集完后如果是第一个装的序列号,把序列号的NextStepCode赋值给箱号
                                     if (pa_currentqty.Text == "1")
@@ -429,7 +448,26 @@ namespace UAS_MES.Make
                                 //如果母箱号不为空,需要更新总数
                                 if (MotherBoxCode != "")
                                 {
-                                    dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherBoxCode + "') where pa_outboxcode='" + MotherBoxCode + "' and pa_type=3", "update");
+                                    DataTable dt = (DataTable)dh.ExecuteSql("select pa_mothercode,pa_type from package where pa_outboxcode='" + MotherBoxCode + "'", "select");
+                                    if (dt.Rows.Count > 0)
+                                    {
+                                        if (dt.Rows[0]["pa_type"].ToString() == "2")
+                                        {
+                                            string MotherCode2 = dt.Rows[0]["pa_mothercode"].ToString();
+                                            //更新大箱数量
+                                            dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherBoxCode + "') where pa_outboxcode='" + MotherBoxCode + "'", "update");
+                                            //外层有栈板则更新栈板数量
+                                            if (MotherCode2 != "")
+                                            {
+                                                dh.ExecuteSql("update packagedetail set pd_innerqty=(select sum(pd_innerqty) from packagedetail where pd_outboxcode='" + MotherBoxCode + "') where pd_innerboxcode='" + MotherBoxCode + "'", "update");
+                                                dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherCode2 + "') where pa_outboxcode='" + MotherCode2 + "'", "update");
+                                            }
+                                        }
+                                        if (dt.Rows[0]["pa_type"] == "3")
+                                        {
+                                            dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherBoxCode + "') where pa_outboxcode='" + MotherBoxCode + "'", "update");
+                                        }
+                                    }
                                 }
                                 LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, oMakeCode, User.UserLineCode, User.UserSourceCode, "卡通箱采集", "卡通箱" + pa_outboxcode.Text + "取消采集成功", sn_code.Text, "");
                                 LoadGridData();
@@ -729,7 +767,7 @@ namespace UAS_MES.Make
                                     }
                                     //更新序列号状态
                                     SQLS1.Add("update makecraftdetail set mcd_inqty=mcd_inqty-1,mcd_okqty=mcd_okqty-1 where mcd_macode='" + ma_code + "' and mcd_stepcode='" + ms_stepcode + "'");
-                                    SQLS1.Add("update makeserial set ms_status=1,ms_nextstepcode=ms_stepcode,ms_outboxcode='' where ms_sncode='" + ms_sncode + "' and ms_makecode='" + ma_code + "'");
+                                    SQLS1.Add("update makeserial set ms_status=1,ms_outboxcode='',ms_nextstepcode= (case when ms_nextstepcode='" + User.CurrentStepCode + "' then ms_nextstepcode else ms_stepcode end ) where ms_sncode='" + ms_sncode + "' and ms_makecode='" + ma_code + "'");
                                     SQLS1.Add("delete from makeprocess where mp_sncode='" + ms_sncode + "' and mp_makecode='" + ma_code + "' and mp_stepcode='" + ms_stepcode + "'");
                                     SQLS1.Add("delete from steppassed where sp_sncode='" + ms_sncode + "' and sp_makecode='" + ma_code + "' and sp_stepcode='" + ms_stepcode + "'");
                                     //抽检批次不为空的时候进行移除

+ 166 - 228
UAS-MES/FunctionCode/Make/Make_PackageCollectionWeigh.Designer.cs

@@ -118,10 +118,9 @@
             // 
             this.pa_makecode.AutoSize = true;
             this.pa_makecode.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_makecode.Location = new System.Drawing.Point(1108, 536);
-            this.pa_makecode.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_makecode.Location = new System.Drawing.Point(831, 429);
             this.pa_makecode.Name = "pa_makecode";
-            this.pa_makecode.Size = new System.Drawing.Size(0, 27);
+            this.pa_makecode.Size = new System.Drawing.Size(0, 21);
             this.pa_makecode.TabIndex = 76;
             this.pa_makecode.Visible = false;
             // 
@@ -130,10 +129,9 @@
             this.label13.AutoSize = true;
             this.label13.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.label13.ForeColor = System.Drawing.Color.Black;
-            this.label13.Location = new System.Drawing.Point(13, 691);
-            this.label13.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.label13.Location = new System.Drawing.Point(10, 553);
             this.label13.Name = "label13";
-            this.label13.Size = new System.Drawing.Size(72, 27);
+            this.label13.Size = new System.Drawing.Size(58, 21);
             this.label13.TabIndex = 105;
             this.label13.Text = "序列号";
             // 
@@ -141,10 +139,9 @@
             // 
             this.pa_code_label.AutoSize = true;
             this.pa_code_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_code_label.Location = new System.Drawing.Point(9, 57);
-            this.pa_code_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_code_label.Location = new System.Drawing.Point(7, 45);
             this.pa_code_label.Name = "pa_code_label";
-            this.pa_code_label.Size = new System.Drawing.Size(52, 27);
+            this.pa_code_label.Size = new System.Drawing.Size(42, 21);
             this.pa_code_label.TabIndex = 113;
             this.pa_code_label.Text = "箱号";
             // 
@@ -152,10 +149,9 @@
             // 
             this.PrintList_label.AutoSize = true;
             this.PrintList_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.PrintList_label.Location = new System.Drawing.Point(12, 66);
-            this.PrintList_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.PrintList_label.Location = new System.Drawing.Point(9, 55);
             this.PrintList_label.Name = "PrintList_label";
-            this.PrintList_label.Size = new System.Drawing.Size(112, 27);
+            this.PrintList_label.Size = new System.Drawing.Size(90, 21);
             this.PrintList_label.TabIndex = 116;
             this.PrintList_label.Text = "打印机列表";
             // 
@@ -163,10 +159,9 @@
             // 
             this.PrintNum_label.AutoSize = true;
             this.PrintNum_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.PrintNum_label.Location = new System.Drawing.Point(260, 159);
-            this.PrintNum_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.PrintNum_label.Location = new System.Drawing.Point(194, 128);
             this.PrintNum_label.Name = "PrintNum_label";
-            this.PrintNum_label.Size = new System.Drawing.Size(52, 27);
+            this.PrintNum_label.Size = new System.Drawing.Size(42, 21);
             this.PrintNum_label.TabIndex = 124;
             this.PrintNum_label.Text = "份数";
             // 
@@ -174,10 +169,9 @@
             // 
             this.Cancel.AutoSize = true;
             this.Cancel.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.Cancel.Location = new System.Drawing.Point(375, 692);
-            this.Cancel.Margin = new System.Windows.Forms.Padding(4);
+            this.Cancel.Location = new System.Drawing.Point(281, 554);
             this.Cancel.Name = "Cancel";
-            this.Cancel.Size = new System.Drawing.Size(114, 31);
+            this.Cancel.Size = new System.Drawing.Size(93, 25);
             this.Cancel.TabIndex = 129;
             this.Cancel.Text = "取消装箱";
             this.Cancel.UseVisualStyleBackColor = true;
@@ -186,10 +180,9 @@
             // 
             this.pa_id.AutoSize = true;
             this.pa_id.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_id.Location = new System.Drawing.Point(1065, 536);
-            this.pa_id.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_id.Location = new System.Drawing.Point(799, 429);
             this.pa_id.Name = "pa_id";
-            this.pa_id.Size = new System.Drawing.Size(0, 27);
+            this.pa_id.Size = new System.Drawing.Size(0, 21);
             this.pa_id.TabIndex = 153;
             this.pa_id.Visible = false;
             // 
@@ -198,10 +191,10 @@
             this.PrintLabel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.PrintLabel.Font = new System.Drawing.Font("微软雅黑", 9F);
             this.PrintLabel.FormattingEnabled = true;
-            this.PrintLabel.Location = new System.Drawing.Point(147, 114);
-            this.PrintLabel.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.PrintLabel.Location = new System.Drawing.Point(110, 91);
+            this.PrintLabel.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.PrintLabel.Name = "PrintLabel";
-            this.PrintLabel.Size = new System.Drawing.Size(199, 28);
+            this.PrintLabel.Size = new System.Drawing.Size(150, 25);
             this.PrintLabel.TabIndex = 159;
             this.PrintLabel.SelectedValueChanged += new System.EventHandler(this.PrintLabel_SelectedValueChanged);
             // 
@@ -209,10 +202,9 @@
             // 
             this.label3.AutoSize = true;
             this.label3.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.label3.Location = new System.Drawing.Point(12, 113);
-            this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.label3.Location = new System.Drawing.Point(9, 93);
             this.label3.Name = "label3";
-            this.label3.Size = new System.Drawing.Size(92, 27);
+            this.label3.Size = new System.Drawing.Size(74, 21);
             this.label3.TabIndex = 160;
             this.label3.Text = "打印标签";
             // 
@@ -223,11 +215,11 @@
             this.pa_outboxcode.Font = new System.Drawing.Font("微软雅黑", 12F);
             this.pa_outboxcode.ForeColor = System.Drawing.Color.Black;
             this.pa_outboxcode.ID = null;
-            this.pa_outboxcode.Location = new System.Drawing.Point(121, 56);
-            this.pa_outboxcode.Margin = new System.Windows.Forms.Padding(8, 9, 8, 9);
+            this.pa_outboxcode.Location = new System.Drawing.Point(91, 45);
+            this.pa_outboxcode.Margin = new System.Windows.Forms.Padding(6, 7, 6, 7);
             this.pa_outboxcode.Name = "pa_outboxcode";
             this.pa_outboxcode.Power = null;
-            this.pa_outboxcode.Size = new System.Drawing.Size(183, 34);
+            this.pa_outboxcode.Size = new System.Drawing.Size(138, 29);
             this.pa_outboxcode.Str = null;
             this.pa_outboxcode.Str1 = null;
             this.pa_outboxcode.Str2 = null;
@@ -237,19 +229,18 @@
             // PrintList
             // 
             this.PrintList.Font = new System.Drawing.Font("微软雅黑", 9F);
-            this.PrintList.Location = new System.Drawing.Point(147, 68);
-            this.PrintList.Margin = new System.Windows.Forms.Padding(8, 9, 8, 9);
+            this.PrintList.Location = new System.Drawing.Point(110, 54);
+            this.PrintList.Margin = new System.Windows.Forms.Padding(6, 7, 6, 7);
             this.PrintList.Name = "PrintList";
-            this.PrintList.Size = new System.Drawing.Size(199, 28);
+            this.PrintList.Size = new System.Drawing.Size(149, 22);
             this.PrintList.TabIndex = 158;
             // 
             // OperateResult
             // 
             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(5, 534);
-            this.OperateResult.Margin = new System.Windows.Forms.Padding(4);
+            this.OperateResult.Location = new System.Drawing.Point(4, 427);
             this.OperateResult.Name = "OperateResult";
-            this.OperateResult.Size = new System.Drawing.Size(595, 149);
+            this.OperateResult.Size = new System.Drawing.Size(447, 120);
             this.OperateResult.TabIndex = 155;
             this.OperateResult.Text = "";
             // 
@@ -261,13 +252,12 @@
             this.Printing.Font = new System.Drawing.Font("微软雅黑", 9F);
             this.Printing.Image = null;
             this.Printing.IsShowBorder = true;
-            this.Printing.Location = new System.Drawing.Point(404, 160);
-            this.Printing.Margin = new System.Windows.Forms.Padding(4);
+            this.Printing.Location = new System.Drawing.Point(303, 128);
             this.Printing.MoveImage = ((System.Drawing.Image)(resources.GetObject("Printing.MoveImage")));
             this.Printing.Name = "Printing";
             this.Printing.NormalImage = ((System.Drawing.Image)(resources.GetObject("Printing.NormalImage")));
             this.Printing.Power = null;
-            this.Printing.Size = new System.Drawing.Size(60, 30);
+            this.Printing.Size = new System.Drawing.Size(45, 24);
             this.Printing.TabIndex = 150;
             this.Printing.Tag = "ifread";
             this.Printing.Text = "打印";
@@ -281,13 +271,12 @@
             this.Clean.DownImage = ((System.Drawing.Image)(resources.GetObject("Clean.DownImage")));
             this.Clean.Image = null;
             this.Clean.IsShowBorder = true;
-            this.Clean.Location = new System.Drawing.Point(520, 691);
-            this.Clean.Margin = new System.Windows.Forms.Padding(4);
+            this.Clean.Location = new System.Drawing.Point(390, 553);
             this.Clean.MoveImage = ((System.Drawing.Image)(resources.GetObject("Clean.MoveImage")));
             this.Clean.Name = "Clean";
             this.Clean.NormalImage = ((System.Drawing.Image)(resources.GetObject("Clean.NormalImage")));
             this.Clean.Power = null;
-            this.Clean.Size = new System.Drawing.Size(80, 30);
+            this.Clean.Size = new System.Drawing.Size(60, 24);
             this.Clean.TabIndex = 148;
             this.Clean.Text = "清除";
             this.Clean.UseVisualStyleBackColor = true;
@@ -298,11 +287,10 @@
             this.sn_code.AllPower = "ifall";
             this.sn_code.BackColor = System.Drawing.Color.White;
             this.sn_code.ID = null;
-            this.sn_code.Location = new System.Drawing.Point(101, 692);
-            this.sn_code.Margin = new System.Windows.Forms.Padding(4);
+            this.sn_code.Location = new System.Drawing.Point(76, 554);
             this.sn_code.Name = "sn_code";
             this.sn_code.Power = "ifread";
-            this.sn_code.Size = new System.Drawing.Size(225, 25);
+            this.sn_code.Size = new System.Drawing.Size(170, 21);
             this.sn_code.Str = null;
             this.sn_code.Str1 = null;
             this.sn_code.Str2 = null;
@@ -324,12 +312,11 @@
             this.pa_indate,
             this.pd_id});
             this.PackageDetail.EnableContentClick = true;
-            this.PackageDetail.Location = new System.Drawing.Point(5, 224);
-            this.PackageDetail.Margin = new System.Windows.Forms.Padding(4);
+            this.PackageDetail.Location = new System.Drawing.Point(4, 179);
             this.PackageDetail.Name = "PackageDetail";
             this.PackageDetail.ReadOnly = true;
             this.PackageDetail.RowTemplate.Height = 23;
-            this.PackageDetail.Size = new System.Drawing.Size(828, 300);
+            this.PackageDetail.Size = new System.Drawing.Size(621, 240);
             this.PackageDetail.TabIndex = 134;
             // 
             // pd_barcode
@@ -390,10 +377,10 @@
             // AutoPrint
             // 
             this.AutoPrint.Checked = false;
-            this.AutoPrint.Location = new System.Drawing.Point(104, 160);
-            this.AutoPrint.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.AutoPrint.Location = new System.Drawing.Point(78, 128);
+            this.AutoPrint.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
             this.AutoPrint.Name = "AutoPrint";
-            this.AutoPrint.Size = new System.Drawing.Size(119, 28);
+            this.AutoPrint.Size = new System.Drawing.Size(89, 22);
             this.AutoPrint.TabIndex = 166;
             // 
             // groupBoxWithBorder1
@@ -421,11 +408,11 @@
             this.groupBoxWithBorder1.Controls.Add(this.pa_outboxcode);
             this.groupBoxWithBorder1.Controls.Add(this.pa_code_label);
             this.groupBoxWithBorder1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.groupBoxWithBorder1.Location = new System.Drawing.Point(5, 8);
-            this.groupBoxWithBorder1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.groupBoxWithBorder1.Location = new System.Drawing.Point(4, 6);
+            this.groupBoxWithBorder1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.groupBoxWithBorder1.Name = "groupBoxWithBorder1";
-            this.groupBoxWithBorder1.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
-            this.groupBoxWithBorder1.Size = new System.Drawing.Size(548, 210);
+            this.groupBoxWithBorder1.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
+            this.groupBoxWithBorder1.Size = new System.Drawing.Size(411, 168);
             this.groupBoxWithBorder1.TabIndex = 171;
             this.groupBoxWithBorder1.TabStop = false;
             this.groupBoxWithBorder1.Text = "装箱信息";
@@ -435,10 +422,9 @@
             // 
             this.PreFix_label.AutoSize = true;
             this.PreFix_label.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.PreFix_label.Location = new System.Drawing.Point(239, 21);
-            this.PreFix_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.PreFix_label.Location = new System.Drawing.Point(179, 16);
             this.PreFix_label.Name = "PreFix_label";
-            this.PreFix_label.Size = new System.Drawing.Size(46, 24);
+            this.PreFix_label.Size = new System.Drawing.Size(37, 20);
             this.PreFix_label.TabIndex = 205;
             this.PreFix_label.Text = "前缀";
             // 
@@ -448,11 +434,11 @@
             this.PreFix.BackColor = System.Drawing.Color.White;
             this.PreFix.Font = new System.Drawing.Font("微软雅黑", 9F);
             this.PreFix.ID = null;
-            this.PreFix.Location = new System.Drawing.Point(297, 19);
-            this.PreFix.Margin = new System.Windows.Forms.Padding(8, 9, 8, 9);
+            this.PreFix.Location = new System.Drawing.Point(223, 15);
+            this.PreFix.Margin = new System.Windows.Forms.Padding(6, 7, 6, 7);
             this.PreFix.Name = "PreFix";
             this.PreFix.Power = null;
-            this.PreFix.Size = new System.Drawing.Size(52, 27);
+            this.PreFix.Size = new System.Drawing.Size(40, 23);
             this.PreFix.Str = null;
             this.PreFix.Str1 = null;
             this.PreFix.Str2 = null;
@@ -466,10 +452,9 @@
             this.locksalecode.CheckState = System.Windows.Forms.CheckState.Checked;
             this.locksalecode.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.locksalecode.ForeColor = System.Drawing.Color.Red;
-            this.locksalecode.Location = new System.Drawing.Point(401, 24);
-            this.locksalecode.Margin = new System.Windows.Forms.Padding(4);
+            this.locksalecode.Location = new System.Drawing.Point(301, 18);
             this.locksalecode.Name = "locksalecode";
-            this.locksalecode.Size = new System.Drawing.Size(119, 19);
+            this.locksalecode.Size = new System.Drawing.Size(96, 16);
             this.locksalecode.TabIndex = 203;
             this.locksalecode.Text = "当前订单锁定";
             this.locksalecode.UseVisualStyleBackColor = true;
@@ -478,10 +463,9 @@
             // 
             this.label5.AutoSize = true;
             this.label5.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.label5.Location = new System.Drawing.Point(284, 171);
-            this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.label5.Location = new System.Drawing.Point(213, 136);
             this.label5.Name = "label5";
-            this.label5.Size = new System.Drawing.Size(92, 27);
+            this.label5.Size = new System.Drawing.Size(74, 21);
             this.label5.TabIndex = 188;
             this.label5.Text = "订单编号";
             // 
@@ -489,10 +473,9 @@
             // 
             this.ms_makecode_label.AutoSize = true;
             this.ms_makecode_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ms_makecode_label.Location = new System.Drawing.Point(9, 171);
-            this.ms_makecode_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.ms_makecode_label.Location = new System.Drawing.Point(7, 136);
             this.ms_makecode_label.Name = "ms_makecode_label";
-            this.ms_makecode_label.Size = new System.Drawing.Size(72, 27);
+            this.ms_makecode_label.Size = new System.Drawing.Size(58, 21);
             this.ms_makecode_label.TabIndex = 189;
             this.ms_makecode_label.Text = "工单号";
             // 
@@ -500,31 +483,28 @@
             // 
             this.ms_salecode.AutoSize = true;
             this.ms_salecode.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ms_salecode.Location = new System.Drawing.Point(396, 171);
-            this.ms_salecode.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.ms_salecode.Location = new System.Drawing.Point(297, 136);
             this.ms_salecode.Name = "ms_salecode";
-            this.ms_salecode.Size = new System.Drawing.Size(0, 27);
+            this.ms_salecode.Size = new System.Drawing.Size(0, 21);
             this.ms_salecode.TabIndex = 191;
             // 
             // ms_makecode
             // 
             this.ms_makecode.AutoSize = true;
             this.ms_makecode.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ms_makecode.Location = new System.Drawing.Point(117, 171);
-            this.ms_makecode.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
-            this.ms_makecode.MaximumSize = new System.Drawing.Size(200, 0);
+            this.ms_makecode.Location = new System.Drawing.Point(88, 136);
+            this.ms_makecode.MaximumSize = new System.Drawing.Size(150, 0);
             this.ms_makecode.Name = "ms_makecode";
-            this.ms_makecode.Size = new System.Drawing.Size(0, 27);
+            this.ms_makecode.Size = new System.Drawing.Size(0, 21);
             this.ms_makecode.TabIndex = 190;
             // 
             // OutBoxLength_label
             // 
             this.OutBoxLength_label.AutoSize = true;
             this.OutBoxLength_label.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.OutBoxLength_label.Location = new System.Drawing.Point(117, 21);
-            this.OutBoxLength_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.OutBoxLength_label.Location = new System.Drawing.Point(88, 16);
             this.OutBoxLength_label.Name = "OutBoxLength_label";
-            this.OutBoxLength_label.Size = new System.Drawing.Size(46, 24);
+            this.OutBoxLength_label.Size = new System.Drawing.Size(37, 20);
             this.OutBoxLength_label.TabIndex = 187;
             this.OutBoxLength_label.Text = "长度";
             // 
@@ -534,11 +514,11 @@
             this.OutBoxLength.BackColor = System.Drawing.Color.White;
             this.OutBoxLength.Font = new System.Drawing.Font("微软雅黑", 9F);
             this.OutBoxLength.ID = null;
-            this.OutBoxLength.Location = new System.Drawing.Point(175, 19);
-            this.OutBoxLength.Margin = new System.Windows.Forms.Padding(8, 9, 8, 9);
+            this.OutBoxLength.Location = new System.Drawing.Point(131, 15);
+            this.OutBoxLength.Margin = new System.Windows.Forms.Padding(6, 7, 6, 7);
             this.OutBoxLength.Name = "OutBoxLength";
             this.OutBoxLength.Power = null;
-            this.OutBoxLength.Size = new System.Drawing.Size(52, 27);
+            this.OutBoxLength.Size = new System.Drawing.Size(40, 23);
             this.OutBoxLength.Str = null;
             this.OutBoxLength.Str1 = null;
             this.OutBoxLength.Str2 = null;
@@ -552,11 +532,10 @@
             this.pr_outboxinnerqty.Enabled = false;
             this.pr_outboxinnerqty.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.pr_outboxinnerqty.ID = null;
-            this.pr_outboxinnerqty.Location = new System.Drawing.Point(121, 96);
-            this.pr_outboxinnerqty.Margin = new System.Windows.Forms.Padding(4);
+            this.pr_outboxinnerqty.Location = new System.Drawing.Point(91, 77);
             this.pr_outboxinnerqty.Name = "pr_outboxinnerqty";
             this.pr_outboxinnerqty.Power = null;
-            this.pr_outboxinnerqty.Size = new System.Drawing.Size(145, 27);
+            this.pr_outboxinnerqty.Size = new System.Drawing.Size(110, 23);
             this.pr_outboxinnerqty.Str = null;
             this.pr_outboxinnerqty.Str1 = null;
             this.pr_outboxinnerqty.Str2 = null;
@@ -570,13 +549,12 @@
             this.DeleteAll.Font = new System.Drawing.Font("微软雅黑", 9F);
             this.DeleteAll.Image = null;
             this.DeleteAll.IsShowBorder = true;
-            this.DeleteAll.Location = new System.Drawing.Point(468, 53);
-            this.DeleteAll.Margin = new System.Windows.Forms.Padding(4);
+            this.DeleteAll.Location = new System.Drawing.Point(351, 42);
             this.DeleteAll.MoveImage = ((System.Drawing.Image)(resources.GetObject("DeleteAll.MoveImage")));
             this.DeleteAll.Name = "DeleteAll";
             this.DeleteAll.NormalImage = ((System.Drawing.Image)(resources.GetObject("DeleteAll.NormalImage")));
             this.DeleteAll.Power = "ifspecial";
-            this.DeleteAll.Size = new System.Drawing.Size(61, 30);
+            this.DeleteAll.Size = new System.Drawing.Size(46, 24);
             this.DeleteAll.TabIndex = 184;
             this.DeleteAll.Text = "拆箱";
             this.DeleteAll.UseVisualStyleBackColor = true;
@@ -586,10 +564,9 @@
             // 
             this.pa_currentqty_label.AutoSize = true;
             this.pa_currentqty_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_currentqty_label.Location = new System.Drawing.Point(284, 98);
-            this.pa_currentqty_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_currentqty_label.Location = new System.Drawing.Point(213, 78);
             this.pa_currentqty_label.Name = "pa_currentqty_label";
-            this.pa_currentqty_label.Size = new System.Drawing.Size(92, 27);
+            this.pa_currentqty_label.Size = new System.Drawing.Size(74, 21);
             this.pa_currentqty_label.TabIndex = 175;
             this.pa_currentqty_label.Text = "已装数量";
             // 
@@ -597,10 +574,9 @@
             // 
             this.pr_detail_label.AutoSize = true;
             this.pr_detail_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pr_detail_label.Location = new System.Drawing.Point(284, 134);
-            this.pr_detail_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pr_detail_label.Location = new System.Drawing.Point(213, 106);
             this.pr_detail_label.Name = "pr_detail_label";
-            this.pr_detail_label.Size = new System.Drawing.Size(92, 27);
+            this.pr_detail_label.Size = new System.Drawing.Size(74, 21);
             this.pr_detail_label.TabIndex = 173;
             this.pr_detail_label.Text = "产品名称";
             // 
@@ -608,20 +584,18 @@
             // 
             this.pa_currentqty.AutoSize = true;
             this.pa_currentqty.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_currentqty.Location = new System.Drawing.Point(396, 98);
-            this.pa_currentqty.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_currentqty.Location = new System.Drawing.Point(297, 78);
             this.pa_currentqty.Name = "pa_currentqty";
-            this.pa_currentqty.Size = new System.Drawing.Size(0, 27);
+            this.pa_currentqty.Size = new System.Drawing.Size(0, 21);
             this.pa_currentqty.TabIndex = 179;
             // 
             // pr_code_label
             // 
             this.pr_code_label.AutoSize = true;
             this.pr_code_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pr_code_label.Location = new System.Drawing.Point(9, 135);
-            this.pr_code_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pr_code_label.Location = new System.Drawing.Point(7, 107);
             this.pr_code_label.Name = "pr_code_label";
-            this.pr_code_label.Size = new System.Drawing.Size(92, 27);
+            this.pr_code_label.Size = new System.Drawing.Size(74, 21);
             this.pr_code_label.TabIndex = 174;
             this.pr_code_label.Text = "产品编号";
             // 
@@ -629,20 +603,18 @@
             // 
             this.pr_detail.AutoSize = true;
             this.pr_detail.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pr_detail.Location = new System.Drawing.Point(396, 134);
-            this.pr_detail.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pr_detail.Location = new System.Drawing.Point(297, 106);
             this.pr_detail.Name = "pr_detail";
-            this.pr_detail.Size = new System.Drawing.Size(0, 27);
+            this.pr_detail.Size = new System.Drawing.Size(0, 21);
             this.pr_detail.TabIndex = 178;
             // 
             // pr_outboxinnerqty_label
             // 
             this.pr_outboxinnerqty_label.AutoSize = true;
             this.pr_outboxinnerqty_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pr_outboxinnerqty_label.Location = new System.Drawing.Point(9, 96);
-            this.pr_outboxinnerqty_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pr_outboxinnerqty_label.Location = new System.Drawing.Point(7, 76);
             this.pr_outboxinnerqty_label.Name = "pr_outboxinnerqty_label";
-            this.pr_outboxinnerqty_label.Size = new System.Drawing.Size(92, 27);
+            this.pr_outboxinnerqty_label.Size = new System.Drawing.Size(74, 21);
             this.pr_outboxinnerqty_label.TabIndex = 176;
             this.pr_outboxinnerqty_label.Text = "箱内容量";
             // 
@@ -650,21 +622,20 @@
             // 
             this.pr_code.AutoSize = true;
             this.pr_code.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pr_code.Location = new System.Drawing.Point(117, 135);
-            this.pr_code.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
-            this.pr_code.MaximumSize = new System.Drawing.Size(200, 0);
+            this.pr_code.Location = new System.Drawing.Point(88, 107);
+            this.pr_code.MaximumSize = new System.Drawing.Size(150, 0);
             this.pr_code.Name = "pr_code";
-            this.pr_code.Size = new System.Drawing.Size(0, 27);
+            this.pr_code.Size = new System.Drawing.Size(0, 21);
             this.pr_code.TabIndex = 177;
             this.pr_code.TextChanged += new System.EventHandler(this.pr_code_TextChanged);
             // 
             // AutoGenBoxCode
             // 
             this.AutoGenBoxCode.AutoSize = true;
-            this.AutoGenBoxCode.Location = new System.Drawing.Point(327, 56);
-            this.AutoGenBoxCode.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.AutoGenBoxCode.Location = new System.Drawing.Point(245, 44);
+            this.AutoGenBoxCode.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.AutoGenBoxCode.Name = "AutoGenBoxCode";
-            this.AutoGenBoxCode.Size = new System.Drawing.Size(114, 31);
+            this.AutoGenBoxCode.Size = new System.Drawing.Size(93, 25);
             this.AutoGenBoxCode.TabIndex = 171;
             this.AutoGenBoxCode.Text = "自动生成";
             this.AutoGenBoxCode.UseVisualStyleBackColor = true;
@@ -672,10 +643,10 @@
             // StepCount
             // 
             this.StepCount.LineCode = null;
-            this.StepCount.Location = new System.Drawing.Point(148, 27);
-            this.StepCount.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.StepCount.Location = new System.Drawing.Point(111, 19);
+            this.StepCount.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
             this.StepCount.Name = "StepCount";
-            this.StepCount.Size = new System.Drawing.Size(117, 29);
+            this.StepCount.Size = new System.Drawing.Size(88, 23);
             this.StepCount.Source = null;
             this.StepCount.StepCode = null;
             this.StepCount.TabIndex = 192;
@@ -702,11 +673,11 @@
             this.groupBoxWithBorder2.Controls.Add(this.PrintList_label);
             this.groupBoxWithBorder2.Controls.Add(this.PrintNum_label);
             this.groupBoxWithBorder2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.groupBoxWithBorder2.Location = new System.Drawing.Point(560, 8);
-            this.groupBoxWithBorder2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.groupBoxWithBorder2.Location = new System.Drawing.Point(420, 6);
+            this.groupBoxWithBorder2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.groupBoxWithBorder2.Name = "groupBoxWithBorder2";
-            this.groupBoxWithBorder2.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
-            this.groupBoxWithBorder2.Size = new System.Drawing.Size(595, 210);
+            this.groupBoxWithBorder2.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
+            this.groupBoxWithBorder2.Size = new System.Drawing.Size(446, 168);
             this.groupBoxWithBorder2.TabIndex = 172;
             this.groupBoxWithBorder2.TabStop = false;
             this.groupBoxWithBorder2.Text = "打印";
@@ -719,11 +690,10 @@
             this.PrintNum.Enabled = false;
             this.PrintNum.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
             this.PrintNum.ID = null;
-            this.PrintNum.Location = new System.Drawing.Point(323, 160);
-            this.PrintNum.Margin = new System.Windows.Forms.Padding(4);
+            this.PrintNum.Location = new System.Drawing.Point(242, 128);
             this.PrintNum.Name = "PrintNum";
             this.PrintNum.Power = null;
-            this.PrintNum.Size = new System.Drawing.Size(41, 27);
+            this.PrintNum.Size = new System.Drawing.Size(32, 23);
             this.PrintNum.Str = null;
             this.PrintNum.Str1 = null;
             this.PrintNum.Str2 = null;
@@ -733,10 +703,9 @@
             // 
             this.label1.AutoSize = true;
             this.label1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.label1.Location = new System.Drawing.Point(363, 23);
-            this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.label1.Location = new System.Drawing.Point(272, 25);
             this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(92, 27);
+            this.label1.Size = new System.Drawing.Size(74, 21);
             this.label1.TabIndex = 180;
             this.label1.Text = "当前批号";
             // 
@@ -745,41 +714,37 @@
             this.checkweightlabel.AutoSize = true;
             this.checkweightlabel.CutLength = null;
             this.checkweightlabel.ForeColor = System.Drawing.Color.Black;
-            this.checkweightlabel.Location = new System.Drawing.Point(24, 25);
-            this.checkweightlabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
-            this.checkweightlabel.MaximumSize = new System.Drawing.Size(267, 0);
+            this.checkweightlabel.Location = new System.Drawing.Point(18, 19);
+            this.checkweightlabel.MaximumSize = new System.Drawing.Size(200, 0);
             this.checkweightlabel.Name = "checkweightlabel";
-            this.checkweightlabel.Size = new System.Drawing.Size(0, 27);
+            this.checkweightlabel.Size = new System.Drawing.Size(0, 21);
             this.checkweightlabel.TabIndex = 179;
             // 
             // ob_nowcheckqty
             // 
             this.ob_nowcheckqty.AutoSize = true;
             this.ob_nowcheckqty.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ob_nowcheckqty.Location = new System.Drawing.Point(471, 111);
-            this.ob_nowcheckqty.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.ob_nowcheckqty.Location = new System.Drawing.Point(353, 95);
             this.ob_nowcheckqty.Name = "ob_nowcheckqty";
-            this.ob_nowcheckqty.Size = new System.Drawing.Size(0, 27);
+            this.ob_nowcheckqty.Size = new System.Drawing.Size(0, 21);
             this.ob_nowcheckqty.TabIndex = 178;
             // 
             // ob_batchqty
             // 
             this.ob_batchqty.AutoSize = true;
             this.ob_batchqty.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ob_batchqty.Location = new System.Drawing.Point(471, 66);
-            this.ob_batchqty.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.ob_batchqty.Location = new System.Drawing.Point(353, 59);
             this.ob_batchqty.Name = "ob_batchqty";
-            this.ob_batchqty.Size = new System.Drawing.Size(0, 27);
+            this.ob_batchqty.Size = new System.Drawing.Size(0, 21);
             this.ob_batchqty.TabIndex = 177;
             // 
             // ob_nowcheckqty_label
             // 
             this.ob_nowcheckqty_label.AutoSize = true;
             this.ob_nowcheckqty_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ob_nowcheckqty_label.Location = new System.Drawing.Point(363, 111);
-            this.ob_nowcheckqty_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.ob_nowcheckqty_label.Location = new System.Drawing.Point(272, 95);
             this.ob_nowcheckqty_label.Name = "ob_nowcheckqty_label";
-            this.ob_nowcheckqty_label.Size = new System.Drawing.Size(92, 27);
+            this.ob_nowcheckqty_label.Size = new System.Drawing.Size(74, 21);
             this.ob_nowcheckqty_label.TabIndex = 176;
             this.ob_nowcheckqty_label.Text = "当前批数";
             // 
@@ -787,10 +752,9 @@
             // 
             this.ob_batchqty_label.AutoSize = true;
             this.ob_batchqty_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ob_batchqty_label.Location = new System.Drawing.Point(363, 66);
-            this.ob_batchqty_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.ob_batchqty_label.Location = new System.Drawing.Point(272, 59);
             this.ob_batchqty_label.Name = "ob_batchqty_label";
-            this.ob_batchqty_label.Size = new System.Drawing.Size(92, 27);
+            this.ob_batchqty_label.Size = new System.Drawing.Size(74, 21);
             this.ob_batchqty_label.TabIndex = 175;
             this.ob_batchqty_label.Text = "标准批数";
             // 
@@ -802,13 +766,12 @@
             this.SendCheck.Font = new System.Drawing.Font("微软雅黑", 9F);
             this.SendCheck.Image = null;
             this.SendCheck.IsShowBorder = true;
-            this.SendCheck.Location = new System.Drawing.Point(492, 160);
-            this.SendCheck.Margin = new System.Windows.Forms.Padding(4);
+            this.SendCheck.Location = new System.Drawing.Point(369, 128);
             this.SendCheck.MoveImage = ((System.Drawing.Image)(resources.GetObject("SendCheck.MoveImage")));
             this.SendCheck.Name = "SendCheck";
             this.SendCheck.NormalImage = ((System.Drawing.Image)(resources.GetObject("SendCheck.NormalImage")));
             this.SendCheck.Power = null;
-            this.SendCheck.Size = new System.Drawing.Size(60, 30);
+            this.SendCheck.Size = new System.Drawing.Size(45, 24);
             this.SendCheck.TabIndex = 174;
             this.SendCheck.Tag = "ifread";
             this.SendCheck.Text = "送检";
@@ -823,13 +786,12 @@
             this.Packing.Font = new System.Drawing.Font("微软雅黑", 9F);
             this.Packing.Image = null;
             this.Packing.IsShowBorder = true;
-            this.Packing.Location = new System.Drawing.Point(11, 160);
-            this.Packing.Margin = new System.Windows.Forms.Padding(4);
+            this.Packing.Location = new System.Drawing.Point(8, 128);
             this.Packing.MoveImage = ((System.Drawing.Image)(resources.GetObject("Packing.MoveImage")));
             this.Packing.Name = "Packing";
             this.Packing.NormalImage = ((System.Drawing.Image)(resources.GetObject("Packing.NormalImage")));
             this.Packing.Power = null;
-            this.Packing.Size = new System.Drawing.Size(67, 30);
+            this.Packing.Size = new System.Drawing.Size(50, 24);
             this.Packing.TabIndex = 173;
             this.Packing.Text = "封箱";
             this.Packing.UseVisualStyleBackColor = true;
@@ -839,10 +801,9 @@
             // 
             this.ob_checkno.AutoSize = true;
             this.ob_checkno.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ob_checkno.Location = new System.Drawing.Point(471, 23);
-            this.ob_checkno.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.ob_checkno.Location = new System.Drawing.Point(353, 25);
             this.ob_checkno.Name = "ob_checkno";
-            this.ob_checkno.Size = new System.Drawing.Size(0, 27);
+            this.ob_checkno.Size = new System.Drawing.Size(0, 21);
             this.ob_checkno.TabIndex = 175;
             this.ob_checkno.TextChanged += new System.EventHandler(this.ob_checkno_TextChanged);
             // 
@@ -850,10 +811,9 @@
             // 
             this.pr_packrule.AutoSize = true;
             this.pr_packrule.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pr_packrule.Location = new System.Drawing.Point(1132, 568);
-            this.pr_packrule.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pr_packrule.Location = new System.Drawing.Point(849, 454);
             this.pr_packrule.Name = "pr_packrule";
-            this.pr_packrule.Size = new System.Drawing.Size(0, 27);
+            this.pr_packrule.Size = new System.Drawing.Size(0, 21);
             this.pr_packrule.TabIndex = 173;
             this.pr_packrule.Visible = false;
             // 
@@ -861,10 +821,9 @@
             // 
             this.pa_status.AutoSize = true;
             this.pa_status.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_status.Location = new System.Drawing.Point(1036, 536);
-            this.pa_status.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_status.Location = new System.Drawing.Point(777, 429);
             this.pa_status.Name = "pa_status";
-            this.pa_status.Size = new System.Drawing.Size(0, 27);
+            this.pa_status.Size = new System.Drawing.Size(0, 21);
             this.pa_status.TabIndex = 174;
             this.pa_status.Visible = false;
             // 
@@ -879,11 +838,11 @@
             this.groupBoxWithBorder3.Controls.Add(this.weight);
             this.groupBoxWithBorder3.Controls.Add(this.label2);
             this.groupBoxWithBorder3.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.groupBoxWithBorder3.Location = new System.Drawing.Point(840, 222);
-            this.groupBoxWithBorder3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.groupBoxWithBorder3.Location = new System.Drawing.Point(630, 178);
+            this.groupBoxWithBorder3.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.groupBoxWithBorder3.Name = "groupBoxWithBorder3";
-            this.groupBoxWithBorder3.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
-            this.groupBoxWithBorder3.Size = new System.Drawing.Size(316, 301);
+            this.groupBoxWithBorder3.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
+            this.groupBoxWithBorder3.Size = new System.Drawing.Size(237, 241);
             this.groupBoxWithBorder3.TabIndex = 172;
             this.groupBoxWithBorder3.TabStop = false;
             this.groupBoxWithBorder3.Text = "称量信息";
@@ -897,13 +856,12 @@
             this.RefreshWeigh.Font = new System.Drawing.Font("微软雅黑", 9F);
             this.RefreshWeigh.Image = null;
             this.RefreshWeigh.IsShowBorder = true;
-            this.RefreshWeigh.Location = new System.Drawing.Point(148, 168);
-            this.RefreshWeigh.Margin = new System.Windows.Forms.Padding(4);
+            this.RefreshWeigh.Location = new System.Drawing.Point(111, 125);
             this.RefreshWeigh.MoveImage = ((System.Drawing.Image)(resources.GetObject("RefreshWeigh.MoveImage")));
             this.RefreshWeigh.Name = "RefreshWeigh";
             this.RefreshWeigh.NormalImage = ((System.Drawing.Image)(resources.GetObject("RefreshWeigh.NormalImage")));
             this.RefreshWeigh.Power = null;
-            this.RefreshWeigh.Size = new System.Drawing.Size(77, 30);
+            this.RefreshWeigh.Size = new System.Drawing.Size(58, 24);
             this.RefreshWeigh.TabIndex = 185;
             this.RefreshWeigh.Tag = "ifread";
             this.RefreshWeigh.Text = "刷新重量";
@@ -914,10 +872,9 @@
             // 
             this.pr_cartonunit1.AutoSize = true;
             this.pr_cartonunit1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pr_cartonunit1.Location = new System.Drawing.Point(107, 157);
-            this.pr_cartonunit1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pr_cartonunit1.Location = new System.Drawing.Point(80, 125);
             this.pr_cartonunit1.Name = "pr_cartonunit1";
-            this.pr_cartonunit1.Size = new System.Drawing.Size(25, 27);
+            this.pr_cartonunit1.Size = new System.Drawing.Size(20, 21);
             this.pr_cartonunit1.TabIndex = 184;
             this.pr_cartonunit1.Tag = "pr_cartonunit";
             this.pr_cartonunit1.Text = "g";
@@ -927,10 +884,9 @@
             // 
             this.pr_cartonunit.AutoSize = true;
             this.pr_cartonunit.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pr_cartonunit.Location = new System.Drawing.Point(65, 29);
-            this.pr_cartonunit.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pr_cartonunit.Location = new System.Drawing.Point(49, 22);
             this.pr_cartonunit.Name = "pr_cartonunit";
-            this.pr_cartonunit.Size = new System.Drawing.Size(25, 27);
+            this.pr_cartonunit.Size = new System.Drawing.Size(20, 21);
             this.pr_cartonunit.TabIndex = 183;
             this.pr_cartonunit.Text = "g";
             this.pr_cartonunit.Visible = false;
@@ -939,20 +895,18 @@
             // 
             this.pr_cartonboxgw.AutoSize = true;
             this.pr_cartonboxgw.Font = new System.Drawing.Font("微软雅黑", 25F);
-            this.pr_cartonboxgw.Location = new System.Drawing.Point(20, 203);
-            this.pr_cartonboxgw.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pr_cartonboxgw.Location = new System.Drawing.Point(15, 162);
             this.pr_cartonboxgw.Name = "pr_cartonboxgw";
-            this.pr_cartonboxgw.Size = new System.Drawing.Size(0, 55);
+            this.pr_cartonboxgw.Size = new System.Drawing.Size(0, 45);
             this.pr_cartonboxgw.TabIndex = 182;
             // 
             // label4
             // 
             this.label4.AutoSize = true;
             this.label4.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.label4.Location = new System.Drawing.Point(9, 157);
-            this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.label4.Location = new System.Drawing.Point(7, 125);
             this.label4.Name = "label4";
-            this.label4.Size = new System.Drawing.Size(92, 27);
+            this.label4.Size = new System.Drawing.Size(74, 21);
             this.label4.TabIndex = 181;
             this.label4.Text = "标准重量";
             // 
@@ -961,20 +915,18 @@
             this.weight.AutoSize = true;
             this.weight.Font = new System.Drawing.Font("微软雅黑", 35F);
             this.weight.ForeColor = System.Drawing.Color.DarkGreen;
-            this.weight.Location = new System.Drawing.Point(17, 71);
-            this.weight.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.weight.Location = new System.Drawing.Point(13, 56);
             this.weight.Name = "weight";
-            this.weight.Size = new System.Drawing.Size(0, 78);
+            this.weight.Size = new System.Drawing.Size(0, 60);
             this.weight.TabIndex = 180;
             // 
             // label2
             // 
             this.label2.AutoSize = true;
             this.label2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.label2.Location = new System.Drawing.Point(9, 29);
-            this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.label2.Location = new System.Drawing.Point(7, 22);
             this.label2.Name = "label2";
-            this.label2.Size = new System.Drawing.Size(52, 27);
+            this.label2.Size = new System.Drawing.Size(42, 21);
             this.label2.TabIndex = 179;
             this.label2.Text = "重量";
             // 
@@ -982,10 +934,9 @@
             // 
             this.Baurate.AutoSize = true;
             this.Baurate.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.Baurate.Location = new System.Drawing.Point(955, 536);
-            this.Baurate.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.Baurate.Location = new System.Drawing.Point(716, 429);
             this.Baurate.Name = "Baurate";
-            this.Baurate.Size = new System.Drawing.Size(0, 27);
+            this.Baurate.Size = new System.Drawing.Size(0, 21);
             this.Baurate.TabIndex = 176;
             this.Baurate.Visible = false;
             // 
@@ -993,10 +944,9 @@
             // 
             this.ComList.AutoSize = true;
             this.ComList.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.ComList.Location = new System.Drawing.Point(977, 536);
-            this.ComList.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.ComList.Location = new System.Drawing.Point(733, 429);
             this.ComList.Name = "ComList";
-            this.ComList.Size = new System.Drawing.Size(0, 27);
+            this.ComList.Size = new System.Drawing.Size(0, 21);
             this.ComList.TabIndex = 177;
             this.ComList.Visible = false;
             // 
@@ -1004,10 +954,9 @@
             // 
             this.pa_downstatus.AutoSize = true;
             this.pa_downstatus.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_downstatus.Location = new System.Drawing.Point(1108, 568);
-            this.pa_downstatus.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_downstatus.Location = new System.Drawing.Point(831, 454);
             this.pa_downstatus.Name = "pa_downstatus";
-            this.pa_downstatus.Size = new System.Drawing.Size(0, 27);
+            this.pa_downstatus.Size = new System.Drawing.Size(0, 21);
             this.pa_downstatus.TabIndex = 179;
             this.pa_downstatus.Visible = false;
             // 
@@ -1015,10 +964,9 @@
             // 
             this.pa_checkno.AutoSize = true;
             this.pa_checkno.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_checkno.Location = new System.Drawing.Point(1116, 589);
-            this.pa_checkno.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_checkno.Location = new System.Drawing.Point(837, 471);
             this.pa_checkno.Name = "pa_checkno";
-            this.pa_checkno.Size = new System.Drawing.Size(0, 27);
+            this.pa_checkno.Size = new System.Drawing.Size(0, 21);
             this.pa_checkno.TabIndex = 180;
             this.pa_checkno.Visible = false;
             // 
@@ -1026,10 +974,9 @@
             // 
             this.pa_sccode.AutoSize = true;
             this.pa_sccode.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_sccode.Location = new System.Drawing.Point(1100, 568);
-            this.pa_sccode.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_sccode.Location = new System.Drawing.Point(825, 454);
             this.pa_sccode.Name = "pa_sccode";
-            this.pa_sccode.Size = new System.Drawing.Size(0, 27);
+            this.pa_sccode.Size = new System.Drawing.Size(0, 21);
             this.pa_sccode.TabIndex = 181;
             this.pa_sccode.Visible = false;
             // 
@@ -1037,10 +984,9 @@
             // 
             this.pa_standardqty.AutoSize = true;
             this.pa_standardqty.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_standardqty.Location = new System.Drawing.Point(1047, 589);
-            this.pa_standardqty.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_standardqty.Location = new System.Drawing.Point(785, 471);
             this.pa_standardqty.Name = "pa_standardqty";
-            this.pa_standardqty.Size = new System.Drawing.Size(0, 27);
+            this.pa_standardqty.Size = new System.Drawing.Size(0, 21);
             this.pa_standardqty.TabIndex = 183;
             this.pa_standardqty.Visible = false;
             // 
@@ -1048,10 +994,9 @@
             // 
             this.pr_sendchecktype.AutoSize = true;
             this.pr_sendchecktype.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pr_sendchecktype.Location = new System.Drawing.Point(820, 545);
-            this.pr_sendchecktype.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pr_sendchecktype.Location = new System.Drawing.Point(615, 436);
             this.pr_sendchecktype.Name = "pr_sendchecktype";
-            this.pr_sendchecktype.Size = new System.Drawing.Size(0, 27);
+            this.pr_sendchecktype.Size = new System.Drawing.Size(0, 21);
             this.pr_sendchecktype.TabIndex = 195;
             this.pr_sendchecktype.Visible = false;
             // 
@@ -1059,10 +1004,9 @@
             // 
             this.mcd_remainqty_label.AutoSize = true;
             this.mcd_remainqty_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.mcd_remainqty_label.Location = new System.Drawing.Point(615, 585);
-            this.mcd_remainqty_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.mcd_remainqty_label.Location = new System.Drawing.Point(461, 468);
             this.mcd_remainqty_label.Name = "mcd_remainqty_label";
-            this.mcd_remainqty_label.Size = new System.Drawing.Size(92, 27);
+            this.mcd_remainqty_label.Size = new System.Drawing.Size(74, 21);
             this.mcd_remainqty_label.TabIndex = 195;
             this.mcd_remainqty_label.Text = "待采集数";
             // 
@@ -1070,20 +1014,18 @@
             // 
             this.mcd_remainqty.AutoSize = true;
             this.mcd_remainqty.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.mcd_remainqty.Location = new System.Drawing.Point(727, 585);
-            this.mcd_remainqty.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.mcd_remainqty.Location = new System.Drawing.Point(545, 468);
             this.mcd_remainqty.Name = "mcd_remainqty";
-            this.mcd_remainqty.Size = new System.Drawing.Size(0, 27);
+            this.mcd_remainqty.Size = new System.Drawing.Size(0, 21);
             this.mcd_remainqty.TabIndex = 196;
             // 
             // mcd_inqty_label
             // 
             this.mcd_inqty_label.AutoSize = true;
             this.mcd_inqty_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.mcd_inqty_label.Location = new System.Drawing.Point(615, 541);
-            this.mcd_inqty_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.mcd_inqty_label.Location = new System.Drawing.Point(461, 433);
             this.mcd_inqty_label.Name = "mcd_inqty_label";
-            this.mcd_inqty_label.Size = new System.Drawing.Size(92, 27);
+            this.mcd_inqty_label.Size = new System.Drawing.Size(74, 21);
             this.mcd_inqty_label.TabIndex = 193;
             this.mcd_inqty_label.Text = "已采集数";
             // 
@@ -1091,20 +1033,18 @@
             // 
             this.mcd_inqty.AutoSize = true;
             this.mcd_inqty.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.mcd_inqty.Location = new System.Drawing.Point(727, 541);
-            this.mcd_inqty.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.mcd_inqty.Location = new System.Drawing.Point(545, 433);
             this.mcd_inqty.Name = "mcd_inqty";
-            this.mcd_inqty.Size = new System.Drawing.Size(0, 27);
+            this.mcd_inqty.Size = new System.Drawing.Size(0, 21);
             this.mcd_inqty.TabIndex = 194;
             // 
             // pa_remark_label
             // 
             this.pa_remark_label.AutoSize = true;
             this.pa_remark_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.pa_remark_label.Location = new System.Drawing.Point(615, 626);
-            this.pa_remark_label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.pa_remark_label.Location = new System.Drawing.Point(461, 501);
             this.pa_remark_label.Name = "pa_remark_label";
-            this.pa_remark_label.Size = new System.Drawing.Size(52, 27);
+            this.pa_remark_label.Size = new System.Drawing.Size(42, 21);
             this.pa_remark_label.TabIndex = 197;
             this.pa_remark_label.Text = "备注";
             // 
@@ -1113,12 +1053,12 @@
             this.pa_remark.AllPower = null;
             this.pa_remark.BackColor = System.Drawing.Color.White;
             this.pa_remark.ID = null;
-            this.pa_remark.Location = new System.Drawing.Point(679, 626);
-            this.pa_remark.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.pa_remark.Location = new System.Drawing.Point(509, 501);
+            this.pa_remark.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.pa_remark.Multiline = true;
             this.pa_remark.Name = "pa_remark";
             this.pa_remark.Power = null;
-            this.pa_remark.Size = new System.Drawing.Size(196, 56);
+            this.pa_remark.Size = new System.Drawing.Size(148, 46);
             this.pa_remark.Str = null;
             this.pa_remark.Str1 = null;
             this.pa_remark.Str2 = null;
@@ -1128,19 +1068,18 @@
             // CollecRemark
             // 
             this.CollecRemark.AutoSize = true;
-            this.CollecRemark.Location = new System.Drawing.Point(679, 698);
-            this.CollecRemark.Margin = new System.Windows.Forms.Padding(4);
+            this.CollecRemark.Location = new System.Drawing.Point(509, 558);
             this.CollecRemark.Name = "CollecRemark";
-            this.CollecRemark.Size = new System.Drawing.Size(119, 19);
+            this.CollecRemark.Size = new System.Drawing.Size(96, 16);
             this.CollecRemark.TabIndex = 202;
             this.CollecRemark.Text = "采集备注信息";
             this.CollecRemark.UseVisualStyleBackColor = true;
             // 
             // Make_PackageCollectionWeigh
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(1172, 728);
+            this.ClientSize = new System.Drawing.Size(879, 582);
             this.Controls.Add(this.CollecRemark);
             this.Controls.Add(this.pa_remark);
             this.Controls.Add(this.pa_remark_label);
@@ -1169,7 +1108,6 @@
             this.Controls.Add(this.label13);
             this.Controls.Add(this.pa_makecode);
             this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
-            this.Margin = new System.Windows.Forms.Padding(4);
             this.Name = "Make_PackageCollectionWeigh";
             this.Tag = "Make!PackageCollectionWeigh";
             this.Text = "装箱称重";

+ 44 - 4
UAS-MES/FunctionCode/Make/Make_PackageCollectionWeigh.cs

@@ -40,6 +40,8 @@ namespace UAS_MES.Make
 
         string ActWeigh = "0";
 
+        Regex re = new Regex("\\d+.\\d+\\w+");
+
         decimal StandardQTY = 0;
 
         string oOutBoxCode = "";
@@ -127,7 +129,7 @@ namespace UAS_MES.Make
                         {
                             try
                             {
-                                weight.Text = serialPort1.ReadLine().Trim();
+                                weight.Text = re.Match(serialPort1.ReadLine().Trim()).Groups[0].Value;
                             }
                             catch (Exception)
                             {
@@ -399,7 +401,26 @@ namespace UAS_MES.Make
                                     //如果母箱号不为空,需要更新总数
                                     if (MotherBoxCode != "")
                                     {
-                                        dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherBoxCode + "') where pa_outboxcode='" + MotherBoxCode + "' and pa_type=3", "update");
+                                        DataTable dt = (DataTable)dh.ExecuteSql("select pa_mothercode,pa_type from package where pa_outboxcode='" + MotherBoxCode + "'", "select");
+                                        if (dt.Rows.Count > 0)
+                                        {
+                                            if (dt.Rows[0]["pa_type"].ToString() == "2")
+                                            {
+                                                string MotherCode2 = dt.Rows[0]["pa_mothercode"].ToString();
+                                                //更新大箱数量
+                                                dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherBoxCode + "') where pa_outboxcode='" + MotherBoxCode + "'", "update");
+                                                //外层有栈板则更新栈板数量
+                                                if (MotherCode2 != "")
+                                                {
+                                                    dh.ExecuteSql("update packagedetail set pd_innerqty=(select sum(pd_innerqty) from packagedetail where pd_outboxcode='" + MotherBoxCode + "') where pd_innerboxcode='" + MotherBoxCode + "'", "update");
+                                                    dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherCode2 + "') where pa_outboxcode='" + MotherCode2 + "'", "update");
+                                                }
+                                            }
+                                            if (dt.Rows[0]["pa_type"] == "3")
+                                            {
+                                                dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherBoxCode + "') where pa_outboxcode='" + MotherBoxCode + "'", "update");
+                                            }
+                                        }
                                     }
                                     //采集完后如果是第一个装的序列号,把序列号的NextStepCode赋值给箱号
                                     if (pa_currentqty.Text == "1")
@@ -469,7 +490,26 @@ namespace UAS_MES.Make
                                 //如果母箱号不为空,需要更新总数
                                 if (MotherBoxCode != "")
                                 {
-                                    dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherBoxCode + "') where pa_outboxcode='" + MotherBoxCode + "' and pa_type=3", "update");
+                                    DataTable dt = (DataTable)dh.ExecuteSql("select pa_mothercode,pa_type from package where pa_outboxcode='" + MotherBoxCode + "'", "select");
+                                    if (dt.Rows.Count > 0)
+                                    {
+                                        if (dt.Rows[0]["pa_type"].ToString() == "2")
+                                        {
+                                            string MotherCode2 = dt.Rows[0]["pa_mothercode"].ToString();
+                                            //更新大箱数量
+                                            dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherBoxCode + "') where pa_outboxcode='" + MotherBoxCode + "'", "update");
+                                            //外层有栈板则更新栈板数量
+                                            if (MotherCode2 != "")
+                                            {
+                                                dh.ExecuteSql("update packagedetail set pd_innerqty=(select sum(pd_innerqty) from packagedetail where pd_outboxcode='" + MotherBoxCode + "') where pd_innerboxcode='" + MotherBoxCode + "'", "update");
+                                                dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherCode2 + "') where pa_outboxcode='" + MotherCode2 + "'", "update");
+                                            }
+                                        }
+                                        if (dt.Rows[0]["pa_type"] == "3")
+                                        {
+                                            dh.ExecuteSql("update package set PA_TOTALQTY=(select sum(pd_innerqty) from packagedetail left join package on pa_id=pd_paid where pa_outboxcode='" + MotherBoxCode + "') where pa_outboxcode='" + MotherBoxCode + "'", "update");
+                                        }
+                                    }
                                 }
                                 LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, oMakeCode, User.UserLineCode, User.UserSourceCode, "卡通箱采集", "卡通箱" + pa_outboxcode.Text + "取消采集成功", sn_code.Text, "");
                                 LoadGridData();
@@ -722,7 +762,7 @@ namespace UAS_MES.Make
                                     }
                                     //更新序列号状态
                                     SQLS1.Add("update makecraftdetail set mcd_inqty=mcd_inqty-1,mcd_okqty=mcd_okqty-1 where mcd_macode='" + ma_code + "' and mcd_stepcode='" + ms_stepcode + "'");
-                                    SQLS1.Add("update makeserial set ms_status=1,ms_nextstepcode=ms_stepcode,ms_outboxcode='' where ms_sncode='" + ms_sncode + "' and ms_makecode='" + ma_code + "'");
+                                    SQLS1.Add("update makeserial set ms_status=1,ms_outboxcode='',ms_nextstepcode= (case when ms_nextstepcode='" + User.CurrentStepCode + "' then ms_nextstepcode else ms_stepcode end ) where ms_sncode='" + ms_sncode + "' and ms_makecode='" + ma_code + "'");
                                     SQLS1.Add("delete from makeprocess where mp_sncode='" + ms_sncode + "' and mp_makecode='" + ma_code + "' and mp_stepcode='" + ms_stepcode + "'");
                                     SQLS1.Add("delete from steppassed where sp_sncode='" + ms_sncode + "' and sp_makecode='" + ma_code + "' and sp_stepcode='" + ms_stepcode + "'");
                                     //抽检批次不为空的时候进行移除

+ 0 - 18
UAS-MES/FunctionCode/Make/Make_PackageCollectionWeigh.resx

@@ -212,24 +212,6 @@
   <metadata name="pd_id.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
-  <metadata name="pd_barcode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="pa_outboxcode1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="pa_prodcode1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="pd_innerqty.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="pa_indate.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="pd_id.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
   <data name="DeleteAll.DownImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAAEUAAAAWCAYAAACWl1FwAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m

+ 42 - 41
UAS-MES/FunctionCode/Make/Make_UpdateCollectCode.Designer.cs

@@ -63,12 +63,12 @@
             this.psr_length,
             this.Column1});
             this.collectCodeRules.Enabled = false;
-            this.collectCodeRules.Location = new System.Drawing.Point(279, 70);
-            this.collectCodeRules.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.collectCodeRules.Location = new System.Drawing.Point(186, 47);
+            this.collectCodeRules.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
             this.collectCodeRules.Name = "collectCodeRules";
             this.collectCodeRules.RowHeadersVisible = false;
             this.collectCodeRules.RowTemplate.Height = 30;
-            this.collectCodeRules.Size = new System.Drawing.Size(734, 235);
+            this.collectCodeRules.Size = new System.Drawing.Size(489, 157);
             this.collectCodeRules.TabIndex = 6;
             // 
             // psr_type
@@ -103,9 +103,10 @@
             // 
             this.label1.AutoSize = true;
             this.label1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.label1.Location = new System.Drawing.Point(274, 26);
+            this.label1.Location = new System.Drawing.Point(183, 17);
+            this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
             this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(110, 31);
+            this.label1.Size = new System.Drawing.Size(74, 21);
             this.label1.TabIndex = 7;
             this.label1.Text = "防呆规则";
             // 
@@ -142,11 +143,11 @@
             this.collects.Controls.Add(this.Imei1);
             this.collects.Controls.Add(this.Imei2);
             this.collects.Controls.Add(this.Imei3);
-            this.collects.Location = new System.Drawing.Point(27, 18);
-            this.collects.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.collects.Location = new System.Drawing.Point(18, 12);
+            this.collects.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
             this.collects.Name = "collects";
-            this.collects.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
-            this.collects.Size = new System.Drawing.Size(224, 287);
+            this.collects.Padding = new System.Windows.Forms.Padding(2, 1, 2, 1);
+            this.collects.Size = new System.Drawing.Size(149, 191);
             this.collects.TabIndex = 92;
             this.collects.TabStop = false;
             this.collects.TextColor = System.Drawing.Color.Black;
@@ -155,11 +156,11 @@
             // 
             this.Mac.AutoSize = true;
             this.Mac.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.Mac.Location = new System.Drawing.Point(37, 23);
-            this.Mac.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.Mac.Location = new System.Drawing.Point(25, 15);
+            this.Mac.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
             this.Mac.Name = "Mac";
             this.Mac.Power = null;
-            this.Mac.Size = new System.Drawing.Size(157, 35);
+            this.Mac.Size = new System.Drawing.Size(109, 25);
             this.Mac.TabIndex = 5;
             this.Mac.Text = "MAC/WIFI";
             this.Mac.UseVisualStyleBackColor = true;
@@ -169,11 +170,11 @@
             // 
             this.Bt.AutoSize = true;
             this.Bt.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.Bt.Location = new System.Drawing.Point(37, 67);
-            this.Bt.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.Bt.Location = new System.Drawing.Point(25, 44);
+            this.Bt.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
             this.Bt.Name = "Bt";
             this.Bt.Power = null;
-            this.Bt.Size = new System.Drawing.Size(69, 35);
+            this.Bt.Size = new System.Drawing.Size(48, 25);
             this.Bt.TabIndex = 4;
             this.Bt.Text = "BT";
             this.Bt.UseVisualStyleBackColor = true;
@@ -183,11 +184,11 @@
             // 
             this.NetCode.AutoSize = true;
             this.NetCode.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.NetCode.Location = new System.Drawing.Point(37, 110);
-            this.NetCode.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.NetCode.Location = new System.Drawing.Point(25, 73);
+            this.NetCode.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
             this.NetCode.Name = "NetCode";
             this.NetCode.Power = null;
-            this.NetCode.Size = new System.Drawing.Size(88, 35);
+            this.NetCode.Size = new System.Drawing.Size(61, 25);
             this.NetCode.TabIndex = 3;
             this.NetCode.Text = "网标";
             this.NetCode.UseVisualStyleBackColor = true;
@@ -197,11 +198,11 @@
             // 
             this.Imei1.AutoSize = true;
             this.Imei1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.Imei1.Location = new System.Drawing.Point(37, 154);
-            this.Imei1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.Imei1.Location = new System.Drawing.Point(25, 102);
+            this.Imei1.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
             this.Imei1.Name = "Imei1";
             this.Imei1.Power = null;
-            this.Imei1.Size = new System.Drawing.Size(104, 35);
+            this.Imei1.Size = new System.Drawing.Size(73, 25);
             this.Imei1.TabIndex = 2;
             this.Imei1.Text = "IMEI1";
             this.Imei1.UseVisualStyleBackColor = true;
@@ -211,11 +212,11 @@
             // 
             this.Imei2.AutoSize = true;
             this.Imei2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.Imei2.Location = new System.Drawing.Point(37, 198);
-            this.Imei2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.Imei2.Location = new System.Drawing.Point(25, 131);
+            this.Imei2.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
             this.Imei2.Name = "Imei2";
             this.Imei2.Power = null;
-            this.Imei2.Size = new System.Drawing.Size(104, 35);
+            this.Imei2.Size = new System.Drawing.Size(73, 25);
             this.Imei2.TabIndex = 1;
             this.Imei2.Text = "IMEI2";
             this.Imei2.UseVisualStyleBackColor = true;
@@ -225,11 +226,11 @@
             // 
             this.Imei3.AutoSize = true;
             this.Imei3.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.Imei3.Location = new System.Drawing.Point(37, 241);
-            this.Imei3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.Imei3.Location = new System.Drawing.Point(25, 160);
+            this.Imei3.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
             this.Imei3.Name = "Imei3";
             this.Imei3.Power = null;
-            this.Imei3.Size = new System.Drawing.Size(104, 35);
+            this.Imei3.Size = new System.Drawing.Size(73, 25);
             this.Imei3.TabIndex = 0;
             this.Imei3.Text = "IMEI3";
             this.Imei3.UseVisualStyleBackColor = true;
@@ -240,11 +241,11 @@
             this.inputValue.AllPower = null;
             this.inputValue.BackColor = System.Drawing.Color.White;
             this.inputValue.ID = null;
-            this.inputValue.Location = new System.Drawing.Point(165, 572);
-            this.inputValue.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.inputValue.Location = new System.Drawing.Point(110, 381);
+            this.inputValue.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
             this.inputValue.Name = "inputValue";
             this.inputValue.Power = null;
-            this.inputValue.Size = new System.Drawing.Size(257, 28);
+            this.inputValue.Size = new System.Drawing.Size(173, 21);
             this.inputValue.Str = null;
             this.inputValue.Str1 = null;
             this.inputValue.Str2 = null;
@@ -254,10 +255,9 @@
             // OperateResult
             // 
             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(27, 326);
-            this.OperateResult.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.OperateResult.Location = new System.Drawing.Point(18, 217);
             this.OperateResult.Name = "OperateResult";
-            this.OperateResult.Size = new System.Drawing.Size(985, 228);
+            this.OperateResult.Size = new System.Drawing.Size(658, 153);
             this.OperateResult.TabIndex = 88;
             this.OperateResult.Text = "";
             // 
@@ -265,17 +265,18 @@
             // 
             this.label3.AutoSize = true;
             this.label3.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.label3.Location = new System.Drawing.Point(78, 570);
+            this.label3.Location = new System.Drawing.Point(52, 380);
+            this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
             this.label3.Name = "label3";
-            this.label3.Size = new System.Drawing.Size(86, 31);
+            this.label3.Size = new System.Drawing.Size(58, 21);
             this.label3.TabIndex = 93;
             this.label3.Text = "输入框";
             // 
             // Make_UpdateCollectCode
             // 
-            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(1040, 614);
+            this.ClientSize = new System.Drawing.Size(693, 409);
             this.Controls.Add(this.label3);
             this.Controls.Add(this.collects);
             this.Controls.Add(this.inputValue);
@@ -283,16 +284,16 @@
             this.Controls.Add(this.label1);
             this.Controls.Add(this.collectCodeRules);
             this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
-            this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
             this.Name = "Make_UpdateCollectCode";
-            this.Text = "Make!UpdateCollectCode";
+            this.Tag = "Make!UpdateCollectCode";
             this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Make_UpdateCollectCode_FormClosing);
             this.Load += new System.EventHandler(this.Make_UpdateCollectCode_Load);
             this.SizeChanged += new System.EventHandler(this.Make_UpdateCollectCode_SizeChanged);
             ((System.ComponentModel.ISupportInitialize)(this.collectCodeRules)).EndInit();
-            this.collects.ResumeLayout(true);
+            this.collects.ResumeLayout(false);
             this.collects.PerformLayout();
-            this.ResumeLayout(true);
+            this.ResumeLayout(false);
             this.PerformLayout();
 
         }

+ 0 - 12
UAS-MES/FunctionCode/Make/Make_UpdateCollectCode.resx

@@ -129,16 +129,4 @@
   <metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
-  <metadata name="psr_type.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="psr_prefix.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="psr_length.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
 </root>

+ 2 - 2
UAS-MES/FunctionCode/OQC/OQC_Inspection.cs

@@ -54,8 +54,7 @@ namespace UAS_MES.OQC
                 sql.Append("insert into OQCBatch (ob_id, ob_checkno ,ob_status, ob_source,ob_indate,ob_checkman) ");
                 sql.Append("values( '" + ob_id + "','" + checkno + "', 'ENTERING', '新增', sysdate, '" + User.UserName + "')");
                 dh.ExecuteSql(sql.GetString(), "insert");
-                //记录操作日志
-                LogicHandler.InsertMessageLog(User.UserName, "生成新批", "成功", "", "");
+                LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "生成新品", "生成新批次成功", "", ob_checkno.Text);
                 //生成成功,将批次号,以及批次状态写入页面
                 BaseUtil.SetFormValue(Controls, dh.getFieldsDataByCondition("OQCBatch", new string[] { "ob_checkno", "ob_status" }, "ob_id='" + ob_id + "'"));
             }
@@ -119,6 +118,7 @@ namespace UAS_MES.OQC
                                     dh.UpdateByCondition("OQCBatch", "ob_nowcheckqty =(select count(1) from OQCBatchDetail where obd_checkno='" + ob_checkno.Text + "')", "ob_checkno='" + ob_checkno.Text + "'");
                                     dh.UpdateByCondition("makeserial", "ms_checkno='" + ob_checkno.Text + "'", "ms_outboxcode='" + pa_outboxcode.Text + "'");
                                     GetBatch.PerformClick();
+                                    LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "生成新品", pa_outboxcode.Text + "成功维护到送检批", "", ob_checkno.Text);
                                     OperateResult.AppendText(">>箱号" + pa_outboxcode.Text + "成功维护到送检批\n", Color.Green, pa_outboxcode);
                                 }
                                 //存在则进行提示

+ 2 - 1
UAS-MES/FunctionCode/Query/Query_ProductTraceBack.cs

@@ -7,6 +7,7 @@ using System.Linq;
 using System.Text;
 using System.Windows.Forms;
 using UAS_MES.DataOperate;
+using UAS_MES.Entity;
 using UAS_MES.PublicMethod;
 
 namespace UAS_MES.Query
@@ -26,7 +27,7 @@ namespace UAS_MES.Query
         private void 产品制程追溯_Load(object sender, EventArgs e)
         {
             asc.controllInitializeSize(this);
-            dh = new DataHelper();
+            dh = SystemInf.dh;
             ma_code.TableName = "make left join product on ma_prodcode=pr_code";
             ma_code.SelectField = "ma_code # 工单号,ma_prodcode # 产品编号,ma_qty # 工单数量,pr_detail # 产品名称";
             ma_code.FormName = Name;

+ 2 - 1
UAS-MES/FunctionCode/SystemSetting/SystemSetting_SysNav.cs

@@ -7,6 +7,7 @@ using System.Linq;
 using System.Text;
 using System.Windows.Forms;
 using UAS_MES.DataOperate;
+using UAS_MES.Entity;
 using UAS_MES.PublicMethod;
 
 namespace UAS_MES.SystemSetting
@@ -23,7 +24,7 @@ namespace UAS_MES.SystemSetting
 
         private void 导航管理_Load(object sender, EventArgs e)
         {
-            dh = new DataHelper();
+            dh = SystemInf.dh;
             dt = (DataTable)dh.ExecuteSql("select sn_id,sn_displayname,sn_detno,sn_using,sn_module from cs$sysnavation order by sn_module", "select");
             BaseUtil.FillDgvWithDataTable(SysNavDGV, dt);
             asc.controllInitializeSize(this);

+ 7 - 15
UAS-MES/Login.cs

@@ -62,10 +62,10 @@ namespace UAS_MES
             {
                 dh = new DataHelper();
                 //将账套的信息查询出来赋给下拉框
-                DbComboxData = (DataTable)dh.ExecuteSql("select ms_pwd,ma_user,ma_address from master", "select");
+                DbComboxData = (DataTable)dh.ExecuteSql("select ms_pwd,ma_user,ma_user||'#'||ma_address db_user from master", "select");
                 DB.DataSource = DbComboxData;
                 DB.DisplayMember = "ma_user";
-                DB.ValueMember = "ma_user";
+                DB.ValueMember = "db_user";
                 DB.Text = BaseUtil.GetCacheData("LastLoginSob").ToString();
                 LoginButton.Enabled = true;
             }
@@ -81,19 +81,11 @@ namespace UAS_MES
             if (DB.SelectedValue == null)
                 BaseUtil.ShowError("请选择一个数据库!");
             //设置选中数据库的链接
-            switch (DB.SelectedValue.ToString().ToUpper())
-            {
-                case "MES_TEST":
-                    DataHelper.DBConnectionString = "Password=select!#%*(;User ID=MES_TEST;Pooling=false;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.230.200)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));";
-                    break;
-                case "MES":
-                    DataHelper.DBConnectionString = "Password=select!#%*(;User ID=MES;Pooling=false;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.230.200)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));";
-                    break;
-                default:
-                    break;
-            }
-            SystemInf.CurrentDB = DB.SelectedValue.ToString().ToUpper();
-            //设置屏幕的宽高信息 
+            string DBUser = DB.SelectedValue.ToString().Split('#')[0];
+            string Address = DB.SelectedValue.ToString().Split('#')[1];
+            DataHelper.DBConnectionString = "Password=select!#%*(;User ID=" + DBUser + ";Pooling=false;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" + Address + ")(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));";
+            SystemInf.CurrentDB = DBUser;
+            //设置屏幕的宽高信息
             SystemInf.ScreenWidth = Screen.PrimaryScreen.WorkingArea.Width;
             SystemInf.ScreenHeight = Screen.PrimaryScreen.WorkingArea.Height;
             //重新执行一遍构造函数使得重置之后的链接字符串生效

+ 18 - 211
UAS-MES/PublicMethod/LogicHandler.cs

@@ -12,7 +12,7 @@ namespace UAS_MES.PublicMethod
     {
         public LogicHandler() { }
 
-        static DataHelper dh = new DataHelper();
+        static DataHelper dh = SystemInf.dh;
         //用于拼接SQL
         static StringBuilder sql = new StringBuilder();
         //用于存放批量执行的SQL
@@ -36,30 +36,6 @@ namespace UAS_MES.PublicMethod
             dh.ExecuteSql(sql.ToString(), "insert");
         }
 
-        /// <summary>
-        /// 检测当前的岗位资源对应的工序
-        /// </summary>
-        /// <param name="iSnCode"></param>
-        /// <param name="iMakeCode"></param>
-        /// <param name="iSourceCode"></param>
-        /// <param name="oErrorMessage"></param>
-        /// <returns></returns>
-        public static bool CheckCurrentStep(string iSnCode, string iMakeCode, string iSourceCode, string iUserCode, out string oMSID, out string oMacode, out string oErrorMessage)
-        {
-            oErrorMessage = "";
-            oMSID = "";
-            oMacode = "";
-            string[] param = new string[] { iMakeCode, iSourceCode, iSnCode, iUserCode, oMSID, oMacode, oErrorMessage };
-            dh.CallProcedure("CS_CHECKSTEPSNANDMACODE", ref param);
-            oMSID = param[4];
-            oMacode = param[5];
-            oErrorMessage = param[6];
-            if (oErrorMessage == "" || oErrorMessage == null || oErrorMessage == "null")
-                return true;
-            else
-                return false;
-        }
-
         /// <summary>
         /// 判断工单是否已经下放
         /// </summary>
@@ -91,7 +67,6 @@ namespace UAS_MES.PublicMethod
             SerialNum = param[2];
         }
 
-
         /// <summary>
         /// 验证用户身份信息
         /// </summary>
@@ -216,91 +191,6 @@ namespace UAS_MES.PublicMethod
             dh.ExecuteSql(sql.ToString(), "insert", iCaller, iUserCode, iLineCode, iSourceCode, iMakeCode, iOperate, iResult, iSncode, iCheckno);
         }
 
-        /// <summary>
-        /// 分配Mac地址和BT地址
-        /// </summary>
-        /// <param name="iSnCode"></param>
-        /// <param name="iMakeCode"></param>
-        /// <param name="oMac"></param>
-        /// <param name="oBT"></param>
-        /// <param name="oCode1"></param>
-        /// <param name="oCode2"></param>
-        /// <param name="oCdoe3"></param>
-        /// <param name="oErrorMessage"></param>
-        /// <returns></returns>
-        public static bool GetAddressRangeByMakeCode(string iSnCode, string iMakeCode, out string oMac, out string oBT, out string oCode1, out string oCode2, out string oCdoe3, out string oErrorMessage)
-        {
-            oMac = "";
-            oBT = "";
-            oCode1 = "";
-            oCode2 = "";
-            oCdoe3 = "";
-            oErrorMessage = "";
-            string[] param = new string[] { iSnCode, iMakeCode, oMac, oBT, oCode1, oCode2, oCdoe3, oErrorMessage };
-            dh.CallProcedure("CS_GETADDRESSBYMAKECODE", ref param);
-            oMac = param[2];
-            oBT = param[3];
-            oCode1 = param[4];
-            oCode2 = param[5];
-            oCdoe3 = param[6];
-            oErrorMessage = param[7];
-            if (oErrorMessage == "" || oErrorMessage == null || oErrorMessage == "null")
-                return true;
-            else
-                return false;
-        }
-
-        /// <summary>
-        /// 输入的 SN 号查找在制品是否有 IMEI 信息存在,如果存在则将 IMEI 信息传出,如果没有则在该工单下未使用的 IMEI 中随机分配一组
-        /// 如果iIMEI1、iNetCode不为空,则分别作为获取的附件加条件。
-        /// </summary>
-        /// <param name="iSN"></param>
-        /// <param name="iMO"></param>
-        /// <param name="iIMEI1"></param>
-        /// <param name="iNetCode"></param>
-        /// <param name="oIMEI1"></param>
-        /// <param name="oIMEI2"></param>
-        /// <param name="oIMEI3"></param>
-        /// <param name="oMEID"></param>
-        /// <param name="oNetCode"></param>
-        /// <param name="oPSN"></param>
-        /// <param name="oMac"></param>
-        /// <param name="oBT"></param>
-        /// <param name="oID1"></param>
-        /// <param name="oID2"></param>
-        /// <param name="oID3"></param>
-        /// <param name="oErrorMessage"></param>
-        /// <returns></returns>
-        public static bool GetIMEIOrNetCodeRange(string iSnCode, string iMakeCode, string iIMEI1, string iNetCode, out string oIMEI1, out string oIMEI2, out string oIMEI3, out string oMEID, out string oNetCode, out string oPSN, out string oID1, out string oID2, out string oID3, out string oErrorMessage)
-        {
-            oIMEI1 = "";
-            oIMEI2 = "";
-            oIMEI3 = "";
-            oMEID = "";
-            oNetCode = "";
-            oPSN = "";
-            oID1 = "";
-            oID2 = "";
-            oID3 = "";
-            oErrorMessage = "";
-            string[] param = new string[] { iSnCode, iMakeCode, iIMEI1, iNetCode, oIMEI1, oIMEI2, oIMEI3, oMEID, oNetCode, oPSN, oID1, oID2, oID3, oErrorMessage };
-            dh.CallProcedure("CS_GETIMEIORNETCODERANGE", ref param);
-            oIMEI1 = param[4];
-            oIMEI2 = param[5];
-            oIMEI3 = param[6];
-            oMEID = param[7];
-            oNetCode = param[8];
-            oPSN = param[9];
-            oID1 = param[10];
-            oID2 = param[11];
-            oID3 = param[12];
-            oErrorMessage = param[13];
-            if (oErrorMessage == "" || oErrorMessage == null || oErrorMessage == "null")
-                return true;
-            else
-                return false;
-        }
-
         /// <summary>
         /// 获取工单的最近一条执行记录
         /// </summary>
@@ -726,22 +616,6 @@ namespace UAS_MES.PublicMethod
             dh.ExecuteSql(sql.ToString(), "insert");
         }
 
-        /// <summary>
-        /// 记录一般操作日志
-        /// </summary>
-        /// <param name="inMan"></param>
-        /// <param name="Content"></param>
-        /// <param name="Result"></param>
-        /// <param name="Search"></param>
-        /// <param name="Code"></param>
-        public static void InsertMessageLog(string inMan, string Content, string Result, string Search, string Code)
-        {
-            sql.Clear();
-            sql.Append("insert into messagelog (ml_id,ml_date,ml_man,ml_content,ml_result,ml_search,code) ");
-            sql.Append("values (messagelog_seq.nextval,sysdate,'" + inMan + "','" + Content + "','" + Result + "','" + Search + "','" + Code + "')");
-            dh.ExecuteSql(sql.ToString(), "insert");
-        }
-
         public static bool OQCBatchJudge(string iCheckno, string iSourceCode, string iResult, string iRework, string iUserCode, string iRemark, out string oReworkCode, out string oErrorMessage)
         {
             oReworkCode = "";
@@ -769,29 +643,6 @@ namespace UAS_MES.PublicMethod
             return "";
         }
 
-        /// <summary>
-        /// 保存Mac地址和BT地址
-        /// </summary>
-        /// <param name="iSN"></param>
-        /// <param name="iMac"></param>
-        /// <param name="iBT"></param>
-        /// <param name="iCode1"></param>
-        /// <param name="iCode2"></param>
-        /// <param name="iCode3"></param>
-        /// <param name="oErrorMessage"></param>
-        /// <returns></returns>
-        public static bool SetAddressInfo(string iSN, string iMac, string iBT, string iCode1, string iCode2, string iCode3, out string oErrorMessage)
-        {
-            oErrorMessage = "";
-            string[] param = new string[] { iSN, iMac, iBT, iCode1, iCode2, iCode3, oErrorMessage };
-            dh.CallProcedure("CS_SETADDRESSINFO", ref param);
-            oErrorMessage = param[6];
-            if (oErrorMessage == "" || oErrorMessage == null || oErrorMessage == "null")
-                return true;
-            else
-                return false;
-        }
-
         public static bool SetStepFinish(string iMakeCode, string iSourceCode, string iSN, string iMPKind, string iResult, string iUserCode, out string oErrorMessage)
         {
             oErrorMessage = "";
@@ -840,66 +691,6 @@ namespace UAS_MES.PublicMethod
             return SetStepFinish(iMakeCode, iSourceCode, iSN, iMPKind, iResult, iUserCode, out oErrorMessage);
         }
 
-        /// <summary>
-        /// 方法说明:测试详细信息录入系统,针对一个SN多个测试项目结果可循环调用
-        /// </summary>
-        /// <param name="iSnCode">序列号</param>
-        /// <param name="iClass"></param>
-        /// <param name="iSubClass1"></param>
-        /// <param name="iSubClass2"></param>
-        /// <param name="iSubClass3"></param>
-        /// <param name="iMaxValue"></param>
-        /// <param name="iMinValue"></param>
-        /// <param name="iActualValue"></param>
-        /// <param name="iValue1"></param>
-        /// <param name="iValue2"></param>
-        /// <param name="iValue3"></param>
-        /// <param name="iTestResult"></param>
-        /// <param name="oErrorMessage"></param>                                                      
-        /// <returns></returns>
-        public static bool SetTestDetail(string iSnCode, string iMakeCode, string iClass, string iSubClass1, string iSubClass2, string iSubClass3, string iMaxValue, string iMinValue, string iActualValue, string iValue1, string iValue2, string iValue3, string iTestResult, string iSourceCode, out string oErrorMessage)
-        {
-            oErrorMessage = "";
-            sql.Clear();
-            sql.Append("Insert into STEPTESTDETAIL (STD_ID,STD_SN,STD_MAKECODE,STD_CLASS,STD_SUBCLASS1,STD_SUBCLASS2,");
-            sql.Append("STD_SUBCLASS3,STD_MAXVALUE,STD_MINVALUE,STD_ACTUALVALUE,STD_VALUE1,STD_VALUE2,STD_VALUE3,STD_TESTRESULT,");
-            sql.Append("STD_DATE,STD_RESCODE) values (STEPTESTDETAIL_SEQ.nextval,:std_sn,:std_makecode,");
-            sql.Append(":std_class,:std_subclass1,:std_subclass2,:std_subclass3,:std_maxvalue,:std_minvalue,:std_actualvalue,:std_value1,");
-            sql.Append(":std_value2,:std_value3,:std_testresult,sysdate,:std_record)");
-            dh.ExecuteSql(sql.ToString(), "select", iSnCode, iMakeCode, iClass, iSubClass1, iSubClass2, iSubClass3, iMaxValue, iMinValue, iActualValue, iValue1, iValue2, iValue3, iTestResult, iSourceCode);
-            return true;
-        }
-
-        /// <summary>
-        /// 作业调用该方法将确认接收SN对应的IMEI及附属信息。
-        /// </summary>
-        /// <param name="iSN"></param>
-        /// <param name="iMO"></param>
-        /// <param name="iIMEI1"></param>
-        /// <param name="iIMEI2"></param>
-        /// <param name="iIMEI3"></param>
-        /// <param name="iMEID"></param>
-        /// <param name="iNetCode"></param>
-        /// <param name="iPSN"></param>
-        /// <param name="iID1"></param>
-        /// <param name="iBT"></param>
-        /// <param name="iID1"></param>
-        /// <param name="iID2"></param>
-        /// <param name="iID3"></param>
-        /// <param name="oErrorMessage"></param>
-        /// <returns></returns>
-        public static bool SetIMEIInfo(string iSnCode, string iIMEI1, string iIMEI2, string iIMEI3, string iMEID, string iNetCode, string iPSN, string iID1, string iID2, string iID3, out string oErrorMessage)
-        {
-            oErrorMessage = "";
-            string[] param = new string[] { iSnCode, iIMEI1, iIMEI2, iIMEI3, iMEID, iNetCode, iPSN, iID1, iID2, iID3, oErrorMessage };
-            dh.CallProcedure("CS_SETIMEIINFO", ref param);
-            oErrorMessage = param[10];
-            if (oErrorMessage == "" || oErrorMessage == null || oErrorMessage == "null")
-                return true;
-            else
-                return false;
-        }
-
         /// <summary>
         /// 
         /// </summary>
@@ -973,7 +764,7 @@ namespace UAS_MES.PublicMethod
                 }
                 else
                 {
-                    if (ifrework == "0")    
+                    if (ifrework == "0")
                         dh.UpdateByCondition("makeserial", "ms_nextstepcode='',ms_status=3", "ms_sncode='" + iSnCode + "' and ms_makecode='" + iMakeCode + "' ");
                     else
                         dh.UpdateByCondition("makeserial", "ms_nextstepcode='',ms_paststep = ms_paststep ||'," + StepCode + "',ms_reworkstatus=3", "ms_sncode='" + iSnCode + "' and ms_makecode='" + iMakeCode + "'");
@@ -1334,6 +1125,22 @@ namespace UAS_MES.PublicMethod
         }
 
 
+        public static bool CheckUpdate()
+        {
+            string version = BaseUtil.GetCacheData("Version").ToString();
+            DataHelper dh = new DataHelper();
+            string LastVersion = dh.getFieldDataByCondition("configs", "code", "caller='CSUPDATE'").ToString();
+            if (version == LastVersion || version == "" || LastVersion == "")
+            {
+                return false;
+            }
+            else
+            {
+                BaseUtil.SetCacheData("Version", LastVersion);
+                return true;
+            }
+        }
+
         /// <summary>
         /// 小箱装大箱的包装规则判断
         /// </summary>

+ 1 - 1
UAS-MES/PublicMethod/Print.cs

@@ -12,7 +12,7 @@ namespace UAS_MES.PublicMethod
 {
     class Print
     {
-        static DataHelper dh = new DataHelper();
+        static DataHelper dh = SystemInf.dh;
         //CodeSoft打印的驱动和文件
         static Document doc;
         ////CodeSoft的打印机

+ 15 - 0
UAS_CheckWork/App.config

@@ -1,6 +1,21 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <configuration>
+    <configSections>
+        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
+            <section name="UAS_CheckWork.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
+        </sectionGroup>
+    </configSections>
     <startup> 
         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
     </startup>
+    <userSettings>
+        <UAS_CheckWork.Properties.Settings>
+            <setting name="IP" serializeAs="String">
+                <value />
+            </setting>
+            <setting name="Port" serializeAs="String">
+                <value />
+            </setting>
+        </UAS_CheckWork.Properties.Settings>
+    </userSettings>
 </configuration>

+ 72 - 63
UAS_CheckWork/Form1.Designer.cs

@@ -36,12 +36,13 @@
             this.btnConnect = new System.Windows.Forms.Button();
             this.lblState = new System.Windows.Forms.Label();
             this.showDataGrid = new System.Windows.Forms.DataGridView();
-            this.Column1 = new System.Windows.Forms.DataGridViewCheckBoxColumn();
+            this.cl_cardcode = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.cl_time = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.getAllData = new System.Windows.Forms.Button();
-            this.saveData = new System.Windows.Forms.Button();
-            this.chooseAll = new UAS_MES.CustomControl.ButtonUtil.ChooseAllButton();
-            this.dataGridViewCheckBoxColumn1 = new System.Windows.Forms.DataGridViewCheckBoxColumn();
             this.allData = new System.Windows.Forms.BindingSource(this.components);
+            this.dataGridViewCheckBoxColumn1 = new System.Windows.Forms.DataGridViewCheckBoxColumn();
+            this.ExportEmp = new System.Windows.Forms.Button();
+            this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
             ((System.ComponentModel.ISupportInitialize)(this.showDataGrid)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.allData)).BeginInit();
             this.SuspendLayout();
@@ -49,45 +50,48 @@
             // label2
             // 
             this.label2.AutoSize = true;
-            this.label2.Location = new System.Drawing.Point(183, 26);
+            this.label2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label2.Location = new System.Drawing.Point(167, 17);
+            this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
             this.label2.Name = "label2";
-            this.label2.Size = new System.Drawing.Size(39, 15);
+            this.label2.Size = new System.Drawing.Size(42, 21);
             this.label2.TabIndex = 14;
             this.label2.Text = "Port";
             // 
             // label1
             // 
             this.label1.AutoSize = true;
-            this.label1.Location = new System.Drawing.Point(32, 26);
+            this.label1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label1.Location = new System.Drawing.Point(24, 16);
+            this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
             this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(23, 15);
+            this.label1.Size = new System.Drawing.Size(25, 21);
             this.label1.TabIndex = 13;
             this.label1.Text = "IP";
             // 
             // txtPort
             // 
-            this.txtPort.Location = new System.Drawing.Point(230, 22);
-            this.txtPort.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.txtPort.Location = new System.Drawing.Point(215, 17);
+            this.txtPort.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
             this.txtPort.Name = "txtPort";
-            this.txtPort.Size = new System.Drawing.Size(48, 25);
+            this.txtPort.Size = new System.Drawing.Size(37, 21);
             this.txtPort.TabIndex = 12;
-            this.txtPort.Text = "4370";
             // 
             // txtIP
             // 
-            this.txtIP.Location = new System.Drawing.Point(59, 22);
-            this.txtIP.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.txtIP.Location = new System.Drawing.Point(58, 17);
+            this.txtIP.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
             this.txtIP.Name = "txtIP";
-            this.txtIP.Size = new System.Drawing.Size(118, 25);
+            this.txtIP.Size = new System.Drawing.Size(99, 21);
             this.txtIP.TabIndex = 11;
-            this.txtIP.Text = "192.168.1.201";
             // 
             // btnConnect
             // 
-            this.btnConnect.Location = new System.Drawing.Point(348, 22);
-            this.btnConnect.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.btnConnect.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.btnConnect.Location = new System.Drawing.Point(279, 15);
+            this.btnConnect.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
             this.btnConnect.Name = "btnConnect";
-            this.btnConnect.Size = new System.Drawing.Size(69, 25);
+            this.btnConnect.Size = new System.Drawing.Size(50, 25);
             this.btnConnect.TabIndex = 10;
             this.btnConnect.Text = "连接";
             this.btnConnect.UseVisualStyleBackColor = true;
@@ -97,11 +101,12 @@
             // 
             this.lblState.AutoSize = true;
             this.lblState.ForeColor = System.Drawing.Color.Crimson;
-            this.lblState.Location = new System.Drawing.Point(484, 27);
+            this.lblState.Location = new System.Drawing.Point(359, 22);
+            this.lblState.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
             this.lblState.Name = "lblState";
-            this.lblState.Size = new System.Drawing.Size(215, 15);
+            this.lblState.Size = new System.Drawing.Size(71, 12);
             this.lblState.TabIndex = 15;
-            this.lblState.Text = "Current State:Disconnected";
+            this.lblState.Text = "状态:未连接";
             // 
             // showDataGrid
             // 
@@ -109,64 +114,67 @@
             this.showDataGrid.AllowUserToDeleteRows = false;
             this.showDataGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
             this.showDataGrid.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
-            this.Column1});
+            this.cl_cardcode,
+            this.cl_time});
             this.showDataGrid.Enabled = false;
-            this.showDataGrid.Location = new System.Drawing.Point(23, 159);
-            this.showDataGrid.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.showDataGrid.Location = new System.Drawing.Point(17, 59);
+            this.showDataGrid.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
             this.showDataGrid.Name = "showDataGrid";
             this.showDataGrid.RowTemplate.Height = 30;
-            this.showDataGrid.Size = new System.Drawing.Size(944, 387);
+            this.showDataGrid.Size = new System.Drawing.Size(795, 377);
             this.showDataGrid.TabIndex = 16;
+            this.showDataGrid.DataError += new System.Windows.Forms.DataGridViewDataErrorEventHandler(this.showDataGrid_DataError);
+            // 
+            // cl_cardcode
             // 
-            // Column1
+            this.cl_cardcode.DataPropertyName = "cl_cardcode";
+            this.cl_cardcode.HeaderText = "卡号";
+            this.cl_cardcode.Name = "cl_cardcode";
+            this.cl_cardcode.Width = 200;
             // 
-            this.Column1.HeaderText = "勾选";
-            this.Column1.Name = "Column1";
+            // cl_time
+            // 
+            this.cl_time.DataPropertyName = "cl_time";
+            this.cl_time.HeaderText = "打卡时间";
+            this.cl_time.MinimumWidth = 250;
+            this.cl_time.Name = "cl_time";
+            this.cl_time.Width = 250;
             // 
             // getAllData
             // 
-            this.getAllData.Location = new System.Drawing.Point(26, 81);
-            this.getAllData.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.getAllData.BackColor = System.Drawing.SystemColors.ControlLightLight;
+            this.getAllData.Location = new System.Drawing.Point(560, 18);
+            this.getAllData.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
             this.getAllData.Name = "getAllData";
-            this.getAllData.Size = new System.Drawing.Size(134, 31);
+            this.getAllData.Size = new System.Drawing.Size(102, 25);
             this.getAllData.TabIndex = 17;
-            this.getAllData.Text = "获取考勤数据";
-            this.getAllData.UseVisualStyleBackColor = true;
+            this.getAllData.Text = "同步考勤数据";
+            this.getAllData.UseVisualStyleBackColor = false;
             this.getAllData.Click += new System.EventHandler(this.getAllData_Click);
             // 
-            // saveData
-            // 
-            this.saveData.Location = new System.Drawing.Point(607, 81);
-            this.saveData.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
-            this.saveData.Name = "saveData";
-            this.saveData.Size = new System.Drawing.Size(129, 31);
-            this.saveData.TabIndex = 18;
-            this.saveData.Text = "保存数据";
-            this.saveData.UseVisualStyleBackColor = true;
-            this.saveData.Click += new System.EventHandler(this.saveData_Click);
-            // 
-            // chooseAll
-            // 
-            this.chooseAll.Location = new System.Drawing.Point(26, 124);
-            this.chooseAll.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
-            this.chooseAll.Name = "chooseAll";
-            this.chooseAll.Size = new System.Drawing.Size(59, 23);
-            this.chooseAll.TabIndex = 19;
-            this.chooseAll.Text = "全选";
-            this.chooseAll.UseVisualStyleBackColor = true;
-            // 
             // dataGridViewCheckBoxColumn1
             // 
             this.dataGridViewCheckBoxColumn1.HeaderText = "勾选";
             this.dataGridViewCheckBoxColumn1.Name = "dataGridViewCheckBoxColumn1";
             // 
+            // ExportEmp
+            // 
+            this.ExportEmp.BackColor = System.Drawing.SystemColors.ControlLightLight;
+            this.ExportEmp.Location = new System.Drawing.Point(682, 18);
+            this.ExportEmp.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
+            this.ExportEmp.Name = "ExportEmp";
+            this.ExportEmp.Size = new System.Drawing.Size(102, 25);
+            this.ExportEmp.TabIndex = 18;
+            this.ExportEmp.Text = "导出人员数据";
+            this.ExportEmp.UseVisualStyleBackColor = false;
+            this.ExportEmp.Click += new System.EventHandler(this.ExportEmp_Click);
+            // 
             // Form1
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(989, 564);
-            this.Controls.Add(this.chooseAll);
-            this.Controls.Add(this.saveData);
+            this.ClientSize = new System.Drawing.Size(823, 451);
+            this.Controls.Add(this.ExportEmp);
             this.Controls.Add(this.getAllData);
             this.Controls.Add(this.showDataGrid);
             this.Controls.Add(this.lblState);
@@ -175,7 +183,7 @@
             this.Controls.Add(this.txtPort);
             this.Controls.Add(this.txtIP);
             this.Controls.Add(this.btnConnect);
-            this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
             this.Name = "Form1";
             this.Text = "Form1";
             this.Load += new System.EventHandler(this.Form1_Load);
@@ -196,11 +204,12 @@
         private System.Windows.Forms.Label lblState;
         private System.Windows.Forms.DataGridView showDataGrid;
         private System.Windows.Forms.Button getAllData;
-        private System.Windows.Forms.Button saveData;
         private System.Windows.Forms.BindingSource allData;
-        private UAS_MES.CustomControl.ButtonUtil.ChooseAllButton chooseAll;
-        private System.Windows.Forms.DataGridViewCheckBoxColumn Column1;
         private System.Windows.Forms.DataGridViewCheckBoxColumn dataGridViewCheckBoxColumn1;
+        private System.Windows.Forms.DataGridViewTextBoxColumn cl_cardcode;
+        private System.Windows.Forms.DataGridViewTextBoxColumn cl_time;
+        private System.Windows.Forms.Button ExportEmp;
+        private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1;
     }
 }
 

+ 117 - 25
UAS_CheckWork/Form1.cs

@@ -1,28 +1,46 @@
-using System;
+using Check.DataOperate;
+using System;
 using System.Collections.Generic;
-using System.ComponentModel;
 using System.Data;
-using System.Drawing;
+using System.Globalization;
 using System.Linq;
 using System.Text;
-using System.Threading.Tasks;
+using System.Threading;
 using System.Windows.Forms;
+using UAS_MES.PublicForm;
 
 namespace UAS_CheckWork
 {
     public partial class Form1 : Form
     {
-        public Form1()
-        {
-            InitializeComponent();
-        }
+
+        DataHelper dh;
         //Create Standalone SDK class dynamicly.
         public zkemkeeper.CZKEMClass axCZKEM1 = new zkemkeeper.CZKEMClass();
         private bool bIsConnected = false;//the boolean value identifies whether the device is connected
         private int iMachineNumber = 1;//the serial number of the device.After connecting the device ,this value will be changed.
+        //开启线程
+        Thread InitGetInfo;
+
+        public Form1()
+        {
+            InitializeComponent();
+            StartPosition = FormStartPosition.CenterScreen;
+        }
+
+        private void Form1_Load(object sender, EventArgs e)
+        {
+            CheckForIllegalCrossThreadCalls = false;//可跨线程
+            txtIP.Text = Properties.Settings.Default.IP;
+            txtPort.Text = Properties.Settings.Default.Port;
+            dh = new DataHelper();
+        }
 
         private void btnConnect_Click(object sender, EventArgs e)
         {
+            Properties.Settings.Default.IP = txtIP.Text;
+            Properties.Settings.Default.Port = txtPort.Text;
+            Properties.Settings.Default.Save();
             if (txtIP.Text.Trim() == "" || txtPort.Text.Trim() == "")
             {
                 MessageBox.Show("请先输入IP和端口", "Error");
@@ -59,17 +77,34 @@ namespace UAS_CheckWork
 
         private void getAllData_Click(object sender, EventArgs e)
         {
-            if (bIsConnected)
+            if (!bIsConnected)
             {
                 MessageBox.Show("请先连接设备", "Error");
                 return;
             }
+            InitGetInfo = new Thread(InPrint);
+            SetLoadingWindow stw = new SetLoadingWindow(InitGetInfo, "正在同步数据...");
+            stw.StartPosition = FormStartPosition.CenterParent;
+            stw.ShowDialog();
+
+        }
+
+        private void InPrint()
+        {
             int idwErrorCode = 0;
             //获取所有的考勤记录
-            if (axCZKEM1.ReadAllGLogData(iMachineNumber))
+            if (axCZKEM1.ReadGeneralLogData(iMachineNumber))
             {
                 //循环获取
                 DataTable dt = new DataTable();
+                dt.Columns.Add("cl_cardcode");
+                dt.Columns.Add("cl_time");
+                showDataGrid.DataSource = dt;
+                string LastDate = dh.getFieldDataByCondition("cardlog", "to_char(max(cl_time),'yyyy-MM-dd HH24:mi:ss')", "cl_address='考勤机数据导入'").ToString();
+                if (LastDate == "")
+                {
+                    LastDate = "1990-01-01 00:00:00";
+                }
                 string enrollNumber = "";//记录用户ID
                 int verifyCode = 0;//记录用户验证方式  0 为密码验证,1 为指纹验证,2 为卡验证 
                 int inoutMode = 0;//考勤状态,具体含义如下: 默认 0—Check-In 1—Check-Out 2—Break-Out 3—Break-In 4—OT-In 5—OT-Out 
@@ -80,16 +115,42 @@ namespace UAS_CheckWork
                 int minute = 0;//记录考勤分钟
                 int second = 0;//记录考勤秒
                 int workCode = 0; //记录workCode
+                List<string> cl_cardcode = new List<string>();
+                List<string> cl_time = new List<string>();
+                StringBuilder sql = new StringBuilder();
+                sql.Append("insert into cardlog (cl_id,cl_cardcode,cl_time,cl_address) values (cardlog_seq.nextval,:cl_emcode,TO_DATE(:cl_time,'yyyy-MM-dd hh24:mi:ss'),'考勤机数据导入')");
+                int count = 0;
                 while (axCZKEM1.SSR_GetGeneralLogData(iMachineNumber, out enrollNumber, out verifyCode, out inoutMode, out year, out month, out day, out hour, out minute, out second, ref workCode))
                 {
-                    //将数据加入DataTable中
-                    DataRow dr = dt.NewRow();
-                    dr["cl_emcode"] = enrollNumber;
-                    dr["cl_time"] = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
-                    dt.Rows.Add(dr);
-                    allData.DataSource = dt;
-                    //显示
-                    showDataGrid.DataSource = (DataTable)allData.DataSource;
+                    string logtime = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
+                    if (Convert.ToDateTime(logtime) > Convert.ToDateTime(LastDate))
+                    {
+                        cl_cardcode.Add(enrollNumber);
+                        cl_time.Add(year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second);
+                        if (count % 1000 == 0)
+                        {
+                            dh.BatchInsert(sql.ToString(), new string[] { "cl_cardcode", "cl_time" }, cl_cardcode.ToArray(), cl_time.ToArray());
+                            cl_cardcode.Clear();
+                            cl_time.Clear();
+                        }
+                        count = count + 1;
+                        //将数据加入DataTable中
+                        DataRow dr = dt.NewRow();
+                        dr["cl_cardcode"] = enrollNumber;
+                        dr["cl_time"] = logtime;
+                        dt.Rows.Add(dr);
+                    }
+                }
+                if (cl_time.Count > 0)
+                    dh.BatchInsert(sql.ToString(), new string[] { "cl_cardcode", "cl_time" }, cl_cardcode.ToArray(), cl_time.ToArray());
+                showDataGrid.DataSource = dt;
+                if (dt.Rows.Count > 0)
+                {
+                    MessageBox.Show("数据同步成功");
+                }
+                else
+                {
+                    MessageBox.Show("没有需要同步的数据");
                 }
             }
             else
@@ -99,16 +160,47 @@ namespace UAS_CheckWork
             }
         }
 
-        private void Form1_Load(object sender, EventArgs e)
+        private void showDataGrid_DataError(object sender, DataGridViewDataErrorEventArgs e)
         {
-            //设定全选按钮
-            chooseAll.ChooseAll(showDataGrid);
+
         }
 
-        private void saveData_Click(object sender, EventArgs e)
+        private void ExportEmp_Click(object sender, EventArgs e)
         {
-            //点击保存数据
-
+            if (!bIsConnected)
+            {
+                MessageBox.Show("请先连接设备", "Error");
+                return;
+            }
+            folderBrowserDialog1.Description = "选择导出的路径";
+            DialogResult result = folderBrowserDialog1.ShowDialog();
+            if (result == DialogResult.OK)
+            {
+                string FolderPath = folderBrowserDialog1.SelectedPath;
+                string EMenrollNumber = "";
+                string Name = "";
+                string Pwd = "";
+                int Privilege = 0;
+                bool Enable = false;
+                DataTable dt = new DataTable();
+                dt.Columns.Add("卡号");
+                dt.Columns.Add("姓名");
+                dt.Columns.Add("密码");
+                dt.Columns.Add("权限");
+                dt.Columns.Add("是否可用");
+                while (axCZKEM1.SSR_GetAllUserInfo(iMachineNumber, out EMenrollNumber, out Name, out Pwd, out Privilege, out Enable))
+                {
+                    DataRow dr = dt.NewRow();
+                    dr["卡号"] = EMenrollNumber;
+                    dr["姓名"] = Name;
+                    dr["密码"] = Pwd;
+                    dr["权限"] = Privilege;
+                    dr["是否可用"] = Enable;
+                    dt.Rows.Add(dr);
+                }
+                ExcelHandler ex = new ExcelHandler();
+                ex.ExportExcel(dt, FolderPath);
+            }
         }
     }
-}
+}

+ 15 - 0
UAS_CheckWork/Form1.resx

@@ -117,7 +117,22 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <metadata name="cl_cardcode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="cl_time.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="cl_cardcode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="cl_time.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
   <metadata name="allData.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
+  <metadata name="folderBrowserDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>110, 17</value>
+  </metadata>
 </root>

+ 243 - 0
UAS_CheckWork/Form2.Designer.cs

@@ -0,0 +1,243 @@
+namespace UAS_CheckWork
+{
+    partial class Form2
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.lblState = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label1 = new System.Windows.Forms.Label();
+            this.txtPort = new System.Windows.Forms.TextBox();
+            this.txtIP = new System.Windows.Forms.TextBox();
+            this.btnConnect = new System.Windows.Forms.Button();
+            this.startListening = new System.Windows.Forms.Button();
+            this.logInfo = new System.Windows.Forms.DataGridView();
+            this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.dataGridViewTextBoxColumn3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.dataGridViewTextBoxColumn4 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.dataGridViewTextBoxColumn5 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.UserID = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.AttState = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.VerifyMethod = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Time = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.WorkCode = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            ((System.ComponentModel.ISupportInitialize)(this.logInfo)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // lblState
+            // 
+            this.lblState.AutoSize = true;
+            this.lblState.ForeColor = System.Drawing.Color.Crimson;
+            this.lblState.Location = new System.Drawing.Point(360, 23);
+            this.lblState.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            this.lblState.Name = "lblState";
+            this.lblState.Size = new System.Drawing.Size(71, 12);
+            this.lblState.TabIndex = 21;
+            this.lblState.Text = "状态:未连接";
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label2.Location = new System.Drawing.Point(168, 19);
+            this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(42, 21);
+            this.label2.TabIndex = 20;
+            this.label2.Text = "Port";
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label1.Location = new System.Drawing.Point(25, 17);
+            this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(25, 21);
+            this.label1.TabIndex = 19;
+            this.label1.Text = "IP";
+            // 
+            // txtPort
+            // 
+            this.txtPort.Location = new System.Drawing.Point(216, 19);
+            this.txtPort.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
+            this.txtPort.Name = "txtPort";
+            this.txtPort.Size = new System.Drawing.Size(37, 21);
+            this.txtPort.TabIndex = 18;
+            this.txtPort.Text = "4370";
+            // 
+            // txtIP
+            // 
+            this.txtIP.Location = new System.Drawing.Point(59, 19);
+            this.txtIP.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
+            this.txtIP.Name = "txtIP";
+            this.txtIP.Size = new System.Drawing.Size(99, 21);
+            this.txtIP.TabIndex = 17;
+            this.txtIP.Text = "192.168.253.201";
+            // 
+            // btnConnect
+            // 
+            this.btnConnect.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.btnConnect.Location = new System.Drawing.Point(280, 16);
+            this.btnConnect.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
+            this.btnConnect.Name = "btnConnect";
+            this.btnConnect.Size = new System.Drawing.Size(50, 25);
+            this.btnConnect.TabIndex = 16;
+            this.btnConnect.Text = "连接";
+            this.btnConnect.UseVisualStyleBackColor = true;
+            this.btnConnect.Click += new System.EventHandler(this.btnConnect_Click);
+            // 
+            // startListening
+            // 
+            this.startListening.BackColor = System.Drawing.SystemColors.ControlLightLight;
+            this.startListening.Location = new System.Drawing.Point(451, 18);
+            this.startListening.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+            this.startListening.Name = "startListening";
+            this.startListening.Size = new System.Drawing.Size(85, 24);
+            this.startListening.TabIndex = 22;
+            this.startListening.Text = "开始实时事件";
+            this.startListening.UseVisualStyleBackColor = false;
+            this.startListening.Click += new System.EventHandler(this.startListening_Click);
+            // 
+            // logInfo
+            // 
+            this.logInfo.AllowUserToAddRows = false;
+            this.logInfo.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.logInfo.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+            this.UserID,
+            this.AttState,
+            this.VerifyMethod,
+            this.Time,
+            this.WorkCode});
+            this.logInfo.Location = new System.Drawing.Point(29, 65);
+            this.logInfo.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+            this.logInfo.Name = "logInfo";
+            this.logInfo.RowTemplate.Height = 30;
+            this.logInfo.Size = new System.Drawing.Size(507, 254);
+            this.logInfo.TabIndex = 23;
+            // 
+            // dataGridViewTextBoxColumn1
+            // 
+            this.dataGridViewTextBoxColumn1.HeaderText = "用户ID";
+            this.dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1";
+            // 
+            // dataGridViewTextBoxColumn2
+            // 
+            this.dataGridViewTextBoxColumn2.HeaderText = "考勤状态";
+            this.dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2";
+            // 
+            // dataGridViewTextBoxColumn3
+            // 
+            this.dataGridViewTextBoxColumn3.HeaderText = "验证方式";
+            this.dataGridViewTextBoxColumn3.Name = "dataGridViewTextBoxColumn3";
+            // 
+            // dataGridViewTextBoxColumn4
+            // 
+            this.dataGridViewTextBoxColumn4.HeaderText = "考勤时间";
+            this.dataGridViewTextBoxColumn4.Name = "dataGridViewTextBoxColumn4";
+            // 
+            // dataGridViewTextBoxColumn5
+            // 
+            this.dataGridViewTextBoxColumn5.HeaderText = "WorkCode";
+            this.dataGridViewTextBoxColumn5.Name = "dataGridViewTextBoxColumn5";
+            // 
+            // UserID
+            // 
+            this.UserID.DataPropertyName = "UserID";
+            this.UserID.HeaderText = "用户ID";
+            this.UserID.Name = "UserID";
+            // 
+            // AttState
+            // 
+            this.AttState.DataPropertyName = "AttState";
+            this.AttState.HeaderText = "考勤状态";
+            this.AttState.Name = "AttState";
+            // 
+            // VerifyMethod
+            // 
+            this.VerifyMethod.DataPropertyName = "VerifyMethod";
+            this.VerifyMethod.HeaderText = "验证方式";
+            this.VerifyMethod.Name = "VerifyMethod";
+            // 
+            // Time
+            // 
+            this.Time.DataPropertyName = "Time";
+            this.Time.HeaderText = "考勤时间";
+            this.Time.Name = "Time";
+            // 
+            // WorkCode
+            // 
+            this.WorkCode.DataPropertyName = "WorkCode";
+            this.WorkCode.HeaderText = "WorkCode";
+            this.WorkCode.Name = "WorkCode";
+            // 
+            // Form2
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(564, 338);
+            this.Controls.Add(this.logInfo);
+            this.Controls.Add(this.startListening);
+            this.Controls.Add(this.lblState);
+            this.Controls.Add(this.label2);
+            this.Controls.Add(this.label1);
+            this.Controls.Add(this.txtPort);
+            this.Controls.Add(this.txtIP);
+            this.Controls.Add(this.btnConnect);
+            this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+            this.Name = "Form2";
+            this.Text = "实时获取考勤";
+            this.Load += new System.EventHandler(this.Form2_Load);
+            ((System.ComponentModel.ISupportInitialize)(this.logInfo)).EndInit();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Label lblState;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.TextBox txtPort;
+        private System.Windows.Forms.TextBox txtIP;
+        private System.Windows.Forms.Button btnConnect;
+        private System.Windows.Forms.Button startListening;
+        private System.Windows.Forms.DataGridView logInfo;
+        private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1;
+        private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn2;
+        private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn3;
+        private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn4;
+        private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn5;
+        private System.Windows.Forms.DataGridViewTextBoxColumn UserID;
+        private System.Windows.Forms.DataGridViewTextBoxColumn AttState;
+        private System.Windows.Forms.DataGridViewTextBoxColumn VerifyMethod;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Time;
+        private System.Windows.Forms.DataGridViewTextBoxColumn WorkCode;
+    }
+}

+ 155 - 0
UAS_CheckWork/Form2.cs

@@ -0,0 +1,155 @@
+using Check.DataOperate;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace UAS_CheckWork
+{
+    public partial class Form2 : Form
+    {
+        public Form2()
+        {
+            InitializeComponent();
+        }
+
+        DataHelper dh = new DataHelper();
+        //Create Standalone SDK class dynamicly.
+        public zkemkeeper.CZKEMClass axCZKEM1 = new zkemkeeper.CZKEMClass();
+        private bool bIsConnected = false;//the boolean value identifies whether the device is connected
+        private int iMachineNumber = 1;//the serial number of the device.After connecting the device ,this value will be changed.
+
+        private void Form2_Load(object sender, EventArgs e)
+        {
+            DataTable dt = new DataTable();
+            dt.Columns.Add("UserID");
+            dt.Columns.Add("AttState");
+            dt.Columns.Add("VerifyMethod");
+            dt.Columns.Add("Time");
+            dt.Columns.Add("WorkCode");
+            logInfo.DataSource = dt;
+        }
+
+        private void btnConnect_Click(object sender, EventArgs e)
+        {
+            if (txtIP.Text.Trim() == "" || txtPort.Text.Trim() == "")
+            {
+                MessageBox.Show("请先输入IP和端口", "Error");
+                return;
+            }
+            int idwErrorCode = 0;
+
+            Cursor = Cursors.WaitCursor;
+            if (btnConnect.Text == "断开连接")
+            {
+                axCZKEM1.Disconnect();
+                bIsConnected = false;
+                btnConnect.Text = "连接";
+                lblState.Text = "状态:未连接";
+                startListening.Text = "开始实时事件";
+                Cursor = Cursors.Default;
+                return;
+            }
+            bIsConnected = axCZKEM1.Connect_Net(txtIP.Text, Convert.ToInt32(txtPort.Text));
+            if (bIsConnected)
+            {
+                btnConnect.Text = "断开连接";
+                btnConnect.Refresh();
+                lblState.Text = "状态:已连接";
+                iMachineNumber = 1;//In fact,when you are using the tcp/ip communication,this parameter will be ignored,that is any integer will all right.Here we use 1.
+                axCZKEM1.RegEvent(iMachineNumber, 65535);//Here you can register the realtime events that you want to be triggered(the parameters 65535 means registering all)
+            }
+            else
+            {
+                axCZKEM1.GetLastError(ref idwErrorCode);
+                MessageBox.Show("无法连接设备,ErrorCode=" + idwErrorCode.ToString(), "Error");
+            }
+            Cursor = Cursors.Default;
+        }
+
+        private void startListening_Click(object sender, EventArgs e)
+        {
+            if (!bIsConnected)
+            {
+                MessageBox.Show("请先连接设备", "Error");
+                return;
+            }
+            if (startListening.Text == "正在实时监听")
+            {
+                MessageBox.Show("已启动监听", "Error");
+                return;
+            }
+            int idwErrorCode = 0;
+            //开始注册考勤机的监听事件
+            if (axCZKEM1.RegEvent(iMachineNumber, 1))//65535表示注册所有的事件
+            {
+                //注册事件
+                this.axCZKEM1.OnAttTransactionEx += new zkemkeeper._IZKEMEvents_OnAttTransactionExEventHandler(axCZKEM1_OnAttTransactionEx);
+                //注册成功提示用户
+                startListening.Text = "正在实时监听";
+            }
+            else
+            {
+                axCZKEM1.GetLastError(ref idwErrorCode);
+                MessageBox.Show("注册监听事件失败,ErrorCode=" + idwErrorCode.ToString(), "Error");
+            }
+        }
+        /// <summary>
+        /// 考勤机验证通过
+        /// </summary>
+        /// <param name="sEnrollNumber">UserID</param>
+        /// <param name="iIsInValid">1 为无效记录,0 为有效记录</param>
+        /// <param name="iAttState">0—Check-In   1—Check-Out  2—Break-Out  3—Break-In   4—OT-In   5—OT-Out </param>
+        /// <param name="iVerifyMethod">:0 为密码验证,1 为指纹验证,2 为卡验证 </param>
+        /// <param name="iYear"></param>
+        /// <param name="iMonth"></param>
+        /// <param name="iDay"></param>
+        /// <param name="iHour"></param>
+        /// <param name="iMinute"></param>
+        /// <param name="iSecond"></param>
+        /// <param name="iWorkCode">WorkCode 返回验证时 WorkCode 值,当机器无 Workcode 功能时,该值返回 0</param>
+        private void axCZKEM1_OnAttTransactionEx(string sEnrollNumber, int iIsInValid, int iAttState, int iVerifyMethod, int iYear, int iMonth, int iDay, int iHour, int iMinute, int iSecond, int iWorkCode)
+        {
+            //实现实时获取考勤,取有效记录
+            if (iIsInValid == 0)
+            {
+                //显示
+                DataTable dt = (DataTable)logInfo.DataSource;
+                DataRow dr = dt.NewRow();//新建行
+                dr["UserID"] = sEnrollNumber;
+                switch (iVerifyMethod)
+                {
+                    case 0:
+                        dr["VerifyMethod"] = "密码";
+                        break;
+                    case 1:
+                        dr["VerifyMethod"] = "指纹";
+                        break;
+                    case 2:
+                        dr["VerifyMethod"] = "卡";
+                        break;
+                    default:
+                        break;
+                }
+                string Time = iYear + "-" + iMonth + "-" + iDay + " " + iHour + ":" + iMinute + ":" + iSecond;
+                dr["Time"] = Time;
+                dr["WorkCode"] = iWorkCode;
+                dt.Rows.Add(dr);
+                logInfo.DataSource = dt;
+                //更新数据库
+                dh.ExecuteSql("insert into cardlog (cl_id,cl_cardcode,cl_time,cl_address) values (cardlog_seq.nextval,'" + sEnrollNumber + "',TO_DATE('" + Time + "','yyyy-MM-dd hh24:mi:ss'),'考勤机数据导入')", "insert");
+            }
+            else
+            {
+                //记录验证无效
+            }
+        }
+    }
+}

+ 135 - 0
UAS_CheckWork/Form2.resx

@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="UserID.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="AttState.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="VerifyMethod.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Time.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="WorkCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+</root>

+ 28 - 0
UAS_CheckWork/LoadingCircle.Designer.cs

@@ -0,0 +1,28 @@
+//#####################################################################################
+//★★★★★★★           http://www.cnpopsoft.com [华普软件]           ★★★★★★★
+//★★★★★★★           华普软件-VB、C#专业论文与源码荟萃!           ★★★★★★★
+//#####################################################################################
+
+namespace UAS_MES.CustomControl.SetLoading
+{
+    partial class LoadingCircle
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+    }
+}

+ 470 - 0
UAS_CheckWork/LoadingCircle.cs

@@ -0,0 +1,470 @@
+//#####################################################################################
+//★★★★★★★           http://www.cnpopsoft.com [华普软件]           ★★★★★★★
+//★★★★★★★           华普软件-VB、C#专业论文与源码荟萃!           ★★★★★★★
+//#####################################################################################
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Text;
+using System.Windows.Forms;
+
+namespace UAS_MES.CustomControl.SetLoading
+{
+    public partial class LoadingCircle : Control
+    {
+        #region 常数
+        private const double NumberOfDegreesInCircle = 360;
+        private const double NumberOfDegreesInHalfCircle = NumberOfDegreesInCircle / 2;
+        private const int DefaultInnerCircleRadius = 8;
+        private const int DefaultOuterCircleRadius = 10;
+        private const int DefaultNumberOfSpoke = 10;
+        private const int DefaultSpokeThickness = 4;
+        private readonly Color DefaultColor = Color.DarkGray;
+
+        private const int MacOSXInnerCircleRadius = 5;
+        private const int MacOSXOuterCircleRadius = 11;
+        private const int MacOSXNumberOfSpoke = 12;
+        private const int MacOSXSpokeThickness = 2;
+
+        private const int FireFoxInnerCircleRadius = 6;
+        private const int FireFoxOuterCircleRadius = 7;
+        private const int FireFoxNumberOfSpoke = 9;
+        private const int FireFoxSpokeThickness = 4;
+
+        private const int IE7InnerCircleRadius = 8;
+        private const int IE7OuterCircleRadius = 9;
+        private const int IE7NumberOfSpoke = 24;
+        private const int IE7SpokeThickness = 4;
+
+        #endregion
+
+        #region 枚举
+
+        public enum StylePresets
+        {
+            MacOSX,
+            Firefox,
+            IE7,
+            Custom
+        }
+
+        #endregion
+
+        #region 局部变量
+
+        private Timer m_Timer;
+        private bool m_IsTimerActive;
+        private int m_NumberOfSpoke;
+        private int m_SpokeThickness;
+        private int m_ProgressValue;
+        private int m_OuterCircleRadius;
+        private int m_InnerCircleRadius;
+        private PointF m_CenterPoint;
+        private Color m_Color;
+        private Color[] m_Colors;
+        private double[] m_Angles;
+        private StylePresets m_StylePreset;
+
+        #endregion
+
+        #region 属性
+
+        /// <summary>
+        /// 获取和设置控件高亮色
+        /// </summary>
+        /// <value>高亮色</value>
+        [TypeConverter("System.Drawing.ColorConverter"),
+        Category("LoadingCircle"),
+        Description("获取和设置控件高亮色")]
+        public Color Color
+        {
+            get
+            {
+                return m_Color;
+            }
+            set
+            {
+                m_Color = value;
+
+                GenerateColorsPallet();
+                Invalidate();
+            }
+        }
+
+        /// <summary>
+        /// 获取和设置外围半径
+        /// </summary>
+        /// <value>外围半径</value>
+        [System.ComponentModel.Description("获取和设置外围半径"),
+         System.ComponentModel.Category("LoadingCircle")]
+        public int OuterCircleRadius
+        {
+            get
+            {
+                if (m_OuterCircleRadius == 0)
+                    m_OuterCircleRadius = DefaultOuterCircleRadius;
+
+                return m_OuterCircleRadius;
+            }
+            set
+            {
+                m_OuterCircleRadius = value;
+                Invalidate();
+            }
+        }
+
+        /// <summary>
+        /// 获取和设置内圆半径
+        /// </summary>
+        /// <value>内圆半径</value>
+        [System.ComponentModel.Description("获取和设置内圆半径"),
+         System.ComponentModel.Category("LoadingCircle")]
+        public int InnerCircleRadius
+        {
+            get
+            {
+                if (m_InnerCircleRadius == 0)
+                    m_InnerCircleRadius = DefaultInnerCircleRadius;
+
+                return m_InnerCircleRadius;
+            }
+            set
+            {
+                m_InnerCircleRadius = value;
+                Invalidate();
+            }
+        }
+
+        /// <summary>
+        /// 获取和设置辐条数量
+        /// </summary>
+        /// <value>辐条数量</value>
+        [System.ComponentModel.Description("获取和设置辐条数量"),
+        System.ComponentModel.Category("LoadingCircle")]
+        public int NumberSpoke
+        {
+            get
+            {
+                if (m_NumberOfSpoke == 0)
+                    m_NumberOfSpoke = DefaultNumberOfSpoke;
+                return m_NumberOfSpoke;
+            }
+            set
+            {
+                if (m_NumberOfSpoke != value && m_NumberOfSpoke > 0)
+                {
+                    m_NumberOfSpoke = value;
+                    GenerateColorsPallet();
+                    GetSpokesAngles();
+                    Invalidate();
+                }
+            }
+        }
+
+        /// <summary>
+        /// 获取和设置一个布尔值,表示当前控件<see cref="T:LoadingCircle"/>是否激活。
+        /// </summary>
+        /// <value><c>true</c> 表示激活;否则,为<c>false</c>。</value>
+        [System.ComponentModel.Description("获取和设置一个布尔值,表示当前控件是否激活。"),
+        System.ComponentModel.Category("LoadingCircle")]
+        public bool Active
+        {
+            get
+            {
+                return m_IsTimerActive;
+            }
+            set
+            {
+                m_IsTimerActive = value;
+                ActiveTimer();
+            }
+        }
+
+        /// <summary>
+        /// 获取和设置辐条粗细程度。
+        /// </summary>
+        /// <value>辐条粗细值</value>
+        [System.ComponentModel.Description("获取和设置辐条粗细程度。"),
+        System.ComponentModel.Category("LoadingCircle")]
+        public int SpokeThickness
+        {
+            get
+            {
+                if (m_SpokeThickness <= 0)
+                    m_SpokeThickness = DefaultSpokeThickness;
+                return m_SpokeThickness;
+            }
+            set
+            {
+                m_SpokeThickness = value;
+                Invalidate();
+            }
+        }
+
+        /// <summary>
+        /// 获取和设置旋转速度。
+        /// </summary>
+        /// <value>旋转速度</value>
+        [System.ComponentModel.Description("获取和设置旋转速度。"),
+        System.ComponentModel.Category("LoadingCircle")]
+        public int RotationSpeed
+        {
+            get
+            {
+                return m_Timer.Interval;
+            }
+            set
+            {
+                if (value > 0)
+                    m_Timer.Interval = value;
+            }
+        }
+
+        /// <summary>
+        /// 快速设置预定义风格。
+        /// </summary>
+        /// <value>风格的值</value>
+        [Category("LoadingCircle"),
+        Description("快速设置预定义风格。"),
+         DefaultValue(typeof(StylePresets), "Custom")]
+        public StylePresets StylePreset
+        {
+            get { return m_StylePreset; }
+            set
+            {
+                m_StylePreset = value;
+
+                switch (m_StylePreset)
+                {
+                    case StylePresets.MacOSX:
+                        SetCircleAppearance(MacOSXNumberOfSpoke,
+                            MacOSXSpokeThickness, MacOSXInnerCircleRadius,
+                            MacOSXOuterCircleRadius);
+                        break;
+                    case StylePresets.Firefox:
+                        SetCircleAppearance(FireFoxNumberOfSpoke,
+                            FireFoxSpokeThickness, FireFoxInnerCircleRadius,
+                            FireFoxOuterCircleRadius);
+                        break;
+                    case StylePresets.IE7:
+                        SetCircleAppearance(IE7NumberOfSpoke,
+                            IE7SpokeThickness, IE7InnerCircleRadius,
+                            IE7OuterCircleRadius);
+                        break;
+                    case StylePresets.Custom:
+                        SetCircleAppearance(DefaultNumberOfSpoke,
+                            DefaultSpokeThickness,
+                            DefaultInnerCircleRadius,
+                            DefaultOuterCircleRadius);
+                        break;
+                }
+            }
+        }
+
+        #endregion
+
+        #region 构造函数及事件处理
+
+        public LoadingCircle()
+        {
+            SetStyle(ControlStyles.UserPaint, true);
+            SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
+            SetStyle(ControlStyles.ResizeRedraw, true);
+            SetStyle(ControlStyles.SupportsTransparentBackColor, true);
+
+            m_Color = DefaultColor;
+
+            GenerateColorsPallet();
+            GetSpokesAngles();
+            GetControlCenterPoint();
+
+            m_Timer = new Timer();
+            m_Timer.Tick += new EventHandler(aTimer_Tick);
+            ActiveTimer();
+
+            this.Resize += new EventHandler(LoadingCircle_Resize);
+        }
+
+        void LoadingCircle_Resize(object sender, EventArgs e)
+        {
+            GetControlCenterPoint();
+        }
+
+        void aTimer_Tick(object sender, EventArgs e)
+        {
+            m_ProgressValue = ++m_ProgressValue % m_NumberOfSpoke;
+            Invalidate();
+        }
+
+        protected override void OnPaint(PaintEventArgs e)
+        {
+            if (m_NumberOfSpoke > 0)
+            {
+                e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
+
+                int intPosition = m_ProgressValue;
+                for (int intCounter = 0; intCounter < m_NumberOfSpoke; intCounter++)
+                {
+                    intPosition = intPosition % m_NumberOfSpoke;
+                    DrawLine(e.Graphics,
+                             GetCoordinate(m_CenterPoint, m_InnerCircleRadius, m_Angles[intPosition]),
+                             GetCoordinate(m_CenterPoint, m_OuterCircleRadius, m_Angles[intPosition]),
+                             m_Colors[intCounter], m_SpokeThickness);
+                    intPosition++;
+                }
+            }
+
+            base.OnPaint(e);
+        }
+
+        #endregion
+
+        #region 局部方法
+
+        private Color Darken(Color _objColor, int _intPercent)
+        {
+            int intRed = _objColor.R;
+            int intGreen = _objColor.G;
+            int intBlue = _objColor.B;
+            return Color.FromArgb(_intPercent, Math.Min(intRed, byte.MaxValue), Math.Min(intGreen, byte.MaxValue), Math.Min(intBlue, byte.MaxValue));
+        }
+
+        private void GenerateColorsPallet()
+        {
+            m_Colors = GenerateColorsPallet(m_Color, Active, m_NumberOfSpoke);
+        }
+
+        private Color[] GenerateColorsPallet(Color _objColor, bool _blnShadeColor, int _intNbSpoke)
+        {
+            Color[] objColors = new Color[NumberSpoke];
+
+            byte bytIncrement = (byte)(byte.MaxValue / NumberSpoke);
+
+            byte PERCENTAGE_OF_DARKEN = 0;
+
+            for (int intCursor = 0; intCursor < NumberSpoke; intCursor++)
+            {
+                if (_blnShadeColor)
+                {
+                    if (intCursor == 0 || intCursor < NumberSpoke - _intNbSpoke)
+                        objColors[intCursor] = _objColor;
+                    else
+                    {
+                        PERCENTAGE_OF_DARKEN += bytIncrement;
+
+                        if (PERCENTAGE_OF_DARKEN > byte.MaxValue)
+                            PERCENTAGE_OF_DARKEN = byte.MaxValue;
+
+                        objColors[intCursor] = Darken(_objColor, PERCENTAGE_OF_DARKEN);
+                    }
+                }
+                else
+                    objColors[intCursor] = _objColor;
+            }
+
+            return objColors;
+        }
+
+        private void GetControlCenterPoint()
+        {
+            m_CenterPoint = GetControlCenterPoint(this);
+        }
+
+        private PointF GetControlCenterPoint(Control _objControl)
+        {
+            return new PointF(_objControl.Width / 2, _objControl.Height / 2 - 1);
+        }
+
+        private void DrawLine(Graphics _objGraphics, PointF _objPointOne, PointF _objPointTwo,
+                              Color _objColor, int _intLineThickness)
+        {
+            using (Pen objPen = new Pen(new SolidBrush(_objColor), _intLineThickness))
+            {
+                objPen.StartCap = LineCap.Round;
+                objPen.EndCap = LineCap.Round;
+                _objGraphics.DrawLine(objPen, _objPointOne, _objPointTwo);
+            }
+        }
+
+        private PointF GetCoordinate(PointF _objCircleCenter, int _intRadius, double _dblAngle)
+        {
+            double dblAngle = Math.PI * _dblAngle / NumberOfDegreesInHalfCircle;
+
+            return new PointF(_objCircleCenter.X + _intRadius * (float)Math.Cos(dblAngle),
+                              _objCircleCenter.Y + _intRadius * (float)Math.Sin(dblAngle));
+        }
+
+        private void GetSpokesAngles()
+        {
+            m_Angles = GetSpokesAngles(NumberSpoke);
+        }
+
+        private double[] GetSpokesAngles(int _intNumberSpoke)
+        {
+            double[] Angles = new double[_intNumberSpoke];
+            double dblAngle = (double)NumberOfDegreesInCircle / _intNumberSpoke;
+
+            for (int shtCounter = 0; shtCounter < _intNumberSpoke; shtCounter++)
+                Angles[shtCounter] = (shtCounter == 0 ? dblAngle : Angles[shtCounter - 1] + dblAngle);
+
+            return Angles;
+        }
+
+        private void ActiveTimer()
+        {
+            if (m_IsTimerActive)
+                m_Timer.Start();
+            else
+            {
+                m_Timer.Stop();
+                m_ProgressValue = 0;
+            }
+
+            GenerateColorsPallet();
+            Invalidate();
+        }
+
+        #endregion
+
+        #region 全局方法
+
+        /// <summary>
+        /// 获取适合控件区域的矩形大小。
+        /// </summary>
+        /// <param name="proposedSize">The custom-sized area for a control.</param>
+        /// <returns>
+        /// An ordered pair of type <see cref="T:System.Drawing.Size"></see> representing the width and height of a rectangle.
+        /// </returns>
+        public override Size GetPreferredSize(Size proposedSize)
+        {
+            proposedSize.Width =
+                (m_OuterCircleRadius + m_SpokeThickness) * 2;
+
+            return proposedSize;
+        }
+
+        /// <summary>
+        /// 设置控件的外观
+        /// </summary>
+        /// <param name="numberSpoke">条数</param>
+        /// <param name="spokeThickness">粗细</param>
+        /// <param name="innerCircleRadius">内圆半径</param>
+        /// <param name="outerCircleRadius">外圆半径</param>
+        public void SetCircleAppearance(int numberSpoke, int spokeThickness,
+            int innerCircleRadius, int outerCircleRadius)
+        {
+            NumberSpoke = numberSpoke;
+            SpokeThickness = spokeThickness;
+            InnerCircleRadius = innerCircleRadius;
+            OuterCircleRadius = outerCircleRadius;
+
+            Invalidate();
+        }
+
+        #endregion
+    }
+}

+ 70 - 3
UAS_CheckWork/Program.cs

@@ -1,6 +1,8 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Security.Principal;
+using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
 
@@ -14,9 +16,74 @@ namespace UAS_CheckWork
         [STAThread]
         static void Main()
         {
-            Application.EnableVisualStyles();
-            Application.SetCompatibleTextRenderingDefault(false);
-            Application.Run(new Form1());
+            try
+            {
+                WindowsIdentity identity = WindowsIdentity.GetCurrent();
+                WindowsPrincipal principal = new WindowsPrincipal(identity);
+                //设置应用程序处理异常方式:ThreadException处理
+                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
+                //处理UI线程异常
+                Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
+                //处理非UI线程异常
+                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
+                #region 应用程序的主入口点
+                Application.EnableVisualStyles();
+                Application.SetCompatibleTextRenderingDefault(false);
+                ////处理全局事件
+                //GlobalEventsHandler g = new GlobalEventsHandler();
+                //添加全局事件的监听
+                //Application.AddMessageFilter(g);
+                if (principal.IsInRole(WindowsBuiltInRole.Administrator))
+                    Application.Run(new Form1());
+                else
+                {
+                    //创建启动对象
+                    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
+                    // 设置运行文件
+                    startInfo.FileName = Application.ExecutablePath;
+                    //设置启动动作,确保以管理员身份运行
+                    startInfo.Verb = "runas";
+                    //如果不是管理员,则启动UAC
+                    System.Diagnostics.Process.Start(startInfo);
+                }
+                #endregion
+            }
+            catch (Exception ex)
+            {
+                string str = GetExceptionMsg(ex, string.Empty);
+                MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
+            }
+        }
+        //处理线程的异常
+        static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
+        {
+            string str = GetExceptionMsg(e.Exception, e.ToString());
+            MessageBox.Show(str, "提示", MessageBoxButtons.OK, MessageBoxIcon.Stop);
+        }
+
+        //未处理的异常统一通过这里返回
+        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
+        {
+            string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString());
+            MessageBox.Show(str, "提示", MessageBoxButtons.OK, MessageBoxIcon.Stop);
+        }
+
+        /// <summary>
+        /// 生成自定义异常消息
+        /// </summary>
+        /// <param name="ex">异常对象</param>
+        /// <param name="backStr">备用异常消息:当ex为null时有效</param>
+        /// <returns>异常字符串文本</returns>
+        static string GetExceptionMsg(Exception ex, string backStr)
+        {
+            StringBuilder sb = new StringBuilder();
+            if (ex != null)
+            {
+                sb.AppendLine(ex.Message);
+                //sb.AppendLine("【异常方法】:" + ex.StackTrace);
+            }
+            //else { sb.AppendLine("【未处理异常】:" + backStr); }
+            return sb.ToString();
         }
     }
 }

+ 37 - 17
UAS_CheckWork/Properties/Settings.Designer.cs

@@ -1,30 +1,50 @@
 //------------------------------------------------------------------------------
 // <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_CheckWork.Properties
-{
-
-
+namespace UAS_CheckWork.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;
             }
         }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("")]
+        public string IP {
+            get {
+                return ((string)(this["IP"]));
+            }
+            set {
+                this["IP"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("")]
+        public string Port {
+            get {
+                return ((string)(this["Port"]));
+            }
+            set {
+                this["Port"] = value;
+            }
+        }
     }
 }

+ 11 - 6
UAS_CheckWork/Properties/Settings.settings

@@ -1,7 +1,12 @@
 <?xml version='1.0' encoding='utf-8'?>
-<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
-  <Profiles>
-    <Profile Name="(Default)" />
-  </Profiles>
-  <Settings />
-</SettingsFile>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="UAS_CheckWork.Properties" GeneratedClassName="Settings">
+  <Profiles />
+  <Settings>
+    <Setting Name="IP" Type="System.String" Scope="User">
+      <Value Profile="(Default)" />
+    </Setting>
+    <Setting Name="Port" Type="System.String" Scope="User">
+      <Value Profile="(Default)" />
+    </Setting>
+  </Settings>
+</SettingsFile>

+ 76 - 0
UAS_CheckWork/SetLoadingWindow.Designer.cs

@@ -0,0 +1,76 @@
+using UAS_MES.CustomControl.SetLoading;
+
+namespace UAS_MES.PublicForm
+{
+    partial class SetLoadingWindow
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SetLoadingWindow));
+            this.loadingCircle1 = new UAS_MES.CustomControl.SetLoading.LoadingCircle();
+            this.SuspendLayout();
+            // 
+            // loadingCircle1
+            // 
+            this.loadingCircle1.Active = false;
+            this.loadingCircle1.Color = System.Drawing.Color.DarkGray;
+            this.loadingCircle1.InnerCircleRadius = 5;
+            this.loadingCircle1.Location = new System.Drawing.Point(141, 65);
+            this.loadingCircle1.Margin = new System.Windows.Forms.Padding(4);
+            this.loadingCircle1.Name = "loadingCircle1";
+            this.loadingCircle1.NumberSpoke = 12;
+            this.loadingCircle1.OuterCircleRadius = 11;
+            this.loadingCircle1.RotationSpeed = 100;
+            this.loadingCircle1.Size = new System.Drawing.Size(100, 62);
+            this.loadingCircle1.SpokeThickness = 2;
+            this.loadingCircle1.StylePreset = UAS_MES.CustomControl.SetLoading.LoadingCircle.StylePresets.MacOSX;
+            this.loadingCircle1.TabIndex = 0;
+            this.loadingCircle1.Text = "loadingCircle1";
+            // 
+            // SetLoadingWindow
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.BackColor = System.Drawing.Color.White;
+            this.ClientSize = new System.Drawing.Size(379, 198);
+            this.Controls.Add(this.loadingCircle1);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.Margin = new System.Windows.Forms.Padding(4);
+            this.Name = "SetLoadingWindow";
+            this.Text = "SetLoadingWindow";
+            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SetLoadingWindow_FormClosing);
+            this.Load += new System.EventHandler(this.SetLoadingWindow_Load);
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private LoadingCircle loadingCircle1;
+    }
+}

+ 60 - 0
UAS_CheckWork/SetLoadingWindow.cs

@@ -0,0 +1,60 @@
+using System;
+using System.Threading;
+using System.Windows.Forms;
+
+namespace UAS_MES.PublicForm
+{
+    public partial class SetLoadingWindow : Form
+    {
+
+        Thread LoadingThread;
+
+        public SetLoadingWindow()
+        {
+            InitializeComponent();
+        }
+
+        public SetLoadingWindow(Thread LoadEvent,string Title)
+        {
+            InitializeComponent();
+            LoadingThread = LoadEvent;
+            Text = Title;
+        }
+
+        private void SetLoadingWindow_Load(object sender, EventArgs e)
+        {
+            //设置Loading的大小,启动传递过来的进程 
+            loadingCircle1.OuterCircleRadius = 20;
+            loadingCircle1.InnerCircleRadius = 12;
+            loadingCircle1.Active = true;
+            LoadingThread.Start();
+            //在本窗体新建一个进程用来判断传递的进程是否执行结束
+            Thread t1 = new Thread(SetLoadFinish);
+            t1.Start();
+        }
+
+        private void SetLoadFinish()
+        {
+            try
+            {
+                while (LoadingThread.IsAlive)
+                {
+
+                }
+                Close();
+            }
+            catch (Exception)
+            {
+                return;
+            }
+        }
+        
+        //在进程结束之前不允许此窗体被关闭
+        private void SetLoadingWindow_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            if (LoadingThread.IsAlive) {
+                e.Cancel=true;
+            }
+        }
+    }
+}

+ 1253 - 0
UAS_CheckWork/SetLoadingWindow.resx

@@ -0,0 +1,1253 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <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>
+        AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABABMLAAATCwAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA
+        AAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAEAAAABAAA
+        AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAwAA
+        AAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAA
+        AAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAIAAAADAAAAAwAAAAMAAAAEAAAABQAAAAUAAAAGAAAABwAA
+        AAgAAAAKAAAACwAAAAwAAAAMAAAADQAAAA4AAAAPAAAAEAAAABIAAAATAAAAEwAAABQAAAAVAAAAFgAA
+        ABcAAAAXAAAAGAAAABgAAAAaAAAAGgAAABsAAAAbAAAAGwAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAA
+        ABwAAAAcAAAAHAAAABwAAAAbAAAAGwAAABsAAAAaAAAAGgAAABkAAAAYAAAAGAAAABcAAAAXAAAAFgAA
+        ABYAAAAVAAAAEwAAABIAAAARAAAAEAAAAA8AAAAOAAAADQAAAAwAAAALAAAACgAAAAgAAAAIAAAABwAA
+        AAYAAAAFAAAABAAAAAQAAAADAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAIAAAACgAA
+        AAsAAAAOAAAAEAAAABIAAAAVAAAAGAAAABsAAAAdAAAAIQAAACQAAAAoAAAAKgAAAC0AAAAwAAAAMwAA
+        ADYAAAA6AAAAPAAAAD4AAABBAAAAQwAAAEUAAABHAAAASQAAAEsAAABMAAAATgAAAFAAAABRAAAAUgAA
+        AFMAAABUAAAAVQAAAFUAAABVAAAAVQAAAFYAAABWAAAAVQAAAFUAAABVAAAAVQAAAFQAAABTAAAAUwAA
+        AFIAAABRAAAAUAAAAE4AAABMAAAASwAAAEoAAABJAAAARwAAAEQAAABDAAAAPwAAAD0AAAA6AAAANwAA
+        ADQAAAAxAAAALgAAACsAAAAnAAAAJAAAACEAAAAeAAAAGgAAABgAAAAVAAAAEwAAABAAAAAOAAAADAAA
+        AAkAAAAIAAAABgAAAAUAAAAEAAAAAwAAAAIAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAA
+        AAQAAAAGAAAACAAAAAoAAAANAAAAEAAAABUAAAAZAAAAHQAAACIAAAAoAAAALQAAADQAAAA5AAAAPwAA
+        AEUAAABMAAAAUgAAAFgAAABdAAAAYwAAAGgAAABtAAAAcgAAAHYAAAB6AAAAfgAAAIEAAACEAAAAhwAA
+        AIoAAACNAAAAjwAAAJEAAACSAAAAlAAAAJUAAACXAAAAmAAAAJkAAACaAAAAmgAAAJsAAACbAAAAmwAA
+        AJsAAACbAAAAmwAAAJsAAACaAAAAmgAAAJkAAACYAAAAlwAAAJYAAACVAAAAkwAAAJIAAACQAAAAjwAA
+        AI0AAACKAAAAhwAAAIUAAACBAAAAfQAAAHoAAAB1AAAAcQAAAG0AAABnAAAAYgAAAFwAAABWAAAATwAA
+        AEkAAABDAAAAPAAAADYAAAAxAAAAKgAAACUAAAAfAAAAGgAAABYAAAASAAAADwAAAAwAAAAJAAAABwAA
+        AAUAAAAEAAAAAwAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAQAAAAGAAAACAAAAAsAAAAPAAAAFAAAABkAAAAfAAAAJQAA
+        AC0AAAA0AAAAPQAAAEUAAABPAAAAVwAAAGAAAABrAAAAdwICAoMEBASLBQUFkgQEBJgEBASeBAQEogQE
+        BKcEBASsBAQErwQEBLMEBAS2BAQEuAQEBLsEBAS9AwMDvwMDA8EDAwPDAwMDxAMDA8UDAwPGAwMDxwMD
+        A8gDAwPJAwMDyQMDA8oDAwPKAwMDywMDA8sDAwPLAwMDywMDA8sDAwPLAwMDywMDA8sDAwPKAwMDygMD
+        A8kDAwPJAwMDyAMDA8cDAwPGAwMDxgMDA8UDAwPEAwMDwgMDA8ADAwO+BAQEvAQEBLoEBAS3BAQEtAQE
+        BLAEBAStBAQEqQQEBKQEBASfBAQEmQUFBZMEBASLAwMDggAAAHcAAABqAAAAXgAAAFYAAABMAAAAQwAA
+        ADoAAAAyAAAAKgAAACIAAAAdAAAAGAAAABIAAAAOAAAACwAAAAcAAAAFAAAAAwAAAAMAAAABAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABQAA
+        AAgAAAAMAAAAEAAAABUAAAAcAAAAIwAAACsAAAAzAAAAPgAAAEkAAABUAAAAXgAAAGwKCgqFJiYmp0FB
+        QcVUVFTZX19f5WRkZOtmZmbtZmZm7mVlZe9lZWXwZWVl8WRkZPJkZGTzZGRk82RkZPRjY2P0Y2Nj9GNj
+        Y/VjY2P1Y2Nj9WNjY/ZjY2P2Y2Nj9mNjY/ZjY2P2YmJi92JiYvdiYmL3YmJi92JiYvdiYmL3YmJi92Ji
+        YvdiYmL3YmJi92JiYvdiYmL3YmJi92JiYvdiYmL3YmJi92JiYvdiYmL2YmJi9mJiYvZiYmL2Y2Nj9mNj
+        Y/ZjY2P2Y2Nj9mNjY/VjY2P1Y2Nj9WNjY/RkZGTzZGRk82RkZPJkZGTyZWVl8WVlZfBmZmbvZmZm7mVl
+        ZethYWHmV1dX20ZGRsgsLCyrDw8PiQAAAGwAAABdAAAAUgAAAEcAAAA8AAAAMgAAACkAAAAiAAAAGwAA
+        ABUAAAAPAAAACwAAAAcAAAAFAAAABAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAQAAAAGAAAACQAAAAwAAAARAAAAFgAAAB0AAAAmAAAALwAA
+        ADkAAABEAAAATgAAAFwVFRWDRUVFvWlpaeh9fX37hYWF/4eHh/+IiIj/iYmJ/4mJif+Kior/ioqK/4qK
+        iv+Kior/ioqK/4qKiv+Kior/ioqK/4qKiv+Kior/ioqK/4qKiv+Kior/ioqK/4qKiv+Kior/ioqK/4qK
+        iv+Kior/ioqK/4qKiv+Kior/ioqK/4qKiv+Kior/ioqK/4qKiv+Kior/ioqK/4qKiv+Kior/ioqK/4qK
+        iv+Kior/ioqK/4qKiv+Kior/ioqK/4qKiv+Kior/ioqK/4qKiv+Kior/ioqK/4qKiv+Kior/ioqK/4qK
+        iv+Kior/ioqK/4qKiv+Kior/ioqK/4qKiv+Kior/iYmJ/4mJif+IiIj/hYWF/39/f/xubm7tTk5Oxh8f
+        H4sAAABfAAAATgAAAEMAAAA5AAAALwAAACYAAAAeAAAAFwAAABEAAAAMAAAACQAAAAUAAAADAAAAAgAA
+        AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAA
+        AAQAAAAGAAAACQAAAA0AAAARAAAAFwAAAB0AAAAlAAAALQAAADUHBwdQRUVFoXJycumEhIT/iYmJ/4qK
+        iv+Li4v/jY2N/46Ojv+Pj4//kJCQ/5CQkP+QkJD/kJCQ/5CQkP+RkZH/kZGR/5GRkf+RkZH/kZGR/5GR
+        kf+RkZH/kZGR/5GRkf+RkZH/kZGR/5GRkf+RkZH/kZGR/5GRkf+RkZH/kZGR/5GRkf+RkZH/kZGR/5GR
+        kf+RkZH/kZGR/5GRkf+RkZH/kZGR/5GRkf+RkZH/kZGR/5GRkf+RkZH/kZGR/5GRkf+RkZH/kZGR/5GR
+        kf+RkZH/kZGR/5GRkf+RkZH/kZGR/5GRkf+RkZH/kZGR/5GRkf+RkZH/kZGR/5CQkP+QkJD/kJCQ/5CQ
+        kP+Pj4//jo6O/42Njf+Li4v/ioqK/4mJif+Ghob/d3d38E9PT7ESEhJdAAAAOQAAADEAAAAnAAAAIAAA
+        ABkAAAATAAAADgAAAAoAAAAHAAAABAAAAAMAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABgAAAAkAAAAMAAAAEAAA
+        ABQAAAAYIyMjQmVlZbiDg4P7ioqK/4uLi/+Ojo7/kZGR/5SUlP+Xl5f/mJiY/5qamv+bm5v/nJyc/5yc
+        nP+cnJz/nJyc/5ycnP+cnJz/nJyc/5ycnP+cnJz/nJyc/5ycnP+cnJz/nJyc/5ycnP+cnJz/nJyc/5yc
+        nP+cnJz/nJyc/5ycnP+cnJz/nJyc/5ycnP+cnJz/nJyc/5ycnP+cnJz/nJyc/5ycnP+cnJz/nJyc/5yc
+        nP+cnJz/nJyc/5ycnP+cnJz/nJyc/5ycnP+cnJz/nJyc/5ycnP+cnJz/nJyc/5ycnP+cnJz/nJyc/5yc
+        nP+cnJz/nJyc/5ycnP+cnJz/nJyc/5ycnP+cnJz/m5ub/5qamv+ZmZn/l5eX/5WVlf+SkpL/j4+P/4yM
+        jP+Kior/hYWF/21tbc0yMjJZAAAAHQAAABgAAAAUAAAADwAAAAsAAAAIAAAABgAAAAQAAAADAAAAAgAA
+        AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAQAAAAEAAAACAAAAAwAAAAQBAQEFAAAABTs7OzZ0dHTDiIiI/4yMjP+Pj4//k5OT/5iY
+        mP+cnJz/oKCg/6Kiov+lpaX/pqam/6enp/+oqKj/qKio/6ioqP+oqKj/qKio/6ioqP+oqKj/qKio/6io
+        qP+oqKj/qKio/6ioqP+oqKj/qKio/6ioqP+oqKj/qKio/6ioqP+oqKj/qKio/6ioqP+oqKj/qKio/6io
+        qP+oqKj/qKio/6ioqP+oqKj/qKio/6ioqP+oqKj/qKio/6ioqP+oqKj/qKio/6ioqP+oqKj/qKio/6io
+        qP+oqKj/qKio/6ioqP+oqKj/qKio/6ioqP+oqKj/qKio/6ioqP+oqKj/qKio/6ioqP+oqKj/qKio/6io
+        qP+np6f/pqam/6Wlpf+jo6P/oKCg/52dnf+ZmZn/lJSU/5CQkP+MjIz/iYmJ/3p6etpJSUlPAAAACgEB
+        AQgAAAAGAAAABAAAAAMAAAACAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAe7u
+        7gA+Pj4ieHh4vYqKiv+Ojo7/kpKS/5iYmP+dnZ3/o6Oj/6enp/+rq6v/ra2t/6+vr/+xsbH/sbGx/7Ky
+        sv+ysrL/srKy/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Oz
+        s/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Oz
+        s/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Oz
+        s/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Kysv+ysrL/srKy/7Kysv+xsbH/sLCw/66urv+rq6v/qKio/6Sk
+        pP+fn5//mZmZ/5OTk/+Ojo7/i4uL/319fdZOTk47////AAQEBAEAAAABAAAAAQAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAA6OjoAGhoaC3R0dJuLi4v/j4+P/5SUlP+bm5v/oqKi/6io
+        qP+tra3/sbGx/7S0tP+3t7f/uLi4/7m5uf+6urr/urq6/7q6uv+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7
+        u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7
+        u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7
+        u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7q6
+        uv+6urr/urq6/7m5uf+4uLj/t7e3/7W1tf+ysrL/rq6u/6mpqf+jo6P/nJyc/5aWlv+QkJD/jY2N/3x8
+        fL5AQEAcXV1dACkpKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+        /wBqampdioqK9ZGRkf+Wlpb/nJyc/6SkpP+rq6v/sbGx/7a2tv+6urr/vLy8/76+vv+/v7//wMDA/8DA
+        wP/AwMD/wMDA/8DAwP/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HB
+        wf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HB
+        wf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HB
+        wf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/AwMD/wMDA/8DAwP/AwMD/wMDA/7+/v/++vr7/vLy8/7q6
+        uv+3t7f/srKy/6ysrP+lpaX/np6e/5eXl/+SkpL/jY2N/nNzc4MAAAADGBgYAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAABEREQBXV1cASUlJGYWFhceTk5P/l5eX/52dnf+lpaX/ra2t/7S0
+        tP+5ubn/vb29/8DAwP/CwsL/w8PD/8PDw//ExMT/xMTE/8TExP/ExMT/xcXF/8XFxf/FxcX/xcXF/8XF
+        xf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XF
+        xf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XF
+        xf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XF
+        xf/ExMT/xMTE/8TExP/ExMT/xMTE/8PDw//CwsL/wMDA/76+vv+6urr/tbW1/66urv+np6f/n5+f/5iY
+        mP+Tk5P/ioqK4l5eXjJ4eHgA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMnJ
+        yQB2dnZgkpKS+piYmP+dnZ3/paWl/62trf+1tbX/u7u7/8DAwP/Dw8P/xMTE/8XFxf/Gxsb/xsbG/8fH
+        x//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fH
+        x//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fH
+        x//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fH
+        x//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Gxsb/xsbG/8XF
+        xf/ExMT/w8PD/8DAwP+8vLz/tra2/6+vr/+np6f/n5+f/5iYmP+VlZX/fn5+iQAAAAEXFxcAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8PDwAJiYmCYqKiq6ampr/np6e/6SkpP+tra3/tbW1/7u7
+        u//BwcH/xMTE/8bGxv/Hx8f/yMjI/8jIyP/IyMj/yMjI/8fHx//Hx8f/wMDA/7m5uf+3t7f/v7+//8bG
+        xv/Hx8f/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jI
+        yP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jI
+        yP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jI
+        yP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8fHx//Gxsb/xMTE/8HBwf+8vLz/tra2/66u
+        rv+mpqb/n5+f/5ubm/+Pj4/SWlpaG2FhYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZ2
+        dgBsbGwpl5eX4p+fn/+kpKT/q6ur/7Ozs/+7u7v/wcHB/8XFxf/Hx8f/yMjI/8nJyf/Jycn/ycnJ/8nJ
+        yf/Hx8f/srKy/4KCgv9VVVX/Pz8//z09Pf9QUFD/goKC/7a2tv/Hx8f/ycnJ/8nJyf/Jycn/ycnJ/8nJ
+        yf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJ
+        yf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJ
+        yf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJ
+        yf/Jycn/ycnJ/8jIyP/Hx8f/xcXF/8HBwf+8vLz/tbW1/62trf+lpaX/oKCg/5qamvV7e3tKmZmZAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApKSkAISEhFCgoKD5paWl/6qqqv+ysrL/ubm5/8DA
+        wP/FxcX/yMjI/8nJyf/Kysr/y8vL/8vLy//Kysr/yMjI/5qamv8+Pj7/Ghoa/xYWFv8WFhb/FhYW/xYW
+        Fv8cHBz/RERE/5aWlv/FxcX/ysrK/8vLy//Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rK
+        yv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rK
+        yv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rK
+        yv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Kysr/ysrK/8rKyv/Ly8v/ysrK/8nJyf/IyMj/xcXF/8HB
+        wf+7u7v/s7Oz/6ysrP+mpqb/oqKi/42NjXr///8ABwcHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AADd3d0AkZGRdKenp/+rq6v/sbGx/7i4uP++vr7/xMTE/8jIyP/Kysr/zMzM/8zMzP/MzMz/zMzM/8vL
+        y/+ioqL/MTEx/xYWFf8ZGRn/GRkZ/xkZGf8ZGRn/GRkZ/xkZGf8XFxb/LCws/52dnf/Ly8v/zMzM/8zM
+        zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM
+        zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM
+        zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zM
+        zP/MzMz/zMzM/8zMzP/MzMz/zMzM/8rKyv/Jycn/xcXF/8DAwP+5ubn/srKy/6ysrP+oqKj/mJiYngAA
+        AAI3NzcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ0NAP///wCdnZ2HrKys/7CwsP+2trb/vLy8/8PD
+        w//IyMj/y8vL/8zMzP/Nzc3/zs7O/87Ozv/Nzc3/t7e3/0RERP8VFRX/Ghoa/xoaGv8aGhr/Ghoa/xoa
+        Gv8aGhr/Ghoa/xoaGv8YGBf/UVFQ/729vv/Nzc3/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87O
+        zv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87O
+        zv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87O
+        zv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Nzc3/zc3N/8vL
+        y//IyMj/xMTE/76+vv+3t7f/sbGx/62trf+goKCzPj4+B0xMTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAsLCwA////AKOjo5CxsbH/tbW1/7q6uv/AwMD/xsbG/8rKyv/Nzc3/zs7O/8/Pz//Pz8//z8/P/83N
+        zf95eXn/ExMT/xgYGP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8eHh7/fHx8/8rK
+        yv/Ozs7/z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/P
+        z//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/P
+        z//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/P
+        z//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Ozs7/zc3N/8vLy//Hx8f/wsLC/7y8vP+2trb/srKy/6en
+        p7lUVFQIVVVVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMwD///8ApqamkbW1tf+5ubn/vr6+/8TE
+        xP/IyMj/zMzM/8/Pz//Q0ND/0NDQ/9DQ0P/Q0ND/yMjI/0xMTP8ODg7/GRkZ/xsbG/8bGxv/Gxsb/xsb
+        G/8bGxv/Gxsb/xsbG/8bGxv/Gxsb/xoaGf8vLy7/oqKi/8/Pz//Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ
+        0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ
+        0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ
+        0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ0P/Q0ND/0NDQ/9DQ
+        0P/Pz8//zc3N/8nJyf/FxcX/v7+//7q6uv+2trb/q6uruVdXVwhXV1cAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAMzMzAP///wCpqamRuLi4/7y8vP/BwcH/xsbG/8vLy//Pz8//0NDQ/9LS0v/S0tL/0tLS/9LS
+        0v/IyMj/RUVF/wsLC/8XFxf/Gxsb/xwcHP8cHBz/HBwb/xwcHP8cHBz/HBwc/xwcHP8cHBz/HBwc/xoa
+        Gf9NTU3/vr2+/9HR0f/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS
+        0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS
+        0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS
+        0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9HR0f/Pz8//zMzM/8fHx//CwsL/vb29/7m5
+        uf+urq65WFhYCFlZWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NDQA////AKurq5G7u7v/vr6+/8PD
+        w//IyMj/zc3N/9DQ0P/S0tL/09PT/9PT0//T09P/09PT/9DQ0P9paWn/CQkJ/xISEv8ZGRn/HBwc/x0c
+        HP8dHBz/HRwc/x0cHP8dHBz/HRwc/x0cHP8dHBz/HBwc/x4eHf90c3P/zMzM/9PT0//T09P/09PT/9PT
+        0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT
+        0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT
+        0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT
+        0//T09P/0tLS/9HR0f/Ozs7/ycnJ/8TExP+/v7//vLy8/7CwsLlZWVkIWlpaAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAADU1NQD///8Arq6ukb29vf/AwMD/xcXF/8rKyv/Ozs7/0tLS/9TU1P/V1dX/1dXV/9XV
+        1f/V1dX/1NTU/7Ozs/8vLy//CgoK/xQUFP8bGxr/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0d
+        Hf8dHR3/HBwc/yoqKf+YmJj/0tLS/9TU1P/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
+        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
+        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
+        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/U1NT/0tLS/8/Pz//Ly8v/xsbG/8HB
+        wf++vr7/srKyuVtbWwhbW1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTU1AP///wCvr6+Rv7+//8LC
+        wv/Hx8f/zMzM/9DQ0P/T09P/1dXV/9bW1v/W1tb/1tbW/9bW1v/W1tb/1NTU/5iYmP8cHBz/DAwM/xYW
+        Fv8cHBz/Hh4e/x4eHv8eHh7/Hh4e/x4eHv8eHh7/Hh4e/x4eHv8eHh7/HBwc/0FBQP+2trb/1dXV/9bW
+        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
+        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
+        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
+        1v/W1tb/1tbW/9XV1f/U1NT/0dHR/83Nzf/IyMj/w8PD/7+/v/+0tLS5W1tbCFxcXAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAA1NTUA////ALCwsJHAwMD/xMTE/8nJyf/Nzc3/0tLS/9XV1f/X19f/2NjY/9jY
+        2P/Y2Nj/2NjY/9jY2P/X19f/09PT/4CAgP8SEhL/Dw8P/xgYGP8dHR3/Hx8f/x8fH/8fHx7/Hx8f/x8f
+        H/8fHx//Hx8f/x8fH/8fHx7/Hh0d/2JiYv/Kysr/19fX/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
+        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
+        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
+        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/19fX/9XV1f/S0tL/zs7O/8nJ
+        yf/ExMT/wcHB/7W1tblcXFwIXV1dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADY2NgD///8AsbGxkcHB
+        wf/FxcX/ysrK/8/Pz//T09P/1tbW/9jY2P/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/zs7O/2ho
+        aP8NDQ3/ERER/xoaGv8fHh7/IB8f/yAgH/8gHx//ICAf/yAgH/8gIB//ICAf/yAgH/8fHx//JSQk/4iI
+        iP/U1NT/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
+        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
+        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
+        2f/Z2dn/2dnZ/9nZ2f/Y2Nj/19fX/9TU1P/Q0ND/y8vL/8bGxv/CwsL/tra2uVxcXAhdXV0AAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAANjY2AP///wCzs7ORw8PD/8bGxv/Ly8v/0NDQ/9XV1f/Y2Nj/2tra/9vb
+        2//b29v/29vb/9vb2//b29v/29vb/9vb2//a2tr/yMjI/1JSUv8LCwv/ExMT/xwbG/8gIB//ISAg/yEg
+        IP8hICD/ISAg/yEgIP8hICD/ISAg/yEgIP8fHx//NTU1/6urq//Z2dn/29vb/9vb2//b29v/29vb/9vb
+        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
+        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
+        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9ra2v/Y2Nj/1dXV/9HR
+        0f/MzMz/x8fH/8TExP+4uLi5XV1dCF5eXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2NjYA////ALS0
+        tJHExMT/yMjI/83Nzf/S0tL/1tbW/9nZ2f/b29v/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
+        3P/b29v/vb29/z4+Pv8LCwv/FhUV/x4dHf8hISD/IiEh/yEhIf8hISH/ISEh/yEhIf8hISH/ISEh/yIh
+        If8fHx//UVFR/8XFxf/b29v/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
+        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
+        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
+        3P/c3Nz/3Nzc/9zc3P/c3Nz/29vb/9ra2v/X19f/09PT/83Nzf/IyMj/xcXF/7m5ubleXl4IXl5eAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAADc3NwD///8AtbW1kcXFxf/Jycn/zs7O/9PT0//X19f/29vb/9zc
+        3P/d3d3/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/93d3f/c3Nz/r6+v/ywsLP8MDAz/GBcX/x8f
+        H/8iIiL/IiIi/yIiIv8iIiL/IiIi/yIiIv8iIiL/IiIi/yIiIv8jIyL/dnZ2/9TU1P/d3d3/3t7e/97e
+        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
+        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
+        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/d3d3/29vb/9jY
+        2P/U1NT/z8/P/8rKyv/Gxsb/urq6uV5eXghfX18AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzc3AP//
+        /wC3t7eRx8fH/8rKyv/Pz8//1NTU/9nZ2f/c3Nz/3t7e/9/f3//f39//39/f/9/f3//f39//39/f/9/f
+        3//f39//39/f/9/f3//c3Nz/nZ2d/x8fH/8PDg7/GhoZ/yEhIP8jIyP/IyMj/yMjI/8jIyP/IyMj/yMj
+        I/8jIyP/IyMj/yIiIv8uLS3/nJyc/9zc3P/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
+        3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
+        3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
+        3//f39//39/f/9/f3//f39//39/f/97e3v/d3d3/2tra/9bW1v/Q0ND/y8vL/8fHx/+8vLy5Xl5eCF9f
+        XwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ODgA////ALi4uJHIyMj/zMzM/9HR0f/W1tb/2tra/93d
+        3f/f39//4ODg/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Dg4P/h4eH/4eHh/+Dg4P/b29v/iYmJ/xYW
+        Ff8RERH/HBwb/yIiIv8kJCP/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yIiIv9DQ0P/vLy8/9/f
+        3//g4OD/4eHh/+Dg4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
+        4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
+        4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/g4OD/4ODg/97e
+        3v/b29v/19fX/9LS0v/MzMz/ycnJ/729vblfX18IYGBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg4
+        OAD///8AuLi4kcnJyf/Nzc3/0tLS/9fX1//c3Nz/39/f/+Hh4f/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
+        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Hh4f/Y2Nj/c3Nz/xAQEP8TExP/Hh4d/yQkI/8lJSX/JSUl/yUl
+        JP8lJSX/JSUl/yUlJf8lJSX/JSUk/yQjI/9jY2L/0dHR/+Hh4f/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
+        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
+        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
+        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/h4eH/39/f/9zc3P/Y2Nj/09PT/87Ozv/Kysr/vb29uV9f
+        XwhgYGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODg4AP///wC6urqRysrK/87Ozv/T09P/2NjY/93d
+        3f/g4OD/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li
+        4v/S0tL/XV1d/w0NDf8WFhb/ICAg/yUlJf8mJib/JiYm/yYmJf8mJib/JiYm/yYmJv8mJib/JiYl/ykp
+        KP+Hh4f/3Nzc/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li
+        4v/h4eH/3t7e/9nZ2f/U1NT/z8/P/8vLy/++vr65YGBgCGFhYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAA4ODgA////ALu7u5HMzMz/z8/P/9TU1P/Z2dn/3t7e/+Hh4f/j4+P/5OTk/+Xl5f/l5eX/5eXl/+Xl
+        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5OTk/+Tk5P/Jycn/SEhI/w0NDf8ZGBj/IiIi/ycm
+        Jv8nJyf/Jycn/ycnJv8nJyf/Jycn/ycnJ/8nJyf/JiYl/zc3Nv+rq6r/4uLi/+Tk5P/l5eX/5eXl/+Xl
+        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
+        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
+        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Li4v/f39//29vb/9XV1f/Q0ND/zMzM/8DA
+        wLlhYWEIYmJiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADk5OQD///8AvLy8kc3Nzf/Q0ND/1tbW/9vb
+        2//f39//4uLi/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
+        5v/m5ub/5ubm/+Tk5P+8vLz/NjY2/w4ODv8bGxr/JCQk/ygoJ/8oKCj/KCgo/ygoJ/8oKCj/KCgo/ygo
+        KP8oKCj/JiYl/09PTv/Hx8f/5eXl/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
+        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
+        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
+        5v/l5eX/4+Pj/+Dg4P/c3Nz/1tbW/9HR0f/Ozs7/wcHBuWFhYQhiYmIAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAOTk5AP///wC9vb2Rzs7O/9HR0f/X19f/3Nzc/+Hh4f/k5OT/5ubm/+fn5//n5+f/5+fn/+fn
+        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5ubm/+Xl5f+srKz/Jycn/xAQ
+        EP8dHR3/JiYl/ykpKP8pKSn/KSko/ykpKf8pKSn/KSkp/ykpKf8pKSj/KCgn/3Bvb//Z2dn/5ubm/+fn
+        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
+        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
+        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+bm5v/k5OT/4eHh/93d3f/Y2Nj/0tLS/8/P
+        z//CwsK5YmJiCGNjYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6OjoA////AL6+vpHPz8//0tLS/9jY
+        2P/d3d3/4uLi/+Xl5f/n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo
+        6P/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+Tk5P+YmJj/HBwc/xMTE/8gIB//KCgn/yoqKf8rKir/Kyop/ysq
+        Kv8rKir/Kyoq/ysqKv8qKin/MDAv/5WVlf/j4+P/5+fn/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo
+        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo
+        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo
+        6P/o6Oj/5+fn/+Xl5f/i4uL/3t7e/9nZ2f/T09P/z8/P/8PDw7ljY2MIY2NjAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAADo6OgD///8Av7+/kc/Pz//T09P/2dnZ/97e3v/j4+P/5ubm/+jo6P/p6en/6enp/+np
+        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+Hh
+        4f+CgoL/FBQU/xYWFf8iIiL/Kikp/ysrKv8sKyv/Kysq/ysrK/8rKyv/Kysr/ywrK/8qKin/QEA//7e3
+        tv/n5+f/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
+        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
+        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/5ubm/+Pj4//f39//2tra/9TU
+        1P/Q0ND/xMTEuWNjYwhkZGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjo6AP///wC/v7+R0NDQ/9XV
+        1f/a2tr/39/f/+Tk5P/n5+f/6enp/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq
+        6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6enp/9zc3P9ra2v/ERAQ/xkZGP8lJST/Kysq/y0s
+        LP8tLCz/LSwr/y0sK/8tLCv/LSwr/y0sLP8qKin/Wlpa/9DQ0P/p6en/6urq/+rq6v/q6ur/6urq/+rq
+        6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq
+        6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq
+        6v/q6ur/6urq/+np6f/n5+f/5OTk/+Dg4P/b29v/1dXV/9HR0f/ExMS5Y2NjCGRkZAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAA6OjoA////AMDAwJHR0dH/1dXV/9ra2v/g4OD/5OTk/+jo6P/q6ur/6+vr/+vr
+        6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr
+        6//r6+v/6urq/9TU1P9VVVX/Dw8P/xwbG/8nJyb/LSws/y4tLf8uLS3/Li0t/y4tLf8uLS3/Li0t/y4t
+        LP8uLS3/fn19/+Dg4P/q6ur/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr
+        6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr
+        6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6urq/+jo6P/l5eX/4eHh/9vb
+        2//W1tb/0tLS/8XFxblkZGQIZGRkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADo6OgD///8AwcHBkdLS
+        0v/W1tb/29vb/+Hh4f/l5eX/6enp/+vr6//s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs
+        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/8jIyP9BQUH/EBAQ/x4e
+        Hv8pKSj/Li4t/y8vLv8vLy7/Ly4u/y8vLv8vLy7/Ly8u/y4uLf83Nzb/oaGh/+jo6P/r6+v/7Ozs/+zs
+        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs
+        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs
+        7P/s7Oz/7Ozs/+zs7P/r6+v/6enp/+bm5v/i4uL/3Nzc/9fX1//T09P/xsbGuWRkZAhlZWUAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAOjo6AP///wDBwcGR09PT/9fX1//c3Nz/4eHh/+bm5v/p6en/7Ozs/+3t
+        7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t
+        7f/t7e3/7e3t/+3t7f/s7Oz/6+vr/7m5uf8wMDD/EhIS/yEhIP8sKyr/MC8u/zAwL/8wMC//MDAv/zAw
+        L/8wMC//MDAv/y4uLf9JSUj/wMDA/+vr6//t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t
+        7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t
+        7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+zs7P/q6ur/5+fn/+Pj
+        4//d3d3/2NjY/9TU1P/Hx8e5ZWVlCGVlZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7OzsA////AMLC
+        wpHU1NT/2NjY/93d3f/i4uL/5+fn/+rq6v/s7Oz/7e3t/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/t7e3/6urq/6am
+        pv8jIyP/FRUU/yQkI/8uLS3/MTEw/zExMP8xMTD/MTEw/zExMP8xMTD/MTEw/y8vLv9lZWT/19fX/+zs
+        7P/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7e3t/+vr6//n5+f/4+Pj/97e3v/Y2Nj/1NTU/8fHx7llZWUIZmZmAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAADs7OwD///8Aw8PDkdTU1P/Y2Nj/3d3d/+Pj4//n5+f/6+vr/+3t
+        7f/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/t7e3/6Ojo/5GRkP8aGhr/GBgX/ycmJv8wLy7/MjIx/zIy
+        Mf8yMjH/MjIx/zIyMf8yMjH/MjEx/zMzMv+IiIf/5eXl/+3t7f/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/t7e3/6+vr/+jo
+        6P/k5OT/3t7e/9nZ2f/V1dX/yMjIuWVlZQhmZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzs7AP//
+        /wDDw8OR1NTU/9jY2P/d3d3/4+Pj/+fn5//r6+v/7e3t/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/t7e3/4+Pj/3p6ev8VFBT/Gxsa/yopKP8yMTD/MzMy/zMzMv8zMzL/MzMy/zMzMv8zMzL/MjIx/z8+
+        Pf+vr6//6+vr/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7e3t/+3t7f/r6+v/6urq/+zs7P/t7e3/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+3t7f/r6+v/6Ojo/+Tk5P/e3t7/2dnZ/9XV1f/IyMi5ZWVlCGZm
+        ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7OzsA////AMPDw5HU1NT/2NjY/93d3f/j4+P/5+fn/+vr
+        6//t7e3/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/t7e3/3Nzc/2NjY/8SEhL/Hh4d/yws
+        K/8zMzL/NTQz/zU0M/80NDP/NTQz/zU0M/81NDP/MjIx/1lZWP/Q0ND/7e3t/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+zs7P/d3d3/r6+v/4yM
+        i/+Dg4P/o6Oi/9fX1//r6+v/7e3t/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7e3t/+vr
+        6//o6Oj/5OTk/97e3v/Z2dn/1dXV/8jIyLllZWUIZmZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs7
+        OwD///8Aw8PDkdTU1P/Y2Nj/3d3d/+Pj4//n5+f/6+vr/+3t7f/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/t7e3/0tLS/05OTv8SEhL/ISEg/y8uLf81NDP/NjU0/zY1NP82NTT/NjU0/zY1
+        NP81NTT/NTUz/4GAgP/j4+P/7e3t/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/s7Oz/z8/P/3FxcP85OTj/MzMy/zMyMf84Nzb/YGBf/7a2tv/o6Oj/7e3t/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/t7e3/6+vr/+jo6P/k5OT/3t7e/9nZ2f/V1dX/yMjIuWVl
+        ZQhmZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzs7AP///wDDw8OR1NTU/9jY2P/d3d3/4+Pj/+fn
+        5//r6+v/7e3t/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/t7e3/xMTE/zw7
+        O/8UFBP/JCQj/zExMP82NjX/NzY1/zc2Nf83NjX/NzY1/zc2Nf82NTT/QD8+/6urqv/q6uv/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/6+vr/8TExP9dXVz/NDMy/zY2
+        NP83NjX/NzY1/zY2Nf80NDP/SEhH/6Sko//l5eX/7e3t/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+3t
+        7f/r6+v/6Ojo/+Tk5P/e3t7/2dnZ/9XV1f/IyMi5ZWVlCGZmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAA7OzsA////AMPDw5HU1NT/2NjY/93d3f/j4+P/5+fn/+vr6//t7e3/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/s7Oz/s7Oz/y0sLP8WFhb/Jycm/zMzMv83Nzb/ODc2/zg3
+        Nv84Nzb/ODc2/zg3Nv82NTT/WFdW/83Nzf/t7e3/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+3t7f/FxcX/T09O/zEwMP84Nzb/ODc2/zg3Nv84Nzb/ODc2/zg3Nv82NjX/QkFA/5SU
+        lP/i4uL/7e3t/+7u7v/u7u7/7u7u/+7u7v/u7u7/7e3t/+vr6//o6Oj/5OTk/97e3v/Z2dn/1dXV/8jI
+        yLllZWUIZmZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs7OwD///8Aw8PDkdTU1P/Y2Nj/3d3d/+Pj
+        4//n5+f/6+vr/+3t7f/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+3t
+        7f/q6ur/n5+f/yEhIf8aGRn/Kyop/zU1NP85ODf/OTg3/zk4N/85ODf/OTg3/zk4N/84Nzb/fX18/+Hh
+        4f/t7e3/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/6urq/3p6ev8jIiH/NTU0/zk5
+        N/85ODf/OTg3/zk4N/85ODf/OTg3/zk4N/84Nzb/Pz89/5+fnv/p6en/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/t7e3/6+vr/+jo6P/k5OT/3t7e/9nZ2f/V1dX/yMjIuWVlZQhmZmYAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAOzs7AP///wDDw8OR1NTU/9jY2P/d3d3/4+Pj/+fn5//r6+v/7e3t/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+3t7f/n5+f/iYmJ/xoaGf8dHRz/Li0s/zc3
+        Nv86OTj/Ojo4/zo5OP86Ojj/Ojo4/zo5OP9BQD//pqam/+rq6v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/m5ub/ZmZm/yQjIv82NjT/Ojk4/zo6OP86Ojj/Ojo4/zo6OP86Ojj/Ojo4/zo6
+        OP84ODb/UlJR/8rKyv/t7e3/7u7u/+7u7v/u7u7/7u7u/+3t7f/r6+v/6Ojo/+Tk5P/e3t7/2dnZ/9XV
+        1f/IyMi5ZWVlCGZmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7OzsA////AMPDw5HU1NT/2NjY/93d
+        3f/j4+P/5+fn/+vr6//t7e3/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+3t7f/h4eH/cnJy/xYWFf8gIB//MTAv/zk5OP87Ozn/Ozs5/zs7Of87Ozn/Ozs5/zo5
+        OP9XVlX/ysnJ/+3t7f/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+bm5v9qaWn/Kikp/zk4
+        N/87Ozn/Ozs5/zs7Of87Ozn/Ozs5/zs7Of87Ozn/Ozs5/zs6Of86OTj/i4qK/+fn5//u7u7/7u7u/+7u
+        7v/u7u7/7e3t/+vr6//o6Oj/5OTk/97e3v/Z2dn/1dXV/8jIyLllZWUIZmZmAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAADs7OwD///8Aw8PDkdTU1P/Y2Nj/3d3d/+Pj4//n5+f/6urq/+3t7f/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+3t7f/Z2dn/XFxc/xUV
+        FP8kJCP/MzMy/zs6Of88PDv/PDw7/zw8O/88PDv/PDw6/zs6Of96eXj/39/f/+3t7f/u7u7/7u7u/+7u
+        7v/u7u7/7u7u/+7u7v/t7e3/4+Pj/35+ff82NTT/PDs6/zw8O/88PDv/PDw7/zw8O/88PDv/PDw7/zw8
+        O/88PDv/PDw7/zs6Of9TUlH/zc3M/+3t7f/u7u7/7u7u/+7u7v/t7e3/6+vr/+jo6P/k5OT/3t7e/9jY
+        2P/V1dX/yMjIuWVlZQhmZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzs7AP///wDCwsKR09PT/9fX
+        1//c3Nz/4uLi/+bm5v/q6ur/7Ozs/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t
+        7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t
+        7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+zs7P/NzMz/SEhI/xYVFf8nJyb/NjU0/z08O/8+PTz/Pj08/z49
+        O/8+PTz/PTw7/0JCQP+hoaH/5+fn/+Xl5f/Nzc3/vLy8/8vLy//h4eH/6urq/+Df3/+Yl5f/SEhH/zw8
+        Ov8+PTz/Pj08/z49O/8+PTz/Pj08/z49PP8+PTz/Pj08/z49O/8+PTz/PT07/z08O/+qqan/7e3t/+3t
+        7f/t7e3/7e3t/+zs7P/q6ur/5+fn/+Pj4//d3d3/2NjY/9TU1P/Hx8e5ZWVlCGVlZQAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAA6OjoA////AMLCwpHT09P/19fX/9zc3P/i4uL/5ubm/+rq6v/s7Oz/7e3t/+3t
+        7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t
+        7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+vr
+        6/++vr7/Nzc3/xgYF/8rKin/ODg3/z49PP8/Pj3/Pj48/z4+PP8/Pj3/PTw7/1ZWVP+rq6r/hoaF/1NT
+        Uv9GRkT/UVBP/3Z1df+urq7/hYWE/0JCQP89PDv/Pz49/z8+Pf8+Pjz/Pj49/z4+PP8/Pj3/Pz49/z8+
+        Pf8/Pj3/Pz49/z4+PP88Ozr/PDs6/7Gxsf/t7e3/7e3t/+3t7f/t7e3/7Ozs/+rq6v/n5+f/4+Pj/93d
+        3f/Y2Nj/1NTU/8fHx7llZWUIZWVlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADo6OgD///8AwcHBkdPT
+        0//X19f/3Nzc/+Hh4f/m5ub/6enp/+zs7P/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t
+        7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t
+        7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7Ozs/+rq6v+rq6v/Kiop/xsbGv8uLSz/Ozo5/z8/
+        Pf9APz7/QD89/0A/Pv9APz3/QD8+/0dHRf8/Pj3/Pj48/z8+Pf8+Pjz/Pj07/0VFQ/9BQD//Pz49/0A/
+        Pv9APz3/QD89/0A/Pf9APz3/QD8+/0A/Pv8/Pz3/Pz89/z8/Pf8/Pz3/PT07/zIyMP9lZWT/29vb/+zs
+        7P/t7e3/7e3t/+3t7f/s7Oz/6urq/+fn5//j4+P/3d3d/9jY2P/U1NT/x8fHuWVlZQhlZWUAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAOjo6AP///wDBwcGR0tLS/9bW1v/b29v/4eHh/+Xl5f/p6en/6+vr/+zs
+        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs
+        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs
+        7P/s7Oz/6+vr/+fn5/+Xlpb/ICAg/x4eHf8xMTD/PTw7/0FAPv9BQD//QUA+/0FAP/9BQD7/QD8+/0FA
+        Pv9BQD//QUA+/0FAP/9BQD7/QEA+/0FAPv9BQD//QUA+/0FAP/9BQD//QUA+/0FAP/9BQD7/Pz49/zw7
+        Ov86OTj/Ozo5/zo5OP8xMC//UVFQ/8PDw//q6ur/7Ozs/+zs7P/s7Oz/7Ozs/+vr6//p6en/5ubm/+Li
+        4v/c3Nz/19fX/9PT0//Gxsa5ZGRkCGVlZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6OjoA////AMHB
+        wZHS0tL/1tbW/9vb2//h4eH/5eXl/+jo6P/r6+v/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs
+        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs
+        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+Pj4/+BgID/Ghoa/yIi
+        If80NDP/Pz49/0JBP/9CQUD/QkE//0JBQP9CQUD/QkFA/0JBQP9CQUD/QkFA/0JBQP9CQUD/QkFA/0JB
+        QP9CQUD/QkFA/0JBQP9CQUD/QkE//z8+Pf81NDP/KSgn/yUkJP8nJiX/JiYl/1JSUf/BwcD/6urq/+zs
+        7P/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+np6f/m5ub/4uLi/9zc3P/X19f/09PT/8bGxrlkZGQIZWVlAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAADo6OgD///8AwMDAkdHR0f/V1dX/2tra/+Dg4P/k5OT/6Ojo/+rq
+        6v/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr
+        6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr
+        6//r6+v/6+vr/+vr6//r6+v/6urq/9zc3P9qamr/GBcX/yYmJf85ODf/QkE//0NCQf9DQkH/Q0JB/0NC
+        Qf9DQkH/Q0JB/0NCQf9DQkH/Q0JB/0NCQf9DQkH/Q0JB/0NCQf9DQkH/Q0JB/0NCQf9CQUD/PDs6/0RD
+        Qv9ISEf/MjIy/ygnJ/9iYmL/ycnJ/+np6f/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6Ojo/+Xl
+        5f/h4eH/29vb/9bW1v/S0tL/xcXFuWRkZAhkZGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjo6AP//
+        /wDAwMCR0dHR/9XV1f/a2tr/4ODg/+Tk5P/n5+f/6urq/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr
+        6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr
+        6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6urq/9LS
+        0v9WVlb/Hx4e/zU0M/9CQT//RENC/0RDQv9EQ0L/RENC/0RDQv9EQ0L/RENC/0RDQv9EQ0L/RENC/0RD
+        Qv9EQ0L/RENC/0RDQv9EQ0L/RENB/0ZFRP94eHf/w8PD/9bW1v/Jycn/vr6+/9vb2//q6ur/6+vr/+vr
+        6//r6+v/6+vr/+vr6//r6+v/6+vr/+rq6v/o6Oj/5eXl/+Hh4f/b29v/1tbW/9LS0v/FxcW5ZGRkCGRk
+        ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6OjoA////AL+/v5HQ0ND/1NTU/9ra2v/f39//4+Pj/+fn
+        5//p6en/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq
+        6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq
+        6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6Ojo/8TExP9QUE//OTk3/0RDQf9FREP/RURC/0VE
+        Qv9FREL/RURC/0VEQv9FREL/RURC/0VEQv9FREL/RURC/0VEQv9FREL/RURC/0VEQv9EQ0L/Tk1M/6en
+        pv/j4+P/6enp/+rq6v/r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6enp/+fn
+        5//k5OT/4ODg/9ra2v/V1dX/0dHR/8TExLljY2MIZGRkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADo6
+        OgD///8Av7+/kdDQ0P/U1NT/2dnZ/97e3v/j4+P/5ubm/+np6f/q6ur/6urq/+rq6v/q6ur/6urq/+rq
+        6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq
+        6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+np
+        6f/n5+f/xcXF/19eXf9CQT//RkVD/0ZFQ/9GRUP/RkVD/0ZFQ/9GRUP/RkVD/0ZFQ/9GRUP/RkVD/0ZF
+        Q/9GRUP/RkVD/0ZFQ/9GRUP/RkVD/0ZFQ/9FREL/VlVT/76+vv/p6en/6urq/+rq6v/q6ur/6urq/+rq
+        6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/p6en/5+fn/+Tk5P/g4OD/2tra/9XV1f/R0dH/xMTEuWNj
+        YwhkZGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjo6AP///wC/v7+Rz8/P/9PT0//Z2dn/3t7e/+Pj
+        4//m5ub/6Ojo/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
+        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
+        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/5+fn/8fHx/9nZmX/Q0JA/0dGRP9HRkT/R0ZE/0dG
+        RP9HRkT/R0ZE/0dGRP9HRkT/R0ZE/0dGRP9HRkT/R0ZE/0dGRP9HRkT/R0ZE/0dGRP9HRkT/R0ZE/0VE
+        Q/88PDr/mpqa/+jo6P/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+jo
+        6P/m5ub/4+Pj/9/f3//a2tr/1NTU/9DQ0P/ExMS5Y2NjCGRkZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAA6OjoA////AL6+vpHPz8//09PT/9jY2P/d3d3/4uLi/+Xl5f/n5+f/6Ojo/+np6f/p6en/6enp/+np
+        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
+        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+jo6P/p6en/6Ojo/+bm
+        5v/Hx8f/ZmZl/0NCQf9HR0X/SEdF/0hHRf9IR0X/SEdF/0hHRf9IR0X/SEdF/0hHRf9IR0X/SEdF/0hH
+        Rf9IR0X/SEdF/0hHRf9IR0X/SEdF/0hHRf9GRkT/PTw7/01MS/+/v7//6Ojo/+np6f/p6en/6enp/+np
+        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+bm5v/j4+P/3t7e/9nZ2f/U1NT/0NDQ/8TE
+        xLljY2MIZGRkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADo6OgD///8Avr6+kc/Pz//S0tL/2NjY/93d
+        3f/i4uL/5eXl/+fn5//o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo
+        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo
+        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/y8vL/1xcW/89PDr/SEdF/0lIRv9ISEb/SEhG/0hI
+        Rv9ISEb/SEhG/0hIRv9ISEb/SEhG/0hIRv9ISEb/SEhG/0hIRv9ISEb/SEhG/0lIRv9JSEb/R0ZF/z49
+        PP9IR0b/ra2s/+Tk5P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo
+        6P/n5+f/5eXl/+Li4v/e3t7/2NjY/9PT0//Pz8//w8PDuWJiYghjY2MAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAOTk5AP///wC9vb2Rzs7O/9LS0v/X19f/3Nzc/+Hh4f/k5OT/5ubm/+fn5//n5+f/5+fn/+fn
+        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
+        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
+        5/+Xlpb/JCQj/zo5OP9HRkX/SUlH/0lJR/9JSUf/SUlH/0lJR/9JSUf/SUlH/0lJR/9JSUf/SUlH/0lJ
+        R/9JSUf/SUlH/0lIR/9JSUf/SUlH/0hHRf8+Pjz/R0dG/6mpqf/j4+P/5+fn/+fn5//n5+f/5+fn/+fn
+        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//l5eX/4uLi/93d3f/Y2Nj/0tLS/8/P
+        z//CwsK5YmJiCGNjYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5OTkA////AL29vZHOzs7/0dHR/9fX
+        1//c3Nz/4ODg/+Pj4//m5ub/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
+        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
+        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5ubm/5WVlf8hISD/NTQz/0ZFRP9KSUj/SklI/0pJ
+        SP9KSUj/SklI/0pJSP9KSUj/SklI/0pJSP9KSUj/SklI/0pJSP9KSUf/SklI/0pJSP9JSEb/Pz49/0hH
+        Rv+pqKj/4uLi/+bm5v/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
+        5//n5+f/5ubm/+Tk5P/h4eH/3d3d/9fX1//S0tL/zs7O/8LCwrliYmIIY2NjAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAADk5OQD///8AvLy8kc3Nzf/R0dH/1tbW/9vb2//g4OD/4+Pj/+Xl5f/m5ub/5ubm/+bm
+        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
+        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
+        5v/l5eX/zc3N/11cXP87Ojn/SUhG/0tKSP9LSkj/S0pI/0tKSP9LSkj/S0pI/0tKSP9LSkj/S0pI/0tK
+        SP9LSkj/S0pI/0tKSP9LSkj/SklH/0A/Pf9JSEf/qamo/+Hh4f/l5eX/5ubm/+bm5v/m5ub/5ubm/+bm
+        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/4+Pj/+Dg4P/c3Nz/19fX/9LS
+        0v/Ozs7/wsLCuWJiYghiYmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOTk5AP///wC8vLyRzc3N/9DQ
+        0P/W1tb/29vb/9/f3//i4uL/5OTk/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
+        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
+        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Tk5P/T09P/enp5/0ZFRP9LSkn/TEtJ/0xL
+        Sf9MS0n/TEtJ/0xLSf9MS0n/TEtJ/0xLSf9MS0n/TEtJ/0xLSf9MS0n/TEtJ/0pJSP9APz7/SUhH/6mp
+        qP/h4eH/5eXl/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
+        5v/m5ub/5eXl/+Xl5f/j4+P/4ODg/9zc3P/X19f/0dHR/87Ozv/BwcG5YmJiCGJiYgAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAA5OTkA////ALy8vJHNzc3/0NDQ/9XV1f/a2tr/39/f/+Li4v/k5OT/5eXl/+Xl
+        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
+        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
+        5f/j4+P/zMzM/35+fP9MTEr/TEtJ/01MSv9MTEr/TExK/0xMSv9NTEr/TUxK/0xMSv9MTEr/TExK/0xM
+        Sv9MTEr/TUxK/01MSv9LSkj/QUA+/0pKSP+qqqn/4eHh/+Tk5P/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
+        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5OTk/+Li4v/f39//29vb/9bW
+        1v/R0dH/zs7O/8HBwbliYmIIYmJiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADk5OQD///8AvLy8kc3N
+        zf/Q0ND/1dXV/9ra2v/e3t7/4eHh/+Pj4//k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
+        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
+        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/j4+P/4eHh/8PDw/9xcG//SklH/01MSv9NTEv/TUxL/01M
+        S/9NTEv/TUxK/01MSv9NTEr/TUxK/01MS/9NTEv/TUxL/01MS/9NTEr/S0pI/0FAPv9MS0r/q6ur/+Dg
+        4P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
+        5P/k5OT/5OTk/+Tk5P/j4+P/4eHh/9/f3//b29v/1tbW/9HR0f/Ozs7/wcHBuWJiYghiYmIAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAOTk5AP///wC9vb2Rzs7O/9HR0f/V1dX/2tra/97e3v/h4eH/4+Pj/+Pj
+        4//k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//k5OT/4+Pj/9/f3//b29v/3Nzc/93d3f/b29v/2NjY/8/P
+        z/+oqKj/Z2Zl/0xLSf9OTUv/Tk1L/05NS/9OTUv/Tk1L/01MS/9LSkj/SEdF/0lIRv9NTEr/Tk1L/05N
+        S/9NTEr/SklH/0VEQv87Ozn/TEtK/62trP/g4OD/4+Pj/+Tk5P/j4+P/4+Pj/+Pj4//k5OT/5OTk/+Tk
+        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Pj4//h4eH/39/f/9vb
+        2//W1tb/0tLS/87Ozv/CwsK5YmJiCGNjYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6OjoA////AL6+
+        vpHPz8//0tLS/9bW1v/a2tr/3t7e/+Dg4P/i4uL/4+Pj/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
+        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//k5OT/zMzM/3V1df9gYGD/bW1s/3FxcP9xcG//Z2Zk/1JRT/9NTEr/Tk1L/05NTP9OTUv/Tk1L/0xL
+        Sv9LSkj/R0ZF/0A/Pv89PTv/RERC/01MSv9OTUv/SklI/0NDQf83NjX/Kiop/0NDQv+tra3/4ODg/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
+        5P/k5OT/5OTk/+Tk5P/j4+P/4uLi/+Hh4f/f39//29vb/9fX1//T09P/z8/P/8TExLlkZGQIZGRkAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAADc3NwD///8AwcHBjtHR0f/U1NT/19fX/9vb2//e3t7/4ODg/+Li
+        4v/j4+P/4+Pj/+Pj4//j4+P/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//f39//ra2s/0BAP/8YFxf/JSQj/zIy
+        MP87Ozn/QUA+/0NCQf9FREL/RkVE/0dGRf9GRUT/RENB/0A/Pf8/Pj3/X19e/11cW/9DQ0H/R0ZF/0JB
+        QP82NjT/MTAv/01NTP9ra2r/r6+v/+Dg4P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/j4+P/4+Pj/+Pj4//i4uL/4eHh/9/f
+        3//c3Nz/2NjY/9TU1P/R0dH/xcXFuGRkZAhmZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMAP//
+        /wDDw8OD1NTU/9bW1v/Z2dn/3d3d/9/f3//h4eH/4uLi/+Pj4//j4+P/5OTk/+Tk5P/k5OT/5OTk/+Tk
+        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//h4eH/w8PD/2JiYv8iIiL/Gxsb/yAgH/8kJCP/JyYl/yopKP8uLSz/NDMy/zo6
+        OP9FREP/WllY/319fP+QkJD/T05N/zU0M/8vLy7/Ly4t/09PTv+Uk5P/zMzM/93d3f/i4uL/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
+        5P/k5OT/5OTk/+Tk5P/j4+P/4+Pj/+Li4v/h4eH/39/f/93d3f/a2tr/19fX/9XV1f/Hx8euTExMBWho
+        aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8fHxAMLCwmnW1tb/2tra/9zc3P/e3t7/4ODg/+Hh
+        4f/i4uL/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//i4uL/1tbW/6en
+        p/96enr/YWFg/1JSUv9ISEj/QkJB/0NDQv9TU1L/ZGNj/2xsa/9iYWH/SEhH/y0tLP8nJiX/MzIy/1VV
+        VP+Wlpb/zc3N/+Dg4P/i4uL/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Hh
+        4f/g4OD/39/f/93d3f/a2tr/2NjY/8nJyZP///8AYGBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AADR0dEAwcHBQtnZ2fTe3t7/39/f/+Dg4P/h4eH/4eHh/+Li4v/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Dg4P/b29z/2NjY/9LS0v+5ubj/kI+P/2pq
+        av9RUVH/UVFR/1tbW/9qamr/g4KC/5+fn/+7u7r/1NTU/+Hh4f/i4uL/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//i4uL/4eHh/+Hh4f/g4OD/39/f/97e3v/b29v/ycnJavb2
+        9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALu7uwC2trYb2tra1uDg4P/h4eH/4eHh/+Hh
+        4f/h4eH/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Hh4f/d3d3/19fX/9DQ0P/V1dX/2tra/97e3v/h4eH/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li
+        4v/h4eH/4eHh/+Hh4f/h4eH/4ODg/93d3e7FxcU30dHRACwsLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAj4+PAA4ODgLW1taX4ODg/+Hh4f/h4eH/4eHh/+Hh4f/i4uL/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/2travKur
+        qw2xsbEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A39/fAM7OzkPf39/x4uLi/+Li
+        4v/i4uL/4uLi/+Pj4//j4+P/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
+        5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
+        4//j4+P/4+Pj/+Pj4//k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Pj
+        4//j4+P/4uLi/+Li4v/i4uL/4uLi/+Hh4f3U1NRn////ACAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAACoqKgC5ubkAq6urCNvb26fi4uL/4uLi/+Li4v/i4uL/4+Pj/+Tk5P/k5OT/5OTk/+Tk
+        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
+        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
+        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
+        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
+        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Pj4//i4uL/4uLi/+Li4v/i4uL/3d3dycPD
+        wxjJyckAioqKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOnp6QDe3t4A0dHRNeHh
+        4ePj4+P/4+Pj/+Pj4//j4+P/5OTk/+Xl5f/l5eX/5eXl/+bm5v/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
+        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
+        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
+        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
+        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+bm5v/l5eX/5eXl/+Xl
+        5f/k5OT/4+Pj/+Pj4//j4+P/4+Pj/+Li4vTW1tZW9/f3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAYmJiAKqqqgD///8A2traauPj4/jk5OT/5OTk/+Tk5P/k5OT/5eXl/+bm
+        5v/m5ub/5+fn/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
+        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
+        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
+        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
+        5f/l5eX/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Tk5P/k5OT/5OTk/+Tk5P/j4+P/3d3dj7Gx
+        sQbDw8MAm5ubAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv7+/AMzM
+        zAC9vb0H3t7eieTk5Pzl5eX/5eXl/+Xl5f/m5ub/5+fn/+jo6P/o6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn
+        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
+        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
+        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
+        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+fn
+        5//m5ub/5eXl/+Xl5f/l5eX/5eXl/+Dg4KrNzc0U19fXANXV1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1tbWANbW1gDMzMwL4ODgiOXl5fjm5ub/5ubm/+bm
+        5v/n5+f/6Ojo/+np6f/p6en/6enp/+np6f/p6en/6enp/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo
+        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo
+        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo
+        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo
+        6P/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/5+fn/+bm5v/m5ub/5ubm/+Xl5f/h4eGn1NTUGd7e
+        3gDw8PAAMzMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAA/Pz8A3t7eANjY2ADHx8cH4ODga+Xl5eTn5+f/5+fn/+fn5//o6Oj/6enp/+rq6v/q6ur/6urq/+vr
+        6//q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq
+        6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq
+        6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq
+        6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/r6+v/6urq/+rq6v/q6ur/6enp/+jo
+        6P/n5+f/5+fn/+fn5//m5ubw4eHhh9PT0xHf398A+Pj4AIiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFRUUA29vbANXV1QD///8A3t7eNeXl
+        5abn5+fx6Ojo/+jo6P/p6en/6enp/+rq6v/r6+v/6+vr/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs
+        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs
+        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs
+        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs
+        7P/s7Oz/7Ozs/+vr6//r6+v/6urq/+rq6v/p6en/6Ojo/+jo6P/n5+f35ubmuuDg4Eq9vb0D2traAOrq
+        6gCRkZEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAA0tLSAMbGxgDk5OQA09PTB+Li4kHl5eWT5+fn0+jo6PPp6en+6enp/+rq
+        6v/q6ur/6urq/+vr6//r6+v/6+vr/+vr6//r6+v/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs
+        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs
+        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs
+        7P/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6urq/+rq6v/p6en/6enp/+jo
+        6Pbo6Ojb5ubmouPj41HZ2dkP6OjoANLS0gDa2toAV1dXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAra2tAOvr
+        6wDY2NgA5eXlAFxcXAHg4OAX5OTkPeXl5WLo6Oh86OjoiOfn54zn5+eM5+fnjOjo6Izo6OiM6OjojOjo
+        6Izo6OiM6OjojOjo6Izo6OiM6OjojOjo6Izo6OiM6OjojOjo6Izo6OiM6OjojOjo6Izo6OiM6OjojOjo
+        6Izo6OiM6OjojOjo6Izo6OiM6OjojOjo6Izo6OiM6OjojOjo6Izo6OiM6OjojOjo6Izo6OiM6OjojOjo
+        6Izo6OiM6OjojOjo6Izo6OiM6OjojOjo6Izo6OiM6OjojOjo6Izo6OiM6OjojOjo6Izo6OiM6OjojOjo
+        6Izo6OiM5+fnjOfn54zn5+eM6Ojoiujo6H/l5eVo5eXlReHh4R7MzMwD6OjoANvb2wD///8Ax8fHAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKenpwDi4uIA1NTUAODg4ADm5uYA6urqAOrq
+        6gD5+fkA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD+/v4A6+vrAOrq
+        6gDn5+cA4eHhANjY2AD29vYAvLy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACtra0AtbW1AM7OzgDOzs4Azs7OAM7OzgDOzs4Azs7OAM7O
+        zgDOzs4Azs7OAM7OzgDOzs4Azs7OAM7OzgDOzs4Azs7OAM7OzgDOzs4Azs7OAM7OzgDOzs4Azs7OAM7O
+        zgDOzs4Azs7OAM7OzgDOzs4Azs7OAM7OzgDOzs4Azs7OAM7OzgDOzs4Azs7OAM7OzgDOzs4Azs7OAM7O
+        zgDOzs4Azs7OAM7OzgDOzs4Azs7OAM7OzgDOzs4Azs7OAM7OzgDOzs4Azs7OAM7OzgDOzs4Azs7OAM7O
+        zgDOzs4Azs7OAM7OzgDOzs4Azs7OAM/PzwDMzMwAzc3NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        /////////////////////////////////////////////////////////////////////////4AAAAAA
+        D//////////+AAAAAAAAAAAAA///////AAAAAAAAAAAAAAAB/////AAAAAAAAAAAAAAAAB////AAAAAA
+        AAAAAAAAAAAf///gAAAAAAAAAAAAAAAAD///4AAAAAAAAAAAAAAAAAf//+AAAAAAAAAAAAAAAAAH///g
+        AAAAAAAAAAAAAAAAB///4AAAAAAAAAAAAAAAAAf//+AAAAAAAAAAAAAAAAAH///gAAAAAAAAAAAAAAAA
+        B///+AAAAAAAAAAAAAAAAA////4AAAAAAAAAAAAAAAA/////4AAAAAAAAAAAAAAB/////+AAAAAAAAAA
+        AAAAB//////gAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAA
+        AAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////
+        wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD
+        /////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAA
+        AAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAA
+        AAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////
+        wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD
+        /////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAA
+        AAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAA
+        AAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////
+        wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD
+        /////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAA
+        AAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAA
+        AAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////
+        wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD
+        /////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAA
+        AAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAA
+        AAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////gAAAAAAAAAAAAAAP/////
+        4AAAAAAAAAAAAAAH/////+AAAAAAAAAAAAAAB//////wAAAAAAAAAAAAAAf/////8AAAAAAAAAAAAAAP
+        //////gAAAAAAAAAAAAAH//////4AAAAAAAAAAAAAB///////AAAAAAAAAAAAAA///////4AAAAAAAAA
+        AAAAf///////AAAAAAAAAAAAAP///////8AAAAAAAAAAAAP////////wAAAAAAAAAAAP/////////4AA
+        AAAAAAAB////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        //////////////////////////////////8=
+</value>
+  </data>
+</root>

+ 3 - 3
UAS_CheckWork/DataHelper.cs → UAS_CheckWork/Tools/DataHelper.cs

@@ -6,12 +6,12 @@ using System.Configuration;
 using System.Data;
 using System.Text;
 
-namespace UAS_MES.DataOperate
+namespace Check.DataOperate
 {
     class DataHelper
     {
         //系统默认的的连接字符串
-        private string ConnectionStrings = "Connection Timeout=0;Pooling=false;Password=select!#%*(;User ID=MES_TEST;Pooling=false;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=117.25.180.218)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));";
+        private string ConnectionStrings = "Connection Timeout=0;Pooling=false;Password=select!#%*(;User ID=DATACENTER;Pooling=false;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.88)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));";
         //用户选择的数据库的连接字符串
         public static string DBConnectionString;
         public static OracleConnection connection = null;
@@ -1132,7 +1132,7 @@ namespace UAS_MES.DataOperate
         /// <param name="dt"></param>
         /// <param name="condition"></param>
         /// <returns></returns>
-        private DataTable filterDataTable(DataTable dt, String condition)
+        public DataTable filterDataTable(DataTable dt, String condition)
         {
             if (dt == null)
                 return new DataTable();

+ 242 - 0
UAS_CheckWork/Tools/ExcelHandler.cs

@@ -0,0 +1,242 @@
+using System.IO;
+using System.Data;
+using System;
+using NPOI.HSSF.UserModel;
+using NPOI.SS.UserModel;
+using NPOI.HSSF.Util;
+using NPOI.SS.Formula.Eval;
+using System.Text;
+
+namespace Check.DataOperate
+{
+    class ExcelHandler
+    {
+        DataHelper dh = new DataHelper();
+        /// <summary>
+        /// 导出Excel,返回文件在客户端的路径
+        /// </summary>
+        public string ExportExcel(DataTable dt, string FolderPath)
+        {
+            //创建一个内存流,用来接收转换成Excel的内容
+            MemoryStream ms;
+            ms = DataTableToExcel(dt);
+            //以系统当前时间命名文件,FileMode.Create表示创建文件,FileAccess.Write表示拥有写的权限
+            string filePath = @FolderPath + "\\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
+            FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
+            byte[] data = ms.ToArray();
+            fs.Write(data, 0, data.Length);
+            fs.Flush();
+            //释放当前Excel文件,否则打开文件的时候会显示文件被占用
+            ms.Dispose();
+            fs.Dispose();
+            return filePath;
+        }
+
+        /// <summary>
+        /// 导入Excel
+        /// </summary>
+        public DataTable ImportExcel(string FolderPath, string TableName)
+        {
+            DataTable dt = new DataTable();
+            dt.TableName = TableName;
+            if (FolderPath.Contains(".xls") || FolderPath.Contains(".xlsx"))
+            {
+                using (FileStream file = new FileStream(FolderPath, FileMode.Open, FileAccess.Read))
+                {
+                    //获取文件流
+                    HSSFWorkbook workbook = new HSSFWorkbook(file);
+                    ISheet sheet = workbook.GetSheetAt(0);
+                    //获取所有的列名
+                    foreach (ICell item in sheet.GetRow(sheet.FirstRowNum).Cells)
+                    {
+                        dt.Columns.Add(item.ToString(), typeof(string));
+                    }
+
+                    System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
+                    while (rows.MoveNext())
+                    {
+                        IRow row = (HSSFRow)rows.Current;
+                        if (row.RowNum == sheet.FirstRowNum)
+                        {
+                            continue;
+                        }
+
+                        DataRow dr = dt.NewRow();
+                        foreach (ICell item in row.Cells)
+                        {
+                            switch (item.CellType)
+                            {
+                                case CellType.BOOLEAN:
+                                    dr[item.ColumnIndex] = item.BooleanCellValue;
+                                    break;
+                                case CellType.ERROR:
+                                    dr[item.ColumnIndex] = ErrorEval.GetText(item.ErrorCellValue);
+                                    break;
+                                case CellType.FORMULA:
+                                    switch (item.CachedFormulaResultType)
+                                    {
+                                        case CellType.BOOLEAN:
+                                            dr[item.ColumnIndex] = item.BooleanCellValue;
+                                            break;
+                                        case CellType.ERROR:
+                                            dr[item.ColumnIndex] = ErrorEval.GetText(item.ErrorCellValue);
+                                            break;
+                                        case CellType.NUMERIC:
+                                            if (DateUtil.IsCellDateFormatted(item))
+                                            {
+                                                dr[item.ColumnIndex] = item.DateCellValue.ToString("yyyy-MM-dd hh:MM:ss");
+                                            }
+                                            else
+                                            {
+                                                dr[item.ColumnIndex] = item.NumericCellValue;
+                                            }
+                                            break;
+                                        case CellType.STRING:
+                                            string str = item.StringCellValue;
+                                            if (!string.IsNullOrEmpty(str))
+                                            {
+                                                dr[item.ColumnIndex] = str.ToString();
+                                            }
+                                            else
+                                            {
+                                                dr[item.ColumnIndex] = null;
+                                            }
+                                            break;
+                                        case CellType.Unknown:
+                                        case CellType.BLANK:
+                                        default:
+                                            dr[item.ColumnIndex] = string.Empty;
+                                            break;
+                                    }
+                                    break;
+                                case CellType.NUMERIC:
+                                    if (DateUtil.IsCellDateFormatted(item))
+                                    {
+                                        dr[item.ColumnIndex] = item.DateCellValue.ToString("yyyy-MM-dd hh:MM:ss");
+                                    }
+                                    else
+                                    {
+                                        dr[item.ColumnIndex] = item.NumericCellValue;
+                                    }
+                                    break;
+                                case CellType.STRING:
+                                    string strValue = item.StringCellValue;
+                                    if (string.IsNullOrEmpty(strValue))
+                                    {
+                                        dr[item.ColumnIndex] = strValue.ToString();
+                                    }
+                                    else
+                                    {
+                                        dr[item.ColumnIndex] = null;
+                                    }
+                                    break;
+                                case CellType.Unknown:
+                                case CellType.BLANK:
+                                default:
+                                    dr[item.ColumnIndex] = string.Empty;
+                                    break;
+                            }
+                        }
+                        dt.Rows.Add(dr);
+                    }
+                }
+            }
+            return dt;
+        }
+
+        public void WriteTxt(DataTable dt, string FolderPath, string FileName)
+        {
+            StreamWriter sr;
+            string filePath = @FolderPath;
+            string report;
+            if (File.Exists(filePath + "\\" + FileName))   //如果文件存在,则创建File.AppendText对象   
+            {
+                File.Delete(filePath + "\\" + FileName);
+            }
+            sr = File.CreateText(filePath + "\\" + FileName);
+            StringBuilder sb = new StringBuilder();
+            string Title = "";
+            foreach (DataColumn dc in dt.Columns)
+            {
+                Title += String.Format("{0,10}", dc.ColumnName.ToString());
+            }
+            sr.WriteLine(Title + "\r");
+            foreach (DataRow dr in dt.Rows)
+            {
+                string text = "";
+                for (int i = 0; i < dt.Columns.Count; i++)
+                {
+                    text += String.Format("{0,10}", dr[i].ToString());
+                }
+                sr.WriteLine(text + "\r");
+            }
+            sr.Close();
+        }
+
+        /// <summary>
+        /// 将DataTable形式的数据转成Excel格式的,然后用字节流的形式写入文件
+        /// </summary>
+        /// <param name="DataTable"></param>
+        /// <returns></returns>
+        public MemoryStream DataTableToExcel(DataTable DataTable)
+        {
+            //创建内存流
+            MemoryStream ms = new MemoryStream();
+            //创建一个Book,相当于一个Excel文件
+            HSSFWorkbook book = new HSSFWorkbook();
+            //Excel中的Sheet
+            ISheet sheet = book.CreateSheet("sheet1");
+            //获取行数量和列数量
+            int rowNum = DataTable.Rows.Count;
+            int columnNum = DataTable.Columns.Count;
+            //设置列的宽度,根据首行的列的内容的长度来设置
+            for (int i = 0; i < columnNum; i++)
+            {
+                int dataLength = DataTable.Columns[i].ColumnName.Length;
+                sheet.SetColumnWidth(i, dataLength * 700);
+            }
+            //首先画好第一行带颜色的,单独写出来,避免写在循环里面
+            IRow row = sheet.CreateRow(0);
+            //冻结第一行
+            sheet.CreateFreezePane(0, 1, 0, 1);
+            ICellStyle style = book.CreateCellStyle();
+            style.FillForegroundColor = HSSFColor.PALE_BLUE.index;
+            style.FillPattern = FillPatternType.BIG_SPOTS;
+            style.FillBackgroundColor = HSSFColor.LIGHT_GREEN.index;
+            //设置边框
+            style.BorderBottom = BorderStyle.THICK;
+            style.BorderLeft = BorderStyle.THICK;
+            style.BorderRight = BorderStyle.THICK;
+            style.BorderTop = BorderStyle.THICK;
+            row.HeightInPoints = 20;
+            //固定第一行
+            //row.RowStyle.IsLocked=true;
+            //给第一行的标签赋值样式和值
+            for (int j = 0; j < columnNum; j++)
+            {
+                row.CreateCell(j);
+                row.Cells[j].CellStyle = style;
+                row.Cells[j].CellStyle.VerticalAlignment = VerticalAlignment.CENTER;
+                row.Cells[j].CellStyle.Alignment = HorizontalAlignment.CENTER;
+                row.Cells[j].SetCellValue(DataTable.Columns[j].ColumnName);
+            }
+
+            //将DataTable的值循环赋值给book,Aligment设置居中
+            //之前已经画了带颜色的第一行,所以从i=1开始画
+            for (int i = 0; i < rowNum; i++)
+            {
+                IRow row1 = sheet.CreateRow(i + 1);
+                row1.HeightInPoints = 20;
+                for (int j = 0; j < columnNum; j++)
+                {
+                    row1.CreateCell(j);
+                    row1.Cells[j].SetCellValue(DataTable.Rows[i][j].ToString());
+                    row1.GetCell(j).CellStyle.VerticalAlignment = VerticalAlignment.CENTER;
+                }
+            }
+            //将book的内容写入内存流中返回
+            book.Write(ms);
+            return ms;
+        }
+    }
+}

BIN
UAS_CheckWork/Tools/NPOI.dll


+ 29 - 1
UAS_CheckWork/UAS_CheckWork.csproj

@@ -33,6 +33,9 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="NPOI">
+      <HintPath>tool\NPOI.dll</HintPath>
+    </Reference>
     <Reference Include="Oracle.ManagedDataAccess">
       <HintPath>tool\Oracle.ManagedDataAccess.dll</HintPath>
     </Reference>
@@ -55,18 +58,40 @@
     <Compile Include="ChooseAllButton.Designer.cs">
       <DependentUpon>ChooseAllButton.cs</DependentUpon>
     </Compile>
-    <Compile Include="DataHelper.cs" />
     <Compile Include="Form1.cs">
       <SubType>Form</SubType>
     </Compile>
     <Compile Include="Form1.Designer.cs">
       <DependentUpon>Form1.cs</DependentUpon>
     </Compile>
+    <Compile Include="Form2.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Form2.Designer.cs">
+      <DependentUpon>Form2.cs</DependentUpon>
+    </Compile>
+    <Compile Include="LoadingCircle.cs">
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="LoadingCircle.Designer.cs">
+      <DependentUpon>LoadingCircle.cs</DependentUpon>
+    </Compile>
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="SetLoadingWindow.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="SetLoadingWindow.Designer.cs">
+      <DependentUpon>SetLoadingWindow.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Tools\DataHelper.cs" />
+    <Compile Include="Tools\ExcelHandler.cs" />
     <EmbeddedResource Include="Form1.resx">
       <DependentUpon>Form1.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="Form2.resx">
+      <DependentUpon>Form2.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="Properties\Resources.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>
@@ -76,6 +101,9 @@
       <AutoGen>True</AutoGen>
       <DependentUpon>Resources.resx</DependentUpon>
     </Compile>
+    <EmbeddedResource Include="SetLoadingWindow.resx">
+      <DependentUpon>SetLoadingWindow.cs</DependentUpon>
+    </EmbeddedResource>
     <None Include="Properties\Settings.settings">
       <Generator>SettingsSingleFileGenerator</Generator>
       <LastGenOutput>Settings.Designer.cs</LastGenOutput>

BIN
UAS_CheckWork/tool/NPOI.dll


+ 9 - 4
UAS_MesInterface(4.0)/MesHelper.cs

@@ -41,7 +41,7 @@ namespace BenQGuru.eMES.DLLService
         //用于存放批量执行的SQL
         List<string> sqls = new List<string>();
         //系统默认的的连接字符串
-        private string ConnectionStrings = "Data Source=192.168.230.200/orcl;User ID=MES;PassWord=select!#%*(;";
+        private string ConnectionStrings = "Data Source=117.25.180.218/orcl;User ID=MES_TEST;PassWord=select!#%*(;";
         //用户选择的数据库的连接字符串
         private OracleConnection connection;
         //用户选择的数据库的连接字符串
@@ -72,7 +72,7 @@ namespace BenQGuru.eMES.DLLService
             string[] ParamName = new string[] { "v_i_macode", "v_i_sourcecode", "v_i_sncode", "v_i_usercode", "v_o_macode", "v_o_msid", "v_o_errmsg" };
             CallProcedure("CS_CHECKSTEPSNANDMACODE", ParamName, ref param);
             oErrMessage = param[6];
-            DataTable dt = (DataTable)ExecuteSql("select ms_status,ms_stepcode,ms_nextstepcode from makeserial where ms_id=(select max(ms_id) from makeserial where ms_sncode='" + iSN + "')", "select");
+            DataTable dt = (DataTable)ExecuteSql("select ms_status,ms_stepcode,ms_nextstepcode from makeserial where ms_id=(  select max(ms_id) from makeserial where ms_sncode  in ( select '" + iSN + "' from dual union select sn from makesnrelation where beforesn='" + iSN + "' and sn<>' '  union select beforesn from makesnrelation where sn='" + iSN + "' and beforesn<>' '))", "select");
             string ms_status = "";
             string ms_stepcode = "";
             string ms_nextstepcode = "";
@@ -83,6 +83,11 @@ namespace BenQGuru.eMES.DLLService
                 ms_nextstepcode = dt.Rows[0]["ms_nextstepcode"].ToString();
             }
             string stepcode = GetStepCodeBySource(iResCode);
+            if (ms_nextstepcode != "" && ms_nextstepcode != stepcode)
+            {
+                oErrMessage = "当前序列号下一工序" + ms_nextstepcode;
+                return false;
+            }
             if (oErrMessage == "" || oErrMessage == null || oErrMessage == "null" || (ms_status == "3" && stepcode == ms_stepcode))
             {
                 if (ms_status == "3")
@@ -362,8 +367,8 @@ namespace BenQGuru.eMES.DLLService
             }
             oErrMessage = "";
             sql.Clear();
-            sql.Append("select max(ms_id) from makeserial where ms_sncode in (select '" + iSN + "' from dual union select ");
-            sql.Append("beforesn from makesnrelation where sn='" + iSN + "' and beforesn<>' ')");
+            sql.Append("select max(ms_id) from makeserial where ms_sncode in (select '" + iSN + "' from dual union select sn from ");
+            sql.Append("makesnrelation where beforesn='" + iSN + "' and sn<>' '  union select beforesn from makesnrelation where sn='" + iSN + "' and beforesn<>' ')");
             DataTable dt = (DataTable)ExecuteSql(sql.ToString(), "select");
             string ms_id = dt.Rows[0][0].ToString();
             oMoCode = getFieldDataByCondition("MakeSerial", "ms_makecode", "ms_id='" + ms_id + "'").ToString();