1、添加双击工具箱添加工具功能,使用工厂模式,工具类与工具箱分开 2、添加工具间拖拽画线功能

This commit is contained in:
liu.wenjie
2019-07-30 17:23:32 +08:00
committed by liu.wenjie
parent bca077b840
commit 61de0d1236
57 changed files with 1486 additions and 205238 deletions

Binary file not shown.

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +0,0 @@
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\HalconWindowTest.exe.config
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\HalconWindowTest.exe
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\HalconWindowTest.pdb
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\halcondotnet.dll
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\halcondotnet.xml
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.csprojResolveAssemblyReference.cache
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.HalconWindow.HWindow_Final.resources
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.MainForm.resources
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.Properties.Resources.resources
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.csproj.GenerateResource.Cache
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.exe
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.pdb

View File

@@ -17,6 +17,7 @@ namespace VisionEdit.FormLib
public FormImageWindow()
{
InitializeComponent();
_instance = this;
}
public string m_fileName = string.Empty;
/// <summary>

View File

@@ -16,6 +16,7 @@ namespace VisionEdit.FormLib
public FormJobManage()
{
InitializeComponent();
_instance = this;
}
/// <summary>

View File

@@ -29,99 +29,112 @@
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("流程", 1, 1);
System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("Halcon窗口", 3, 3);
System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("Basler");
System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("HIKVision");
System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("获取图像", new System.Windows.Forms.TreeNode[] {
treeNode2,
treeNode3,
treeNode4});
System.Windows.Forms.TreeNode treeNode6 = new System.Windows.Forms.TreeNode("滤波");
System.Windows.Forms.TreeNode treeNode7 = new System.Windows.Forms.TreeNode("平滑");
System.Windows.Forms.TreeNode treeNode8 = new System.Windows.Forms.TreeNode("去噪");
System.Windows.Forms.TreeNode treeNode9 = new System.Windows.Forms.TreeNode("图像预处理", new System.Windows.Forms.TreeNode[] {
treeNode6,
treeNode7,
treeNode8});
System.Windows.Forms.TreeNode treeNode10 = new System.Windows.Forms.TreeNode("形状匹配");
System.Windows.Forms.TreeNode treeNode11 = new System.Windows.Forms.TreeNode("可变形匹配");
System.Windows.Forms.TreeNode treeNode12 = new System.Windows.Forms.TreeNode("灰度匹配");
System.Windows.Forms.TreeNode treeNode13 = new System.Windows.Forms.TreeNode("匹配", new System.Windows.Forms.TreeNode[] {
treeNode10,
treeNode11,
treeNode12});
System.Windows.Forms.TreeNode treeNode14 = new System.Windows.Forms.TreeNode("找线");
System.Windows.Forms.TreeNode treeNode15 = new System.Windows.Forms.TreeNode("几何", new System.Windows.Forms.TreeNode[] {
treeNode14});
System.Windows.Forms.TreeNode treeNode17 = new System.Windows.Forms.TreeNode("流程", 1, 1);
System.Windows.Forms.TreeNode treeNode18 = new System.Windows.Forms.TreeNode("Halcon窗口", 3, 3);
System.Windows.Forms.TreeNode treeNode19 = new System.Windows.Forms.TreeNode("Basler");
System.Windows.Forms.TreeNode treeNode20 = new System.Windows.Forms.TreeNode("HIKVision");
System.Windows.Forms.TreeNode treeNode21 = new System.Windows.Forms.TreeNode("获取图像", new System.Windows.Forms.TreeNode[] {
treeNode18,
treeNode19,
treeNode20});
System.Windows.Forms.TreeNode treeNode22 = new System.Windows.Forms.TreeNode("滤波");
System.Windows.Forms.TreeNode treeNode23 = new System.Windows.Forms.TreeNode("平滑");
System.Windows.Forms.TreeNode treeNode24 = new System.Windows.Forms.TreeNode("去噪");
System.Windows.Forms.TreeNode treeNode25 = new System.Windows.Forms.TreeNode("图像预处理", new System.Windows.Forms.TreeNode[] {
treeNode22,
treeNode23,
treeNode24});
System.Windows.Forms.TreeNode treeNode26 = new System.Windows.Forms.TreeNode("形状匹配");
System.Windows.Forms.TreeNode treeNode27 = new System.Windows.Forms.TreeNode("可变形匹配");
System.Windows.Forms.TreeNode treeNode28 = new System.Windows.Forms.TreeNode("灰度匹配");
System.Windows.Forms.TreeNode treeNode29 = new System.Windows.Forms.TreeNode("匹配", new System.Windows.Forms.TreeNode[] {
treeNode26,
treeNode27,
treeNode28});
System.Windows.Forms.TreeNode treeNode30 = new System.Windows.Forms.TreeNode("找线");
System.Windows.Forms.TreeNode treeNode31 = new System.Windows.Forms.TreeNode("找圆");
System.Windows.Forms.TreeNode treeNode32 = new System.Windows.Forms.TreeNode("几何", new System.Windows.Forms.TreeNode[] {
treeNode30,
treeNode31});
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormToolBox));
this.tvw_ToolBox = new System.Windows.Forms.TreeView();
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.richTextBoxEx1 = new DevComponents.DotNetBar.Controls.RichTextBoxEx();
this.imageListTool = new System.Windows.Forms.ImageList(this.components);
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.SuspendLayout();
//
// tvw_ToolBox
//
this.tvw_ToolBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tvw_ToolBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.tvw_ToolBox.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.tvw_ToolBox.ImageIndex = 4;
this.tvw_ToolBox.ImageList = this.imageList1;
this.tvw_ToolBox.Indent = 32;
this.tvw_ToolBox.Location = new System.Drawing.Point(0, 4);
this.tvw_ToolBox.Location = new System.Drawing.Point(0, 0);
this.tvw_ToolBox.Name = "tvw_ToolBox";
treeNode1.ImageIndex = 1;
treeNode1.Name = "NodeJob";
treeNode1.SelectedImageIndex = 1;
treeNode1.Text = "流程";
treeNode2.ImageIndex = 3;
treeNode2.Name = "节点1";
treeNode2.SelectedImageIndex = 3;
treeNode2.Tag = "HalconToolInterface";
treeNode2.Text = "Halcon窗口";
treeNode3.ImageKey = "图像.png";
treeNode3.Name = "节点2";
treeNode3.SelectedImageIndex = 3;
treeNode3.Text = "Basler";
treeNode4.ImageKey = "图像.png";
treeNode4.Name = "节点3";
treeNode4.SelectedImageIndex = 3;
treeNode4.Text = "HIKVision";
treeNode5.ImageIndex = 4;
treeNode5.Name = "节点0";
treeNode5.Text = "获取图像";
treeNode6.Name = "节点5";
treeNode6.Text = "滤波";
treeNode7.Name = "节点6";
treeNode7.Text = "平滑";
treeNode8.Name = "节点7";
treeNode8.Text = "去噪";
treeNode9.Name = "节点4";
treeNode9.Text = "图像预处理";
treeNode10.Name = "节点9";
treeNode10.Text = "形状匹配";
treeNode11.Name = "节点10";
treeNode11.Text = "可变形匹配";
treeNode12.Name = "节点11";
treeNode12.Text = "灰度匹配";
treeNode13.Name = "节点8";
treeNode13.Text = "匹配";
treeNode14.Name = "FindLine";
treeNode14.Tag = "FindLine";
treeNode14.Text = "找线";
treeNode15.Name = "节点0";
treeNode15.Text = "几何";
treeNode17.ImageIndex = 1;
treeNode17.Name = "NodeJob";
treeNode17.SelectedImageIndex = 1;
treeNode17.Text = "流程";
treeNode18.ImageIndex = 3;
treeNode18.Name = "节点1";
treeNode18.SelectedImageIndex = 3;
treeNode18.Tag = "HalconTool";
treeNode18.Text = "Halcon窗口";
treeNode19.ImageKey = "图像.png";
treeNode19.Name = "节点2";
treeNode19.SelectedImageIndex = 3;
treeNode19.Text = "Basler";
treeNode20.ImageKey = "图像.png";
treeNode20.Name = "节点3";
treeNode20.SelectedImageIndex = 3;
treeNode20.Text = "HIKVision";
treeNode21.ImageIndex = 4;
treeNode21.Name = "节点0";
treeNode21.Text = "获取图像";
treeNode22.Name = "节点5";
treeNode22.Text = "滤波";
treeNode23.Name = "节点6";
treeNode23.Text = "平滑";
treeNode24.Name = "节点7";
treeNode24.Text = "去噪";
treeNode25.Name = "节点4";
treeNode25.Text = "图像预处理";
treeNode26.Name = "节点9";
treeNode26.Text = "形状匹配";
treeNode27.Name = "节点10";
treeNode27.Text = "可变形匹配";
treeNode28.Name = "节点11";
treeNode28.Text = "灰度匹配";
treeNode29.Name = "节点8";
treeNode29.Text = "匹配";
treeNode30.ImageKey = "Line.png";
treeNode30.Name = "FindLine";
treeNode30.SelectedImageKey = "Line.png";
treeNode30.Tag = "FindLine";
treeNode30.Text = "找线";
treeNode31.ImageKey = "Circle.png";
treeNode31.Name = "FindCircle";
treeNode31.SelectedImageKey = "Circle.png";
treeNode31.Text = "找圆";
treeNode32.Name = "节点0";
treeNode32.Text = "几何";
this.tvw_ToolBox.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode1,
treeNode5,
treeNode9,
treeNode13,
treeNode15});
treeNode17,
treeNode21,
treeNode25,
treeNode29,
treeNode32});
this.tvw_ToolBox.SelectedImageIndex = 4;
this.tvw_ToolBox.Size = new System.Drawing.Size(367, 545);
this.tvw_ToolBox.Size = new System.Drawing.Size(417, 543);
this.tvw_ToolBox.TabIndex = 1;
this.tvw_ToolBox.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tvw_ToolBox_AfterSelect);
this.tvw_ToolBox.Click += new System.EventHandler(this.tvw_ToolBox_Click);
this.tvw_ToolBox.DoubleClick += new System.EventHandler(this.tvw_ToolBox_DoubleClick);
//
// imageList1
@@ -133,65 +146,70 @@
this.imageList1.Images.SetKeyName(2, "流程图.png");
this.imageList1.Images.SetKeyName(3, "图像.png");
this.imageList1.Images.SetKeyName(4, "文件夹.png");
this.imageList1.Images.SetKeyName(5, "20190709065619943_easyicon_net_256.ico");
this.imageList1.Images.SetKeyName(6, "20190715063459237_easyicon_net_256.ico");
this.imageList1.Images.SetKeyName(7, "20190716033549111_easyicon_net_128.ico");
this.imageList1.Images.SetKeyName(8, "20190716033559344_easyicon_net_128.ico");
this.imageList1.Images.SetKeyName(9, "avatar_guy_male_man_user_64px_1212479_easyicon.net.ico");
this.imageList1.Images.SetKeyName(10, "avatar_male_man_user_64px_1212481_easyicon.net.ico");
this.imageList1.Images.SetKeyName(11, "camera_96px_1157134_easyicon.net.ico");
this.imageList1.Images.SetKeyName(12, "start.ico");
this.imageList1.Images.SetKeyName(13, "stop.ico");
this.imageList1.Images.SetKeyName(14, "User_64px_1115223_easyicon.net.ico");
this.imageList1.Images.SetKeyName(15, "user_64px_1218470_easyicon.net.ico");
this.imageList1.Images.SetKeyName(16, "保存.png");
this.imageList1.Images.SetKeyName(17, "保存2.png");
this.imageList1.Images.SetKeyName(18, "保存3.png");
this.imageList1.Images.SetKeyName(19, "打开.png");
this.imageList1.Images.SetKeyName(20, "复位.png");
this.imageList1.Images.SetKeyName(21, "工具箱.ico");
this.imageList1.Images.SetKeyName(22, "工具箱.png");
this.imageList1.Images.SetKeyName(23, "镜头.png");
this.imageList1.Images.SetKeyName(24, "开始.png");
this.imageList1.Images.SetKeyName(25, "流程.ico");
this.imageList1.Images.SetKeyName(26, "流程.png");
this.imageList1.Images.SetKeyName(27, "流程图.png");
this.imageList1.Images.SetKeyName(28, "删除.png");
this.imageList1.Images.SetKeyName(29, "停止.png");
this.imageList1.Images.SetKeyName(30, "图像.png");
this.imageList1.Images.SetKeyName(31, "文件夹.png");
this.imageList1.Images.SetKeyName(32, "相机.png");
this.imageList1.Images.SetKeyName(33, "新建.png");
this.imageList1.Images.SetKeyName(34, "新建2.png");
this.imageList1.Images.SetKeyName(5, "Line.png");
this.imageList1.Images.SetKeyName(6, "Circle.png");
//
// richTextBoxEx1
//
this.richTextBoxEx1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
//
//
//
this.richTextBoxEx1.BackgroundStyle.Class = "RichTextBoxBorder";
this.richTextBoxEx1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.richTextBoxEx1.Location = new System.Drawing.Point(0, 548);
this.richTextBoxEx1.Dock = System.Windows.Forms.DockStyle.Fill;
this.richTextBoxEx1.Location = new System.Drawing.Point(0, 0);
this.richTextBoxEx1.Name = "richTextBoxEx1";
this.richTextBoxEx1.Rtf = "{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0\\fnil\\fcharset134 \\\'cb\\\'ce\\\'cc\\\'e5;}}\r\n\\viewkind4\\u" +
"c1\\pard\\lang2052\\f0\\fs18 richTextBoxEx1\\par\r\n}\r\n";
this.richTextBoxEx1.Size = new System.Drawing.Size(367, 96);
this.richTextBoxEx1.Size = new System.Drawing.Size(417, 95);
this.richTextBoxEx1.TabIndex = 2;
this.richTextBoxEx1.Text = "richTextBoxEx1";
//
// imageListTool
//
this.imageListTool.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageListTool.ImageStream")));
this.imageListTool.TransparentColor = System.Drawing.Color.Transparent;
this.imageListTool.Images.SetKeyName(0, "流程图.png");
this.imageListTool.Images.SetKeyName(1, "图像.png");
this.imageListTool.Images.SetKeyName(2, "图像.png");
this.imageListTool.Images.SetKeyName(3, "图像.png");
this.imageListTool.Images.SetKeyName(4, "图像.png");
this.imageListTool.Images.SetKeyName(5, "分析 数据.png");
this.imageListTool.Images.SetKeyName(6, "Line 1.png");
this.imageListTool.Images.SetKeyName(7, "Circle.png");
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.tvw_ToolBox);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.richTextBoxEx1);
this.splitContainer1.Size = new System.Drawing.Size(417, 642);
this.splitContainer1.SplitterDistance = 543;
this.splitContainer1.TabIndex = 7;
//
// FormToolBox
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(367, 642);
this.Controls.Add(this.richTextBoxEx1);
this.Controls.Add(this.tvw_ToolBox);
this.ClientSize = new System.Drawing.Size(417, 642);
this.Controls.Add(this.splitContainer1);
this.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FormToolBox";
this.Text = "工具箱";
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.ResumeLayout(false);
}
@@ -201,5 +219,7 @@
private System.Windows.Forms.TreeView tvw_ToolBox;
private DevComponents.DotNetBar.Controls.RichTextBoxEx richTextBoxEx1;
public System.Windows.Forms.ImageList imageList1;
public System.Windows.Forms.ImageList imageListTool;
private System.Windows.Forms.SplitContainer splitContainer1;
}
}

View File

@@ -27,7 +27,23 @@ namespace VisionEdit.FormLib
private void tvw_ToolBox_AfterSelect(object sender, TreeViewEventArgs e)
{
if(e.Node.Level == 0)
{
this.richTextBoxEx1.Text = e.Node.Text;
}
else if(e.Node.Level == 1)
{
object selectTag = tvw_ToolBox.SelectedNode.Tag;
if (selectTag != null)
{
IToolInfo insertTool = VisionToolFactory.CreateToolVision((ToolType)Enum.Parse(typeof(ToolType), selectTag.ToString()));
this.richTextBoxEx1.Text = insertTool.toolDescription;
}
else
{
this.richTextBoxEx1.Text = "此工具尚未开发";
}
}
}
private void tvw_ToolBox_DoubleClick(object sender, EventArgs e)
@@ -58,22 +74,29 @@ namespace VisionEdit.FormLib
/// </summary>
/// <param name="tool">工具类型</param>
/// <param name="isInsert">插入位置,当为-1时表示在末尾插入当不为-1时表示被插入的工具索引</param>
internal void Add_Tool(ToolType tool, int insertPos = -1)
internal void Add_Tool(ToolType tool, int insertPos = -1, int imageKey = 0)
{
string toolName = GetNewToolName(tool.ToString());
IToolInfo insertTool = VisionToolFactory.CreateToolVision(tool, toolName);
TreeNode insertNode = new TreeNode();
insertNode = GlobalParams.myJobTreeView.Nodes.Add("", insertTool.toolName, (int)tool, (int)tool); // 该工具对应的节点
// 判断节点是否添加默认输入输出图
// 输入
for (int i = 0; i < insertTool.toolInput.Count; i++)
{
TreeNode childrenInputNode = insertNode.Nodes.Add("<--" + insertTool.toolInput[i].IOName);
childrenInputNode.Tag = insertTool.toolInput[i].ioType;
childrenInputNode.ForeColor = Color.DarkMagenta;
}
// 输出
for (int i = 0; i < insertTool.toolOutput.Count; i++)
{
TreeNode childrenNode = new TreeNode();
childrenNode.Text = "-->" + insertTool.toolOutput[i].IOName;
childrenNode.Tag = insertTool.toolOutput[i].ioType;
insertNode.Nodes.Add(childrenNode);
TreeNode childrenOutputNode = insertNode.Nodes.Add("-->" + insertTool.toolOutput[i].IOName);
childrenOutputNode.Tag = insertTool.toolOutput[i].ioType;
childrenOutputNode.ForeColor = Color.Blue;
}
insertNode.Expand();
GlobalParams.myVisionJob.L_toolList.Add(insertTool);
}
@@ -125,6 +148,9 @@ namespace VisionEdit.FormLib
}
}
private void tvw_ToolBox_Click(object sender, EventArgs e)
{
}
}
}

View File

@@ -124,372 +124,224 @@
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAB+
VQAAAk1TRnQBSQFMAgEBIwEAAUgBAAEYAQABIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABgAMAASABAQIAAQEBAAEIBgABkBgAAYACAAGAAwACgAEAAYADAAGAAQABgAEAAoACAAPAAQABwAHc
AcABAAHwAcoBpgEAATMFAAEzAQABMwEAATMBAAIzAgADFgEAAxwBAAMiAQADKQEAA1UBAANNAQADQgEA
AzkBAAGAAXwB/wEAAlAB/wEAAZMBAAHWAQAB/wHsAcwBAAHGAdYB7wEAAdYC5wEAAZABqQGtAgAB/wEz
AwABZgMAAZkDAAHMAgABMwMAAjMCAAEzAWYCAAEzAZkCAAEzAcwCAAEzAf8CAAFmAwABZgEzAgACZgIA
AWYBmQIAAWYBzAIAAWYB/wIAAZkDAAGZATMCAAGZAWYCAAKZAgABmQHMAgABmQH/AgABzAMAAcwBMwIA
AcwBZgIAAcwBmQIAAswCAAHMAf8CAAH/AWYCAAH/AZkCAAH/AcwBAAEzAf8CAAH/AQABMwEAATMBAAFm
AQABMwEAAZkBAAEzAQABzAEAATMBAAH/AQAB/wEzAgADMwEAAjMBZgEAAjMBmQEAAjMBzAEAAjMB/wEA
ATMBZgIAATMBZgEzAQABMwJmAQABMwFmAZkBAAEzAWYBzAEAATMBZgH/AQABMwGZAgABMwGZATMBAAEz
AZkBZgEAATMCmQEAATMBmQHMAQABMwGZAf8BAAEzAcwCAAEzAcwBMwEAATMBzAFmAQABMwHMAZkBAAEz
AswBAAEzAcwB/wEAATMB/wEzAQABMwH/AWYBAAEzAf8BmQEAATMB/wHMAQABMwL/AQABZgMAAWYBAAEz
AQABZgEAAWYBAAFmAQABmQEAAWYBAAHMAQABZgEAAf8BAAFmATMCAAFmAjMBAAFmATMBZgEAAWYBMwGZ
AQABZgEzAcwBAAFmATMB/wEAAmYCAAJmATMBAANmAQACZgGZAQACZgHMAQABZgGZAgABZgGZATMBAAFm
AZkBZgEAAWYCmQEAAWYBmQHMAQABZgGZAf8BAAFmAcwCAAFmAcwBMwEAAWYBzAGZAQABZgLMAQABZgHM
Af8BAAFmAf8CAAFmAf8BMwEAAWYB/wGZAQABZgH/AcwBAAHMAQAB/wEAAf8BAAHMAQACmQIAAZkBMwGZ
AQABmQEAAZkBAAGZAQABzAEAAZkDAAGZAjMBAAGZAQABZgEAAZkBMwHMAQABmQEAAf8BAAGZAWYCAAGZ
AWYBMwEAAZkBMwFmAQABmQFmAZkBAAGZAWYBzAEAAZkBMwH/AQACmQEzAQACmQFmAQADmQEAApkBzAEA
ApkB/wEAAZkBzAIAAZkBzAEzAQABZgHMAWYBAAGZAcwBmQEAAZkCzAEAAZkBzAH/AQABmQH/AgABmQH/
ATMBAAGZAcwBZgEAAZkB/wGZAQABmQH/AcwBAAGZAv8BAAHMAwABmQEAATMBAAHMAQABZgEAAcwBAAGZ
AQABzAEAAcwBAAGZATMCAAHMAjMBAAHMATMBZgEAAcwBMwGZAQABzAEzAcwBAAHMATMB/wEAAcwBZgIA
AcwBZgEzAQABmQJmAQABzAFmAZkBAAHMAWYBzAEAAZkBZgH/AQABzAGZAgABzAGZATMBAAHMAZkBZgEA
AcwCmQEAAcwBmQHMAQABzAGZAf8BAALMAgACzAEzAQACzAFmAQACzAGZAQADzAEAAswB/wEAAcwB/wIA
AcwB/wEzAQABmQH/AWYBAAHMAf8BmQEAAcwB/wHMAQABzAL/AQABzAEAATMBAAH/AQABZgEAAf8BAAGZ
AQABzAEzAgAB/wIzAQAB/wEzAWYBAAH/ATMBmQEAAf8BMwHMAQAB/wEzAf8BAAH/AWYCAAH/AWYBMwEA
AcwCZgEAAf8BZgGZAQAB/wFmAcwBAAHMAWYB/wEAAf8BmQIAAf8BmQEzAQAB/wGZAWYBAAH/ApkBAAH/
AZkBzAEAAf8BmQH/AQAB/wHMAgAB/wHMATMBAAH/AcwBZgEAAf8BzAGZAQAB/wLMAQAB/wHMAf8BAAL/
ATMBAAHMAf8BZgEAAv8BmQEAAv8BzAEAAmYB/wEAAWYB/wFmAQABZgL/AQAB/wJmAQAB/wFmAf8BAAL/
AWYBAAEhAQABpQEAA18BAAN3AQADhgEAA5YBAAPLAQADsgEAA9cBAAPdAQAD4wEAA+oBAAPxAQAD+AEA
AfAB+wH/AQABpAKgAQADgAMAAf8CAAH/AwAC/wEAAf8DAAH/AQAB/wEAAv8CAAP/AgAfZykAAf8D8jMA
AfQBZx2YAWcpAAEJA7IHAAj0JAAB7QFnHZgBZykAAQkDsgcACLIkAAHtAWcMmAFtA2cB6wyYAWcpAAEJ
A7IHAAiyJAAB7QFnCpgB7AdnAZIKmAFnFgACshEAAQkDsg0AArIkAAHtAWcJmANnBf8CZwHrCZgBZxYA
ArIMAAXzAQkDsgXzAf8HAAKyJAAB7QFnCZgBZwH3B/8CZwmYAWcHAAqyBQACsgwADrIB9AcAArIkAAHt
AWcImAJnCf8CZwiYAWcHAAqyBQACsgwADrIB9AcAArIkAAHtAWcHmAHrAWcE/wHzAe0B9AT/AWcImAFn
BwACsgoACbIIAA6yAfQHAAKyJAAB7QFnB5gCZwP/BWcD/wJnB5gBZwcAArIKAAmyCAAF8wG7A7IF8wH/
BwACsiQAAe0BZweYAWcD/wFtAWcCmAHtAWcBBwP/AWcHmAFnBwACsg0AArIRAAEJA7INAAKyJAAB7QFn
B5gBZwP/AWcB7AOYAmcD/wFnB5gBZwcAArINAAKyEQABCQOyDQACsiQAAe0BZweYAWcD/wFnBZgBZwP/
AWcHmAFnBwACsgMACAkCAAKyEQABCQOyDQACsiQAAe0BZweYAWcD/wFnBZgBZwP/AWcHmAFnBwACsgMA
CLIVAAEJA7INAAKyJAAB7QFnB5gBZwP/AWcBkgOYAeoBZwP/AWcHmAFnBwACsgMACAkDAAHzARkB8w8A
AfQDCQ0AArIkAAHtAWcHmAFnA/8CZwOYAWcBjQP/AWcHmAFnBwACsg4AAboBsgG6IAACsiQAAe0BZweY
AWcB6wP/BWcD/wJnB5gBZwcAArIOAAG6AbIBuiAAArIkAAHtAWcHmAHrAWcE/wH3AWcBvAT/AWcImAFn
BwACsg4AAboBsgG6IAACsiQAAe0BZwiYAWcBbQn/AmcImAFnBwACsgMACAkDAAG6AbIBuiAAArIkAAHt
AWcImAHsAWcB8wf/AZIBZwOYBWcBmAFnBwACsgMACLIDAAG6AbIBuiAAArIkAAHtAWcJmANnBf8DZwOY
BWcBmAFnBwACsgMACLoDAAG6AbIBugoAArIB9BMAArIkAAHtAWcKmAFtB2cB7ASYAWcD4wFnAZgBZwcA
ArIOAAG6AbIBugoAArIB9BMAArIkAAHtAWcMmAVnBpgFZwGYAWcHAAKyDgABugGyAboKAAKyAfQTAAKy
JAAB7QFnF5gBbQNnAewBmAFnBwACsg4AAboBsgG6CgACsgH0EwACsiQAAfABZx2YAWcHAAKyDgABugGy
AboKAAKyAfQTAAKyJQAfZwcAErIBugoAArIB9BMAArImAAUHAmcPbgFnAewFBwgAErIBugoAArIB9BMA
ArIrAAHwAWcPmgFnAf8qAAKyAfQTAAKyLAABZw+aAWcrABiyLAABZw+aAWcrAAKzFrosABFnbwAB9A9n
Af+SAAolAW9zAA8lUwAL9BEACSUBTAglAW9PAA/rDgAFJQFvCQABRgUlJwAB9htZCgAC6wHyCwABBwLr
DAAEJQFMDQAFJQYAHfQDAB1ZCQAB6wHtDQAC6wsABCUQAAH0BCUEAB+KAgAdWQkAAesB8gEAAusCAAHy
AesDAAHrAewBAAHsAesKAAQlEgAB/wMlAW8CAAG0AYoBZQK7GhkBigIAHVkJAAHrAfQBAALrAgAB8gHr
AwAB6wHsAQABkgHrCQAB/wMlFAAB9AMlAgABswGKAmUCuxkZAYoCAB1ZCQAB6wH0AQAC6wIAAfIB6wMA
AesB7AEAAZIB6wkAAyUBFhUAAUYDJQEAAbMBigG7AmUBuwEJGBkBigIAHVkJAAHrAfQBAALrAgAB8gHr
AwAB6wHsAQABkgHrCAAB/wMlBQAM/wYAAyUBAAGzAYoBuwEZAmUBuwEJCRkBCQwZAbsBigIAHVkJAAHr
AfQBAALrAgAB8gHrAwAB6wHsAQABkgHrCAADJQHzBQABbwslBgABRgIlAW8BswGKAbsCGQJlAbsIGQK7
CxkBCQFlAYoCAB1ZCQAB6wH0AQAC6wIAAfIB6wMAAesB7AEAAZIB6wgAAyUGAAFvCyUHAAMlAbMBigG7
AxkCZQG7BhkBuwJlAbsKGQJlAYoCAB1ZCQAB6wH0AQAC6wIAAfIB6wMAAesB7AEAAZIB6wgAAyUGAAFv
CyUHAAMlAbMBigG7BBkCZQG7BRkBZgJlAWYBCQgZAbsBZQEZAYoCAB1ZCQAB6wH0AQAC6wIAAfIB6wMA
AesB7AEAAZIB6wcAAf8DJQYAAW8LJQcAAyUBswGKAbsFGQJlAbsDGQG7AWUBZgGRAWUBuwcZAQkCZQEZ
AYoCAB1ZCQAB6wH0AQAC6wIAAfIB6wMAAesB7AEAAZIB6wcAAZQCJQEaBgABbwslBwADJQGzAYoBuwYZ
AWUBZgG7AQkBuwJlAhkBZQFmAQkGGQFmAWUCGQGKAgAdWQkAAesB9AEAAusCAAHyAesDAAHrAewBAAGS
AesHAAFGAiUB9AYAAW8LJQcAAW8CJQGzAYoBuwYZAbsCZQG7AmUDGQEJAWUBuwUZAbsBZQFsAhkBigIA
HVkJAAHrAfQBAALrAgAB8gHrAwAB6wHsAQABkgHrBwABkwIlARoGAAFvCyUHAAMlAbMBigG7BxkBtQNl
BRkCZQG7AxkBCQJlAxkBigIAHVkJAAHrAfQBAALrAgAB8gHrAwAB6wHsAQABkgHrBwAB/wIlAUwGAAFv
CyUHAAMlAbMBigG7EBkBCQFlAbsDGQGuAWUEGQGKAgAdWQkAAesB9AEAAusCAAHyAesDAAHrAewBAAGS
AesIAAMlBgABbwslBwADJQGzAYoBuwIZAWYCZQwZAmUBuwEZAbsCZQQZAYoCAB1ZCQAB6wH0AQAC6wIA
AfIB6wMAAesB7AEAAZIB6wgAAyUGAAFvCyUHAAMlAbMBigG7ARkBZQGLAhkBZQwZAWUCuwJlBRkBigIA
HVkJAAHrAfQNAAGSAesIAAMlAf8FAAFvCyUGAAEWAyUBswGKAbsBGQFlAbsCGQFlDBkEZQGRBRkBigIA
ATEbWQExBwAC/wHrAfAN/wHsAesC/wYAAfQDJQUAARYLRgYAAyUB/wGzAYoBuwEZAWUBuwIJAWUOGQG1
BxkBigIAAzEBWBX/BDEHABXrBwADJQHzFQABbwMlAQABswGKAbsCGQNlAbsWGQGKAgADMQFYFf8EMQcA
FesHAAEaAyUVAAMlAgABswGKAbscGQGKAgAdMQcAFesIAAQlEwAEJQIAAbMBih27AYoCABsxAXkNAALr
BwAB6wHsDgAEJREABCUEAB+KAgASMRcAAusB9AUAAbwB6wHvDwAEJQHzDQABkwQlBQAB/xytAbQDABEx
AZkYAAnrEQAFJQH/CQAB8wUlJwARMRoAAfEFkgH0EwAHJQFvARsB9AEaAUYHJW4AARoPJQH/cQAB9Asl
Af93AAH/AZMBRgGTAf9ZAAH0BlUBdwH/dQANVXEAB1UBlwGYAXcGVQF3bgAEVQGYCQABdwRVawAB9ANV
AZ0NAAGXA1UB/xMAAf8BGQkJARkB/wgAAf8FCQH0AgABGQUJAf8CAAYJFAALsgGzCAAB/wNVEAAB/wNV
EwABuwuyAbsIAAH/BQkB9AIAARkFCQH/AgAGCRMAAQkMsggAA1USAAH/A1UIAAH/ARkICQKzCQkCswgA
Af8CCQH/AgkB9AIAARkBCQEZAf8CCQH/AgADCQH/AfIBCQoAAbMKsgH0CAABugGyBwADVRQAAfQCVQGX
BwACuwgJArMB/wcAAf8BswGyCAAB/wIJAQACCQH0AgABGQEJAfMBAAIJAf8CAAMJAQAB8wEJCQAB8wGz
CAABugGyAfQIAAG6AbIGAAH/AlUBCAcAAfENAAF3AlUGAAH/AbMB/wcAAf8CswkJAbMBsggAAf8FCQH0
AgABGQUJAf8CAAYJCQABugH0CAABCQyyBgADVQgAAlUNAAJVAXcFAAH/AbMB/wgAAbsLsgG7CAAB/wUJ
AfQCAAEZBQkB/wIABgkJAAG6AfQJAAyyBgACVQH0CAADVQwAAXcCVQUAAf8BswH/CAAB/wEZCQkBGQH/
CQAB/wIJAv8DAAL/AwkB/wMAAv8CCQHzAf8JAAG6AfQaAAEIAlUJAARVAfELAAJVAf8EAAH/AbMB/x8A
AgkHAAMJBgACCQH0CgABugH0GgADVQkABlUKAAJVAXcEAAH/AbMB/wgAAf8BGQkJARkB/woAAgkH/wMJ
Bv8CCQH0CgABugH0CQALsgGzBQACVQGXCQAHVQkAA1UEAAH/AbMB/wgAAbsLsgG7CgAUCQH0CgABugH0
CAABCQyyBQACVQHzCQAIVQEIBwADVQQAAf8BswH/AwAF/wKzCQkCswoAFAkB9AoAAboB9AQABPQBswGy
AfQIAAG6AbIFAAJVAfQJAAlVBwABnQJVBAAB/wGzAf8BAAH/AbsFswGyAbMB/wcAAf8BswGyEwAB8wIJ
EwABugH0AgAIsgH0CAABugGyBQACVQHzCQAIVQgAA1UEAAH/AbMB/wEAARkBuwH/AwAB/wKzCQkBswGy
EwAB8wIJEwABugH0AgABsgUAAQkMsgUAAlUBlwkABlUBCAkAA1UEAAH/AbMB/wEAAgkFAAG7C7IBuwwA
B/8BGQIJB/8MAAG6AfQCAAGyBgAMsgUAA1UJAAVVAf8KAANVBAAB/wGzAf8BAAIJBQAB/wEZCQkBGQH/
CwAB8xIJCwABugH0AgABshcAAZgCVQkABFUMAAJVAfQEAAH/AbMB/wEAAgkdAAHzAQkO/wMJCwABugH0
AgABshgAAlUB/wgAAlUBCAwAAZcCVQQAAf8BGQGzAgkCugEZAf8DAAH/ARkJCQEZAf8LAAHzAQkOAAMJ
CgAHsgGzBAALsgGzBgADVQgAAVUOAANVBAABuweyAbsDAAG7C7IBuwsAAfMBCQMAAgkJAAMJCQABCQiy
AwABCQyyBgAB9AJVAfMVAAGXAlUEAAH/ArMFCQKzA/8CswkJArMLAAHzAQkDAAIJCQADCQkAAboBsgH0
BAABugGyA/QBswGyAfQIAAG6AbIHAANVFQADVQQAAf8CswH/AwAB/wGzAbIDswGyAbMB/wcAAf8BswGy
CwAB8wEJDgADCQkAAboBsgH0BAABugayAfQIAAG6AbIIAANVEwADVQUAAf8CswUJAbMBsgIAAf8CswkJ
AbMBsgsAAfMBCQ4AAwkJAAEJCLIDAAEJDLIIAAHyA1URAANVBwABuweyAbsDAAG7C7IBuwsAAfMSCQoA
CLIEAAyyCQABCANVAfINAAGYA1UB9AcAAf8BGQUJARkB/wMAAf8BGQkJARkB/wsAAf8RCQHzLAAB8gRV
Af8JAAHyBFVuAAZVAZcB8QH0AfEHVXAAAfQNVQH/dAABmAdVAfD0AAHCCFoB8w4AAbwBbRrrAW0BBwH/
AQAB8wHyG/8B9wgAAbMQAAH/AbsNAAHzDFoB9AsAAf8B6xwZAewB/wEAAREdCQHqBwABshEAAbIMABBa
CgAB/wHrAbsEUQG7FgkB7AH0AQABEQEJBFkBERcJAeoGAAGyAQkBsgIJAbMCCQG6AgkBuwcJAboBswoA
BloBCAQAAZ4FWgoAAf8B6wG7AXMCdAFzAbsWCQHsAfQBAAERAQkBuwMTGAkB6gUAAv8BAAGzAgABCQIA
AfMCAAH/CAABCQkABVoB/wgAAf8DWgoAAf8B6xsJAewB6wH0AQABERwJAbsB6gUAAf8CAAGzAgABCQIA
AfMCAAH/CAABGQgAAZ4EWgwAAeQB/woAAf8B6xsJAZEBbQH0AQABERwJAbsB6gUAAf8CAAGzAgABCQIA
AfMCAAH/CAABGQgABFoZAAH/AesbCQGRAW0B9AEAAREcCQG7AeoFAAH/ArMBshKzBwAEWhoAAf8B6xsJ
AbsB6wH0AQABER0JAeoFAAH/FAABGQcAA1oB/xoAAf8B6xsJAZEB6wH0AQABERwJAbsB6gUAAf8UAAEZ
BgABngNaGwAB/wHrGwkBuwHrAfQBAAERHQkB6gUAAf8UAAEZBgADWgH/GwAB/wHrCwkBuwHsA+sBuwsJ
AewB9AEAAREMCQURDAkB6gUAAf8UAAEZBgADWhQAA1oFAAH/AesLCQH3AWgCsQFvAZILCQHsAfQBAAER
DAkBQwMWAREMCQHqBQAB/xQAARkGAANaEwABCARaBAAB/wHrCwkB9wFvAhYBbwH3CwkB7AH0AQABEQwJ
AUMBFgFvARYBEQwJAeoFAAH/FAABGQUAAf8DWhIAAf8GWgMAAf8B6wsJAfcEbwH3CwkB7AH0AQABEQwJ
AUMBFgFZARYBEQwJAeoFAAH/FAABGQUAAZ4CWgGeEgAHWgEIAgAB8wESCrQBkQGuBG8B6wGRCrQB6gHx
ARMNEQFDARYBWQEWDhEFAAH/FAABGQUAA1oBwhEACVoB/wEAARQMiwFtAW4CTAFvAW0MiwEUARENugFD
AREBWQFEARENugUAAf8VsgUAAZ4CWgGeEAALWgH/AeoFuwEJBdwBCQH3AW4CUgFuAZIBCQvcAW0BEQEJ
AhEBCQERAUMHCQFDARUBWQFoARENCQUAAf8CAAGzAgABCQIAAfMCAAH/CAABGQUAAf8DWg8ABFoBngNa
Af8EWgFtAbsBkQH3AbsB7QG7BgkB9wFuAo4BbwH3DAkB6wERDQkBQwMWARENCQUAAf8CAAGzAgABCQIA
AfMCAAH/CAABGQYAA1oPAARaAQADWgEAAf8DWgFtDAkB9wFvArEBbwH3DAkB6wERDQkBFAOUARENCQUA
Af8CAAGzAgABCQIAAfMCAAH/CAABGQYAA1oPAANaAgADWgIAAcACWgFtDAkBuwFtAusBbQH3DAkB6wER
DQkBkgMRAbsNCQUAAf8CAAGzAgABCQIAAfMCAAH/CAABGQYAA1oQAAEbAgAB8wNaAwAB/wEAAW0eCQHr
AREfCQQAAf8BshW0AbIFAAF8A1oSAANaAZ4FAAFtHgkB6wERHwkEAAGyFwABsgUAA1oRAAH/A1oGAAFt
HgkB6wERHgkBGQQAAbIXswGyBQAEWhAABFoGAAHrAfMc9AHzAesBAAESHf8BEQQAAboXAAGyBgAEWg4A
BFoHAAHzBuwBbQFKAeoM7AHqAUoB6gbsAfMIAAFEAUwNAAFSARELAAG6FwABsgYABVoMAARaAZ4OAAEH
AVIBHAH/CwABHAFSAe8PAAFEAVINAAFZARELAAG6FwABsgcABVoKAAVaDwABBwFSARwB/wsAARwBUgHv
DwABRAFSDQABWQERCwABugQAAbIB9AsAAQkBsgQAAbIIAAZaBgAGWhAAAQcBUgEcAf8LAAEcAVIB7w8A
AUQBUg0AAVkBEQsAAboDAAGyAQABswsAAQkBAAGyAwABsgkAEFoRAAG8AVIBSwH/CgAB/wFuAVIBBw8A
AREBWQHqCwABEQFZARELAAG6AgABsgMAAbIJAAGyAwABswIAAbIKAAHkDFoBnhIAAfMBdAFSAewKBwHs
AVIBdAHyDwABvAF6AVkLEQFZARoB/wsAAboBswG6BAABuggAAvMDAAH/AboBswEJDAAKWhQAAf8B7wF0
AVkKUgFZAXQB9wH/EAABEQH/AcMJmgHDAfEBExQAAbIBCQUAAboBsxcAAfQCngH/GAAB/wG8AewL6wEH
Af8TAAEUCREBExgAAboDsgEJEQAY/woAFP8IAB2yJQAZ1AcAAf8XrAUAA7IEuhCyBboDsiQAGdQHABms
AwAB/wKyBQAQsgYAArIkAALUAgAC1A0AAtQCAALUBgACrAEJFQABsgGsAfQCAAGzAbIB8wUAELIGAAG6
AbIkAALUAgAC1A0AAtQCAALUBgACrBcAAqwCAAKyAfQFABCyBgABugGyCAAR9AsAAtQCAALUDQAC1AIA
AtQGAAKsFwACrAIAArIB9AUAELIGAAG6AbIGAAGzE7IBCQkAAtQCAALUAwAB1QXUAfMDAALUAgAC1AYA
AqwXAAKsAgACsgH0BQAQsgYAAboBsgYAArIQGQEJArIJAALUAgAC1AMABtQB3QMAAtQCAALUBgACrBcA
AqwCAAKyAfQFABCyBgABugGyBQAB9AGyAQkRAAKyCQAC1AIAAtQNAALUAgAC1AYAAqwXAAKsAgACsgH0
BQABsw+yBgABugGyBQAB9AGyAQkRAAKyCQAC1AIAAtQNAALUAgAC1AYAAqwXAAKsAgACsgH0BQAB9A+y
BgABugGyBQAB9AGyAQkRAAKyCQAC1AIAAtQNAALUAgAC1AYAAqwXAAKsAgACsgH0BgAPsgYAAboBsgUA
AfQBsgEJEQACsgkAAtQCABHUAgAC1AYAAqwXAAKsAgACsgH0BgAB/w2yBwABugGyBQAB9AGyAQkRAAKy
CQAC1AIAEdQCAALUBgACrBcAAqwCAAKyAfQIAAHzCboB/wgAAboBsgUAAfQBsgEJEQACsgkAAtQCAAH/
D/MDAALUBgACrBcAAqwCAAKyAfQbAAG6AbIFAAH0AbIBCREAArIJAALUFQAC1AYAAqwXAAKsAgACsgH0
GwABugGyBQAB9AGyAQkIAAG6CAACsgkAAtQVAALUBgACrBcAAqwCAAKyAfQbAAG6AbIFAAH0AbIBCQcA
AboCshIAAtQVAALUBgACrBcAAqwCAAKyAfQbAAG6AbIFAAH0AbIBCQgAA7IRAALUFQAC1AYAAqwXAAKs
AgACsgH0GwABugGyBQAB9AGyAQkJAAOyEAAC1BUAAtQGAAKsBAABsw2sAQkEAAKsAgACsgH0GwABugGy
BQAB9AGyAQkKAAOyBQABugkAAtQVAALUBgACrAQAD6wEAAKsAgACsgH0GwABugGyBQAB9AGyAQkLAAOy
AwACsgkAAtQVAALUBgACrAQAAqwLAAKsBAACrAIAArIB9BsAAboBsgUAAfQBsgEJDAADsgIAArIJAALU
FQAC1AYAAqwEAAKsCwACrAQAAqwCAAKyAfQHAA30BwABugGyBQAB9AGyAQkNAAOyAQACsgkAAtQCAAzU
AQkGAALUBgACrAQAAqwGAAEZAawDAAKsBAACrAIAArIB9AUAEbIFAAG6AbIFAAH0AbIBCQ4ABbIJAALU
AgAN1AUAA9QGAAKsBAACrAYAAqwDAAKsBAACrAIAArIB9AQAE7IEAAG6AbIFAAH0AbIBuw8ABLIJAALU
AgAN1AQAA9QHAAKsBAACrAYAAqwDAAKsBAACrAIAArIB9AMAAfQTsgQAAboBsgYACrIEAAeyCQAC1AIA
DdQDAAPUAf8HAAKsBAACrAYAAqwDAAKsBAACrAIAArIB9AMAAbsTsgH0AwABugGyBgABCQmyAwABugey
CQAC1AIADdQCAAPUAf8IAAKsBAACrAcAAf8DAAKsBAACrAIAArIB9AMAAboTsgH0AwABugGyJAAC1AIA
DdQBAAPUCgACrAQAAqwLAAKsAwABCQGsAQkCAAKyAfQDAAG6E7IB9AMAAboBsiQAFNQLAAH/AqwBtAIZ
AqwLtAKsAhkBswKsAwAB9AGyAbMDAAG6E7IB9AMAArIkABPUAf8MAAGzF6wB8wQAArIBswL0AboTsgEZ
AfQB8wOyJAAB8xHdAf8OAAH/AbMTrAG0BgAB/x2yZAAB9BiyAbMmAAGXA1UBCD8AAf8B9AHcAdQK0wHU
AdsBGQH/KQABwgZVAfQiAAH/AZMBbwMXAW8BGgH/EAAB/wHbEtMB1AH0CQAB/wHvARQSDwERAewB8wYA
CVUB/x4AARYLFwEaDQABGRbTAdUB/wUAAf8B7xgAARQB/wQAClUBlxsAAbcPFwH/CgABGRjTAdQFAAEH
AQABDgHxFAAB/wFtAQABEQH/AwAMVQHCGAASFwGTCAAB/xrTARkDAAH/ARABDgHzFgAB/wFtAQABvAMA
DlUB/xUAFBcBFgcAARka0wHUAwAB8gEAARUB/xcAAfABAAHtAwAQVRMAFhcBkwYAAQkN0wGyDNMB1AMA
AfEBAAETAf8XAAHxAQAB7AMAEVUBmBAAARYXFwH/BQAB8w3TAW0M0wHUAwAB8gEAARUB/xcAAfEBAAHt
AwATVQHyDQAB/xkXBQAB/wzTAbIBSgzTAQkDAAHzAQABEAH/FwABBwEAAe8DABVVAf8LAAYXARYN/wYX
ARoFAAHUC9MBiwFKDNMB/wMAAf8BEQEOAfQXAAHsAQABvAMAFlUBlwkAAf8GFwEWDf8HFwUAAfML0wHq
AUoBrQrTAdUFAAHrAQAB8RYAAf8BEQEAAfMDABhVAZgHAAGTBhcBFg3/BxcB/wUAC9MCSgFtCtMB/wUA
AbwBAAHsAf8VAAHwAQABQwH/AwAaVQH0BQAHFwEWDf8HFwEaBQAB8wnTAawDRAHNCNMB1QYAAfQBDgEA
AfEGAAH/AfIBkgHqARIB7AG8Af8GAAH/ARIBAAHwBAAbVQGYBAAHFwEWDf8HFwFvBgAB1AbTAqwBbANE
AqwBzQbTAf8HAAHxAQABDwHzAwAB/wHrCAABEAHxAwAB/wHqAQAB6gH/BAAcVQH/AwAHFwEWDf8IFwYA
Af8F0wOsAUoDRAGLAqwF0wHzCAAB/wHvAgABFQH3AewCAAERAQcB/wIAAf8B8gFtAgABEAHvAW0CAAES
Af8FABxVAZgDAAcXARYN/wgXBwAB9ATTA6wBSgJuAUoBEgOsA9MBGQsAAfMBFAMAAQ8B8ggAAf8B7AMA
AQ4BBwH/BgAcVQEbAwAHFwEWDf8IFwgAAf8D0wKsAfcEmgF0AqwBzQLTAfQOAAT/AQAB/wHwAewCEwHs
AfAB/wIAA/8JABxVBAAHFwEWDf8HFwFvCQAB/wEJAtMBHAeaAawB0wEJAf8SAAH/AewIAAHsAf8MABpV
AZcFAAcXARYN/wcXAZMMAAEaCZoUAAH0AQ4BAAEQAfAB/wIAAf8B8AEPAQABEQH0CwAZVQH/BgABFgYX
ARYN/wcXAf8LAAH/CpoB8xIAAfQBDgEAAfcHAAH/Ae0BAAEPAf8KABdVAfEIAAH0BhcBFg3/BxcMAAEa
C5oSAAHsAQABkgoAAZIBAAHsAf8JABVWAZgLAAYXARYN/wYXARYLAAH/DJoB9BAAAfQBDgEQAf8KAAH0
AQ4BAAH0CQAUVgH/DAABGgYXDRYGFwwAAfQMmgEaEAAB8QEAAW0B/woAAf8B6gEAAfEJABJWAfQPABgX
AbcMAAEaC5oBkwHrEAABvAEAAesB/woAAf8B6wEAAfAJABBWAQgRAAH/FxcNAAEcAewD6wFzAZMEmgGZ
Am0QAAHyAQABEwH/CgAB/wEVAQAB8gkADlYBlxQAAfQVFw4AAewHbQEcApoB6wJtEAAB/wFDAQ4B9AoA
AfIBAAEQAf8JAA1WAf8WAAH0ExcPAAEHCG0B6wGTAm0B7BEAAQcBAAERAf8IAAH/ARQBAAG8CgALVgH0
GQAB/xAXARYQAAH/DG0B8BEAAf8B7AEAAREB8wYAAfMBEAEAAesB/woACVYBCB0AARoNFwH/EgAB7Qtt
EwAB/wHsAgABEQH3AvAB9wERAgABkgwAAZgGVgGXIQAB9AEWBxcBkwH/FAAB/wHrCW0B9BUAAfQB6gYA
AeoB9A4ABVYB/0IAAf8BkgZtAewB/xkAAf8C9AH/EgACCAH/RgAB9AHvAusB9wHzjQAB/x4AAREhAAHy
HO0B7wH/AQAB8gHtCZIB7QHsAesDbQHsAe0JkgHtAe8B/wFtKgAL/wsAAfIB8An/AfMB8A//AfQBBwH/
AQAB8gHxBv8B9AP/Au8CFAHsAbwB8wL/AfQG/wH0AQcB/ykAD+sJAAHzAbwJ/wHxAe8E/wLyCf8B8gG8
AgAB8wG8Bf8B9AHvA/8B7wHzARIBEwHwAbwB8wL/Ae0B8wX/AfEBvCkAAusB8Qv/AfcB6wH3CAAB/wHv
Cf8B8QHvBP8CBwn/AfcB9AIAAf8B9wX/AQcB8QP/Ae0B7wHrAeoB7wHsAfMC/wH0Ae8F/wH3AfQOAAEP
Ae0B8QHzAfABbQEOFAAB6wH3DQAC6wkAAfMB9wj/AfEB7wH/AfMB8gHzAe8BBwj/AbwB8QQAAfMB9wT/
AfMB7wP/Ae8B9AHrAW0B9AG8AfMC/wGSAfIE/wG8AfENAAERAfQGAAH/AfISAAH/AesB9AEAAusCAAHw
AesDAAHrAewBAAHsAesKAAH0AfcE/wH0AQcB7QH3AQcBkgHzAf8BBwHvAQcBkgHtAfEE/wEHAfAB/wUA
AfMB7wj/Ae0B7wL/AQcB7QHzB/8BBwG8Af8MAAH3CwABEhAAAfQB6wH/AQAC6wIAAfAB6wMAAesB7AEA
AewB6wsAAf8BvAH3AbwB7QG8A/QB9wH0A/8B7wHyAvQB8wH3AQcC7wH/CAAB/wEHAfcB8wX/Ae8B9AP/
AQcB8wT/AfQBBwHvAf8NAAEHDQABQw8AAfQB6wH/AQAC6wIAAfAB6wMAAesB7AEAAewB6w0AAfQB7wH/
A/QB8wH3BP8B7wHxBPQBvAHwDQAB/wHzAfID8QHvAf8C9AH/AQcB8APxAfMB/w8AAW0GAAP/FQAB9AHr
Af8BAALrAgAB8AHrAwAB6wHsAQAB7AHrDQAB/wHxAfcB8ALzAZIB7AHvAbwB8AEHAZIB7AHvAfMB8AHv
AQcB/xEAAf8B8AHsAQcB8gHzAbwB7QHvAfQYAAHzARADAAETAf8EAAH0DgAB9AHrAf8BAALrAgAB8AHr
AwAB6wHsAQAB7AHrEAAB/wH3Ae8B9AL/A/QB/wH0AfIB7AHwAf8RAAH/AbwB7wj/AfAB9wH/EAAB9wQA
AfcHAAH0BAABDg0AAfQB6wH/AQAC6wIAAfAB6wMAAesB7AEAAewB6w8AAf8B9wHzAfQC/wH0AQcB7wG8
A/8B9AG8AQcQAAH/Ae8B9AP/AfMCBwHyBP8BkgHyEwAB8gkAAf8DAAHzDQAB9AHrAf8BAALrAgAB8AHr
AwAB6wHsAQAB7AHrDgAB/wHsAfMB9AL/AfQB8AEHAe8BBwHxAv8C9AG8AQcB/w0AAf8B7wHzA/8B9AHw
AgcBvAHzBP8B7wHzHAABFREAAfQB6wH/AQAC6wIAAfAB6wMAAesB7AEAAewB6w0AAf8BvAHxAvQB8wHv
AfMF/wHxAe8B8wL0AfcB8wwAAf8BBwHwAv8B8AH3AfME/wH0AQcB9wL/AfQB9wH/DAABbQMAAf8cAAH0
AesB/wEAAusCAAHwAesDAAHrAewBAAHsAesNAAH/AQcD/wv0Av8B8wEHAf8LAAH0AfcQ/wEHAfEMAAEH
AwAB7QsAAf8DAAEODAAB9AHrAf8BAALrAgAB8AHrAwAB6wHsAQAB7AHrDAAB8gHtAQcI/wEHAfcB9AX/
AfQB7QH3Af8JAAHxAewBvAj/AfcB7wb/AfMB7AG8Af8KAAHyAwABEwsAAfMDAAFDDAAB9AHrAf8BAALr
AgAB8AHrAwAB6wHsAQAB7AHrCwAB8wG8AfIBvAL/AfIBvAHxA/8B9AHvAv8B8QHwAfIC/wHvAfQB7wH/
BwAB8QHwAbwB8QL/A/QD/wG8Ae8C/wL0AfYB/wHzAfcB8gEHCgAB8AMAAesLAAH0AwABEAwAAfQB6wH/
AQAC6wIAAfAB6wMAAesB7AEAAewB6woAAf8B8QHvAQcBvAL3AfEB8wHxAfcB7AH0Af8BvAHsAbwB8wHy
AQcB7QH0A+8B8wYAAf8BvALvAfIQ/wH0AfcBBwH3Af8JAAGSAwAB8RwAAfQB6wH/AQAC6wIAAfAB6wMA
AesB7AEAAewB6woAAf8BvAHvAesBbQHzAf8B8QHtAe8B/wG8AfcB8wHsAvQBBwHvAfQB/wPsAQcB8gH/
BQAB/wEHAfcB7AHyAv8B8wEHAfQH/wK8A/8B7AGSAfcB9AkAAQ8DAAH/HAAB9AHrAf8BAALrAgAB8AHr
AwAB6wHsAQAB7AHrCgAB/wG8AfABBwHqAfIC/wLzAfEB9wESAeoB6wHwAfIC8wL/AesBbQHyAe8B8wYA
Af8BBwH/AQcB8wL/AfQB8Aj/AvED/wH3AfQB7QH0DgAB6wkAAfIDAAH/DQAB9AHrAf8NAAHsAesLAAL/
AQcB6wHtAfcB7wEHAfAB8QHzAv8B9AHyAfABvAEHAfcB7QHsAW0B8QH/CAAB/wHzAewB8QG8AZIC8wG8
AQcE/wHwAQcC8wHvAfcB9AHtAfIB/wsAAfMEAAEOBwAB6gQAAW0MAAL/AesB8w3/AewB6wL/CwABBwHt
Ef8B6wHzCgAB/wFtARIB8AL/AfQI/wL0Av8B9AFtAfIMAAEOBAAB/wHqBQAB7xIAFesLAAEHAesB8w//
AbwB6wHyCgAB8gETARQB6gHxCf8D9AL/AfEBEwH3Af8MAAHxBQAB/wEHAZIBvAH/BQAB6g0AFesLAAHw
AuwO/wHyAesB7QHzCgAB8AMUAfcD/wHxAZIB6gETCRQB7AH/DQAB/w0AAfIOABXrCwAB8wPtAfMBBwHs
Am0D6wFtAewB7wH0AfAB7AH3Ae0B9AoAAbwDFAHsAfQB7A4UAW0B/w4AAf8LAAHxFAAC6wcAAesB7BAA
Af8D9wHtAvcDkgH3AZID9wLtAfcBkgHvAf8KAAH0ARICFAETEBQB7AH/BAAB7AoAAfEIAAH/AZIVAALr
Af8FAAHwAesBBxEAAfMB6wf3Ae0H9wHsAf8LAAH/AfMB7AESERQBBwH/BAAB/wEOCgABDwG8Af8DAAH/
AZIBDgoAAeoLAAH/CesTAAHzAesB7AGSBPcBkgb3Ae0B/w8AAf8B7w8UAewB/wcABf8BkhEAAfAF/w4A
AQcF7AHyFgAB/wEHAewB9wHtAZID9wHsAe0B7AHvAf8RAAH/AesMFAESAbwfAAHsMwAB/wG8AfMB9wLs
Ae8D/xQAAf8B8AFtBxQBbQHvAfQB/xAAARIPAAHzNwAC/xsABv8VAAHzgAAB8AwAARAB/ykAAfMB8Rv/
AfcB/wEAH2dBAAERHQkB6gH0AWcdmAFnQQABEQEJBFkBERcJAeoB7QFnHZgBZyIAAfYbWQMAAREBCQG7
AxIYCQHqAe0BZwyYAW0DZwHsDJgBZyIAHVkCAAERHAkBuwHqAe0BZwqYAewHZwGSCpgBZxYAAroKAB1Z
AgABERwJAbsB6gHtAWcJmAHqAmcF/wJnAesJmAFnFgACsgoAHVkCAAERHAkBuwHqAe0BZwmYAWcB9wf/
AW0BZwmYAWcHAAqyBQACsgoAHVkCAAERHQkB6gHtAWcImAJnCf8CZwiYAWcHAAqyBQACsgoAHVkCAAER
HAkBuwHqAe0BZweYAesBZwT/AfMB7QH0BP8BZwiYAWcHAAKyCgAIsgG6BgAdWQIAAREdCQHqAe0BZweY
AWcB6wP/BWcD/wJnB5gBZwcAArIKAAiyAboGAB1ZAgABEQwJAREDQwERDAkB6gHtAWcHmAFnA/8B7AFn
ApgB7QFnAQcC/wH0AWcHmAFnBwACsg0AArIKAB1ZAgABEQwJAUMDFgERDAkB6gHtAWcHmAFnA/8BZwHs
A5gCZwP/AWcHmAFnBwACsg0AArIKAB1ZAgABEQwJAUMBFgFvARYBEQwJAeoB7QFnB5gBZwP/AWcFmAFn
A/8BZweYAWcHAAKyAwAIGQIAArIKAB1ZAgABEQwJAUMBFgFZARYBEQwJAeoB7QFnB5gBZwP/AWcFmAFn
A/8BZweYAWcHAAKyAwAIsg4AHVkBAAHqDREBQwEWAVkBFg0RAUMB7QFnB5gBZwP/AWcB7QOYAeoBZwP/
AWcHmAFnBwACsgMACLoDAAL0Af8IAB1ZAQABEQ26AkMBWQFEARENugHtAWcHmAFnA/8CZwOYAWcB7QL/
AfQBZweYAWcHAAKyDgABtAGyAQkIAB1ZAQABEQEJAhUBCQEVARQHCQFDAUQBegFoARENCQHtAWcHmAFn
AY0D/wVnA/8CZweYAWcHAAKyDgABtAGyAQkIAB1ZAQABEQ0JAUMDFgERDQkB7QFnB5gB6wFnBP8B9wFn
AbwE/wFnAZIHmAFnBwACsg4AAbQBsgEJCAAdWQEAARENCQEUA5QBEQ0JAe0BZwiYAWcB6wn/AmcImAFn
BwACsgMACBkDAAG0AbIBCQgAHVkBAAERDQkBkQMSAfcNCQHtAWcImAHsAWcB8Af/AZIBZwOYBWcBmAFn
BwACsgMACLIDAAG0AbIBCQgAATEbWQExAQABER8JAe0BZwmYA2cF/wJnAeoDmAVnAZgBZwcAArIDAAiz
AwABtAGyAQkIAAMxAVgV/wQxAQABER8JAe0BZwqYAW0HZwHsBJgBZwPjAWcBmAFnBwACsg4AAbQBsgEJ
CAADMQFYFf8EMQEAAREBGR0JARkB7QFnDJgFZwaYBWcBmAFnBwACsg4AAbQBsgEJCAAdMQIAAW0d/wEU
Ae0BZxeYAW0DZwHsAZgBZwcAArIOAAG0AbIBCQgAGzEBeQQABv8BRAFLDf8BMQERBv8BAAHwAWcdmAFn
BwACsg4AAbQBsgEJCAASMRQAAUQBUg0AAVkBEQgAH2cHABKyAQkIABExAZkUAAFEAVINAAFZAREJAAUH
AmcPbgFnAewFBwgAErIBCQgAETEVAAFEAVINAAFZAREOAAHxAWcPmgFnAf9OAAERAVkBbQsAAUMBWQER
DgAB/wFnD5oBZwH/TgABBwF6AVMLEQFZARoB/w8AAWcPmgFnUAABEQH/AcMJmgHDAfEBExAAEWdSAAEU
CREBExIAAfQPZwH/LgABsxAAAf8Bu20AAbIRAAGybAABsgEJAbICCQGzAgkBugIJAbsHCQG6AbNqAAL/
AQABswIAAQkCAAHzAgAB/wgAAQlqAAH/AgABswIAAQkCAAHzAgAB/wgAARkJAAH/BQkB9AIAARkFCQH/
AgAGCRQAC7IBswYAHfQGAAH/AgABswIAAQkCAAHzAgAB/wgAARkJAAH/BQkB9AIAARkFCQH/AgAGCRMA
AQkMsgUAH4oFAAH/ArMBshKzCQAB/wIJAf8CCQH0AgABGQEJARkB/wIJAf8CAAMJAf8B8gEJCgABswqy
AfQIAAG6AbIEAAG0AYoBZQK7GhkBigUAAf8UAAEZCQAB/wIJAQACCQH0AgABGQEJAfMBAAIJAf8CAAMJ
AQAB8wEJCQAB8wGzCAABugGyAfQIAAG6AbIEAAGzAYoCZQK7GRkBigUAAf8UAAEZCQAB/wUJAfQCAAEZ
BQkB/wIABgkJAAG6AfQIAAEJDLIEAAGzAYoBuwJlAbsBCRgZAYoFAAH/FAABGQkAAf8FCQH0AgABGQUJ
Af8CAAYJCQABugH0CQAMsgQAAbMBigG7ARkCZQG7AQkJGQEJDBkBuwGKBQAB/xQAARkKAAH/AgkC/wMA
Av8DCQH/AwAC/wIJAfMB/wkAAboB9BkAAbMBigG7AhkCZQG7CBkCuwsZAQkBZQGKBQAB/xQAARkLAAIJ
BwADCQYAAgkB9AoAAboB9BkAAbMBigG7AxkCZQG7BhkBuwJlAbsKGQJlAYoFAAH/FAABGQsAAgkH/wMJ
Bv8CCQH0CgABugH0CQALsgGzBAABswGKAbsEGQJlAbsFGQFmAmUBZgEJCBkBuwFlARkBigUAAf8UAAEZ
CwAUCQH0CgABugH0CAABCQyyBAABswGKAbsFGQJlAbsDGQG7AWUBZgGRAWUBuwcZAQkCZQEZAYoFAAH/
FAABGQsAFAkB9AoAAboB9AQABPQBswGyAfQIAAG6AbIEAAGzAYoBuwYZAWUBZgG7AQkBuwJlAhkBZQFm
AQkGGQFmAWUCGQGKBQAB/xWyFAAB8wIJEwABugH0AgAIsgH0CAABugGyBAABswGKAbsGGQG7AmUBuwJl
AxkBCQFlAbsFGQG7AWUBbAIZAYoFAAH/AgABswIAAQkCAAHzAgAB/wgAARkUAAHzAgkTAAG6AfQCAAGy
BQABCQyyBAABswGKAbsHGQG1A2UFGQJlAbsDGQEJAmUDGQGKBQAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZ
DQAH/wEZAgkH/wwAAboB9AIAAbIGAAyyBAABswGKAbsQGQEJAWUBuwMZAa4BZQQZAYoFAAH/AgABswIA
AQkCAAHzAgAB/wgAARkMAAHzEgkLAAG6AfQCAAGyFgABswGKAbsCGQFmAmUMGQJlAbsBGQG7AmUEGQGK
BQAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZDAAB8wEJDv8DCQsAAboB9AIAAbIWAAGzAYoBuwEZAWUBiwIZ
AWUMGQFlArsCZQUZAYoEAAH/AbIVtAGyCwAB8wEJDgADCQoAB7IBswQAC7IBswQAAbMBigG7ARkBZQG7
AhkBZQwZBGUBkQUZAYoEAAGyFwABsgoAAfMBCQMAAgkJAAMJCQABCQiyAwABCQyyBAABswGKAbsBGQFl
AbsCCQFlDhkBtQcZAYoEAAGyF7MBsgoAAfMBCQMAAgkJAAMJCQABugGyAfQEAAG6AbID9AGzAbIB9AgA
AboBsgQAAbMBigG7AhkDZQG7FhkBigQAAboXAAGyCgAB8wEJDgADCQkAAboBsgH0BAABugayAfQIAAG6
AbIEAAGzAYoBuxwZAYoEAAG6FwABsgoAAfMBCQ4AAwkJAAEJCLIDAAEJDLIEAAGzAYoduwGKBAABuhcA
AbIKAAHzEgkKAAiyBAAMsgUAH4oEAAG6BAABsgH0CwABCQGyBAABsgoAAf8RCQHzJwAB/xytAbQFAAG6
AwABsgEAAbMLAAEJAQABsgMAAbJnAAG6AgABsgMAAbIJAAGyAwABswIAAbJnAAG6AbMBugQAAboIAALz
AwAB/wG6AbMBCW8AAbIBCQUAAboBs3kAAboDsgEJbQABQgFNAT4HAAE+AwABKAMAAYADAAEgAQECAAEB
AQABAQYAARIWAAP/AQABgAMABf8BhwL/CAAF/wGHAfABDwgABf8BhwHwAQ8IAAX/AYcB8AEPCAAC/wH8
Av8BhwH/Ac8IAAL/AfwB/wHwAQABHwHPCAAB/gEAAXwB/wHwAQABHwHPCAAB/gEAAXwB/wHwAQABHwHP
CAAB/gF/AeABDwHwAQABHwHPCAAB/gF/AeABDwHwAQABHwHPCAAB/gF/AfwC/wGHAf8BzwgAAf4BfwH8
Av8BhwH/Ac8IAAH+AXABDAL/AYcB/wHPCAAB/gFwAQ8C/wGHAf8BzwgAAf4BcAEOAT8B/wGHAf8BzwgA
Af4BfwH+AT8D/wHPCAAB/gF/Af4BPwP/Ac8IAAH+AX8B/gE/A/8BzwgAAf4BcAEOAT8D/wHPCAAB/gFw
AQ4BPwP/Ac8IAAH+AXABDgE/AfEC/wHPCAAB/gF/Af4BPwHxAv8BzwgAAf4BfwH+AT8B8QL/Ac8IAAH+
AX8B/gE/AfEC/wHPCAAB/gF/Af4BPwHxAv8BzwQAAYADAAH+AgABPwHxAv8BzwQAAcACAAEBAf4CAAE/
AfEC/wHPBAAB/gIAAT8E/wHxAv8BzwQAAf8CAAF/BP8B8AIAAQ8EAAH/AgABfwT/AfACAAEPBAAB/wIA
AX8I/wQAAf8CAAF/CP8EAAX/AeABAw7/AYABAAr/AeABAwH/Af4CAAE/Cf8BgAEAAf8B/AEPAfgBHwT/
AcACAAEDAf8BHwH8AX8B+AE/Af4BDwHAAgABAQHAAgABAQH/AT8B/gF/AfAC/wEHAYADAAHAAgABAQH/
ASYBcgF/AeEC/wGDBAABwAIAAQEB/wEmAXIBfwHDAv8BwwQAAcACAAEBAf8BJgFyAX8BwwL/AeEEAAHA
AgABAQH/ASYBcgF/AYcBwAEDAfEEAAHAAgABAQH/ASYBcgF/AYcBwAEDAfAEAAHAAgABAQH/ASYBcgF/
AY8BwAEDAfgEAAHAAgABAQH/ASYBcgF/AY8BwAEDAfgEAAHAAgABAQH/ASYBcgF/AQ8BwAEDAfgEAAHA
AgABAQH/ASYBcgF/AQ8BwAEDAfgEAAHAAgABAQH/ASYBcgF/AQ8BwAEDAfgEAAHAAgABAQH/ASYBcgF/
AQ8BwAEDAfgEAAHAAgABAQH/ASYBcgF/AQ8BwAEDAfgEAAHAAgABAQH/ASYBcgF/AY8BwAEDAfgEAAHA
AgABAQH/ASYBcgF/AY8BwAEDAfgEAAHAAgABAQH/AT8B/gF/AYcBwAEDAfAEAAHAAgABAQH8AgABHwGH
AcABAwHwBAABwAIAAQEB/AIAAR8BwwL/AeEEAAHAAgABAQH8AgABHwHDAv8B4wQAAcACAAEBAfwCAAEf
AeEC/wHDBAABwAIAAQMB/wHnAfMB/wHwAv8BhwGAAwABwAEAAQ8C/wLjAf8B+AE/Af4BDwGAAgABAQHA
AQABDwL/AfABBwH/AfwBDwH4AR8E/wHAAQABHwL/AfgBDwH/Af4CAAE/Df8CAAF/Df8BwAEBDv8B/AEf
Cv8B8AEHDv8BwAEBDv8CAAF/DP8B/gEPAfgBPwz/AfgBPwH+AQ8B/wH+AQABDwHwARgBDAEPAv8BAAEP
AfAC/wEPAf8B/gEAAQ8B8AEYAQwBDwH/Af4BAAEPAfEC/wGHAfgCAAEPAfABGAEMAQ8B/AEAAT8BzwHj
Av8BwwH4AQABPwGPAfEBGAGMAU8B+QH+AT8BzwHDAfsB/wHjAfEB/AEAAQ8B8AEYAQwBDwH5Af4BAAEP
AccB+QH/AvEB/gEAAQ8B8AEYAQwBDwH5Af8BAAEPAccB+AH/AvEB/gEAAQ8B+AE4ARwBDwH5A/8BjwH4
AT8B+AHxA/8B/AH+AT8BHwH5A/8BjwH4AR8B+AHxAf4BAAEPAfwCAAEfAfkB/wEAAQ8BjwH4AQ8B+AHx
Af4BAAEPAfwCAAEfAfkB/gEAAQ8BjwH4AQMB+AHxAcABAAEPAfwCAAEfAfkB4AE/Ac8BjwH4AQMB+AHx
AQABPwGPAf8B/gE/Af8B+QGAAT8BzwGPAfgBBwH4AfEBHAEAAQ8B/wH+AT8B/wH5Ab4BAAEPAY8B+AEP
AfgB8QE+AQABDwH/AgABfwH5Ab8BAAEPAY8B+AEfAfgB8QE+AQABDwH+AgABPwH5Ab8C/wGPAfgBfwH4
AfEBPwL/Af4CAAE/AfkBvwL/AccB+AH/AfEB4AEOAQABDwH+AX8B/gE/AfABDwEAAQ8BxwH7Af8B8QHg
AQ4BAAEPAf4BcwH+AT8B4AEOAQABDwHDAv8B4wHAAgABDwH+AXMB/gE/AeMBwAE/Ac8B4wL/AeMBwwGA
AT8BjwH+AX8B/gE/AeMBwAE/Ac8B8QL/AccBwAEMAQABDwH+AX8B/gE/AeABDgEAAQ8B8AL/AY8B4AEO
AQABDwH+AgABPwHwAQ8BAAEPAfgBPwH+AQ8B4AEOAQABDwH+AgABPwT/AfwBDwH4AT8N/wIAAX8N/wGA
AQAO/wHwAQce/wGAAR8B/wGAAwABgAIAAQEB/gL/AT8B/gEAAQcB/wQAAYADAAH+Av8BvwH8AQABAwH/
BAABgAMAAfwCAAEfAfgBDwEDAf8EAAGAAwAB+QFtAb8B3wHwAT8BwwH/BAABgAMAAfsBbQG/Ad8B4AH/
AfMB/wQAAYADAAH7AW0BvwHfAeED/wQAAYADAAH4AgABHwHDA/8EAAGAAwAB+wL/Ad8BwwP/BAABgAMA
AfsC/wHfAYcD/wQAAYADAAH7Av8B3wGHA/8EAAGAAwAB+wL/Ad8BjwL/AR8EAAGAAwAB+wL/Ad8BjwH/
Af4BDwQAAYADAAH7Av8B3wEPAf8B/AEHBAABgAMAAfsC/wHfAQ8B/wH8AQMIAAH7Av8B3wEPAf8B+AEB
CAAB+AIAAR8BDwH/AfAJAAH7AW0BvwHfAQ8B/wHgCQAB+wFtAb8B3wGPAf8B4QEQCAAB+wFtAb8B3wGP
Af8B4wEYCAAB+wFtAb8B3wGPAf8B9gEdCAAB8AIAAQ8BhwH/Af4BHwgAAfcC/wH3AccB/wH8AT8IAAHw
AgABBwHDAf8B/AE/BAABgAMAAfcC/wH3AeEB/wH4AX8EAAH/AT8B/gF/AfcC/wH3AeAB/wHwAX8B/gEf
AfwBfwH/AT8B/gF/AfcC/wH3AfABfwHgAf8B/gEfAfwBfwH/AT8B/gF/AfcBnwH8AfcB+AEfAYEB/wH+
AR8B/AF/Af8BPwH+AX8B9wFfAf0BdwH8AQABAwH/Af4BHwH4AX8B/wEfAfwBfwH2Ae8B+wG3Af4BAAEH
Af8B/gIAAX8B/wIAAX8B8QHvAfMBhwH/AYABHwH/Af4CAAF/Af8BgAEAAv8B8wHnAv8B8AP/AgAC/wHg
AQMC/wH8AR8B/wHwAgABDwH8AgABPwHAAgABAQT/AfACAAEHAfACAAEPAYADAAT/AfACAAEHAfACAAEH
AR8CAAH8BP8B8wE/Af4BZwHjAv8B4wEfAgAB/AT/AfMBPwH+AWcB5wL/AfMBHwIAAfwB/wIAAX8B8wE/
Af4BZwHnAv8B8wEfAgAC/AIAAR8B8wE4AQ4BZwHnAv8B8wEfAgAC/AIAAR8B8wE4AQ4BZwHnAv8B8wEf
AgAB/AH4Av8BnwHzAT8B/gFnAecC/wHzAR8CAAH8AfgC/wGfAfMBPwH+AWcB5wL/AfMBHwIAAfwB+AL/
AZ8B8wE/Af4BZwHnAv8B8wEfAYABAAH8AfgC/wGfAfMCAAFnAecC/wHzAR8BgAEBAfwB+AL/AZ8B8wIA
AWcB5wL/AfMBHwHgAQMB/AH4Av8BnwHzAgAC5wL/AfMBHwL/AfwB+AL/AZ8B8wL/AucC/wHzAR8C/wH8
AfgB/wF/AZ8B8wL/AucC/wHzAR8C/wH8AfgB/gE/Af8B8wL/AucC/wHzAR8C/wH8AfgB/wEfAf8B8wL/
AucC/wHzAR8C/wH8AfgB/wGPAf8B8wL/AucBgAEAAfMBHwL/AfwB+AH/AccB3wHzAv8C5wGAAQAB8wEf
Av8B/AH4Af8B4wGfAfMC/wLnAZ8B/AHzAR8C/wH8AfgB/wHxAZ8B8wL/AucBnwH8AfMBHwHAAQEB/AH4
Af8B+AGfAfMBAAEHAucBnwGcAfMBHwIAAXwB+AH/AfwBHwHzAQABBwHHAecBnwGcAfMBHgIAATwB+AH/
Af4BHwHzAQABBwGPAecBnwGcAfMBHAIAATwB/AEAAfABHwHzAQABBwEPAecBnwGcAfMBHAIAARwB/AEA
AeABHwHzAQABBgEfAecBnwHcAfMBHAIAARwE/wHzAQABBAF/AecBnwH8AeMBHAIAARwE/wHwAgAB/wHg
AgABBwEcAgABHAT/AfACAAH/AfACAAEHAYADAAT/AfABAAEBAf8B+AIAAR8BgAIAAQEM/wHgAgABBwT/
AeAH/wH+AgABfwT/AcABPwP/AfABBwH/AfgCAAEfAfACAAEPAcABDwP/AcABAQH/AfACAAEHAcACAAED
AcABBwP/AgABfwHgAgABBwHDAv8BwQHAAQEC/wH+AgABPwHAAgABAwGHAv8B4QHAAQABfwH/AfwCAAEf
AcACAAEDAYcC/wHxAcABAAE/Af8B+AIAAQ8BwAIAAQMBhwL/AfEBwAEAAQ8B/wHwAgABBwHAAgABAwGH
Av8B8QHAAQABAwH/AeACAAEHAcACAAEDAYcC/wHxAcACAAH/AeACAAEDAeACAAEDAYcC/wHxAcACAAF/
AcACAAEDAeACAAEHAccC/wHhAcACAAEfAcACAAEBAfACAAEHAcMC/wHhAcACAAEHAcACAAEBAfACAAEP
AcMB8AEPAcMBwAIAAQMBwAIAAQEB+AIAAQ8B4QHAAQMBgwHAAgABAQHAAgABAQH4AgABHwHgAQEBgAEH
AcACAAEBAcACAAEBAfwCAAE/AfgBDwHwAQ8BwAIAAQEBwAIAAQEB/gIAAX8B/gEQAQwBfwHAAgABAwHA
AgABAQH/AgAC/wHAAQMB/wHAAgABBwHAAgABAQH/AeABBwL/AoEB/wHAAgABDwHAAgABAQH/AcABAwL/
AQ8B4AH/AcACAAE/AcACAAEDAf8BwAEDAv8BHwH4AX8BwAIAAf8B4AIAAQMB/wGAAQEB/wH+AR8B+AF/
AcABAAEBAf8B4AIAAQcB/wGAAQEB/wH+AR8B+AF/AcABAAEHAf8B8AIAAQcB/wGAAQEB/wH+AR8B+AF/
AcABAAEfAf8B8AIAAQ8B/wGAAQEB/wH+AR8B+AF/AcABAAF/Af8B+AIAAR8B/wGAAQEB/wH+AR8B+AF/
AcABAAL/AfwCAAE/Af8BgAEBAv8BDwHwAf8BwAEDAv8B/gIAAX8B/wGAAQEC/wEHAeAB/wHAAQ8D/wGA
AQAC/wHAAQMC/wGAAQMB/wHAAT8D/wHgAQMC/wHAAQMC/wHgAQcB/wHgAX8H/wHgAQcC/wH8AT8B/wHx
CP8B+AEfEf8EAAT/AYADAAGABwAB/wHgAQMB/wGAAwABgAcAAf8BgAEAAf8BgAIAAQEBgAIAAQEEAAH/
AgABfwGAAgABAQGAAgABAQQAAf8BPwH+AX8BwAIAAQMBwAIAAQMBAAEHAeABAAH+ASYBcgF/AeACAAED
AeACAAEDAQABHwH8AQAB/gEmAXIBfwHwAgABDwHwAgABDwEAAT8B/gEAAf4BJgFyAX8B/AIAAT8B/gIA
AX8BAAF+AT8BAAH+ASYBcgF/AfwCAAE/Af8B4AEHAf8BAAH4AQ8BAAH+ASYBcgF/Af8BgAEAAv8BgAEB
Af8BAAHwAQcBgAH+ASYBcgF/Af8CAAL/AgAB/wEBAeABAwGAAf4BJgFyAX8B/gIAAT8B/gIAAX8BAQHg
AQMBwAH+ASYBcgF/AfwCAAE/AfwCAAE/AQEBwAEDAcAB/gEmAXIBfwH8AgABHwH8AgABPwEBAcABAQHA
Af4BJgFyAX8B+AIAAQ8B+AIAAQ8BAQHAAQEBwAH+ASYBcgF/AfACAAEHAfACAAEPAQEBwAEBAcAB/gEm
AXIBfwHgAgABBwHgAgABBwEBAcABAwHAAf4BJgFyAX8B4AIAAQMB4AIAAQcBAQHAAQMBwAH+ASYBcgF/
AeACAAEHAeACAAEHAQEB4AEDAYAB/gE/Af4BfwHwAgABDwHwAgABDwEAAfABBwGAAfwCAAEfAfwCAAEf
AfgCAAEfAQAB8AEPAYAB/AIAAR8B/AIAAR8B+AIAAQ8BAAF8AR8BAAH8AgABHwH8AgABHwH4AgABDwEA
AT8B/gEAAfwCAAEfAfwCAAEfAfgCAAEPAQABHwH8AQAB/wHnAfMB/wH8AgABHwH4AgABDwEAAQ8B8AEA
Af8C4wH/Af4CAAE/AfgCAAEPAQABAQHAAQAB/wHgAQcC/wIAAX8B/wIAAR8BwAIAAQEB/wH4AQ8C/wHA
AQAC/wGAAQABfwH/AgABfwX/AfABAwL/AcABAAL/AgABfwb/AT8C/wH4AR8C/wIADv8BgAEABf8BgAMA
AYADAAj/AYAHAAj/AYAHAAT/AcACAAEDAYAHAAT/AcACAAEBAYAHAAL/AfwB/wHAAgABAQGABwAC/wH8
Af8BwAIAAQEBgAcAAf4BAAF8Af8BwAIAAQEBgAcAAf4BAAF8Af8BwAIAAQEBgAcAAf4BfwHgAQ8BwAIA
AQEBgAcAAf4BfwHgAQ8BwAIAAQEBgAcAAf4BfwH8Af8BwAIAAQEBgAcAAf4BfwH8Af8BwAIAAQEBgAcA
Af4BcAEMAf8BwAIAAQEBgAcAAf4BcAEPAf8BwAIAAQEIAAH+AXABDgE/AcACAAEBCAAB/gF/Af4BPwHA
AgABAQgAAf4BfwH+AT8BwAIAAQEIAAH+AX8B/gE/AcACAAEBCAAB/gFwAQ4BPwHAAgABAQgAAf4BcAEO
AT8BwAIAAQEIAAH+AXABDgE/AcACAAEBCAAB/gF/Af4BPwHAAgABAQgAAf4BfwH+AT8BwAIAAQEBgAcA
Af4BfwH+AT8BwAIAAQMBwAIAAQEEAAH+AX8B/gE/AcABAAEPAv8BPwH+AX8BgAMAAf4CAAE/AcABAAEP
Av8BPwH+AX8BwAIAAQEB/gIAAT8BwAEAAR8C/wE/Af4BfwH+AgABPwn/AR8B/AF/Af4CAAE/Cf8CAAF/
Af8CAAF/Cf8BgAEAAv8CAAF/Cf8B4AEDAv8CAAF/BP8B/gL/AT8M/wH+Av8Bvwz/AfwCAAEfDP8B+QFt
Ab8B3wz/AfsBbQG/Ad8B8AEYAQwBDwL/AQABDwHAAgABAQH7AW0BvwHfAfABGAEMAQ8B/wH+AQABDwGA
AwAB+AIAAR8B8AEYAQwBDwH8AQABPwHPBAAB+wL/Ad8B8QEYAYwBTwH5Af4BPwHPBAAB+wL/Ad8B8AEY
AQwBDwH5Af4BAAEPBAAB+wL/Ad8B8AEYAQwBDwH5Af8BAAEPBAAB+wL/Ad8B+AE4ARwBDwH5A/8EAAH7
Av8B3wH8Af4BPwEfAfkD/wQAAfsC/wHfAfwCAAEfAfkB/wEAAQ8EAAH7Av8B3wH8AgABHwH5Af4BAAEP
BAAB+wL/Ad8B/AIAAR8B+QHgAT8BzwQAAfgCAAEfAf8B/gE/Af8B+QGAAT8BzwQAAfsBbQG/Ad8B/wH+
AT8B/wH5Ab4BAAEPBAAB+wFtAb8B3wH/AgABfwH5Ab8BAAEPBAAB+wFtAb8B3wH+AgABPwH5Ab8C/wQA
AfsBbQG/Ad8B/gIAAT8B+QG/Av8EAAHwAgABDwH+AX8B/gE/AfABDwEAAQ8EAAH3Av8B9wH+AXMB/gE/
AeABDgEAAQ8EAAHwAgABBwH+AXMB/gE/AeMBwAE/Ac8EAAH3Av8B9wH+AX8B/gE/AeMBwAE/Ac8EAAH3
Av8B9wH+AX8B/gE/AeABDgEAAQ8EAAH3Av8B9wH+AgABPwHwAQ8BAAEPAYADAAH3AZ8B/AH3Af4CAAE/
BP8BgAIAAQEB9wFfAf0Bdwz/AfYB7wH7AbcM/wHxAe8B8wGHDf8B8wHnDv8B/AEfDf8L
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAG
FAAAAk1TRnQBSQFMAgEBBwEAATABAAEwAQABIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABgAMAAUADAAEBAQABCAYAASAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8AJAAB8wNaKAAB8wNa
MAAB9htZBAAB8wFaAQABWiYABFoBAARaLQAdWQMAAfMDWiMAAf8CWgH0AQAB8wNaAgABCAJaKwAdWQQA
AvMBwgFaIQABngFaAf8EAAPzBAABwgFaAfUpAB1ZBwAB9AFaHwACWg8AAVoBwigAHVkIAAH1AVodAAHk
AVoRAAFaAfUnAB1ZCQAB9QFaGwAB/wFaEwABWicAHVkKAAH0AVoaAAFaFAABwgFaJgAdWQsAAfQBWhgA
Af8BWhUAAVomAB1ZDAAB9QFaFwABWhYAAQgBWiUAHVkNAAH1AVoWAAFaFwABWiUAHVkOAAH0AVoVAAFa
FwABWiUAHVkPAAH0AVoSAAHzA1oUAAHzA1okAB1ZEAAB9QFaEQAB8wFaAQABWhQAAfMBWgEAAVokAB1Z
EQAB9QFaEAAB8wNaFAAB8wNaJAAdWRIAAfQBWhAAAfMBWgHzFQAB8wFaAfMkAB1ZEwAB9AFaEAABWhcA
AVolAB1ZFAAB9QFaDwABWhYAAfQBWiUAATEbWQExFQAB9QFaDgABngFaFQABWiYAAzEBWBX/BDEWAAH0
AVoOAAFaFAAB/wFaJgADMQFYFf8EMRcAAfQBWg0AARsBWhMAAVoB/yYAHTEYAAH1AVoNAAJaEQABWgGe
JwAbMQF5GgAB9QFaDQACWg8AAlooABIxJQAB9AFaDQACWg0AAVoB5CkAETEBmSYAAcIDWgsAARsCWgIA
AfMDWgMAAloB/yoAETEnAAHzAVoBAAFaDQABngRaAQAEWgH/ZAAB8wNaEAAB8wNaaQAD8xEAA/P/ADYA
AbMQAAH/AbttAAGyEQABsmwAAbIBCQGyAgkBswIJAboCCQG7BwkBugGzagAC/wEAAbMCAAEJAgAB8wIA
Af8IAAEJagAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZCQAB/wUJAfQCAAEZBQkB/wIABgkUAAuyAbMGAB30
BgAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZCQAB/wUJAfQCAAEZBQkB/wIABgkTAAEJDLIFAB+KBQAB/wKz
AbISswkAAf8CCQH/AgkB9AIAARkBCQEZAf8CCQH/AgADCQH/AfIBCQoAAbMKsgH0CAABugGyBAABtAGK
AWUCuxoZAYoFAAH/FAABGQkAAf8CCQEAAgkB9AIAARkBCQHzAQACCQH/AgADCQEAAfMBCQkAAfMBswgA
AboBsgH0CAABugGyBAABswGKAmUCuxkZAYoFAAH/FAABGQkAAf8FCQH0AgABGQUJAf8CAAYJCQABugH0
CAABCQyyBAABswGKAbsCZQG7AQkYGQGKBQAB/xQAARkJAAH/BQkB9AIAARkFCQH/AgAGCQkAAboB9AkA
DLIEAAGzAYoBuwEZAmUBuwEJCRkBCQwZAbsBigUAAf8UAAEZCgAB/wIJAv8DAAL/AwkB/wMAAv8CCQHz
Af8JAAG6AfQZAAGzAYoBuwIZAmUBuwgZArsLGQEJAWUBigUAAf8UAAEZCwACCQcAAwkGAAIJAfQKAAG6
AfQZAAGzAYoBuwMZAmUBuwYZAbsCZQG7ChkCZQGKBQAB/xQAARkLAAIJB/8DCQb/AgkB9AoAAboB9AkA
C7IBswQAAbMBigG7BBkCZQG7BRkBZgJlAWYBCQgZAbsBZQEZAYoFAAH/FAABGQsAFAkB9AoAAboB9AgA
AQkMsgQAAbMBigG7BRkCZQG7AxkBuwFlAWYBkQFlAbsHGQEJAmUBGQGKBQAB/xQAARkLABQJAfQKAAG6
AfQEAAT0AbMBsgH0CAABugGyBAABswGKAbsGGQFlAWYBuwEJAbsCZQIZAWUBZgEJBhkBZgFlAhkBigUA
Af8VshQAAfMCCRMAAboB9AIACLIB9AgAAboBsgQAAbMBigG7BhkBuwJlAbsCZQMZAQkBZQG7BRkBuwFl
AWwCGQGKBQAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZFAAB8wIJEwABugH0AgABsgUAAQkMsgQAAbMBigG7
BxkBtQNlBRkCZQG7AxkBCQJlAxkBigUAAf8CAAGzAgABCQIAAfMCAAH/CAABGQ0AB/8BGQIJB/8MAAG6
AfQCAAGyBgAMsgQAAbMBigG7EBkBCQFlAbsDGQGuAWUEGQGKBQAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZ
DAAB8xIJCwABugH0AgABshYAAbMBigG7AhkBZgJlDBkCZQG7ARkBuwJlBBkBigUAAf8CAAGzAgABCQIA
AfMCAAH/CAABGQwAAfMBCQ7/AwkLAAG6AfQCAAGyFgABswGKAbsBGQFlAYsCGQFlDBkBZQK7AmUFGQGK
BAAB/wGyFbQBsgsAAfMBCQ4AAwkKAAeyAbMEAAuyAbMEAAGzAYoBuwEZAWUBuwIZAWUMGQRlAZEFGQGK
BAABshcAAbIKAAHzAQkDAAIJCQADCQkAAQkIsgMAAQkMsgQAAbMBigG7ARkBZQG7AgkBZQ4ZAbUHGQGK
BAABshezAbIKAAHzAQkDAAIJCQADCQkAAboBsgH0BAABugGyA/QBswGyAfQIAAG6AbIEAAGzAYoBuwIZ
A2UBuxYZAYoEAAG6FwABsgoAAfMBCQ4AAwkJAAG6AbIB9AQAAboGsgH0CAABugGyBAABswGKAbscGQGK
BAABuhcAAbIKAAHzAQkOAAMJCQABCQiyAwABCQyyBAABswGKHbsBigQAAboXAAGyCgAB8xIJCgAIsgQA
DLIFAB+KBAABugQAAbIB9AsAAQkBsgQAAbIKAAH/EQkB8ycAAf8crQG0BQABugMAAbIBAAGzCwABCQEA
AbIDAAGyZwABugIAAbIDAAGyCQABsgMAAbMCAAGyZwABugGzAboEAAG6CAAC8wMAAf8BugGzAQlvAAGy
AQkFAAG6AbN5AAG6A7IBCW0AAUIBTQE+BwABPgMAASgDAAGAAwABQAMAAQEBAAEBBgABBBYAA/8BAAz/
BAAM/wQABP8BwwT/AfwBPwH/BAABwAIAAQMBywT/AfABhwH/BAABwAIAAQEBwwT/AYQBMQH/BAABwAIA
AQEB4QT/AR4BPAF/BAABwAIAAQEB/AP/Af4BfwH/AT8EAAHAAgABAQH+AX8C/wH8Av8BnwQAAcACAAEB
Af8BPwL/AfkC/wHfBAABwAIAAQEB/wGfAv8B+wL/Ac8EAAHAAgABAQH/Ac8C/wHzAv8B7wQAAcACAAEB
Af8B5wL/AfcC/wHnBAABwAIAAQEB/wHzAv8B9wL/AfcEAAHAAgABAQH/AfkC/wH3Av8B9wQAAcACAAEB
Af8B/AL/AcMC/wHDBAABwAIAAQEB/wH+AX8B/wHLAv8BywQAAcACAAEBAv8BPwH/AcMC/wHDBAABwAIA
AQEC/wGfAf8B4wL/AeMEAAHAAgABAQL/Ac8B/wH3Av8B9wQAAcACAAEBAv8B5wH/AfcC/wHnBAABwAIA
AQEC/wHzAf8B8wL/Ae8EAAHAAgABAQL/AfkB/wH7Av8BzwQAAcACAAEBAv8B/AH/AfkC/wHPBAABwAIA
AQEC/wH+AX8B/AL/AZ8EAAHAAgABAwP/AT8B/gF/Af8BPwQAAcABAAEPBP8BnwH/AT8B/gF/BAABwAEA
AQ8E/wHDAf8BjAE4Af8EAAHAAQABHwT/AcsB/wHgAYMB/wQAB/8BwwH/AfwBPwH/BAAH/wHjAf8B/gE/
Af8EAAz/BAAM/wQAAf4C/wE/DP8B/gL/Ab8M/wH8AgABHwz/AfkBbQG/Ad8M/wH7AW0BvwHfAfABGAEM
AQ8C/wEAAQ8BwAIAAQEB+wFtAb8B3wHwARgBDAEPAf8B/gEAAQ8BgAMAAfgCAAEfAfABGAEMAQ8B/AEA
AT8BzwQAAfsC/wHfAfEBGAGMAU8B+QH+AT8BzwQAAfsC/wHfAfABGAEMAQ8B+QH+AQABDwQAAfsC/wHf
AfABGAEMAQ8B+QH/AQABDwQAAfsC/wHfAfgBOAEcAQ8B+QP/BAAB+wL/Ad8B/AH+AT8BHwH5A/8EAAH7
Av8B3wH8AgABHwH5Af8BAAEPBAAB+wL/Ad8B/AIAAR8B+QH+AQABDwQAAfsC/wHfAfwCAAEfAfkB4AE/
Ac8EAAH4AgABHwH/Af4BPwH/AfkBgAE/Ac8EAAH7AW0BvwHfAf8B/gE/Af8B+QG+AQABDwQAAfsBbQG/
Ad8B/wIAAX8B+QG/AQABDwQAAfsBbQG/Ad8B/gIAAT8B+QG/Av8EAAH7AW0BvwHfAf4CAAE/AfkBvwL/
BAAB8AIAAQ8B/gF/Af4BPwHwAQ8BAAEPBAAB9wL/AfcB/gFzAf4BPwHgAQ4BAAEPBAAB8AIAAQcB/gFz
Af4BPwHjAcABPwHPBAAB9wL/AfcB/gF/Af4BPwHjAcABPwHPBAAB9wL/AfcB/gF/Af4BPwHgAQ4BAAEP
BAAB9wL/AfcB/gIAAT8B8AEPAQABDwGAAwAB9wGfAfwB9wH+AgABPwT/AYACAAEBAfcBXwH9AXcM/wH2
Ae8B+wG3DP8B8QHvAfMBhw3/AfMB5w7/AfwBHw3/Cw==
</value>
</data>
<metadata name="imageListTool.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>132, 17</value>
</metadata>
<data name="imageListTool.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABS
HAAAAk1TRnQBSQFMAgEBCAEAARgBAAEYAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABMAMAAQEBAAEgBgABMP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wCnAAExAUYBMAFQ
UAABKAH6ARkB/wEoAfoBGQH/BAABKAH6ARkB/wEoAfoBGQH/GAABqAFbAQkB/wGoAVsBCQH/AagBWwEJ
Af8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGo
AVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8YAAGFAWsBOAGeAdsBlgERAf8B2wGW
AREB/wHbAZYBEQH/AwABARwAATEBRgEwAVABKAH6ARkB/0AAAUEBkwE7AaABEgEUARIBGAgAATEBRgEw
AVAIAAE7AWABOAFsASEBKQEhATAMAAGbAXABPwHvAVIBKQEQAf8B4QG9AYoB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/FAAB2wGWAREB/xQAAdsBlgERAf8gAAEoAfoBGQH/
OAABOwHFATABzyQAASEBKQEhATAIAAGbAXABPwHvAeEBvQGKAf8BUgEpARAB/wHhAb0BigH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wHhAb0BigH/EAAB2AGWARMB/UAAASgB+gEZAf9cAAE4AVgBNgFk
CAABmwFwAT8B7wHhAb0BigH/AfoB6wHSAf8BUgEpARAB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AVIBKQEQAf8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8BUgEpARAB/xAAAUoBQgEyAVkcAAHbAZYBEQH/JAABKAH6ARkB/ywAASgB+gEZAf8sAAEoAfoBGQH/
BAABmwFwAT8B7wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wFSASkBEAH/AeEBvQGKAf8B+gHrAdIB/wHd
AbkBhwH/AVgBLwEWAf8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AVIBKQEQ
Af8B+gHrAdIB/zAAAUkBQAExAVcoAAEoAfoBGQH/KAABKAH6ARkB/ywAASgB+gEZAf8EAAGbAXABPwHv
AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BUgEpARAB/wHhAb0BigH/AVIBKQEQAf8B+gHr
AdIB/wHnAdUBvAH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AeEBvQGKAf8BdgFTAToB/wH6AesB0gH/
IAAB2wGWAREB/zwAASgB+gEZAf8gAAExAUYBMAFQLAABMQFGATABUAgAAZsBcAE/Ae8B4QG9AYoB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8gAAHbAZYBEQH/
QAABKAH6ARkB/yAAASgB+gEZAf8sAAEoAfoBGQH/BAABmwFwAT8B7wHhAb0BigH/AVIBKQEQAf8B+gHr
AdIB/wFSASkBEAH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AdoBtgGEAf8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/xAAAdsBlgERAf8MAAHbAZYBEQH/
EAABzAGQARsB8DAAASgB+gEZAf8cAAEoAfoBGQH/LAABKAH6ARkB/wQAAZsBcAE/Ae8B4QG9AYoB/wFS
ASkBEAH/AekBzAGhAf8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH2AecBzgH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8UAAF6AWQBOQGQ
CAAB2wGWAREB/0gAASgB+gEZAf9EAAESARQBEgEYCAABmwFwAT8B7wHhAb0BigH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/xgAAdsBlgERAf8EAAHbAZYBEQH/
DAAB2wGWAREB/zwAASgB+gEZAf8YAAEoAfoBGQH/JAABQAGaATkBqAwAAagBWwEJAf8BqAFbAQkB/wGo
AVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJ
Af8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/KAAB2wGWAREB/wFeAVABNwFw
RAABKAH6ARkB/xgAASgB+gEZAf8cAAE8AbwBMwHHwAABMQFGATABUCAAASgB+gEZAf8BKAH6ARkB/wQA
ASgB+gEZAf8BKAH6ARkB/8wAATEBRgEwAVAkAAExAUYBMAFQ/wD/AP8APwAB2wGWAQ8B/wHbAZYBDwH/
AdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/AdsBlgEPAf8MAAGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGo
AVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJ
Af8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wQAAagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/
AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFb
AQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/BAABqAFbAQkB/wGoAVsBCQH/AagBWwEJ
Af8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGo
AVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8MAAGVAXcBPAHfEAAB2wGWAQ8B/xAA
AXIBZAFMAcAIAAGbAXABPwHvAVIBKQEQAf8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AZsBcAE/Ae8BUgEpARAB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BmwFwAT8B7wFSASkBEAH/AeEBvQGKAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wwAAyoBQBAAAdsBlgEPAf8B2wGWAQ8B/wHb
AZYBDwH/AdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/CAABmwFwAT8B7wHhAb0BigH/AVIBKQEQAf8B4QG9
AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B4QG9AYoB/wGbAXABPwHvAeEBvQGKAf8BUgEp
ARAB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wHhAb0BigH/AZsBcAE/Ae8B4QG9
AYoB/wFSASkBEAH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AeEBvQGKAf8MAAMq
AUAwAAGbAXABPwHvAeEBvQGKAf8B+gHrAdIB/wFSASkBEAH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8BUgEpARAB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wFSASkBEAH/AZsBcAE/Ae8B4QG9AYoB/wH6AesB0gH/AVIBKQEQAf8B4QG9AYoB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wFSASkBEAH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AVIBKQEQAf8BmwFwAT8B7wHhAb0BigH/AfoB6wHSAf8BUgEpARAB/wHhAb0BigH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AVIBKQEQAf8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8BUgEpARAB/wwAAyoBQBAAAdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/
AdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/CAABmwFwAT8B7wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wFS
ASkBEAH/AeEBvQGKAf8B+gHrAdIB/wHdAbkBhwH/AVgBLwEWAf8BUgEpARAB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AVIBKQEQAf8B+gHrAdIB/wGbAXABPwHvAeEBvQGKAf8B+gHrAdIB/wH6
AesB0gH/AVIBKQEQAf8B4QG9AYoB/wH6AesB0gH/Ad0BuQGHAf8BWAEvARYB/wFSASkBEAH/AfoB6wHS
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BUgEpARAB/wH6AesB0gH/AZsBcAE/Ae8B4QG9AYoB/wH6
AesB0gH/AfoB6wHSAf8BUgEpARAB/wHhAb0BigH/AfoB6wHSAf8B3QG5AYcB/wFYAS8BFgH/AVIBKQEQ
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wFSASkBEAH/AfoB6wHSAf8MAAMqAUAEAAHb
AZYBDwH/AdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/EAABcgFkAUwBwAgAAZsBcAE/Ae8B4QG9AYoB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wFSASkBEAH/AeEBvQGKAf8BUgEpARAB/wH6AesB0gH/AecB1QG8
Af8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B4QG9AYoB/wF2AVMBOgH/AfoB6wHSAf8BmwFwAT8B7wHh
Ab0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AVIBKQEQAf8B4QG9AYoB/wFSASkBEAH/AfoB6wHS
Af8B5wHVAbwB/wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wHhAb0BigH/AXYBUwE6Af8B+gHrAdIB/wGb
AXABPwHvAeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BUgEpARAB/wHhAb0BigH/AVIBKQEQ
Af8B+gHrAdIB/wHnAdUBvAH/AeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AeEBvQGKAf8BdgFTAToB/wH6
AesB0gH/DAADKgFAEAAB2wGWAQ8B/wHbAZYBDwH/AdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/AdsBlgEP
Af8IAAGbAXABPwHvAeEBvQGKAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AVIBKQEQAf8B+gHrAdIB/wH6AesB0gH/AVIBKQEQAf8B+gHr
AdIB/wH6AesB0gH/AZsBcAE/Ae8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8BUgEp
ARAB/wH6AesB0gH/AfoB6wHSAf8BmwFwAT8B7wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wFSASkBEAH/AfoB6wHSAf8B+gHr
AdIB/wFSASkBEAH/AfoB6wHSAf8B+gHrAdIB/wwAAyoBQDAAAZsBcAE/Ae8B4QG9AYoB/wFSASkBEAH/
AfoB6wHSAf8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wHaAbYBhAH/AVIBKQEQAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8BmwFwAT8B7wHhAb0BigH/
AVIBKQEQAf8B+gHrAdIB/wFSASkBEAH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AdoBtgGEAf8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wGbAXABPwHv
AeEBvQGKAf8BUgEpARAB/wH6AesB0gH/AVIBKQEQAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHr
AdIB/wH6AesB0gH/AfoB6wHSAf8B2gG2AYQB/wFSASkBEAH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/
CAAB2wGWAQ8B/wHbAZYBDwH/AdsBlgEPAf8B2wGWAQ8B/wgAAdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/
AdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/CAABmwFwAT8B7wHhAb0BigH/AVIBKQEQAf8B6QHMAaEB/wFS
ASkBEAH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfYB5wHO
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wGbAXABPwHvAeEBvQGKAf8BUgEpARAB/wHp
AcwBoQH/AVIBKQEQAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B9gHnAc4B/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AZsBcAE/Ae8B4QG9AYoB/wFS
ASkBEAH/AekBzAGhAf8BUgEpARAB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wH2AecBzgH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8IAAHbAZYBDwH/
CAABcgFkAUwBwAHbAZYBDwH/AdsBlgEPAf8B2wGWAQ8B/xAAAXIBZAFMAcAIAAGbAXABPwHvAeEBvQGK
Af8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AZsBcAE/
Ae8B4QG9AYoB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8BmwFwAT8B7wHhAb0BigH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6
AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHSAf8B+gHrAdIB/wH6AesB0gH/AfoB6wHS
Af8B+gHrAdIB/wgAAdsBlgEPAf8B2wGWAQ8B/wHbAZYBDwH/AdsBlgEPAf8IAAHbAZYBDwH/AdsBlgEP
Af8B2wGWAQ8B/wHbAZYBDwH/AdsBlgEPAf8B2wGWAQ8B/wwAAagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/
AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFb
AQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/BAABqAFbAQkB/wGoAVsBCQH/AagBWwEJ
Af8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGo
AVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8EAAGoAVsBCQH/AagBWwEJAf8BqAFb
AQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/
AagBWwEJAf8BqAFbAQkB/wGoAVsBCQH/AagBWwEJAf8BqAFbAQkB//8A/wD/AAMAAUIBTQE+BwABPgMA
ASgDAAFAAwABMAMAAQEBAAEBBQABgAEBFgAD/4EADP8BvwH/AfwBnwGAAQAB/AEfAc8B/wHzAWcCAAH7
Ae8B9wH/Ae8B+wIAAfcB/wH7Av8B+wIAAvcB/QH/Ad8B/QIAAf8B9wH+Af8B3wH9AgAB/wF/Af8BfwG/
AfsCAAH/AX8B/wG/Ad8B/QIAAfcBewH/At8B/QIAAfsBfwH/Ae8B/wH7AgAB/QF3Af8B9wHvAfsBgAEA
Af8BzwH/AfsC9wX/AfsB/AGfBf8B/QH/AX8Z/wEDAYABAAGAAQABgAEAAe8BewYAAe8BAwYAAe8B/wYA
Ae8BAwYAAegBewYAAe8BAwYAAe8B/wYAAcMBAwYAAdgBewYAAcMBAwGAAQABgAEAAYABABj/Cw==
</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

View File

@@ -30,21 +30,21 @@
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain));
WeifenLuo.WinFormsUI.Docking.DockPanelSkin dockPanelSkin6 = new WeifenLuo.WinFormsUI.Docking.DockPanelSkin();
WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin autoHideStripSkin6 = new WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient16 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient36 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin dockPaneStripSkin6 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin();
WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient dockPaneStripGradient6 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient37 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient17 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient38 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient dockPaneStripToolWindowGradient6 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient39 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient40 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient18 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient41 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient42 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPanelSkin dockPanelSkin2 = new WeifenLuo.WinFormsUI.Docking.DockPanelSkin();
WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin autoHideStripSkin2 = new WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient4 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient8 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin dockPaneStripSkin2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin();
WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient dockPaneStripGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient9 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient5 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient10 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient dockPaneStripToolWindowGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient11 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient12 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient6 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient13 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient14 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
this.ribbonControl1 = new DevComponents.DotNetBar.RibbonControl();
this.ribbonPanel3 = new DevComponents.DotNetBar.RibbonPanel();
this.ribbonBar2 = new DevComponents.DotNetBar.RibbonBar();
@@ -85,9 +85,9 @@
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.dockPanel1 = new WeifenLuo.WinFormsUI.Docking.DockPanel();
this.panel1 = new System.Windows.Forms.Panel();
this.label1 = new System.Windows.Forms.Label();
this.lbPermission = new System.Windows.Forms.Label();
this.lbTime = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.ribbonControl1.SuspendLayout();
this.ribbonPanel3.SuspendLayout();
@@ -97,15 +97,17 @@
//
// ribbonControl1
//
this.ribbonControl1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(239)))), ((int)(((byte)(242)))));
//
//
//
this.ribbonControl1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.ribbonControl1.CaptionVisible = true;
this.ribbonControl1.Controls.Add(this.ribbonPanel1);
this.ribbonControl1.Controls.Add(this.ribbonPanel3);
this.ribbonControl1.Controls.Add(this.ribbonPanel2);
this.ribbonControl1.Controls.Add(this.ribbonPanel1);
this.ribbonControl1.Dock = System.Windows.Forms.DockStyle.Top;
this.ribbonControl1.ForeColor = System.Drawing.Color.Black;
this.ribbonControl1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] {
this.applicationButton1,
this.ribStart,
@@ -114,11 +116,10 @@
this.ribbonControl1.KeyTipsFont = new System.Drawing.Font("Tahoma", 7F);
this.ribbonControl1.Location = new System.Drawing.Point(0, 0);
this.ribbonControl1.Name = "ribbonControl1";
this.ribbonControl1.Padding = new System.Windows.Forms.Padding(0, 0, 0, 3);
this.ribbonControl1.QuickToolbarItems.AddRange(new DevComponents.DotNetBar.BaseItem[] {
this.btnCompany,
this.qatCustomizeItem1});
this.ribbonControl1.Size = new System.Drawing.Size(1140, 154);
this.ribbonControl1.Size = new System.Drawing.Size(1366, 154);
this.ribbonControl1.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.ribbonControl1.SystemText.MaximizeRibbonText = "&Maximize the Ribbon";
this.ribbonControl1.SystemText.MinimizeRibbonText = "Mi&nimize the Ribbon";
@@ -144,10 +145,10 @@
this.ribbonPanel3.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.ribbonPanel3.Controls.Add(this.ribbonBar2);
this.ribbonPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.ribbonPanel3.Location = new System.Drawing.Point(0, 53);
this.ribbonPanel3.Location = new System.Drawing.Point(0, 54);
this.ribbonPanel3.Name = "ribbonPanel3";
this.ribbonPanel3.Padding = new System.Windows.Forms.Padding(3, 0, 3, 3);
this.ribbonPanel3.Size = new System.Drawing.Size(1140, 98);
this.ribbonPanel3.Padding = new System.Windows.Forms.Padding(3, 0, 3, 2);
this.ribbonPanel3.Size = new System.Drawing.Size(1366, 100);
//
//
//
@@ -161,6 +162,7 @@
//
this.ribbonPanel3.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.ribbonPanel3.TabIndex = 3;
this.ribbonPanel3.Visible = false;
//
// ribbonBar2
//
@@ -182,7 +184,7 @@
this.btnSaveJob});
this.ribbonBar2.Location = new System.Drawing.Point(3, 0);
this.ribbonBar2.Name = "ribbonBar2";
this.ribbonBar2.Size = new System.Drawing.Size(547, 95);
this.ribbonBar2.Size = new System.Drawing.Size(403, 98);
this.ribbonBar2.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.ribbonBar2.TabIndex = 0;
this.ribbonBar2.Text = "流程操作";
@@ -226,10 +228,10 @@
//
this.ribbonPanel2.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.ribbonPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.ribbonPanel2.Location = new System.Drawing.Point(0, 53);
this.ribbonPanel2.Location = new System.Drawing.Point(0, 54);
this.ribbonPanel2.Name = "ribbonPanel2";
this.ribbonPanel2.Padding = new System.Windows.Forms.Padding(3, 0, 3, 3);
this.ribbonPanel2.Size = new System.Drawing.Size(1140, 98);
this.ribbonPanel2.Padding = new System.Windows.Forms.Padding(3, 0, 3, 2);
this.ribbonPanel2.Size = new System.Drawing.Size(1366, 100);
//
//
//
@@ -250,10 +252,10 @@
this.ribbonPanel1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.ribbonPanel1.Controls.Add(this.ribbonBar1);
this.ribbonPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.ribbonPanel1.Location = new System.Drawing.Point(0, 53);
this.ribbonPanel1.Location = new System.Drawing.Point(0, 54);
this.ribbonPanel1.Name = "ribbonPanel1";
this.ribbonPanel1.Padding = new System.Windows.Forms.Padding(3, 0, 3, 3);
this.ribbonPanel1.Size = new System.Drawing.Size(1140, 98);
this.ribbonPanel1.Padding = new System.Windows.Forms.Padding(3, 0, 3, 2);
this.ribbonPanel1.Size = new System.Drawing.Size(1366, 100);
//
//
//
@@ -267,7 +269,6 @@
//
this.ribbonPanel1.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.ribbonPanel1.TabIndex = 1;
this.ribbonPanel1.Visible = false;
//
// ribbonBar1
//
@@ -290,7 +291,7 @@
this.btnReset});
this.ribbonBar1.Location = new System.Drawing.Point(3, 0);
this.ribbonBar1.Name = "ribbonBar1";
this.ribbonBar1.Size = new System.Drawing.Size(458, 95);
this.ribbonBar1.Size = new System.Drawing.Size(384, 98);
this.ribbonBar1.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.ribbonBar1.TabIndex = 0;
this.ribbonBar1.Text = "设备操作控制";
@@ -342,7 +343,7 @@
this.applicationButton1.Image = ((System.Drawing.Image)(resources.GetObject("applicationButton1.Image")));
this.applicationButton1.ImageFixedSize = new System.Drawing.Size(16, 16);
this.applicationButton1.ImagePaddingHorizontal = 0;
this.applicationButton1.ImagePaddingVertical = 0;
this.applicationButton1.ImagePaddingVertical = 1;
this.applicationButton1.Name = "applicationButton1";
this.applicationButton1.ShowSubItems = false;
this.applicationButton1.SubItems.AddRange(new DevComponents.DotNetBar.BaseItem[] {
@@ -548,6 +549,7 @@
//
// ribStart
//
this.ribStart.Checked = true;
this.ribStart.Name = "ribStart";
this.ribStart.Panel = this.ribbonPanel1;
this.ribStart.Text = "开始";
@@ -560,7 +562,6 @@
//
// ribJob
//
this.ribJob.Checked = true;
this.ribJob.Name = "ribJob";
this.ribJob.Panel = this.ribbonPanel3;
this.ribJob.Text = "流程";
@@ -576,8 +577,8 @@
//
// styleManager1
//
this.styleManager1.ManagerStyle = DevComponents.DotNetBar.eStyle.Office2010Blue;
this.styleManager1.MetroColorParameters = new DevComponents.DotNetBar.Metro.ColorTables.MetroColorGeneratorParameters(System.Drawing.Color.White, System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(87)))), ((int)(((byte)(154))))));
this.styleManager1.ManagerStyle = DevComponents.DotNetBar.eStyle.Metro;
this.styleManager1.MetroColorParameters = new DevComponents.DotNetBar.Metro.ColorTables.MetroColorGeneratorParameters(System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(239)))), ((int)(((byte)(242))))), System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(122)))), ((int)(((byte)(204))))));
//
// imageList1
//
@@ -594,53 +595,53 @@
| System.Windows.Forms.AnchorStyles.Right)));
this.dockPanel1.Location = new System.Drawing.Point(0, 154);
this.dockPanel1.Name = "dockPanel1";
this.dockPanel1.Size = new System.Drawing.Size(1137, 459);
dockPanelGradient16.EndColor = System.Drawing.SystemColors.ControlLight;
dockPanelGradient16.StartColor = System.Drawing.SystemColors.ControlLight;
autoHideStripSkin6.DockStripGradient = dockPanelGradient16;
tabGradient36.EndColor = System.Drawing.SystemColors.Control;
tabGradient36.StartColor = System.Drawing.SystemColors.Control;
tabGradient36.TextColor = System.Drawing.SystemColors.ControlDarkDark;
autoHideStripSkin6.TabGradient = tabGradient36;
autoHideStripSkin6.TextFont = new System.Drawing.Font("Microsoft YaHei UI", 9F);
dockPanelSkin6.AutoHideStripSkin = autoHideStripSkin6;
tabGradient37.EndColor = System.Drawing.SystemColors.ControlLightLight;
tabGradient37.StartColor = System.Drawing.SystemColors.ControlLightLight;
tabGradient37.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripGradient6.ActiveTabGradient = tabGradient37;
dockPanelGradient17.EndColor = System.Drawing.SystemColors.Control;
dockPanelGradient17.StartColor = System.Drawing.SystemColors.Control;
dockPaneStripGradient6.DockStripGradient = dockPanelGradient17;
tabGradient38.EndColor = System.Drawing.SystemColors.ControlLight;
tabGradient38.StartColor = System.Drawing.SystemColors.ControlLight;
tabGradient38.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripGradient6.InactiveTabGradient = tabGradient38;
dockPaneStripSkin6.DocumentGradient = dockPaneStripGradient6;
dockPaneStripSkin6.TextFont = new System.Drawing.Font("Microsoft YaHei UI", 9F);
tabGradient39.EndColor = System.Drawing.SystemColors.ActiveCaption;
tabGradient39.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
tabGradient39.StartColor = System.Drawing.SystemColors.GradientActiveCaption;
tabGradient39.TextColor = System.Drawing.SystemColors.ActiveCaptionText;
dockPaneStripToolWindowGradient6.ActiveCaptionGradient = tabGradient39;
tabGradient40.EndColor = System.Drawing.SystemColors.Control;
tabGradient40.StartColor = System.Drawing.SystemColors.Control;
tabGradient40.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripToolWindowGradient6.ActiveTabGradient = tabGradient40;
dockPanelGradient18.EndColor = System.Drawing.SystemColors.ControlLight;
dockPanelGradient18.StartColor = System.Drawing.SystemColors.ControlLight;
dockPaneStripToolWindowGradient6.DockStripGradient = dockPanelGradient18;
tabGradient41.EndColor = System.Drawing.SystemColors.InactiveCaption;
tabGradient41.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
tabGradient41.StartColor = System.Drawing.SystemColors.GradientInactiveCaption;
tabGradient41.TextColor = System.Drawing.SystemColors.InactiveCaptionText;
dockPaneStripToolWindowGradient6.InactiveCaptionGradient = tabGradient41;
tabGradient42.EndColor = System.Drawing.Color.Transparent;
tabGradient42.StartColor = System.Drawing.Color.Transparent;
tabGradient42.TextColor = System.Drawing.SystemColors.ControlDarkDark;
dockPaneStripToolWindowGradient6.InactiveTabGradient = tabGradient42;
dockPaneStripSkin6.ToolWindowGradient = dockPaneStripToolWindowGradient6;
dockPanelSkin6.DockPaneStripSkin = dockPaneStripSkin6;
this.dockPanel1.Skin = dockPanelSkin6;
this.dockPanel1.Size = new System.Drawing.Size(1363, 592);
dockPanelGradient4.EndColor = System.Drawing.SystemColors.ControlLight;
dockPanelGradient4.StartColor = System.Drawing.SystemColors.ControlLight;
autoHideStripSkin2.DockStripGradient = dockPanelGradient4;
tabGradient8.EndColor = System.Drawing.SystemColors.Control;
tabGradient8.StartColor = System.Drawing.SystemColors.Control;
tabGradient8.TextColor = System.Drawing.SystemColors.ControlDarkDark;
autoHideStripSkin2.TabGradient = tabGradient8;
autoHideStripSkin2.TextFont = new System.Drawing.Font("Microsoft YaHei UI", 9F);
dockPanelSkin2.AutoHideStripSkin = autoHideStripSkin2;
tabGradient9.EndColor = System.Drawing.SystemColors.ControlLightLight;
tabGradient9.StartColor = System.Drawing.SystemColors.ControlLightLight;
tabGradient9.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripGradient2.ActiveTabGradient = tabGradient9;
dockPanelGradient5.EndColor = System.Drawing.SystemColors.Control;
dockPanelGradient5.StartColor = System.Drawing.SystemColors.Control;
dockPaneStripGradient2.DockStripGradient = dockPanelGradient5;
tabGradient10.EndColor = System.Drawing.SystemColors.ControlLight;
tabGradient10.StartColor = System.Drawing.SystemColors.ControlLight;
tabGradient10.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripGradient2.InactiveTabGradient = tabGradient10;
dockPaneStripSkin2.DocumentGradient = dockPaneStripGradient2;
dockPaneStripSkin2.TextFont = new System.Drawing.Font("Microsoft YaHei UI", 9F);
tabGradient11.EndColor = System.Drawing.SystemColors.ActiveCaption;
tabGradient11.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
tabGradient11.StartColor = System.Drawing.SystemColors.GradientActiveCaption;
tabGradient11.TextColor = System.Drawing.SystemColors.ActiveCaptionText;
dockPaneStripToolWindowGradient2.ActiveCaptionGradient = tabGradient11;
tabGradient12.EndColor = System.Drawing.SystemColors.Control;
tabGradient12.StartColor = System.Drawing.SystemColors.Control;
tabGradient12.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripToolWindowGradient2.ActiveTabGradient = tabGradient12;
dockPanelGradient6.EndColor = System.Drawing.SystemColors.ControlLight;
dockPanelGradient6.StartColor = System.Drawing.SystemColors.ControlLight;
dockPaneStripToolWindowGradient2.DockStripGradient = dockPanelGradient6;
tabGradient13.EndColor = System.Drawing.SystemColors.InactiveCaption;
tabGradient13.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
tabGradient13.StartColor = System.Drawing.SystemColors.GradientInactiveCaption;
tabGradient13.TextColor = System.Drawing.SystemColors.InactiveCaptionText;
dockPaneStripToolWindowGradient2.InactiveCaptionGradient = tabGradient13;
tabGradient14.EndColor = System.Drawing.Color.Transparent;
tabGradient14.StartColor = System.Drawing.Color.Transparent;
tabGradient14.TextColor = System.Drawing.SystemColors.ControlDarkDark;
dockPaneStripToolWindowGradient2.InactiveTabGradient = tabGradient14;
dockPaneStripSkin2.ToolWindowGradient = dockPaneStripToolWindowGradient2;
dockPanelSkin2.DockPaneStripSkin = dockPaneStripSkin2;
this.dockPanel1.Skin = dockPanelSkin2;
this.dockPanel1.TabIndex = 1;
//
// panel1
@@ -651,17 +652,28 @@
this.panel1.Controls.Add(this.label1);
this.panel1.Controls.Add(this.lbPermission);
this.panel1.Controls.Add(this.lbTime);
this.panel1.Location = new System.Drawing.Point(0, 612);
this.panel1.Location = new System.Drawing.Point(0, 745);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(1140, 22);
this.panel1.Size = new System.Drawing.Size(1366, 22);
this.panel1.TabIndex = 4;
//
// label1
//
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("微软雅黑", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(1139, 4);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(50, 16);
this.label1.TabIndex = 1;
this.label1.Text = "当前登录:";
//
// lbPermission
//
this.lbPermission.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.lbPermission.AutoSize = true;
this.lbPermission.Font = new System.Drawing.Font("微软雅黑", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lbPermission.Location = new System.Drawing.Point(966, 4);
this.lbPermission.Location = new System.Drawing.Point(1192, 4);
this.lbPermission.Name = "lbPermission";
this.lbPermission.Size = new System.Drawing.Size(38, 16);
this.lbPermission.TabIndex = 1;
@@ -672,23 +684,12 @@
this.lbTime.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.lbTime.AutoSize = true;
this.lbTime.Font = new System.Drawing.Font("微软雅黑", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lbTime.Location = new System.Drawing.Point(1019, 4);
this.lbTime.Location = new System.Drawing.Point(1245, 4);
this.lbTime.Name = "lbTime";
this.lbTime.Size = new System.Drawing.Size(41, 16);
this.lbTime.TabIndex = 2;
this.lbTime.Text = "lbTime";
//
// label1
//
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("微软雅黑", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(913, 4);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(50, 16);
this.label1.TabIndex = 1;
this.label1.Text = "当前登录:";
//
// timer1
//
this.timer1.Enabled = true;
@@ -699,7 +700,7 @@
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.ControlDark;
this.ClientSize = new System.Drawing.Size(1140, 635);
this.ClientSize = new System.Drawing.Size(1366, 768);
this.Controls.Add(this.panel1);
this.Controls.Add(this.dockPanel1);
this.Controls.Add(this.ribbonControl1);

View File

@@ -28,6 +28,7 @@ namespace VisionEdit
InitializeComponent();
m_DockPath = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "DockPanel.config");
InitDockPanel();
_instance = this;
}
/// <summary>
/// 窗体对象实例
@@ -55,7 +56,7 @@ namespace VisionEdit
myFormImageWindow.Show(this.dockPanel1, DockState.Document);
myFormLog.Show(this.dockPanel1, DockState.DockBottom);
// 初始化JOB
InitJob();
CreateInitJob();
}
#region Dockpanel
@@ -116,7 +117,7 @@ namespace VisionEdit
this.lbTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
public void InitJob()
public void CreateInitJob()
{
// 初始化加载默认Job
myFormJobManage.tabControl1.TabPages.Add("defultJob");
@@ -124,7 +125,39 @@ namespace VisionEdit
GlobalParams.myVisionJob = new VisionJob(GlobalParams.myJobTreeView, myFormLog, "defultJob");
myFormJobManage.tabControl1.TabPages[0].Controls.Add(GlobalParams.myJobTreeView);
GlobalParams.myJobTreeView.Dock = DockStyle.Fill;
GlobalParams.myJobTreeView.ImageList = myFormToolBox.imageList1;
GlobalParams.myJobTreeView.ImageList = myFormToolBox.imageListTool;
GlobalParams.myJobTreeView.Font = new Font("微软雅黑", 9, FontStyle.Bold);
GlobalParams.myJobTreeView.Scrollable = true;
GlobalParams.myJobTreeView.ItemHeight = 20;
GlobalParams.myJobTreeView.ShowLines = false;
GlobalParams.myJobTreeView.AllowDrop = true;
//myTreeView.ImageList = Job.imageList;
// 在窗体UI出现变化时更新画线
GlobalParams.myJobTreeView.AfterSelect += GlobalParams.myVisionJob.tvw_job_AfterSelect;
GlobalParams.myJobTreeView.ChangeUICues += GlobalParams.myVisionJob.MyJobTreeView_ChangeUICues;
myFormJobManage.SizeChanged += GlobalParams.myVisionJob.tbc_jobs_SelectedIndexChanged;
//节点间拖拽
GlobalParams.myJobTreeView.ItemDrag += new ItemDragEventHandler(GlobalParams.myVisionJob.TvwJob_ItemDrag);
GlobalParams.myJobTreeView.DragEnter += new DragEventHandler(GlobalParams.myVisionJob.TvwJob_DragEnter);
GlobalParams.myJobTreeView.DragDrop += new DragEventHandler(GlobalParams.myVisionJob.TvwJob_DragDrop);
//以下事件为画线事件
GlobalParams.myJobTreeView.MouseMove += GlobalParams.myVisionJob.DrawLineWithoutRefresh;
GlobalParams.myJobTreeView.AfterExpand += GlobalParams.myVisionJob.Draw_Line;
GlobalParams.myJobTreeView.AfterCollapse += GlobalParams.myVisionJob.Draw_Line;
Application.DoEvents();
//默认添加ImageAcquistionTool工具
myFormToolBox.Add_Tool(ToolType.HalconTool);
//默认选中第一个工具节点
GlobalParams.myJobTreeView.SelectedNode = GlobalParams.myJobTreeView.Nodes[0];
//展开已默认添加的工具的输入输出项
GlobalParams.myJobTreeView.ExpandAll();
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,90 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HalconDotNet;
namespace VisionEdit
{
/// <summary>
/// XYU结果
/// </summary>
[Serializable]
internal class PosXYU
{
internal double X;
internal double Y;
internal double U;
/// <summary>
/// 将XYU类型转化成格式化字符串
/// </summary>
/// <returns></returns>
internal string ToFormatStr()
{
return (X >= 0 ? "+" + X.ToString("0000.000") : X.ToString("0000.000")) + "," + (Y >= 0 ? "+" + Y.ToString("0000.000") : Y.ToString("0000.000")) + "," + (U >= 0 ? "+" + U.ToString("0000.000") : U.ToString("0000.000"));
}
internal string ToShowTip()
{
return X.ToString() + " | " + Y.ToString() + " | " + U.ToString();
}
}
[Serializable]
internal class Line
{
internal Point StartPoint;
internal Point EndPoint;
internal string ToShowTip()
{
return StartPoint.Row.ToString() + " | " + StartPoint.Col.ToString() + " | " + EndPoint.Row.ToString() + " | " + EndPoint.Col.ToString();
}
private HTuple _angle;
public double Angle
{
get
{
HOperatorSet.AngleLx(StartPoint.Row, StartPoint.Col, EndPoint.Row, EndPoint.Col, out _angle);
return _angle;
}
}
}
[Serializable]
internal class Point
{
internal Point() { }
internal Point(double x, double y)
{
this.Row = x;
this.Col = y;
}
internal double Row;
internal double Col;
/// <summary>
/// 重写 -
/// </summary>
/// <param name="p1">点1</param>
/// <param name="p2">点2</param>
/// <returns></returns>
public static Point operator -(Point p1, Point p2)
{
return new Point(p1.Row - p2.Row, p1.Col - p2.Col);
}
/// <summary>
/// 获得点矢量长度
/// </summary>
internal double GetDistance
{
get
{
return Math.Sqrt(Row * Row + Col * Col);
}
}
internal string ToShowTip()
{
return Row.ToString() + " | " + Col.ToString();
}
}
}

View File

@@ -8,22 +8,18 @@ namespace VisionEdit
{
public enum ToolType:int
{
None,
Job,
HalconToolInterface,
HalconTool,
SDK_Basler,
SDK_Congex,
SDK_PointGray,
SDK_IMAVision,
SDK_MindVision,
SDK_HIKVision,
BlobAnalyse,
FindLine,
FindCircle,
ShapeMatch,
EyeHandCalibration,
CircleCalibration,
SubImage,
BlobAnalyse,
FindLine,
FindCircle,
CreateROI,
CreatePosition,
CoorTrans,
@@ -43,6 +39,7 @@ namespace VisionEdit
Logic,
Output,
CreateLine,
None
}
public enum DataType
@@ -100,4 +97,6 @@ namespace VisionEdit
,
,
}
}

View File

@@ -37,7 +37,10 @@ namespace VisionEdit
/// 工具输出字典集合
/// </summary>
public List<ToolIO> toolOutput { get; set; }
/// <summary>
/// 工具作用描述
/// </summary>
public string toolDescription { get; set; }
public IToolInfo()
{
enable = true;

View File

@@ -42,6 +42,10 @@ namespace VisionEdit
/// </summary>
public double recordElapseTime { get; set; }
/// <summary>
/// 编辑节点前节点文本,用于修改工具名称
/// </summary>
public string nodeTextBeforeEdit { get; set; } = string.Empty;
/// <summary>
/// 标准图像字典,用于存储标准图像路径和图像对象
/// </summary>
public Dictionary<string, HObject> D_standardImage { get; set; } = new Dictionary<string, HObject>();

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace VisionEdit
{
@@ -10,7 +11,14 @@ namespace VisionEdit
{
public static void CreateNewJob()
{
try
{
}
catch
{
}
}
}
}

View File

@@ -0,0 +1,146 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HalconDotNet;
namespace VisionEdit.ToolLib
{
public class FindLine
{
/// <summary>
/// 输入图像
/// </summary>
internal HObject inputImage;
/// <summary>
/// 运行工具时是否刷新输入图像
/// </summary>
internal bool updateImage = false;
/// <summary>
/// 输入姿态
/// </summary>
internal PosXYU inputPose = new PosXYU();
/// <summary>
/// 制作模板时的输入位姿
/// </summary>
internal PosXYU templatePose = new PosXYU();
/// <summary>
/// 期望线起点行坐标
/// </summary>
internal HTuple expectLineStartRow = 200;
/// <summary>
/// 卡尺
/// </summary>
internal HObject contours;
/// <summary>
/// 期望线起点列坐标
/// </summary>
internal HTuple expectLineStartCol = 200;
/// <summary>
/// 期望线终点行坐标
/// </summary>
internal HTuple expectLineEndRow = 200;
/// <summary>
/// 期望线终点列坐标
/// </summary>
internal HTuple expectLineEndCol = 600;
/// <summary>
/// 找边极性,从明到暗或从暗到明
/// </summary>
internal string polarity = "negative";
/// <summary>
/// 卡尺数量
/// </summary>
internal int cliperNum = 20;
/// <summary>
/// 卡尺高
/// </summary>
internal int length = 80;
/// <summary>
/// 边阈值
/// </summary>
internal int threshold = 30;
/// <summary>
/// 选择所查找到的边
/// </summary>
internal string edgeSelect = "all";
/// <summary>
/// 分数阈值
/// </summary>
internal double minScore = 0.5;
/// <summary>
/// 找到的线段
/// </summary>
internal Line resultLine = new Line();
/// <summary>
/// 新的跟随姿态变化后的预期线信息
/// </summary>
HTuple newExpectLineStartRow = new HTuple(200), newExpectLineStartCol = new HTuple(200), newExpectLineEndRow = new HTuple(200), newExpectLineEndCol = new HTuple(600);
/// <summary>
/// 查找到的线的起点行坐标
/// </summary>
private HTuple _resultLineStartRow = 0;
internal HTuple ResultLineStartRow
{
get
{
_resultLineStartRow = Math.Round((double)_resultLineStartRow, 3);
return _resultLineStartRow;
}
set { _resultLineStartRow = value; }
}
/// <summary>
/// 查找到的线的起点列坐标
/// </summary>
private HTuple _resultLineStartCol = 0;
internal HTuple ResultLineStartCol
{
get
{
_resultLineStartCol = Math.Round((double)_resultLineStartCol, 3);
return _resultLineStartCol;
}
set { _resultLineStartCol = value; }
}
/// <summary>
/// 查找到的线的终点行坐标
/// </summary>
private HTuple _resultLineEndRow = 0;
internal HTuple ResultLineEndRow
{
get
{
_resultLineEndRow = Math.Round((double)_resultLineEndRow, 3);
return _resultLineEndRow;
}
set { _resultLineEndRow = value; }
}
/// <summary>
/// 查找到的线的终点列坐标
/// </summary>
private HTuple _resultLineEndCol = 0;
internal HTuple ResultLineEndCol
{
get
{
_resultLineEndCol = Math.Round((double)_resultLineEndCol, 3);
return _resultLineEndCol;
}
set { _resultLineEndCol = value; }
}
/// <summary>
/// 查找到线的方向
/// </summary>
private HTuple _angle = 0;
internal HTuple Angle
{
get
{
_angle = Math.Round((double)_angle, 3);
return _angle;
}
set { _angle = value; }
}
}
}

View File

@@ -86,6 +86,7 @@
<DependentUpon>FormMain.cs</DependentUpon>
</Compile>
<Compile Include="GlobalParams.cs" />
<Compile Include="Interface\DataStruct.cs" />
<Compile Include="Interface\EnumList.cs" />
<Compile Include="Interface\ToolBase.cs" />
<Compile Include="OperateJob.cs" />
@@ -93,6 +94,7 @@
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Interface\VisionJobInterface.cs" />
<Compile Include="ToolLib\FindLine.cs" />
<Compile Include="ToolLib\HalconTool.cs" />
<Compile Include="VisionJob.cs" />
<Compile Include="VisionTool\VisionToolFactory.cs" />
@@ -108,6 +110,7 @@
</EmbeddedResource>
<EmbeddedResource Include="FormLib\FormToolBox.resx">
<DependentUpon>FormToolBox.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="FormMain.resx">
<DependentUpon>FormMain.cs</DependentUpon>

View File

@@ -14,6 +14,8 @@ namespace VisionEdit
{
public class VisionJob : IVisionJob
{
public delegate void CreateLineDelegate(TreeView inputTreeView, TreeNode startNode, TreeNode endNode);
CreateLineDelegate createLineDelegateFun;
public TreeView tvwOnWorkJob = new TreeView();
FormLog myFormLog = null;
@@ -22,6 +24,7 @@ namespace VisionEdit
tvwOnWorkJob = inputTreeView;
this.myFormLog = inputFormLog;
this.JobName = jobName;
createLineDelegateFun = new CreateLineDelegate(CreateLine);
}
/// <summary>
@@ -29,7 +32,7 @@ namespace VisionEdit
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
internal void TvwJobItemDrag(object sender, ItemDragEventArgs e)//左键拖动
internal void TvwJob_ItemDrag(object sender, ItemDragEventArgs e)//左键拖动
{
try
{
@@ -88,7 +91,7 @@ namespace VisionEdit
//获得拖放中的节点
TreeNode moveNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
//根据鼠标坐标确定要移动到的目标节点
Point pt;
System.Drawing.Point pt;
TreeNode targeNode; // 目标节点
pt = ((TreeView)(sender)).PointToClient(new System.Drawing.Point(e.X, e.Y));
targeNode = tvwOnWorkJob.GetNodeAt(pt);
@@ -132,7 +135,7 @@ namespace VisionEdit
{
if (L_toolList[i].toolName == moveNode.Text)
{
SwapDataFun(L_toolList, i, targeNode.Index);
SwapDataFun(L_toolList, i, targeNode.Parent.Index);
break;
}
}
@@ -175,7 +178,7 @@ namespace VisionEdit
else //第一次连接源就需要添加到输入输出集合
D_itemAndSource.Add(targeNode, moveNode);
GetToolInfoByToolName(this.JobName, targeNode.Parent.Text).GetInput(input.Substring(3)).value = "《- " + moveNode.Parent.Text + " . " + moveNode.Text.Substring(3);
targeNode.Text = input + "《- " + moveNode.Parent.Text + " . " + moveNode.Text.Substring(3);
targeNode.Text = input + "《- " + moveNode.Parent.Text + ". " + moveNode.Text.Substring(3);
DrawLine();
//移除拖放的节点
@@ -189,7 +192,7 @@ namespace VisionEdit
}
catch (Exception ex)
{
myFormLog.ShowLog("释放节点出错,原因: " + ex.Message);
myFormLog.ShowLog("释放节点出错,原因: " + ex.Message + ex.StackTrace.ToString());
}
}
@@ -218,14 +221,15 @@ namespace VisionEdit
foreach (KeyValuePair<TreeNode, TreeNode> item in D_itemAndSource)
{
CreateLine(tree, item.Key, item.Value);
// 将此划线线程委托到JOB管理界面
FormJobManage.Instance.Invoke(createLineDelegateFun, new object[] { tree, item.Key, item.Value });
}
Application.DoEvents();
tvwOnWorkJob.MouseWheel -= new MouseEventHandler(CancelUpDowm_MouseWheel);
isDrawing = false;
});
th.IsBackground = true;
th.ApartmentState = ApartmentState.STA; //此处要加一行,否则画线时会报错
//th.ApartmentState = ApartmentState.STA;
th.Start();
}
}
@@ -243,6 +247,32 @@ namespace VisionEdit
}
}
#region 线
internal void tvw_job_AfterSelect(object sender, TreeViewEventArgs e)
{
nodeTextBeforeEdit = tvwOnWorkJob.SelectedNode.Text;
}
internal void Draw_Line(object sender, TreeViewEventArgs e)
{
tvwOnWorkJob.Refresh();
DrawLine();
}
internal void tbc_jobs_SelectedIndexChanged(object sender, EventArgs e)
{
tvwOnWorkJob.Refresh();
DrawLine();
}
public void DrawLineWithoutRefresh(object sender, MouseEventArgs e)
{
tvwOnWorkJob.Update();
DrawLine();
}
internal void MyJobTreeView_ChangeUICues(object sender, UICuesEventArgs e)
{
tvwOnWorkJob.Update();
DrawLine();
}
#endregion
/// <summary>
/// 画Treeview控件两个节点之间的连线
@@ -364,6 +394,7 @@ namespace VisionEdit
catch { }
}
/// <summary>
/// 交换List中的两个位置的值
/// </summary>

View File

@@ -43,6 +43,14 @@ namespace VisionEdit
}
return null;
}
public static IToolInfo CreateToolVision(ToolType animalType)
{
if (animalTypeDic.ContainsKey(animalType))
{
return (IToolInfo)Activator.CreateInstance(animalTypeDic[animalType]);
}
return null;
}
}
//自定义Attribute

View File

@@ -11,25 +11,58 @@ using VisionEdit.ToolLib;
namespace VisionEdit.VisionTool
{
[VisionToolAttribute(ToolType.HalconToolInterface)]
[VisionToolAttribute(ToolType.HalconTool)]
public class HalconToolInterface : IToolInfo
{
// 必添加输出项
ToolIO outputImage = new ToolIO("OutputImage", null, DataType.Image);
/// <summary>
/// 获取工具的所有信息
/// </summary>
/// <param name="生成的工具名称"></param>
public HalconToolInterface(string toolName)
{
enable = true;
toolType = ToolType.HalconToolInterface;
toolType = ToolType.HalconTool;
this.toolName = toolName;
tool = new HalconTool();
toolInput = new List<ToolIO>();
toolOutput = new List<ToolIO>() { outputImage };
}
/// <summary>
/// 只获取选择工具的描述信息
/// </summary>
public HalconToolInterface()
{
toolDescription = "Halcon采集图像接口,可直接连接网口、USB等相机";
}
}
[VisionToolAttribute(ToolType.FindLine)]
public class FindLineToolInterface : IToolInfo
{
ToolIO inputImage = new ToolIO("InputImage", null, DataType.Image);
ToolIO outputXld = new ToolIO("outputXld", null, DataType.Line);
ToolIO startPointRow = new ToolIO("StartPointRow", null, DataType.Point);
ToolIO startPointColumn = new ToolIO("StartPointRow", null, DataType.Point);
ToolIO endPointRow = new ToolIO("EndPointRow", null, DataType.Point);
ToolIO endPointColumn = new ToolIO("EndPointColumn", null, DataType.Point);
public FindLineToolInterface(string toolName)
{
enable = true;
toolType = ToolType.FindLine;
this.toolName = toolName;
tool = new FindLine();
toolInput = new List<ToolIO>() { inputImage };
toolOutput = new List<ToolIO>() { outputXld, startPointRow, startPointColumn, endPointRow, endPointColumn };
}
/// <summary>
/// 只获取选择工具的描述信息
/// </summary>
public FindLineToolInterface()
{
toolDescription = "找线工具";
}
}
[VisionToolAttribute(ToolType.BlobAnalyse)]
public class BlobAnalyseToolInterface : IToolInfo

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

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

Binary file not shown.

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

File diff suppressed because it is too large Load Diff

View File

@@ -1,21 +0,0 @@
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\VisionEdit.exe.config
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\VisionEdit.exe
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\VisionEdit.pdb
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\DevComponents.DotNetBar2.dll
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\halcondotnet.dll
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\HalconWindowTest.exe
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\WeifenLuo.WinFormsUI.Docking.dll
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\HalconWindowTest.pdb
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\DevComponents.DotNetBar2.xml
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\halcondotnet.xml
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\WeifenLuo.WinFormsUI.Docking.pdb
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.csprojResolveAssemblyReference.cache
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormLib.FormImageWindow.resources
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormLib.FormJobManage.resources
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormLib.FormLog.resources
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormLib.FormToolBox.resources
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormMain.resources
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.Properties.Resources.resources
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.csproj.GenerateResource.Cache
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.exe
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.pdb

Binary file not shown.

Binary file not shown.