├── 新建文件夹
└── 新建位图图像.bmp
├── Src
├── MDK2VC
│ ├── Flash.ico
│ ├── Help.jpg
│ ├── M2V
│ │ ├── UI
│ │ │ ├── FormHelper.cs
│ │ │ ├── FormHelper.Designer.cs
│ │ │ ├── FormHelper.resx
│ │ │ ├── FormMain.cs
│ │ │ ├── FormMain.Designer.cs
│ │ │ └── FormMain.resx
│ │ ├── CoreManager.cs
│ │ ├── Xml
│ │ │ ├── To
│ │ │ │ ├── ToVC2013.cs
│ │ │ │ ├── ToVC2017.cs
│ │ │ │ ├── ToVC2019.cs
│ │ │ │ ├── ToVC2022.cs
│ │ │ │ └── ToVCBase.cs
│ │ │ ├── Interface
│ │ │ │ ├── IFrom.cs
│ │ │ │ └── IToVC.cs
│ │ │ ├── BTree.cs
│ │ │ └── From
│ │ │ │ ├── Fromuvprojx.cs
│ │ │ │ ├── Fromuvproj.cs
│ │ │ │ ├── Fromcyprj.cs
│ │ │ │ └── FromQT5.cs
│ │ ├── Config
│ │ │ └── MDK2VCConfig.cs
│ │ └── SysConfig.cs
│ ├── Properties
│ │ ├── Settings.settings
│ │ ├── AssemblyInfo.cs
│ │ ├── Settings.Designer.cs
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── Program.cs
│ ├── app.config
│ └── MDK2VC.csproj
├── DLL
│ └── NewLife.Core.dll
└── MDK2VC.sln
├── .gitignore
└── Readme.MD
/新建文件夹/新建位图图像.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/armku/MDK2VC/HEAD/新建文件夹/新建位图图像.bmp
--------------------------------------------------------------------------------
/Src/MDK2VC/Flash.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/armku/MDK2VC/HEAD/Src/MDK2VC/Flash.ico
--------------------------------------------------------------------------------
/Src/MDK2VC/Help.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/armku/MDK2VC/HEAD/Src/MDK2VC/Help.jpg
--------------------------------------------------------------------------------
/Src/DLL/NewLife.Core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/armku/MDK2VC/HEAD/Src/DLL/NewLife.Core.dll
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | # 此 .gitignore 文件已由 Microsoft(R) Visual Studio 自动创建。
3 | ################################################################################
4 |
5 | .vs
6 | *.exe
7 | *.rar
8 | *.config
9 | *.pdb
10 | /Src/.vs/MDK2VC/v15
11 | /Src/MDK2VC/obj/Debug
12 | /Src/.vs
13 | /Bin/NewLife.Core.dll
14 | /Bin/NewLife.Core.xml
15 | /Bin/Log
16 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/UI/FormHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace MDK2VC.M2V.UI
5 | {
6 | public partial class FormHelper : Form
7 | {
8 | public FormHelper()
9 | {
10 | InitializeComponent();
11 | }
12 |
13 | private void FormHelper_Load(object sender, EventArgs e)
14 | {
15 | pictureBox1.Focus();
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Src/MDK2VC/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Src/MDK2VC/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace MDK2VC
5 | {
6 | static class Program
7 | {
8 | ///
9 | /// 应用程序的主入口点。
10 | ///
11 | [STAThread]
12 | static void Main()
13 | {
14 | Application.EnableVisualStyles();
15 | Application.SetCompatibleTextRenderingDefault(false);
16 | Application.Run(new FormMain());
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/CoreManager.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Win32;
2 |
3 | namespace MDK2VC.M2V.Xml
4 | {
5 | public class CoreManager
6 | {
7 | ///
8 | /// 来源
9 | ///
10 | public IFrom From { get; set; }
11 | ///
12 | /// 目标
13 | ///
14 | public IToVC To
15 | { get; set; }
16 | ///
17 | /// 获取Keil路径
18 | ///
19 | ///
20 | static string GetKeil()
21 | {
22 | var reg = Registry.LocalMachine.OpenSubKey("Software\\Keil\\Products\\MDK");
23 | if (reg == null) return null;
24 |
25 | return reg.GetValue("Path") + "";
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Readme.MD:
--------------------------------------------------------------------------------
1 | #MDK 工程 转换为VC2022、VC2019、VC2017工程
2 |
3 | ##.net4.0 C#开发
4 |
5 | ##支持MDK4 MDK5
6 |
7 | | 项目 | 年份 | 状态 | 语言环境 | 说明 |
8 | | :-----------------------------------------------------: | :--: | :----: | :------: | :------------------------------------------------------: |
9 | | [MDK2VC](https://github.com/armku/MDK2VC) | 2018 | 维护中 | C# | MDK工程转VC2017、VC2019工程 |
10 | | [MDKTimeHelper](https://github.com/armku/MDKTimeHelper) | 2018 | 维护中 | c# | mdk工程助手,时间字符串(yyyy-MM-dd HH:mm:ss)转为当前时间 |
11 | | [HelperComm](https://github.com/armku/HelperComm) | 2017 | 维护中 | c# | 串口调试助手 |
12 |
13 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/Xml/To/ToVC2013.cs:
--------------------------------------------------------------------------------
1 | using System.Text;
2 |
3 | namespace MDK2VC.M2V.Xml
4 | {
5 | public class ToVC2013 : ToVCBase, IToVC
6 | {
7 | public void Createsln(SysConfig cfg)
8 | {
9 | var builder = new StringBuilder();
10 |
11 | builder.AppendLine("Microsoft Visual Studio Solution File, Format Version 12.00");
12 | builder.AppendLine("# Visual Studio 2013");
13 | builder.AppendLine("VisualStudioVersion = 12.0.21005.1");
14 | builder.AppendLine("MinimumVisualStudioVersion = 10.0.40219.1");
15 |
16 | CreateslnBase(cfg, builder.ToString());
17 | }
18 | public void Createvcxproj(SysConfig cfg)
19 | {
20 | CreatevcxprojBase(cfg, 141);
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/Xml/To/ToVC2017.cs:
--------------------------------------------------------------------------------
1 | using System.Text;
2 |
3 | namespace MDK2VC.M2V.Xml
4 | {
5 | public class ToVC2017 : ToVCBase, IToVC
6 | {
7 | public void Createsln(SysConfig cfg)
8 | {
9 | var builder = new StringBuilder();
10 |
11 | builder.AppendLine("Microsoft Visual Studio Solution File, Format Version 12.00");
12 | builder.AppendLine("# Visual Studio 15");
13 | builder.AppendLine("VisualStudioVersion = 15.0.35213.121");
14 | builder.AppendLine("MinimumVisualStudioVersion = 10.0.40219.1");
15 |
16 | CreateslnBase(cfg, builder.ToString());
17 | }
18 | public void Createvcxproj(SysConfig cfg)
19 | {
20 | CreatevcxprojBase(cfg, 141);
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/Xml/To/ToVC2019.cs:
--------------------------------------------------------------------------------
1 | using System.Text;
2 |
3 | namespace MDK2VC.M2V.Xml
4 | {
5 | public class ToVC2019 : ToVCBase, IToVC
6 | {
7 | public void Createsln(SysConfig cfg)
8 | {
9 | var builder = new StringBuilder();
10 | builder.AppendLine("Microsoft Visual Studio Solution File, Format Version 12.00");
11 | builder.AppendLine("# Visual Studio Version 16");
12 | builder.AppendLine("VisualStudioVersion = 16.0.29201.188");
13 | builder.AppendLine("MinimumVisualStudioVersion = 10.0.40219.1");
14 |
15 | CreateslnBase(cfg, builder.ToString());
16 | }
17 | public void Createvcxproj(SysConfig cfg)
18 | {
19 | CreatevcxprojBase(cfg, 142);
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/Xml/To/ToVC2022.cs:
--------------------------------------------------------------------------------
1 | using System.Text;
2 |
3 | namespace MDK2VC.M2V.Xml
4 | {
5 | public class ToVC2022 : ToVCBase, IToVC
6 | {
7 | public void Createsln(SysConfig cfg)
8 | {
9 | var builder = new StringBuilder();
10 | builder.AppendLine("Microsoft Visual Studio Solution File, Format Version 12.00");
11 | builder.AppendLine("# Visual Studio Version 16");
12 | builder.AppendLine("VisualStudioVersion = 16.0.29201.188");
13 | builder.AppendLine("MinimumVisualStudioVersion = 10.0.40219.1");
14 |
15 | CreateslnBase(cfg, builder.ToString());
16 | }
17 | public void Createvcxproj(SysConfig cfg)
18 | {
19 | CreatevcxprojBase(cfg, 143);
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Src/MDK2VC/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Src/MDK2VC/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // 有关程序集的一般信息由以下
6 | // 控制。更改这些特性值可修改
7 | // 与程序集关联的信息。
8 | [assembly: AssemblyTitle("MDK2VC")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("MDK2VC")]
13 | [assembly: AssemblyCopyright("Copyright © 2018-2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // 将 ComVisible 设置为 false 会使此程序集中的类型
18 | //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
19 | //请将此类型的 ComVisible 特性设置为 true。
20 | [assembly: ComVisible(false)]
21 |
22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
23 | [assembly: Guid("6716ad1d-3f95-4863-a8c1-f393521f58b7")]
24 |
25 | // 程序集的版本信息由下列四个值组成:
26 | //
27 | // 主版本
28 | // 次版本
29 | // 生成号
30 | // 修订号
31 | //
32 | // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
33 | // 方法是按如下所示使用“*”: :
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.2021.0125")]
36 | [assembly: AssemblyFileVersion("1.0.2021.0125")]
37 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/Xml/Interface/IFrom.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.ComponentModel;
3 |
4 | namespace MDK2VC.M2V.Xml
5 | {
6 | ///
7 | ///
8 | ///
9 | public interface IFrom
10 | {
11 | ///
12 | /// 获取生成目标
13 | ///
14 | ///
15 | ///
16 | List GetMacroTarget(string path);
17 | ///
18 | /// 获取宏定义
19 | ///
20 | ///
21 | ///
22 | List GetMacroDefine(string path);
23 | ///
24 | ///
25 | ///
26 | ///
27 | ///
28 | string GetTargetName(string path);
29 | ///
30 | /// 获取包含路径
31 | ///
32 | ///
33 | ///
34 | List GetIncludePath(string path);
35 | ///
36 | /// 获取工程中文件
37 | ///
38 | /// 工程文件名
39 | ///
40 | [Description("获取工程中文件")]
41 | BTree GetFiles(string filename);
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/Config/MDK2VCConfig.cs:
--------------------------------------------------------------------------------
1 | using NewLife.Xml;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 |
5 | namespace MDK2VC.M2V.Config
6 | {
7 | ///
8 | ///
9 | ///
10 | [XmlConfigFile(@"Config/MDK2VCConfig.config")]
11 | [Description("系统参数")]
12 | public class MDK2VCConfig : XmlConfig
13 | {
14 | ///
15 | /// 手动设置输出路径
16 | ///
17 | [Description("手动设置输出路径")]
18 | public bool OutputPathManulSet { get; set; } = false;
19 | ///
20 | /// 输出工程目标
21 | ///
22 | [Description("输出工程目标")]
23 | public string StrOutputPathTarget { get; set; } = "VC2019";
24 | ///
25 | /// mdk工程路径
26 | ///
27 | [Description("mdk工程路径")]
28 | public string StrMDKFilePath { get; set; } = "";
29 | ///
30 | /// QT工程路径
31 | ///
32 | [Description("QT工程路径")]
33 | public string StrQTFilePath { get; set; } = "";
34 | ///
35 | /// QTVs工程路径
36 | ///
37 | [Description("QTVs工程路径")]
38 | public string StrQTVsFilePath { get; set; } = "";
39 | ///
40 | /// 历史
41 | ///
42 | [Description("历史")]
43 | public List StrMDKFilePathHis { get; set; } = new List();
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/Src/MDK2VC.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.27130.2036
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MDK2VC", "MDK2VC\MDK2VC.csproj", "{6716AD1D-3F95-4863-A8C1-F393521F58B7}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Debug|x86 = Debug|x86
12 | Release|Any CPU = Release|Any CPU
13 | Release|x86 = Release|x86
14 | EndGlobalSection
15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
16 | {6716AD1D-3F95-4863-A8C1-F393521F58B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
17 | {6716AD1D-3F95-4863-A8C1-F393521F58B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
18 | {6716AD1D-3F95-4863-A8C1-F393521F58B7}.Debug|x86.ActiveCfg = Debug|Any CPU
19 | {6716AD1D-3F95-4863-A8C1-F393521F58B7}.Debug|x86.Build.0 = Debug|Any CPU
20 | {6716AD1D-3F95-4863-A8C1-F393521F58B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
21 | {6716AD1D-3F95-4863-A8C1-F393521F58B7}.Release|Any CPU.Build.0 = Release|Any CPU
22 | {6716AD1D-3F95-4863-A8C1-F393521F58B7}.Release|x86.ActiveCfg = Release|Any CPU
23 | {6716AD1D-3F95-4863-A8C1-F393521F58B7}.Release|x86.Build.0 = Release|Any CPU
24 | EndGlobalSection
25 | GlobalSection(SolutionProperties) = preSolution
26 | HideSolutionNode = FALSE
27 | EndGlobalSection
28 | GlobalSection(ExtensibilityGlobals) = postSolution
29 | SolutionGuid = {79C933D6-9C66-4091-B0D2-DA079D132F57}
30 | EndGlobalSection
31 | EndGlobal
32 |
--------------------------------------------------------------------------------
/Src/MDK2VC/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 此代码由工具生成。
4 | // 运行时版本:4.0.30319.42000
5 | //
6 | // 对此文件的更改可能会导致不正确的行为,并且如果
7 | // 重新生成代码,这些更改将会丢失。
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace MDK2VC.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("")]
29 | public string LastFileName {
30 | get {
31 | return ((string)(this["LastFileName"]));
32 | }
33 | set {
34 | this["LastFileName"] = value;
35 | }
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/Xml/Interface/IToVC.cs:
--------------------------------------------------------------------------------
1 | namespace MDK2VC.M2V.Xml
2 | {
3 | ///
4 | /// 创建目标工程
5 | ///
6 | public interface IToVC
7 | {
8 | ///
9 | /// 创建工程
10 | ///
11 | ///
12 | void Createvcxproj(SysConfig cfg);
13 | ///
14 | /// 创建VCFilters
15 | ///
16 | ///
17 | void Createfilters(SysConfig cfg);
18 | ///
19 | /// 创建users文件
20 | ///
21 | ///
22 | void Createvcxusers(SysConfig cfg);
23 | ///
24 | /// 创建解决方案
25 | ///
26 | ///
27 | void Createsln(SysConfig cfg);
28 | ///
29 | /// 生成日志文件
30 | ///
31 | /// 配置文件
32 | void Createlog(SysConfig cfg);
33 | ///
34 | /// 获取过滤器文件、文件夹列表
35 | ///
36 | ///
37 | ///
38 | string Get_ToFilter_FolderFiles(SysConfig cfg);
39 | ///
40 | /// 获取所有文件列表
41 | ///
42 | ///
43 | ///
44 | string Get_ToProj_Files(SysConfig cfg);
45 | ///
46 | /// 获取过滤器目录列表
47 | ///
48 | ///
49 | ///
50 | string Get_ToFilter_Folders(SysConfig cfg);
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/Src/MDK2VC/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 此代码由工具生成。
4 | // 运行时版本:4.0.30319.42000
5 | //
6 | // 对此文件的更改可能会导致不正确的行为,并且如果
7 | // 重新生成代码,这些更改将会丢失。
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace MDK2VC.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// 一个强类型的资源类,用于查找本地化的字符串等。
17 | ///
18 | // 此类是由 StronglyTypedResourceBuilder
19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
21 | // (以 /str 作为命令选项),或重新生成 VS 项目。
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// 返回此类使用的缓存的 ResourceManager 实例。
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MDK2VC.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// 重写当前线程的 CurrentUICulture 属性
51 | /// 重写当前线程的 CurrentUICulture 属性。
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
65 | ///
66 | internal static System.Drawing.Bitmap Help {
67 | get {
68 | object obj = ResourceManager.GetObject("Help", resourceCulture);
69 | return ((System.Drawing.Bitmap)(obj));
70 | }
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/Xml/BTree.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace MDK2VC.M2V.Xml
4 | {
5 | public class BTree
6 | {
7 | public BTree()
8 | {
9 | nodes = new List>();
10 | }
11 |
12 | public BTree(T data)
13 | {
14 | this.Data = data;
15 | nodes = new List>();
16 | }
17 |
18 | private BTree parent;
19 | ///
20 | /// 父结点
21 | ///
22 | public BTree Parent
23 | {
24 | get { return parent; }
25 | }
26 | ///
27 | /// 结点数据
28 | ///
29 | public T Data { get; set; }
30 |
31 | private List> nodes;
32 | ///
33 | /// 子结点
34 | ///
35 | public List> Nodes
36 | {
37 | get { return nodes; }
38 | }
39 | ///
40 | /// 添加结点
41 | ///
42 | /// 结点
43 | public void AddNode(BTree node)
44 | {
45 | if (!nodes.Contains(node))
46 | {
47 | node.parent = this;
48 | nodes.Add(node);
49 | }
50 | }
51 | ///
52 | /// 添加结点
53 | ///
54 | /// 结点集合
55 | public void AddNode(List> nodes)
56 | {
57 | foreach (var node in nodes)
58 | {
59 | if (!nodes.Contains(node))
60 | {
61 | node.parent = this;
62 | nodes.Add(node);
63 | }
64 | }
65 | }
66 | ///
67 | /// 移除结点
68 | ///
69 | ///
70 | public void Remove(BTree node)
71 | {
72 | if (nodes.Contains(node))
73 | nodes.Remove(node);
74 | }
75 | ///
76 | /// 清空结点集合
77 | ///
78 | public void RemoveAll()
79 | {
80 | nodes.Clear();
81 | }
82 | }
83 | public class Node
84 | {
85 | ///
86 | /// 构造
87 | ///
88 | /// 名称
89 | /// 上级名称,默认空
90 | /// 是否文件夹,默认false
91 | public Node(string name,string parentname="", bool isdir=false)
92 | {
93 | this.Name = name;
94 | this.ParentName = parentname;
95 | this.IsFile = isdir;
96 | }
97 | ///
98 | /// 当前名称
99 | ///
100 | public string Name { get; set; }
101 | ///
102 | /// 上级名称
103 | ///
104 | public string ParentName { get; set; }
105 | ///
106 | /// 是否是文件
107 | ///
108 | public bool IsFile { get; set; }
109 | }
110 | }
111 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/UI/FormHelper.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace MDK2VC.M2V.UI
2 | {
3 | partial class FormHelper
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.pictureBox1 = new System.Windows.Forms.PictureBox();
32 | this.label1 = new System.Windows.Forms.Label();
33 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
34 | this.SuspendLayout();
35 | //
36 | // pictureBox1
37 | //
38 | this.pictureBox1.Image = global::MDK2VC.Properties.Resources.Help;
39 | this.pictureBox1.Location = new System.Drawing.Point(12, 2);
40 | this.pictureBox1.Name = "pictureBox1";
41 | this.pictureBox1.Size = new System.Drawing.Size(772, 653);
42 | this.pictureBox1.TabIndex = 0;
43 | this.pictureBox1.TabStop = false;
44 | //
45 | // label1
46 | //
47 | this.label1.AutoSize = true;
48 | this.label1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
49 | this.label1.ForeColor = System.Drawing.Color.Blue;
50 | this.label1.Location = new System.Drawing.Point(176, 392);
51 | this.label1.Name = "label1";
52 | this.label1.Size = new System.Drawing.Size(255, 76);
53 | this.label1.TabIndex = 2;
54 | this.label1.Text = "1、单击此处导入MDK工程\r\n2、把MDK工程转换为VC工程\r\n3、双击此处打开MDK工程\r\n4、双击此处打开VC工程\r\n";
55 | //
56 | // FormHelper
57 | //
58 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
59 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
60 | this.ClientSize = new System.Drawing.Size(784, 667);
61 | this.Controls.Add(this.label1);
62 | this.Controls.Add(this.pictureBox1);
63 | this.Name = "FormHelper";
64 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
65 | this.Text = "说明";
66 | this.Load += new System.EventHandler(this.FormHelper_Load);
67 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
68 | this.ResumeLayout(false);
69 | this.PerformLayout();
70 |
71 | }
72 |
73 | #endregion
74 |
75 | private System.Windows.Forms.PictureBox pictureBox1;
76 | private System.Windows.Forms.Label label1;
77 | }
78 | }
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/Xml/From/Fromuvprojx.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.ComponentModel;
3 | using System.Text;
4 | using System.Xml;
5 | using System.Xml.Linq;
6 |
7 | namespace MDK2VC.M2V.Xml
8 | {
9 | public class Fromuvprojx:IFrom
10 | {
11 | ///
12 | /// 获取生成目标
13 | ///
14 | ///
15 | ///
16 | public List GetMacroTarget(string path)
17 | {
18 | var ret = new List();
19 |
20 | var xmlDoc = new XmlDocument();
21 |
22 | if (path == "") return ret;
23 | xmlDoc.Load(path);
24 | var list = xmlDoc.SelectNodes(".//Targets/*");
25 | foreach (XmlNode node in list)
26 | {
27 | ret.Add(node.SelectSingleNode("./TargetName").InnerText);
28 | }
29 | return ret;
30 | }
31 | ///
32 | /// 获取宏定义
33 | ///
34 | ///
35 | ///
36 | public List GetMacroDefine(string path)
37 | {
38 | var ret = new List();
39 | var builder = new StringBuilder();
40 | var doc = XElement.Load(path);
41 | var Targets = doc.Element("Targets");
42 | var Target = Targets.Element("Target");
43 | var TargetOption = Target.Element("TargetOption");
44 | var TargetArmAds = TargetOption.Element("TargetArmAds");
45 | var Cads = TargetArmAds.Element("Cads");
46 | var VariousControls = Cads.Element("VariousControls");
47 | var Define = VariousControls.Element("Define");
48 | var strs = Define.Value.ToString().Split(new char[] { ',' });
49 | foreach (var str in strs)
50 | {
51 | builder.Append(str).Append(";");
52 | ret.Add(str);
53 | }
54 | builder.Append("__CC_ARM;");
55 | ret.Add("__CC_ARM");
56 | //return builder.ToString();
57 | return ret;
58 | }
59 | ///
60 | ///
61 | ///
62 | ///
63 | ///
64 | public string GetTargetName(string path)
65 | {
66 | return "DEBUG";
67 | }
68 | public List GetIncludePath(string path)
69 | {
70 | var ret = new List();
71 | var doc = XElement.Load(path);
72 | var Targets = doc.Element("Targets");
73 | var Target = Targets.Element("Target");
74 | var TargetOption = Target.Element("TargetOption");
75 | var TargetArmAds = TargetOption.Element("TargetArmAds");
76 | var Cads = TargetArmAds.Element("Cads");
77 | var VariousControls = Cads.Element("VariousControls");
78 | var IncludePath = VariousControls.Element("IncludePath");
79 |
80 | var IncludePaths = IncludePath.Value.ToString().Split(new char[] { ';'});
81 | foreach(var vn in IncludePaths)
82 | {
83 | ret.Add("..\\"+vn);
84 | }
85 | return ret;
86 | }
87 | ///
88 | /// 获取工程中文件
89 | ///
90 | /// 工程文件名
91 | ///
92 | [Description("获取工程中文件")]
93 | public BTree GetFiles(string filename)
94 | {
95 | var tree1 = new BTree
96 | {
97 | Data = new Node("文件", "", true)
98 | };
99 |
100 | var doc = XElement.Load(filename);
101 | var Targets = doc.Element("Targets");
102 | var Target = Targets.Element("Target");
103 | tree1.Data.Name = Target.Element("TargetName").Value;
104 | var Groups = Target.Element("Groups");
105 |
106 | var Group = Groups.Elements("Group");
107 | foreach (var grou in Group)
108 | {
109 | var aa = grou.Element("GroupName");
110 | var tree2 = new BTree
111 | {
112 | Data = new Node(aa.Value, "", false)
113 | };
114 | tree1.AddNode(tree2);
115 |
116 | var Files = grou.Elements("Files");
117 | foreach (var File in Files)
118 | {
119 | var file = File.Elements("File");
120 | foreach (var ff in file)
121 | {
122 | var FilePath = ff.Element("FilePath");
123 | if (FilePath != null)
124 | {
125 | var tree3 = new BTree
126 | {
127 | Data = new Node(FilePath.Value, "", false)
128 | };
129 | tree2.AddNode(tree3);
130 | }
131 | }
132 | }
133 | }
134 | return tree1;
135 | }
136 | }
137 | }
138 |
--------------------------------------------------------------------------------
/Src/MDK2VC/MDK2VC.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {6716AD1D-3F95-4863-A8C1-F393521F58B7}
8 | WinExe
9 | MDK2VC
10 | MDK2VC
11 | v4.0
12 | 512
13 |
14 |
15 | AnyCPU
16 | true
17 | full
18 | false
19 | ..\..\bin\
20 | TRACE;DEBUG;FLAGNMAKE1
21 | prompt
22 | 4
23 |
24 |
25 | AnyCPU
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 | Flash.ico
35 |
36 |
37 |
38 | ..\DLL\NewLife.Core.dll
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 | Form
60 |
61 |
62 | FormHelper.cs
63 |
64 |
65 | Form
66 |
67 |
68 | FormMain.cs
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 | FormHelper.cs
87 |
88 |
89 | FormMain.cs
90 |
91 |
92 | ResXFileCodeGenerator
93 | Resources.Designer.cs
94 | Designer
95 |
96 |
97 | True
98 | Resources.resx
99 | True
100 |
101 |
102 |
103 | SettingsSingleFileGenerator
104 | Settings.Designer.cs
105 |
106 |
107 | True
108 | Settings.settings
109 | True
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/UI/FormHelper.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/Xml/From/Fromuvproj.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.ComponentModel;
3 | using System.Xml;
4 | using System.Xml.Linq;
5 |
6 | namespace MDK2VC.M2V.Xml
7 | {
8 | public class Fromuvproj : IFrom
9 | {
10 | ///
11 | /// 获取生成目标
12 | ///
13 | ///
14 | ///
15 | public List GetMacroTarget(string path)
16 | {
17 | var ret = new List();
18 |
19 | var xmlDoc = new XmlDocument();
20 |
21 | if (path == "") return ret;
22 | xmlDoc.Load(path);
23 | var list = xmlDoc.SelectNodes(".//Targets/*");
24 | foreach (XmlNode node in list)
25 | {
26 | ret.Add(node.SelectSingleNode("./TargetName").InnerText);
27 | }
28 | return ret;
29 | }
30 | ///
31 | /// 获取宏定义
32 | ///
33 | ///
34 | ///
35 | public List GetMacroDefine(string path)
36 | {
37 | var TargetName = GetTargetName(path);
38 | var xmlDoc = new XmlDocument();
39 | var aa = "none";
40 | xmlDoc.Load(path);
41 | foreach (XmlNode node in xmlDoc.SelectNodes(".//Targets/Target"))
42 | {
43 | if (node.SelectSingleNode("./TargetName").InnerText == TargetName)
44 | {
45 | aa = node.SelectSingleNode(".//VariousControls/Define").InnerText;
46 | break;
47 | }
48 | }
49 | var ret = new List();
50 | var strs = aa.Split(new char[] { ',' });
51 | foreach (var str in strs)
52 | {
53 | ret.Add(str);
54 | }
55 | ret.Add("__CC_ARM");
56 |
57 | return ret;
58 | }
59 | ///
60 | ///
61 | ///
62 | ///
63 | ///
64 | public string GetTargetName(string path)
65 | {
66 | string[] items = this.MDK_TargetRead(path);
67 | if (items.Length > 0)
68 | return items[0];
69 | else
70 | return "DEBUG";
71 | }
72 | private readonly XmlDocument xmlDoc = new XmlDocument();
73 | private string[] MDK_TargetRead(string Doc)
74 | {
75 | if (Doc == "") return null;
76 | this.xmlDoc.Load(Doc);
77 | XmlNodeList list = this.xmlDoc.SelectNodes(".//Targets/*");
78 | string[] strArray = new string[list.Count];
79 | int index = 0;
80 | foreach (XmlNode node in list)
81 | {
82 | strArray[index] = node.SelectSingleNode("./TargetName").InnerText;
83 | index++;
84 | }
85 | return strArray;
86 | }
87 | public List GetIncludePath(string path)
88 | {
89 | XElement IncludePath = null;
90 |
91 | var ret = new List();
92 | var doc = XElement.Load(path);
93 | var Targets = doc.Element("Targets");
94 | var Target = Targets.Element("Target");
95 | var TargetOption = Target.Element("TargetOption");
96 |
97 | var TargetArmAds51 = TargetOption.Element("Target51");
98 | var TargetArmAdsM3 = TargetOption.Element("TargetArmAds");
99 | if (TargetArmAds51!=null && TargetArmAds51.HasElements)
100 | {
101 | var Cads = TargetArmAds51.Element("C51");
102 | var VariousControls = Cads.Element("VariousControls");
103 | IncludePath = VariousControls.Element("IncludePath");
104 | }
105 | else if (TargetArmAdsM3!=null && TargetArmAdsM3.HasElements)
106 | {
107 | var Cads = TargetArmAdsM3.Element("Cads");
108 | var VariousControls = Cads.Element("VariousControls");
109 | IncludePath = VariousControls.Element("IncludePath");
110 | }
111 | else { }
112 |
113 | var IncludePaths = IncludePath.Value.ToString().Split(new char[] { ';' });
114 | foreach (var vn in IncludePaths)
115 | {
116 | ret.Add("..\\" + vn);
117 | }
118 | ret.Add(@"C:\Keil_v5\ARM\ARMCC\include");
119 | return ret;
120 | }
121 | ///
122 | /// 获取工程中文件
123 | ///
124 | /// 工程文件名
125 | ///
126 | [Description("获取工程中文件")]
127 | public BTree GetFiles(string filename)
128 | {
129 | var tree1 = new BTree
130 | {
131 | Data = new Node("文件", "", true)
132 | };
133 |
134 | var doc = XElement.Load(filename);
135 | var Targets = doc.Element("Targets");
136 | var Target = Targets.Element("Target");
137 | var Groups = Target.Element("Groups");
138 |
139 | var Group = Groups.Elements("Group");
140 | foreach (var grou in Group)
141 | {
142 | var aa = grou.Element("GroupName");
143 | var tree2 = new BTree
144 | {
145 | Data = new Node(aa.Value, "", false)
146 | };
147 | tree1.AddNode(tree2);
148 |
149 | var Files = grou.Elements("Files");
150 | foreach (var File in Files)
151 | {
152 | var file = File.Elements("File");
153 | foreach (var ff in file)
154 | {
155 | var FilePath = ff.Element("FilePath");
156 | if (FilePath != null)
157 | {
158 | var tree3 = new BTree
159 | {
160 | Data = new Node(FilePath.Value, "", false)
161 | };
162 | tree2.AddNode(tree3);
163 | }
164 | }
165 | }
166 | }
167 | return tree1;
168 | }
169 | }
170 | }
171 |
--------------------------------------------------------------------------------
/Src/MDK2VC/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\Help.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/Xml/From/Fromcyprj.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.ComponentModel;
3 | using System.IO;
4 |
5 | namespace MDK2VC.M2V.Xml
6 | {
7 | class Fromcyprj : IFrom
8 | {
9 | ///
10 | /// 获取生成目标
11 | ///
12 | ///
13 | ///
14 | public List GetMacroTarget(string path)
15 | {
16 | var ret = new List();
17 |
18 | return ret;
19 | }
20 | ///
21 | /// 获取宏定义
22 | ///
23 | ///
24 | ///
25 | public List GetMacroDefine(string path)
26 | {
27 | var ret = new List
28 | {
29 | "DEBUG"
30 | };
31 | return ret;
32 | }
33 | ///
34 | ///
35 | ///
36 | ///
37 | ///
38 | public string GetTargetName(string path)
39 | {
40 | return "DEBUG";
41 | }
42 | public List GetIncludePath(string path)
43 | {
44 | var ret = new List
45 | {
46 | @"..",
47 | @"..\Generated_Source\PSoC5"
48 | };
49 | return ret;
50 | }
51 | ///
52 | /// 获取工程中文件
53 | ///
54 | /// 工程文件名
55 | ///
56 | [Description("获取工程中文件")]
57 | public BTree GetFiles(string filename)
58 | {
59 | var treelevel_0 = new BTree
60 | {
61 | Data = new Node("文件", "", true)
62 | };
63 |
64 | var namegroup = "";
65 | var currentnode = treelevel_0;
66 | var parentnode = treelevel_0;//上一级
67 | var grandparentnode = treelevel_0;//上上级
68 | bool hasfiles = false;
69 | if (File.Exists(filename))
70 | {
71 | using (var sr = File.OpenText(filename))
72 | {
73 | var s = "";
74 | while ((s = sr.ReadLine()) != null)
75 | {
76 | if (s.IndexOf("type_name") <= 0)
77 | continue;
78 | if (s.IndexOf("xml_contents_version") >= 0)
79 | continue;
80 | var ssspaces = s.Split(' ');
81 | foreach (var sss in ssspaces)
82 | {
83 | var ssequals = sss.Split('=');
84 | if ((ssequals != null) && ssequals.Length == 2 && ssequals[0].Equals("name"))
85 | {
86 | namegroup = ssequals[1].Split('"')[1];
87 | }
88 | if ((ssequals != null) && ssequals.Length == 2 && ssequals[0].Equals("persistent"))
89 | {
90 | if (ssequals[1].Split('"')[1].Length == 0)
91 | {
92 | //文件夹
93 | var tnode = new BTree
94 | {
95 | Data = new Node(namegroup, "", true)
96 | };
97 |
98 | if (hasfiles)
99 | {
100 | //已经有文件
101 | parentnode.AddNode(tnode);
102 | currentnode = tnode;
103 | }
104 | else
105 | {
106 | //一直是文件夹
107 | currentnode.AddNode(tnode);
108 | grandparentnode = parentnode;
109 | parentnode = currentnode;
110 | currentnode = tnode;
111 | }
112 | hasfiles = false;
113 | }
114 | else
115 | {
116 | //文件
117 | if (ssequals[1].Split('"')[1].IndexOf(".cyprj") >= 0)
118 | {
119 | //工程名称
120 | treelevel_0.Data.Name = ssequals[1].Split('"')[1];
121 | hasfiles = false;
122 | }
123 | else if (ssequals[1].Split('"')[1].IndexOf(".cydwr") >= 0)
124 | {
125 | //特殊目录
126 | hasfiles = false;
127 | }
128 | else if (ssequals[1].Split('"')[1].IndexOf("TopDesign") >= 0)
129 | {
130 | //特殊目录
131 | hasfiles = false;
132 | }
133 | else if ((ssequals[1].Split('"')[1].IndexOf("Generated_Source") >= 0)&&((ssequals[1].Split('"')[1].Length== "Generated_Source".Length)))
134 | {
135 | //特殊目录
136 | var tree3 = new BTree
137 | {
138 | Data = new Node(ssequals[1].Split('"')[1])
139 | };
140 | treelevel_0.AddNode(tree3);
141 |
142 | grandparentnode = treelevel_0;
143 | parentnode = treelevel_0;
144 | currentnode = tree3;
145 | hasfiles = false;
146 | }
147 | else if ((ssequals[1].Split('"')[1].IndexOf(@"Generated_Source\PSoC5") >= 0) && ((ssequals[1].Split('"')[1].Length == @"Generated_Source\PSoC5".Length)))
148 | {
149 | //特殊目录
150 | var tree3 = new BTree
151 | {
152 | Data = new Node(ssequals[1].Split('"')[1])
153 | };
154 | tree3.Data.Name = "PSoC5";
155 | currentnode.AddNode(tree3);
156 |
157 | grandparentnode = parentnode;
158 | parentnode = currentnode;
159 | currentnode = tree3;
160 |
161 | grandparentnode = parentnode;
162 | parentnode = currentnode;
163 |
164 | hasfiles = false;
165 | }
166 | else
167 | {
168 | //常规文件
169 | var tree3 = new BTree
170 | {
171 | Data = new Node(ssequals[1].Split('"')[1])
172 | };
173 | currentnode.AddNode(tree3);
174 | hasfiles = true;
175 | }
176 | }
177 | }
178 | }
179 |
180 | }
181 | }
182 | }
183 | return treelevel_0;
184 | }
185 | }
186 | }
187 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/SysConfig.cs:
--------------------------------------------------------------------------------
1 | using MDK2VC.M2V.Xml;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.ComponentModel;
5 | using System.IO;
6 | using System.Runtime.InteropServices;
7 | using System.Text;
8 |
9 | namespace MDK2VC.M2V
10 | {
11 | ///
12 | /// 系统参数配置
13 | ///
14 | [StructLayout(LayoutKind.Sequential)]
15 | public class SysConfig
16 | {
17 | ///
18 | /// 转换目标 VC2013 VC2017 2019 VC2022
19 | ///
20 | [Description("转换目标 VC2013 VC2017 VC2019 VC2022")]
21 | public int TargetType { get; set; } = 2022;
22 | ///
23 | ///
24 | ///
25 | [Description("")]
26 | public string UV4_Path { get; set; }
27 | ///
28 | ///
29 | ///
30 | [Description("")]
31 | public string MDK_Project_Path { get; set; }
32 | ///
33 | ///
34 | ///
35 | [Description("")]
36 | public string MDK_Project_File { get; set; }
37 | ///
38 | ///
39 | ///
40 | [Description("")]
41 | public string MDK_Target { get; set; }
42 | ///
43 | ///
44 | ///
45 | [Description("")]
46 | public string ProjectName { get; set; }
47 | ///
48 | ///
49 | ///
50 | [Description("")]
51 | public string IncludePath { get; set; }
52 | ///
53 | /// vcxproj文件路径
54 | ///
55 | [Description("vcxproj文件路径")]
56 | public string VCProject_Path { get; set; }
57 | ///
58 | /// VC 工程名
59 | ///
60 | [Description("VC 工程名")]
61 | public string VcxprojName
62 | {
63 | get
64 | {
65 | return this.ProjectName + ".vcxproj";
66 | }
67 | }
68 | ///
69 | /// VC filters文件名
70 | ///
71 | [Description("VC filters 文件名")]
72 | public string VC_Filters_Name
73 | {
74 | get
75 | {
76 | return this.VcxprojName + ".filters";
77 | }
78 | }
79 | ///
80 | /// VC用户文件
81 | ///
82 | [Description("VC用户文件")]
83 | public string VC_UserFileName
84 | {
85 | get
86 | {
87 | return this.VcxprojName + ".user";
88 | }
89 | }
90 | ///
91 | ///
92 | ///
93 | [Description("")]
94 | public string NMakePreprocessorDefinitions { get; set; }
95 | ///
96 | ///
97 | ///
98 | [Description("")]
99 | public string NMakeBuildCommandLine { get; set; }
100 | ///
101 | ///
102 | ///
103 | [Description("")]
104 | public string NMakeCleanCommandLine { get; set; }
105 | ///
106 | ///
107 | ///
108 | [Description("")]
109 | public string LocalDebuggerCommandArguments { get; set; }
110 | ///
111 | ///
112 | ///
113 | [Description("")]
114 | public string LocalDebuggerWorkingDirectory { get; set; }
115 | ///
116 | /// 工程文件路径
117 | ///
118 | [Description("工程文件路径")]
119 | public string FromFilePath { get; set; }
120 | ///
121 | ///
122 | ///
123 | public string TargetName { get; set; }
124 | ///
125 | public string VCPath
126 | {
127 | get
128 | {
129 | var outdir = "\\VC2022";
130 | switch(TargetType)
131 | {
132 | case 2022:
133 | outdir = "\\VC2022";
134 | break;
135 | case 2019:
136 | outdir = "\\VC2019";
137 | break;
138 | case 2017:
139 | outdir = "\\VC2017";
140 | break;
141 | case 2013:
142 | outdir = "\\VC2013";
143 | break;
144 | default:
145 | break;
146 | }
147 | return this.DirectoryName + outdir;
148 | }
149 | }
150 | ///
151 | /// vcxproj文件路径
152 | ///
153 | [Description("vcxproj文件路径")]
154 | public string Vcxproj
155 | {
156 | get
157 | {
158 | return this.VCPath + "\\"+ FileNameWithoutExtension + ".vcxproj";
159 | }
160 | }
161 | ///
162 | /// filters文件路径
163 | ///
164 | [Description("filters文件路径")]
165 | public string Filters
166 | {
167 | get
168 | {
169 | return this.VCPath + "\\" + FileNameWithoutExtension + ".vcxproj.filters";
170 | }
171 | }
172 | ///
173 | /// sln文件路径
174 | ///
175 | [Description("sln文件路径")]
176 | public string Sln
177 | {
178 | get
179 | {
180 | return this.VCPath + "\\" + FileNameWithoutExtension + ".sln";
181 | }
182 | }
183 | public string Vcusers
184 | {
185 | get
186 | {
187 | return this.VCPath + "\\" + FileNameWithoutExtension + ".vcxproj.user";
188 | }
189 | }
190 | ///
191 | /// 宏定义
192 | ///
193 | public List MacroDefine { private get; set; }
194 | ///
195 | /// 预定义
196 | ///
197 | public string MacroDefineStr
198 | {
199 | get
200 | {
201 | var builder = new StringBuilder();
202 | foreach(var str in MacroDefine)
203 | {
204 | builder.Append(str.Trim()).Append(";");
205 | }
206 | return builder.ToString();
207 | }
208 | }
209 | ///
210 | /// 预定义
211 | ///
212 | public string MacroDefineStrCNMake
213 | {
214 | get
215 | {
216 | var builder = new StringBuilder();
217 | foreach (var str in MacroDefine)
218 | {
219 | builder.Append(str.Trim()).Append(",");
220 | }
221 | builder = builder.Remove(builder.Length-1,1);
222 | return builder.ToString();
223 | }
224 | }
225 | ///
226 | ///
227 | ///
228 | public string Projguid { get; set; }
229 | public string Projguidvc
230 | {
231 | get
232 | {
233 | var builder = new StringBuilder();
234 | builder.Append(Projguid);
235 | return builder.ToString();
236 | }
237 | }
238 | ///
239 | /// 文件路径
240 | ///
241 | public List IncludePathOld { private get; set; }
242 | ///
243 | /// 项目包含文件
244 | ///
245 | public BTree ProjFiles { get; set; }
246 | ///
247 | /// 文件路径
248 | ///
249 | public string IncludePathStr
250 | {
251 | get
252 | {
253 | var builder = new StringBuilder();
254 | for(int i=0;i
264 | /// 仅文件名,不包含路径 hello
265 | ///
266 | public string FileNameWithoutExtension
267 | {
268 | get
269 | {
270 | return Path.GetFileNameWithoutExtension(FromFilePath);
271 | }
272 | }
273 | public string DirectoryName
274 | {
275 | get
276 | {
277 | return Path.GetDirectoryName(FromFilePath);
278 | }
279 | }
280 | ///
281 | /// 返回扩展名 :.txt
282 | ///
283 | public string Extension
284 | {
285 | get
286 | {
287 | return Path.GetExtension(FromFilePath);
288 | }
289 | }
290 | ///
291 | /// 过滤器文件、目录列表
292 | ///
293 | public string ToFilter_FileFolders { get; set; }
294 | ///
295 | /// 所有文件列表
296 | ///
297 | public string ToProj_Files { get; set; }
298 | ///
299 | /// 过滤器目录列表
300 | ///
301 | public string ToFilter_files { get; set; }
302 | }
303 |
304 | [StructLayout(LayoutKind.Sequential)]
305 | public struct _Config
306 | {
307 | ///
308 | ///
309 | ///
310 | [Description("")]
311 | public string ToolName { get; set; }
312 | ///
313 | ///
314 | ///
315 | [Description("")]
316 | public string ToolsVersion { get; set; }
317 | ///
318 | ///
319 | ///
320 | [Description("")]
321 | public string UV4Path { get; set; }
322 | ///
323 | ///
324 | ///
325 | [Description("")]
326 | public string DocName { get; set; }
327 | }
328 | }
329 | static class Fff
330 | {
331 | public static void Write(this FileStream fs, byte[] array)
332 | {
333 | fs.Write(array, 0, array.Length);
334 | }
335 | }
336 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/Xml/From/FromQT5.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.IO;
5 | using System.Text;
6 |
7 | namespace MDK2VC.M2V.Xml
8 | {
9 | public class FromQT5 : IFrom
10 | {
11 | ///
12 | /// 获取生成目标
13 | ///
14 | ///
15 | ///
16 | public List GetMacroTarget(string path)
17 | {
18 | var ret = new List();
19 |
20 | if (path == "") return ret;
21 |
22 |
23 | ret.Add("QT");
24 | return ret;
25 | }
26 | ///
27 | /// 获取宏定义
28 | ///
29 | ///
30 | ///
31 | public List GetMacroDefine(string path)
32 | {
33 | var ret = new List();
34 | var builder = new StringBuilder();
35 |
36 | builder.Append("__CC_ARM;");
37 | ret.Add("__CC_ARM");
38 | //return builder.ToString();
39 | return ret;
40 | }
41 | ///
42 | ///
43 | ///
44 | ///
45 | ///
46 | public string GetTargetName(string path)
47 | {
48 | return "DEBUG";
49 | }
50 | public List GetIncludePath(string path)
51 | {
52 | var ret = new List();
53 | var aa = Path.GetDirectoryName(path);
54 | ret.Add(aa);
55 |
56 | var qtPath = @"C:\Qt\Qt5.10.0\5.10.0\mingw53_32\include\";
57 |
58 | ret.Add(qtPath+@"ActiveQt");
59 | ret.Add(qtPath + @"Qt3DAnimation");
60 | ret.Add(qtPath + @"Qt3DCore");
61 | ret.Add(qtPath + @"Qt3DExtras");
62 | ret.Add(qtPath + @"Qt3DInput");
63 | ret.Add(qtPath + @"Qt3DLogic");
64 | ret.Add(qtPath + @"Qt3DQuick");
65 | ret.Add(qtPath + @"Qt3DQuickAnimation");
66 | ret.Add(qtPath + @"Qt3DQuickExtras");
67 | ret.Add(qtPath + @"Qt3DQuickInput");
68 | ret.Add(qtPath + @"Qt3DQuickRender");
69 | ret.Add(qtPath + @"Qt3DQuickScene2D");
70 | ret.Add(qtPath + @"Qt3DRender");
71 | ret.Add(qtPath + @"QtAccessibilitySupport");
72 | ret.Add(qtPath + @"QtANGLE\EGL");
73 | ret.Add(qtPath + @"QtANGLE\GLES2");
74 | ret.Add(qtPath + @"QtANGLE\GLES3");
75 | ret.Add(qtPath + @"QtANGLE\KHR");
76 | ret.Add(qtPath + @"QtBluetooth");
77 | ret.Add(qtPath + @"QtCharts");
78 | ret.Add(qtPath + @"QtConcurrent");
79 | ret.Add(qtPath + @"QtCore");
80 | ret.Add(qtPath + @"QtDataVisualization");
81 | ret.Add(qtPath + @"QtDBus");
82 | ret.Add(qtPath + @"QtDesigner");
83 | ret.Add(qtPath + @"QtDesignerComponents");
84 | ret.Add(qtPath + @"QtDeviceDiscoverySupport");
85 | ret.Add(qtPath + @"QtEdidSupport");
86 | ret.Add(qtPath + @"QtEglSupport");
87 | ret.Add(qtPath + @"QtEventDispatcherSupport");
88 | ret.Add(qtPath + @"QtFbSupport");
89 | ret.Add(qtPath + @"QtFontDatabaseSupport");
90 | ret.Add(qtPath + @"QtGamepad");
91 | ret.Add(qtPath + @"QtGui");
92 | ret.Add(qtPath + @"QtHelp");
93 | ret.Add(qtPath + @"QtLocation");
94 | ret.Add(qtPath + @"QtMultimedia");
95 | ret.Add(qtPath + @"QtMultimediaQuick");
96 | ret.Add(qtPath + @"QtMultimediaWidgets");
97 | ret.Add(qtPath + @"QtNetwork");
98 | ret.Add(qtPath + @"QtNetworkAuth");
99 | ret.Add(qtPath + @"QtNfc");
100 | ret.Add(qtPath + @"QtOpenGL");
101 | ret.Add(qtPath + @"QtOpenGLExtensions");
102 | ret.Add(qtPath + @"QtPacketProtocol");
103 | ret.Add(qtPath + @"QtPlatformCompositorSupport");
104 | ret.Add(qtPath + @"QtPlatformHeaders");
105 | ret.Add(qtPath + @"QtPositioning");
106 | ret.Add(qtPath + @"QtPrintSupport");
107 | ret.Add(qtPath + @"QtQml");
108 | ret.Add(qtPath + @"QtQmlDebug");
109 | ret.Add(qtPath + @"QtQuick");
110 | ret.Add(qtPath + @"QtQuickControls2");
111 | ret.Add(qtPath + @"QtQuickParticles");
112 | ret.Add(qtPath + @"QtQuickTemplates2");
113 | ret.Add(qtPath + @"QtQuickTest");
114 | ret.Add(qtPath + @"QtQuickWidgets");
115 | ret.Add(qtPath + @"QtRemoteObjects");
116 | ret.Add(qtPath + @"QtRepParser");
117 | ret.Add(qtPath + @"QtScript");
118 | ret.Add(qtPath + @"QtScriptTools");
119 | ret.Add(qtPath + @"QtScxml");
120 | ret.Add(qtPath + @"QtSensors");
121 | ret.Add(qtPath + @"QtSerialBus");
122 | ret.Add(qtPath + @"QtSerialPort");
123 | ret.Add(qtPath + @"QtSql");
124 | ret.Add(qtPath + @"QtSvg");
125 | ret.Add(qtPath + @"QtTest");
126 | ret.Add(qtPath + @"QtTextToSpeech");
127 | ret.Add(qtPath + @"QtThemeSupport");
128 | ret.Add(qtPath + @"QtUiPlugin");
129 | ret.Add(qtPath + @"QtUiTools");
130 | ret.Add(qtPath + @"QtWebChannel");
131 | ret.Add(qtPath + @"QtWebSockets");
132 | ret.Add(qtPath + @"QtWidgets");
133 | ret.Add(qtPath + @"QtWinExtras");
134 | ret.Add(qtPath + @"QtXml");
135 | ret.Add(qtPath + @"QtXmlPatterns");
136 | return ret;
137 | }
138 | ///
139 | /// 获取的文件内容
140 | ///
141 | public string files { get; set; } = "";
142 | ///
143 | /// 获取的文件内容
144 | ///
145 | public string SOURCES { get; set; } = "";
146 | ///
147 | /// 获取的文件内容
148 | ///
149 | public string HEADERS { get; set; } = "";
150 |
151 |
152 |
153 |
154 | ///
155 | /// 获取工程中文件
156 | ///
157 | /// 工程文件名
158 | ///
159 | [Description("获取工程中文件")]
160 | public BTree GetFiles(string filename)
161 | {
162 | var tree1 = new BTree
163 | {
164 | Data = new Node("文件", "", true)
165 | };
166 | var tree2 = new BTree
167 | {
168 | Data = new Node("QT", "", false)
169 | };
170 | using (StreamReader sr = new StreamReader(filename))
171 | {
172 | string line;
173 |
174 | files = "";
175 | // 从文件读取并显示行,直到文件的末尾 ,文件以;分割
176 | while ((line = sr.ReadLine()) != null)
177 | {
178 | line = line.Trim();
179 | SOURCES = "";
180 | HEADERS = "";
181 |
182 | //注释语句忽略
183 | if (line.StartsWith("#"))
184 | continue;
185 | if (line.Trim().Length == 0)
186 | continue;
187 |
188 | if (line.EndsWith(@"\"))
189 | {
190 | files += line.Remove(line.Length - 1, 1) + ";";
191 | }
192 | else
193 | {
194 | files += line + Environment.NewLine;
195 | }
196 | }
197 |
198 | //System.Windows.Forms.MessageBox.Show(files);
199 |
200 | //分析文件
201 | var fileline = files.Split(Environment.NewLine);
202 | foreach (var vn in fileline)
203 | {
204 | if (vn.StartsWith("SOURCES"))
205 | {
206 | SOURCES = vn;
207 | }
208 | if (vn.StartsWith("HEADERS"))
209 | {
210 | HEADERS = vn;
211 | }
212 | }
213 | var sourceline = SOURCES.Split(";");
214 | foreach(var vn in sourceline)
215 | {
216 | if (vn.StartsWith("SOURCES"))
217 | continue;
218 |
219 | var vns = vn.Split('/');
220 |
221 | if (vns.Length == 1)
222 | {
223 | var tree00 = new BTree
224 | {
225 | Data = new Node(vn, "", false)
226 | };
227 | tree2.AddNode(tree00);
228 | }
229 | else if(vns.Length==2)
230 | {
231 | var tree00 = new BTree
232 | {
233 | Data = new Node(vns[0], "", false)
234 | };
235 | var tree01 = new BTree
236 | {
237 | Data = new Node(vn, "", false)
238 | };
239 | tree00.AddNode(tree01);
240 |
241 | tree2.AddNode(tree00);
242 | }
243 | else if (vns.Length == 3)
244 | {
245 | var tree00 = new BTree
246 | {
247 | Data = new Node(vns[0], "", false)
248 | };
249 | var tree01 = new BTree
250 | {
251 | Data = new Node(vns[1], "", false)
252 | };
253 | var tree02 = new BTree
254 | {
255 | Data = new Node(vn, "", false)
256 | };
257 |
258 | tree01.AddNode(tree02);
259 |
260 | tree00.AddNode(tree01);
261 |
262 | tree2.AddNode(tree00);
263 | }
264 | else if (vns.Length == 4)
265 | {
266 | var tree00 = new BTree
267 | {
268 | Data = new Node(vns[0], "", false)
269 | };
270 | var tree01 = new BTree
271 | {
272 | Data = new Node(vns[1], "", false)
273 | };
274 | var tree02 = new BTree
275 | {
276 | Data = new Node(vns[2], "", false)
277 | };
278 | var tree03 = new BTree
279 | {
280 | Data = new Node(vn, "", false)
281 | };
282 |
283 | tree02.AddNode(tree03);
284 |
285 | tree01.AddNode(tree02);
286 |
287 | tree00.AddNode(tree01);
288 |
289 | tree2.AddNode(tree00);
290 | }
291 | }
292 |
293 | //System.Windows.Forms.MessageBox.Show(SOURCES);
294 | //System.Windows.Forms.MessageBox.Show(HEADERS);
295 |
296 | }
297 |
298 | tree1.AddNode(tree2);
299 |
300 | return tree1;
301 | }
302 | }
303 | }
304 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/UI/FormMain.cs:
--------------------------------------------------------------------------------
1 | using MDK2VC.M2V;
2 | using MDK2VC.M2V.Config;
3 | using MDK2VC.M2V.UI;
4 | using MDK2VC.M2V.Xml;
5 | using System;
6 | using System.IO;
7 | using System.Reflection;
8 | using System.Text;
9 | using System.Windows.Forms;
10 |
11 | namespace MDK2VC
12 | {
13 | public partial class FormMain : Form
14 | {
15 | CoreManager manager = new CoreManager();
16 | ///
17 | /// 项目配置
18 | ///
19 | SysConfig cfg = new SysConfig();
20 | public FormMain()
21 | {
22 | InitializeComponent();
23 | }
24 |
25 | private void FormMain_Load(object sender, EventArgs e)
26 | {
27 | cfg.FromFilePath = Properties.Settings.Default.LastFileName;
28 | if (cfg.FromFilePath.Length < 5)
29 | cfg.FromFilePath = ".uvprojx";
30 | comboBoxMDKPath.Text = cfg.FromFilePath;
31 | tBoxSlnPath.Text = cfg.Sln;
32 | this.Text += " Ver:"+ Assembly.GetExecutingAssembly().GetName().Version.ToString() + " Net:"+System.Environment.Version.ToString();
33 | switch(cfg.TargetType)
34 | {
35 | case 2013:
36 | comboBoxOutTarget.Text = "VC2013";
37 | break;
38 | case 2017:
39 | comboBoxOutTarget.Text = "VC2017";
40 | break;
41 | case 2019:
42 | comboBoxOutTarget.Text = "VC2019";
43 | break;
44 | case 2022:
45 | comboBoxOutTarget.Text = "VC2022";
46 | break;
47 | default:
48 | comboBoxOutTarget.Text = "VC2019";
49 | break;
50 | }
51 | checkBoxManulSetTarget.Checked = MDK2VCConfig.Current.OutputPathManulSet;
52 | comboBoxOutTarget.Text = MDK2VCConfig.Current.StrOutputPathTarget;
53 | comboBoxMDKPath.Text = MDK2VCConfig.Current.StrMDKFilePath;
54 | comboBoxMDKPath.Items.Clear();
55 | foreach(var v in MDK2VCConfig.Current.StrMDKFilePathHis)
56 | {
57 | comboBoxMDKPath.Items.Add(v);
58 | }
59 | }
60 | private void BtnTrans_Click(object sender, EventArgs e)
61 | {
62 | if (comboBoxOutTarget.Text.Contains("2013"))
63 | {
64 | cfg.TargetType = 2013;
65 | }
66 | else if (comboBoxOutTarget.Text.Contains("2017"))
67 | {
68 | cfg.TargetType = 2017;
69 | }
70 | else if (comboBoxOutTarget.Text.Contains("2019"))
71 | {
72 | cfg.TargetType = 2019;
73 | }
74 | else if (comboBoxOutTarget.Text.Contains("2022"))
75 | {
76 | cfg.TargetType = 2022;
77 | }
78 | else
79 | {
80 | cfg.TargetType = 2017;
81 | }
82 | if ((cfg.FromFilePath == null) || (!File.Exists(cfg.FromFilePath)))
83 | {
84 | MessageBox.Show("请选择正确的文件");
85 | return;
86 | }
87 | switch (Path.GetExtension(cfg.FromFilePath))
88 | {
89 | case ".uvproj":
90 | manager.From = new Fromuvproj();
91 | break;
92 | case ".uvprojx":
93 | manager.From = new Fromuvprojx();
94 | break;
95 | case ".cyprj":
96 | manager.From = new Fromcyprj();
97 | break;
98 | case ".pro":
99 | manager.From = new FromQT5();
100 | break;
101 | default:
102 | break;
103 | }
104 | if (cfg.TargetType == 2013)
105 | {
106 | manager.To = new ToVC2013();
107 | }
108 | else if (cfg.TargetType == 2017)
109 | {
110 | manager.To = new ToVC2017();
111 | }
112 | else if (cfg.TargetType == 2019)
113 | {
114 | manager.To = new ToVC2019();
115 | }
116 | else if (cfg.TargetType == 2022)
117 | {
118 | manager.To = new ToVC2022();
119 | }
120 | else
121 | {
122 | manager.To = new ToVC2017();
123 | }
124 |
125 | cfg.UV4_Path = "C:\\Keil_v5\\UV4\\Uv4.exe";
126 | cfg.MacroDefine = manager.From.GetMacroDefine(cfg.FromFilePath);
127 | cfg.IncludePathOld = manager.From.GetIncludePath(cfg.FromFilePath);
128 | cfg.ProjFiles = manager.From.GetFiles(cfg.FromFilePath);
129 | cfg.TargetName = manager.From.GetTargetName(cfg.FromFilePath);
130 | this.ShowFiles(cfg.ProjFiles);
131 |
132 | cfg.ToFilter_FileFolders = manager.To.Get_ToFilter_FolderFiles(cfg);
133 | cfg.ToProj_Files = manager.To.Get_ToProj_Files(cfg);
134 | cfg.ToFilter_files = manager.To.Get_ToFilter_Folders(cfg);
135 | cfg.Projguid = Guid.NewGuid().ToString("B");
136 |
137 | var builder = new StringBuilder();
138 | builder.AppendLine(cfg.MacroDefineStr);
139 | builder.AppendLine(cfg.IncludePathStr);
140 |
141 | TargetStatus.Text= builder.ToString();
142 |
143 | comboBoxTarget.Items.Clear();
144 | foreach (var vn in manager.From.GetMacroTarget(cfg.FromFilePath))
145 | {
146 | comboBoxTarget.Items.Add(vn);
147 | }
148 | if (comboBoxTarget.Items.Count > 0)
149 | {
150 | comboBoxTarget.SelectedIndex = 0;
151 | }
152 | else
153 | comboBoxTarget.Text = "";
154 | }
155 |
156 | private void BtnTest_Click(object sender, EventArgs e)
157 | {
158 | BtnTrans_Click(sender, e);
159 | if (manager.From.GetMacroTarget(cfg.FromFilePath).Count > 0)
160 | cfg.TargetName = manager.From.GetMacroTarget(cfg.FromFilePath)[0];
161 | else
162 | cfg.TargetName = cfg.FileNameWithoutExtension;
163 |
164 | manager.To.Createvcxproj(cfg);
165 | manager.To.Createfilters(cfg);
166 | manager.To.Createsln(cfg);
167 | manager.To.Createlog(cfg);
168 | //manager.to.createvcxusers(cfg);
169 | label5.Text = "转换完:" + DateTime.Now.ToString("HH:mm:ss");
170 | bool has = false;
171 |
172 | foreach(var v in MDK2VCConfig.Current.StrMDKFilePathHis)
173 | {
174 | if (v.Equals(MDK2VCConfig.Current.StrMDKFilePath))
175 | has = true;
176 | }
177 | if(!has)
178 | {
179 | MDK2VCConfig.Current.StrMDKFilePathHis.Add(MDK2VCConfig.Current.StrMDKFilePath);
180 | MDK2VCConfig.Current.Save();
181 | }
182 | }
183 | ///
184 | /// 打开文件
185 | ///
186 | ///
187 | private void OpenFile(string file)
188 | {
189 | if (File.Exists(file))
190 | System.Diagnostics.Process.Start(file);
191 | else
192 | MessageBox.Show("文件不存在 " + file);
193 | }
194 |
195 | private void NotifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
196 | {
197 | if (WindowState == FormWindowState.Minimized)
198 | {
199 | //还原窗体显示
200 | WindowState = FormWindowState.Normal;
201 | //激活窗体并给予它焦点
202 | this.Activate();
203 | //任务栏区显示图标
204 | this.ShowInTaskbar = true;
205 | //托盘区图标隐藏
206 | notifyIcon1.Visible = false;
207 | }
208 | }
209 |
210 | private void 显示ToolStripMenuItem_Click(object sender, EventArgs e)
211 | {
212 | WindowState = FormWindowState.Normal;
213 | }
214 |
215 | private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
216 | {
217 | if (MessageBox.Show("是否确认退出程序?", "退出", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
218 | {
219 | // 关闭所有的线程
220 | this.Dispose();
221 | this.Close();
222 | }
223 | }
224 |
225 | private void FormMain_SizeChanged(object sender, EventArgs e)
226 | {
227 | //判断是否选择的是最小化按钮
228 | if (WindowState == FormWindowState.Minimized)
229 | {
230 | //隐藏任务栏区图标
231 | this.ShowInTaskbar = false;
232 | //图标显示在托盘区
233 | notifyIcon1.Visible = true;
234 | }
235 | }
236 | ///
237 | ///
238 | ///
239 | ///
240 | ///
241 | private void NotifyIcon1_DoubleClick(object sender, EventArgs e)
242 | {
243 | WindowState = FormWindowState.Normal;
244 | }
245 |
246 | ///
247 | /// 显示历史记录
248 | ///
249 | ///
250 | void ShowFiles(BTree tree1)
251 | {
252 | var tn = new TreeNode
253 | {
254 | Tag = tree1,
255 | Text = tree1.Data.Name
256 | };
257 | for (int i = 0; i < tree1.Nodes.Count; i++)
258 | {
259 | var tn1 = new TreeNode
260 | {
261 | Tag = tree1.Nodes[i],
262 | Text = tree1.Nodes[i].Data.Name
263 | };
264 |
265 | for (int j = 0; j < tree1.Nodes[i].Nodes.Count; j++)
266 | {
267 | var tn2 = new TreeNode
268 | {
269 | Tag = tree1.Nodes[i].Nodes[j],
270 | Text = tree1.Nodes[i].Nodes[j].Data.Name
271 | };
272 | for (int k = 0; k < tree1.Nodes[i].Nodes[j].Nodes.Count; k++)
273 | {
274 | var tn3 = new TreeNode
275 | {
276 | Tag = tree1.Nodes[i].Nodes[j].Nodes[k],
277 | Text = tree1.Nodes[i].Nodes[j].Nodes[k].Data.Name
278 | };
279 |
280 | for (int l = 0; l < tree1.Nodes[i].Nodes[j].Nodes[k].Nodes.Count; l++)
281 | {
282 | var tn4 = new TreeNode
283 | {
284 | Tag = tree1.Nodes[i].Nodes[j].Nodes[k].Nodes[l],
285 | Text = tree1.Nodes[i].Nodes[j].Nodes[k].Nodes[l].Data.Name
286 | };
287 |
288 | tn3.Nodes.Add(tn4);
289 | }
290 |
291 | tn2.Nodes.Add(tn3);
292 | }
293 | tn1.Nodes.Add(tn2);
294 | }
295 | tn.Nodes.Add(tn1);
296 | }
297 | treeView1.Nodes.Clear();
298 | treeView1.Nodes.Add(tn);
299 | }
300 |
301 | private void LabelOpenProj_Click(object sender, EventArgs e)
302 | {
303 | this.OpenFile(cfg.FromFilePath);
304 | }
305 |
306 | private void LabelOpenVC_Click(object sender, EventArgs e)
307 | {
308 | this.OpenFile(cfg.Sln);
309 | }
310 |
311 | private void BtnSelFileName_Click(object sender, EventArgs e)
312 | {
313 | var fileDlg = new OpenFileDialog
314 | {
315 | Multiselect = true,
316 | Title = "请选择文件",
317 | Filter = "MDK|*.uvprojx;*.uvproj;*cyprj;*.pro"
318 | };
319 | if (fileDlg.ShowDialog() == DialogResult.OK)
320 | {
321 | cfg.FromFilePath = fileDlg.FileName;
322 | comboBoxMDKPath.Items.Add(comboBoxMDKPath.Text);
323 | comboBoxMDKPath.Text = cfg.FromFilePath;
324 | tBoxSlnPath.Text = cfg.Sln;
325 |
326 | Properties.Settings.Default.LastFileName = cfg.FromFilePath;
327 | Properties.Settings.Default.Save();
328 | }
329 | MDK2VCConfig.Current.StrMDKFilePath = comboBoxMDKPath.Text;
330 | MDK2VCConfig.Current.Save();
331 | }
332 |
333 | private void checkBoxManulSetTarget_CheckedChanged(object sender, EventArgs e)
334 | {
335 | var chk = sender as CheckBox;
336 | buttonLoadManulTarget.Visible = chk.Checked;
337 | MDK2VCConfig.Current.OutputPathManulSet = checkBoxManulSetTarget.Checked;
338 | MDK2VCConfig.Current.Save();
339 | }
340 |
341 | private void comboBoxOutTarget_SelectedIndexChanged(object sender, EventArgs e)
342 | {
343 | var cmb = sender as ComboBox;
344 | MDK2VCConfig.Current.StrOutputPathTarget = cmb.Text;
345 | MDK2VCConfig.Current.Save();
346 | }
347 |
348 | private void comboBoxMDKPath_SelectedIndexChanged(object sender, EventArgs e)
349 | {
350 | var cmb = sender as ComboBox;
351 | MDK2VCConfig.Current.StrMDKFilePath = cmb.Text;
352 | MDK2VCConfig.Current.Save();
353 | cfg.FromFilePath = MDK2VCConfig.Current.StrMDKFilePath;
354 | tBoxSlnPath.Text = cfg.Sln;
355 | }
356 |
357 | private void 清理路径ToolStripMenuItem_Click(object sender, EventArgs e)
358 | {
359 | MDK2VCConfig.Current.StrMDKFilePathHis.Clear();
360 | MDK2VCConfig.Current.StrMDKFilePathHis.Add(MDK2VCConfig.Current.StrMDKFilePath);
361 | comboBoxMDKPath.Items.Clear();
362 | foreach (var v in MDK2VCConfig.Current.StrMDKFilePathHis)
363 | {
364 | comboBoxMDKPath.Items.Add(v);
365 | }
366 | MDK2VCConfig.Current.Save();
367 | }
368 |
369 | private void 使用说明ToolStripMenuItem_Click(object sender, EventArgs e)
370 | {
371 | new FormHelper().ShowDialog();
372 | }
373 | }
374 | }
375 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/UI/FormMain.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace MDK2VC
2 | {
3 | partial class FormMain
4 | {
5 | ///
6 | /// 必需的设计器变量。
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// 清理所有正在使用的资源。
12 | ///
13 | /// 如果应释放托管资源,为 true;否则为 false。
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows 窗体设计器生成的代码
24 |
25 | ///
26 | /// 设计器支持所需的方法 - 不要修改
27 | /// 使用代码编辑器修改此方法的内容。
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.components = new System.ComponentModel.Container();
32 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain));
33 | this.btnTrans = new System.Windows.Forms.Button();
34 | this.btnTest = new System.Windows.Forms.Button();
35 | this.label5 = new System.Windows.Forms.Label();
36 | this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
37 | this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
38 | this.显示ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
39 | this.退出ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
40 | this.statusStrip1 = new System.Windows.Forms.StatusStrip();
41 | this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
42 | this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel();
43 | this.toolStripStatusLabel3 = new System.Windows.Forms.ToolStripStatusLabel();
44 | this.toolStripStatusLabel4 = new System.Windows.Forms.ToolStripStatusLabel();
45 | this.toolStripStatusLabel5 = new System.Windows.Forms.ToolStripStatusLabel();
46 | this.treeView1 = new System.Windows.Forms.TreeView();
47 | this.groupBox1 = new System.Windows.Forms.GroupBox();
48 | this.btnSelFileName = new System.Windows.Forms.Button();
49 | this.comboBoxMDKPath = new System.Windows.Forms.ComboBox();
50 | this.labelOpenProj = new System.Windows.Forms.Label();
51 | this.groupBox4 = new System.Windows.Forms.GroupBox();
52 | this.TargetStatus = new System.Windows.Forms.TextBox();
53 | this.groupBox5 = new System.Windows.Forms.GroupBox();
54 | this.groupBox3 = new System.Windows.Forms.GroupBox();
55 | this.comboBoxTarget = new System.Windows.Forms.ComboBox();
56 | this.elementHost = new System.Windows.Forms.Integration.ElementHost();
57 | this.groupBox2 = new System.Windows.Forms.GroupBox();
58 | this.buttonLoadManulTarget = new System.Windows.Forms.Button();
59 | this.checkBoxManulSetTarget = new System.Windows.Forms.CheckBox();
60 | this.labelOpenVC = new System.Windows.Forms.Label();
61 | this.tBoxSlnPath = new System.Windows.Forms.TextBox();
62 | this.elementHost1 = new System.Windows.Forms.Integration.ElementHost();
63 | this.comboBoxOutTarget = new System.Windows.Forms.ComboBox();
64 | this.label1 = new System.Windows.Forms.Label();
65 | this.menuStrip1 = new System.Windows.Forms.MenuStrip();
66 | this.文件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
67 | this.退出ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
68 | this.工具ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
69 | this.清理路径ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
70 | this.帮助ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
71 | this.使用说明ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
72 | this.contextMenuStrip1.SuspendLayout();
73 | this.statusStrip1.SuspendLayout();
74 | this.groupBox1.SuspendLayout();
75 | this.groupBox4.SuspendLayout();
76 | this.groupBox5.SuspendLayout();
77 | this.groupBox3.SuspendLayout();
78 | this.groupBox2.SuspendLayout();
79 | this.menuStrip1.SuspendLayout();
80 | this.SuspendLayout();
81 | //
82 | // btnTrans
83 | //
84 | this.btnTrans.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
85 | this.btnTrans.Location = new System.Drawing.Point(11, 582);
86 | this.btnTrans.Name = "btnTrans";
87 | this.btnTrans.Size = new System.Drawing.Size(75, 23);
88 | this.btnTrans.TabIndex = 4;
89 | this.btnTrans.Text = "测试读取";
90 | this.btnTrans.UseVisualStyleBackColor = true;
91 | this.btnTrans.Click += new System.EventHandler(this.BtnTrans_Click);
92 | //
93 | // btnTest
94 | //
95 | this.btnTest.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
96 | this.btnTest.Location = new System.Drawing.Point(136, 582);
97 | this.btnTest.Name = "btnTest";
98 | this.btnTest.Size = new System.Drawing.Size(75, 23);
99 | this.btnTest.TabIndex = 9;
100 | this.btnTest.Text = "转换";
101 | this.btnTest.UseVisualStyleBackColor = true;
102 | this.btnTest.Click += new System.EventHandler(this.BtnTest_Click);
103 | //
104 | // label5
105 | //
106 | this.label5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
107 | this.label5.AutoSize = true;
108 | this.label5.Location = new System.Drawing.Point(261, 587);
109 | this.label5.Name = "label5";
110 | this.label5.Size = new System.Drawing.Size(41, 12);
111 | this.label5.TabIndex = 15;
112 | this.label5.Text = "未转换";
113 | //
114 | // notifyIcon1
115 | //
116 | this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip1;
117 | this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
118 | this.notifyIcon1.Text = "MDK2VC";
119 | this.notifyIcon1.Visible = true;
120 | this.notifyIcon1.DoubleClick += new System.EventHandler(this.NotifyIcon1_DoubleClick);
121 | this.notifyIcon1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.NotifyIcon1_MouseDoubleClick);
122 | //
123 | // contextMenuStrip1
124 | //
125 | this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
126 | this.显示ToolStripMenuItem,
127 | this.退出ToolStripMenuItem});
128 | this.contextMenuStrip1.Name = "contextMenuStrip1";
129 | this.contextMenuStrip1.Size = new System.Drawing.Size(101, 48);
130 | //
131 | // 显示ToolStripMenuItem
132 | //
133 | this.显示ToolStripMenuItem.Name = "显示ToolStripMenuItem";
134 | this.显示ToolStripMenuItem.Size = new System.Drawing.Size(100, 22);
135 | this.显示ToolStripMenuItem.Text = "显示";
136 | this.显示ToolStripMenuItem.Click += new System.EventHandler(this.显示ToolStripMenuItem_Click);
137 | //
138 | // 退出ToolStripMenuItem
139 | //
140 | this.退出ToolStripMenuItem.Name = "退出ToolStripMenuItem";
141 | this.退出ToolStripMenuItem.Size = new System.Drawing.Size(100, 22);
142 | this.退出ToolStripMenuItem.Text = "退出";
143 | this.退出ToolStripMenuItem.Click += new System.EventHandler(this.退出ToolStripMenuItem_Click);
144 | //
145 | // statusStrip1
146 | //
147 | this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
148 | this.toolStripStatusLabel1,
149 | this.toolStripStatusLabel2,
150 | this.toolStripStatusLabel3,
151 | this.toolStripStatusLabel4,
152 | this.toolStripStatusLabel5});
153 | this.statusStrip1.Location = new System.Drawing.Point(0, 611);
154 | this.statusStrip1.Name = "statusStrip1";
155 | this.statusStrip1.Size = new System.Drawing.Size(784, 22);
156 | this.statusStrip1.TabIndex = 17;
157 | this.statusStrip1.Text = "statusStrip1";
158 | //
159 | // toolStripStatusLabel1
160 | //
161 | this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
162 | this.toolStripStatusLabel1.Size = new System.Drawing.Size(176, 17);
163 | this.toolStripStatusLabel1.Text = "双击\"MDK项目\"打开MDK工程 ";
164 | //
165 | // toolStripStatusLabel2
166 | //
167 | this.toolStripStatusLabel2.Name = "toolStripStatusLabel2";
168 | this.toolStripStatusLabel2.Size = new System.Drawing.Size(11, 17);
169 | this.toolStripStatusLabel2.Text = "|";
170 | //
171 | // toolStripStatusLabel3
172 | //
173 | this.toolStripStatusLabel3.Name = "toolStripStatusLabel3";
174 | this.toolStripStatusLabel3.Size = new System.Drawing.Size(146, 17);
175 | this.toolStripStatusLabel3.Text = "双击\"VC工程\"打开VC工程";
176 | //
177 | // toolStripStatusLabel4
178 | //
179 | this.toolStripStatusLabel4.Name = "toolStripStatusLabel4";
180 | this.toolStripStatusLabel4.Size = new System.Drawing.Size(11, 17);
181 | this.toolStripStatusLabel4.Text = "|";
182 | //
183 | // toolStripStatusLabel5
184 | //
185 | this.toolStripStatusLabel5.Name = "toolStripStatusLabel5";
186 | this.toolStripStatusLabel5.Size = new System.Drawing.Size(116, 17);
187 | this.toolStripStatusLabel5.Text = "最小化后到系统托盘";
188 | //
189 | // treeView1
190 | //
191 | this.treeView1.Dock = System.Windows.Forms.DockStyle.Fill;
192 | this.treeView1.Location = new System.Drawing.Point(3, 19);
193 | this.treeView1.Name = "treeView1";
194 | this.treeView1.Size = new System.Drawing.Size(761, 227);
195 | this.treeView1.TabIndex = 18;
196 | //
197 | // groupBox1
198 | //
199 | this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
200 | | System.Windows.Forms.AnchorStyles.Right)));
201 | this.groupBox1.Controls.Add(this.btnSelFileName);
202 | this.groupBox1.Controls.Add(this.comboBoxMDKPath);
203 | this.groupBox1.Controls.Add(this.labelOpenProj);
204 | this.groupBox1.Location = new System.Drawing.Point(12, 12);
205 | this.groupBox1.Name = "groupBox1";
206 | this.groupBox1.Size = new System.Drawing.Size(760, 54);
207 | this.groupBox1.TabIndex = 19;
208 | this.groupBox1.TabStop = false;
209 | this.groupBox1.Text = "Project File Path";
210 | //
211 | // btnSelFileName
212 | //
213 | this.btnSelFileName.Anchor = System.Windows.Forms.AnchorStyles.Right;
214 | this.btnSelFileName.Location = new System.Drawing.Point(699, 18);
215 | this.btnSelFileName.Name = "btnSelFileName";
216 | this.btnSelFileName.Size = new System.Drawing.Size(51, 23);
217 | this.btnSelFileName.TabIndex = 5;
218 | this.btnSelFileName.Text = "...";
219 | this.btnSelFileName.UseVisualStyleBackColor = true;
220 | this.btnSelFileName.Click += new System.EventHandler(this.BtnSelFileName_Click);
221 | //
222 | // comboBoxMDKPath
223 | //
224 | this.comboBoxMDKPath.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
225 | | System.Windows.Forms.AnchorStyles.Left)
226 | | System.Windows.Forms.AnchorStyles.Right)));
227 | this.comboBoxMDKPath.FormattingEnabled = true;
228 | this.comboBoxMDKPath.Location = new System.Drawing.Point(44, 19);
229 | this.comboBoxMDKPath.Name = "comboBoxMDKPath";
230 | this.comboBoxMDKPath.Size = new System.Drawing.Size(648, 20);
231 | this.comboBoxMDKPath.TabIndex = 4;
232 | this.comboBoxMDKPath.SelectedIndexChanged += new System.EventHandler(this.comboBoxMDKPath_SelectedIndexChanged);
233 | //
234 | // labelOpenProj
235 | //
236 | this.labelOpenProj.AutoSize = true;
237 | this.labelOpenProj.Location = new System.Drawing.Point(9, 23);
238 | this.labelOpenProj.Name = "labelOpenProj";
239 | this.labelOpenProj.Size = new System.Drawing.Size(29, 12);
240 | this.labelOpenProj.TabIndex = 3;
241 | this.labelOpenProj.Text = "Open";
242 | this.labelOpenProj.Click += new System.EventHandler(this.LabelOpenProj_Click);
243 | //
244 | // groupBox4
245 | //
246 | this.groupBox4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
247 | | System.Windows.Forms.AnchorStyles.Right)));
248 | this.groupBox4.Controls.Add(this.TargetStatus);
249 | this.groupBox4.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
250 | this.groupBox4.Location = new System.Drawing.Point(4, 230);
251 | this.groupBox4.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
252 | this.groupBox4.Name = "groupBox4";
253 | this.groupBox4.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4);
254 | this.groupBox4.Size = new System.Drawing.Size(766, 90);
255 | this.groupBox4.TabIndex = 21;
256 | this.groupBox4.TabStop = false;
257 | this.groupBox4.Text = "Target Info";
258 | //
259 | // TargetStatus
260 | //
261 | this.TargetStatus.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
262 | | System.Windows.Forms.AnchorStyles.Left)
263 | | System.Windows.Forms.AnchorStyles.Right)));
264 | this.TargetStatus.BackColor = System.Drawing.SystemColors.Window;
265 | this.TargetStatus.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
266 | this.TargetStatus.Location = new System.Drawing.Point(6, 16);
267 | this.TargetStatus.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
268 | this.TargetStatus.Multiline = true;
269 | this.TargetStatus.Name = "TargetStatus";
270 | this.TargetStatus.ReadOnly = true;
271 | this.TargetStatus.ScrollBars = System.Windows.Forms.ScrollBars.Both;
272 | this.TargetStatus.Size = new System.Drawing.Size(754, 66);
273 | this.TargetStatus.TabIndex = 0;
274 | //
275 | // groupBox5
276 | //
277 | this.groupBox5.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
278 | | System.Windows.Forms.AnchorStyles.Left)
279 | | System.Windows.Forms.AnchorStyles.Right)));
280 | this.groupBox5.Controls.Add(this.treeView1);
281 | this.groupBox5.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
282 | this.groupBox5.Location = new System.Drawing.Point(5, 328);
283 | this.groupBox5.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
284 | this.groupBox5.Name = "groupBox5";
285 | this.groupBox5.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4);
286 | this.groupBox5.Size = new System.Drawing.Size(767, 250);
287 | this.groupBox5.TabIndex = 22;
288 | this.groupBox5.TabStop = false;
289 | this.groupBox5.Text = "Source Groups";
290 | //
291 | // groupBox3
292 | //
293 | this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
294 | | System.Windows.Forms.AnchorStyles.Right)));
295 | this.groupBox3.Controls.Add(this.comboBoxTarget);
296 | this.groupBox3.Controls.Add(this.elementHost);
297 | this.groupBox3.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
298 | this.groupBox3.Location = new System.Drawing.Point(8, 166);
299 | this.groupBox3.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
300 | this.groupBox3.Name = "groupBox3";
301 | this.groupBox3.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4);
302 | this.groupBox3.Size = new System.Drawing.Size(760, 56);
303 | this.groupBox3.TabIndex = 23;
304 | this.groupBox3.TabStop = false;
305 | this.groupBox3.Text = "Target Groups";
306 | //
307 | // comboBoxTarget
308 | //
309 | this.comboBoxTarget.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
310 | | System.Windows.Forms.AnchorStyles.Left)
311 | | System.Windows.Forms.AnchorStyles.Right)));
312 | this.comboBoxTarget.FormattingEnabled = true;
313 | this.comboBoxTarget.Location = new System.Drawing.Point(12, 22);
314 | this.comboBoxTarget.Name = "comboBoxTarget";
315 | this.comboBoxTarget.Size = new System.Drawing.Size(735, 22);
316 | this.comboBoxTarget.TabIndex = 14;
317 | //
318 | // elementHost
319 | //
320 | this.elementHost.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
321 | | System.Windows.Forms.AnchorStyles.Left)
322 | | System.Windows.Forms.AnchorStyles.Right)));
323 | this.elementHost.Location = new System.Drawing.Point(6, 16);
324 | this.elementHost.Name = "elementHost";
325 | this.elementHost.Size = new System.Drawing.Size(748, 33);
326 | this.elementHost.TabIndex = 11;
327 | this.elementHost.Text = "elementHost1";
328 | this.elementHost.Child = null;
329 | //
330 | // groupBox2
331 | //
332 | this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
333 | | System.Windows.Forms.AnchorStyles.Right)));
334 | this.groupBox2.Controls.Add(this.buttonLoadManulTarget);
335 | this.groupBox2.Controls.Add(this.checkBoxManulSetTarget);
336 | this.groupBox2.Controls.Add(this.labelOpenVC);
337 | this.groupBox2.Controls.Add(this.tBoxSlnPath);
338 | this.groupBox2.Controls.Add(this.elementHost1);
339 | this.groupBox2.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
340 | this.groupBox2.Location = new System.Drawing.Point(10, 73);
341 | this.groupBox2.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
342 | this.groupBox2.Name = "groupBox2";
343 | this.groupBox2.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4);
344 | this.groupBox2.Size = new System.Drawing.Size(760, 85);
345 | this.groupBox2.TabIndex = 24;
346 | this.groupBox2.TabStop = false;
347 | this.groupBox2.Text = "Target";
348 | //
349 | // buttonLoadManulTarget
350 | //
351 | this.buttonLoadManulTarget.Anchor = System.Windows.Forms.AnchorStyles.Right;
352 | this.buttonLoadManulTarget.Location = new System.Drawing.Point(700, 22);
353 | this.buttonLoadManulTarget.Name = "buttonLoadManulTarget";
354 | this.buttonLoadManulTarget.Size = new System.Drawing.Size(51, 23);
355 | this.buttonLoadManulTarget.TabIndex = 15;
356 | this.buttonLoadManulTarget.Text = "...";
357 | this.buttonLoadManulTarget.UseVisualStyleBackColor = true;
358 | this.buttonLoadManulTarget.Visible = false;
359 | //
360 | // checkBoxManulSetTarget
361 | //
362 | this.checkBoxManulSetTarget.AutoSize = true;
363 | this.checkBoxManulSetTarget.Location = new System.Drawing.Point(13, 50);
364 | this.checkBoxManulSetTarget.Name = "checkBoxManulSetTarget";
365 | this.checkBoxManulSetTarget.Size = new System.Drawing.Size(166, 18);
366 | this.checkBoxManulSetTarget.TabIndex = 14;
367 | this.checkBoxManulSetTarget.Text = "手动设置输出工程路径";
368 | this.checkBoxManulSetTarget.UseVisualStyleBackColor = true;
369 | this.checkBoxManulSetTarget.CheckedChanged += new System.EventHandler(this.checkBoxManulSetTarget_CheckedChanged);
370 | //
371 | // labelOpenVC
372 | //
373 | this.labelOpenVC.AutoSize = true;
374 | this.labelOpenVC.Location = new System.Drawing.Point(10, 25);
375 | this.labelOpenVC.Name = "labelOpenVC";
376 | this.labelOpenVC.Size = new System.Drawing.Size(35, 14);
377 | this.labelOpenVC.TabIndex = 13;
378 | this.labelOpenVC.Text = "Open";
379 | this.labelOpenVC.Click += new System.EventHandler(this.LabelOpenVC_Click);
380 | //
381 | // tBoxSlnPath
382 | //
383 | this.tBoxSlnPath.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
384 | | System.Windows.Forms.AnchorStyles.Left)
385 | | System.Windows.Forms.AnchorStyles.Right)));
386 | this.tBoxSlnPath.Location = new System.Drawing.Point(45, 22);
387 | this.tBoxSlnPath.Name = "tBoxSlnPath";
388 | this.tBoxSlnPath.ReadOnly = true;
389 | this.tBoxSlnPath.Size = new System.Drawing.Size(649, 22);
390 | this.tBoxSlnPath.TabIndex = 12;
391 | //
392 | // elementHost1
393 | //
394 | this.elementHost1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
395 | | System.Windows.Forms.AnchorStyles.Left)
396 | | System.Windows.Forms.AnchorStyles.Right)));
397 | this.elementHost1.Location = new System.Drawing.Point(6, 16);
398 | this.elementHost1.Name = "elementHost1";
399 | this.elementHost1.Size = new System.Drawing.Size(748, 62);
400 | this.elementHost1.TabIndex = 11;
401 | this.elementHost1.Text = "elementHost1";
402 | this.elementHost1.Child = null;
403 | //
404 | // comboBoxOutTarget
405 | //
406 | this.comboBoxOutTarget.FormattingEnabled = true;
407 | this.comboBoxOutTarget.Items.AddRange(new object[] {
408 | "VC2022",
409 | "VC2019",
410 | "VC2017",
411 | "VC2013"});
412 | this.comboBoxOutTarget.Location = new System.Drawing.Point(552, 512);
413 | this.comboBoxOutTarget.Name = "comboBoxOutTarget";
414 | this.comboBoxOutTarget.Size = new System.Drawing.Size(121, 20);
415 | this.comboBoxOutTarget.TabIndex = 25;
416 | this.comboBoxOutTarget.Text = "VC2019";
417 | this.comboBoxOutTarget.SelectedIndexChanged += new System.EventHandler(this.comboBoxOutTarget_SelectedIndexChanged);
418 | //
419 | // label1
420 | //
421 | this.label1.AutoSize = true;
422 | this.label1.Location = new System.Drawing.Point(484, 515);
423 | this.label1.Name = "label1";
424 | this.label1.Size = new System.Drawing.Size(53, 12);
425 | this.label1.TabIndex = 26;
426 | this.label1.Text = "输出目标";
427 | //
428 | // menuStrip1
429 | //
430 | this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
431 | this.文件ToolStripMenuItem,
432 | this.工具ToolStripMenuItem,
433 | this.帮助ToolStripMenuItem});
434 | this.menuStrip1.Location = new System.Drawing.Point(0, 0);
435 | this.menuStrip1.Name = "menuStrip1";
436 | this.menuStrip1.Size = new System.Drawing.Size(784, 25);
437 | this.menuStrip1.TabIndex = 27;
438 | this.menuStrip1.Text = "menuStrip1";
439 | //
440 | // 文件ToolStripMenuItem
441 | //
442 | this.文件ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
443 | this.退出ToolStripMenuItem1});
444 | this.文件ToolStripMenuItem.Name = "文件ToolStripMenuItem";
445 | this.文件ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
446 | this.文件ToolStripMenuItem.Text = "文件";
447 | //
448 | // 退出ToolStripMenuItem1
449 | //
450 | this.退出ToolStripMenuItem1.Name = "退出ToolStripMenuItem1";
451 | this.退出ToolStripMenuItem1.Size = new System.Drawing.Size(100, 22);
452 | this.退出ToolStripMenuItem1.Text = "退出";
453 | //
454 | // 工具ToolStripMenuItem
455 | //
456 | this.工具ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
457 | this.清理路径ToolStripMenuItem});
458 | this.工具ToolStripMenuItem.Name = "工具ToolStripMenuItem";
459 | this.工具ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
460 | this.工具ToolStripMenuItem.Text = "工具";
461 | //
462 | // 清理路径ToolStripMenuItem
463 | //
464 | this.清理路径ToolStripMenuItem.Name = "清理路径ToolStripMenuItem";
465 | this.清理路径ToolStripMenuItem.Size = new System.Drawing.Size(124, 22);
466 | this.清理路径ToolStripMenuItem.Text = "清理路径";
467 | this.清理路径ToolStripMenuItem.Click += new System.EventHandler(this.清理路径ToolStripMenuItem_Click);
468 | //
469 | // 帮助ToolStripMenuItem
470 | //
471 | this.帮助ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
472 | this.使用说明ToolStripMenuItem});
473 | this.帮助ToolStripMenuItem.Name = "帮助ToolStripMenuItem";
474 | this.帮助ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
475 | this.帮助ToolStripMenuItem.Text = "帮助";
476 | //
477 | // 使用说明ToolStripMenuItem
478 | //
479 | this.使用说明ToolStripMenuItem.Name = "使用说明ToolStripMenuItem";
480 | this.使用说明ToolStripMenuItem.Size = new System.Drawing.Size(124, 22);
481 | this.使用说明ToolStripMenuItem.Text = "使用说明";
482 | this.使用说明ToolStripMenuItem.Click += new System.EventHandler(this.使用说明ToolStripMenuItem_Click);
483 | //
484 | // FormMain
485 | //
486 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
487 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
488 | this.ClientSize = new System.Drawing.Size(784, 633);
489 | this.Controls.Add(this.menuStrip1);
490 | this.Controls.Add(this.label1);
491 | this.Controls.Add(this.comboBoxOutTarget);
492 | this.Controls.Add(this.groupBox2);
493 | this.Controls.Add(this.groupBox3);
494 | this.Controls.Add(this.groupBox5);
495 | this.Controls.Add(this.groupBox4);
496 | this.Controls.Add(this.groupBox1);
497 | this.Controls.Add(this.statusStrip1);
498 | this.Controls.Add(this.label5);
499 | this.Controls.Add(this.btnTest);
500 | this.Controls.Add(this.btnTrans);
501 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
502 | this.Name = "FormMain";
503 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
504 | this.Text = "MDK4 MDK5 QT5 2 VC2019 VC2017";
505 | this.Load += new System.EventHandler(this.FormMain_Load);
506 | this.SizeChanged += new System.EventHandler(this.FormMain_SizeChanged);
507 | this.contextMenuStrip1.ResumeLayout(false);
508 | this.statusStrip1.ResumeLayout(false);
509 | this.statusStrip1.PerformLayout();
510 | this.groupBox1.ResumeLayout(false);
511 | this.groupBox1.PerformLayout();
512 | this.groupBox4.ResumeLayout(false);
513 | this.groupBox4.PerformLayout();
514 | this.groupBox5.ResumeLayout(false);
515 | this.groupBox3.ResumeLayout(false);
516 | this.groupBox2.ResumeLayout(false);
517 | this.groupBox2.PerformLayout();
518 | this.menuStrip1.ResumeLayout(false);
519 | this.menuStrip1.PerformLayout();
520 | this.ResumeLayout(false);
521 | this.PerformLayout();
522 |
523 | }
524 |
525 | #endregion
526 | private System.Windows.Forms.Button btnTrans;
527 | private System.Windows.Forms.Button btnTest;
528 | private System.Windows.Forms.Label label5;
529 | private System.Windows.Forms.NotifyIcon notifyIcon1;
530 | private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
531 | private System.Windows.Forms.ToolStripMenuItem 显示ToolStripMenuItem;
532 | private System.Windows.Forms.ToolStripMenuItem 退出ToolStripMenuItem;
533 | private System.Windows.Forms.StatusStrip statusStrip1;
534 | private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
535 | private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel2;
536 | private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel3;
537 | private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel4;
538 | private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel5;
539 | private System.Windows.Forms.TreeView treeView1;
540 | private System.Windows.Forms.GroupBox groupBox1;
541 | private System.Windows.Forms.GroupBox groupBox4;
542 | private System.Windows.Forms.TextBox TargetStatus;
543 | private System.Windows.Forms.GroupBox groupBox5;
544 | private System.Windows.Forms.GroupBox groupBox3;
545 | public System.Windows.Forms.Integration.ElementHost elementHost;
546 | private System.Windows.Forms.Label labelOpenProj;
547 | private System.Windows.Forms.GroupBox groupBox2;
548 | private System.Windows.Forms.Label labelOpenVC;
549 | public System.Windows.Forms.Integration.ElementHost elementHost1;
550 | private System.Windows.Forms.ComboBox comboBoxTarget;
551 | private System.Windows.Forms.TextBox tBoxSlnPath;
552 | private System.Windows.Forms.ComboBox comboBoxMDKPath;
553 | private System.Windows.Forms.Button btnSelFileName;
554 | private System.Windows.Forms.ComboBox comboBoxOutTarget;
555 | private System.Windows.Forms.Label label1;
556 | private System.Windows.Forms.CheckBox checkBoxManulSetTarget;
557 | private System.Windows.Forms.Button buttonLoadManulTarget;
558 | private System.Windows.Forms.MenuStrip menuStrip1;
559 | private System.Windows.Forms.ToolStripMenuItem 文件ToolStripMenuItem;
560 | private System.Windows.Forms.ToolStripMenuItem 工具ToolStripMenuItem;
561 | private System.Windows.Forms.ToolStripMenuItem 清理路径ToolStripMenuItem;
562 | private System.Windows.Forms.ToolStripMenuItem 退出ToolStripMenuItem1;
563 | private System.Windows.Forms.ToolStripMenuItem 帮助ToolStripMenuItem;
564 | private System.Windows.Forms.ToolStripMenuItem 使用说明ToolStripMenuItem;
565 | }
566 | }
567 |
568 |
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/Xml/To/ToVCBase.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.Text;
4 |
5 | namespace MDK2VC.M2V.Xml
6 | {
7 | public class ToVCBase
8 | {
9 | public void Createfilters(SysConfig cfg)
10 | {
11 | var builder = new StringBuilder();
12 |
13 | builder.AppendLine("");
14 | builder.AppendLine("");
15 | builder.AppendLine(" ");
16 | builder.Append(cfg.ToFilter_files.ToString());
17 | builder.AppendLine(" ");
18 | builder.AppendLine(" ");
19 | builder.Append(cfg.ToFilter_FileFolders.ToString());
20 | builder.AppendLine(" ");
21 | builder.AppendLine("");
22 | var fs = new FileStream(cfg.Filters, FileMode.Create);
23 | byte[] data = new UTF8Encoding().GetBytes(builder.ToString());
24 | fs.Write(data);
25 | fs.Flush();
26 | fs.Close();
27 | }
28 | ///
29 | /// 生成日志文件
30 | ///
31 | /// 配置文件
32 | public void Createlog(SysConfig cfg)
33 | {
34 | var Buildlog = cfg.DirectoryName + "\\Build.log";
35 | var flash_downloadlog = cfg.DirectoryName + "\\flash_download.log";
36 | if (!File.Exists(Buildlog))
37 | File.Create(Buildlog);
38 | if (!File.Exists(flash_downloadlog))
39 | File.Create(flash_downloadlog);
40 | }
41 | public void CreateslnBase(SysConfig cfg,string str)
42 | {
43 | var builder = new StringBuilder();
44 |
45 | builder.Append(str);
46 | builder.Append("Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"");
47 | builder.Append(cfg.FileNameWithoutExtension);
48 | builder.Append("\",\"");
49 | builder.Append(cfg.FileNameWithoutExtension);
50 | builder.Append(".vcxproj\", \"");
51 | builder.Append(cfg.Projguidvc);
52 | builder.AppendLine("\"");
53 | builder.AppendLine("EndProject");
54 | builder.AppendLine("Global");
55 | builder.AppendLine(" GlobalSection(SolutionConfigurationPlatforms) = preSolution");
56 | builder.Append(" ");
57 | builder.Append(cfg.FileNameWithoutExtension);
58 | builder.Append("|x86 = ");
59 | builder.Append(cfg.FileNameWithoutExtension);
60 | builder.AppendLine("|x86");
61 | builder.AppendLine(" EndGlobalSection");
62 | builder.AppendLine(" GlobalSection(ProjectConfigurationPlatforms) = postSolution");
63 | builder.Append(" ");
64 | builder.Append(cfg.Projguidvc);
65 | builder.Append(".");
66 | builder.Append(cfg.FileNameWithoutExtension);
67 | builder.Append("|x86.ActiveCfg = ");
68 | builder.Append(cfg.FileNameWithoutExtension);
69 | builder.AppendLine("|Win32");
70 | builder.Append(" ");
71 | builder.Append(cfg.Projguidvc);
72 | builder.Append(".");
73 | builder.Append(cfg.FileNameWithoutExtension);
74 | builder.Append("|x86.Build.0 = ");
75 | builder.Append(cfg.FileNameWithoutExtension);
76 | builder.AppendLine("|Win32");
77 | builder.AppendLine(" EndGlobalSection");
78 | builder.AppendLine(" GlobalSection(SolutionProperties) = preSolution");
79 | builder.AppendLine(" HideSolutionNode = FALSE");
80 | builder.AppendLine(" EndGlobalSection");
81 | builder.AppendLine(" GlobalSection(ExtensibilityGlobals) = postSolution");
82 | builder.AppendLine(" SolutionGuid = {133C6D99-11F2-4EE7-A3DA-7F3CF3AB45A5}");
83 | builder.AppendLine(" EndGlobalSection");
84 | builder.AppendLine("EndGlobal");
85 |
86 | var fs = new FileStream(cfg.Sln, FileMode.Create);
87 | byte[] data = new UTF8Encoding().GetBytes(builder.ToString());
88 | fs.Write(data);
89 | fs.Flush();
90 | fs.Close();
91 | }
92 |
93 | public void CreatevcxprojBase(SysConfig cfg, int type = 0)
94 | {
95 | var builder = new StringBuilder();
96 | builder.AppendLine("");
97 | builder.AppendLine("");
98 | builder.AppendLine(" ");
99 | builder.AppendLine(" ");
100 | builder.AppendLine(" Debug");
101 | builder.AppendLine(" Win32");
102 | builder.AppendLine(" ");
103 | builder.AppendLine(" ");
104 | builder.AppendLine(" Release");
105 | builder.AppendLine(" Win32");
106 | builder.AppendLine(" ");
107 | builder.AppendLine(" ");
108 | builder.AppendLine(" Debug");
109 | builder.AppendLine(" x64");
110 | builder.AppendLine(" ");
111 | builder.AppendLine(" ");
112 | builder.AppendLine(" Release");
113 | builder.AppendLine(" x64");
114 | builder.AppendLine(" ");
115 | builder.AppendLine(" ");
116 | builder.AppendLine(" ");
117 | builder.AppendLine(" 15.0");
118 | builder.Append(" ").Append(cfg.Projguidvc).AppendLine("");
119 | builder.AppendLine(" STM32F1");
120 | builder.AppendLine(" 10.0");
121 | builder.AppendLine(" ");
122 | builder.AppendLine(" ");
123 | builder.AppendLine(" ");
124 | builder.AppendLine(" Application");
125 | builder.AppendLine(" true");
126 | builder.AppendLine($" v{type}");
127 | builder.AppendLine(" MultiByte");
128 | builder.AppendLine(" ");
129 | builder.AppendLine(" ");
130 | builder.AppendLine(" Application");
131 | builder.AppendLine(" false");
132 | builder.AppendLine($" v{type}");
133 | builder.AppendLine(" true");
134 | builder.AppendLine(" MultiByte");
135 | builder.AppendLine(" ");
136 | builder.AppendLine(" ");
137 | builder.AppendLine(" Application");
138 | builder.AppendLine(" true");
139 | builder.AppendLine($" v{type}");
140 | builder.AppendLine(" MultiByte");
141 | builder.AppendLine(" ");
142 | builder.AppendLine(" ");
143 | builder.AppendLine(" Application");
144 | builder.AppendLine(" false");
145 | builder.AppendLine($" v{type}");
146 | builder.AppendLine(" true");
147 | builder.AppendLine(" MultiByte");
148 | builder.AppendLine(" ");
149 | builder.AppendLine(" ");
150 | builder.AppendLine(" ");
151 | builder.AppendLine(" ");
152 | builder.AppendLine(" ");
153 | builder.AppendLine(" ");
154 | builder.AppendLine(" ");
155 | builder.AppendLine(" ");
156 | builder.AppendLine(" ");
157 | builder.AppendLine(" ");
158 | builder.AppendLine(" ");
159 | builder.AppendLine(" ");
160 | builder.AppendLine(" ");
161 | builder.AppendLine(" ");
162 | builder.AppendLine(" ");
163 | builder.AppendLine(" ");
164 | builder.AppendLine(" ");
165 | builder.AppendLine(" ");
166 | builder.AppendLine(" ");
167 | builder.AppendLine(" ");
168 | builder.AppendLine(" ");
169 | builder.AppendLine(" ");
170 | builder.AppendLine(" Level3");
171 | builder.AppendLine(" Disabled");
172 | builder.AppendLine(" true");
173 | builder.AppendLine(" true");
174 | builder.AppendLine(this.GetIncludePathVC(cfg));
175 | builder.AppendLine(this.GetMacroDefineVC(cfg.MacroDefineStr));
176 | builder.AppendLine(" ");
177 | builder.AppendLine(" ");
178 | builder.AppendLine(" ");
179 | builder.AppendLine(" ");
180 | builder.AppendLine(" Level3");
181 | builder.AppendLine(" Disabled");
182 | builder.AppendLine(" true");
183 | builder.AppendLine(" true");
184 | builder.AppendLine(this.GetIncludePathVC(cfg));
185 | builder.AppendLine(this.GetMacroDefineVC(cfg.MacroDefineStr));
186 | builder.AppendLine(" ");
187 | builder.AppendLine(" ");
188 | builder.AppendLine(" ");
189 | builder.AppendLine(" ");
190 | builder.AppendLine(" Level3");
191 | builder.AppendLine(" MaxSpeed");
192 | builder.AppendLine(" true");
193 | builder.AppendLine(" true");
194 | builder.AppendLine(" true");
195 | builder.AppendLine(" true");
196 | builder.AppendLine(this.GetIncludePathVC(cfg));
197 | builder.AppendLine(this.GetMacroDefineVC(cfg.MacroDefineStr));
198 | builder.AppendLine(" ");
199 | builder.AppendLine(" ");
200 | builder.AppendLine(" true");
201 | builder.AppendLine(" true");
202 | builder.AppendLine(" ");
203 | builder.AppendLine(" ");
204 | builder.AppendLine(" ");
205 | builder.AppendLine(" ");
206 | builder.AppendLine(" Level3");
207 | builder.AppendLine(" MaxSpeed");
208 | builder.AppendLine(" true");
209 | builder.AppendLine(" true");
210 | builder.AppendLine(" true");
211 | builder.AppendLine(" true");
212 | builder.AppendLine(this.GetIncludePathVC(cfg));
213 | builder.AppendLine(this.GetMacroDefineVC(cfg.MacroDefineStr));
214 | builder.AppendLine(" ");
215 | builder.AppendLine(@" ");
216 | builder.AppendLine(@" true");
217 | builder.AppendLine(@" true");
218 | builder.AppendLine(@" ");
219 | builder.AppendLine(@" ");
220 | builder.AppendLine(@" ");
221 | builder.Append(cfg.ToProj_Files.ToString());
222 | builder.AppendLine(@" ");
223 | builder.AppendLine(" ");
224 | builder.AppendLine(" ");
225 | builder.AppendLine(@" ");
226 | builder.AppendLine(@"");
227 |
228 | if (!Directory.Exists(cfg.VCPath))
229 | {
230 | Directory.CreateDirectory(cfg.VCPath);
231 | }
232 | var fs = new FileStream(cfg.Vcxproj, FileMode.Create);
233 | byte[] data = new UTF8Encoding().GetBytes(builder.ToString());
234 | fs.Write(data);
235 | fs.Flush();
236 | fs.Close();
237 | }
238 | ///
239 | /// 创建users文件
240 | ///
241 | ///
242 | public void Createvcxusers(SysConfig cfg)
243 | {
244 | var builder = new StringBuilder();
245 | builder.AppendLine("");
246 | builder.AppendLine("");
247 | builder.AppendLine(" ");
248 | builder.Append(@" ");
249 | builder.Append(cfg.UV4_Path);
250 | builder.AppendLine(@" ");
251 | builder.Append(" -d ");
252 | builder.Append(cfg.FileNameWithoutExtension);
253 | builder.Append(".uvproj -t \"");
254 | builder.Append(cfg.FileNameWithoutExtension);
255 | builder.Append("\"");
256 | builder.AppendLine("\"");
257 | builder.Append(@" ");
258 | builder.Append(@"..\");
259 | builder.AppendLine(@"");
260 | builder.AppendLine(" WindowsLocalDebugger");
261 | builder.AppendLine(" ");
262 | builder.AppendLine(" ");
263 | builder.AppendLine(" false");
264 | builder.AppendLine(" ");
265 | builder.AppendLine("");
266 | var fs = new FileStream(cfg.Vcusers, FileMode.Create);
267 | byte[] data = new UTF8Encoding().GetBytes(builder.ToString());
268 | fs.Write(data);
269 | fs.Flush();
270 | fs.Close();
271 | }
272 | ///
273 | /// 获取过滤器文件、文件夹列表
274 | ///
275 | ///
276 | ///
277 | public string Get_ToFilter_FolderFiles(SysConfig cfg)
278 | {
279 | var builder = new StringBuilder();
280 |
281 | for (int i = 0; i < cfg.ProjFiles.Nodes.Count; i++)
282 | {
283 | for (int j = 0; j < cfg.ProjFiles.Nodes[i].Nodes.Count; j++)
284 | {
285 | for (int k = 0; k < cfg.ProjFiles.Nodes[i].Nodes[j].Nodes.Count; k++)
286 | {
287 | for (int l = 0; l < cfg.ProjFiles.Nodes[i].Nodes[j].Nodes[k].Nodes.Count; l++)
288 | {
289 | for (int m = 0; m < cfg.ProjFiles.Nodes[i].Nodes[j].Nodes[k].Nodes[l].Nodes.Count; m++)
290 | {
291 |
292 |
293 | if (cfg.ProjFiles.Nodes[i].Nodes[j].Nodes[k].Nodes[l].Nodes.Count == 0)
294 | {
295 | builder.Append(" ");
304 | var path2 = cfg.ProjFiles.Data.Name + @"\" +
305 | cfg.ProjFiles.Nodes[i].Data.Name + @"\" +
306 | cfg.ProjFiles.Nodes[i].Nodes[j].Data.Name + @"\" +
307 | cfg.ProjFiles.Nodes[i].Nodes[j].Nodes[k].Data.Name + @"\" +
308 | cfg.ProjFiles.Nodes[i].Nodes[j].Nodes[l].Nodes[m].Data.Name;
309 | builder.Append(" ").Append(path2).AppendLine("");
310 | builder.AppendLine(" ");
311 | }
312 | else { }
313 | }
314 |
315 | if (cfg.ProjFiles.Nodes[i].Nodes[j].Nodes[k].Nodes[l].Nodes.Count == 0)
316 | {
317 | builder.Append(" ");
326 | var path2 = cfg.ProjFiles.Data.Name + @"\" +
327 | cfg.ProjFiles.Nodes[i].Data.Name + @"\" +
328 | cfg.ProjFiles.Nodes[i].Nodes[j].Data.Name + @"\" +
329 | cfg.ProjFiles.Nodes[i].Nodes[j].Nodes[k].Data.Name;
330 | builder.Append(" ").Append(path2).AppendLine("");
331 | builder.AppendLine(" ");
332 | }
333 | else { }
334 | }
335 |
336 | if (cfg.ProjFiles.Nodes[i].Nodes[j].Nodes[k].Nodes.Count == 0)
337 | {
338 | builder.Append(" ");
347 | var path2 = cfg.ProjFiles.Data.Name + @"\" +
348 | cfg.ProjFiles.Nodes[i].Data.Name + @"\" +
349 | cfg.ProjFiles.Nodes[i].Nodes[j].Data.Name;
350 | builder.Append(" ").Append(path2).AppendLine("");
351 | builder.AppendLine(" ");
352 | }
353 | else { }
354 | }
355 |
356 | if (cfg.ProjFiles.Nodes[i].Nodes[j].Nodes.Count == 0)
357 | {
358 | builder.Append(" ");
367 | var path2 = cfg.ProjFiles.Data.Name + @"\" +
368 | cfg.ProjFiles.Nodes[i].Data.Name;
369 | builder.Append(" ").Append(path2).AppendLine("");
370 | builder.AppendLine(" ");
371 | }
372 | else { }
373 | }
374 |
375 | if (cfg.ProjFiles.Nodes[i].Nodes.Count == 0)
376 | {
377 | builder.Append(" ");
386 | var path2 = cfg.ProjFiles.Data.Name;
387 | builder.Append(" ").Append(path2).AppendLine("");
388 | builder.AppendLine(" ");
389 | }
390 | else { }
391 | }
392 | return builder.ToString();
393 | }
394 | ///
395 | /// 获取过滤器目录列表
396 | ///
397 | ///
398 | ///
399 | public String Get_ToFilter_Folders(SysConfig cfg)
400 | {
401 | var builder = new StringBuilder();
402 |
403 | for (int i = 0; i < cfg.ProjFiles.Nodes.Count; i++)
404 | {
405 | for (int j = 0; j < cfg.ProjFiles.Nodes[i].Nodes.Count; j++)
406 | {
407 | for (int k = 0; k < cfg.ProjFiles.Nodes[i].Nodes[j].Nodes.Count; k++)
408 | {
409 | var path2 = cfg.ProjFiles.Data.Name + @"\" + cfg.ProjFiles.Nodes[i].Data.Name + @"\" + cfg.ProjFiles.Nodes[i].Nodes[j].Data.Name + @"\";
410 |
411 | if (cfg.ProjFiles.Nodes[i].Nodes[j].Nodes[k].Nodes.Count > 0)
412 | {
413 | if (cfg.ProjFiles.Nodes[i].Nodes[j].Nodes[k].Data.Name.StartsWith(".\\"))
414 | builder.Append(" ");
415 | else
416 | builder.Append(" ");
417 | builder.Append(" ").Append(Guid.NewGuid().ToString("B")).AppendLine("");
418 | builder.AppendLine(" ");
419 | }
420 | }
421 |
422 | if (cfg.ProjFiles.Nodes[i].Nodes[j].Nodes.Count != 0)
423 | {
424 | var path1 = cfg.ProjFiles.Data.Name + @"\" + cfg.ProjFiles.Nodes[i].Data.Name + @"\";
425 |
426 | if (cfg.ProjFiles.Nodes[i].Nodes[j].Data.Name.StartsWith(".\\"))
427 | builder.Append(" ");
428 | else
429 | builder.Append(" ");
430 | builder.Append(" ").Append(Guid.NewGuid().ToString("B")).AppendLine("");
431 | builder.AppendLine(" ");
432 | }
433 | }
434 |
435 | if (cfg.ProjFiles.Nodes[i].Nodes.Count != 0)
436 | {
437 | var path0 = cfg.ProjFiles.Data.Name + @"\";
438 |
439 | if (cfg.ProjFiles.Nodes[i].Data.Name.StartsWith(".\\"))
440 | builder.Append(" ");
441 | else
442 | builder.Append(" ");
443 | builder.Append(" ").Append(Guid.NewGuid().ToString("B")).AppendLine("");
444 | builder.AppendLine(" ");
445 | }
446 | else { }
447 | }
448 |
449 | if (cfg.ProjFiles.Nodes.Count != 0)
450 | {
451 | if (cfg.ProjFiles.Data.Name.StartsWith(".\\"))
452 | builder.Append(" ");
453 | else
454 | builder.Append(" ");
455 | builder.Append(" ").Append(Guid.NewGuid().ToString("B")).AppendLine("");
456 | builder.AppendLine(" ");
457 | }
458 | else { }
459 |
460 | return builder.ToString();
461 | }
462 | ///
463 | /// 获取所有文件列表
464 | ///
465 | ///
466 | ///
467 | public string Get_ToProj_Files(SysConfig cfg)
468 | {
469 | var builder = new StringBuilder();
470 |
471 | if (cfg.ProjFiles.Nodes.Count != 0)
472 | {
473 | for (int i = 0; i < cfg.ProjFiles.Nodes.Count; i++)
474 | {
475 | for (int j = 0; j < cfg.ProjFiles.Nodes[i].Nodes.Count; j++)
476 | {
477 | if (cfg.ProjFiles.Nodes[i].Nodes[j].Nodes.Count == 0)
478 | {
479 | if (cfg.ProjFiles.Nodes[i].Nodes[j].Data.Name != null)
480 | {
481 | builder.Append(" ");
487 | }
488 | }
489 | for (int k = 0; k < cfg.ProjFiles.Nodes[i].Nodes[j].Nodes.Count; k++)
490 | {
491 | if (cfg.ProjFiles.Nodes[i].Nodes[j].Nodes[k].Nodes.Count == 0)
492 | {
493 | if (cfg.ProjFiles.Nodes[i].Nodes[j].Nodes[k].Data.Name != null)
494 | {
495 | builder.Append(" ");
501 | }
502 | }
503 | for (int l = 0; l < cfg.ProjFiles.Nodes[i].Nodes[j].Nodes[k].Nodes.Count; l++)
504 | {
505 | if (cfg.ProjFiles.Nodes[i].Nodes[j].Nodes[k].Nodes[l].Nodes.Count == 0)
506 | {
507 | if (cfg.ProjFiles.Nodes[i].Nodes[j].Nodes[k].Nodes[l].Data.Name != null)
508 | {
509 | builder.Append(" ");
515 | }
516 | }
517 |
518 | }
519 | }
520 | }
521 | }
522 | }
523 | return builder.ToString();
524 | }
525 | private String GetIncludePathVC(SysConfig cfg)
526 | {
527 | var builder = new StringBuilder();
528 | builder.Append(" ");
529 | builder.Append(cfg.IncludePathStr);
530 | builder.Append(";%(AdditionalIncludeDirectories)");
531 | return builder.ToString();
532 | }
533 | private String GetMacroDefineVC(string definestr)
534 | {
535 | var builder = new StringBuilder();
536 | builder.Append(" ");
537 | builder.Append(definestr).Append("%(PreprocessorDefinitions)");
538 | return builder.ToString();
539 | }
540 | }
541 | }
--------------------------------------------------------------------------------
/Src/MDK2VC/M2V/UI/FormMain.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 17, 17
122 |
123 |
124 | 135, 17
125 |
126 |
127 |
128 |
129 | AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAABMLAAATCwAAAAAAAAAA
130 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
131 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
132 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
133 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
134 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
135 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
136 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
137 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
138 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
139 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
140 | AAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAQAAAAGAAAACAAAAAkAAAAJAAAACQAAAAkAAAAIAAAABgAA
141 | AAQAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
142 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
143 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
144 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAUAAAAJAAAADwAAABgcFxEjSTQjMGhHLjx6UjRGglc3S4JX
145 | N0t6UjRGaEcuPEk0IzAcFxEjAAAAGAAAAA8AAAAJAAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
146 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
147 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
148 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgGBAAAAAAEAAAACQAAABMyJRoog1c3SrFzR3TKgU6d2IlSvt+N
149 | U9Tjj1Ti5ZBV6uaQVe7mkFXu5ZBV6uOPVOLfjVPU2IlSvsqBTp2xc0d0g1c3SjIlGigAAAATAAAACQAA
150 | AAQIBgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
151 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
152 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQsHAAAAAAQAAAAMDw4MHoJXOEjAe0uI24pSxeaQ
153 | Vezqklb97JNW/+yTVv/sklX/65JV/+uRVP/rkVP/65FT/+uRVP/rklX/7JJV/+yTVv/sk1b/6pJW/eaQ
154 | VezbilLFwHtLiIJXN0gPDgweAAAADAAAAAQRCwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
155 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
156 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAoZFRAfmWU/WNGF
157 | UKvlkFXp65JW/+yTVv/rklT/649Q/+qLSv/phkP/6YM9/+iAOf/ofjf/6H41/+h+Nf/ofjf/6IA5/+mD
158 | Pf/phkP/6otK/+uPUP/rklT/7JNW/+uSVv/lkFXp0YVQq5llP1gZFRAfAAAACgAAAAIAAAAAAAAAAAAA
159 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
160 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYDwkAAAAABQAA
161 | ABWKXDtK0oZQq+eRVfDsk1b/65JV/+qOT//ph0T/6IA5/+h7Mf/neCz/53cr/+d3Kv/ndyr/53cq/+d3
162 | Kv/ndyr/53cq/+d3Kv/ndyr/53cr/+d4LP/oezH/6IA5/+mHRP/qjk//65JV/+yTVv/nkVXw0oZQq4pc
163 | O0oAAAAVAAAABRgPCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
164 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
165 | AAADAAABAAAACUYyIijAfEyF5Y9V5euTVv/rklX/6o1M/+mDPf/oejD/53cr/+d3Kv/ndyv/53cr/+d3
166 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3Kv/ndyv/6How/+mD
167 | Pf/qjUz/65JV/+uTVv/lj1XlwHxMhUYyIigAAAAJAwAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
168 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
169 | AAAAAAAAAAAAAAAAAAAAAAACAAAADYNYOELXiVK46pJV/OuSVf/qjk//6YM9/+d5L//ndyr/53cr/+d3
170 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
171 | K//ndyv/53cr/+d3K//ndyr/53kv/+mDPf/qjk//65JV/+qSVfzXiVK4g1g4QgAAAA0AAAACAAAAAAAA
172 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
173 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAD6JrQ1nhjlTX65NW/+uRVP/piEX/6Hsx/+d3
174 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
175 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/6Hsx/+mIRf/rkVT/65NW/+GO
176 | VNeia0NZAAAADwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
177 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAEK9zR2XlkFXl7JNW/+uP
178 | Uf/pgjz/53gs/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
179 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
180 | K//neCz/6YI8/+uPUf/sk1b/5ZBV5a9zR2UAAAAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
181 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAADbF0
182 | SGTmkFXq65NW/+qOTv/ofjb/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
183 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
184 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ofjb/6o5O/+uTVv/mkFXqsXRIZAAAAA0AAAABAAAAAAAA
185 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
186 | AAAKAAAAAAAACahvRVblkFXl65NW/+qNTf/ofDP/53cq/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
187 | K//ndyv/53cr/+d3K//ndyv/53cr/+d2Kv/ndin/53Uo/+d1KP/ndSj/53Uo/+d2Kf/ndir/53cr/+d3
188 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cq/+h8M//qjU3/65NW/+WQ
189 | VeWob0VWAAAACQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
190 | AAAAAAAAAAAAAAAAAAAAAAAAAAAABI5gPTzijlTW7JNW/+qOTv/ofDP/53cq/+d3K//ndyv/53cr/+d3
191 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndin/53Uo/+d4LP/pgDr/64xM/+2XXf/unWb/7p1m/+2X
192 | Xf/rjU3/6YE7/+d4Lf/ndSj/53Yp/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
193 | K//ndyr/6Hwz/+qOTv/sk1b/4o5U1o5gPTwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
194 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVg/KyDailO265JW/+uPUf/ofjb/53cq/+d3
195 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d2Kf/ndir/6oZD//CoeP/2zK//+uXX//3z
196 | 7P/++fb//vz6//78+v/++fb//fPt//vm2P/2zrL/8Kt8/+qIRv/ndyv/53Yp/+d3K//ndyv/53cr/+d3
197 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3Kv/ofjb/649R/+uSVv/ailO2WD8rIAAAAAEAAAAAAAAAAAAA
198 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvJgU+A6pJV/OuR
199 | VP/pgjz/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cq/+d2Kf/qikj/872Y//vq
200 | 3////v7//vn1//328f/////////////////////////////////////////////+/v/87OL/9MCd/+uM
201 | TP/ndin/53Yq/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+mCPP/rkVT/6pJV/MmB
202 | T4AAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
203 | AAKga0RA5pBV5OuSVf/piEX/53gs/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53Yp/+h8
204 | Mv/xrX//++vf//////////////////328f/2zK///vr4////////////////////////////////////
205 | ///////////////////87eP/8bGG/+h9Nf/ndin/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
206 | K//neCz/6YhF/+uSVf/mkFXkoGtEQAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
207 | AAAAAAAAAAAAAAAAAAAsJR0R2IpTpuuSVv/qjk//6Hsx/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
208 | K//ndyv/53Yp/+mEP//2yq3///z7////////////////////////////876a//bOsv//////////////
209 | ///////////////////////////////////////////////9/P/3z7T/6odE/+d2Kf/ndyv/53cr/+d3
210 | K//ndyv/53cr/+d3K//ndyv/53cr/+h7Mf/qjk//65JW/9iKU6YsJR0RAAAAAAAAAAAAAAAAAAAAAAAA
211 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsnZKTOiRVe/rklX/6YM9/+d3K//ndyv/53cr/+d3
212 | K//ndyv/53cr/+d3K//ndyv/53Yp/+qIRf/42MP///////////////////////////////////////nc
213 | yP/sk1f/++vg//////////////////////////////////////////////////////////////////nd
214 | yv/ri0v/53Yp/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/6YM9/+uSVf/okVXvsnZKTAAA
215 | AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zZYAISAbDdmLU6Xrk1b/6o1M/+d5
216 | L//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53Yp/+mEP//42ML/////////////////////////
217 | ///////////////////99vD/7JFU//Cpef/++/n/////////////////////////////////////////
218 | ////////////////////////+d3K/+qHRP/ndin/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d5
219 | L//qjUz/65NW/9mLU6UhIBsN/82WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AKlx
220 | SDjnkVXn65JV/+mDPf/ndyr/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cq/+h7Mv/1yav/////////
221 | //////////////////////////////////////////////K1i//neS7/9s2x////////////////////
222 | ///////////////////////////////////////////////////30LX/6H01/+d2Kv/ndyv/53cr/+d3
223 | K//ndyv/53cr/+d3K//ndyr/6YM9/+uSVf/nkVXnqXFIOP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
224 | AAAAAAAAAggKAAAAAAPRh1J965JW/+qOT//oejD/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d2
225 | Kf/wq33//vz6///////////////////////////////////////////////////////42sX/6How/+uL
226 | Sv/76t7///////////////////////////////////////////////////////////////////39//Gy
227 | h//ndir/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+h6MP/qjk//65JW/9GHUn0AAAADAggKAAAA
228 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOqqdgBpTTYT4Y5Vv+uTVv/ph0T/53cr/+d3K//ndyv/53cr/+d3
229 | K//ndyv/53cr/+d2Kf/qiEb/++nd////////////////////////////////////////////////////
230 | /////////fTu/+uQUv/mdCb/8Kh4//77+P//////////////////////////////////////////////
231 | ///////////////////87uT/641N/+d2Kf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/6YdE/+uT
232 | Vv/hjlW/aU02E+qqdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//6QAtHhMNuiRVerrklT/6IA5/+d3
233 | Kv/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndir/87qU////////////////////////////////////
234 | ///////////////////////////////////xsYb/53Un/+h6MP/2y63/////////////////////////
235 | //////////////////////////////////////////////TBn//ndyv/53cr/+d3K//ndyv/53cr/+d3
236 | K//ndyv/53cq/+iAOf/rklT/6JFV6rR4TDb//6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AM+G
237 | U2Tqklb9649Q/+h7Mf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndir/6YVA//vo3P//////////////
238 | ////////////////////////////////////////////////////////+Na//+h7Mf/ndSn/6opJ//vo
239 | 2//////////////////////////////////////////////////////////////////87eP/6olH/+d2
240 | Kf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//oezH/649Q/+qSVv3PhlNk////AAAAAAAAAAAAAAAAAAAA
241 | AAAAAAAAGBoYAAAAAAPcjFWR65NW/+qLSv/neCz/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53Uo/++l
242 | c////fz///////////////////////////////////////////////////////////////////////3y
243 | 6//rjU7/53Yp/+d1KP/vpnT//vr3////////////////////////////////////////////////////
244 | ///////////+//Csfv/ndSj/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53gs/+qLSv/rk1b/3IxVkQAA
245 | AAMYGhgAAAAAAAAAAAAAAAAAAAAAAIVoTQBcSjgL4o9WteuTVv/phkP/53cr/+d3K//ndyv/53cr/+d3
246 | K//ndyv/53cr/+d3K//1yKn/////////////////////////////////////////////////////////
247 | ////////////////////////8a6A/+d1KP/ndyr/53ov//XIqv//////////////////////////////
248 | ///////////////////////////////////3z7X/53gt/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
249 | K//phkP/65NW/+KPVrVcSjgLhWhNAAAAAAAAAAAAAAAAAAAAAADOkmMAnG5KFuWRVs7rklX/6YM9/+d3
250 | Kv/ndyv/53cr/+d3K//ndyv/53cr/+d3Kv/ofzf/+uHR////////////////////////////////////
251 | /////////fXw//fSuf/528b/++fZ//zw6P/+9/P////+//fTu//oejD/53cr/+d2Kf/qiEb/++bZ////
252 | ////////////////////////////////////////////////////////++fa/+mCPP/ndir/53cr/+d3
253 | K//ndyv/53cr/+d3K//ndyr/6YM9/+uSVf/lkVbOnG5KFs6SYwAAAAAAAAAAAAAAAAAAAAAA7KBoALZ8
254 | UCLnkVbe65JV/+iAOf/ndyr/53cr/+d3K//ndyv/53cr/+d3K//ndin/6olI//zw6P//////////////
255 | //////////////////////////////307v/skVT/53ov/+mBO//qiUj/7JRY/+6hbP/vpHH/6Hwz/+d3
256 | K//ndyv/53Uo/++kcf/++fb///////////////////////////////////////////////////////30
257 | 7v/rjlD/53Yp/+d3K//ndyv/53cr/+d3K//ndyv/53cq/+iAOf/rklX/55FW3rZ8UCLsoGgAAAAAAAAA
258 | AAAAAAAAAAAAAPekaADDg1Qr6JJW5+uRVP/ofjf/53cq/+d3K//ndyv/53cr/+d3K//ndyv/53Uo/+yT
259 | V//+9/P/////////////////////////////////////////////////8bCE/+d1J//ndir/53Yp/+d1
260 | KP/ndSf/53Uo/+d3K//ndyv/53cr/+d3K//neS7/9cam////////////////////////////////////
261 | ///////////////////++vf/7Zlg/+d1KP/ndyv/53cr/+d3K//ndyv/53cr/+d3Kv/ofjf/65FU/+iS
262 | VufDg1Qr96RoAAAAAAAAAAAAAAAAAAAAAAD4o2YAyYZVMOmSVuvrkVP/6H41/+d3Kv/ndyv/53cr/+d3
263 | K//ndyv/53cr/+d1KP/tmF///vr3//////////////////////////////////////////////////fS
264 | uv/neS//53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53Yp/+qHRP/65db/////////
265 | //////////////////////////////////////////z7/+6faf/ndSj/53cr/+d3K//ndyv/53cr/+d3
266 | K//ndyr/6H41/+uRU//pklbryYZVMPijZgAAAAAAAAAAAAAAAAAAAAAA9KFkAMuIVjDpklbr65FT/+h+
267 | Nf/ndyr/53cr/+d3K//ndyv/53cr/+d3K//ndSj/7Zhf//769///////////////////////////////
268 | ///////////////////87uT/6ohG/+d2Kf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
269 | K//ndSj/7qFt//749P////////////////////////////////////////////78+v/unmj/53Uo/+d3
270 | K//ndyv/53cr/+d3K//ndyv/53cq/+h+Nf/rkVP/6ZJW68uIVjD0oWQAAAAAAAAAAAAAAAAAAAAAAOuc
271 | YwDLiFcq6ZJW5+uRVP/ofjf/53cq/+d3K//ndyv/53cr/+d3K//ndyv/53Uo/+ySVv/+9/L/////////
272 | //////////////////////////////////////////38/++kcf/ndSj/53cr/+d3K//ndyv/53cr/+d3
273 | K//ndyv/53cr/+d3K//ndyv/53cr/+d5Lv/0xKL/////////////////////////////////////////
274 | ///++fb/7Zdd/+d1KP/ndyv/53cr/+d3K//ndyv/53cr/+d3Kv/ofjf/65FU/+mSVufLiFcq65xjAAAA
275 | AAAAAAAAAAAAAAAAAADelmEAx4hYH+iSVt3rklX/6IA5/+d3Kv/ndyv/53cr/+d3K//ndyv/53cr/+d2
276 | Kf/qiEb//O/m///////////////////////////////////////////////////////1x6f/53cr/+d3
277 | K//ndyv/53cr/+d3K//ndyv/53cr/+d2Kf/ndSj/53Un/+d1J//mdCb/6YQ///rh0f//////////////
278 | /////////////////////////fLr/+uMTP/ndin/53cr/+d3K//ndyv/53cr/+d3K//ndyr/6IA5/+uS
279 | Vf/oklbdx4hYH96WYQAAAAAAAAAAAAAAAAAAAAAAyo9hAL2FWRPoklfN65JV/+mDPf/ndyr/53cr/+d3
280 | K//ndyv/53cr/+d3K//ndyr/6H41//ngzv//////////////////////////////////////////////
281 | ////////++bY/+mCPP/ndir/53cr/+d3K//ndyv/53Yq/+mBOv/ytYv/8raN//Gugf/vp3b/7qBr/+2Y
282 | X//zu5X///z7//////////////////////////////////rk1P/pgDn/53Yq/+d3K//ndyv/53cr/+d3
283 | K//ndyv/53cq/+mDPf/rklX/6JJXzb2FWRPKj2EAAAAAAAAAAAAAAAAAAAAAAKJ/XgCWeVwH5pJXsuuS
284 | Vv/phkP/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d2Kv/1xaT/////////////////////////
285 | //////////////////////////////759v/tmWD/53Uo/+d3K//ndyv/53cr/+d3K//oezL/+NfA////
286 | //////////7+///9+//++vj//vj0///+/f/////////////////////////////////2yqz/53cr/+d3
287 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//phkP/65JW/+aSV7KWeVwHon9eAAAAAAAAAAAAAAAAAAAA
288 | AABART8A/+hTAOSSWIvrklb/6otK/+d4LP/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndSj/7qFt//78
289 | +v//////////////////////////////////////////////////////87qU/+d1Kf/ndyv/53cr/+d3
290 | K//ndyv/53Uo/++ndv///fz/////////////////////////////////////////////////////////
291 | /////fz/76d1/+d1KP/ndyv/53cr/+d3K//ndyv/53cr/+d3K//neCz/6otK/+uSVv/kkliL/+hTAEBF
292 | PwAAAAAAAAAAAAAAAAAAAAAAAAAAAP+fWwDhklpc65JW/euPUP/oezH/53cr/+d3K//ndyv/53cr/+d3
293 | K//ndyv/53Yq/+mCPf/65db///////////////////////////////////////////////////////nc
294 | yP/ofDT/53cq/+d3K//ndyv/53cr/+d2Kv/phD//++fZ////////////////////////////////////
295 | ////////////////////////++nd/+qGQv/ndir/53cr/+d3K//ndyv/53cr/+d3K//ndyv/6Hsx/+uP
296 | UP/rklb94ZJaXP+fWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADnmF8A25JdLOqSVujrklT/6IA5/+d3
297 | Kv/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndin/8rWL////////////////////////////////////
298 | ///////////////////99O7/65BR/+d1Kf/ndyv/53cr/+d3K//ndyv/53Yp//O8l///////////////
299 | //////////////////////////////////////////////O8lv/ndir/53cr/+d3K//ndyv/53cr/+d3
300 | K//ndyv/53cq/+iAOf/rklT/6pJW6NuSXSznmF8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy5RnAMWR
301 | Zgrok1i565JW/+mHRP/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53Yq/+mFQf/65db/////////
302 | //////////////////////////////////////////////Gugf/ndSj/53cr/+d3K//ndyv/53cr/+d1
303 | Kf/skVT//fTu//////////////////////////////////////////////////vr3//qikj/53Yp/+d3
304 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ph0T/65JW/+iTWLnFkWYKy5RnAAAAAAAAAAAAAAAAAAAA
305 | AAAAAAAAAAAAABRIVwD/mU0A5ZRacuuSVv/qjk//6How/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
306 | K//ndSj/76Z0//769//////////////////////////////////////////////////30bf/53ku/+d3
307 | K//ndyv/53cr/+d3K//ndyv/53ov//fSuf/////////////////////////////////////////////9
308 | +//xroH/53Yp/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//oejD/6o5P/+uSVv/llFpy/5lNABRI
309 | VwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A55heAN+VXyrqk1bk65JV/+mDPf/ndyr/53cr/+d3
310 | K//ndyv/53cr/+d3K//ndyv/53cr/+d6L//0w6L/////////////////////////////////////////
311 | /////////O3j/+qHRf/ndin/53cr/+d3K//ndyv/53cr/+d1KP/vpHH//vz7////////////////////
312 | ///////////////////2zbH/6Hwz/+d3Kv/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyr/6YM9/+uS
313 | Vf/qk1bk35VfKueYXgD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQICAMaZcACmoIgD6JRZmuuS
314 | Vv/qjUz/53kv/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndir/6YE7//fTuv//////////////
315 | ///////////////////////////////8+//vo2//53Uo/+d3K//ndyv/53cr/+d3K//ndir/6YI8//rk
316 | 1v/////////////////////////////////53Mj/6oZC/+d2Kf/ndyv/53cr/+d3K//ndyv/53cr/+d3
317 | K//ndyv/53kv/+qNTP/rklb/6JRZmqagiAPGmXAAAQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
318 | AAD/tHMA7JZaAOSWXjvqk1bt65JV/+mDPf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d2
319 | Kf/phUH/99S8////////////////////////////////////////////9cWl/+d3Kv/ndyv/53cr/+d3
320 | K//ndyv/53cr/+d2Kf/zuZL////////////////////////////53Mn/6otJ/+d2Kf/ndyv/53cr/+d3
321 | K//ndyv/53cr/+d3K//ndyv/53cr/+mDPf/rklX/6pNW7eSWXjvslloA/7RzAAAAAAAAAAAAAAAAAAAA
322 | AAAAAAAAAAAAAAAAAAAAAAAAMkRDANSdbwDEpYEE6JRZmuuSVf/qjk//6Hsx/+d3K//ndyv/53cr/+d3
323 | K//ndyv/53cr/+d3K//ndyv/53Yp/+mCPP/1xqf//vv5//////////////////////////////////rk
324 | 1v/pgTr/53Yq/+d3K//ndyv/53cr/+d3K//ndin/649R//3y6//////////////9/P/2zrP/6oZD/+d2
325 | Kf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+h7Mf/qjk//65JV/+iUWZrEpYEE1J1vADJE
326 | QwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvoGYA6ZZcAOSYYS3qk1fg65JV/+mI
327 | Rf/neCz/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndin/6How//Cqev/76dz/////////
328 | ///////////////////++fX/7Zhe/+d1KP/ndyv/53cr/+d3K//ndyv/53cr/+d5Lv/3z7X///////zs
329 | 4f/xsIT/6H00/+d2Kf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d4LP/piEX/65JV/+qT
330 | V+DkmGEt6ZZcAO+gZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ19eAMOr
331 | iQD/dx0A6JZbb+uSVvzrkVT/6YI8/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
332 | Kv/ndin/6ohG//O7lP/76d3///39//////////////////O5kv/ndSj/53cr/+d3K//ndyv/53cr/+d3
333 | K//ndSj/7Ztj//O8l//ri0r/53Yp/+d2Kv/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
334 | K//pgjz/65FU/+uSVvzolltv/3cdAMOriQBDX14AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
335 | AAAAAAAAAAAAAAAAAADXo3YA4pxmAN6fbQ3plFmq65JV/+uPUf/ofjb/53cq/+d3K//ndyv/53cr/+d3
336 | K//ndyv/53cr/+d3K//ndyv/53cr/+d2Kf/ndir/6oZC/++ndv/2yq3/+uPU//3z7f/31Lz/6Hsy/+d3
337 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndir/53Yp/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
338 | K//ndyv/53cr/+d3Kv/ofjb/649R/+uSVf/plFmq3p9tDeKcZgDXo3YAAAAAAAAAAAAAAAAAAAAAAAAA
339 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRQUAO6UVgDpllsA5ZpjJuqTV87rklX/6o5O/+h8
340 | M//ndyr/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d2Kv/ndSj/53cr/+iA
341 | OP/ri0r/649Q/+d6L//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
342 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3Kv/ofDP/6o5O/+uSVf/qk1fO5ZpjJumWWwDulFYADRQUAAAA
343 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXt60A/wAAAO+O
344 | TgDnmF8+6pNX4OuSVf/qjU3/6Hwz/+d3Kv/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
345 | K//ndyv/53cr/+d3K//ndir/53Yp/+d2Kf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
346 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3Kv/ofDP/6o1N/+uSVf/qk1fg55hfPu+O
347 | TgD/AAAAl7etAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
348 | AAAAAAAAAAAAAM6yjgDTsooA+IA4AOiYXk3qk1fl65JV/+qOTv/ofjb/53cr/+d3K//ndyv/53cr/+d3
349 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
350 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ofjb/6o5O/+uS
351 | Vf/qk1fl6JheTfiAOADTsooAzrKOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
352 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2qp9AN2pegD/cSAA6JheTeqTV+DrklX/649R/+mC
353 | PP/neCz/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
354 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d4
355 | LP/pgjz/649R/+uSVf/qk1fg6JheTf5xIADdqXsA2qp9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
356 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADeqHkA3qp7APZ/
357 | NwDnmWA+6pRXzuuSVf/rkVT/6YhF/+h7Mf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
358 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
359 | K//ndyv/53cr/+h7Mf/piEX/65FU/+uSVf/qlFfO55lgPvZ/NwDeqnsA3qh5AAAAAAAAAAAAAAAAAAAA
360 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
361 | AAAAAAAAAAAAAN2rfgDYtY0A7o1OAOabYyXqlFmp65JW/OuSVf/qjk//6YM9/+d5L//ndyr/53cr/+d3
362 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
363 | K//ndyv/53cr/+d3K//ndyr/53kv/+mDPf/qjk//65JV/+uSVvzqlFmp5ptjJe6NTgDXtY0A3at+AAAA
364 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
365 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1rmTAP8AAADpllsA46JvDOmWXG7qk1ff65JV/+uS
366 | Vf/qjUz/6YM9/+h6MP/ndyv/53cq/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
367 | K//ndyv/53cr/+d3K//ndyv/53cq/+d3K//oejD/6YM9/+qNTP/rklX/65JV/+qTV9/pllxu46JvDOmW
368 | WwD/AAAA1rmTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
369 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+59oA65JVAOWe
370 | ZwD9bRsA55piLOqVWpnrk1bt65JW/+uSVf/qjk//6YdE/+iAOf/oezH/53gs/+d3K//ndyr/53cq/+d3
371 | Kv/ndyr/53cq/+d3Kv/ndyr/53cq/+d3K//neCz/6Hsx/+iAOf/ph0T/6o5P/+uSVf/rklb/65NW7eqV
372 | WpnnmmIs/W0bAOWeZwDrklUAvufaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
373 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
374 | AAAAAAAAAAAAAKn//wDgqnsA17yXAOmWXADat48D6JlgOuqVWpnrk1fj65JW/+uSVv/rkVT/649Q/+qL
375 | Sv/phkP/6YM9/+iAOf/ofjf/6H41/+h+Nf/ofjf/6IA5/+mDPf/phkP/6otK/+uPUP/rkVT/65JW/+uS
376 | Vv/rk1fj6pVameiZYDrat48D6ZZcANe8lwDgqnsAqf//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
377 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
378 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALD59gDnm2MA4ad2AOqVWQDRyqwC55tiKemW
379 | XHDqlFi465NX5+uTVvzrklb/65JW/+uSVf/rklX/65FU/+uRU//rkVP/65FU/+uSVf/rklX/65JW/+uS
380 | Vv/rk1b865NX5+qUWLjpllxw55tiKdHKrALqlVkA4ad2AOebYwCw+fYAAAAAAAAAAAAAAAAAAAAAAAAA
381 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
382 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALf4
383 | 9ADom2MA36x+AOiYXwDwh0UA4qZ1CeeaYirpl11Z6ZVaiOqUWa/qlFjK6pNX2+uTV+Xrk1bp65NW6euT
384 | V+Xqk1fb6pRYyuqUWa/plVqI6ZddWeeaYiripnUJ8IdFAOiYXwDfrH4A6JtjALf49AAAAAAAAAAAAAAA
385 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
386 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
387 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAALP//wDSx6gAcP//AOKlcgDomF8A7JFTAPh3KgDcsocF5KFsD+ad
388 | Zhvnm2Ml55piKueaYirnm2Ml5p1mG+ShbA/csocF+HcqAOyRUwDomF8A4qVyAHD//wDSx6gAs///AAAA
389 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
390 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
391 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8Arf//AP+H
392 | QwDJ28YA3q6BAOShbQDmnGUA55phAOiZYADomWAA55phAOacZQDkoW0A3q6BAMjbxgD/h0MArf//AAD/
393 | /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
394 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
395 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
396 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
397 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
398 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
399 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
400 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
401 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
402 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
403 | AAAAAAAA////gAH///////gAAB//////wAAAA/////8AAAAA/////gAAAAB////4AAAAAB////AAAAAA
404 | D///4AAAAAAH///AAAAAAAP//4AAAAAAAf//AAAAAAAA//4AAAAAAAB//AAAAAAAAD/8AAAAAAAAP/gA
405 | AAAAAAAf8AAAAAAAAA/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfgAAAAAAAAB8AAAAAAAAADwAAAAAAA
406 | AAPAAAAAAAAAA8AAAAAAAAADgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA
407 | AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAA
408 | AAGAAAAAAAAAAcAAAAAAAAADwAAAAAAAAAPAAAAAAAAAA8AAAAAAAAAD4AAAAAAAAAfgAAAAAAAAB+AA
409 | AAAAAAAH8AAAAAAAAA/wAAAAAAAAD/gAAAAAAAAf/AAAAAAAAD/8AAAAAAAAP/4AAAAAAAB//wAAAAAA
410 | AP//gAAAAAAB///AAAAAAAP//+AAAAAAB///8AAAAAAP///4AAAAAB////wAAAAAP////wAAAAD/////
411 | wAAAA//////wAAAP//////4AAH////////////////////////8=
412 |
413 |
414 |
415 | 300, 17
416 |
417 |
418 | 421, 17
419 |
420 |
421 |
422 | AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAABMLAAATCwAAAAAAAAAA
423 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
424 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
425 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
426 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
427 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
428 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
429 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
430 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
431 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
432 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
433 | AAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAQAAAAGAAAACAAAAAkAAAAJAAAACQAAAAkAAAAIAAAABgAA
434 | AAQAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
435 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
436 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
437 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAUAAAAJAAAADwAAABgcFxEjSTQjMGhHLjx6UjRGglc3S4JX
438 | N0t6UjRGaEcuPEk0IzAcFxEjAAAAGAAAAA8AAAAJAAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
439 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
440 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
441 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgGBAAAAAAEAAAACQAAABMyJRoog1c3SrFzR3TKgU6d2IlSvt+N
442 | U9Tjj1Ti5ZBV6uaQVe7mkFXu5ZBV6uOPVOLfjVPU2IlSvsqBTp2xc0d0g1c3SjIlGigAAAATAAAACQAA
443 | AAQIBgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
444 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
445 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQsHAAAAAAQAAAAMDw4MHoJXOEjAe0uI24pSxeaQ
446 | Vezqklb97JNW/+yTVv/sklX/65JV/+uRVP/rkVP/65FT/+uRVP/rklX/7JJV/+yTVv/sk1b/6pJW/eaQ
447 | VezbilLFwHtLiIJXN0gPDgweAAAADAAAAAQRCwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
448 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
449 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAoZFRAfmWU/WNGF
450 | UKvlkFXp65JW/+yTVv/rklT/649Q/+qLSv/phkP/6YM9/+iAOf/ofjf/6H41/+h+Nf/ofjf/6IA5/+mD
451 | Pf/phkP/6otK/+uPUP/rklT/7JNW/+uSVv/lkFXp0YVQq5llP1gZFRAfAAAACgAAAAIAAAAAAAAAAAAA
452 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
453 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYDwkAAAAABQAA
454 | ABWKXDtK0oZQq+eRVfDsk1b/65JV/+qOT//ph0T/6IA5/+h7Mf/neCz/53cr/+d3Kv/ndyr/53cq/+d3
455 | Kv/ndyr/53cq/+d3Kv/ndyr/53cr/+d4LP/oezH/6IA5/+mHRP/qjk//65JV/+yTVv/nkVXw0oZQq4pc
456 | O0oAAAAVAAAABRgPCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
457 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
458 | AAADAAABAAAACUYyIijAfEyF5Y9V5euTVv/rklX/6o1M/+mDPf/oejD/53cr/+d3Kv/ndyv/53cr/+d3
459 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3Kv/ndyv/6How/+mD
460 | Pf/qjUz/65JV/+uTVv/lj1XlwHxMhUYyIigAAAAJAwAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
461 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
462 | AAAAAAAAAAAAAAAAAAAAAAACAAAADYNYOELXiVK46pJV/OuSVf/qjk//6YM9/+d5L//ndyr/53cr/+d3
463 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
464 | K//ndyv/53cr/+d3K//ndyr/53kv/+mDPf/qjk//65JV/+qSVfzXiVK4g1g4QgAAAA0AAAACAAAAAAAA
465 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
466 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAD6JrQ1nhjlTX65NW/+uRVP/piEX/6Hsx/+d3
467 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
468 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/6Hsx/+mIRf/rkVT/65NW/+GO
469 | VNeia0NZAAAADwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
470 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAEK9zR2XlkFXl7JNW/+uP
471 | Uf/pgjz/53gs/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
472 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
473 | K//neCz/6YI8/+uPUf/sk1b/5ZBV5a9zR2UAAAAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
474 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAADbF0
475 | SGTmkFXq65NW/+qOTv/ofjb/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
476 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
477 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ofjb/6o5O/+uTVv/mkFXqsXRIZAAAAA0AAAABAAAAAAAA
478 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
479 | AAAKAAAAAAAACahvRVblkFXl65NW/+qNTf/ofDP/53cq/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
480 | K//ndyv/53cr/+d3K//ndyv/53cr/+d2Kv/ndin/53Uo/+d1KP/ndSj/53Uo/+d2Kf/ndir/53cr/+d3
481 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cq/+h8M//qjU3/65NW/+WQ
482 | VeWob0VWAAAACQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
483 | AAAAAAAAAAAAAAAAAAAAAAAAAAAABI5gPTzijlTW7JNW/+qOTv/ofDP/53cq/+d3K//ndyv/53cr/+d3
484 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndin/53Uo/+d4LP/pgDr/64xM/+2XXf/unWb/7p1m/+2X
485 | Xf/rjU3/6YE7/+d4Lf/ndSj/53Yp/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
486 | K//ndyr/6Hwz/+qOTv/sk1b/4o5U1o5gPTwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
487 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVg/KyDailO265JW/+uPUf/ofjb/53cq/+d3
488 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d2Kf/ndir/6oZD//CoeP/2zK//+uXX//3z
489 | 7P/++fb//vz6//78+v/++fb//fPt//vm2P/2zrL/8Kt8/+qIRv/ndyv/53Yp/+d3K//ndyv/53cr/+d3
490 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3Kv/ofjb/649R/+uSVv/ailO2WD8rIAAAAAEAAAAAAAAAAAAA
491 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvJgU+A6pJV/OuR
492 | VP/pgjz/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cq/+d2Kf/qikj/872Y//vq
493 | 3////v7//vn1//328f/////////////////////////////////////////////+/v/87OL/9MCd/+uM
494 | TP/ndin/53Yq/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+mCPP/rkVT/6pJV/MmB
495 | T4AAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
496 | AAKga0RA5pBV5OuSVf/piEX/53gs/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53Yp/+h8
497 | Mv/xrX//++vf//////////////////328f/2zK///vr4////////////////////////////////////
498 | ///////////////////87eP/8bGG/+h9Nf/ndin/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
499 | K//neCz/6YhF/+uSVf/mkFXkoGtEQAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
500 | AAAAAAAAAAAAAAAAAAAsJR0R2IpTpuuSVv/qjk//6Hsx/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
501 | K//ndyv/53Yp/+mEP//2yq3///z7////////////////////////////876a//bOsv//////////////
502 | ///////////////////////////////////////////////9/P/3z7T/6odE/+d2Kf/ndyv/53cr/+d3
503 | K//ndyv/53cr/+d3K//ndyv/53cr/+h7Mf/qjk//65JW/9iKU6YsJR0RAAAAAAAAAAAAAAAAAAAAAAAA
504 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsnZKTOiRVe/rklX/6YM9/+d3K//ndyv/53cr/+d3
505 | K//ndyv/53cr/+d3K//ndyv/53Yp/+qIRf/42MP///////////////////////////////////////nc
506 | yP/sk1f/++vg//////////////////////////////////////////////////////////////////nd
507 | yv/ri0v/53Yp/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/6YM9/+uSVf/okVXvsnZKTAAA
508 | AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zZYAISAbDdmLU6Xrk1b/6o1M/+d5
509 | L//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53Yp/+mEP//42ML/////////////////////////
510 | ///////////////////99vD/7JFU//Cpef/++/n/////////////////////////////////////////
511 | ////////////////////////+d3K/+qHRP/ndin/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d5
512 | L//qjUz/65NW/9mLU6UhIBsN/82WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AKlx
513 | SDjnkVXn65JV/+mDPf/ndyr/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cq/+h7Mv/1yav/////////
514 | //////////////////////////////////////////////K1i//neS7/9s2x////////////////////
515 | ///////////////////////////////////////////////////30LX/6H01/+d2Kv/ndyv/53cr/+d3
516 | K//ndyv/53cr/+d3K//ndyr/6YM9/+uSVf/nkVXnqXFIOP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
517 | AAAAAAAAAggKAAAAAAPRh1J965JW/+qOT//oejD/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d2
518 | Kf/wq33//vz6///////////////////////////////////////////////////////42sX/6How/+uL
519 | Sv/76t7///////////////////////////////////////////////////////////////////39//Gy
520 | h//ndir/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+h6MP/qjk//65JW/9GHUn0AAAADAggKAAAA
521 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOqqdgBpTTYT4Y5Vv+uTVv/ph0T/53cr/+d3K//ndyv/53cr/+d3
522 | K//ndyv/53cr/+d2Kf/qiEb/++nd////////////////////////////////////////////////////
523 | /////////fTu/+uQUv/mdCb/8Kh4//77+P//////////////////////////////////////////////
524 | ///////////////////87uT/641N/+d2Kf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/6YdE/+uT
525 | Vv/hjlW/aU02E+qqdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//6QAtHhMNuiRVerrklT/6IA5/+d3
526 | Kv/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndir/87qU////////////////////////////////////
527 | ///////////////////////////////////xsYb/53Un/+h6MP/2y63/////////////////////////
528 | //////////////////////////////////////////////TBn//ndyv/53cr/+d3K//ndyv/53cr/+d3
529 | K//ndyv/53cq/+iAOf/rklT/6JFV6rR4TDb//6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AM+G
530 | U2Tqklb9649Q/+h7Mf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndir/6YVA//vo3P//////////////
531 | ////////////////////////////////////////////////////////+Na//+h7Mf/ndSn/6opJ//vo
532 | 2//////////////////////////////////////////////////////////////////87eP/6olH/+d2
533 | Kf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//oezH/649Q/+qSVv3PhlNk////AAAAAAAAAAAAAAAAAAAA
534 | AAAAAAAAGBoYAAAAAAPcjFWR65NW/+qLSv/neCz/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53Uo/++l
535 | c////fz///////////////////////////////////////////////////////////////////////3y
536 | 6//rjU7/53Yp/+d1KP/vpnT//vr3////////////////////////////////////////////////////
537 | ///////////+//Csfv/ndSj/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53gs/+qLSv/rk1b/3IxVkQAA
538 | AAMYGhgAAAAAAAAAAAAAAAAAAAAAAIVoTQBcSjgL4o9WteuTVv/phkP/53cr/+d3K//ndyv/53cr/+d3
539 | K//ndyv/53cr/+d3K//1yKn/////////////////////////////////////////////////////////
540 | ////////////////////////8a6A/+d1KP/ndyr/53ov//XIqv//////////////////////////////
541 | ///////////////////////////////////3z7X/53gt/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
542 | K//phkP/65NW/+KPVrVcSjgLhWhNAAAAAAAAAAAAAAAAAAAAAADOkmMAnG5KFuWRVs7rklX/6YM9/+d3
543 | Kv/ndyv/53cr/+d3K//ndyv/53cr/+d3Kv/ofzf/+uHR////////////////////////////////////
544 | /////////fXw//fSuf/528b/++fZ//zw6P/+9/P////+//fTu//oejD/53cr/+d2Kf/qiEb/++bZ////
545 | ////////////////////////////////////////////////////////++fa/+mCPP/ndir/53cr/+d3
546 | K//ndyv/53cr/+d3K//ndyr/6YM9/+uSVf/lkVbOnG5KFs6SYwAAAAAAAAAAAAAAAAAAAAAA7KBoALZ8
547 | UCLnkVbe65JV/+iAOf/ndyr/53cr/+d3K//ndyv/53cr/+d3K//ndin/6olI//zw6P//////////////
548 | //////////////////////////////307v/skVT/53ov/+mBO//qiUj/7JRY/+6hbP/vpHH/6Hwz/+d3
549 | K//ndyv/53Uo/++kcf/++fb///////////////////////////////////////////////////////30
550 | 7v/rjlD/53Yp/+d3K//ndyv/53cr/+d3K//ndyv/53cq/+iAOf/rklX/55FW3rZ8UCLsoGgAAAAAAAAA
551 | AAAAAAAAAAAAAPekaADDg1Qr6JJW5+uRVP/ofjf/53cq/+d3K//ndyv/53cr/+d3K//ndyv/53Uo/+yT
552 | V//+9/P/////////////////////////////////////////////////8bCE/+d1J//ndir/53Yp/+d1
553 | KP/ndSf/53Uo/+d3K//ndyv/53cr/+d3K//neS7/9cam////////////////////////////////////
554 | ///////////////////++vf/7Zlg/+d1KP/ndyv/53cr/+d3K//ndyv/53cr/+d3Kv/ofjf/65FU/+iS
555 | VufDg1Qr96RoAAAAAAAAAAAAAAAAAAAAAAD4o2YAyYZVMOmSVuvrkVP/6H41/+d3Kv/ndyv/53cr/+d3
556 | K//ndyv/53cr/+d1KP/tmF///vr3//////////////////////////////////////////////////fS
557 | uv/neS//53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53Yp/+qHRP/65db/////////
558 | //////////////////////////////////////////z7/+6faf/ndSj/53cr/+d3K//ndyv/53cr/+d3
559 | K//ndyr/6H41/+uRU//pklbryYZVMPijZgAAAAAAAAAAAAAAAAAAAAAA9KFkAMuIVjDpklbr65FT/+h+
560 | Nf/ndyr/53cr/+d3K//ndyv/53cr/+d3K//ndSj/7Zhf//769///////////////////////////////
561 | ///////////////////87uT/6ohG/+d2Kf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
562 | K//ndSj/7qFt//749P////////////////////////////////////////////78+v/unmj/53Uo/+d3
563 | K//ndyv/53cr/+d3K//ndyv/53cq/+h+Nf/rkVP/6ZJW68uIVjD0oWQAAAAAAAAAAAAAAAAAAAAAAOuc
564 | YwDLiFcq6ZJW5+uRVP/ofjf/53cq/+d3K//ndyv/53cr/+d3K//ndyv/53Uo/+ySVv/+9/L/////////
565 | //////////////////////////////////////////38/++kcf/ndSj/53cr/+d3K//ndyv/53cr/+d3
566 | K//ndyv/53cr/+d3K//ndyv/53cr/+d5Lv/0xKL/////////////////////////////////////////
567 | ///++fb/7Zdd/+d1KP/ndyv/53cr/+d3K//ndyv/53cr/+d3Kv/ofjf/65FU/+mSVufLiFcq65xjAAAA
568 | AAAAAAAAAAAAAAAAAADelmEAx4hYH+iSVt3rklX/6IA5/+d3Kv/ndyv/53cr/+d3K//ndyv/53cr/+d2
569 | Kf/qiEb//O/m///////////////////////////////////////////////////////1x6f/53cr/+d3
570 | K//ndyv/53cr/+d3K//ndyv/53cr/+d2Kf/ndSj/53Un/+d1J//mdCb/6YQ///rh0f//////////////
571 | /////////////////////////fLr/+uMTP/ndin/53cr/+d3K//ndyv/53cr/+d3K//ndyr/6IA5/+uS
572 | Vf/oklbdx4hYH96WYQAAAAAAAAAAAAAAAAAAAAAAyo9hAL2FWRPoklfN65JV/+mDPf/ndyr/53cr/+d3
573 | K//ndyv/53cr/+d3K//ndyr/6H41//ngzv//////////////////////////////////////////////
574 | ////////++bY/+mCPP/ndir/53cr/+d3K//ndyv/53Yq/+mBOv/ytYv/8raN//Gugf/vp3b/7qBr/+2Y
575 | X//zu5X///z7//////////////////////////////////rk1P/pgDn/53Yq/+d3K//ndyv/53cr/+d3
576 | K//ndyv/53cq/+mDPf/rklX/6JJXzb2FWRPKj2EAAAAAAAAAAAAAAAAAAAAAAKJ/XgCWeVwH5pJXsuuS
577 | Vv/phkP/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d2Kv/1xaT/////////////////////////
578 | //////////////////////////////759v/tmWD/53Uo/+d3K//ndyv/53cr/+d3K//oezL/+NfA////
579 | //////////7+///9+//++vj//vj0///+/f/////////////////////////////////2yqz/53cr/+d3
580 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//phkP/65JW/+aSV7KWeVwHon9eAAAAAAAAAAAAAAAAAAAA
581 | AABART8A/+hTAOSSWIvrklb/6otK/+d4LP/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndSj/7qFt//78
582 | +v//////////////////////////////////////////////////////87qU/+d1Kf/ndyv/53cr/+d3
583 | K//ndyv/53Uo/++ndv///fz/////////////////////////////////////////////////////////
584 | /////fz/76d1/+d1KP/ndyv/53cr/+d3K//ndyv/53cr/+d3K//neCz/6otK/+uSVv/kkliL/+hTAEBF
585 | PwAAAAAAAAAAAAAAAAAAAAAAAAAAAP+fWwDhklpc65JW/euPUP/oezH/53cr/+d3K//ndyv/53cr/+d3
586 | K//ndyv/53Yq/+mCPf/65db///////////////////////////////////////////////////////nc
587 | yP/ofDT/53cq/+d3K//ndyv/53cr/+d2Kv/phD//++fZ////////////////////////////////////
588 | ////////////////////////++nd/+qGQv/ndir/53cr/+d3K//ndyv/53cr/+d3K//ndyv/6Hsx/+uP
589 | UP/rklb94ZJaXP+fWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADnmF8A25JdLOqSVujrklT/6IA5/+d3
590 | Kv/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndin/8rWL////////////////////////////////////
591 | ///////////////////99O7/65BR/+d1Kf/ndyv/53cr/+d3K//ndyv/53Yp//O8l///////////////
592 | //////////////////////////////////////////////O8lv/ndir/53cr/+d3K//ndyv/53cr/+d3
593 | K//ndyv/53cq/+iAOf/rklT/6pJW6NuSXSznmF8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy5RnAMWR
594 | Zgrok1i565JW/+mHRP/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53Yq/+mFQf/65db/////////
595 | //////////////////////////////////////////////Gugf/ndSj/53cr/+d3K//ndyv/53cr/+d1
596 | Kf/skVT//fTu//////////////////////////////////////////////////vr3//qikj/53Yp/+d3
597 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ph0T/65JW/+iTWLnFkWYKy5RnAAAAAAAAAAAAAAAAAAAA
598 | AAAAAAAAAAAAABRIVwD/mU0A5ZRacuuSVv/qjk//6How/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
599 | K//ndSj/76Z0//769//////////////////////////////////////////////////30bf/53ku/+d3
600 | K//ndyv/53cr/+d3K//ndyv/53ov//fSuf/////////////////////////////////////////////9
601 | +//xroH/53Yp/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//oejD/6o5P/+uSVv/llFpy/5lNABRI
602 | VwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A55heAN+VXyrqk1bk65JV/+mDPf/ndyr/53cr/+d3
603 | K//ndyv/53cr/+d3K//ndyv/53cr/+d6L//0w6L/////////////////////////////////////////
604 | /////////O3j/+qHRf/ndin/53cr/+d3K//ndyv/53cr/+d1KP/vpHH//vz7////////////////////
605 | ///////////////////2zbH/6Hwz/+d3Kv/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyr/6YM9/+uS
606 | Vf/qk1bk35VfKueYXgD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQICAMaZcACmoIgD6JRZmuuS
607 | Vv/qjUz/53kv/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndir/6YE7//fTuv//////////////
608 | ///////////////////////////////8+//vo2//53Uo/+d3K//ndyv/53cr/+d3K//ndir/6YI8//rk
609 | 1v/////////////////////////////////53Mj/6oZC/+d2Kf/ndyv/53cr/+d3K//ndyv/53cr/+d3
610 | K//ndyv/53kv/+qNTP/rklb/6JRZmqagiAPGmXAAAQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
611 | AAD/tHMA7JZaAOSWXjvqk1bt65JV/+mDPf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d2
612 | Kf/phUH/99S8////////////////////////////////////////////9cWl/+d3Kv/ndyv/53cr/+d3
613 | K//ndyv/53cr/+d2Kf/zuZL////////////////////////////53Mn/6otJ/+d2Kf/ndyv/53cr/+d3
614 | K//ndyv/53cr/+d3K//ndyv/53cr/+mDPf/rklX/6pNW7eSWXjvslloA/7RzAAAAAAAAAAAAAAAAAAAA
615 | AAAAAAAAAAAAAAAAAAAAAAAAMkRDANSdbwDEpYEE6JRZmuuSVf/qjk//6Hsx/+d3K//ndyv/53cr/+d3
616 | K//ndyv/53cr/+d3K//ndyv/53Yp/+mCPP/1xqf//vv5//////////////////////////////////rk
617 | 1v/pgTr/53Yq/+d3K//ndyv/53cr/+d3K//ndin/649R//3y6//////////////9/P/2zrP/6oZD/+d2
618 | Kf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+h7Mf/qjk//65JV/+iUWZrEpYEE1J1vADJE
619 | QwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvoGYA6ZZcAOSYYS3qk1fg65JV/+mI
620 | Rf/neCz/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndin/6How//Cqev/76dz/////////
621 | ///////////////////++fX/7Zhe/+d1KP/ndyv/53cr/+d3K//ndyv/53cr/+d5Lv/3z7X///////zs
622 | 4f/xsIT/6H00/+d2Kf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d4LP/piEX/65JV/+qT
623 | V+DkmGEt6ZZcAO+gZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ19eAMOr
624 | iQD/dx0A6JZbb+uSVvzrkVT/6YI8/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
625 | Kv/ndin/6ohG//O7lP/76d3///39//////////////////O5kv/ndSj/53cr/+d3K//ndyv/53cr/+d3
626 | K//ndSj/7Ztj//O8l//ri0r/53Yp/+d2Kv/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
627 | K//pgjz/65FU/+uSVvzolltv/3cdAMOriQBDX14AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
628 | AAAAAAAAAAAAAAAAAADXo3YA4pxmAN6fbQ3plFmq65JV/+uPUf/ofjb/53cq/+d3K//ndyv/53cr/+d3
629 | K//ndyv/53cr/+d3K//ndyv/53cr/+d2Kf/ndir/6oZC/++ndv/2yq3/+uPU//3z7f/31Lz/6Hsy/+d3
630 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndir/53Yp/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
631 | K//ndyv/53cr/+d3Kv/ofjb/649R/+uSVf/plFmq3p9tDeKcZgDXo3YAAAAAAAAAAAAAAAAAAAAAAAAA
632 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRQUAO6UVgDpllsA5ZpjJuqTV87rklX/6o5O/+h8
633 | M//ndyr/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d2Kv/ndSj/53cr/+iA
634 | OP/ri0r/649Q/+d6L//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
635 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3Kv/ofDP/6o5O/+uSVf/qk1fO5ZpjJumWWwDulFYADRQUAAAA
636 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXt60A/wAAAO+O
637 | TgDnmF8+6pNX4OuSVf/qjU3/6Hwz/+d3Kv/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
638 | K//ndyv/53cr/+d3K//ndir/53Yp/+d2Kf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
639 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3Kv/ofDP/6o1N/+uSVf/qk1fg55hfPu+O
640 | TgD/AAAAl7etAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
641 | AAAAAAAAAAAAAM6yjgDTsooA+IA4AOiYXk3qk1fl65JV/+qOTv/ofjb/53cr/+d3K//ndyv/53cr/+d3
642 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
643 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ofjb/6o5O/+uS
644 | Vf/qk1fl6JheTfiAOADTsooAzrKOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
645 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2qp9AN2pegD/cSAA6JheTeqTV+DrklX/649R/+mC
646 | PP/neCz/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
647 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d4
648 | LP/pgjz/649R/+uSVf/qk1fg6JheTf5xIADdqXsA2qp9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
649 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADeqHkA3qp7APZ/
650 | NwDnmWA+6pRXzuuSVf/rkVT/6YhF/+h7Mf/ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
651 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
652 | K//ndyv/53cr/+h7Mf/piEX/65FU/+uSVf/qlFfO55lgPvZ/NwDeqnsA3qh5AAAAAAAAAAAAAAAAAAAA
653 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
654 | AAAAAAAAAAAAAN2rfgDYtY0A7o1OAOabYyXqlFmp65JW/OuSVf/qjk//6YM9/+d5L//ndyr/53cr/+d3
655 | K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
656 | K//ndyv/53cr/+d3K//ndyr/53kv/+mDPf/qjk//65JV/+uSVvzqlFmp5ptjJe6NTgDXtY0A3at+AAAA
657 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
658 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1rmTAP8AAADpllsA46JvDOmWXG7qk1ff65JV/+uS
659 | Vf/qjUz/6YM9/+h6MP/ndyv/53cq/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3K//ndyv/53cr/+d3
660 | K//ndyv/53cr/+d3K//ndyv/53cq/+d3K//oejD/6YM9/+qNTP/rklX/65JV/+qTV9/pllxu46JvDOmW
661 | WwD/AAAA1rmTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
662 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+59oA65JVAOWe
663 | ZwD9bRsA55piLOqVWpnrk1bt65JW/+uSVf/qjk//6YdE/+iAOf/oezH/53gs/+d3K//ndyr/53cq/+d3
664 | Kv/ndyr/53cq/+d3Kv/ndyr/53cq/+d3K//neCz/6Hsx/+iAOf/ph0T/6o5P/+uSVf/rklb/65NW7eqV
665 | WpnnmmIs/W0bAOWeZwDrklUAvufaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
666 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
667 | AAAAAAAAAAAAAKn//wDgqnsA17yXAOmWXADat48D6JlgOuqVWpnrk1fj65JW/+uSVv/rkVT/649Q/+qL
668 | Sv/phkP/6YM9/+iAOf/ofjf/6H41/+h+Nf/ofjf/6IA5/+mDPf/phkP/6otK/+uPUP/rkVT/65JW/+uS
669 | Vv/rk1fj6pVameiZYDrat48D6ZZcANe8lwDgqnsAqf//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
670 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
671 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALD59gDnm2MA4ad2AOqVWQDRyqwC55tiKemW
672 | XHDqlFi465NX5+uTVvzrklb/65JW/+uSVf/rklX/65FU/+uRU//rkVP/65FU/+uSVf/rklX/65JW/+uS
673 | Vv/rk1b865NX5+qUWLjpllxw55tiKdHKrALqlVkA4ad2AOebYwCw+fYAAAAAAAAAAAAAAAAAAAAAAAAA
674 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
675 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALf4
676 | 9ADom2MA36x+AOiYXwDwh0UA4qZ1CeeaYirpl11Z6ZVaiOqUWa/qlFjK6pNX2+uTV+Xrk1bp65NW6euT
677 | V+Xqk1fb6pRYyuqUWa/plVqI6ZddWeeaYiripnUJ8IdFAOiYXwDfrH4A6JtjALf49AAAAAAAAAAAAAAA
678 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
679 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
680 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAALP//wDSx6gAcP//AOKlcgDomF8A7JFTAPh3KgDcsocF5KFsD+ad
681 | Zhvnm2Ml55piKueaYirnm2Ml5p1mG+ShbA/csocF+HcqAOyRUwDomF8A4qVyAHD//wDSx6gAs///AAAA
682 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
683 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
684 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8Arf//AP+H
685 | QwDJ28YA3q6BAOShbQDmnGUA55phAOiZYADomWAA55phAOacZQDkoW0A3q6BAMjbxgD/h0MArf//AAD/
686 | /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
687 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
688 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
689 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
690 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
691 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
692 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
693 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
694 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
695 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
696 | AAAAAAAA////gAH///////gAAB//////wAAAA/////8AAAAA/////gAAAAB////4AAAAAB////AAAAAA
697 | D///4AAAAAAH///AAAAAAAP//4AAAAAAAf//AAAAAAAA//4AAAAAAAB//AAAAAAAAD/8AAAAAAAAP/gA
698 | AAAAAAAf8AAAAAAAAA/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfgAAAAAAAAB8AAAAAAAAADwAAAAAAA
699 | AAPAAAAAAAAAA8AAAAAAAAADgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA
700 | AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAA
701 | AAGAAAAAAAAAAcAAAAAAAAADwAAAAAAAAAPAAAAAAAAAA8AAAAAAAAAD4AAAAAAAAAfgAAAAAAAAB+AA
702 | AAAAAAAH8AAAAAAAAA/wAAAAAAAAD/gAAAAAAAAf/AAAAAAAAD/8AAAAAAAAP/4AAAAAAAB//wAAAAAA
703 | AP//gAAAAAAB///AAAAAAAP//+AAAAAAB///8AAAAAAP///4AAAAAB////wAAAAAP////wAAAAD/////
704 | wAAAA//////wAAAP//////4AAH////////////////////////8=
705 |
706 |
707 |
--------------------------------------------------------------------------------