init
|
|
@ -0,0 +1,63 @@
|
|||
###############################################################################
|
||||
# Set default behavior to automatically normalize line endings.
|
||||
###############################################################################
|
||||
* text=auto
|
||||
|
||||
###############################################################################
|
||||
# Set default behavior for command prompt diff.
|
||||
#
|
||||
# This is need for earlier builds of msysgit that does not have it on by
|
||||
# default for csharp files.
|
||||
# Note: This is only used by command line
|
||||
###############################################################################
|
||||
#*.cs diff=csharp
|
||||
|
||||
###############################################################################
|
||||
# Set the merge driver for project and solution files
|
||||
#
|
||||
# Merging from the command prompt will add diff markers to the files if there
|
||||
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||
# the diff markers are never inserted). Diff markers may cause the following
|
||||
# file extensions to fail to load in VS. An alternative would be to treat
|
||||
# these files as binary and thus will always conflict and require user
|
||||
# intervention with every merge. To do so, just uncomment the entries below
|
||||
###############################################################################
|
||||
#*.sln merge=binary
|
||||
#*.csproj merge=binary
|
||||
#*.vbproj merge=binary
|
||||
#*.vcxproj merge=binary
|
||||
#*.vcproj merge=binary
|
||||
#*.dbproj merge=binary
|
||||
#*.fsproj merge=binary
|
||||
#*.lsproj merge=binary
|
||||
#*.wixproj merge=binary
|
||||
#*.modelproj merge=binary
|
||||
#*.sqlproj merge=binary
|
||||
#*.wwaproj merge=binary
|
||||
|
||||
###############################################################################
|
||||
# behavior for image files
|
||||
#
|
||||
# image files are treated as binary by default.
|
||||
###############################################################################
|
||||
#*.jpg binary
|
||||
#*.png binary
|
||||
#*.gif binary
|
||||
|
||||
###############################################################################
|
||||
# diff behavior for common document formats
|
||||
#
|
||||
# Convert binary document formats to text before diffing them. This feature
|
||||
# is only available from the command line. Turn it on by uncommenting the
|
||||
# entries below.
|
||||
###############################################################################
|
||||
#*.doc diff=astextplain
|
||||
#*.DOC diff=astextplain
|
||||
#*.docx diff=astextplain
|
||||
#*.DOCX diff=astextplain
|
||||
#*.dot diff=astextplain
|
||||
#*.DOT diff=astextplain
|
||||
#*.pdf diff=astextplain
|
||||
#*.PDF diff=astextplain
|
||||
#*.rtf diff=astextplain
|
||||
#*.RTF diff=astextplain
|
||||
|
|
@ -0,0 +1,242 @@
|
|||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
|
||||
# User-specific files
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
[Xx]64/
|
||||
[Xx]86/
|
||||
[Bb]uild/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
|
||||
# Visual Studio 2015 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUNIT
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# DNX
|
||||
project.lock.json
|
||||
artifacts/
|
||||
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_i.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# JustCode is a .NET coding add-in
|
||||
.JustCode
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
|
||||
# TODO: Un-comment the next line if you do not want to checkin
|
||||
# your web deploy settings because they may include unencrypted
|
||||
# passwords
|
||||
#*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/packages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/packages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/packages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignoreable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directory
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
[Ss]tyle[Cc]op.*
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
node_modules/
|
||||
orleans.codegen.cs
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# LightSwitch generated files
|
||||
GeneratedArtifacts/
|
||||
ModelManifest.xml
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29324.140
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DBCHM", "DBChm\DBCHM.csproj", "{55B00DB1-BA55-47B7-BD44-35C0FCD05FD5}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MJTop.Data", "MJTop.Data\MJTop.Data.csproj", "{3D36CDC9-E989-465B-A9F1-AD85DC42F242}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DocTools", "DocTools\DocTools.csproj", "{130A8861-0C39-4933-9DE8-AA9525488211}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{55B00DB1-BA55-47B7-BD44-35C0FCD05FD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{55B00DB1-BA55-47B7-BD44-35C0FCD05FD5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{55B00DB1-BA55-47B7-BD44-35C0FCD05FD5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{55B00DB1-BA55-47B7-BD44-35C0FCD05FD5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3D36CDC9-E989-465B-A9F1-AD85DC42F242}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3D36CDC9-E989-465B-A9F1-AD85DC42F242}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3D36CDC9-E989-465B-A9F1-AD85DC42F242}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3D36CDC9-E989-465B-A9F1-AD85DC42F242}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{130A8861-0C39-4933-9DE8-AA9525488211}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{130A8861-0C39-4933-9DE8-AA9525488211}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{130A8861-0C39-4933-9DE8-AA9525488211}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{130A8861-0C39-4933-9DE8-AA9525488211}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {6EF98F13-0310-44EE-AF0C-6A033D4E8EB1}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
@ -0,0 +1,196 @@
|
|||
namespace DBCHM
|
||||
{
|
||||
partial class AboutBox
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutBox));
|
||||
this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.logoPictureBox = new System.Windows.Forms.PictureBox();
|
||||
this.labelProductName = new System.Windows.Forms.Label();
|
||||
this.labelVersion = new System.Windows.Forms.Label();
|
||||
this.labelCopyright = new System.Windows.Forms.Label();
|
||||
this.labelCompanyName = new System.Windows.Forms.Label();
|
||||
this.textBoxDescription = new System.Windows.Forms.TextBox();
|
||||
this.okButton = new System.Windows.Forms.Button();
|
||||
this.tableLayoutPanel.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tableLayoutPanel
|
||||
//
|
||||
this.tableLayoutPanel.ColumnCount = 2;
|
||||
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33F));
|
||||
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67F));
|
||||
this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0);
|
||||
this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0);
|
||||
this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1);
|
||||
this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2);
|
||||
this.tableLayoutPanel.Controls.Add(this.labelCompanyName, 1, 3);
|
||||
this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4);
|
||||
this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5);
|
||||
this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel.Location = new System.Drawing.Point(9, 8);
|
||||
this.tableLayoutPanel.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.tableLayoutPanel.Name = "tableLayoutPanel";
|
||||
this.tableLayoutPanel.RowCount = 6;
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.Size = new System.Drawing.Size(417, 246);
|
||||
this.tableLayoutPanel.TabIndex = 0;
|
||||
//
|
||||
// logoPictureBox
|
||||
//
|
||||
this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.logoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("logoPictureBox.Image")));
|
||||
this.logoPictureBox.Location = new System.Drawing.Point(3, 2);
|
||||
this.logoPictureBox.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.logoPictureBox.Name = "logoPictureBox";
|
||||
this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6);
|
||||
this.logoPictureBox.Size = new System.Drawing.Size(131, 242);
|
||||
this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.logoPictureBox.TabIndex = 12;
|
||||
this.logoPictureBox.TabStop = false;
|
||||
//
|
||||
// labelProductName
|
||||
//
|
||||
this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.labelProductName.Location = new System.Drawing.Point(143, 0);
|
||||
this.labelProductName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
||||
this.labelProductName.MaximumSize = new System.Drawing.Size(0, 16);
|
||||
this.labelProductName.Name = "labelProductName";
|
||||
this.labelProductName.Size = new System.Drawing.Size(271, 16);
|
||||
this.labelProductName.TabIndex = 19;
|
||||
this.labelProductName.Text = "DBCHM";
|
||||
this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// labelVersion
|
||||
//
|
||||
this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.labelVersion.Location = new System.Drawing.Point(143, 24);
|
||||
this.labelVersion.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
||||
this.labelVersion.MaximumSize = new System.Drawing.Size(0, 16);
|
||||
this.labelVersion.Name = "labelVersion";
|
||||
this.labelVersion.Size = new System.Drawing.Size(271, 16);
|
||||
this.labelVersion.TabIndex = 0;
|
||||
this.labelVersion.Text = "Version 1.0.0.0";
|
||||
this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// labelCopyright
|
||||
//
|
||||
this.labelCopyright.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.labelCopyright.Location = new System.Drawing.Point(143, 48);
|
||||
this.labelCopyright.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
||||
this.labelCopyright.MaximumSize = new System.Drawing.Size(0, 16);
|
||||
this.labelCopyright.Name = "labelCopyright";
|
||||
this.labelCopyright.Size = new System.Drawing.Size(271, 16);
|
||||
this.labelCopyright.TabIndex = 21;
|
||||
this.labelCopyright.Text = "Copyright 2018 , lztkdr";
|
||||
this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// labelCompanyName
|
||||
//
|
||||
this.labelCompanyName.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.labelCompanyName.Location = new System.Drawing.Point(143, 72);
|
||||
this.labelCompanyName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
||||
this.labelCompanyName.MaximumSize = new System.Drawing.Size(0, 16);
|
||||
this.labelCompanyName.Name = "labelCompanyName";
|
||||
this.labelCompanyName.Size = new System.Drawing.Size(271, 16);
|
||||
this.labelCompanyName.TabIndex = 22;
|
||||
this.labelCompanyName.Text = "QQ群:132941648";
|
||||
this.labelCompanyName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// textBoxDescription
|
||||
//
|
||||
this.textBoxDescription.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.textBoxDescription.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.textBoxDescription.ForeColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.textBoxDescription.Location = new System.Drawing.Point(143, 98);
|
||||
this.textBoxDescription.Margin = new System.Windows.Forms.Padding(6, 2, 3, 2);
|
||||
this.textBoxDescription.Multiline = true;
|
||||
this.textBoxDescription.Name = "textBoxDescription";
|
||||
this.textBoxDescription.ReadOnly = true;
|
||||
this.textBoxDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||
this.textBoxDescription.Size = new System.Drawing.Size(271, 119);
|
||||
this.textBoxDescription.TabIndex = 23;
|
||||
this.textBoxDescription.TabStop = false;
|
||||
this.textBoxDescription.Text = "有问题,我要反馈!";
|
||||
this.textBoxDescription.Click += new System.EventHandler(this.textBoxDescription_Click);
|
||||
//
|
||||
// okButton
|
||||
//
|
||||
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.okButton.Location = new System.Drawing.Point(339, 222);
|
||||
this.okButton.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.okButton.Name = "okButton";
|
||||
this.okButton.Size = new System.Drawing.Size(75, 22);
|
||||
this.okButton.TabIndex = 24;
|
||||
this.okButton.Text = "&OK";
|
||||
this.okButton.Click += new System.EventHandler(this.okButton_Click);
|
||||
//
|
||||
// AboutBox
|
||||
//
|
||||
this.AcceptButton = this.okButton;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.okButton;
|
||||
this.ClientSize = new System.Drawing.Size(435, 262);
|
||||
this.Controls.Add(this.tableLayoutPanel);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "AboutBox";
|
||||
this.Padding = new System.Windows.Forms.Padding(9, 8, 9, 8);
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "AboutBox";
|
||||
this.tableLayoutPanel.ResumeLayout(false);
|
||||
this.tableLayoutPanel.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
|
||||
private System.Windows.Forms.PictureBox logoPictureBox;
|
||||
private System.Windows.Forms.Label labelProductName;
|
||||
private System.Windows.Forms.Label labelVersion;
|
||||
private System.Windows.Forms.Label labelCopyright;
|
||||
private System.Windows.Forms.Label labelCompanyName;
|
||||
private System.Windows.Forms.TextBox textBoxDescription;
|
||||
private System.Windows.Forms.Button okButton;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,121 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using System.Reflection;
|
||||
using ComponentFactory.Krypton.Toolkit;
|
||||
|
||||
namespace DBCHM
|
||||
{
|
||||
partial class AboutBox : KryptonForm
|
||||
{
|
||||
public AboutBox()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Text = String.Format("About {0}", AssemblyTitle);
|
||||
this.labelProductName.Text = AssemblyProduct;
|
||||
this.labelVersion.Text = String.Format("Version {0}", AssemblyVersion);
|
||||
this.labelCopyright.Text = AssemblyCopyright;
|
||||
this.labelCompanyName.Text = AssemblyCompany;
|
||||
}
|
||||
|
||||
#region Assembly Attribute Accessors
|
||||
|
||||
public string AssemblyTitle
|
||||
{
|
||||
get
|
||||
{
|
||||
// Get all Title attributes on this assembly
|
||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
|
||||
// If there is at least one Title attribute
|
||||
if (attributes.Length > 0)
|
||||
{
|
||||
// Select the first one
|
||||
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
|
||||
// If it is not an empty string, return it
|
||||
if (titleAttribute.Title != "")
|
||||
return titleAttribute.Title;
|
||||
}
|
||||
// If there was no Title attribute, or if the Title attribute was the empty string, return the .exe name
|
||||
return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
|
||||
}
|
||||
}
|
||||
|
||||
public string AssemblyVersion
|
||||
{
|
||||
get
|
||||
{
|
||||
return Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public string AssemblyDescription
|
||||
{
|
||||
get
|
||||
{
|
||||
// Get all Description attributes on this assembly
|
||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
|
||||
// If there aren't any Description attributes, return an empty string
|
||||
if (attributes.Length == 0)
|
||||
return "";
|
||||
// If there is a Description attribute, return its value
|
||||
return ((AssemblyDescriptionAttribute)attributes[0]).Description;
|
||||
}
|
||||
}
|
||||
|
||||
public string AssemblyProduct
|
||||
{
|
||||
get
|
||||
{
|
||||
// Get all Product attributes on this assembly
|
||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
|
||||
// If there aren't any Product attributes, return an empty string
|
||||
if (attributes.Length == 0)
|
||||
return "";
|
||||
// If there is a Product attribute, return its value
|
||||
return ((AssemblyProductAttribute)attributes[0]).Product;
|
||||
}
|
||||
}
|
||||
|
||||
public string AssemblyCopyright
|
||||
{
|
||||
get
|
||||
{
|
||||
// Get all Copyright attributes on this assembly
|
||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
|
||||
// If there aren't any Copyright attributes, return an empty string
|
||||
if (attributes.Length == 0)
|
||||
return "";
|
||||
// If there is a Copyright attribute, return its value
|
||||
return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
|
||||
}
|
||||
}
|
||||
|
||||
public string AssemblyCompany
|
||||
{
|
||||
get
|
||||
{
|
||||
// Get all Company attributes on this assembly
|
||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
|
||||
// If there aren't any Company attributes, return an empty string
|
||||
if (attributes.Length == 0)
|
||||
return "";
|
||||
// If there is a Company attribute, return its value
|
||||
return ((AssemblyCompanyAttribute)attributes[0]).Company;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
private void okButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Dispose();
|
||||
}
|
||||
|
||||
private void textBoxDescription_Click(object sender, EventArgs e)
|
||||
{
|
||||
System.Diagnostics.Process.Start("http://shang.qq.com/wpa/qunwpa?idkey=43619cbe3b2a10ded01b5354ac6928b30cc91bda45176f89a191796b7a7c0e26");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,603 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="logoPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Runtime.Serialization.Formatters.Binary;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DBCHM
|
||||
{
|
||||
public static class CommonExtension
|
||||
{
|
||||
public static string FormatString(this string s, params object[] args)
|
||||
{
|
||||
return string.Format(s, args);
|
||||
}
|
||||
|
||||
public static void SetHidden(this FileInfo file)
|
||||
{
|
||||
if (file != null && file.Exists)
|
||||
{
|
||||
file.Attributes = FileAttributes.Hidden;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 深度复制
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="source"></param>
|
||||
/// <returns></returns>
|
||||
public static T DeepCopy<T>(this T source)
|
||||
{
|
||||
if (source == null)
|
||||
{
|
||||
return default(T);
|
||||
}
|
||||
|
||||
using (Stream objectStream = new MemoryStream())
|
||||
{
|
||||
//利用 System.Runtime.Serialization序列化与反序列化完成引用对象的复制
|
||||
IFormatter formatter = new BinaryFormatter();
|
||||
formatter.Serialize(objectStream, source);
|
||||
objectStream.Seek(0, SeekOrigin.Begin);
|
||||
return (T)formatter.Deserialize(objectStream);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,304 @@
|
|||
using MJTop.Data;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.AccessControl;
|
||||
|
||||
namespace DBCHM
|
||||
{
|
||||
/// <summary>
|
||||
/// 管理 配置的连接字符串
|
||||
/// </summary>
|
||||
public static class ConfigUtils
|
||||
{
|
||||
/// <summary>
|
||||
/// 当前应用程序的名称
|
||||
/// </summary>
|
||||
private static string ConfigFileName = Path.GetFileNameWithoutExtension(AppDomain.CurrentDomain.FriendlyName).Replace(".vshost", "");
|
||||
/// <summary>
|
||||
/// 定义配置存放的路径
|
||||
/// </summary>
|
||||
public static string AppPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData, Environment.SpecialFolderOption.Create), ConfigFileName);
|
||||
|
||||
/// <summary>
|
||||
/// sqlite db文件的存放路径
|
||||
/// </summary>
|
||||
private static string ConfigFilePath = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 针对配置的 数据库操作对象
|
||||
/// </summary>
|
||||
private static DB db = null;
|
||||
|
||||
/// <summary>
|
||||
/// 初始化静态数据
|
||||
/// 将sqlite数据库写入 C:\Users\用户名\AppData\Local\DBChm 目录中
|
||||
/// </summary>
|
||||
static ConfigUtils()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!ZetaLongPaths.ZlpIOHelper.DirectoryExists(AppPath))
|
||||
{
|
||||
ZetaLongPaths.ZlpIOHelper.CreateDirectory(AppPath);
|
||||
}
|
||||
AddSecurityControll2Folder(AppPath);
|
||||
ConfigFilePath = Path.Combine(AppPath, ConfigFileName + ".db");
|
||||
Init();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogUtils.LogError("ConfigUtils初始化", Developer.SysDefault, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化创建配置数据库
|
||||
/// </summary>
|
||||
private static void Init()
|
||||
{
|
||||
db = DBMgr.UseDB(DBType.SQLite, ConfigFilePath);
|
||||
|
||||
string strSql = @"create table DBCHMConfig
|
||||
(
|
||||
Id integer PRIMARY KEY autoincrement,
|
||||
Name nvarchar(200) unique,
|
||||
DBType varchar(30),
|
||||
Server varchar(100),
|
||||
Port integer,
|
||||
DBName varchar(100),
|
||||
Uid varchar(50),
|
||||
Pwd varchar(100),
|
||||
ConnTimeOut integer,
|
||||
ConnString text,
|
||||
Modified text
|
||||
)";
|
||||
|
||||
//表不存在则创建 连接字符串 配置表
|
||||
if (db.Info.TableNames == null || !db.Info.TableNames.Contains(nameof(DBCHMConfig), StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
db.ExecSql(strSql);
|
||||
//执行后,刷新实例 表结构信息
|
||||
db.Info.Refresh();
|
||||
}
|
||||
else
|
||||
{
|
||||
// v1.7.3.7 版本 增加 连接超时 与 最后连接时间
|
||||
var info = db.Info;
|
||||
if(!info.IsExistColumn(nameof(DBCHMConfig), nameof(DBCHMConfig.Modified)))
|
||||
{
|
||||
var configs = db.GetListDictionary("select * from " + nameof(DBCHMConfig));
|
||||
|
||||
db.Info.DropTable(nameof(DBCHMConfig));
|
||||
|
||||
db.ExecSql(strSql);
|
||||
|
||||
//执行后,刷新实例 表结构信息
|
||||
db.Info.Refresh();
|
||||
|
||||
if (configs != null && configs.Count > 0)
|
||||
{
|
||||
foreach (var config in configs)
|
||||
{
|
||||
try
|
||||
{
|
||||
db.Insert(config, nameof(DBCHMConfig));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogUtils.LogError("Init", Developer.SysDefault, ex, config);
|
||||
}
|
||||
}
|
||||
|
||||
db.ExecSql("update " + nameof(DBCHMConfig) + " set ConnTimeOut = 120 ");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 判断磁盘路径下是否安装存在某个文件,最后返回存在某个文件的路径
|
||||
/// </summary>
|
||||
/// <param name="installPaths"></param>
|
||||
/// <param name="installPath"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsInstall(string[] installPaths, out string installPath)
|
||||
{
|
||||
installPath = string.Empty;
|
||||
var driInfos = DriveInfo.GetDrives();
|
||||
foreach (DriveInfo dInfo in driInfos)
|
||||
{
|
||||
if (dInfo.DriveType == DriveType.Fixed)
|
||||
{
|
||||
foreach (string ipath in installPaths)
|
||||
{
|
||||
string path = Path.Combine(dInfo.Name, ipath);
|
||||
if (File.Exists(path))
|
||||
{
|
||||
installPath = path;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检测是否安装某个软件,并返回软件的卸载安装路径
|
||||
/// </summary>
|
||||
/// <param name="softName"></param>
|
||||
/// <param name="installPath"></param>
|
||||
/// <returns></returns>
|
||||
public static bool CheckInstall(string softName, string str_exe, out string installPath)
|
||||
{
|
||||
//即时刷新注册表
|
||||
SHChangeNotify(0x8000000, 0, IntPtr.Zero, IntPtr.Zero);
|
||||
|
||||
installPath = string.Empty;
|
||||
|
||||
bool isFind = false;
|
||||
var uninstallNode = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall", false);
|
||||
if (uninstallNode != null)
|
||||
{
|
||||
//LocalMachine_64
|
||||
using (uninstallNode)
|
||||
{
|
||||
foreach (var subKeyName in uninstallNode.GetSubKeyNames())
|
||||
{
|
||||
var subKey = uninstallNode.OpenSubKey(subKeyName);
|
||||
string displayName = (subKey.GetValue("DisplayName") ?? string.Empty).ToString();
|
||||
string path = (subKey.GetValue("UninstallString") ?? string.Empty).ToString();
|
||||
Console.WriteLine(displayName);
|
||||
if (displayName.Contains(softName) && !string.IsNullOrWhiteSpace(path))
|
||||
{
|
||||
installPath = Path.Combine(Path.GetDirectoryName(path), str_exe);
|
||||
if (File.Exists(installPath))
|
||||
{
|
||||
isFind = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!isFind)
|
||||
{
|
||||
//LocalMachine_32
|
||||
uninstallNode = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", false);
|
||||
using (uninstallNode)
|
||||
{
|
||||
foreach (var subKeyName in uninstallNode.GetSubKeyNames())
|
||||
{
|
||||
var subKey = uninstallNode.OpenSubKey(subKeyName);
|
||||
string displayName = (subKey.GetValue("DisplayName") ?? string.Empty).ToString();
|
||||
string path = (subKey.GetValue("UninstallString") ?? string.Empty).ToString();
|
||||
Console.WriteLine(displayName);
|
||||
if (displayName.Contains(softName) && !string.IsNullOrWhiteSpace(path))
|
||||
{
|
||||
installPath = Path.Combine(Path.GetDirectoryName(path), str_exe);
|
||||
if (File.Exists(installPath))
|
||||
{
|
||||
isFind = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return isFind;
|
||||
}
|
||||
|
||||
[DllImport("shell32.dll")]
|
||||
|
||||
public static extern void SHChangeNotify(uint wEventId, uint uFlags, IntPtr dwItem1, IntPtr dwItem2);
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
///为文件夹添加users,everyone用户组的完全控制权限
|
||||
/// </summary>
|
||||
/// <param name="dirPath"></param>
|
||||
public static void AddSecurityControll2Folder(string dirPath)
|
||||
{
|
||||
//获取文件夹信息
|
||||
DirectoryInfo dir = new DirectoryInfo(dirPath);
|
||||
if (dir.Exists)
|
||||
{
|
||||
//获得该文件夹的所有访问权限
|
||||
System.Security.AccessControl.DirectorySecurity dirSecurity = dir.GetAccessControl(AccessControlSections.All);
|
||||
//设定文件ACL继承
|
||||
InheritanceFlags inherits = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit;
|
||||
//添加ereryone用户组的访问权限规则 完全控制权限
|
||||
FileSystemAccessRule everyoneFileSystemAccessRule = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, inherits, PropagationFlags.None, AccessControlType.Allow);
|
||||
//添加Users用户组的访问权限规则 完全控制权限
|
||||
FileSystemAccessRule usersFileSystemAccessRule = new FileSystemAccessRule("Users", FileSystemRights.FullControl, inherits, PropagationFlags.None, AccessControlType.Allow);
|
||||
bool isModified = false;
|
||||
dirSecurity.ModifyAccessRule(AccessControlModification.Add, everyoneFileSystemAccessRule, out isModified);
|
||||
dirSecurity.ModifyAccessRule(AccessControlModification.Add, usersFileSystemAccessRule, out isModified);
|
||||
//设置访问权限
|
||||
dir.SetAccessControl(dirSecurity);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加或修改配置连接
|
||||
/// </summary>
|
||||
/// <param name="dbCHMConfig"></param>
|
||||
public static void Save(NameValueCollection dbCHMConfig)
|
||||
{
|
||||
db.Save(dbCHMConfig, "DBCHMConfig");
|
||||
}
|
||||
|
||||
public static void UpLastModified(int id)
|
||||
{
|
||||
db.ExecSql("update DBCHMConfig set Modified='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "' where id=" + id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除连接
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
public static void Delete(int id)
|
||||
{
|
||||
db.Delete("DBCHMConfig", "Id", id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询出所有配置的连接
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static List<DBCHMConfig> SelectAll()
|
||||
{
|
||||
return db.GetDataTable("select * from DBCHMConfig order by Modified desc ").ConvertToListObject<DBCHMConfig>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 得到其中1个连接
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public static DBCHMConfig Get(int id)
|
||||
{
|
||||
return db.GetDataTable("select * from DBCHMConfig where id = " + id).ConvertToListObject<DBCHMConfig>().FirstOrDefault();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 判断配置表是否存在连接字符串
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static bool HasValue()
|
||||
{
|
||||
string strSql = "select count(1) from DBCHMConfig";
|
||||
return db.Single<int>(strSql, 0) > 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DBCHM
|
||||
{
|
||||
public class DBCHMConfig
|
||||
{
|
||||
[DisplayName("ID")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[DisplayName("连接名")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[DisplayName("数据库类型")]
|
||||
public string DBType { get; set; }
|
||||
|
||||
[DisplayName("主机")]
|
||||
public string Server { get; set; }
|
||||
|
||||
[DisplayName("端口")]
|
||||
public int? Port { get; set; }
|
||||
[DisplayName("数据库")]
|
||||
public string DBName { get; set; }
|
||||
|
||||
[DisplayName("用户名")]
|
||||
public string Uid { get; set; }
|
||||
|
||||
[DisplayName("密码")]
|
||||
public string Pwd { get; set; }
|
||||
|
||||
[DisplayName("连接超时")]
|
||||
public int? ConnTimeOut { get; set; }
|
||||
|
||||
[DisplayName("连接字符串")]
|
||||
public string ConnString { get; set; }
|
||||
|
||||
[DisplayName("最后使用时间")]
|
||||
public DateTime Modified { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
using MJTop.Data;
|
||||
|
||||
namespace DBCHM
|
||||
{
|
||||
public static class DBUtils
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 数据库对象
|
||||
/// MJTop.Data 已开源。
|
||||
/// </summary>
|
||||
public static DB Instance
|
||||
{ get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
|
||||
|
||||
public static class EnumExt<TEnum>
|
||||
where TEnum : struct
|
||||
{
|
||||
private static readonly Dictionary<string, TEnum> read_dict_Enums;
|
||||
private static readonly Dictionary<string, string> read_dict_Enums_desc;
|
||||
static EnumExt()
|
||||
{
|
||||
read_dict_Enums = new Dictionary<string, TEnum>();
|
||||
read_dict_Enums_desc = new Dictionary<string, string>();
|
||||
Type enumType = typeof(TEnum);
|
||||
foreach (var val in Enum.GetValues(enumType))
|
||||
{
|
||||
string valstr = val.ToString();
|
||||
read_dict_Enums.Add(valstr, (TEnum)val);
|
||||
|
||||
var descAttr = enumType.GetField(valstr).GetCustomAttributes(typeof(DescriptionAttribute), false);
|
||||
string desc = valstr;
|
||||
if (descAttr.Length > 0)
|
||||
{
|
||||
desc = (descAttr.FirstOrDefault() as DescriptionAttribute).Description;
|
||||
}
|
||||
read_dict_Enums_desc.Add(val.ToString(), desc);
|
||||
}
|
||||
}
|
||||
public static Dictionary<string, TEnum> All()
|
||||
{
|
||||
return new Dictionary<string, TEnum>(read_dict_Enums);
|
||||
}
|
||||
|
||||
public static string ToDescriptionString(TEnum @this)
|
||||
{
|
||||
return read_dict_Enums_desc[@this.ToString()];
|
||||
}
|
||||
public static int ToInt(TEnum @this)
|
||||
{
|
||||
return Convert.ToInt32(@this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace DBCHM
|
||||
{
|
||||
/// <summary>
|
||||
/// 操作类型
|
||||
/// </summary>
|
||||
public enum OPType
|
||||
{
|
||||
新建,
|
||||
编辑,
|
||||
删除,
|
||||
克隆
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
using MJTop.Data;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Dynamic;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DBCHM
|
||||
{
|
||||
public static class FormUtils
|
||||
{
|
||||
/// <summary>
|
||||
/// 静态构造函数执行1次,记载 可以处理DBCHM的数据库类型
|
||||
/// </summary>
|
||||
static FormUtils()
|
||||
{
|
||||
DictDBType = EnumExt<DBType>.All();
|
||||
|
||||
DictDBType.Remove(DBType.Oracle.ToString());
|
||||
}
|
||||
/// <summary>
|
||||
/// 所有数据库类型 对应的端口
|
||||
/// </summary>
|
||||
public static readonly Dictionary<string, string> DictPort = new Dictionary<string, string>()
|
||||
{
|
||||
{ DBType.SQLite.ToString(),string.Empty},
|
||||
{ DBType.SqlServer.ToString(),"1433"},
|
||||
{ DBType.MySql.ToString(),"3306"},
|
||||
{ DBType.OracleDDTek.ToString(),"1521"},
|
||||
//{ DBType.Oracle.ToString(),"1521"},
|
||||
{ DBType.PostgreSql.ToString(),"5432"},
|
||||
{ DBType.DB2.ToString(),"50000"},
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// 所有数据库类型
|
||||
/// </summary>
|
||||
public static Dictionary<string, DBType> DictDBType
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 是否正常的Close
|
||||
/// </summary>
|
||||
public static bool IsOK_Close { get; set; } = false;
|
||||
|
||||
|
||||
public static ProgressArg ProgArg { get; set; }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Loading加载
|
||||
/// </summary>
|
||||
/// <param name="msg">loading提示消息</param>
|
||||
/// <param name="owner">当前窗体 this </param>
|
||||
/// <param name="work">异步执行方法</param>
|
||||
/// <param name="workArg">异步执行方法的参数</param>
|
||||
public static void ShowProcessing(string msg, Form owner, Action<object> work, object workArg = null)
|
||||
{
|
||||
try
|
||||
{
|
||||
FrmProcessing processingForm = new FrmProcessing(msg);
|
||||
dynamic expObj = new ExpandoObject();
|
||||
expObj.Form = processingForm;
|
||||
expObj.WorkArg = workArg;
|
||||
processingForm.SetWorkAction(work, expObj);
|
||||
processingForm.ShowDialog(owner);
|
||||
if (processingForm.WorkException != null)
|
||||
{
|
||||
throw processingForm.WorkException;
|
||||
}
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
LogUtils.LogError("FrmProcessing", Developer.SysDefault, ex, msg);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DBCHM
|
||||
{
|
||||
/// <summary>
|
||||
/// 进度条参数类
|
||||
/// </summary>
|
||||
public class ProgressArg
|
||||
{
|
||||
public ProgressArg(Action execAct, int maxNum)
|
||||
{
|
||||
this.ExecAct = execAct;
|
||||
this.MaxNum = maxNum;
|
||||
}
|
||||
public Action ExecAct { get; set; }
|
||||
|
||||
public int MaxNum { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml;
|
||||
|
||||
namespace DBCHM.Common
|
||||
{
|
||||
/// <summary>
|
||||
/// 解析VS生成的 XML文档文件
|
||||
/// </summary>
|
||||
public class XmlAnalyze
|
||||
{
|
||||
public Dictionary<KeyValuePair<string, string>, List<KeyValuePair<string, string>>> Data { get; set; } = new Dictionary<KeyValuePair<string, string>, List<KeyValuePair<string, string>>>();
|
||||
|
||||
public List<string> EntityNames { get; set; } = new List<string>();
|
||||
|
||||
public Dictionary<string, string> EntityComments { get; set; } = new Dictionary<string, string>();
|
||||
|
||||
private Dictionary<string, string> EntityXPaths { get; set; } = new Dictionary<string, string>();
|
||||
|
||||
public XmlAnalyze(string path)
|
||||
{
|
||||
var content = File.ReadAllText(path, Encoding.UTF8);
|
||||
|
||||
XmlDocument doc = new XmlDocument();
|
||||
doc.LoadXml(content);
|
||||
var rootNode = doc.DocumentElement;
|
||||
|
||||
var nodeList = rootNode.SelectNodes("//members/member[starts-with(@name,'T:')]");
|
||||
|
||||
foreach (XmlNode node in nodeList)
|
||||
{
|
||||
var value = node.Attributes["name"]?.Value;
|
||||
var entityName = value?.Split('.')?.LastOrDefault();
|
||||
|
||||
//实体名 必须由 字母数字或下划线组成
|
||||
if (Regex.IsMatch(entityName, @"^[a-z\d_]+$", RegexOptions.Compiled | RegexOptions.IgnoreCase))
|
||||
{
|
||||
var comment = node?.InnerText?.Trim();
|
||||
EntityNames.Add(entityName);
|
||||
EntityComments.Add(entityName, comment);
|
||||
|
||||
var xpath = value?.Replace("T:", "P:") + ".";
|
||||
EntityXPaths.Add(entityName, xpath);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var item in EntityXPaths)
|
||||
{
|
||||
var nodes = rootNode.SelectNodes($"//members/member[starts-with(@name,'{item.Value}')]");
|
||||
|
||||
var ecKey = new KeyValuePair<string, string>(item.Key, EntityComments[item.Key]);
|
||||
|
||||
var lstKV = new List<KeyValuePair<string, string>>();
|
||||
|
||||
foreach (XmlNode node in nodes)
|
||||
{
|
||||
var value = node.Attributes["name"]?.Value;
|
||||
var propName = value?.Split('.')?.LastOrDefault();
|
||||
var comment = node.InnerText?.Trim();
|
||||
|
||||
lstKV.Add(new KeyValuePair<string, string>(propName, comment));
|
||||
}
|
||||
Data.Add(ecKey, lstKV);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,217 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{55B00DB1-BA55-47B7-BD44-35C0FCD05FD5}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>DBCHM</RootNamespace>
|
||||
<AssemblyName>DBCHM</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<DocumentationFile>
|
||||
</DocumentationFile>
|
||||
<NoWarn>CS7035</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>ico\dbchm.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="ComponentFactory.Krypton.Toolkit, Version=4.5.0.0, Culture=neutral, PublicKeyToken=a87e673e9ecb6e8e, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>lib\ComponentFactory.Krypton.Toolkit.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="ICSharpCode.TextEditor, Version=4.2.0.0, Culture=neutral, PublicKeyToken=4d61825e8dd49f1a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ICSharpCode.TextEditor.Extended.4.2.4\lib\net45\ICSharpCode.TextEditor.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Data.Linq" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="ZetaLongPaths, Version=1.0.0.38, Culture=neutral, PublicKeyToken=b764f59068f31f38, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ZetaLongPaths.1.0.0.38\lib\net452-full\ZetaLongPaths.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AboutBox.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="AboutBox.Designer.cs">
|
||||
<DependentUpon>AboutBox.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Common\CommonExtension.cs" />
|
||||
<Compile Include="Common\DBCHMConfig.cs" />
|
||||
<Compile Include="Common\DBUtils.cs" />
|
||||
<Compile Include="Common\EnumExtension.cs" />
|
||||
<Compile Include="Common\Enums.cs" />
|
||||
<Compile Include="Common\FormUtils.cs" />
|
||||
<Compile Include="Common\ConfigUtils.cs" />
|
||||
<Compile Include="Common\ProgressArg.cs" />
|
||||
<Compile Include="Common\XmlAnalyze.cs" />
|
||||
<Compile Include="FrmProcessing.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FrmProcessing.Designer.cs">
|
||||
<DependentUpon>FrmProcessing.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="GridFormMgr.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="GridFormMgr.Designer.cs">
|
||||
<DependentUpon>GridFormMgr.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="DBForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="DBForm.Designer.cs">
|
||||
<DependentUpon>DBForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ImportForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ImportForm.designer.cs">
|
||||
<DependentUpon>ImportForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="PdmModels\ColumnInfo.cs" />
|
||||
<Compile Include="PdmModels\PdmKey.cs" />
|
||||
<Compile Include="PdmModels\PdmModels.cs" />
|
||||
<Compile Include="PdmModels\SelectedTables.cs" />
|
||||
<Compile Include="PdmModels\TableInfo.cs" />
|
||||
<Compile Include="PDM\PdmReader.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="MainForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MainForm.designer.cs">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="TreeViewEnhanced.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="AboutBox.resx">
|
||||
<DependentUpon>AboutBox.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmProcessing.resx">
|
||||
<DependentUpon>FrmProcessing.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="GridFormMgr.resx">
|
||||
<DependentUpon>GridFormMgr.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="DBForm.resx">
|
||||
<DependentUpon>DBForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ImportForm.resx">
|
||||
<DependentUpon>ImportForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="MainForm.resx">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<None Include="app.config">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="htmlhelp.exe">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="ico\about.png" />
|
||||
<Content Include="ico\connect.png" />
|
||||
<Content Include="ico\DBCHM.ico" />
|
||||
<Content Include="ico\empty.png" />
|
||||
<Content Include="ico\excel.png" />
|
||||
<Content Include="ico\exp.png" />
|
||||
<Content Include="ico\html.png" />
|
||||
<Content Include="ico\logo.png" />
|
||||
<Content Include="ico\md.png" />
|
||||
<Content Include="ico\pdf.png" />
|
||||
<Content Include="ico\refresh_reload.png" />
|
||||
<Content Include="ico\upload.png" />
|
||||
<Content Include="ico\word.png" />
|
||||
<Content Include="ico\xml.png" />
|
||||
<Content Include="Images\DBCHM001.png" />
|
||||
<Content Include="Images\DBCHM002.png" />
|
||||
<Content Include="Images\DBCHM003.png" />
|
||||
<Content Include="Images\DBCHM004.png" />
|
||||
<Content Include="Images\DBCHM005.png" />
|
||||
<EmbeddedResource Include="Resources\loading.gif" />
|
||||
<EmbeddedResource Include="lib\ComponentFactory.Krypton.Toolkit.dll" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\DocTools\DocTools.csproj">
|
||||
<Project>{130a8861-0c39-4933-9de8-aa9525488211}</Project>
|
||||
<Name>DocTools</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\MJTop.Data\MJTop.Data.csproj">
|
||||
<Project>{3d36cdc9-e989-465b-a9f1-ad85dc42f242}</Project>
|
||||
<Name>MJTop.Data</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<Target Name="AfterBuild">
|
||||
<ItemGroup>
|
||||
<MoveToLibFolder Include="$(OutputPath)*.dll ; $(OutputPath)*.pdb ; $(OutputPath)*.xml" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,387 @@
|
|||
namespace DBCHM
|
||||
{
|
||||
partial class DBForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DBForm));
|
||||
this.labelControl1 = new System.Windows.Forms.Label();
|
||||
this.TxtConnectName = new System.Windows.Forms.TextBox();
|
||||
this.labelControl2 = new System.Windows.Forms.Label();
|
||||
this.TxtHost = new System.Windows.Forms.TextBox();
|
||||
this.labelControl3 = new System.Windows.Forms.Label();
|
||||
this.TxtPort = new System.Windows.Forms.TextBox();
|
||||
this.labelControl4 = new System.Windows.Forms.Label();
|
||||
this.TxtUName = new System.Windows.Forms.TextBox();
|
||||
this.labelControl5 = new System.Windows.Forms.Label();
|
||||
this.TxtPwd = new System.Windows.Forms.TextBox();
|
||||
this.labelControl6 = new System.Windows.Forms.Label();
|
||||
this.BtnOk = new System.Windows.Forms.Button();
|
||||
this.BtnCancel = new System.Windows.Forms.Button();
|
||||
this.cboDBType = new System.Windows.Forms.ComboBox();
|
||||
this.labDBName = new System.Windows.Forms.Label();
|
||||
this.BtnTestConnect = new System.Windows.Forms.Button();
|
||||
this.cboDBName = new System.Windows.Forms.ComboBox();
|
||||
this.lblMsg = new System.Windows.Forms.Label();
|
||||
this.btnSelectFile = new System.Windows.Forms.Button();
|
||||
this.txtConnTimeOut = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.noneSSLCB = new System.Windows.Forms.CheckBox();
|
||||
this.requiredSSLCB = new System.Windows.Forms.CheckBox();
|
||||
this.sslLabel = new System.Windows.Forms.Label();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// labelControl1
|
||||
//
|
||||
this.labelControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.labelControl1.Location = new System.Drawing.Point(85, 59);
|
||||
this.labelControl1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.labelControl1.Name = "labelControl1";
|
||||
this.labelControl1.Size = new System.Drawing.Size(122, 18);
|
||||
this.labelControl1.TabIndex = 2;
|
||||
this.labelControl1.Text = "连接名";
|
||||
//
|
||||
// TxtConnectName
|
||||
//
|
||||
this.TxtConnectName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.TxtConnectName.Location = new System.Drawing.Point(177, 57);
|
||||
this.TxtConnectName.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.TxtConnectName.Name = "TxtConnectName";
|
||||
this.TxtConnectName.Size = new System.Drawing.Size(213, 21);
|
||||
this.TxtConnectName.TabIndex = 0;
|
||||
//
|
||||
// labelControl2
|
||||
//
|
||||
this.labelControl2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.labelControl2.Location = new System.Drawing.Point(84, 136);
|
||||
this.labelControl2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.labelControl2.Name = "labelControl2";
|
||||
this.labelControl2.Size = new System.Drawing.Size(144, 14);
|
||||
this.labelControl2.TabIndex = 2;
|
||||
this.labelControl2.Text = "主机名或IP地址";
|
||||
//
|
||||
// TxtHost
|
||||
//
|
||||
this.TxtHost.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.TxtHost.Location = new System.Drawing.Point(176, 133);
|
||||
this.TxtHost.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.TxtHost.Name = "TxtHost";
|
||||
this.TxtHost.Size = new System.Drawing.Size(213, 21);
|
||||
this.TxtHost.TabIndex = 2;
|
||||
//
|
||||
// labelControl3
|
||||
//
|
||||
this.labelControl3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.labelControl3.Location = new System.Drawing.Point(84, 173);
|
||||
this.labelControl3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.labelControl3.Name = "labelControl3";
|
||||
this.labelControl3.Size = new System.Drawing.Size(100, 18);
|
||||
this.labelControl3.TabIndex = 2;
|
||||
this.labelControl3.Text = "端口";
|
||||
//
|
||||
// TxtPort
|
||||
//
|
||||
this.TxtPort.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.TxtPort.Location = new System.Drawing.Point(176, 170);
|
||||
this.TxtPort.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.TxtPort.Name = "TxtPort";
|
||||
this.TxtPort.Size = new System.Drawing.Size(213, 21);
|
||||
this.TxtPort.TabIndex = 3;
|
||||
this.TxtPort.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.TxtPort_KeyPress);
|
||||
//
|
||||
// labelControl4
|
||||
//
|
||||
this.labelControl4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.labelControl4.Location = new System.Drawing.Point(85, 239);
|
||||
this.labelControl4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.labelControl4.Name = "labelControl4";
|
||||
this.labelControl4.Size = new System.Drawing.Size(100, 14);
|
||||
this.labelControl4.TabIndex = 2;
|
||||
this.labelControl4.Text = "用户名";
|
||||
//
|
||||
// TxtUName
|
||||
//
|
||||
this.TxtUName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.TxtUName.Location = new System.Drawing.Point(177, 237);
|
||||
this.TxtUName.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.TxtUName.Name = "TxtUName";
|
||||
this.TxtUName.Size = new System.Drawing.Size(213, 21);
|
||||
this.TxtUName.TabIndex = 4;
|
||||
//
|
||||
// labelControl5
|
||||
//
|
||||
this.labelControl5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.labelControl5.Location = new System.Drawing.Point(85, 270);
|
||||
this.labelControl5.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.labelControl5.Name = "labelControl5";
|
||||
this.labelControl5.Size = new System.Drawing.Size(107, 18);
|
||||
this.labelControl5.TabIndex = 2;
|
||||
this.labelControl5.Text = "密码";
|
||||
//
|
||||
// TxtPwd
|
||||
//
|
||||
this.TxtPwd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.TxtPwd.Location = new System.Drawing.Point(177, 268);
|
||||
this.TxtPwd.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.TxtPwd.Name = "TxtPwd";
|
||||
this.TxtPwd.PasswordChar = '*';
|
||||
this.TxtPwd.Size = new System.Drawing.Size(213, 21);
|
||||
this.TxtPwd.TabIndex = 5;
|
||||
//
|
||||
// labelControl6
|
||||
//
|
||||
this.labelControl6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.labelControl6.Location = new System.Drawing.Point(83, 98);
|
||||
this.labelControl6.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.labelControl6.Name = "labelControl6";
|
||||
this.labelControl6.Size = new System.Drawing.Size(134, 15);
|
||||
this.labelControl6.TabIndex = 2;
|
||||
this.labelControl6.Text = "数据库类型";
|
||||
//
|
||||
// BtnOk
|
||||
//
|
||||
this.BtnOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.BtnOk.Location = new System.Drawing.Point(346, 380);
|
||||
this.BtnOk.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.BtnOk.Name = "BtnOk";
|
||||
this.BtnOk.Size = new System.Drawing.Size(61, 28);
|
||||
this.BtnOk.TabIndex = 8;
|
||||
this.BtnOk.Text = "确定";
|
||||
this.BtnOk.Click += new System.EventHandler(this.BtnOk_Click);
|
||||
//
|
||||
// BtnCancel
|
||||
//
|
||||
this.BtnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.BtnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.BtnCancel.Location = new System.Drawing.Point(423, 380);
|
||||
this.BtnCancel.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.BtnCancel.Name = "BtnCancel";
|
||||
this.BtnCancel.Size = new System.Drawing.Size(57, 28);
|
||||
this.BtnCancel.TabIndex = 9;
|
||||
this.BtnCancel.Text = "取消";
|
||||
this.BtnCancel.Click += new System.EventHandler(this.BtnCancel_Click);
|
||||
//
|
||||
// cboDBType
|
||||
//
|
||||
this.cboDBType.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cboDBType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cboDBType.Location = new System.Drawing.Point(176, 93);
|
||||
this.cboDBType.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cboDBType.Name = "cboDBType";
|
||||
this.cboDBType.Size = new System.Drawing.Size(214, 20);
|
||||
this.cboDBType.TabIndex = 1;
|
||||
this.cboDBType.SelectedIndexChanged += new System.EventHandler(this.cboDBType_SelectedIndexChanged);
|
||||
//
|
||||
// labDBName
|
||||
//
|
||||
this.labDBName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.labDBName.Location = new System.Drawing.Point(84, 204);
|
||||
this.labDBName.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.labDBName.Name = "labDBName";
|
||||
this.labDBName.Size = new System.Drawing.Size(108, 20);
|
||||
this.labDBName.TabIndex = 2;
|
||||
this.labDBName.Text = "数据库";
|
||||
//
|
||||
// BtnTestConnect
|
||||
//
|
||||
this.BtnTestConnect.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.BtnTestConnect.Location = new System.Drawing.Point(32, 380);
|
||||
this.BtnTestConnect.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.BtnTestConnect.Name = "BtnTestConnect";
|
||||
this.BtnTestConnect.Size = new System.Drawing.Size(70, 28);
|
||||
this.BtnTestConnect.TabIndex = 7;
|
||||
this.BtnTestConnect.Text = "连接/测试";
|
||||
this.BtnTestConnect.Click += new System.EventHandler(this.BtnTestConnect_Click);
|
||||
//
|
||||
// cboDBName
|
||||
//
|
||||
this.cboDBName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cboDBName.Location = new System.Drawing.Point(177, 204);
|
||||
this.cboDBName.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.cboDBName.Name = "cboDBName";
|
||||
this.cboDBName.Size = new System.Drawing.Size(214, 20);
|
||||
this.cboDBName.TabIndex = 6;
|
||||
this.cboDBName.SelectedIndexChanged += new System.EventHandler(this.cboDBName_SelectedIndexChanged);
|
||||
//
|
||||
// lblMsg
|
||||
//
|
||||
this.lblMsg.AutoSize = true;
|
||||
this.lblMsg.Location = new System.Drawing.Point(116, 386);
|
||||
this.lblMsg.Name = "lblMsg";
|
||||
this.lblMsg.Size = new System.Drawing.Size(41, 12);
|
||||
this.lblMsg.TabIndex = 10;
|
||||
this.lblMsg.Text = "lblMsg";
|
||||
//
|
||||
// btnSelectFile
|
||||
//
|
||||
this.btnSelectFile.Location = new System.Drawing.Point(399, 164);
|
||||
this.btnSelectFile.Name = "btnSelectFile";
|
||||
this.btnSelectFile.Size = new System.Drawing.Size(81, 29);
|
||||
this.btnSelectFile.TabIndex = 11;
|
||||
this.btnSelectFile.Text = "选择文件";
|
||||
this.btnSelectFile.UseVisualStyleBackColor = true;
|
||||
this.btnSelectFile.Click += new System.EventHandler(this.BtnSelectFile_Click);
|
||||
//
|
||||
// txtConnTimeOut
|
||||
//
|
||||
this.txtConnTimeOut.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtConnTimeOut.Location = new System.Drawing.Point(178, 303);
|
||||
this.txtConnTimeOut.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.txtConnTimeOut.Name = "txtConnTimeOut";
|
||||
this.txtConnTimeOut.Size = new System.Drawing.Size(66, 21);
|
||||
this.txtConnTimeOut.TabIndex = 13;
|
||||
this.txtConnTimeOut.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
||||
this.txtConnTimeOut.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtConnectionOut_KeyPress);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label1.Location = new System.Drawing.Point(86, 305);
|
||||
this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(88, 18);
|
||||
this.label1.TabIndex = 12;
|
||||
this.label1.Text = "连接超时";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(249, 306);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(17, 12);
|
||||
this.label2.TabIndex = 14;
|
||||
this.label2.Text = "秒";
|
||||
//
|
||||
// noneSSLCB
|
||||
//
|
||||
this.noneSSLCB.AutoSize = true;
|
||||
this.noneSSLCB.Checked = true;
|
||||
this.noneSSLCB.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.noneSSLCB.Location = new System.Drawing.Point(176, 341);
|
||||
this.noneSSLCB.Name = "noneSSLCB";
|
||||
this.noneSSLCB.Size = new System.Drawing.Size(48, 16);
|
||||
this.noneSSLCB.TabIndex = 15;
|
||||
this.noneSSLCB.Text = "None";
|
||||
this.noneSSLCB.UseVisualStyleBackColor = true;
|
||||
this.noneSSLCB.Click += new System.EventHandler(this.noneSSLCB_Click);
|
||||
//
|
||||
// requiredSSLCB
|
||||
//
|
||||
this.requiredSSLCB.AutoSize = true;
|
||||
this.requiredSSLCB.Location = new System.Drawing.Point(230, 341);
|
||||
this.requiredSSLCB.Name = "requiredSSLCB";
|
||||
this.requiredSSLCB.Size = new System.Drawing.Size(72, 16);
|
||||
this.requiredSSLCB.TabIndex = 16;
|
||||
this.requiredSSLCB.Text = "Required";
|
||||
this.requiredSSLCB.UseVisualStyleBackColor = true;
|
||||
this.requiredSSLCB.Click += new System.EventHandler(this.requiredSSLCB_Click);
|
||||
//
|
||||
// sslLabel
|
||||
//
|
||||
this.sslLabel.AutoSize = true;
|
||||
this.sslLabel.Location = new System.Drawing.Point(86, 341);
|
||||
this.sslLabel.Name = "sslLabel";
|
||||
this.sslLabel.Size = new System.Drawing.Size(47, 12);
|
||||
this.sslLabel.TabIndex = 17;
|
||||
this.sslLabel.Text = "SSL连接";
|
||||
//
|
||||
// DBForm
|
||||
//
|
||||
this.AcceptButton = this.BtnOk;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.BtnCancel;
|
||||
this.ClientSize = new System.Drawing.Size(516, 443);
|
||||
this.Controls.Add(this.sslLabel);
|
||||
this.Controls.Add(this.requiredSSLCB);
|
||||
this.Controls.Add(this.noneSSLCB);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.txtConnTimeOut);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.btnSelectFile);
|
||||
this.Controls.Add(this.lblMsg);
|
||||
this.Controls.Add(this.cboDBName);
|
||||
this.Controls.Add(this.cboDBType);
|
||||
this.Controls.Add(this.BtnCancel);
|
||||
this.Controls.Add(this.BtnTestConnect);
|
||||
this.Controls.Add(this.BtnOk);
|
||||
this.Controls.Add(this.labDBName);
|
||||
this.Controls.Add(this.TxtPwd);
|
||||
this.Controls.Add(this.labelControl5);
|
||||
this.Controls.Add(this.TxtUName);
|
||||
this.Controls.Add(this.labelControl4);
|
||||
this.Controls.Add(this.TxtPort);
|
||||
this.Controls.Add(this.labelControl3);
|
||||
this.Controls.Add(this.TxtHost);
|
||||
this.Controls.Add(this.labelControl2);
|
||||
this.Controls.Add(this.TxtConnectName);
|
||||
this.Controls.Add(this.labelControl6);
|
||||
this.Controls.Add(this.labelControl1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "DBForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "连接数据库";
|
||||
this.Load += new System.EventHandler(this.DBFrom_Load);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label labelControl1;
|
||||
private System.Windows.Forms.TextBox TxtConnectName;
|
||||
private System.Windows.Forms.Label labelControl2;
|
||||
private System.Windows.Forms.TextBox TxtHost;
|
||||
private System.Windows.Forms.Label labelControl3;
|
||||
private System.Windows.Forms.TextBox TxtPort;
|
||||
private System.Windows.Forms.Label labelControl4;
|
||||
private System.Windows.Forms.TextBox TxtUName;
|
||||
private System.Windows.Forms.Label labelControl5;
|
||||
private System.Windows.Forms.TextBox TxtPwd;
|
||||
private System.Windows.Forms.Label labelControl6;
|
||||
private System.Windows.Forms.Button BtnOk;
|
||||
private System.Windows.Forms.Button BtnCancel;
|
||||
private System.Windows.Forms.ComboBox cboDBType;
|
||||
private System.Windows.Forms.Label labDBName;
|
||||
private System.Windows.Forms.Button BtnTestConnect;
|
||||
private System.Windows.Forms.ComboBox cboDBName;
|
||||
private System.Windows.Forms.Label lblMsg;
|
||||
private System.Windows.Forms.Button btnSelectFile;
|
||||
private System.Windows.Forms.TextBox txtConnTimeOut;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.CheckBox noneSSLCB;
|
||||
private System.Windows.Forms.CheckBox requiredSSLCB;
|
||||
private System.Windows.Forms.Label sslLabel;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,481 @@
|
|||
using ComponentFactory.Krypton.Toolkit;
|
||||
using MJTop.Data;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DBCHM
|
||||
{
|
||||
public partial class DBForm : KryptonForm
|
||||
{
|
||||
private DBForm()
|
||||
: this(OPType.新建)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 当前操作类型
|
||||
/// </summary>
|
||||
public OPType OpType { get; private set; }
|
||||
|
||||
public int Id { get; private set; }
|
||||
|
||||
public DBForm(OPType opType, int? id = null)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.OpType = opType;
|
||||
|
||||
if ((this.OpType == OPType.编辑 || this.OpType == OPType.克隆) && !id.HasValue)
|
||||
{
|
||||
throw new ArgumentNullException(this.OpType + "操作必须传递要操作的Id!");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (id.HasValue)
|
||||
{
|
||||
foreach (var item in FormUtils.DictDBType)
|
||||
{
|
||||
cboDBType.Items.Add(item.Value.ToString());
|
||||
}
|
||||
|
||||
this.Id = id.Value;
|
||||
DBCHMConfig config = ConfigUtils.Get(id.Value);
|
||||
TxtConnectName.Text = config.Name;
|
||||
cboDBType.Text = config.DBType;
|
||||
TxtHost.Text = config.Server;
|
||||
TxtPort.Text = config.Port?.ToString();
|
||||
TxtUName.Text = config.Uid;
|
||||
TxtPwd.Text = config.Pwd;
|
||||
cboDBName.Text = config.DBName;
|
||||
txtConnTimeOut.Text = config.ConnTimeOut?.ToString();
|
||||
|
||||
if (this.OpType == OPType.克隆)
|
||||
{
|
||||
TxtConnectName.Text += "_Clone";
|
||||
}
|
||||
|
||||
if (config.DBType == DBType.SQLite.ToString())
|
||||
{
|
||||
btnSelectFile.Visible = true;
|
||||
|
||||
TxtHost.Enabled = false;
|
||||
TxtPort.Enabled = false;
|
||||
TxtUName.Enabled = false;
|
||||
|
||||
//暂不支持 加密的 Sqlite数据库
|
||||
TxtPwd.Enabled = false;
|
||||
}
|
||||
|
||||
//编辑时,确定后刷新连接列表
|
||||
BtnOk.DialogResult = DialogResult.OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
btnSelectFile.Visible = false;
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(txtConnTimeOut.Text))
|
||||
{
|
||||
txtConnTimeOut.Text = "30";
|
||||
}
|
||||
}
|
||||
|
||||
//为KeyDown能应用到所有控件上 注册 KeyDown 事件
|
||||
foreach (Control control in this.Controls)
|
||||
{
|
||||
control.KeyDown += control_KeyDown;
|
||||
}
|
||||
lblMsg.Text = string.Empty;
|
||||
}
|
||||
|
||||
void control_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Escape)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
|
||||
private void DBFrom_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (OpType == OPType.新建)
|
||||
{
|
||||
foreach (var item in FormUtils.DictDBType)
|
||||
{
|
||||
cboDBType.Items.Add(item.Value.ToString());
|
||||
}
|
||||
cboDBType.SelectedIndex = 0;
|
||||
string port;
|
||||
if (FormUtils.DictPort.TryGetValue(cboDBType.Text, out port))
|
||||
{
|
||||
TxtPort.Text = port;
|
||||
}
|
||||
TxtHost.Text = "127.0.0.1";
|
||||
// TODO 设置默认用户名等
|
||||
SetUserNameByDbType();
|
||||
}
|
||||
}
|
||||
private void BtnSelectFile_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog fileDia = new OpenFileDialog();
|
||||
var dia = fileDia.ShowDialog();
|
||||
if (dia == DialogResult.OK)
|
||||
{
|
||||
cboDBName.Text = fileDia.FileName;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetMsg(string msg, bool isSuccess = false)
|
||||
{
|
||||
lblMsg.Text = msg;
|
||||
lblMsg.ForeColor = isSuccess ? System.Drawing.Color.Green : System.Drawing.Color.Red;
|
||||
}
|
||||
|
||||
private void BtnTestConnect_Click(object sender, EventArgs e)
|
||||
{
|
||||
DBType type = (DBType)Enum.Parse(typeof(DBType), cboDBType.Text);
|
||||
try
|
||||
{
|
||||
if (type == DBType.Oracle && string.IsNullOrWhiteSpace(cboDBName.Text))
|
||||
{
|
||||
throw new Exception("Oracle没有提供数据库名称查询支持,请输入服务名!");
|
||||
}
|
||||
|
||||
var connString = InitConnectionStr(type);
|
||||
|
||||
List<string> dbNames = null;
|
||||
|
||||
DBMgr.TryConnect(type, connString, out dbNames);
|
||||
|
||||
if (dbNames != null && dbNames.Count > 0)
|
||||
{
|
||||
cboDBName.Items.Clear();
|
||||
foreach (var dbName in dbNames)
|
||||
{
|
||||
cboDBName.Items.Add(dbName);
|
||||
}
|
||||
}
|
||||
|
||||
this.Text = "连接服务器成功!";
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private void BtnCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void BtnOk_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(TxtConnectName.Text))
|
||||
{
|
||||
MessageBox.Show("请输入连接名!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(cboDBName.Text))
|
||||
{
|
||||
MessageBox.Show("请输入数据库名称!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
DBType type = (DBType)Enum.Parse(typeof(DBType), cboDBType.Text);
|
||||
|
||||
|
||||
string connString = InitConnectionStr(type);
|
||||
NameValueCollection nvc = new NameValueCollection();
|
||||
if (OpType == OPType.新建 || OpType == OPType.克隆)
|
||||
{
|
||||
nvc.Add("Name", TxtConnectName.Text.Trim());
|
||||
nvc.Add("DBType", cboDBType.Text.Trim());
|
||||
|
||||
nvc.Add("Server", TxtHost.Enabled ? TxtHost.Text.Trim() : string.Empty);
|
||||
nvc.Add("Port", TxtPort.Enabled ? TxtPort.Text : string.Empty);
|
||||
nvc.Add("DBName", cboDBName.Text.Trim());
|
||||
nvc.Add("Uid", TxtUName.Enabled ? TxtUName.Text.Trim() : string.Empty);
|
||||
nvc.Add("Pwd", TxtPwd.Enabled ? TxtPwd.Text : string.Empty);
|
||||
nvc.Add("ConnTimeOut", txtConnTimeOut.Enabled ? txtConnTimeOut.Text : "30");
|
||||
nvc.Add("ConnString", connString);
|
||||
nvc.Add("Modified", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
||||
|
||||
ConfigUtils.Save(nvc);
|
||||
|
||||
}
|
||||
else if (OpType == OPType.编辑)
|
||||
{
|
||||
nvc.Add("Id", Id.ToString());
|
||||
nvc.Add("Name", TxtConnectName.Text.Trim());
|
||||
nvc.Add("DBType", cboDBType.Text.Trim());
|
||||
|
||||
nvc.Add("Server", TxtHost.Enabled ? TxtHost.Text.Trim() : string.Empty);
|
||||
nvc.Add("Port", TxtPort.Enabled ? TxtPort.Text : string.Empty);
|
||||
nvc.Add("DBName", cboDBName.Text.Trim());
|
||||
nvc.Add("Uid", TxtUName.Enabled ? TxtUName.Text.Trim() : string.Empty);
|
||||
nvc.Add("Pwd", TxtPwd.Enabled ? TxtPwd.Text : string.Empty);
|
||||
nvc.Add("ConnTimeOut", txtConnTimeOut.Enabled ? txtConnTimeOut.Text : "30");
|
||||
nvc.Add("ConnString", connString);
|
||||
nvc.Add("Modified", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
||||
ConfigUtils.Save(nvc);
|
||||
}
|
||||
|
||||
|
||||
FormUtils.ShowProcessing("正在查询表结构信息,请稍等......", this, arg =>
|
||||
{
|
||||
try
|
||||
{
|
||||
InitDb(type);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogUtils.LogError("BtnOk_Click", Developer.SysDefault, ex, connString);
|
||||
}
|
||||
|
||||
}, null);
|
||||
|
||||
this.DialogResult = DialogResult.OK;
|
||||
this.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private void cboDBType_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
this.Text = "连接数据库";
|
||||
string port;
|
||||
if (FormUtils.DictPort.TryGetValue(cboDBType.Text, out port))
|
||||
{
|
||||
TxtPort.Text = port;
|
||||
}
|
||||
// TODO 设置默认用户名等
|
||||
SetUserNameByDbType();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据数据库类型设置默认用户名等 扩展修改 2019-01-24 21:23
|
||||
/// </summary>
|
||||
private void SetUserNameByDbType()
|
||||
{
|
||||
btnSelectFile.Visible = false;
|
||||
|
||||
TxtHost.Enabled = true;
|
||||
TxtPort.Enabled = true;
|
||||
TxtUName.Enabled = true;
|
||||
|
||||
sslLabel.Visible = false;
|
||||
noneSSLCB.Visible = false;
|
||||
requiredSSLCB.Visible = false;
|
||||
|
||||
labDBName.Text = "数据库";
|
||||
DBType dbtype = (DBType)Enum.Parse(typeof(DBType), cboDBType.Text.ToString());
|
||||
if (dbtype == DBType.SqlServer)
|
||||
{
|
||||
TxtUName.Text = "sa";
|
||||
}
|
||||
else if (dbtype == DBType.MySql)
|
||||
{
|
||||
TxtUName.Text = "root";
|
||||
|
||||
sslLabel.Visible = true;
|
||||
noneSSLCB.Visible = true;
|
||||
requiredSSLCB.Visible = true;
|
||||
|
||||
}
|
||||
else if (dbtype == DBType.Oracle || dbtype == DBType.OracleDDTek)
|
||||
{
|
||||
TxtUName.Text = "scott";
|
||||
labDBName.Text = "服务名";
|
||||
}
|
||||
else if (dbtype == DBType.PostgreSql)
|
||||
{
|
||||
TxtUName.Text = "postgres";
|
||||
}
|
||||
else if (dbtype == DBType.DB2)
|
||||
{
|
||||
TxtUName.Text = "db2admin";
|
||||
}
|
||||
else if(dbtype == DBType.SQLite)
|
||||
{
|
||||
btnSelectFile.Visible = true;
|
||||
|
||||
TxtHost.Enabled = false;
|
||||
TxtPort.Enabled = false;
|
||||
TxtUName.Enabled = false;
|
||||
|
||||
//暂不支持 加密的 Sqlite数据库
|
||||
TxtPwd.Enabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
TxtUName.Text = "";
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 端口验证 只能输入数字
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void TxtPort_KeyPress(object sender, KeyPressEventArgs e)
|
||||
{
|
||||
e.Handled = true;
|
||||
if (e.KeyChar == 8 || e.KeyChar == 127)//退格删除,delete删除
|
||||
{
|
||||
e.Handled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (e.KeyChar >= '0' && e.KeyChar <= '9')//只能输入数字
|
||||
{
|
||||
int maxPort = 0;
|
||||
int.TryParse(TxtPort.Text + e.KeyChar.ToString(), out maxPort);
|
||||
if (maxPort > 0 && maxPort <= 65535)
|
||||
{
|
||||
e.Handled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void txtConnectionOut_KeyPress(object sender, KeyPressEventArgs e)
|
||||
{
|
||||
e.Handled = true;
|
||||
if (e.KeyChar == 8 || e.KeyChar == 127)//退格删除,delete删除
|
||||
{
|
||||
e.Handled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (e.KeyChar >= '0' && e.KeyChar <= '9')//只能输入数字
|
||||
{
|
||||
int timtOut = 0;
|
||||
int.TryParse(TxtPort.Text + e.KeyChar.ToString(), out timtOut);
|
||||
if (timtOut > -1)
|
||||
{
|
||||
e.Handled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void cboDBName_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
this.Text = "连接数据库";
|
||||
}
|
||||
|
||||
private void noneSSLCB_Click(object sender, EventArgs e)
|
||||
{
|
||||
if ((sender as CheckBox).Checked == true)
|
||||
{
|
||||
requiredSSLCB.Checked = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
requiredSSLCB.Checked = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void requiredSSLCB_Click(object sender, EventArgs e)
|
||||
{
|
||||
if ((sender as CheckBox).Checked == true)
|
||||
{
|
||||
noneSSLCB.Checked = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
noneSSLCB.Checked = true;
|
||||
}
|
||||
}
|
||||
|
||||
private string extraParam = ""; // 额外参数
|
||||
|
||||
/// <summary>
|
||||
/// 临时处理
|
||||
/// TODO 创建额外参数
|
||||
/// </summary>
|
||||
private void CreateExtraParam()
|
||||
{
|
||||
// TODO 额外参数
|
||||
if (noneSSLCB.Checked == true)
|
||||
{
|
||||
this.extraParam = "SslMode=None;";
|
||||
}
|
||||
else if (requiredSSLCB.Checked == true)
|
||||
{
|
||||
this.extraParam = "SslMode=Required;";
|
||||
}
|
||||
else
|
||||
{
|
||||
this.extraParam = "";
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 临时处理
|
||||
/// TODO 初始化DB连接
|
||||
/// </summary>
|
||||
/// <param name="type"></param>
|
||||
/// <param name="strDBName"></param>
|
||||
private void InitDb(DBType type)
|
||||
{
|
||||
if (type == DBType.MySql)
|
||||
{
|
||||
CreateExtraParam();
|
||||
DBUtils.Instance = DBMgr.UseDB(type, TxtHost.Text,
|
||||
(string.IsNullOrWhiteSpace(TxtPort.Text) ? null : new Nullable<int>(Convert.ToInt32(TxtPort.Text))),
|
||||
cboDBName.Text.Trim(), TxtUName.Text, TxtPwd.Text,
|
||||
(string.IsNullOrWhiteSpace(txtConnTimeOut.Text) ? 30 : Convert.ToInt32(txtConnTimeOut.Text))
|
||||
, 300, this.extraParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
DBUtils.Instance = DBMgr.UseDB(type, TxtHost.Text,
|
||||
(string.IsNullOrWhiteSpace(TxtPort.Text) ? null : new Nullable<int>(Convert.ToInt32(TxtPort.Text))),
|
||||
cboDBName.Text.Trim(), TxtUName.Text, TxtPwd.Text,
|
||||
(string.IsNullOrWhiteSpace(txtConnTimeOut.Text) ? 30 : Convert.ToInt32(txtConnTimeOut.Text))
|
||||
, 300);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 临时处理
|
||||
/// TODO 初始化连接串
|
||||
/// </summary>
|
||||
private string InitConnectionStr(DBType type) {
|
||||
CreateExtraParam();
|
||||
string connString = "";
|
||||
if (type == DBType.MySql)
|
||||
{
|
||||
connString = DBMgr.GetConnectionString(type, TxtHost.Text,
|
||||
(string.IsNullOrWhiteSpace(TxtPort.Text) ? null : new Nullable<int>(Convert.ToInt32(TxtPort.Text))),
|
||||
cboDBName.Text, TxtUName.Text, TxtPwd.Text,
|
||||
(string.IsNullOrWhiteSpace(txtConnTimeOut.Text) ? 30 : Convert.ToInt32(txtConnTimeOut.Text)),
|
||||
this.extraParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
connString = DBMgr.GetConnectionString(type, TxtHost.Text,
|
||||
(string.IsNullOrWhiteSpace(TxtPort.Text) ? null : new Nullable<int>(Convert.ToInt32(TxtPort.Text))),
|
||||
cboDBName.Text, TxtUName.Text, TxtPwd.Text,
|
||||
(string.IsNullOrWhiteSpace(txtConnTimeOut.Text) ? 30 : Convert.ToInt32(txtConnTimeOut.Text))
|
||||
);
|
||||
}
|
||||
return connString;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,487 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEASEgAAAEAIACIVAAAFgAAACgAAABIAAAAkAAAAAEAIAAAAAAAAFEAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8vLwA+LS4ASkVBAEtL
|
||||
RABLS0YAS0tEAElHQgBAQD8APz8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAE1KQwBMSUMAU1BLAFtYUgBdWlQAXVxVAGBeWABramMADggHAyotJQYpKykFKiwlBiEf
|
||||
HQSAfXIAYF5ZAF9cVgBcWlQAWVdRAFZUTgBNTEYAQjc6AEc/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0xJAAAAAABQSUEAQ0E+AFVS
|
||||
TACEhYEAREE9CFVRTBVaV1A1WllSVl5cVm9iX1mCZmNdlGhmX5tpZ2CbaGZfm2VjXJhhX1mFX1xXdVxa
|
||||
VF1ZVlFAVFFLHkpKQwwABAABW1pRAEtJQgAbJBgARUU5AElJPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBPzwAODY1AFFPSQCFgnYAREM/DVZTTjlcWlRwYV9YqGdl
|
||||
X9RvbGXodXJr9Hl2b/59enL/hIB4/4eEfP+JhX3/iIR9/4WBev9/fHT/e3dw/3d0bfdyb2jsamdh3WRh
|
||||
W7heXFWDWFVPSktKQxUAAAABWVZTAEhFQwBPS0kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAT01HAExKRABYVk8AAAAAAk9NSCZbWVNwYmBavmxpYul0cWr/fnpy/4eDe/+Pi4L/lZCI/5qV
|
||||
jP+dmZD/oZyT/6Self+ln5f/paCX/6Oflf+gm5L/nZiP/5qVjP+UkIj/jomB/4WBev96d3D/cG1m8mVj
|
||||
XcxbWlOJU1BLOz07OwhcWlQATk1GAGdmWQAvLy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9NSAAAAAAAU1FMAP//
|
||||
/wBQTkgsWFZQimJgWdlua2T+e3dw/4eDe/+RjIT/mJOL/56ZkP+inZT/pJ+X/6ehmP+po5r/qqSb/6ul
|
||||
nP+rpZz/rKad/6ymnf+rpZz/qqSb/6mkm/+oopn/pZ+W/6Cbkv+alYz/kIyE/4SAef92c2z/aGVf6l1b
|
||||
VaVTUUtBQ0M7BldVTgBIRj8AT0xHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASkI/ADwxLQBTUEwAT05IE1lXUW9fXVfaamdh/3l1
|
||||
bv+Ggnv/kY2F/5mUi/+dmI//oJuS/6KdlP+kn5b/pqGY/6eimf+po5r/qqSb/6ulnP+rpZz/q6Wc/6ym
|
||||
nf+rpZz/q6Wc/6ulnP+qpJv/qaOa/6eimf+loJf/op2T/5yXj/+Tj4b/hoJ6/3Vya/9kYlzsV1VPk09O
|
||||
SCZbXFsAS0dCAExHQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAABFRT8ARUI9AG1xaQBRTUkvWVdSrWNgWvpxbmf/gHx1/4yIf/+Uj4f/mZOL/5yW
|
||||
jv+emZD/oJuS/6KdlP+kn5X/paCX/6ahmP+moJf/pqCX/6Wflv+inZT/op2U/6Wflv+nopj/qKKZ/6mj
|
||||
mv+qpJv/qKOa/6eimf+loJf/pJ+V/6Kdk/+empH/mZSL/46Kgv9/e3T/a2hi/1pYUs5NTEZTQjs3BEhH
|
||||
QQBHR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVF
|
||||
PwBHRkAAoJKOAFJQSUdYVlDPZGFb/3Zya/+EgHj/jYmA/5KOhf+VkYn/mZOL/5uWjf+dmI//npmQ/5yX
|
||||
jv+Yk4r/ko2E/4qFff+BfHT/fHhw/3Vxaf9taWL/a2hg/3JuZv94dGz/e3hv/4aBef+Qi4P/mZSM/5+a
|
||||
kf+inZT/o56U/6Gdk/+fm5H/nZiP/5qUjP+SjYX/hYF5/3BtZv9bWVPtTkxIcjw9OQZCQj0AOjo1AAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATk1IAEdHQQCdjYwATUxGS1RS
|
||||
TN5iX1n/dnJr/4R/eP+Lh37/j4qC/5GNhP+UkIj/l5GJ/5aQiP+RjIP/iYR8/4B7c/92cWn/bmli/2hk
|
||||
Xf9iXlf/XVlT/11ZU/9dWVP/WlZR/1VRTP9UUUv/V1RN/1tXUf9hXVb/bGdg/3dya/+GgXj/k46F/5qV
|
||||
jP+dmI//nJeO/5qVjf+Xkor/kY2F/4aCev9zcGj/W1lU80lIQ3MtLigGOzo2AD48OgAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pz8ATktFAE1KRwBMSkU8T01I3F5bVv9yb2j/gHx1/4eC
|
||||
e/+Lhn7/jomB/5CLg/+Qi4P/jId+/4WAd/9/eXH/fHdv/355cf+Dfnb/iIN7/4+Kgv+RjYX/ko2G/5iT
|
||||
i/+dl4//m5aO/5GMhf+Mh4D/i4Z//4SAeP99eXH/dnJr/3BsZf9vamP/dXBp/4B7c/+MiH//lpCI/5iS
|
||||
iv+WkYn/k4+H/4+Kgv+EgHj/cW1n/1dVT/NEQj5wMjAvBD8+OwBGRkQAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAADGu4cATkxFAEpIQxtLSkW/V1VP/21pY/97d3D/gn52/4WBev+JhHz/i4V9/4uF
|
||||
fP+Jg3r/iYN6/4+JgP+ZlIz/paCX/6+qov+1saj/uLOr/7u2rv+8t67/vLiv/724r/+9uK//vLev/7u2
|
||||
rv+6taz/ubOr/7axqP+yraX/raif/6Sfl/+YlIz/kIuD/4yHf/+Lh3//jYiA/5CLgv+SjYX/kY2E/4+L
|
||||
gv+Lhn7/f3t0/2lmYP9OTEfqQkE9TT87NgBKS0kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AABISEQAT1JRAkZEQH1OTEb9ZGFb/3Vxa/98eXH/gHx1/4N/d/+Ef3f/hoB4/4+JgP+dmI//r6qj/765
|
||||
sf/Gwrr/ycS9/8jDvP/Fwbn/wr61/8K9tP/CvbT/wb20/8G9tP/BvLP/wLyz/8C7sv+/u7L/vrqx/765
|
||||
sP++ubD/vbiv/7y3rv+6taz/tbCo/7Cro/+sp5//pKCa/6Kdl/+Yk4v/kIuD/42IgP+Lhn7/hYF5/3dz
|
||||
bP9dW1X/R0ZBx0ZFQx9FREEAWlpaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtHQwBGRT8ARUQ+KEdF
|
||||
QNpYVVD/bWlj/3dzbP97d3D/fXly/396cv+KhX3/pKCY/7+7tP/OysX/0s7I/8/Lw//Lx8D/ycS9/8fD
|
||||
u//Fwbn/xcC4/8S/t//AvLP/u7au/7q2rv+6tq7/ubWt/7m1rP+7tq7/wLyz/8C8s//AvLP/wLyz/8C7
|
||||
sv+/urH/vrmw/724sP+9uK//l5ON/7Cspv++u7b/r6ul/5eSi/+JhHz/hYF5/356c/9raGH/UE5J/ENC
|
||||
P3UAAAAAXl5eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtHQwBAQDoAREI9cUtIQ/1hXlj/cGxm/3Vx
|
||||
a/94dG3/gX11/52Ykf/Bvbf/19PO/9fUzv/Szsf/zcjB/8rGvv/FwLn/ubWu/6+ro/+empP/kY2H/4aD
|
||||
fP+Cf3j/gn54/4SAef+EgXr/hIB5/4J/eP+AfXb/gn95/4uIgf+Xk4z/pqKa/7Gtpf+6tq3/wbyz/8C8
|
||||
s//AvLL/rquk/52Ykv/Fwrr/z83I/8bDv/+gnZf/hoF6/397c/9zb2j/WldS/0NBPchAQD8bQkJBAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtJRQBPTkkMQ0E9rFBOSf9mY13/cG1n/3ZybP+MiIL/uLaw/9rX
|
||||
0//d29b/1NHK/9DKw//Iw7z/ubSt/52ak/+Jhn//endx/3Rxav94dW7/fXpz/4F9dv+Ggnr/jIiA/5CL
|
||||
g/+RjYT/kYyE/4+Lg/+Khn7/hIB4/4B8df97d3D/dHFr/3Zzbf+Bfnf/kY6H/6umnv+7tq7/yMS9/5qV
|
||||
kf+8tq7/xsK7/9nX0v/X1dL/p6Oe/4F9dv92cmv/Yl9Z/0ZEQO87OjhFNDIvAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAEZEQABGREAdRUM/2FVSTv9oZV//c3Bq/5aTjv/Pzcr/5+Xi/93a1P/Tz8j/ycW9/62o
|
||||
ov+Lh4H/dXJs/3Vxa/97eHH/hoN7/4+Lg/+Wkon/m5aO/5+bkf+inpT/paCX/6eimf+oo5r/qaOa/6ij
|
||||
mv+moZj/o56V/6Cbkv+bl47/lZGI/46Jgf+Cf3f/eHVu/3Rxav9+e3T/qqaf/62ppP+qpZ3/v7qx/8nF
|
||||
vv/i4Nz/4N/d/6eln/96dm//ZmNd/0lHQ/06OTdsNDMrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEpI
|
||||
RABJSEQkSkhE7FlWUf9raGP/mJaR/9va1//q5+T/3NnT/87Kw/+tqqP/hoN9/3FuZ/90cGr/gX52/42I
|
||||
gP+WkYj/nJeO/6Cbkv+jnpX/paCX/6eimf+po5r/qqSb/6ulnP+rpZz/rKad/6ymnf+spp3/q6Wc/6qk
|
||||
nP+po5r/pqGY/6Oelf+emZD/lpGJ/4uHf/98eHH/fntz/66rpf9tamT/Y2Ba/7ezq//NycP/6Ofk/+Xk
|
||||
4/+fnJf/aWZg/0xJRf85NzWDXVhLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5NSQBOTUklTkxI7F1b
|
||||
Vv+Ni4b/2tjV/+3r6f/d2dP/vrqz/4eEfv9qZ2H/cW1m/397dP+MiH//lZCH/5qVjf+emZD/oJuS/6Kd
|
||||
lP+kn5b/pqGX/6eimf+po5v/qqSb/6ulnP+rpZz/rKWc/6ymnf+spp3/q6Wc/6ulnP+qpJv/qaOa/6ei
|
||||
mf+loJf/o56U/5+ZkP+Xkon/i4d//25rY/8wLyj/Dg0L/3Rxbf/Ev7j/1dLM//X08//X1dP/fHl0/0xK
|
||||
Rf82NTKZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBPSwBPTkolUE5L7HNwbf/KyMb/7+7r/9zZ
|
||||
0/+tqqT/cG1n/2RhW/91cmv/hYF5/4+Lg/+VkYj/mZSM/5yWjv+emZD/oJuS/6Kdk/+jnpX/pJ+V/6Oe
|
||||
lf+hnJT/oZuS/52Xjv+blY3/mpWM/5yXjv+hnJP/o56U/6agmP+oopn/qKKZ/6eimP+loJf/pJ+V/6Kd
|
||||
k/+fm5H/nJeO/3BtZf83Ni3/FRQQ/xsaGP+Cf3n/wLy1/+Xi3v/29vX/qaek/09NSf8yMS6aAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJRTABPTkolWFZS7KKgnv/q6Ob/4d3Z/6Sgmv9kYlv/ZmNd/3l1
|
||||
bv+Hgnv/joqB/5KOhf+VkIj/mZOL/5uVjf+cl47/m5aN/5eSif+QjIP/iIN7/396cv92cWr/cGxl/2hj
|
||||
Xf9jX1j/YV1X/2NfWf9rZl//cGxl/3p2b/+FgXn/kIuD/5mUi/+fmpD/oZyT/6Gck/+fmpH/npmQ/4iD
|
||||
fP9IRz3/JSQd/wcGBf8zMi//fnt1/8XBuv/08/H/1NPR/19dWf8wLiyZAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAFZVUQBQTkolbGpn7MvJxv/o5eL/op+a/1xaVP9kYVv/eHRt/4WBef+Lh3//joqC/5GN
|
||||
hP+Uj4f/lZCI/5ONhf+Mh37/g311/3p1bf9xbWX/bWhh/2llXv9lYVr/ZGFa/2djXP9lYVr/Y19Z/2Fd
|
||||
WP9bV1L/WlZR/11YUv9fW1X/ZmFb/29rY/98d2//ioV9/5aRiP+bl43/nJaO/5eRif9VU0r/NDMq/w4O
|
||||
Cv8VFBP/UlBL/3t4cv/Z1tL/6+vp/3p5df8wLy2ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJg
|
||||
XABXVVEliIaD7d/d2v+0saz/W1lT/2BeWP90cWr/gX12/4eCe/+Khn7/jYmA/4+Kgv+OiYH/iYR7/4N9
|
||||
dP+AenL/gXxz/4aBef+NiYH/lZCJ/5yXj/+emZH/op2V/6eimv+nopr/p6Ka/6WgmP+dmJD/mZSM/5OP
|
||||
h/+Khn7/gn12/3l1bf91cGj/dnJq/355cv+Ig3v/kYyD/5aRiP9qaGD/PTwy/x8eGP8FBAP/QDw3/1xa
|
||||
VP+KiIT/5+bk/5eVkv81NTKZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9uagBiYV0nn56b7cnH
|
||||
xP9mZF//WldR/3BtZv98eHH/gX52/4WBev+Ig3z/iYN7/4qEe/+KhHv/joiA/5iTi/+moZn/s66m/7u2
|
||||
rv++urL/vrqx/7+7sv/Au7L/wLuy/7+7sv+/urH/v7qx/765sP+9ubD/vbiv/7u2rv+5tKv/tbCo/6+q
|
||||
of+nopn/nZiR/5aSi/+Tj4j/kIyE/5GMhP98eHD/RUQ6/y8uJv8KCgb/HRkW/2FdV/9ZV1L/qKek/6Wj
|
||||
oP89PDmaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzcABraWYooZ+c7YiGgv9RTkn/aGRe/3Zy
|
||||
a/98eHH/gHx0/4J+dv+CfnX/iIN6/5iTiv+sp6D/vbix/8fDvP/Lxr//y8a//8nEvP/Fwbn/w762/8K+
|
||||
tf/CvrX/wr21/8K+tf/CvbT/wb20/8C8s//Au7L/v7uy/7+6sf++urH/vrmw/724sP+8t6//urSs/7aw
|
||||
qP+yraX/sKyl/66qpP+dmJL/VlVM/zo5L/8YFxL/CAUD/0xIQv9iYFn/Y2Fd/4qJhf9DQj6YAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIF+ewCCgH0pioiF7VdVUP9aV1L/bmpk/3dzbP96d2//fHhx/4F8
|
||||
dP+Sjob/sKyl/8nFv//U0cv/0s7I/83Jwv/Kxr7/yMS8/8bCuv/Dv7f/wby0/765sf+1san/sq2l/6mm
|
||||
nv+opJz/p6Sc/6+ro/+yrqb/uLSs/7y4r/++ubD/v7uy/8G8s//Au7L/v7qx/765sP+8uK//vLev/766
|
||||
tP/Fwr3/goB6/0JBN/8oKCD/BgUD/yYhG/9lYVv/VVNN/1dWUv9DQj6H////AAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAHh2cgCDgH0hX11Z3k1KRv9iX1r/cG1m/3Vxav95dG3/h4N8/6yoov/Pzcj/2tfS/9bS
|
||||
zP/Qy8T/zMfA/8jDvP+8uLH/rKmi/5uYkf+NioL/gH13/3h1b/94dW7/fHhx/3p3cP96d3D/endv/3x5
|
||||
cv96d3D/eHVu/3t4cv+HhH3/lJCJ/6OfmP+wrKT/vrqx/8G8s//AvLP/v7qx/766sf/Fwbr/sa6p/09O
|
||||
Rf82Niz/EREN/wwIBP9QS0P/XVpV/0A+Ov0zMzBoPzw3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJP
|
||||
SwBWU08YRkRBy1FPSv9nZF7/cGxm/3h0bv+Xk47/x8XA/+De2v/d2tX/08/I/87Jwv/Au7T/qaSe/4uH
|
||||
gf97eHL/dXJs/3Vya/98eXH/g394/4mFff+OioH/k46G/5eSiv+ZlIv/mZSL/5eSiv+Tjob/jYmB/4iE
|
||||
ff+Cfnf/endv/3VybP94dW//goB5/5qXj/+wraT/v7qy/8K9tP/BvbT/vrmy/2tpYf8+PTP/ISEa/wUD
|
||||
Af8tJx//XltV/0RCPvw3NjNbKigjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZEPwBGQz8fRkQ/3lZT
|
||||
T/9oZV//dnNt/6OhnP/a2NX/5+Tg/9rWz//QzMT/vbmx/5eUjf96d3D/cW1n/3h0bf+Cfnb/jIiA/5SQ
|
||||
iP+alo3/n5qR/6OelP+loJf/qKKZ/6mkm/+qpJv/q6Wc/6qlnP+po5r/p6GY/6Wflv+hnJP/nJeO/5WQ
|
||||
iP+Lh3//f3x0/3Rxav9zcGn/h4R9/6qmnv+/u7L/xcC4/4yJgf9FRDr/MTAo/wsLCP8TDQf/TEdA/0tJ
|
||||
RP47OTZxNzUvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtJRQBLSUUlS0lF7FpXUv9va2b/paOf/+Tj
|
||||
4P/n5eH/2NTO/8XAuf+Zlo//dXJs/25rZf95dW7/h4N7/5GMhP+ZlIv/npmQ/6Gck/+kn5b/paCY/6ei
|
||||
mf+po5r/qqSb/6ulnP+rpZz/rKad/6ymnf+spp3/q6Wc/6ulnP+qpJv/qKKZ/6Wgl/+hnJP/m5aN/5KN
|
||||
hP+EgHj/dXFq/3BtZ/+Fgnv/r6uj/6+ro/9SUUf/PDwy/xoaFP8GAwD/MSoi/0lHQv85NzWHcGlYAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9NSQBPTUklT01J7GBeWf+cmpb/4+Lg/+ro5P/X083/r6ul/3p3
|
||||
cf9pZmD/dnJr/4SAef+Pi4P/l5GJ/5uWjv+emZD/oJuS/6KdlP+kn5X/pqGX/6eimf+po5r/qqSb/6qk
|
||||
m/+rpZz/q6Wc/6ulnP+rpZz/q6Wc/6ulnP+qpJv/qKOa/6eimf+loJf/pJ+V/6Cckv+alo3/kIyE/4J+
|
||||
dv9va2X/bWpk/5GNhv9raWH/QkE2/ysqIv8IBwX/GBEK/z06Nf83NjOZAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAFBPSwBQTkslUU9L7H58eP/Y1tT/7uvo/9TQyv+ZlpD/aWZh/2tnYf98eHH/iYV9/5GN
|
||||
hP+WkYn/mZSM/5uWjv+emZD/oJuS/6Gck/+inZP/oZuS/52Yj/+alYz/lpGI/5CLg/+OioH/joqB/4+K
|
||||
gv+VkIf/mpWM/5+Zkf+jnZX/paCX/6WhmP+loJb/o56V/6Kdk/+gm5H/nJeP/5aRiP+JhX3/d3Ns/2dl
|
||||
Xv9aWFH/REM5/zg4Lv8TEw//CgYB/yokHP8yMS+aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJR
|
||||
TQBPTkolW1lW7K6sqf/t6+j/1tLN/4uIgv9fXVf/bGli/356c/+JhX3/j4uC/5KOhf+VkIj/mJOL/5qV
|
||||
jf+alYz/l5KK/5GMhP+Ig3v/fnlx/3NvZ/9qZl//ZGBZ/11ZU/9aVlD/V1RO/1hUT/9dWVP/Yl9Y/2xn
|
||||
Yf93cmr/g352/5GMg/+alYz/n5qR/6Cbkv+fmpH/nZiP/5uVjf+WkYn/jIiA/3x4cf9hX1n/QUA3/0FA
|
||||
Nf8kIxz/BgUD/xoSC/8oJSKamv//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlXUwBRT0sldHJv7NLQ
|
||||
zv/h3tn/jImD/1tYUv9qZ2H/fHhx/4aCev+Lh37/joqB/5GNhP+Tj4b/k46F/4+Kgf+Hgnr/fnlx/3dy
|
||||
av9ybWb/cGxk/29rZP9taWL/cW1m/3JuZ/9wbGX/bmtk/25qZP9oZV//Y19Z/2RfWf9iXVf/ZGBa/2tm
|
||||
X/91cGj/gn51/4+Kgv+Yk4r/m5WN/5qUjP+Xkor/k46G/4uHfv97eHD/UVBI/0JBN/8zMin/Dg0K/w4I
|
||||
Av8eFw+nDTBaATUaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjYABZV1QmkI6L7eDe2/+fnJj/V1RP/2Zj
|
||||
Xf94dW3/gn53/4aCe/+KhX7/jYiA/46JgP+Nh37/h4J4/4N+dP+Efnb/ioR8/5KOhf+dmJH/p6Ob/7Cs
|
||||
pP+zr6f/urav/7y4sf+7t7D/urau/7i0rP+xrKX/qaWd/6Sfl/+alY3/kYyE/4aCev99eHD/enVu/355
|
||||
cf+FgHj/jYiA/5SPhv+UkIj/ko6G/4+Lgv+JhH3/amdg/0RDOv8+PTP/HBwW/wcFAv8XDgTGCQUBEgIA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFwbABkY18noqCd7b+9uv9dW1f/XVtV/3NvaP99eXH/gX12/4WA
|
||||
ef+Hgnv/iIJ6/4mDev+Nh37/l5KJ/6ikm/+7t7D/y8jC/9fUz//d2tb/3tzY/+Dd2f/e3Nf/3dvV/9vY
|
||||
0//Y1dD/1tPN/9PQyv/QzMX/zcnC/8nFvv/FwLn/wLuz/7m0rP+wq6L/pqCZ/56Zkf+ZlI3/lpGL/5OO
|
||||
hv+QjIP/kIuD/46Kgf+Lh3//gHx1/09NRP9CQTf/LCwk/wkJBv8QCQL0Fg0DTyMVBQAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAHl4dABycG0ooJ6a7Xd1cf9RT0r/amZg/3dzbP98eHH/f3t0/4F8dP+CfXX/jId//6Oe
|
||||
lv++urT/2NXQ/+fl4v/u7On/7u3q/+3r6P/q6OX/5+Xi/+Ti3//i4Nz/393Y/93a1f/a19L/19TP/9TR
|
||||
zP/Sz8j/0MzF/83Jwv/Kxr//x8O8/8TAuP/BvbT/vbiw/7mzq/+0sKj/s6+o/7Ovqf+qp6D/mZSM/42I
|
||||
gP+KhH3/hoJ7/2ViWv9DQjf/Ojkw/xUVEP8JBQH/GA0EoQIAAAcKBQIAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIKA
|
||||
fACHhYIogX977FFPS/9cWVT/b2tl/3ZybP96dm7/fHhw/4eCev+inpb/yMS//+Xj4P/z8vD/9vX0//Tz
|
||||
8f/x8O7/7+3q/+zq5//p5+T/5+Xi/+Xj3//j4N3/4N7Z/97b1v/b2NP/2NXQ/9bTzv/T0Mr/0c7H/87L
|
||||
xP/Mx8H/ycS9/8bCuv/Dv7f/wLyz/7+6sf++ubD/vLev/725sv/Fwrz/w8C7/6mlnv+OiYL/hYB5/3Zy
|
||||
a/9JRz7/QkE2/yYlHv8GBQP/EwsC5Q4GADMJAwAABgUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBuagB4dnIfV1VR2E1L
|
||||
R/9kYVv/cG1n/3Vxav97d3D/lZGK/8TBvP/o5+T/+Pf2//n49//29vT/9PPx//Lx7//w7+3/7u3q/+zq
|
||||
5//p5+T/5+Xi/+Xj3//j4d3/4d/a/9/c1//d2dT/2tbR/9fUz//U0cz/0s/I/9DMxf/NycL/y8a//8fD
|
||||
vP/Fwbn/wr61/8C8s//AvLP/wLuy/7+6sf/BvbT/zcrE/9bU0f+7uLP/j4uF/397c/9WVEz/QkE3/zQz
|
||||
Kv8VFRL/Ih0X/y8nH3wAAAABAQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtJRABMSUUXREI+yVJQS/9nZF//cG1m/315
|
||||
c/+npJ7/3NrX//b29P/5+fj/+Pf2//b19P/19PL/8/Lw//Lw7v/w7uz/7uzp/+zq5//p5+T/6OXi/+bj
|
||||
4P/j4d7/4d/b/9/d1//d2tX/29fS/9jVz//V0s3/09DJ/9HNxv/PysT/zMfA/8nFvv/Gwrv/xL+3/8K+
|
||||
tf/CvbX/wb20/8G8tP/AvLP/wr62/9TQy//l4+H/yMbC/4+LhP9pZV7/SEY9/19eVv90cm3/rKaf/2Ve
|
||||
VsoAAAAZGxYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVEPwBFQz4hRkRA41dUT/9oZV//fXp0/7a0sP/p6Ob/+fj3//j3
|
||||
9v/29fT/9fTz//X08v/z8vD/8vHv//Hv7f/v7uv/7uvo/+vp5v/p5+T/5+Xi/+bj4P/k4d3/4t/b/9/d
|
||||
2P/e2tX/29jT/9jV0P/W083/1NDL/9LOx//PzMT/zcjC/8vGv//Iw7z/xcG6/8TAuP/Ev7f/w7+2/8O/
|
||||
tv/DvrX/wr61/8bBuf/a2NP/7ezq/8PBvf9+enT/ZWJc/7q4s/9ubWj/T0xH/yIbFPYSCQJXGA4FABcK
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAExLRwBMS0clTEpH7VpXUv9zcGv/tbOv//Hx7//5+Pf/9vXz//Xz8v/08/H/9PPx//Py
|
||||
8P/y8e7/8e/t//Du6//u7On/7ern/+ro5f/p5uP/5+Xi/+bj4P/k4d3/4t/b/+Dd2P/e2tX/3NjT/9nW
|
||||
0f/X087/1dHL/9LPyP/QzcX/zsrC/8zHwP/JxL3/x8K7/8bCuv/Gwbr/xcG5/8XBuf/FwLj/xMC3/8S/
|
||||
t//Iw7z/4d7b//Lx8P+2tLD/Y2Bb/2NhWP9DQTj/FRUQ/wYDAP8YDgSmAAAACQYCAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBO
|
||||
SgBPTkolT01J7GRiXf+qqKT/7u3r//j39v/08/H/8/Lw//Py8P/y8e//8vHv//Hw7v/x7+3/8O7r/+/t
|
||||
6f/t6+j/7Onm/+ro5P/o5uP/5+Xh/+Xj3//k4d3/4t/b/+Dd1//e29b/3NjT/9rW0f/X1M7/1dLM/9PQ
|
||||
yf/Rzcb/z8vD/83Iwf/Lxr//ycS9/8nEvf/Iw7z/yMO8/8fDu//Hwrv/xsK6/8bBuv/Fwbn/zcnC/+7t
|
||||
6f/r6+n/jouH/0A+Nv9DQjf/Kikh/wgHBP8SCgLnFg0DMx4RBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBPSwBQT0slUlBM7IeF
|
||||
gf/g393/9/b1//Px7//y8O7/8vDu//Lw7v/x8O3/8e/t//Du7P/v7ur/7+3p/+7r6P/s6ub/6+jl/+nn
|
||||
5P/o5eL/5uTg/+Xj3v/j4dz/4t/a/+Dd1//f29b/3dnT/9vW0f/Y1M//1tLM/9TQyv/Szsf/0MzE/87J
|
||||
wv/Mx8D/zMa//8vGvv/Lxb7/ysW+/8rEvf/JxL3/ycS8/8jDvP/Hw7v/yMK7/9vY0v/5+Pf/wcC+/09N
|
||||
SP9ZV07/XlxU/xUUEP8LBgH+FAsCeyUWBgD/fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFNSTgBPTkolX15a7Le1s//z8vD/8/Hu//Dv
|
||||
7P/x7+z/8O/s//Dv7P/w7uv/8O7q/+/t6f/u7Oj/7evn/+3q5v/r6eX/6ufk/+jm4//n5eH/5uTg/+Xi
|
||||
3v/j4Nz/4t/Z/+Dd1//f3Nb/3dnT/9vX0f/Y1c//1tPN/9XRy//Tz8f/0c3F/8/Lw//OycL/zcnB/83I
|
||||
wf/Nx8D/zMfA/8zGv//Mxr//y8a//8vFvv/Kxb7/ycS9/8/Kw//t6+j/4uHg/2VkYP9YVk/9hoN9/z07
|
||||
Nf8FAwH/FAsDwgsEABMHAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFtZVgBRUEwlfHp37NrZ1//z8u//8O7q//Dt6v/w7er/7+3q/+/t
|
||||
6f/v7en/7+zo/+7s6P/t6+f/7enm/+zo5f/q6OT/6efj/+jl4v/n5OD/5uPf/+Xi3f/j4Nz/4t/Z/+Dd
|
||||
1//f3Nb/3dnU/9vX0f/Z1c//19PN/9XRy//T0Mj/0s7G/9HMxP/QzMT/0MzE/8/Lw//Py8P/z8rC/87J
|
||||
wv/OyMH/zcjB/83HwP/Mx8D/zMa//8zHv//e29b/7+7t/4uKh/45ODLrh4V//V9dVv8REQ3/CgUA8xQK
|
||||
AUccDwIABQMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAGlnZABbWlcmlZSR7ejm5P/x7+v/7+3p/+/t6P/v7en/7+3p/+7s6P/u7Oj/7uvn/+3q
|
||||
5//t6eb/7Onl/+ro5P/p5+P/6ebi/+jl4f/n5OD/5eLe/+Th3f/j4Nv/4t7Z/+Dd1//f3NX/3dnU/9zX
|
||||
0f/a1dD/2NTO/9bSy//U0Mn/08/H/9POx//Szsb/0s7G/9HNxf/RzcX/0czE/9DMxP/Qy8P/z8vD/8/L
|
||||
w//PysL/zsnC/83Iwf/W0sz/7uzq/6Oinv4zMi7CbWtk3ISBe/8sKyX/BgQB/xEJApQDAQACAQEAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJx
|
||||
bQBlZGAnoqGe7ezp5v/w7en/7uzn/+7s6P/u7Oj/7uzo/+7r5//u6uf/7erm/+3p5v/s6OX/6+jk/+rn
|
||||
4//p5uL/6OXh/+fk4P/m49//5eLe/+Th3f/j4Nv/4d7Y/+Dd1v/f3NX/3tnU/9zX0v/a1tD/2NTO/9fT
|
||||
zP/V0cv/1dHK/9XQyf/U0Mn/1M/I/9PPx//Tz8f/0s7G/9LOxv/SzcX/0c3F/9HNxf/QzMT/0MzE/8/L
|
||||
w//Tz8j/6Obi/6mnpP88OzecTkxFkoiGgP9WVE7/CQgG/w4HAdULBQEgBAEAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHt5dgBxcGwpq6mm7e3r
|
||||
6P/v7ej/7uzn/+7s5//u6+f/7urn/+7q5//t6ub/7enm/+zp5f/s6OT/6ufj/+nn4//p5uL/6OXh/+fk
|
||||
4P/m497/5eLd/+Th3P/j4Nr/4t7Y/+Hd1//g3NX/3tnU/93Y0v/b1tD/2dXO/9fTzf/X083/19LM/9bS
|
||||
zP/W0sv/1dHL/9XRyv/V0Mr/1NDJ/9TPyP/Tz8j/08/H/9POx//Szsb/0s3G/9HNxf/Uz8j/5ePe/6im
|
||||
ov9CQT2PJyYfOYOBe+h7eXP/IiEc/wUCAPgRCQFbIxICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIKBfQB7enYnr66q6u3r5//v7Of/7uvn/+7q
|
||||
5v/u6ub/7urm/+3q5v/t6eX/7enl/+zo5P/r6OP/6ufj/+nn4v/p5uH/6OXg/+fk3//m497/5eLd/+Th
|
||||
3P/j4Nr/4t7Y/+Hd1//g3Nb/39rU/93Y0v/c19H/29bQ/9vWz//a1c//2dXO/9nUzv/Y1M3/2NPN/9fT
|
||||
zP/X0sz/1tLM/9bSy//W0cv/1dHK/9XQyv/U0Mn/1NDI/9PPx//V0cn/4+Db/6Shnv9DQj56AAAABmJg
|
||||
Wp+Uko3/SEZA/wYFAv8KBACmDAIACAsDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHp3cwBsamYcpaKf0+fk4f/v6+f/7uvm/+7q5v/u6ub/7urm/+3p
|
||||
5f/t6eX/7Ojk/+zo5P/r6OP/6ufi/+nm4v/p5uH/6OXg/+fk3//m497/5uLd/+Xh3P/k4Nr/49/Y/+He
|
||||
1//g3Nb/39vU/97Z0//e2NL/3djS/93Y0v/c19H/3NfR/9vW0P/b1tD/29bP/9rVz//Z1c//2dTO/9jU
|
||||
zv/Y083/19PN/9fTzP/W0sz/1tLL/9bRy//X08z/39zX/5uYlPtGREBUW1lTADk3MkSPjYjsdXJs/xgX
|
||||
FP8FAQDeCgMAJgkDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAHFuagBQTUoKnZuWp93b1//w7ej/7+vm/+7q5v/u6ub/7urm/+7q5f/t6eX/7enk/+zo
|
||||
5P/s6OP/6ufi/+nm4v/p5uH/6OXg/+jk3//n497/5uLd/+Xh3P/k4Nv/49/Z/+Le1//h3db/4d3W/+Dc
|
||||
1f/g29T/39rU/9/a1P/e2dP/3tnT/97Y0v/d2NL/3dfR/9zX0f/c19H/29bQ/9rW0P/a1c//2dXP/9nV
|
||||
zv/Z1M7/2NTN/9jTzf/a1s//2dXP/5CNiOZGREEuRUM/AAAAAAt6eXOolJKO/z89N/8CAQD5BAAAZAUA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1q
|
||||
aACqp6IAkY6Kbs/Lx/zv7Of/7+zm/+/r5v/v6ub/7+rm/+7q5f/u6eX/7enk/+3o5P/s6OP/6+fi/+rn
|
||||
4v/p5uH/6eXg/+jk3//n497/5uPd/+bi3P/l4dv/5ODa/+Pf2f/j39j/4t7Y/+Le1//h3df/4d3W/+Hd
|
||||
1v/g3NX/4NzV/9/b1P/f29T/39rT/97Z0//e2NL/3djS/93Y0v/d19H/3NfR/9zW0P/b1tD/29bP/9rV
|
||||
z//c2NH/x8S+/316dbY8ODQOT0tHAGVjWQBQT0hQmJeT8nRxa/8SEQ7/AAAApAAAAAkAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL+4tACQjIkAhIF9Kri1
|
||||
sdvp5eD/8O3n//Ds5//v6+b/7+rm/+/q5f/u6eX/7unl/+3o5P/t6OP/7Oji/+zn4v/q5uH/6eXh/+nl
|
||||
3//o5N//5+Pe/+fj3f/m4t3/5uLc/+Xh2//l4dv/5ODa/+Tg2f/j39n/49/Y/+Pf2P/i3tf/4t7X/+Le
|
||||
1//h3db/4d3W/+Dc1f/g3NX/39vU/9/b1P/f2tT/3tnT/97Z0//d2NL/3djS/93X0f/b1tD/sK2n+nVy
|
||||
bmiloZkAQ0ZLACIhHAAAAAANkI+KspeUkP9APjn/AAAA3wAAACYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFg38AVlZSBJ6cl4bU0Mz+8Ozn//Ht
|
||||
5//x7ef/8Ozm/+/r5v/v6uX/7unl/+7p5P/u6eT/7ejj/+zo4v/s5+L/6ubh/+rm4f/p5eD/6eXg/+nl
|
||||
3//o5N//6OTe/+fj3v/n493/5uLd/+bi3P/m4tz/5eHb/+Xh2//k4Nr/5ODZ/+Tg2f/j39j/49/Y/+Le
|
||||
1//i3tf/4d3W/+Hd1v/h3db/4NzV/+Dc1f/f29T/39rU/9/a1P/OycP/mpeRxHZybRp+e3UAU1NTAAAA
|
||||
AADGwr0AeHZxT6imo/N5dnD/ERAO+QAAAGMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPytAAhoN9AIiGgCCyr6vI49/a//Dt5//x7ef/8e3o//Ds
|
||||
5//w6+b/8Ovm/+/r5f/v6uX/7+rl/+7p5P/u6eT/7ejj/+3o4//s6OL/6+fi/+vn4f/q5uH/6ubg/+nl
|
||||
4P/p5eD/6eXf/+jk3//o5N7/5+Pe/+fj3f/m4t3/5uLc/+bi3P/l4dv/5eHa/+Tg2v/k4Nn/49/Z/+Pf
|
||||
2P/j39j/4t7X/+Le1//h3db/4d3W/9vX0f+yr6nth4N+VJ6UlQB7e3IAAAAAAAUFAAAmJSIAPjw4DKup
|
||||
pq+hnpr/RUM+/wAAAKAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAADDwsIAGz0YALu4tQCWk5BKwb645erm4P/x7Of/8u7p//Lv6v/w7ef/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm/+/r5f/v6+X/7+vl/+/q5f/u6uT/7unk/+7o4//t6OP/7Oji/+zn4v/r5+L/6+bh/+rm
|
||||
4f/q5eD/6eXg/+nl3//o5N//6OTe/+fj3v/n493/5+Pd/+bi3f/m4tz/5eHc/+Xh2//k4Nr/5ODa/+Tg
|
||||
2f/j39n/4NzW/8C8t/uTkIqFdnRxCI2LhQDPz8EAAAAAAAAAAAAuLisA1dTRANXTzkmvrarzkIyG/xwb
|
||||
GdEAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAeHhvAHZ2cgANFBQCnpyWZ8vHwu7q5eD/8e3o//Pw7P/z8Ov/8e3n//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ovm/+/r5f/v6+X/7+rl/+7p5P/u6eT/7ejj/+3o4//s5+L/7Ofi/+vn
|
||||
4f/r5uH/6ubh/+rl4P/p5eD/6eXf/+jk3//o5N7/5+Pe/+fj3v/n493/5uLd/+bi3P/j39n/yMW//5mW
|
||||
kaNoZWERfn95AP///wAAAAAAAAAAAAAAAAAAAAAA0c3FAOPe1Q/KycazqaWh/3FtaPQODQxCLCooAK+n
|
||||
nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAH19
|
||||
eACRkIsAnJmVBaGfmmfBvrnl5uHc//Lu6f/18u7/9PHt//Hu6f/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/7+vl/+/q5f/u6uT/7unk/+7p5P/t6OP/7ejj/+zn
|
||||
4v/s5+L/6+fh/+rm4f/q5uD/6eXg/+nl4P/p5d//6eXf/+Pf2v/EwLv6m5eSm3p4cxuMioMAoKmXAH5z
|
||||
cwAAAAAAAAAAAAAAAAAAAAAA3NjSAN7c2QDh3ttQtbOx8bKtp/+inZaLZmFaAq6mngAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVkYoAlZONAFJY
|
||||
VQKZlZBOuLWw0dvX0v/v6+b/9fPv//b08P/z8Oz/8e3n//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ovm//Dr5v/v6+X/7+rl/+/q5f/u6eT/7unk/+3o
|
||||
4//t6OP/7Ofi/+zn4v/q5eD/3dnU/7u4s+uVkYx/dHNtD5SSjQAAAAAALCsqAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAODc1gDk3tYK2NbTn6qmo//HwLnTwbuyHbmyqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj42IAIaCfgD///8AiYeFK6ej
|
||||
n5/Hw77x5eHc//Tx7f/49vP/9/Tx//Pw7P/x7ej/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w6+b/8Ovm//Dr5v/v6uX/7unk/+bh
|
||||
3P/KxsH9qKahxIuJhU1UUE4Fe3lzAI6LhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
|
||||
/wDl4t4A7OnlLrCuqsOnpJ6e2NDJD763sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAH11cgCPgoEAkI6LAHdycAuXlJBUsq+ruMvH
|
||||
w/Xl4t7/9fPx//r49v/59/T/9fLu//Lv6v/x7ef/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8e3n/+/r5f/l4Nv/zsrF/bKuqdiTkIx7endzHK2m
|
||||
qwCHhH8Ah4N/ALa2tgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM/JxADLyMEA4+DYAb26
|
||||
sxOmpJ4NuLGrAL63sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AY2VzAIyIhQCxq6cAiIaDE5qYlFauq6exxsTA6dza
|
||||
1//v7ev/+Pf1//r59//49vP/9vPv//Tw7P/y7+r/8u7p//Hu6P/x7ef/8e3n//Ht5//x7ef/8e3n//Hu
|
||||
6P/y7uj/8O3n/+3p4//m4tz/2tbR/8bCvfauq6bGmJWQeICAeigAAAABiYeCAHh4cADJyLwAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX1M8A6ebhALm2sACmpJ4AAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJSUjgCanJYAkI2KALy4swBqamkLjoyIN6OhnXSysKy3xsTA39bU
|
||||
0ffi4d7/7Orn//Du7P/z8O3/8/Dt//Lw7P/x7ur/8Ozo/+/r5//u6uX/6OXg/+Lf2v/Z1dD/zMjD/b67
|
||||
t+etqqbJn5yXko6MiExwb2sY////AI2MhQB+fHoAlpOPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAADAwMAP///wCEgoEAlJGPAP///wBcW1kJe3p2LJGPi1KjoZ13rKmmmrKv
|
||||
rLq5trPRvLq33L27t+C6uLTlt7Wx4ra0sNuyr6vYqKaiwaGemqeal5OEjouHYHx6djhraGcSAAAAAZqY
|
||||
kwB+fHgAXmBeAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAD///8Axse9ADUzMQBqa2oAfHt4AJCOigD///8AOjs5BmJgXg1+fHoThYSAFYB/
|
||||
eiF6eXUvenl2JoSDgBV8enYUZmVhDklHRQkAAAAClZKOAHx5dQBwbWwAeHd1AHJvbAD07OQABQUFAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQUwB4eHUAenl3AIOBfwCUko8AmZeUAI+OigCGhYEAiIaDAJeV
|
||||
kgCQjooAgn98AHRybwBwb2kAc3NsAP///wAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////8AAAD///////////8A
|
||||
AAD/////AH////8AAAD////AAAD///8AAAD///wAAAAf//8AAAD///gAAAAP//8AAAD//+AAAAAB//8A
|
||||
AAD//4AAAAAA//8AAAD//wAAAAAAf/8AAAD//gAAAAAAP/8AAAD//AAAAAAAH/8AAAD/+AAAAAAAD/8A
|
||||
AAD/8AAAAAAAB/8AAAD/8AAAAAAAB/8AAAD/8AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8A
|
||||
AAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8A
|
||||
AAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8A
|
||||
AAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8A
|
||||
AAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAAf8AAAD/4AAAAAAAAf8AAAD/4AAAAAAAAP8A
|
||||
AAD/4AAAAAAAAP8AAAD/4AAAAAAAAP8AAAD/4AAAAAAAAH8AAAD/4AAAAAAAAH8AAAD/4AAAAAAAAH8A
|
||||
AAD/4AAAAAAAAD8AAAD/4AAAAAAAAD8AAAD/4AAAAAAAAB8AAAD/4AAAAAAAAB8AAAD/4AAAAAAAAA8A
|
||||
AAD/4AAAAAAAAA8AAAD/4AAAAAAAAA8AAAD/4AAAAAAAAAcAAAD/4AAAAAAAAAcAAAD/4AAAAAAAAAcA
|
||||
AAD/4AAAAAAAAAMAAAD/4AAAAAAAAAMAAAD/4AAAAAAAAAMAAAD/4AAAAAAAAAMAAAD/4AAAAAAAAAEA
|
||||
AAD/8AAAAAAABAEAAAD/8AAAAAAABgEAAAD/+AAAAAAABwAAAAD/+AAAAAAADwAAAAD//gAAAAAAH4AA
|
||||
AAD//wAAAAAAP4AAAAD//wAAAAAAf4AAAAD//4AAAAAA/8EAAAD///AAAAAD//8AAAD///wAAAAP//8A
|
||||
AAD///4AAAA///8AAAD////gAAP///8AAAD///////////8AAAD///////////8AAAD///////////8A
|
||||
AAA=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
namespace DBCHM
|
||||
{
|
||||
partial class FrmProcessing
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.lbMessage = new System.Windows.Forms.Label();
|
||||
this.panImage = new System.Windows.Forms.Panel();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.ColumnCount = 1;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.Controls.Add(this.lbMessage, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.panImage, 0, 1);
|
||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 2;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(776, 398);
|
||||
this.tableLayoutPanel1.TabIndex = 1;
|
||||
//
|
||||
// lbMessage
|
||||
//
|
||||
this.lbMessage.BackColor = System.Drawing.Color.Transparent;
|
||||
this.lbMessage.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lbMessage.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.lbMessage.Location = new System.Drawing.Point(4, 0);
|
||||
this.lbMessage.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.lbMessage.Name = "lbMessage";
|
||||
this.lbMessage.Padding = new System.Windows.Forms.Padding(0, 0, 0, 38);
|
||||
this.lbMessage.Size = new System.Drawing.Size(768, 199);
|
||||
this.lbMessage.TabIndex = 1;
|
||||
this.lbMessage.Text = "lbMessage\r\nadsfadsf";
|
||||
this.lbMessage.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// panImage
|
||||
//
|
||||
this.panImage.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panImage.Location = new System.Drawing.Point(4, 203);
|
||||
this.panImage.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
|
||||
this.panImage.Name = "panImage";
|
||||
this.panImage.Size = new System.Drawing.Size(768, 191);
|
||||
this.panImage.TabIndex = 2;
|
||||
//
|
||||
// FrmProcessing
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.ClientSize = new System.Drawing.Size(776, 398);
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||
this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
|
||||
this.Name = "FrmProcessing";
|
||||
this.Opacity = 0.85D;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
|
||||
this.Text = "FrmProcessing";
|
||||
this.Load += new System.EventHandler(this.FrmProcessing_Load);
|
||||
this.Shown += new System.EventHandler(this.FrmProcessing_Shown);
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private System.Windows.Forms.Label lbMessage;
|
||||
private System.Windows.Forms.Panel panImage;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,175 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DBCHM
|
||||
{
|
||||
public partial class FrmProcessing : Form
|
||||
{
|
||||
private static Image m_Image = null;
|
||||
|
||||
private EventHandler evtHandler = null;
|
||||
|
||||
private Action<object> workAction = null;
|
||||
private object workActionArg = null;
|
||||
|
||||
private Thread workThread = null;
|
||||
|
||||
public string Message
|
||||
{
|
||||
get
|
||||
{
|
||||
return lbMessage.Text;
|
||||
}
|
||||
set
|
||||
{
|
||||
lbMessage.Text = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool WorkCompleted = false;
|
||||
|
||||
public Exception WorkException
|
||||
{ get; private set; }
|
||||
|
||||
public void SetWorkAction(Action<object> workAction, object arg)
|
||||
{
|
||||
this.workAction = workAction;
|
||||
this.workActionArg = arg;
|
||||
}
|
||||
|
||||
public FrmProcessing(string msg)
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Message = msg;
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
base.OnPaint(e);
|
||||
|
||||
if (m_Image != null)
|
||||
{
|
||||
//获得当前gif动画下一步要渲染的帧。
|
||||
UpdateImage();
|
||||
|
||||
//将获得的当前gif动画需要渲染的帧显示在界面上的某个位置。
|
||||
int x = (int)(panImage.ClientRectangle.Width - m_Image.Width) / 2;
|
||||
int y = 0;
|
||||
//e.Graphics.DrawImage(m_Image, new Rectangle(x, y, m_Image.Width, m_Image.Height));
|
||||
panImage.CreateGraphics().DrawImage(m_Image, new Rectangle(x, y, m_Image.Width, m_Image.Height));
|
||||
}
|
||||
if (this.WorkCompleted)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void FrmProcessing_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (this.Owner != null)
|
||||
{
|
||||
this.StartPosition = FormStartPosition.Manual;
|
||||
this.Location = new Point(this.Owner.Left, this.Owner.Top);
|
||||
//MessageBox.Show(string.Format("X={0},Y={1}", this.Owner.Left, this.Owner.Top));
|
||||
this.Width = this.Owner.Width;
|
||||
this.Height = this.Owner.Height;
|
||||
}
|
||||
else
|
||||
{
|
||||
Rectangle screenRect = Screen.PrimaryScreen.WorkingArea;
|
||||
this.Location = new Point((screenRect.Width - this.Width) / 2, (screenRect.Height - this.Height) / 2);
|
||||
}
|
||||
|
||||
//为委托关联一个处理方法
|
||||
evtHandler = new EventHandler(OnImageAnimate);
|
||||
|
||||
if (m_Image == null)
|
||||
{
|
||||
Assembly assy = Assembly.GetExecutingAssembly();
|
||||
//获取要加载的gif动画文件
|
||||
m_Image = Image.FromStream(assy.GetManifestResourceStream(assy.GetName().Name + ".Resources.loading.gif"));
|
||||
}
|
||||
//调用开始动画方法
|
||||
BeginAnimate();
|
||||
}
|
||||
|
||||
|
||||
//开始动画方法
|
||||
|
||||
private void BeginAnimate()
|
||||
{
|
||||
if (m_Image != null)
|
||||
{
|
||||
//当gif动画每隔一定时间后,都会变换一帧,那么就会触发一事件,该方法就是将当前image每变换一帧时,都会调用当前这个委托所关联的方法。
|
||||
ImageAnimator.Animate(m_Image, evtHandler);
|
||||
}
|
||||
}
|
||||
|
||||
//委托所关联的方法
|
||||
|
||||
private void OnImageAnimate(Object sender, EventArgs e)
|
||||
{
|
||||
//该方法中,只是使得当前这个winform重绘,然后去调用该winform的OnPaint()方法进行重绘)
|
||||
this.Invalidate();
|
||||
}
|
||||
|
||||
//获得当前gif动画的下一步需要渲染的帧,当下一步任何对当前gif动画的操作都是对该帧进行操作)
|
||||
|
||||
private void UpdateImage()
|
||||
{
|
||||
ImageAnimator.UpdateFrames(m_Image);
|
||||
}
|
||||
|
||||
//关闭显示动画,该方法可以在winform关闭时,或者某个按钮的触发事件中进行调用,以停止渲染当前gif动画。
|
||||
|
||||
private void StopAnimate()
|
||||
{
|
||||
m_Image = null;
|
||||
ImageAnimator.StopAnimate(m_Image, evtHandler);
|
||||
}
|
||||
|
||||
private void FrmProcessing_Shown(object sender, EventArgs e)
|
||||
{
|
||||
if (this.workAction != null)
|
||||
{
|
||||
workThread = new Thread(ExecWorkAction);
|
||||
workThread.IsBackground = true;
|
||||
workThread.Start();
|
||||
}
|
||||
}
|
||||
|
||||
private void ExecWorkAction()
|
||||
{
|
||||
try
|
||||
{
|
||||
var workTask = new Task((arg) =>
|
||||
{
|
||||
this.workAction(arg);
|
||||
},
|
||||
this.workActionArg);
|
||||
|
||||
workTask.Start();
|
||||
Task.WaitAll(workTask);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
this.WorkException = ex;
|
||||
}
|
||||
finally
|
||||
{
|
||||
this.WorkCompleted = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
|
|
@ -0,0 +1,185 @@
|
|||
namespace DBCHM
|
||||
{
|
||||
partial class GridFormMgr
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GridFormMgr));
|
||||
this.linkAdd = new System.Windows.Forms.LinkLabel();
|
||||
this.linkEdit = new System.Windows.Forms.LinkLabel();
|
||||
this.linkRemove = new System.Windows.Forms.LinkLabel();
|
||||
this.linkClone = new System.Windows.Forms.LinkLabel();
|
||||
this.GV_DBConfigs = new System.Windows.Forms.DataGridView();
|
||||
this.BtnConnect = new ComponentFactory.Krypton.Toolkit.KryptonButton();
|
||||
this.BtnCancel = new ComponentFactory.Krypton.Toolkit.KryptonButton();
|
||||
((System.ComponentModel.ISupportInitialize)(this.GV_DBConfigs)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// linkAdd
|
||||
//
|
||||
this.linkAdd.AutoSize = true;
|
||||
this.linkAdd.Location = new System.Drawing.Point(22, 10);
|
||||
this.linkAdd.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.linkAdd.Name = "linkAdd";
|
||||
this.linkAdd.Size = new System.Drawing.Size(29, 12);
|
||||
this.linkAdd.TabIndex = 0;
|
||||
this.linkAdd.TabStop = true;
|
||||
this.linkAdd.Text = "新建";
|
||||
this.linkAdd.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkAdd_LinkClicked);
|
||||
//
|
||||
// linkEdit
|
||||
//
|
||||
this.linkEdit.AutoSize = true;
|
||||
this.linkEdit.Location = new System.Drawing.Point(63, 10);
|
||||
this.linkEdit.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.linkEdit.Name = "linkEdit";
|
||||
this.linkEdit.Size = new System.Drawing.Size(29, 12);
|
||||
this.linkEdit.TabIndex = 0;
|
||||
this.linkEdit.TabStop = true;
|
||||
this.linkEdit.Text = "编辑";
|
||||
this.linkEdit.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkEdit_LinkClicked);
|
||||
//
|
||||
// linkRemove
|
||||
//
|
||||
this.linkRemove.AutoSize = true;
|
||||
this.linkRemove.Location = new System.Drawing.Point(103, 10);
|
||||
this.linkRemove.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.linkRemove.Name = "linkRemove";
|
||||
this.linkRemove.Size = new System.Drawing.Size(29, 12);
|
||||
this.linkRemove.TabIndex = 0;
|
||||
this.linkRemove.TabStop = true;
|
||||
this.linkRemove.Text = "删除";
|
||||
this.linkRemove.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkRemove_LinkClicked);
|
||||
//
|
||||
// linkClone
|
||||
//
|
||||
this.linkClone.AutoSize = true;
|
||||
this.linkClone.Location = new System.Drawing.Point(142, 10);
|
||||
this.linkClone.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.linkClone.Name = "linkClone";
|
||||
this.linkClone.Size = new System.Drawing.Size(29, 12);
|
||||
this.linkClone.TabIndex = 0;
|
||||
this.linkClone.TabStop = true;
|
||||
this.linkClone.Text = "克隆";
|
||||
this.linkClone.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkClone_LinkClicked);
|
||||
//
|
||||
// GV_DBConfigs
|
||||
//
|
||||
this.GV_DBConfigs.AllowUserToAddRows = false;
|
||||
this.GV_DBConfigs.AllowUserToDeleteRows = false;
|
||||
this.GV_DBConfigs.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.GV_DBConfigs.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Raised;
|
||||
this.GV_DBConfigs.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Sunken;
|
||||
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
|
||||
dataGridViewCellStyle1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.GV_DBConfigs.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.GV_DBConfigs.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.GV_DBConfigs.Location = new System.Drawing.Point(9, 34);
|
||||
this.GV_DBConfigs.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.GV_DBConfigs.MultiSelect = false;
|
||||
this.GV_DBConfigs.Name = "GV_DBConfigs";
|
||||
this.GV_DBConfigs.ReadOnly = true;
|
||||
this.GV_DBConfigs.RowHeadersVisible = false;
|
||||
this.GV_DBConfigs.RowTemplate.Height = 27;
|
||||
this.GV_DBConfigs.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||
this.GV_DBConfigs.Size = new System.Drawing.Size(762, 255);
|
||||
this.GV_DBConfigs.TabIndex = 5;
|
||||
this.GV_DBConfigs.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.GV_DBConfigs_CellDoubleClick);
|
||||
this.GV_DBConfigs.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.GV_DBConfigs_CellFormatting);
|
||||
//
|
||||
// BtnConnect
|
||||
//
|
||||
this.BtnConnect.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.BtnConnect.AutoSize = true;
|
||||
this.BtnConnect.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.BtnConnect.Location = new System.Drawing.Point(525, 302);
|
||||
this.BtnConnect.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.BtnConnect.Name = "BtnConnect";
|
||||
this.BtnConnect.Size = new System.Drawing.Size(90, 26);
|
||||
this.BtnConnect.TabIndex = 6;
|
||||
this.BtnConnect.Values.Text = "连接";
|
||||
this.BtnConnect.Click += new System.EventHandler(this.btnConnect_Click);
|
||||
//
|
||||
// BtnCancel
|
||||
//
|
||||
this.BtnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.BtnCancel.AutoSize = true;
|
||||
this.BtnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.BtnCancel.Location = new System.Drawing.Point(652, 302);
|
||||
this.BtnCancel.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.BtnCancel.Name = "BtnCancel";
|
||||
this.BtnCancel.Size = new System.Drawing.Size(90, 26);
|
||||
this.BtnCancel.TabIndex = 7;
|
||||
this.BtnCancel.Values.Text = "取消";
|
||||
this.BtnCancel.Click += new System.EventHandler(this.btnCancel_Click);
|
||||
//
|
||||
// GridFormMgr
|
||||
//
|
||||
this.AcceptButton = this.BtnConnect;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(780, 337);
|
||||
this.Controls.Add(this.GV_DBConfigs);
|
||||
this.Controls.Add(this.BtnCancel);
|
||||
this.Controls.Add(this.BtnConnect);
|
||||
this.Controls.Add(this.linkClone);
|
||||
this.Controls.Add(this.linkRemove);
|
||||
this.Controls.Add(this.linkEdit);
|
||||
this.Controls.Add(this.linkAdd);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "GridFormMgr";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "数据库连接管理";
|
||||
this.Load += new System.EventHandler(this.GridFormMgr_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.GV_DBConfigs)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.LinkLabel linkAdd;
|
||||
private System.Windows.Forms.LinkLabel linkEdit;
|
||||
private System.Windows.Forms.LinkLabel linkRemove;
|
||||
private System.Windows.Forms.LinkLabel linkClone;
|
||||
private System.Windows.Forms.DataGridView GV_DBConfigs;
|
||||
private ComponentFactory.Krypton.Toolkit.KryptonButton BtnConnect;
|
||||
private ComponentFactory.Krypton.Toolkit.KryptonButton BtnCancel;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,185 @@
|
|||
using ComponentFactory.Krypton.Toolkit;
|
||||
using MJTop.Data;
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DBCHM
|
||||
{
|
||||
public partial class GridFormMgr : KryptonForm
|
||||
{
|
||||
public GridFormMgr()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
//为KeyDown能应用到所有控件上 注册 KeyDown 事件
|
||||
foreach (Control control in this.Controls)
|
||||
{
|
||||
control.KeyDown += control_KeyDown;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void control_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Escape)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
|
||||
DBForm dbForm = null;
|
||||
private void linkAdd_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
dbForm = new DBForm(OPType.新建);
|
||||
var dia = dbForm.ShowDialog();
|
||||
if (dia == DialogResult.OK)
|
||||
{
|
||||
RefreshListView();
|
||||
}
|
||||
}
|
||||
|
||||
private void linkEdit_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
if (GV_DBConfigs.SelectedRows.Count <= 0)
|
||||
{
|
||||
MessageBox.Show("请选择连接!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
int Id = Convert.ToInt32(GV_DBConfigs.SelectedRows[0].Cells[0].Value);
|
||||
DBForm dbForm = new DBForm(OPType.编辑, Id);
|
||||
var diaResult = dbForm.ShowDialog();
|
||||
if (diaResult == DialogResult.OK)
|
||||
{
|
||||
RefreshListView();
|
||||
}
|
||||
}
|
||||
|
||||
private void linkRemove_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
if (GV_DBConfigs.SelectedRows.Count <= 0)
|
||||
{
|
||||
MessageBox.Show("请选择连接!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
if (MessageBox.Show("确定要删除该连接吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) == DialogResult.OK)
|
||||
{
|
||||
int Id = Convert.ToInt32(GV_DBConfigs.SelectedRows[0].Cells[0].Value);
|
||||
ConfigUtils.Delete(Id);
|
||||
|
||||
RefreshListView();
|
||||
}
|
||||
}
|
||||
|
||||
private void linkClone_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
if (GV_DBConfigs.SelectedRows.Count <= 0)
|
||||
{
|
||||
MessageBox.Show("请选择连接!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
int Id = Convert.ToInt32(GV_DBConfigs.SelectedRows[0].Cells[0].Value);
|
||||
DBForm dbForm = new DBForm(OPType.克隆, Id);
|
||||
var diaResult = dbForm.ShowDialog(this);
|
||||
if (diaResult == DialogResult.OK)
|
||||
{
|
||||
RefreshListView();
|
||||
}
|
||||
}
|
||||
|
||||
private void btnConnect_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (GV_DBConfigs.SelectedRows.Count <= 0)
|
||||
{
|
||||
MessageBox.Show("请选择连接!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
int Id = Convert.ToInt32(GV_DBConfigs.SelectedRows[0].Cells[0].Value);
|
||||
DBCHMConfig config = ConfigUtils.Get(Id);
|
||||
|
||||
|
||||
if ((DBType)Enum.Parse(typeof(DBType), config.DBType) == DBType.SqlServer
|
||||
&& !GV_DBConfigs.SelectedRows[0].Cells[6].Value.ToString().Equals("sa", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
var dia = MessageBox.Show("非超级管理员的账号,可能因权限不足,查询不出表结构信息,确定要继续吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
|
||||
if (dia == DialogResult.Cancel)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
FormUtils.ShowProcessing("正在查询表结构信息,请稍等......", this, arg =>
|
||||
{
|
||||
try
|
||||
{
|
||||
DBUtils.Instance = DBMgr.UseDB((DBType)Enum.Parse(typeof(DBType), config.DBType), config.ConnString, 300);
|
||||
ConfigUtils.UpLastModified(Id);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogUtils.LogError("连接数据库失败", Developer.SysDefault, ex, config);
|
||||
MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
|
||||
}, null);
|
||||
}
|
||||
|
||||
private void btnCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void GridFormMgr_Load(object sender, EventArgs e)
|
||||
{
|
||||
RefreshListView();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 刷新列表
|
||||
/// </summary>
|
||||
private void RefreshListView()
|
||||
{
|
||||
var data = ConfigUtils.SelectAll();
|
||||
if (data != null)
|
||||
{
|
||||
GV_DBConfigs.DataSource = data;
|
||||
|
||||
if (data.Count > 0)
|
||||
{
|
||||
GV_DBConfigs.Columns[0].Visible = false;
|
||||
GV_DBConfigs.Columns[1].Width = 150;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
private void GV_DBConfigs_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
btnConnect_Click(sender, e);
|
||||
//代表已经正常选中
|
||||
FormUtils.IsOK_Close = true;
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void GV_DBConfigs_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex == 7)
|
||||
{
|
||||
if (GV_DBConfigs.Columns[e.ColumnIndex].DataPropertyName == "Pwd")
|
||||
{
|
||||
string str = e.Value.ToString();
|
||||
string strEncrypt = string.Empty;
|
||||
for (int j = 0; j < str.Length; j++)
|
||||
{
|
||||
strEncrypt += "*";
|
||||
}
|
||||
e.Value = strEncrypt;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,487 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEASEgAAAEAIACIVAAAFgAAACgAAABIAAAAkAAAAAEAIAAAAAAAAFEAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8vLwA+LS4ASkVBAEtL
|
||||
RABLS0YAS0tEAElHQgBAQD8APz8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAE1KQwBMSUMAU1BLAFtYUgBdWlQAXVxVAGBeWABramMADggHAyotJQYpKykFKiwlBiEf
|
||||
HQSAfXIAYF5ZAF9cVgBcWlQAWVdRAFZUTgBNTEYAQjc6AEc/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0xJAAAAAABQSUEAQ0E+AFVS
|
||||
TACEhYEAREE9CFVRTBVaV1A1WllSVl5cVm9iX1mCZmNdlGhmX5tpZ2CbaGZfm2VjXJhhX1mFX1xXdVxa
|
||||
VF1ZVlFAVFFLHkpKQwwABAABW1pRAEtJQgAbJBgARUU5AElJPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBPzwAODY1AFFPSQCFgnYAREM/DVZTTjlcWlRwYV9YqGdl
|
||||
X9RvbGXodXJr9Hl2b/59enL/hIB4/4eEfP+JhX3/iIR9/4WBev9/fHT/e3dw/3d0bfdyb2jsamdh3WRh
|
||||
W7heXFWDWFVPSktKQxUAAAABWVZTAEhFQwBPS0kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAT01HAExKRABYVk8AAAAAAk9NSCZbWVNwYmBavmxpYul0cWr/fnpy/4eDe/+Pi4L/lZCI/5qV
|
||||
jP+dmZD/oZyT/6Self+ln5f/paCX/6Oflf+gm5L/nZiP/5qVjP+UkIj/jomB/4WBev96d3D/cG1m8mVj
|
||||
XcxbWlOJU1BLOz07OwhcWlQATk1GAGdmWQAvLy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9NSAAAAAAAU1FMAP//
|
||||
/wBQTkgsWFZQimJgWdlua2T+e3dw/4eDe/+RjIT/mJOL/56ZkP+inZT/pJ+X/6ehmP+po5r/qqSb/6ul
|
||||
nP+rpZz/rKad/6ymnf+rpZz/qqSb/6mkm/+oopn/pZ+W/6Cbkv+alYz/kIyE/4SAef92c2z/aGVf6l1b
|
||||
VaVTUUtBQ0M7BldVTgBIRj8AT0xHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASkI/ADwxLQBTUEwAT05IE1lXUW9fXVfaamdh/3l1
|
||||
bv+Ggnv/kY2F/5mUi/+dmI//oJuS/6KdlP+kn5b/pqGY/6eimf+po5r/qqSb/6ulnP+rpZz/q6Wc/6ym
|
||||
nf+rpZz/q6Wc/6ulnP+qpJv/qaOa/6eimf+loJf/op2T/5yXj/+Tj4b/hoJ6/3Vya/9kYlzsV1VPk09O
|
||||
SCZbXFsAS0dCAExHQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAABFRT8ARUI9AG1xaQBRTUkvWVdSrWNgWvpxbmf/gHx1/4yIf/+Uj4f/mZOL/5yW
|
||||
jv+emZD/oJuS/6KdlP+kn5X/paCX/6ahmP+moJf/pqCX/6Wflv+inZT/op2U/6Wflv+nopj/qKKZ/6mj
|
||||
mv+qpJv/qKOa/6eimf+loJf/pJ+V/6Kdk/+empH/mZSL/46Kgv9/e3T/a2hi/1pYUs5NTEZTQjs3BEhH
|
||||
QQBHR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVF
|
||||
PwBHRkAAoJKOAFJQSUdYVlDPZGFb/3Zya/+EgHj/jYmA/5KOhf+VkYn/mZOL/5uWjf+dmI//npmQ/5yX
|
||||
jv+Yk4r/ko2E/4qFff+BfHT/fHhw/3Vxaf9taWL/a2hg/3JuZv94dGz/e3hv/4aBef+Qi4P/mZSM/5+a
|
||||
kf+inZT/o56U/6Gdk/+fm5H/nZiP/5qUjP+SjYX/hYF5/3BtZv9bWVPtTkxIcjw9OQZCQj0AOjo1AAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATk1IAEdHQQCdjYwATUxGS1RS
|
||||
TN5iX1n/dnJr/4R/eP+Lh37/j4qC/5GNhP+UkIj/l5GJ/5aQiP+RjIP/iYR8/4B7c/92cWn/bmli/2hk
|
||||
Xf9iXlf/XVlT/11ZU/9dWVP/WlZR/1VRTP9UUUv/V1RN/1tXUf9hXVb/bGdg/3dya/+GgXj/k46F/5qV
|
||||
jP+dmI//nJeO/5qVjf+Xkor/kY2F/4aCev9zcGj/W1lU80lIQ3MtLigGOzo2AD48OgAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pz8ATktFAE1KRwBMSkU8T01I3F5bVv9yb2j/gHx1/4eC
|
||||
e/+Lhn7/jomB/5CLg/+Qi4P/jId+/4WAd/9/eXH/fHdv/355cf+Dfnb/iIN7/4+Kgv+RjYX/ko2G/5iT
|
||||
i/+dl4//m5aO/5GMhf+Mh4D/i4Z//4SAeP99eXH/dnJr/3BsZf9vamP/dXBp/4B7c/+MiH//lpCI/5iS
|
||||
iv+WkYn/k4+H/4+Kgv+EgHj/cW1n/1dVT/NEQj5wMjAvBD8+OwBGRkQAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAADGu4cATkxFAEpIQxtLSkW/V1VP/21pY/97d3D/gn52/4WBev+JhHz/i4V9/4uF
|
||||
fP+Jg3r/iYN6/4+JgP+ZlIz/paCX/6+qov+1saj/uLOr/7u2rv+8t67/vLiv/724r/+9uK//vLev/7u2
|
||||
rv+6taz/ubOr/7axqP+yraX/raif/6Sfl/+YlIz/kIuD/4yHf/+Lh3//jYiA/5CLgv+SjYX/kY2E/4+L
|
||||
gv+Lhn7/f3t0/2lmYP9OTEfqQkE9TT87NgBKS0kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AABISEQAT1JRAkZEQH1OTEb9ZGFb/3Vxa/98eXH/gHx1/4N/d/+Ef3f/hoB4/4+JgP+dmI//r6qj/765
|
||||
sf/Gwrr/ycS9/8jDvP/Fwbn/wr61/8K9tP/CvbT/wb20/8G9tP/BvLP/wLyz/8C7sv+/u7L/vrqx/765
|
||||
sP++ubD/vbiv/7y3rv+6taz/tbCo/7Cro/+sp5//pKCa/6Kdl/+Yk4v/kIuD/42IgP+Lhn7/hYF5/3dz
|
||||
bP9dW1X/R0ZBx0ZFQx9FREEAWlpaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtHQwBGRT8ARUQ+KEdF
|
||||
QNpYVVD/bWlj/3dzbP97d3D/fXly/396cv+KhX3/pKCY/7+7tP/OysX/0s7I/8/Lw//Lx8D/ycS9/8fD
|
||||
u//Fwbn/xcC4/8S/t//AvLP/u7au/7q2rv+6tq7/ubWt/7m1rP+7tq7/wLyz/8C8s//AvLP/wLyz/8C7
|
||||
sv+/urH/vrmw/724sP+9uK//l5ON/7Cspv++u7b/r6ul/5eSi/+JhHz/hYF5/356c/9raGH/UE5J/ENC
|
||||
P3UAAAAAXl5eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtHQwBAQDoAREI9cUtIQ/1hXlj/cGxm/3Vx
|
||||
a/94dG3/gX11/52Ykf/Bvbf/19PO/9fUzv/Szsf/zcjB/8rGvv/FwLn/ubWu/6+ro/+empP/kY2H/4aD
|
||||
fP+Cf3j/gn54/4SAef+EgXr/hIB5/4J/eP+AfXb/gn95/4uIgf+Xk4z/pqKa/7Gtpf+6tq3/wbyz/8C8
|
||||
s//AvLL/rquk/52Ykv/Fwrr/z83I/8bDv/+gnZf/hoF6/397c/9zb2j/WldS/0NBPchAQD8bQkJBAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtJRQBPTkkMQ0E9rFBOSf9mY13/cG1n/3ZybP+MiIL/uLaw/9rX
|
||||
0//d29b/1NHK/9DKw//Iw7z/ubSt/52ak/+Jhn//endx/3Rxav94dW7/fXpz/4F9dv+Ggnr/jIiA/5CL
|
||||
g/+RjYT/kYyE/4+Lg/+Khn7/hIB4/4B8df97d3D/dHFr/3Zzbf+Bfnf/kY6H/6umnv+7tq7/yMS9/5qV
|
||||
kf+8tq7/xsK7/9nX0v/X1dL/p6Oe/4F9dv92cmv/Yl9Z/0ZEQO87OjhFNDIvAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAEZEQABGREAdRUM/2FVSTv9oZV//c3Bq/5aTjv/Pzcr/5+Xi/93a1P/Tz8j/ycW9/62o
|
||||
ov+Lh4H/dXJs/3Vxa/97eHH/hoN7/4+Lg/+Wkon/m5aO/5+bkf+inpT/paCX/6eimf+oo5r/qaOa/6ij
|
||||
mv+moZj/o56V/6Cbkv+bl47/lZGI/46Jgf+Cf3f/eHVu/3Rxav9+e3T/qqaf/62ppP+qpZ3/v7qx/8nF
|
||||
vv/i4Nz/4N/d/6eln/96dm//ZmNd/0lHQ/06OTdsNDMrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEpI
|
||||
RABJSEQkSkhE7FlWUf9raGP/mJaR/9va1//q5+T/3NnT/87Kw/+tqqP/hoN9/3FuZ/90cGr/gX52/42I
|
||||
gP+WkYj/nJeO/6Cbkv+jnpX/paCX/6eimf+po5r/qqSb/6ulnP+rpZz/rKad/6ymnf+spp3/q6Wc/6qk
|
||||
nP+po5r/pqGY/6Oelf+emZD/lpGJ/4uHf/98eHH/fntz/66rpf9tamT/Y2Ba/7ezq//NycP/6Ofk/+Xk
|
||||
4/+fnJf/aWZg/0xJRf85NzWDXVhLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5NSQBOTUklTkxI7F1b
|
||||
Vv+Ni4b/2tjV/+3r6f/d2dP/vrqz/4eEfv9qZ2H/cW1m/397dP+MiH//lZCH/5qVjf+emZD/oJuS/6Kd
|
||||
lP+kn5b/pqGX/6eimf+po5v/qqSb/6ulnP+rpZz/rKWc/6ymnf+spp3/q6Wc/6ulnP+qpJv/qaOa/6ei
|
||||
mf+loJf/o56U/5+ZkP+Xkon/i4d//25rY/8wLyj/Dg0L/3Rxbf/Ev7j/1dLM//X08//X1dP/fHl0/0xK
|
||||
Rf82NTKZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBPSwBPTkolUE5L7HNwbf/KyMb/7+7r/9zZ
|
||||
0/+tqqT/cG1n/2RhW/91cmv/hYF5/4+Lg/+VkYj/mZSM/5yWjv+emZD/oJuS/6Kdk/+jnpX/pJ+V/6Oe
|
||||
lf+hnJT/oZuS/52Xjv+blY3/mpWM/5yXjv+hnJP/o56U/6agmP+oopn/qKKZ/6eimP+loJf/pJ+V/6Kd
|
||||
k/+fm5H/nJeO/3BtZf83Ni3/FRQQ/xsaGP+Cf3n/wLy1/+Xi3v/29vX/qaek/09NSf8yMS6aAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJRTABPTkolWFZS7KKgnv/q6Ob/4d3Z/6Sgmv9kYlv/ZmNd/3l1
|
||||
bv+Hgnv/joqB/5KOhf+VkIj/mZOL/5uVjf+cl47/m5aN/5eSif+QjIP/iIN7/396cv92cWr/cGxl/2hj
|
||||
Xf9jX1j/YV1X/2NfWf9rZl//cGxl/3p2b/+FgXn/kIuD/5mUi/+fmpD/oZyT/6Gck/+fmpH/npmQ/4iD
|
||||
fP9IRz3/JSQd/wcGBf8zMi//fnt1/8XBuv/08/H/1NPR/19dWf8wLiyZAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAFZVUQBQTkolbGpn7MvJxv/o5eL/op+a/1xaVP9kYVv/eHRt/4WBef+Lh3//joqC/5GN
|
||||
hP+Uj4f/lZCI/5ONhf+Mh37/g311/3p1bf9xbWX/bWhh/2llXv9lYVr/ZGFa/2djXP9lYVr/Y19Z/2Fd
|
||||
WP9bV1L/WlZR/11YUv9fW1X/ZmFb/29rY/98d2//ioV9/5aRiP+bl43/nJaO/5eRif9VU0r/NDMq/w4O
|
||||
Cv8VFBP/UlBL/3t4cv/Z1tL/6+vp/3p5df8wLy2ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJg
|
||||
XABXVVEliIaD7d/d2v+0saz/W1lT/2BeWP90cWr/gX12/4eCe/+Khn7/jYmA/4+Kgv+OiYH/iYR7/4N9
|
||||
dP+AenL/gXxz/4aBef+NiYH/lZCJ/5yXj/+emZH/op2V/6eimv+nopr/p6Ka/6WgmP+dmJD/mZSM/5OP
|
||||
h/+Khn7/gn12/3l1bf91cGj/dnJq/355cv+Ig3v/kYyD/5aRiP9qaGD/PTwy/x8eGP8FBAP/QDw3/1xa
|
||||
VP+KiIT/5+bk/5eVkv81NTKZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9uagBiYV0nn56b7cnH
|
||||
xP9mZF//WldR/3BtZv98eHH/gX52/4WBev+Ig3z/iYN7/4qEe/+KhHv/joiA/5iTi/+moZn/s66m/7u2
|
||||
rv++urL/vrqx/7+7sv/Au7L/wLuy/7+7sv+/urH/v7qx/765sP+9ubD/vbiv/7u2rv+5tKv/tbCo/6+q
|
||||
of+nopn/nZiR/5aSi/+Tj4j/kIyE/5GMhP98eHD/RUQ6/y8uJv8KCgb/HRkW/2FdV/9ZV1L/qKek/6Wj
|
||||
oP89PDmaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzcABraWYooZ+c7YiGgv9RTkn/aGRe/3Zy
|
||||
a/98eHH/gHx0/4J+dv+CfnX/iIN6/5iTiv+sp6D/vbix/8fDvP/Lxr//y8a//8nEvP/Fwbn/w762/8K+
|
||||
tf/CvrX/wr21/8K+tf/CvbT/wb20/8C8s//Au7L/v7uy/7+6sf++urH/vrmw/724sP+8t6//urSs/7aw
|
||||
qP+yraX/sKyl/66qpP+dmJL/VlVM/zo5L/8YFxL/CAUD/0xIQv9iYFn/Y2Fd/4qJhf9DQj6YAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIF+ewCCgH0pioiF7VdVUP9aV1L/bmpk/3dzbP96d2//fHhx/4F8
|
||||
dP+Sjob/sKyl/8nFv//U0cv/0s7I/83Jwv/Kxr7/yMS8/8bCuv/Dv7f/wby0/765sf+1san/sq2l/6mm
|
||||
nv+opJz/p6Sc/6+ro/+yrqb/uLSs/7y4r/++ubD/v7uy/8G8s//Au7L/v7qx/765sP+8uK//vLev/766
|
||||
tP/Fwr3/goB6/0JBN/8oKCD/BgUD/yYhG/9lYVv/VVNN/1dWUv9DQj6H////AAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAHh2cgCDgH0hX11Z3k1KRv9iX1r/cG1m/3Vxav95dG3/h4N8/6yoov/Pzcj/2tfS/9bS
|
||||
zP/Qy8T/zMfA/8jDvP+8uLH/rKmi/5uYkf+NioL/gH13/3h1b/94dW7/fHhx/3p3cP96d3D/endv/3x5
|
||||
cv96d3D/eHVu/3t4cv+HhH3/lJCJ/6OfmP+wrKT/vrqx/8G8s//AvLP/v7qx/766sf/Fwbr/sa6p/09O
|
||||
Rf82Niz/EREN/wwIBP9QS0P/XVpV/0A+Ov0zMzBoPzw3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJP
|
||||
SwBWU08YRkRBy1FPSv9nZF7/cGxm/3h0bv+Xk47/x8XA/+De2v/d2tX/08/I/87Jwv/Au7T/qaSe/4uH
|
||||
gf97eHL/dXJs/3Vya/98eXH/g394/4mFff+OioH/k46G/5eSiv+ZlIv/mZSL/5eSiv+Tjob/jYmB/4iE
|
||||
ff+Cfnf/endv/3VybP94dW//goB5/5qXj/+wraT/v7qy/8K9tP/BvbT/vrmy/2tpYf8+PTP/ISEa/wUD
|
||||
Af8tJx//XltV/0RCPvw3NjNbKigjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZEPwBGQz8fRkQ/3lZT
|
||||
T/9oZV//dnNt/6OhnP/a2NX/5+Tg/9rWz//QzMT/vbmx/5eUjf96d3D/cW1n/3h0bf+Cfnb/jIiA/5SQ
|
||||
iP+alo3/n5qR/6OelP+loJf/qKKZ/6mkm/+qpJv/q6Wc/6qlnP+po5r/p6GY/6Wflv+hnJP/nJeO/5WQ
|
||||
iP+Lh3//f3x0/3Rxav9zcGn/h4R9/6qmnv+/u7L/xcC4/4yJgf9FRDr/MTAo/wsLCP8TDQf/TEdA/0tJ
|
||||
RP47OTZxNzUvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtJRQBLSUUlS0lF7FpXUv9va2b/paOf/+Tj
|
||||
4P/n5eH/2NTO/8XAuf+Zlo//dXJs/25rZf95dW7/h4N7/5GMhP+ZlIv/npmQ/6Gck/+kn5b/paCY/6ei
|
||||
mf+po5r/qqSb/6ulnP+rpZz/rKad/6ymnf+spp3/q6Wc/6ulnP+qpJv/qKKZ/6Wgl/+hnJP/m5aN/5KN
|
||||
hP+EgHj/dXFq/3BtZ/+Fgnv/r6uj/6+ro/9SUUf/PDwy/xoaFP8GAwD/MSoi/0lHQv85NzWHcGlYAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9NSQBPTUklT01J7GBeWf+cmpb/4+Lg/+ro5P/X083/r6ul/3p3
|
||||
cf9pZmD/dnJr/4SAef+Pi4P/l5GJ/5uWjv+emZD/oJuS/6KdlP+kn5X/pqGX/6eimf+po5r/qqSb/6qk
|
||||
m/+rpZz/q6Wc/6ulnP+rpZz/q6Wc/6ulnP+qpJv/qKOa/6eimf+loJf/pJ+V/6Cckv+alo3/kIyE/4J+
|
||||
dv9va2X/bWpk/5GNhv9raWH/QkE2/ysqIv8IBwX/GBEK/z06Nf83NjOZAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAFBPSwBQTkslUU9L7H58eP/Y1tT/7uvo/9TQyv+ZlpD/aWZh/2tnYf98eHH/iYV9/5GN
|
||||
hP+WkYn/mZSM/5uWjv+emZD/oJuS/6Gck/+inZP/oZuS/52Yj/+alYz/lpGI/5CLg/+OioH/joqB/4+K
|
||||
gv+VkIf/mpWM/5+Zkf+jnZX/paCX/6WhmP+loJb/o56V/6Kdk/+gm5H/nJeP/5aRiP+JhX3/d3Ns/2dl
|
||||
Xv9aWFH/REM5/zg4Lv8TEw//CgYB/yokHP8yMS+aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJR
|
||||
TQBPTkolW1lW7K6sqf/t6+j/1tLN/4uIgv9fXVf/bGli/356c/+JhX3/j4uC/5KOhf+VkIj/mJOL/5qV
|
||||
jf+alYz/l5KK/5GMhP+Ig3v/fnlx/3NvZ/9qZl//ZGBZ/11ZU/9aVlD/V1RO/1hUT/9dWVP/Yl9Y/2xn
|
||||
Yf93cmr/g352/5GMg/+alYz/n5qR/6Cbkv+fmpH/nZiP/5uVjf+WkYn/jIiA/3x4cf9hX1n/QUA3/0FA
|
||||
Nf8kIxz/BgUD/xoSC/8oJSKamv//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlXUwBRT0sldHJv7NLQ
|
||||
zv/h3tn/jImD/1tYUv9qZ2H/fHhx/4aCev+Lh37/joqB/5GNhP+Tj4b/k46F/4+Kgf+Hgnr/fnlx/3dy
|
||||
av9ybWb/cGxk/29rZP9taWL/cW1m/3JuZ/9wbGX/bmtk/25qZP9oZV//Y19Z/2RfWf9iXVf/ZGBa/2tm
|
||||
X/91cGj/gn51/4+Kgv+Yk4r/m5WN/5qUjP+Xkor/k46G/4uHfv97eHD/UVBI/0JBN/8zMin/Dg0K/w4I
|
||||
Av8eFw+nDTBaATUaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjYABZV1QmkI6L7eDe2/+fnJj/V1RP/2Zj
|
||||
Xf94dW3/gn53/4aCe/+KhX7/jYiA/46JgP+Nh37/h4J4/4N+dP+Efnb/ioR8/5KOhf+dmJH/p6Ob/7Cs
|
||||
pP+zr6f/urav/7y4sf+7t7D/urau/7i0rP+xrKX/qaWd/6Sfl/+alY3/kYyE/4aCev99eHD/enVu/355
|
||||
cf+FgHj/jYiA/5SPhv+UkIj/ko6G/4+Lgv+JhH3/amdg/0RDOv8+PTP/HBwW/wcFAv8XDgTGCQUBEgIA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFwbABkY18noqCd7b+9uv9dW1f/XVtV/3NvaP99eXH/gX12/4WA
|
||||
ef+Hgnv/iIJ6/4mDev+Nh37/l5KJ/6ikm/+7t7D/y8jC/9fUz//d2tb/3tzY/+Dd2f/e3Nf/3dvV/9vY
|
||||
0//Y1dD/1tPN/9PQyv/QzMX/zcnC/8nFvv/FwLn/wLuz/7m0rP+wq6L/pqCZ/56Zkf+ZlI3/lpGL/5OO
|
||||
hv+QjIP/kIuD/46Kgf+Lh3//gHx1/09NRP9CQTf/LCwk/wkJBv8QCQL0Fg0DTyMVBQAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAHl4dABycG0ooJ6a7Xd1cf9RT0r/amZg/3dzbP98eHH/f3t0/4F8dP+CfXX/jId//6Oe
|
||||
lv++urT/2NXQ/+fl4v/u7On/7u3q/+3r6P/q6OX/5+Xi/+Ti3//i4Nz/393Y/93a1f/a19L/19TP/9TR
|
||||
zP/Sz8j/0MzF/83Jwv/Kxr//x8O8/8TAuP/BvbT/vbiw/7mzq/+0sKj/s6+o/7Ovqf+qp6D/mZSM/42I
|
||||
gP+KhH3/hoJ7/2ViWv9DQjf/Ojkw/xUVEP8JBQH/GA0EoQIAAAcKBQIAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIKA
|
||||
fACHhYIogX977FFPS/9cWVT/b2tl/3ZybP96dm7/fHhw/4eCev+inpb/yMS//+Xj4P/z8vD/9vX0//Tz
|
||||
8f/x8O7/7+3q/+zq5//p5+T/5+Xi/+Xj3//j4N3/4N7Z/97b1v/b2NP/2NXQ/9bTzv/T0Mr/0c7H/87L
|
||||
xP/Mx8H/ycS9/8bCuv/Dv7f/wLyz/7+6sf++ubD/vLev/725sv/Fwrz/w8C7/6mlnv+OiYL/hYB5/3Zy
|
||||
a/9JRz7/QkE2/yYlHv8GBQP/EwsC5Q4GADMJAwAABgUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBuagB4dnIfV1VR2E1L
|
||||
R/9kYVv/cG1n/3Vxav97d3D/lZGK/8TBvP/o5+T/+Pf2//n49//29vT/9PPx//Lx7//w7+3/7u3q/+zq
|
||||
5//p5+T/5+Xi/+Xj3//j4d3/4d/a/9/c1//d2dT/2tbR/9fUz//U0cz/0s/I/9DMxf/NycL/y8a//8fD
|
||||
vP/Fwbn/wr61/8C8s//AvLP/wLuy/7+6sf/BvbT/zcrE/9bU0f+7uLP/j4uF/397c/9WVEz/QkE3/zQz
|
||||
Kv8VFRL/Ih0X/y8nH3wAAAABAQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtJRABMSUUXREI+yVJQS/9nZF//cG1m/315
|
||||
c/+npJ7/3NrX//b29P/5+fj/+Pf2//b19P/19PL/8/Lw//Lw7v/w7uz/7uzp/+zq5//p5+T/6OXi/+bj
|
||||
4P/j4d7/4d/b/9/d1//d2tX/29fS/9jVz//V0s3/09DJ/9HNxv/PysT/zMfA/8nFvv/Gwrv/xL+3/8K+
|
||||
tf/CvbX/wb20/8G8tP/AvLP/wr62/9TQy//l4+H/yMbC/4+LhP9pZV7/SEY9/19eVv90cm3/rKaf/2Ve
|
||||
VsoAAAAZGxYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVEPwBFQz4hRkRA41dUT/9oZV//fXp0/7a0sP/p6Ob/+fj3//j3
|
||||
9v/29fT/9fTz//X08v/z8vD/8vHv//Hv7f/v7uv/7uvo/+vp5v/p5+T/5+Xi/+bj4P/k4d3/4t/b/9/d
|
||||
2P/e2tX/29jT/9jV0P/W083/1NDL/9LOx//PzMT/zcjC/8vGv//Iw7z/xcG6/8TAuP/Ev7f/w7+2/8O/
|
||||
tv/DvrX/wr61/8bBuf/a2NP/7ezq/8PBvf9+enT/ZWJc/7q4s/9ubWj/T0xH/yIbFPYSCQJXGA4FABcK
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAExLRwBMS0clTEpH7VpXUv9zcGv/tbOv//Hx7//5+Pf/9vXz//Xz8v/08/H/9PPx//Py
|
||||
8P/y8e7/8e/t//Du6//u7On/7ern/+ro5f/p5uP/5+Xi/+bj4P/k4d3/4t/b/+Dd2P/e2tX/3NjT/9nW
|
||||
0f/X087/1dHL/9LPyP/QzcX/zsrC/8zHwP/JxL3/x8K7/8bCuv/Gwbr/xcG5/8XBuf/FwLj/xMC3/8S/
|
||||
t//Iw7z/4d7b//Lx8P+2tLD/Y2Bb/2NhWP9DQTj/FRUQ/wYDAP8YDgSmAAAACQYCAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBO
|
||||
SgBPTkolT01J7GRiXf+qqKT/7u3r//j39v/08/H/8/Lw//Py8P/y8e//8vHv//Hw7v/x7+3/8O7r/+/t
|
||||
6f/t6+j/7Onm/+ro5P/o5uP/5+Xh/+Xj3//k4d3/4t/b/+Dd1//e29b/3NjT/9rW0f/X1M7/1dLM/9PQ
|
||||
yf/Rzcb/z8vD/83Iwf/Lxr//ycS9/8nEvf/Iw7z/yMO8/8fDu//Hwrv/xsK6/8bBuv/Fwbn/zcnC/+7t
|
||||
6f/r6+n/jouH/0A+Nv9DQjf/Kikh/wgHBP8SCgLnFg0DMx4RBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBPSwBQT0slUlBM7IeF
|
||||
gf/g393/9/b1//Px7//y8O7/8vDu//Lw7v/x8O3/8e/t//Du7P/v7ur/7+3p/+7r6P/s6ub/6+jl/+nn
|
||||
5P/o5eL/5uTg/+Xj3v/j4dz/4t/a/+Dd1//f29b/3dnT/9vW0f/Y1M//1tLM/9TQyv/Szsf/0MzE/87J
|
||||
wv/Mx8D/zMa//8vGvv/Lxb7/ysW+/8rEvf/JxL3/ycS8/8jDvP/Hw7v/yMK7/9vY0v/5+Pf/wcC+/09N
|
||||
SP9ZV07/XlxU/xUUEP8LBgH+FAsCeyUWBgD/fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFNSTgBPTkolX15a7Le1s//z8vD/8/Hu//Dv
|
||||
7P/x7+z/8O/s//Dv7P/w7uv/8O7q/+/t6f/u7Oj/7evn/+3q5v/r6eX/6ufk/+jm4//n5eH/5uTg/+Xi
|
||||
3v/j4Nz/4t/Z/+Dd1//f3Nb/3dnT/9vX0f/Y1c//1tPN/9XRy//Tz8f/0c3F/8/Lw//OycL/zcnB/83I
|
||||
wf/Nx8D/zMfA/8zGv//Mxr//y8a//8vFvv/Kxb7/ycS9/8/Kw//t6+j/4uHg/2VkYP9YVk/9hoN9/z07
|
||||
Nf8FAwH/FAsDwgsEABMHAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFtZVgBRUEwlfHp37NrZ1//z8u//8O7q//Dt6v/w7er/7+3q/+/t
|
||||
6f/v7en/7+zo/+7s6P/t6+f/7enm/+zo5f/q6OT/6efj/+jl4v/n5OD/5uPf/+Xi3f/j4Nz/4t/Z/+Dd
|
||||
1//f3Nb/3dnU/9vX0f/Z1c//19PN/9XRy//T0Mj/0s7G/9HMxP/QzMT/0MzE/8/Lw//Py8P/z8rC/87J
|
||||
wv/OyMH/zcjB/83HwP/Mx8D/zMa//8zHv//e29b/7+7t/4uKh/45ODLrh4V//V9dVv8REQ3/CgUA8xQK
|
||||
AUccDwIABQMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAGlnZABbWlcmlZSR7ejm5P/x7+v/7+3p/+/t6P/v7en/7+3p/+7s6P/u7Oj/7uvn/+3q
|
||||
5//t6eb/7Onl/+ro5P/p5+P/6ebi/+jl4f/n5OD/5eLe/+Th3f/j4Nv/4t7Z/+Dd1//f3NX/3dnU/9zX
|
||||
0f/a1dD/2NTO/9bSy//U0Mn/08/H/9POx//Szsb/0s7G/9HNxf/RzcX/0czE/9DMxP/Qy8P/z8vD/8/L
|
||||
w//PysL/zsnC/83Iwf/W0sz/7uzq/6Oinv4zMi7CbWtk3ISBe/8sKyX/BgQB/xEJApQDAQACAQEAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJx
|
||||
bQBlZGAnoqGe7ezp5v/w7en/7uzn/+7s6P/u7Oj/7uzo/+7r5//u6uf/7erm/+3p5v/s6OX/6+jk/+rn
|
||||
4//p5uL/6OXh/+fk4P/m49//5eLe/+Th3f/j4Nv/4d7Y/+Dd1v/f3NX/3tnU/9zX0v/a1tD/2NTO/9fT
|
||||
zP/V0cv/1dHK/9XQyf/U0Mn/1M/I/9PPx//Tz8f/0s7G/9LOxv/SzcX/0c3F/9HNxf/QzMT/0MzE/8/L
|
||||
w//Tz8j/6Obi/6mnpP88OzecTkxFkoiGgP9WVE7/CQgG/w4HAdULBQEgBAEAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHt5dgBxcGwpq6mm7e3r
|
||||
6P/v7ej/7uzn/+7s5//u6+f/7urn/+7q5//t6ub/7enm/+zp5f/s6OT/6ufj/+nn4//p5uL/6OXh/+fk
|
||||
4P/m497/5eLd/+Th3P/j4Nr/4t7Y/+Hd1//g3NX/3tnU/93Y0v/b1tD/2dXO/9fTzf/X083/19LM/9bS
|
||||
zP/W0sv/1dHL/9XRyv/V0Mr/1NDJ/9TPyP/Tz8j/08/H/9POx//Szsb/0s3G/9HNxf/Uz8j/5ePe/6im
|
||||
ov9CQT2PJyYfOYOBe+h7eXP/IiEc/wUCAPgRCQFbIxICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIKBfQB7enYnr66q6u3r5//v7Of/7uvn/+7q
|
||||
5v/u6ub/7urm/+3q5v/t6eX/7enl/+zo5P/r6OP/6ufj/+nn4v/p5uH/6OXg/+fk3//m497/5eLd/+Th
|
||||
3P/j4Nr/4t7Y/+Hd1//g3Nb/39rU/93Y0v/c19H/29bQ/9vWz//a1c//2dXO/9nUzv/Y1M3/2NPN/9fT
|
||||
zP/X0sz/1tLM/9bSy//W0cv/1dHK/9XQyv/U0Mn/1NDI/9PPx//V0cn/4+Db/6Shnv9DQj56AAAABmJg
|
||||
Wp+Uko3/SEZA/wYFAv8KBACmDAIACAsDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHp3cwBsamYcpaKf0+fk4f/v6+f/7uvm/+7q5v/u6ub/7urm/+3p
|
||||
5f/t6eX/7Ojk/+zo5P/r6OP/6ufi/+nm4v/p5uH/6OXg/+fk3//m497/5uLd/+Xh3P/k4Nr/49/Y/+He
|
||||
1//g3Nb/39vU/97Z0//e2NL/3djS/93Y0v/c19H/3NfR/9vW0P/b1tD/29bP/9rVz//Z1c//2dTO/9jU
|
||||
zv/Y083/19PN/9fTzP/W0sz/1tLL/9bRy//X08z/39zX/5uYlPtGREBUW1lTADk3MkSPjYjsdXJs/xgX
|
||||
FP8FAQDeCgMAJgkDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAHFuagBQTUoKnZuWp93b1//w7ej/7+vm/+7q5v/u6ub/7urm/+7q5f/t6eX/7enk/+zo
|
||||
5P/s6OP/6ufi/+nm4v/p5uH/6OXg/+jk3//n497/5uLd/+Xh3P/k4Nv/49/Z/+Le1//h3db/4d3W/+Dc
|
||||
1f/g29T/39rU/9/a1P/e2dP/3tnT/97Y0v/d2NL/3dfR/9zX0f/c19H/29bQ/9rW0P/a1c//2dXP/9nV
|
||||
zv/Z1M7/2NTN/9jTzf/a1s//2dXP/5CNiOZGREEuRUM/AAAAAAt6eXOolJKO/z89N/8CAQD5BAAAZAUA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1q
|
||||
aACqp6IAkY6Kbs/Lx/zv7Of/7+zm/+/r5v/v6ub/7+rm/+7q5f/u6eX/7enk/+3o5P/s6OP/6+fi/+rn
|
||||
4v/p5uH/6eXg/+jk3//n497/5uPd/+bi3P/l4dv/5ODa/+Pf2f/j39j/4t7Y/+Le1//h3df/4d3W/+Hd
|
||||
1v/g3NX/4NzV/9/b1P/f29T/39rT/97Z0//e2NL/3djS/93Y0v/d19H/3NfR/9zW0P/b1tD/29bP/9rV
|
||||
z//c2NH/x8S+/316dbY8ODQOT0tHAGVjWQBQT0hQmJeT8nRxa/8SEQ7/AAAApAAAAAkAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL+4tACQjIkAhIF9Kri1
|
||||
sdvp5eD/8O3n//Ds5//v6+b/7+rm/+/q5f/u6eX/7unl/+3o5P/t6OP/7Oji/+zn4v/q5uH/6eXh/+nl
|
||||
3//o5N//5+Pe/+fj3f/m4t3/5uLc/+Xh2//l4dv/5ODa/+Tg2f/j39n/49/Y/+Pf2P/i3tf/4t7X/+Le
|
||||
1//h3db/4d3W/+Dc1f/g3NX/39vU/9/b1P/f2tT/3tnT/97Z0//d2NL/3djS/93X0f/b1tD/sK2n+nVy
|
||||
bmiloZkAQ0ZLACIhHAAAAAANkI+KspeUkP9APjn/AAAA3wAAACYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFg38AVlZSBJ6cl4bU0Mz+8Ozn//Ht
|
||||
5//x7ef/8Ozm/+/r5v/v6uX/7unl/+7p5P/u6eT/7ejj/+zo4v/s5+L/6ubh/+rm4f/p5eD/6eXg/+nl
|
||||
3//o5N//6OTe/+fj3v/n493/5uLd/+bi3P/m4tz/5eHb/+Xh2//k4Nr/5ODZ/+Tg2f/j39j/49/Y/+Le
|
||||
1//i3tf/4d3W/+Hd1v/h3db/4NzV/+Dc1f/f29T/39rU/9/a1P/OycP/mpeRxHZybRp+e3UAU1NTAAAA
|
||||
AADGwr0AeHZxT6imo/N5dnD/ERAO+QAAAGMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPytAAhoN9AIiGgCCyr6vI49/a//Dt5//x7ef/8e3o//Ds
|
||||
5//w6+b/8Ovm/+/r5f/v6uX/7+rl/+7p5P/u6eT/7ejj/+3o4//s6OL/6+fi/+vn4f/q5uH/6ubg/+nl
|
||||
4P/p5eD/6eXf/+jk3//o5N7/5+Pe/+fj3f/m4t3/5uLc/+bi3P/l4dv/5eHa/+Tg2v/k4Nn/49/Z/+Pf
|
||||
2P/j39j/4t7X/+Le1//h3db/4d3W/9vX0f+yr6nth4N+VJ6UlQB7e3IAAAAAAAUFAAAmJSIAPjw4DKup
|
||||
pq+hnpr/RUM+/wAAAKAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAADDwsIAGz0YALu4tQCWk5BKwb645erm4P/x7Of/8u7p//Lv6v/w7ef/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm/+/r5f/v6+X/7+vl/+/q5f/u6uT/7unk/+7o4//t6OP/7Oji/+zn4v/r5+L/6+bh/+rm
|
||||
4f/q5eD/6eXg/+nl3//o5N//6OTe/+fj3v/n493/5+Pd/+bi3f/m4tz/5eHc/+Xh2//k4Nr/5ODa/+Tg
|
||||
2f/j39n/4NzW/8C8t/uTkIqFdnRxCI2LhQDPz8EAAAAAAAAAAAAuLisA1dTRANXTzkmvrarzkIyG/xwb
|
||||
GdEAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAeHhvAHZ2cgANFBQCnpyWZ8vHwu7q5eD/8e3o//Pw7P/z8Ov/8e3n//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ovm/+/r5f/v6+X/7+rl/+7p5P/u6eT/7ejj/+3o4//s5+L/7Ofi/+vn
|
||||
4f/r5uH/6ubh/+rl4P/p5eD/6eXf/+jk3//o5N7/5+Pe/+fj3v/n493/5uLd/+bi3P/j39n/yMW//5mW
|
||||
kaNoZWERfn95AP///wAAAAAAAAAAAAAAAAAAAAAA0c3FAOPe1Q/KycazqaWh/3FtaPQODQxCLCooAK+n
|
||||
nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAH19
|
||||
eACRkIsAnJmVBaGfmmfBvrnl5uHc//Lu6f/18u7/9PHt//Hu6f/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/7+vl/+/q5f/u6uT/7unk/+7p5P/t6OP/7ejj/+zn
|
||||
4v/s5+L/6+fh/+rm4f/q5uD/6eXg/+nl4P/p5d//6eXf/+Pf2v/EwLv6m5eSm3p4cxuMioMAoKmXAH5z
|
||||
cwAAAAAAAAAAAAAAAAAAAAAA3NjSAN7c2QDh3ttQtbOx8bKtp/+inZaLZmFaAq6mngAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVkYoAlZONAFJY
|
||||
VQKZlZBOuLWw0dvX0v/v6+b/9fPv//b08P/z8Oz/8e3n//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ovm//Dr5v/v6+X/7+rl/+/q5f/u6eT/7unk/+3o
|
||||
4//t6OP/7Ofi/+zn4v/q5eD/3dnU/7u4s+uVkYx/dHNtD5SSjQAAAAAALCsqAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAODc1gDk3tYK2NbTn6qmo//HwLnTwbuyHbmyqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj42IAIaCfgD///8AiYeFK6ej
|
||||
n5/Hw77x5eHc//Tx7f/49vP/9/Tx//Pw7P/x7ej/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w6+b/8Ovm//Dr5v/v6uX/7unk/+bh
|
||||
3P/KxsH9qKahxIuJhU1UUE4Fe3lzAI6LhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
|
||||
/wDl4t4A7OnlLrCuqsOnpJ6e2NDJD763sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAH11cgCPgoEAkI6LAHdycAuXlJBUsq+ruMvH
|
||||
w/Xl4t7/9fPx//r49v/59/T/9fLu//Lv6v/x7ef/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8e3n/+/r5f/l4Nv/zsrF/bKuqdiTkIx7endzHK2m
|
||||
qwCHhH8Ah4N/ALa2tgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM/JxADLyMEA4+DYAb26
|
||||
sxOmpJ4NuLGrAL63sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AY2VzAIyIhQCxq6cAiIaDE5qYlFauq6exxsTA6dza
|
||||
1//v7ev/+Pf1//r59//49vP/9vPv//Tw7P/y7+r/8u7p//Hu6P/x7ef/8e3n//Ht5//x7ef/8e3n//Hu
|
||||
6P/y7uj/8O3n/+3p4//m4tz/2tbR/8bCvfauq6bGmJWQeICAeigAAAABiYeCAHh4cADJyLwAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX1M8A6ebhALm2sACmpJ4AAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJSUjgCanJYAkI2KALy4swBqamkLjoyIN6OhnXSysKy3xsTA39bU
|
||||
0ffi4d7/7Orn//Du7P/z8O3/8/Dt//Lw7P/x7ur/8Ozo/+/r5//u6uX/6OXg/+Lf2v/Z1dD/zMjD/b67
|
||||
t+etqqbJn5yXko6MiExwb2sY////AI2MhQB+fHoAlpOPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAADAwMAP///wCEgoEAlJGPAP///wBcW1kJe3p2LJGPi1KjoZ13rKmmmrKv
|
||||
rLq5trPRvLq33L27t+C6uLTlt7Wx4ra0sNuyr6vYqKaiwaGemqeal5OEjouHYHx6djhraGcSAAAAAZqY
|
||||
kwB+fHgAXmBeAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAD///8Axse9ADUzMQBqa2oAfHt4AJCOigD///8AOjs5BmJgXg1+fHoThYSAFYB/
|
||||
eiF6eXUvenl2JoSDgBV8enYUZmVhDklHRQkAAAAClZKOAHx5dQBwbWwAeHd1AHJvbAD07OQABQUFAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQUwB4eHUAenl3AIOBfwCUko8AmZeUAI+OigCGhYEAiIaDAJeV
|
||||
kgCQjooAgn98AHRybwBwb2kAc3NsAP///wAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////8AAAD///////////8A
|
||||
AAD/////AH////8AAAD////AAAD///8AAAD///wAAAAf//8AAAD///gAAAAP//8AAAD//+AAAAAB//8A
|
||||
AAD//4AAAAAA//8AAAD//wAAAAAAf/8AAAD//gAAAAAAP/8AAAD//AAAAAAAH/8AAAD/+AAAAAAAD/8A
|
||||
AAD/8AAAAAAAB/8AAAD/8AAAAAAAB/8AAAD/8AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8A
|
||||
AAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8A
|
||||
AAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8A
|
||||
AAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8A
|
||||
AAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAAf8AAAD/4AAAAAAAAf8AAAD/4AAAAAAAAP8A
|
||||
AAD/4AAAAAAAAP8AAAD/4AAAAAAAAP8AAAD/4AAAAAAAAH8AAAD/4AAAAAAAAH8AAAD/4AAAAAAAAH8A
|
||||
AAD/4AAAAAAAAD8AAAD/4AAAAAAAAD8AAAD/4AAAAAAAAB8AAAD/4AAAAAAAAB8AAAD/4AAAAAAAAA8A
|
||||
AAD/4AAAAAAAAA8AAAD/4AAAAAAAAA8AAAD/4AAAAAAAAAcAAAD/4AAAAAAAAAcAAAD/4AAAAAAAAAcA
|
||||
AAD/4AAAAAAAAAMAAAD/4AAAAAAAAAMAAAD/4AAAAAAAAAMAAAD/4AAAAAAAAAMAAAD/4AAAAAAAAAEA
|
||||
AAD/8AAAAAAABAEAAAD/8AAAAAAABgEAAAD/+AAAAAAABwAAAAD/+AAAAAAADwAAAAD//gAAAAAAH4AA
|
||||
AAD//wAAAAAAP4AAAAD//wAAAAAAf4AAAAD//4AAAAAA/8EAAAD///AAAAAD//8AAAD///wAAAAP//8A
|
||||
AAD///4AAAA///8AAAD////gAAP///8AAAD///////////8AAAD///////////8AAAD///////////8A
|
||||
AAA=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
|
After Width: | Height: | Size: 8.1 KiB |
|
After Width: | Height: | Size: 148 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
After Width: | Height: | Size: 116 KiB |
|
After Width: | Height: | Size: 136 KiB |
|
After Width: | Height: | Size: 840 KiB |
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
|
@ -0,0 +1,225 @@
|
|||
using ComponentFactory.Krypton.Toolkit;
|
||||
using DBCHM.Common;
|
||||
using DocTools;
|
||||
using DocTools.Dtos;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
|
||||
namespace DBCHM
|
||||
{
|
||||
public partial class ImportForm : KryptonForm
|
||||
{
|
||||
public ImportForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
CheckForIllegalCrossThreadCalls = false;
|
||||
|
||||
//为KeyDown能应用到所有控件上 注册 KeyDown 事件
|
||||
foreach (Control control in this.Controls)
|
||||
{
|
||||
control.KeyDown += control_KeyDown;
|
||||
}
|
||||
}
|
||||
public void control_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Escape)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
|
||||
private void ImportForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
txtExplain.Text = @"本工具目前支持 pdm/xml 文件来 进行更新批注(注释):
|
||||
pdm 由powerdesigner设计数据库时产生。
|
||||
xml 由visual studio设置 实体类库的项目属性,勾选 XML文档文件 后生成项目时产生。
|
||||
xml 由dbchm的 XML导出 而产生。";
|
||||
}
|
||||
|
||||
private void BtnBrow_Click(object sender, EventArgs e)
|
||||
{
|
||||
var openFileDialog = new OpenFileDialog
|
||||
{
|
||||
//支持 pdm,实体类注释产生的xml文档,dbchm导出的xml文件
|
||||
Filter = "支持文件类型(*.pdm;*.xml)|*.pdm;*.xml|PowerDesigner文件(*.pdm)|*.pdm|xml文件|*.xml",
|
||||
Multiselect = true
|
||||
};
|
||||
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
txtMulItem.Text = string.Join("\r\n", openFileDialog.FileNames);
|
||||
}
|
||||
}
|
||||
|
||||
private void BtnUpdateDisplayName_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (DBUtils.Instance == null)
|
||||
{
|
||||
MessageBox.Show("更新批注,需连接数据库,请切换到要更新批注的数据库!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
|
||||
return;
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(txtMulItem.Text))
|
||||
{
|
||||
MessageBox.Show("请先选择批注数据文件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
FormUtils.ShowProcessing("正在更新批注到数据库,请稍等......", this, arg =>
|
||||
{
|
||||
string[] paths = txtMulItem.Text.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
foreach (string ph in paths)
|
||||
{
|
||||
string extName = Path.GetExtension(ph).ToLower();
|
||||
try
|
||||
{
|
||||
if (File.Exists(ph))
|
||||
{
|
||||
if (extName == ".pdm")
|
||||
{
|
||||
UpdateCommentByPDM(ph);
|
||||
}
|
||||
else if (extName == ".xml")
|
||||
{
|
||||
UpdateCommentByXML(ph);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "出错", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
MessageBox.Show("更新表列批注完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
|
||||
FormUtils.IsOK_Close = true;
|
||||
this.Close();
|
||||
|
||||
}, null);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 通过pdm文件更新批注
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
void UpdateCommentByPDM(string path)
|
||||
{
|
||||
var lstTabs = GetTables(path);
|
||||
var dbInfo = DBUtils.Instance?.Info;
|
||||
foreach (var tab in lstTabs)
|
||||
{
|
||||
string tab_Comment = tab.Name;
|
||||
if (!string.IsNullOrWhiteSpace(tab_Comment)
|
||||
&& !tab.Code.Equals(tab_Comment, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
dbInfo.SetTableComment(tab.Code, tab_Comment);
|
||||
}
|
||||
var lstCols = tab.Columns;
|
||||
foreach (var col in lstCols)
|
||||
{
|
||||
string col_Comment = col.Name;
|
||||
if (!string.IsNullOrWhiteSpace(col_Comment)
|
||||
&& !col.Code.Equals(col_Comment, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
dbInfo.SetColumnComment(tab.Code, col.Code, col_Comment);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static IList<PdmModels.TableInfo> GetTables(params string[] pdmPaths)
|
||||
{
|
||||
List<PdmModels.TableInfo> lstTables = new List<PdmModels.TableInfo>();
|
||||
var pdmReader = new PDM.PdmReader();
|
||||
foreach (string path in pdmPaths)
|
||||
{
|
||||
if (File.Exists(path))
|
||||
{
|
||||
var models = pdmReader.ReadFromFile(path);
|
||||
lstTables.AddRange(models.Tables);
|
||||
}
|
||||
}
|
||||
lstTables = lstTables.OrderBy(t => t.Code).ToList();
|
||||
return lstTables;
|
||||
}
|
||||
|
||||
void UpdateCommentByXML(string path)
|
||||
{
|
||||
var xmlContent = File.ReadAllText(path, Encoding.UTF8);
|
||||
if (xmlContent.Contains("ArrayOfTableDto"))
|
||||
{
|
||||
//通过 dbchm 导出的 XML文件 来更新 表列批注
|
||||
|
||||
XmlDocument doc = new XmlDocument();
|
||||
doc.LoadXml(xmlContent);
|
||||
|
||||
var dbName = doc.DocumentElement.GetAttribute("databaseName");
|
||||
|
||||
if (!DBUtils.Instance.Info.DBName.Equals(dbName, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (MessageBox.Show("检测到数据库名称不一致,确定要继续吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var lstDTO = typeof(List<TableDto>).DeserializeXml(xmlContent) as List<TableDto>;
|
||||
|
||||
foreach (var tabInfo in lstDTO)
|
||||
{
|
||||
if (DBUtils.Instance.Info.IsExistTable(tabInfo.TableName) && !string.IsNullOrWhiteSpace(tabInfo.Comment))
|
||||
{
|
||||
DBUtils.Instance.Info.SetTableComment(tabInfo.TableName, tabInfo.Comment);
|
||||
}
|
||||
|
||||
foreach (var colInfo in tabInfo.Columns)
|
||||
{
|
||||
if (DBUtils.Instance.Info.IsExistColumn(tabInfo.TableName, colInfo.ColumnName) && !string.IsNullOrWhiteSpace(colInfo.Comment))
|
||||
{
|
||||
DBUtils.Instance.Info.SetColumnComment(tabInfo.TableName, colInfo.ColumnName, colInfo.Comment);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
//通过 有 VS 生成的 实体类库 XML文档文件 来更新 表列批注
|
||||
|
||||
XmlAnalyze analyze = new XmlAnalyze(path);
|
||||
|
||||
var data = analyze.Data;
|
||||
|
||||
foreach (var item in data)
|
||||
{
|
||||
if (DBUtils.Instance.Info.IsExistTable(item.Key.Key) && !string.IsNullOrWhiteSpace(item.Key.Value))
|
||||
{
|
||||
DBUtils.Instance.Info.SetTableComment(item.Key.Key, item.Key.Value);
|
||||
}
|
||||
|
||||
foreach (var colKV in item.Value)
|
||||
{
|
||||
if (DBUtils.Instance.Info.IsExistColumn(item.Key.Key, colKV.Key) && !string.IsNullOrWhiteSpace(colKV.Value))
|
||||
{
|
||||
DBUtils.Instance.Info.SetColumnComment(item.Key.Key, colKV.Key, colKV.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
namespace DBCHM
|
||||
{
|
||||
partial class ImportForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ImportForm));
|
||||
this.txtMulItem = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.BtnBrow = new System.Windows.Forms.Button();
|
||||
this.BtnUpdateDisplayName = new System.Windows.Forms.Button();
|
||||
this.GP_Import = new System.Windows.Forms.GroupBox();
|
||||
this.gpxDesc = new System.Windows.Forms.GroupBox();
|
||||
this.txtExplain = new System.Windows.Forms.TextBox();
|
||||
this.GP_Import.SuspendLayout();
|
||||
this.gpxDesc.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// txtMulItem
|
||||
//
|
||||
this.txtMulItem.Location = new System.Drawing.Point(77, 26);
|
||||
this.txtMulItem.Multiline = true;
|
||||
this.txtMulItem.Name = "txtMulItem";
|
||||
this.txtMulItem.ReadOnly = true;
|
||||
this.txtMulItem.Size = new System.Drawing.Size(497, 71);
|
||||
this.txtMulItem.TabIndex = 7;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(6, 50);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(65, 12);
|
||||
this.label1.TabIndex = 6;
|
||||
this.label1.Text = "文件路径:";
|
||||
//
|
||||
// BtnBrow
|
||||
//
|
||||
this.BtnBrow.Location = new System.Drawing.Point(178, 18);
|
||||
this.BtnBrow.Name = "BtnBrow";
|
||||
this.BtnBrow.Size = new System.Drawing.Size(104, 36);
|
||||
this.BtnBrow.TabIndex = 5;
|
||||
this.BtnBrow.Text = "选择(可多选)";
|
||||
this.BtnBrow.UseVisualStyleBackColor = true;
|
||||
this.BtnBrow.Click += new System.EventHandler(this.BtnBrow_Click);
|
||||
//
|
||||
// BtnUpdateDisplayName
|
||||
//
|
||||
this.BtnUpdateDisplayName.Location = new System.Drawing.Point(371, 18);
|
||||
this.BtnUpdateDisplayName.Name = "BtnUpdateDisplayName";
|
||||
this.BtnUpdateDisplayName.Size = new System.Drawing.Size(104, 36);
|
||||
this.BtnUpdateDisplayName.TabIndex = 8;
|
||||
this.BtnUpdateDisplayName.Text = "更新表列批注";
|
||||
this.BtnUpdateDisplayName.UseVisualStyleBackColor = true;
|
||||
this.BtnUpdateDisplayName.Click += new System.EventHandler(this.BtnUpdateDisplayName_Click);
|
||||
//
|
||||
// GP_Import
|
||||
//
|
||||
this.GP_Import.Controls.Add(this.label1);
|
||||
this.GP_Import.Controls.Add(this.txtMulItem);
|
||||
this.GP_Import.Location = new System.Drawing.Point(5, 59);
|
||||
this.GP_Import.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.GP_Import.Name = "GP_Import";
|
||||
this.GP_Import.Padding = new System.Windows.Forms.Padding(2);
|
||||
this.GP_Import.Size = new System.Drawing.Size(584, 113);
|
||||
this.GP_Import.TabIndex = 9;
|
||||
this.GP_Import.TabStop = false;
|
||||
this.GP_Import.Text = "批注数据导入";
|
||||
//
|
||||
// gpxDesc
|
||||
//
|
||||
this.gpxDesc.Controls.Add(this.txtExplain);
|
||||
this.gpxDesc.Location = new System.Drawing.Point(5, 177);
|
||||
this.gpxDesc.Name = "gpxDesc";
|
||||
this.gpxDesc.Size = new System.Drawing.Size(584, 100);
|
||||
this.gpxDesc.TabIndex = 10;
|
||||
this.gpxDesc.TabStop = false;
|
||||
this.gpxDesc.Text = "使用说明";
|
||||
//
|
||||
// txtExplain
|
||||
//
|
||||
this.txtExplain.ForeColor = System.Drawing.Color.Black;
|
||||
this.txtExplain.Location = new System.Drawing.Point(7, 20);
|
||||
this.txtExplain.Multiline = true;
|
||||
this.txtExplain.Name = "txtExplain";
|
||||
this.txtExplain.ReadOnly = true;
|
||||
this.txtExplain.Size = new System.Drawing.Size(571, 73);
|
||||
this.txtExplain.TabIndex = 0;
|
||||
//
|
||||
// ImportForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(595, 282);
|
||||
this.Controls.Add(this.gpxDesc);
|
||||
this.Controls.Add(this.GP_Import);
|
||||
this.Controls.Add(this.BtnUpdateDisplayName);
|
||||
this.Controls.Add(this.BtnBrow);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "ImportForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "批注上载";
|
||||
this.Load += new System.EventHandler(this.ImportForm_Load);
|
||||
this.GP_Import.ResumeLayout(false);
|
||||
this.GP_Import.PerformLayout();
|
||||
this.gpxDesc.ResumeLayout(false);
|
||||
this.gpxDesc.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TextBox txtMulItem;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Button BtnBrow;
|
||||
private System.Windows.Forms.Button BtnUpdateDisplayName;
|
||||
private System.Windows.Forms.GroupBox GP_Import;
|
||||
private System.Windows.Forms.GroupBox gpxDesc;
|
||||
private System.Windows.Forms.TextBox txtExplain;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,487 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEASEgAAAEAIACIVAAAFgAAACgAAABIAAAAkAAAAAEAIAAAAAAAAFEAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8vLwA+LS4ASkVBAEtL
|
||||
RABLS0YAS0tEAElHQgBAQD8APz8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAE1KQwBMSUMAU1BLAFtYUgBdWlQAXVxVAGBeWABramMADggHAyotJQYpKykFKiwlBiEf
|
||||
HQSAfXIAYF5ZAF9cVgBcWlQAWVdRAFZUTgBNTEYAQjc6AEc/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0xJAAAAAABQSUEAQ0E+AFVS
|
||||
TACEhYEAREE9CFVRTBVaV1A1WllSVl5cVm9iX1mCZmNdlGhmX5tpZ2CbaGZfm2VjXJhhX1mFX1xXdVxa
|
||||
VF1ZVlFAVFFLHkpKQwwABAABW1pRAEtJQgAbJBgARUU5AElJPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBPzwAODY1AFFPSQCFgnYAREM/DVZTTjlcWlRwYV9YqGdl
|
||||
X9RvbGXodXJr9Hl2b/59enL/hIB4/4eEfP+JhX3/iIR9/4WBev9/fHT/e3dw/3d0bfdyb2jsamdh3WRh
|
||||
W7heXFWDWFVPSktKQxUAAAABWVZTAEhFQwBPS0kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAT01HAExKRABYVk8AAAAAAk9NSCZbWVNwYmBavmxpYul0cWr/fnpy/4eDe/+Pi4L/lZCI/5qV
|
||||
jP+dmZD/oZyT/6Self+ln5f/paCX/6Oflf+gm5L/nZiP/5qVjP+UkIj/jomB/4WBev96d3D/cG1m8mVj
|
||||
XcxbWlOJU1BLOz07OwhcWlQATk1GAGdmWQAvLy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9NSAAAAAAAU1FMAP//
|
||||
/wBQTkgsWFZQimJgWdlua2T+e3dw/4eDe/+RjIT/mJOL/56ZkP+inZT/pJ+X/6ehmP+po5r/qqSb/6ul
|
||||
nP+rpZz/rKad/6ymnf+rpZz/qqSb/6mkm/+oopn/pZ+W/6Cbkv+alYz/kIyE/4SAef92c2z/aGVf6l1b
|
||||
VaVTUUtBQ0M7BldVTgBIRj8AT0xHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASkI/ADwxLQBTUEwAT05IE1lXUW9fXVfaamdh/3l1
|
||||
bv+Ggnv/kY2F/5mUi/+dmI//oJuS/6KdlP+kn5b/pqGY/6eimf+po5r/qqSb/6ulnP+rpZz/q6Wc/6ym
|
||||
nf+rpZz/q6Wc/6ulnP+qpJv/qaOa/6eimf+loJf/op2T/5yXj/+Tj4b/hoJ6/3Vya/9kYlzsV1VPk09O
|
||||
SCZbXFsAS0dCAExHQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAABFRT8ARUI9AG1xaQBRTUkvWVdSrWNgWvpxbmf/gHx1/4yIf/+Uj4f/mZOL/5yW
|
||||
jv+emZD/oJuS/6KdlP+kn5X/paCX/6ahmP+moJf/pqCX/6Wflv+inZT/op2U/6Wflv+nopj/qKKZ/6mj
|
||||
mv+qpJv/qKOa/6eimf+loJf/pJ+V/6Kdk/+empH/mZSL/46Kgv9/e3T/a2hi/1pYUs5NTEZTQjs3BEhH
|
||||
QQBHR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVF
|
||||
PwBHRkAAoJKOAFJQSUdYVlDPZGFb/3Zya/+EgHj/jYmA/5KOhf+VkYn/mZOL/5uWjf+dmI//npmQ/5yX
|
||||
jv+Yk4r/ko2E/4qFff+BfHT/fHhw/3Vxaf9taWL/a2hg/3JuZv94dGz/e3hv/4aBef+Qi4P/mZSM/5+a
|
||||
kf+inZT/o56U/6Gdk/+fm5H/nZiP/5qUjP+SjYX/hYF5/3BtZv9bWVPtTkxIcjw9OQZCQj0AOjo1AAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATk1IAEdHQQCdjYwATUxGS1RS
|
||||
TN5iX1n/dnJr/4R/eP+Lh37/j4qC/5GNhP+UkIj/l5GJ/5aQiP+RjIP/iYR8/4B7c/92cWn/bmli/2hk
|
||||
Xf9iXlf/XVlT/11ZU/9dWVP/WlZR/1VRTP9UUUv/V1RN/1tXUf9hXVb/bGdg/3dya/+GgXj/k46F/5qV
|
||||
jP+dmI//nJeO/5qVjf+Xkor/kY2F/4aCev9zcGj/W1lU80lIQ3MtLigGOzo2AD48OgAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pz8ATktFAE1KRwBMSkU8T01I3F5bVv9yb2j/gHx1/4eC
|
||||
e/+Lhn7/jomB/5CLg/+Qi4P/jId+/4WAd/9/eXH/fHdv/355cf+Dfnb/iIN7/4+Kgv+RjYX/ko2G/5iT
|
||||
i/+dl4//m5aO/5GMhf+Mh4D/i4Z//4SAeP99eXH/dnJr/3BsZf9vamP/dXBp/4B7c/+MiH//lpCI/5iS
|
||||
iv+WkYn/k4+H/4+Kgv+EgHj/cW1n/1dVT/NEQj5wMjAvBD8+OwBGRkQAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAADGu4cATkxFAEpIQxtLSkW/V1VP/21pY/97d3D/gn52/4WBev+JhHz/i4V9/4uF
|
||||
fP+Jg3r/iYN6/4+JgP+ZlIz/paCX/6+qov+1saj/uLOr/7u2rv+8t67/vLiv/724r/+9uK//vLev/7u2
|
||||
rv+6taz/ubOr/7axqP+yraX/raif/6Sfl/+YlIz/kIuD/4yHf/+Lh3//jYiA/5CLgv+SjYX/kY2E/4+L
|
||||
gv+Lhn7/f3t0/2lmYP9OTEfqQkE9TT87NgBKS0kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AABISEQAT1JRAkZEQH1OTEb9ZGFb/3Vxa/98eXH/gHx1/4N/d/+Ef3f/hoB4/4+JgP+dmI//r6qj/765
|
||||
sf/Gwrr/ycS9/8jDvP/Fwbn/wr61/8K9tP/CvbT/wb20/8G9tP/BvLP/wLyz/8C7sv+/u7L/vrqx/765
|
||||
sP++ubD/vbiv/7y3rv+6taz/tbCo/7Cro/+sp5//pKCa/6Kdl/+Yk4v/kIuD/42IgP+Lhn7/hYF5/3dz
|
||||
bP9dW1X/R0ZBx0ZFQx9FREEAWlpaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtHQwBGRT8ARUQ+KEdF
|
||||
QNpYVVD/bWlj/3dzbP97d3D/fXly/396cv+KhX3/pKCY/7+7tP/OysX/0s7I/8/Lw//Lx8D/ycS9/8fD
|
||||
u//Fwbn/xcC4/8S/t//AvLP/u7au/7q2rv+6tq7/ubWt/7m1rP+7tq7/wLyz/8C8s//AvLP/wLyz/8C7
|
||||
sv+/urH/vrmw/724sP+9uK//l5ON/7Cspv++u7b/r6ul/5eSi/+JhHz/hYF5/356c/9raGH/UE5J/ENC
|
||||
P3UAAAAAXl5eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtHQwBAQDoAREI9cUtIQ/1hXlj/cGxm/3Vx
|
||||
a/94dG3/gX11/52Ykf/Bvbf/19PO/9fUzv/Szsf/zcjB/8rGvv/FwLn/ubWu/6+ro/+empP/kY2H/4aD
|
||||
fP+Cf3j/gn54/4SAef+EgXr/hIB5/4J/eP+AfXb/gn95/4uIgf+Xk4z/pqKa/7Gtpf+6tq3/wbyz/8C8
|
||||
s//AvLL/rquk/52Ykv/Fwrr/z83I/8bDv/+gnZf/hoF6/397c/9zb2j/WldS/0NBPchAQD8bQkJBAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtJRQBPTkkMQ0E9rFBOSf9mY13/cG1n/3ZybP+MiIL/uLaw/9rX
|
||||
0//d29b/1NHK/9DKw//Iw7z/ubSt/52ak/+Jhn//endx/3Rxav94dW7/fXpz/4F9dv+Ggnr/jIiA/5CL
|
||||
g/+RjYT/kYyE/4+Lg/+Khn7/hIB4/4B8df97d3D/dHFr/3Zzbf+Bfnf/kY6H/6umnv+7tq7/yMS9/5qV
|
||||
kf+8tq7/xsK7/9nX0v/X1dL/p6Oe/4F9dv92cmv/Yl9Z/0ZEQO87OjhFNDIvAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAEZEQABGREAdRUM/2FVSTv9oZV//c3Bq/5aTjv/Pzcr/5+Xi/93a1P/Tz8j/ycW9/62o
|
||||
ov+Lh4H/dXJs/3Vxa/97eHH/hoN7/4+Lg/+Wkon/m5aO/5+bkf+inpT/paCX/6eimf+oo5r/qaOa/6ij
|
||||
mv+moZj/o56V/6Cbkv+bl47/lZGI/46Jgf+Cf3f/eHVu/3Rxav9+e3T/qqaf/62ppP+qpZ3/v7qx/8nF
|
||||
vv/i4Nz/4N/d/6eln/96dm//ZmNd/0lHQ/06OTdsNDMrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEpI
|
||||
RABJSEQkSkhE7FlWUf9raGP/mJaR/9va1//q5+T/3NnT/87Kw/+tqqP/hoN9/3FuZ/90cGr/gX52/42I
|
||||
gP+WkYj/nJeO/6Cbkv+jnpX/paCX/6eimf+po5r/qqSb/6ulnP+rpZz/rKad/6ymnf+spp3/q6Wc/6qk
|
||||
nP+po5r/pqGY/6Oelf+emZD/lpGJ/4uHf/98eHH/fntz/66rpf9tamT/Y2Ba/7ezq//NycP/6Ofk/+Xk
|
||||
4/+fnJf/aWZg/0xJRf85NzWDXVhLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5NSQBOTUklTkxI7F1b
|
||||
Vv+Ni4b/2tjV/+3r6f/d2dP/vrqz/4eEfv9qZ2H/cW1m/397dP+MiH//lZCH/5qVjf+emZD/oJuS/6Kd
|
||||
lP+kn5b/pqGX/6eimf+po5v/qqSb/6ulnP+rpZz/rKWc/6ymnf+spp3/q6Wc/6ulnP+qpJv/qaOa/6ei
|
||||
mf+loJf/o56U/5+ZkP+Xkon/i4d//25rY/8wLyj/Dg0L/3Rxbf/Ev7j/1dLM//X08//X1dP/fHl0/0xK
|
||||
Rf82NTKZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBPSwBPTkolUE5L7HNwbf/KyMb/7+7r/9zZ
|
||||
0/+tqqT/cG1n/2RhW/91cmv/hYF5/4+Lg/+VkYj/mZSM/5yWjv+emZD/oJuS/6Kdk/+jnpX/pJ+V/6Oe
|
||||
lf+hnJT/oZuS/52Xjv+blY3/mpWM/5yXjv+hnJP/o56U/6agmP+oopn/qKKZ/6eimP+loJf/pJ+V/6Kd
|
||||
k/+fm5H/nJeO/3BtZf83Ni3/FRQQ/xsaGP+Cf3n/wLy1/+Xi3v/29vX/qaek/09NSf8yMS6aAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJRTABPTkolWFZS7KKgnv/q6Ob/4d3Z/6Sgmv9kYlv/ZmNd/3l1
|
||||
bv+Hgnv/joqB/5KOhf+VkIj/mZOL/5uVjf+cl47/m5aN/5eSif+QjIP/iIN7/396cv92cWr/cGxl/2hj
|
||||
Xf9jX1j/YV1X/2NfWf9rZl//cGxl/3p2b/+FgXn/kIuD/5mUi/+fmpD/oZyT/6Gck/+fmpH/npmQ/4iD
|
||||
fP9IRz3/JSQd/wcGBf8zMi//fnt1/8XBuv/08/H/1NPR/19dWf8wLiyZAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAFZVUQBQTkolbGpn7MvJxv/o5eL/op+a/1xaVP9kYVv/eHRt/4WBef+Lh3//joqC/5GN
|
||||
hP+Uj4f/lZCI/5ONhf+Mh37/g311/3p1bf9xbWX/bWhh/2llXv9lYVr/ZGFa/2djXP9lYVr/Y19Z/2Fd
|
||||
WP9bV1L/WlZR/11YUv9fW1X/ZmFb/29rY/98d2//ioV9/5aRiP+bl43/nJaO/5eRif9VU0r/NDMq/w4O
|
||||
Cv8VFBP/UlBL/3t4cv/Z1tL/6+vp/3p5df8wLy2ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJg
|
||||
XABXVVEliIaD7d/d2v+0saz/W1lT/2BeWP90cWr/gX12/4eCe/+Khn7/jYmA/4+Kgv+OiYH/iYR7/4N9
|
||||
dP+AenL/gXxz/4aBef+NiYH/lZCJ/5yXj/+emZH/op2V/6eimv+nopr/p6Ka/6WgmP+dmJD/mZSM/5OP
|
||||
h/+Khn7/gn12/3l1bf91cGj/dnJq/355cv+Ig3v/kYyD/5aRiP9qaGD/PTwy/x8eGP8FBAP/QDw3/1xa
|
||||
VP+KiIT/5+bk/5eVkv81NTKZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9uagBiYV0nn56b7cnH
|
||||
xP9mZF//WldR/3BtZv98eHH/gX52/4WBev+Ig3z/iYN7/4qEe/+KhHv/joiA/5iTi/+moZn/s66m/7u2
|
||||
rv++urL/vrqx/7+7sv/Au7L/wLuy/7+7sv+/urH/v7qx/765sP+9ubD/vbiv/7u2rv+5tKv/tbCo/6+q
|
||||
of+nopn/nZiR/5aSi/+Tj4j/kIyE/5GMhP98eHD/RUQ6/y8uJv8KCgb/HRkW/2FdV/9ZV1L/qKek/6Wj
|
||||
oP89PDmaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzcABraWYooZ+c7YiGgv9RTkn/aGRe/3Zy
|
||||
a/98eHH/gHx0/4J+dv+CfnX/iIN6/5iTiv+sp6D/vbix/8fDvP/Lxr//y8a//8nEvP/Fwbn/w762/8K+
|
||||
tf/CvrX/wr21/8K+tf/CvbT/wb20/8C8s//Au7L/v7uy/7+6sf++urH/vrmw/724sP+8t6//urSs/7aw
|
||||
qP+yraX/sKyl/66qpP+dmJL/VlVM/zo5L/8YFxL/CAUD/0xIQv9iYFn/Y2Fd/4qJhf9DQj6YAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIF+ewCCgH0pioiF7VdVUP9aV1L/bmpk/3dzbP96d2//fHhx/4F8
|
||||
dP+Sjob/sKyl/8nFv//U0cv/0s7I/83Jwv/Kxr7/yMS8/8bCuv/Dv7f/wby0/765sf+1san/sq2l/6mm
|
||||
nv+opJz/p6Sc/6+ro/+yrqb/uLSs/7y4r/++ubD/v7uy/8G8s//Au7L/v7qx/765sP+8uK//vLev/766
|
||||
tP/Fwr3/goB6/0JBN/8oKCD/BgUD/yYhG/9lYVv/VVNN/1dWUv9DQj6H////AAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAHh2cgCDgH0hX11Z3k1KRv9iX1r/cG1m/3Vxav95dG3/h4N8/6yoov/Pzcj/2tfS/9bS
|
||||
zP/Qy8T/zMfA/8jDvP+8uLH/rKmi/5uYkf+NioL/gH13/3h1b/94dW7/fHhx/3p3cP96d3D/endv/3x5
|
||||
cv96d3D/eHVu/3t4cv+HhH3/lJCJ/6OfmP+wrKT/vrqx/8G8s//AvLP/v7qx/766sf/Fwbr/sa6p/09O
|
||||
Rf82Niz/EREN/wwIBP9QS0P/XVpV/0A+Ov0zMzBoPzw3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJP
|
||||
SwBWU08YRkRBy1FPSv9nZF7/cGxm/3h0bv+Xk47/x8XA/+De2v/d2tX/08/I/87Jwv/Au7T/qaSe/4uH
|
||||
gf97eHL/dXJs/3Vya/98eXH/g394/4mFff+OioH/k46G/5eSiv+ZlIv/mZSL/5eSiv+Tjob/jYmB/4iE
|
||||
ff+Cfnf/endv/3VybP94dW//goB5/5qXj/+wraT/v7qy/8K9tP/BvbT/vrmy/2tpYf8+PTP/ISEa/wUD
|
||||
Af8tJx//XltV/0RCPvw3NjNbKigjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZEPwBGQz8fRkQ/3lZT
|
||||
T/9oZV//dnNt/6OhnP/a2NX/5+Tg/9rWz//QzMT/vbmx/5eUjf96d3D/cW1n/3h0bf+Cfnb/jIiA/5SQ
|
||||
iP+alo3/n5qR/6OelP+loJf/qKKZ/6mkm/+qpJv/q6Wc/6qlnP+po5r/p6GY/6Wflv+hnJP/nJeO/5WQ
|
||||
iP+Lh3//f3x0/3Rxav9zcGn/h4R9/6qmnv+/u7L/xcC4/4yJgf9FRDr/MTAo/wsLCP8TDQf/TEdA/0tJ
|
||||
RP47OTZxNzUvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtJRQBLSUUlS0lF7FpXUv9va2b/paOf/+Tj
|
||||
4P/n5eH/2NTO/8XAuf+Zlo//dXJs/25rZf95dW7/h4N7/5GMhP+ZlIv/npmQ/6Gck/+kn5b/paCY/6ei
|
||||
mf+po5r/qqSb/6ulnP+rpZz/rKad/6ymnf+spp3/q6Wc/6ulnP+qpJv/qKKZ/6Wgl/+hnJP/m5aN/5KN
|
||||
hP+EgHj/dXFq/3BtZ/+Fgnv/r6uj/6+ro/9SUUf/PDwy/xoaFP8GAwD/MSoi/0lHQv85NzWHcGlYAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9NSQBPTUklT01J7GBeWf+cmpb/4+Lg/+ro5P/X083/r6ul/3p3
|
||||
cf9pZmD/dnJr/4SAef+Pi4P/l5GJ/5uWjv+emZD/oJuS/6KdlP+kn5X/pqGX/6eimf+po5r/qqSb/6qk
|
||||
m/+rpZz/q6Wc/6ulnP+rpZz/q6Wc/6ulnP+qpJv/qKOa/6eimf+loJf/pJ+V/6Cckv+alo3/kIyE/4J+
|
||||
dv9va2X/bWpk/5GNhv9raWH/QkE2/ysqIv8IBwX/GBEK/z06Nf83NjOZAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAFBPSwBQTkslUU9L7H58eP/Y1tT/7uvo/9TQyv+ZlpD/aWZh/2tnYf98eHH/iYV9/5GN
|
||||
hP+WkYn/mZSM/5uWjv+emZD/oJuS/6Gck/+inZP/oZuS/52Yj/+alYz/lpGI/5CLg/+OioH/joqB/4+K
|
||||
gv+VkIf/mpWM/5+Zkf+jnZX/paCX/6WhmP+loJb/o56V/6Kdk/+gm5H/nJeP/5aRiP+JhX3/d3Ns/2dl
|
||||
Xv9aWFH/REM5/zg4Lv8TEw//CgYB/yokHP8yMS+aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJR
|
||||
TQBPTkolW1lW7K6sqf/t6+j/1tLN/4uIgv9fXVf/bGli/356c/+JhX3/j4uC/5KOhf+VkIj/mJOL/5qV
|
||||
jf+alYz/l5KK/5GMhP+Ig3v/fnlx/3NvZ/9qZl//ZGBZ/11ZU/9aVlD/V1RO/1hUT/9dWVP/Yl9Y/2xn
|
||||
Yf93cmr/g352/5GMg/+alYz/n5qR/6Cbkv+fmpH/nZiP/5uVjf+WkYn/jIiA/3x4cf9hX1n/QUA3/0FA
|
||||
Nf8kIxz/BgUD/xoSC/8oJSKamv//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlXUwBRT0sldHJv7NLQ
|
||||
zv/h3tn/jImD/1tYUv9qZ2H/fHhx/4aCev+Lh37/joqB/5GNhP+Tj4b/k46F/4+Kgf+Hgnr/fnlx/3dy
|
||||
av9ybWb/cGxk/29rZP9taWL/cW1m/3JuZ/9wbGX/bmtk/25qZP9oZV//Y19Z/2RfWf9iXVf/ZGBa/2tm
|
||||
X/91cGj/gn51/4+Kgv+Yk4r/m5WN/5qUjP+Xkor/k46G/4uHfv97eHD/UVBI/0JBN/8zMin/Dg0K/w4I
|
||||
Av8eFw+nDTBaATUaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjYABZV1QmkI6L7eDe2/+fnJj/V1RP/2Zj
|
||||
Xf94dW3/gn53/4aCe/+KhX7/jYiA/46JgP+Nh37/h4J4/4N+dP+Efnb/ioR8/5KOhf+dmJH/p6Ob/7Cs
|
||||
pP+zr6f/urav/7y4sf+7t7D/urau/7i0rP+xrKX/qaWd/6Sfl/+alY3/kYyE/4aCev99eHD/enVu/355
|
||||
cf+FgHj/jYiA/5SPhv+UkIj/ko6G/4+Lgv+JhH3/amdg/0RDOv8+PTP/HBwW/wcFAv8XDgTGCQUBEgIA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFwbABkY18noqCd7b+9uv9dW1f/XVtV/3NvaP99eXH/gX12/4WA
|
||||
ef+Hgnv/iIJ6/4mDev+Nh37/l5KJ/6ikm/+7t7D/y8jC/9fUz//d2tb/3tzY/+Dd2f/e3Nf/3dvV/9vY
|
||||
0//Y1dD/1tPN/9PQyv/QzMX/zcnC/8nFvv/FwLn/wLuz/7m0rP+wq6L/pqCZ/56Zkf+ZlI3/lpGL/5OO
|
||||
hv+QjIP/kIuD/46Kgf+Lh3//gHx1/09NRP9CQTf/LCwk/wkJBv8QCQL0Fg0DTyMVBQAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAHl4dABycG0ooJ6a7Xd1cf9RT0r/amZg/3dzbP98eHH/f3t0/4F8dP+CfXX/jId//6Oe
|
||||
lv++urT/2NXQ/+fl4v/u7On/7u3q/+3r6P/q6OX/5+Xi/+Ti3//i4Nz/393Y/93a1f/a19L/19TP/9TR
|
||||
zP/Sz8j/0MzF/83Jwv/Kxr//x8O8/8TAuP/BvbT/vbiw/7mzq/+0sKj/s6+o/7Ovqf+qp6D/mZSM/42I
|
||||
gP+KhH3/hoJ7/2ViWv9DQjf/Ojkw/xUVEP8JBQH/GA0EoQIAAAcKBQIAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIKA
|
||||
fACHhYIogX977FFPS/9cWVT/b2tl/3ZybP96dm7/fHhw/4eCev+inpb/yMS//+Xj4P/z8vD/9vX0//Tz
|
||||
8f/x8O7/7+3q/+zq5//p5+T/5+Xi/+Xj3//j4N3/4N7Z/97b1v/b2NP/2NXQ/9bTzv/T0Mr/0c7H/87L
|
||||
xP/Mx8H/ycS9/8bCuv/Dv7f/wLyz/7+6sf++ubD/vLev/725sv/Fwrz/w8C7/6mlnv+OiYL/hYB5/3Zy
|
||||
a/9JRz7/QkE2/yYlHv8GBQP/EwsC5Q4GADMJAwAABgUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBuagB4dnIfV1VR2E1L
|
||||
R/9kYVv/cG1n/3Vxav97d3D/lZGK/8TBvP/o5+T/+Pf2//n49//29vT/9PPx//Lx7//w7+3/7u3q/+zq
|
||||
5//p5+T/5+Xi/+Xj3//j4d3/4d/a/9/c1//d2dT/2tbR/9fUz//U0cz/0s/I/9DMxf/NycL/y8a//8fD
|
||||
vP/Fwbn/wr61/8C8s//AvLP/wLuy/7+6sf/BvbT/zcrE/9bU0f+7uLP/j4uF/397c/9WVEz/QkE3/zQz
|
||||
Kv8VFRL/Ih0X/y8nH3wAAAABAQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtJRABMSUUXREI+yVJQS/9nZF//cG1m/315
|
||||
c/+npJ7/3NrX//b29P/5+fj/+Pf2//b19P/19PL/8/Lw//Lw7v/w7uz/7uzp/+zq5//p5+T/6OXi/+bj
|
||||
4P/j4d7/4d/b/9/d1//d2tX/29fS/9jVz//V0s3/09DJ/9HNxv/PysT/zMfA/8nFvv/Gwrv/xL+3/8K+
|
||||
tf/CvbX/wb20/8G8tP/AvLP/wr62/9TQy//l4+H/yMbC/4+LhP9pZV7/SEY9/19eVv90cm3/rKaf/2Ve
|
||||
VsoAAAAZGxYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVEPwBFQz4hRkRA41dUT/9oZV//fXp0/7a0sP/p6Ob/+fj3//j3
|
||||
9v/29fT/9fTz//X08v/z8vD/8vHv//Hv7f/v7uv/7uvo/+vp5v/p5+T/5+Xi/+bj4P/k4d3/4t/b/9/d
|
||||
2P/e2tX/29jT/9jV0P/W083/1NDL/9LOx//PzMT/zcjC/8vGv//Iw7z/xcG6/8TAuP/Ev7f/w7+2/8O/
|
||||
tv/DvrX/wr61/8bBuf/a2NP/7ezq/8PBvf9+enT/ZWJc/7q4s/9ubWj/T0xH/yIbFPYSCQJXGA4FABcK
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAExLRwBMS0clTEpH7VpXUv9zcGv/tbOv//Hx7//5+Pf/9vXz//Xz8v/08/H/9PPx//Py
|
||||
8P/y8e7/8e/t//Du6//u7On/7ern/+ro5f/p5uP/5+Xi/+bj4P/k4d3/4t/b/+Dd2P/e2tX/3NjT/9nW
|
||||
0f/X087/1dHL/9LPyP/QzcX/zsrC/8zHwP/JxL3/x8K7/8bCuv/Gwbr/xcG5/8XBuf/FwLj/xMC3/8S/
|
||||
t//Iw7z/4d7b//Lx8P+2tLD/Y2Bb/2NhWP9DQTj/FRUQ/wYDAP8YDgSmAAAACQYCAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBO
|
||||
SgBPTkolT01J7GRiXf+qqKT/7u3r//j39v/08/H/8/Lw//Py8P/y8e//8vHv//Hw7v/x7+3/8O7r/+/t
|
||||
6f/t6+j/7Onm/+ro5P/o5uP/5+Xh/+Xj3//k4d3/4t/b/+Dd1//e29b/3NjT/9rW0f/X1M7/1dLM/9PQ
|
||||
yf/Rzcb/z8vD/83Iwf/Lxr//ycS9/8nEvf/Iw7z/yMO8/8fDu//Hwrv/xsK6/8bBuv/Fwbn/zcnC/+7t
|
||||
6f/r6+n/jouH/0A+Nv9DQjf/Kikh/wgHBP8SCgLnFg0DMx4RBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBPSwBQT0slUlBM7IeF
|
||||
gf/g393/9/b1//Px7//y8O7/8vDu//Lw7v/x8O3/8e/t//Du7P/v7ur/7+3p/+7r6P/s6ub/6+jl/+nn
|
||||
5P/o5eL/5uTg/+Xj3v/j4dz/4t/a/+Dd1//f29b/3dnT/9vW0f/Y1M//1tLM/9TQyv/Szsf/0MzE/87J
|
||||
wv/Mx8D/zMa//8vGvv/Lxb7/ysW+/8rEvf/JxL3/ycS8/8jDvP/Hw7v/yMK7/9vY0v/5+Pf/wcC+/09N
|
||||
SP9ZV07/XlxU/xUUEP8LBgH+FAsCeyUWBgD/fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFNSTgBPTkolX15a7Le1s//z8vD/8/Hu//Dv
|
||||
7P/x7+z/8O/s//Dv7P/w7uv/8O7q/+/t6f/u7Oj/7evn/+3q5v/r6eX/6ufk/+jm4//n5eH/5uTg/+Xi
|
||||
3v/j4Nz/4t/Z/+Dd1//f3Nb/3dnT/9vX0f/Y1c//1tPN/9XRy//Tz8f/0c3F/8/Lw//OycL/zcnB/83I
|
||||
wf/Nx8D/zMfA/8zGv//Mxr//y8a//8vFvv/Kxb7/ycS9/8/Kw//t6+j/4uHg/2VkYP9YVk/9hoN9/z07
|
||||
Nf8FAwH/FAsDwgsEABMHAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFtZVgBRUEwlfHp37NrZ1//z8u//8O7q//Dt6v/w7er/7+3q/+/t
|
||||
6f/v7en/7+zo/+7s6P/t6+f/7enm/+zo5f/q6OT/6efj/+jl4v/n5OD/5uPf/+Xi3f/j4Nz/4t/Z/+Dd
|
||||
1//f3Nb/3dnU/9vX0f/Z1c//19PN/9XRy//T0Mj/0s7G/9HMxP/QzMT/0MzE/8/Lw//Py8P/z8rC/87J
|
||||
wv/OyMH/zcjB/83HwP/Mx8D/zMa//8zHv//e29b/7+7t/4uKh/45ODLrh4V//V9dVv8REQ3/CgUA8xQK
|
||||
AUccDwIABQMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAGlnZABbWlcmlZSR7ejm5P/x7+v/7+3p/+/t6P/v7en/7+3p/+7s6P/u7Oj/7uvn/+3q
|
||||
5//t6eb/7Onl/+ro5P/p5+P/6ebi/+jl4f/n5OD/5eLe/+Th3f/j4Nv/4t7Z/+Dd1//f3NX/3dnU/9zX
|
||||
0f/a1dD/2NTO/9bSy//U0Mn/08/H/9POx//Szsb/0s7G/9HNxf/RzcX/0czE/9DMxP/Qy8P/z8vD/8/L
|
||||
w//PysL/zsnC/83Iwf/W0sz/7uzq/6Oinv4zMi7CbWtk3ISBe/8sKyX/BgQB/xEJApQDAQACAQEAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJx
|
||||
bQBlZGAnoqGe7ezp5v/w7en/7uzn/+7s6P/u7Oj/7uzo/+7r5//u6uf/7erm/+3p5v/s6OX/6+jk/+rn
|
||||
4//p5uL/6OXh/+fk4P/m49//5eLe/+Th3f/j4Nv/4d7Y/+Dd1v/f3NX/3tnU/9zX0v/a1tD/2NTO/9fT
|
||||
zP/V0cv/1dHK/9XQyf/U0Mn/1M/I/9PPx//Tz8f/0s7G/9LOxv/SzcX/0c3F/9HNxf/QzMT/0MzE/8/L
|
||||
w//Tz8j/6Obi/6mnpP88OzecTkxFkoiGgP9WVE7/CQgG/w4HAdULBQEgBAEAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHt5dgBxcGwpq6mm7e3r
|
||||
6P/v7ej/7uzn/+7s5//u6+f/7urn/+7q5//t6ub/7enm/+zp5f/s6OT/6ufj/+nn4//p5uL/6OXh/+fk
|
||||
4P/m497/5eLd/+Th3P/j4Nr/4t7Y/+Hd1//g3NX/3tnU/93Y0v/b1tD/2dXO/9fTzf/X083/19LM/9bS
|
||||
zP/W0sv/1dHL/9XRyv/V0Mr/1NDJ/9TPyP/Tz8j/08/H/9POx//Szsb/0s3G/9HNxf/Uz8j/5ePe/6im
|
||||
ov9CQT2PJyYfOYOBe+h7eXP/IiEc/wUCAPgRCQFbIxICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIKBfQB7enYnr66q6u3r5//v7Of/7uvn/+7q
|
||||
5v/u6ub/7urm/+3q5v/t6eX/7enl/+zo5P/r6OP/6ufj/+nn4v/p5uH/6OXg/+fk3//m497/5eLd/+Th
|
||||
3P/j4Nr/4t7Y/+Hd1//g3Nb/39rU/93Y0v/c19H/29bQ/9vWz//a1c//2dXO/9nUzv/Y1M3/2NPN/9fT
|
||||
zP/X0sz/1tLM/9bSy//W0cv/1dHK/9XQyv/U0Mn/1NDI/9PPx//V0cn/4+Db/6Shnv9DQj56AAAABmJg
|
||||
Wp+Uko3/SEZA/wYFAv8KBACmDAIACAsDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHp3cwBsamYcpaKf0+fk4f/v6+f/7uvm/+7q5v/u6ub/7urm/+3p
|
||||
5f/t6eX/7Ojk/+zo5P/r6OP/6ufi/+nm4v/p5uH/6OXg/+fk3//m497/5uLd/+Xh3P/k4Nr/49/Y/+He
|
||||
1//g3Nb/39vU/97Z0//e2NL/3djS/93Y0v/c19H/3NfR/9vW0P/b1tD/29bP/9rVz//Z1c//2dTO/9jU
|
||||
zv/Y083/19PN/9fTzP/W0sz/1tLL/9bRy//X08z/39zX/5uYlPtGREBUW1lTADk3MkSPjYjsdXJs/xgX
|
||||
FP8FAQDeCgMAJgkDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAHFuagBQTUoKnZuWp93b1//w7ej/7+vm/+7q5v/u6ub/7urm/+7q5f/t6eX/7enk/+zo
|
||||
5P/s6OP/6ufi/+nm4v/p5uH/6OXg/+jk3//n497/5uLd/+Xh3P/k4Nv/49/Z/+Le1//h3db/4d3W/+Dc
|
||||
1f/g29T/39rU/9/a1P/e2dP/3tnT/97Y0v/d2NL/3dfR/9zX0f/c19H/29bQ/9rW0P/a1c//2dXP/9nV
|
||||
zv/Z1M7/2NTN/9jTzf/a1s//2dXP/5CNiOZGREEuRUM/AAAAAAt6eXOolJKO/z89N/8CAQD5BAAAZAUA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1q
|
||||
aACqp6IAkY6Kbs/Lx/zv7Of/7+zm/+/r5v/v6ub/7+rm/+7q5f/u6eX/7enk/+3o5P/s6OP/6+fi/+rn
|
||||
4v/p5uH/6eXg/+jk3//n497/5uPd/+bi3P/l4dv/5ODa/+Pf2f/j39j/4t7Y/+Le1//h3df/4d3W/+Hd
|
||||
1v/g3NX/4NzV/9/b1P/f29T/39rT/97Z0//e2NL/3djS/93Y0v/d19H/3NfR/9zW0P/b1tD/29bP/9rV
|
||||
z//c2NH/x8S+/316dbY8ODQOT0tHAGVjWQBQT0hQmJeT8nRxa/8SEQ7/AAAApAAAAAkAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL+4tACQjIkAhIF9Kri1
|
||||
sdvp5eD/8O3n//Ds5//v6+b/7+rm/+/q5f/u6eX/7unl/+3o5P/t6OP/7Oji/+zn4v/q5uH/6eXh/+nl
|
||||
3//o5N//5+Pe/+fj3f/m4t3/5uLc/+Xh2//l4dv/5ODa/+Tg2f/j39n/49/Y/+Pf2P/i3tf/4t7X/+Le
|
||||
1//h3db/4d3W/+Dc1f/g3NX/39vU/9/b1P/f2tT/3tnT/97Z0//d2NL/3djS/93X0f/b1tD/sK2n+nVy
|
||||
bmiloZkAQ0ZLACIhHAAAAAANkI+KspeUkP9APjn/AAAA3wAAACYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFg38AVlZSBJ6cl4bU0Mz+8Ozn//Ht
|
||||
5//x7ef/8Ozm/+/r5v/v6uX/7unl/+7p5P/u6eT/7ejj/+zo4v/s5+L/6ubh/+rm4f/p5eD/6eXg/+nl
|
||||
3//o5N//6OTe/+fj3v/n493/5uLd/+bi3P/m4tz/5eHb/+Xh2//k4Nr/5ODZ/+Tg2f/j39j/49/Y/+Le
|
||||
1//i3tf/4d3W/+Hd1v/h3db/4NzV/+Dc1f/f29T/39rU/9/a1P/OycP/mpeRxHZybRp+e3UAU1NTAAAA
|
||||
AADGwr0AeHZxT6imo/N5dnD/ERAO+QAAAGMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPytAAhoN9AIiGgCCyr6vI49/a//Dt5//x7ef/8e3o//Ds
|
||||
5//w6+b/8Ovm/+/r5f/v6uX/7+rl/+7p5P/u6eT/7ejj/+3o4//s6OL/6+fi/+vn4f/q5uH/6ubg/+nl
|
||||
4P/p5eD/6eXf/+jk3//o5N7/5+Pe/+fj3f/m4t3/5uLc/+bi3P/l4dv/5eHa/+Tg2v/k4Nn/49/Z/+Pf
|
||||
2P/j39j/4t7X/+Le1//h3db/4d3W/9vX0f+yr6nth4N+VJ6UlQB7e3IAAAAAAAUFAAAmJSIAPjw4DKup
|
||||
pq+hnpr/RUM+/wAAAKAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAADDwsIAGz0YALu4tQCWk5BKwb645erm4P/x7Of/8u7p//Lv6v/w7ef/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm/+/r5f/v6+X/7+vl/+/q5f/u6uT/7unk/+7o4//t6OP/7Oji/+zn4v/r5+L/6+bh/+rm
|
||||
4f/q5eD/6eXg/+nl3//o5N//6OTe/+fj3v/n493/5+Pd/+bi3f/m4tz/5eHc/+Xh2//k4Nr/5ODa/+Tg
|
||||
2f/j39n/4NzW/8C8t/uTkIqFdnRxCI2LhQDPz8EAAAAAAAAAAAAuLisA1dTRANXTzkmvrarzkIyG/xwb
|
||||
GdEAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAeHhvAHZ2cgANFBQCnpyWZ8vHwu7q5eD/8e3o//Pw7P/z8Ov/8e3n//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ovm/+/r5f/v6+X/7+rl/+7p5P/u6eT/7ejj/+3o4//s5+L/7Ofi/+vn
|
||||
4f/r5uH/6ubh/+rl4P/p5eD/6eXf/+jk3//o5N7/5+Pe/+fj3v/n493/5uLd/+bi3P/j39n/yMW//5mW
|
||||
kaNoZWERfn95AP///wAAAAAAAAAAAAAAAAAAAAAA0c3FAOPe1Q/KycazqaWh/3FtaPQODQxCLCooAK+n
|
||||
nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAH19
|
||||
eACRkIsAnJmVBaGfmmfBvrnl5uHc//Lu6f/18u7/9PHt//Hu6f/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/7+vl/+/q5f/u6uT/7unk/+7p5P/t6OP/7ejj/+zn
|
||||
4v/s5+L/6+fh/+rm4f/q5uD/6eXg/+nl4P/p5d//6eXf/+Pf2v/EwLv6m5eSm3p4cxuMioMAoKmXAH5z
|
||||
cwAAAAAAAAAAAAAAAAAAAAAA3NjSAN7c2QDh3ttQtbOx8bKtp/+inZaLZmFaAq6mngAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVkYoAlZONAFJY
|
||||
VQKZlZBOuLWw0dvX0v/v6+b/9fPv//b08P/z8Oz/8e3n//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ovm//Dr5v/v6+X/7+rl/+/q5f/u6eT/7unk/+3o
|
||||
4//t6OP/7Ofi/+zn4v/q5eD/3dnU/7u4s+uVkYx/dHNtD5SSjQAAAAAALCsqAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAODc1gDk3tYK2NbTn6qmo//HwLnTwbuyHbmyqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj42IAIaCfgD///8AiYeFK6ej
|
||||
n5/Hw77x5eHc//Tx7f/49vP/9/Tx//Pw7P/x7ej/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w6+b/8Ovm//Dr5v/v6uX/7unk/+bh
|
||||
3P/KxsH9qKahxIuJhU1UUE4Fe3lzAI6LhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
|
||||
/wDl4t4A7OnlLrCuqsOnpJ6e2NDJD763sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAH11cgCPgoEAkI6LAHdycAuXlJBUsq+ruMvH
|
||||
w/Xl4t7/9fPx//r49v/59/T/9fLu//Lv6v/x7ef/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8e3n/+/r5f/l4Nv/zsrF/bKuqdiTkIx7endzHK2m
|
||||
qwCHhH8Ah4N/ALa2tgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM/JxADLyMEA4+DYAb26
|
||||
sxOmpJ4NuLGrAL63sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AY2VzAIyIhQCxq6cAiIaDE5qYlFauq6exxsTA6dza
|
||||
1//v7ev/+Pf1//r59//49vP/9vPv//Tw7P/y7+r/8u7p//Hu6P/x7ef/8e3n//Ht5//x7ef/8e3n//Hu
|
||||
6P/y7uj/8O3n/+3p4//m4tz/2tbR/8bCvfauq6bGmJWQeICAeigAAAABiYeCAHh4cADJyLwAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX1M8A6ebhALm2sACmpJ4AAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJSUjgCanJYAkI2KALy4swBqamkLjoyIN6OhnXSysKy3xsTA39bU
|
||||
0ffi4d7/7Orn//Du7P/z8O3/8/Dt//Lw7P/x7ur/8Ozo/+/r5//u6uX/6OXg/+Lf2v/Z1dD/zMjD/b67
|
||||
t+etqqbJn5yXko6MiExwb2sY////AI2MhQB+fHoAlpOPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAADAwMAP///wCEgoEAlJGPAP///wBcW1kJe3p2LJGPi1KjoZ13rKmmmrKv
|
||||
rLq5trPRvLq33L27t+C6uLTlt7Wx4ra0sNuyr6vYqKaiwaGemqeal5OEjouHYHx6djhraGcSAAAAAZqY
|
||||
kwB+fHgAXmBeAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAD///8Axse9ADUzMQBqa2oAfHt4AJCOigD///8AOjs5BmJgXg1+fHoThYSAFYB/
|
||||
eiF6eXUvenl2JoSDgBV8enYUZmVhDklHRQkAAAAClZKOAHx5dQBwbWwAeHd1AHJvbAD07OQABQUFAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQUwB4eHUAenl3AIOBfwCUko8AmZeUAI+OigCGhYEAiIaDAJeV
|
||||
kgCQjooAgn98AHRybwBwb2kAc3NsAP///wAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////8AAAD///////////8A
|
||||
AAD/////AH////8AAAD////AAAD///8AAAD///wAAAAf//8AAAD///gAAAAP//8AAAD//+AAAAAB//8A
|
||||
AAD//4AAAAAA//8AAAD//wAAAAAAf/8AAAD//gAAAAAAP/8AAAD//AAAAAAAH/8AAAD/+AAAAAAAD/8A
|
||||
AAD/8AAAAAAAB/8AAAD/8AAAAAAAB/8AAAD/8AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8A
|
||||
AAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8A
|
||||
AAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8A
|
||||
AAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8A
|
||||
AAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAAf8AAAD/4AAAAAAAAf8AAAD/4AAAAAAAAP8A
|
||||
AAD/4AAAAAAAAP8AAAD/4AAAAAAAAP8AAAD/4AAAAAAAAH8AAAD/4AAAAAAAAH8AAAD/4AAAAAAAAH8A
|
||||
AAD/4AAAAAAAAD8AAAD/4AAAAAAAAD8AAAD/4AAAAAAAAB8AAAD/4AAAAAAAAB8AAAD/4AAAAAAAAA8A
|
||||
AAD/4AAAAAAAAA8AAAD/4AAAAAAAAA8AAAD/4AAAAAAAAAcAAAD/4AAAAAAAAAcAAAD/4AAAAAAAAAcA
|
||||
AAD/4AAAAAAAAAMAAAD/4AAAAAAAAAMAAAD/4AAAAAAAAAMAAAD/4AAAAAAAAAMAAAD/4AAAAAAAAAEA
|
||||
AAD/8AAAAAAABAEAAAD/8AAAAAAABgEAAAD/+AAAAAAABwAAAAD/+AAAAAAADwAAAAD//gAAAAAAH4AA
|
||||
AAD//wAAAAAAP4AAAAD//wAAAAAAf4AAAAD//4AAAAAA/8EAAAD///AAAAAD//8AAAD///wAAAAP//8A
|
||||
AAD///4AAAA///8AAAD////gAAP///8AAAD///////////8AAAD///////////8AAAD///////////8A
|
||||
AAA=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -0,0 +1,837 @@
|
|||
namespace DBCHM
|
||||
{
|
||||
partial class MainForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.imgList = new System.Windows.Forms.ImageList(this.components);
|
||||
this.tlTip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.TxtSearchWords = new System.Windows.Forms.TextBox();
|
||||
this.tabLayoutPnl = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.mainPnl = new System.Windows.Forms.Panel();
|
||||
this.treePnl = new System.Windows.Forms.Panel();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.lblTongJi = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.CkAll = new System.Windows.Forms.CheckBox();
|
||||
this.CkReverse = new System.Windows.Forms.CheckBox();
|
||||
this.lblSelectRes = new System.Windows.Forms.Label();
|
||||
this.gpxHandle = new System.Windows.Forms.GroupBox();
|
||||
this.codePnl = new System.Windows.Forms.Panel();
|
||||
this.txtCode = new ICSharpCode.TextEditor.TextEditorControl();
|
||||
this.pizhuPnl = new System.Windows.Forms.Panel();
|
||||
this.gpCurrTable = new System.Windows.Forms.GroupBox();
|
||||
this.labCurrTabComment = new System.Windows.Forms.Label();
|
||||
this.TxtCurrTabComment = new System.Windows.Forms.TextBox();
|
||||
this.LabCurrTabName = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.GpColumns = new System.Windows.Forms.GroupBox();
|
||||
this.lblTip = new System.Windows.Forms.Label();
|
||||
this.GV_ColComments = new System.Windows.Forms.DataGridView();
|
||||
this.ColXuHao = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColDataType = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColLength = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColComment = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.BtnSaveGridData = new ComponentFactory.Krypton.Toolkit.KryptonButton();
|
||||
this.RibbonTabContainer = new System.Windows.Forms.TabControl();
|
||||
this.tpfile = new System.Windows.Forms.TabPage();
|
||||
this.ribbonPageFile = new System.Windows.Forms.ToolStrip();
|
||||
this.tsbConnect = new System.Windows.Forms.ToolStripButton();
|
||||
this.tsbRefresh = new System.Windows.Forms.ToolStripButton();
|
||||
this.tsbBuild = new System.Windows.Forms.ToolStripButton();
|
||||
this.tsWordExp = new System.Windows.Forms.ToolStripButton();
|
||||
this.tsExcelExp = new System.Windows.Forms.ToolStripButton();
|
||||
this.tsPdfExp = new System.Windows.Forms.ToolStripButton();
|
||||
this.tsHtmlExp = new System.Windows.Forms.ToolStripButton();
|
||||
this.tsXmlExp = new System.Windows.Forms.ToolStripButton();
|
||||
this.tsMarkDownExp = new System.Windows.Forms.ToolStripButton();
|
||||
this.tptool = new System.Windows.Forms.TabPage();
|
||||
this.tsbPDMUpload = new System.Windows.Forms.ToolStrip();
|
||||
this.toolStripButton3 = new System.Windows.Forms.ToolStripButton();
|
||||
this.apabout = new System.Windows.Forms.TabPage();
|
||||
this.ribbonPageAbout = new System.Windows.Forms.ToolStrip();
|
||||
this.toolStripButtonAbout = new System.Windows.Forms.ToolStripButton();
|
||||
this.miniToolStrip = new System.Windows.Forms.ToolStrip();
|
||||
this.treeDB = new DBCHM.TreeViewEnhanced();
|
||||
this.tabLayoutPnl.SuspendLayout();
|
||||
this.mainPnl.SuspendLayout();
|
||||
this.treePnl.SuspendLayout();
|
||||
this.gpxHandle.SuspendLayout();
|
||||
this.codePnl.SuspendLayout();
|
||||
this.pizhuPnl.SuspendLayout();
|
||||
this.gpCurrTable.SuspendLayout();
|
||||
this.GpColumns.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.GV_ColComments)).BeginInit();
|
||||
this.RibbonTabContainer.SuspendLayout();
|
||||
this.tpfile.SuspendLayout();
|
||||
this.ribbonPageFile.SuspendLayout();
|
||||
this.tptool.SuspendLayout();
|
||||
this.tsbPDMUpload.SuspendLayout();
|
||||
this.apabout.SuspendLayout();
|
||||
this.ribbonPageAbout.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// imgList
|
||||
//
|
||||
this.imgList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imgList.ImageStream")));
|
||||
this.imgList.TransparentColor = System.Drawing.Color.Transparent;
|
||||
this.imgList.Images.SetKeyName(0, "folder");
|
||||
this.imgList.Images.SetKeyName(1, "table");
|
||||
this.imgList.Images.SetKeyName(2, "view");
|
||||
this.imgList.Images.SetKeyName(3, "proc");
|
||||
this.imgList.Images.SetKeyName(4, "func");
|
||||
//
|
||||
// tlTip
|
||||
//
|
||||
this.tlTip.AutoPopDelay = 5000;
|
||||
this.tlTip.InitialDelay = 100;
|
||||
this.tlTip.IsBalloon = true;
|
||||
this.tlTip.ReshowDelay = 100;
|
||||
this.tlTip.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info;
|
||||
this.tlTip.ToolTipTitle = "提示";
|
||||
//
|
||||
// TxtSearchWords
|
||||
//
|
||||
this.TxtSearchWords.Location = new System.Drawing.Point(58, 9);
|
||||
this.TxtSearchWords.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.TxtSearchWords.Name = "TxtSearchWords";
|
||||
this.TxtSearchWords.Size = new System.Drawing.Size(221, 21);
|
||||
this.TxtSearchWords.TabIndex = 13;
|
||||
this.tlTip.SetToolTip(this.TxtSearchWords, "多个关键字搜索用英文逗号(,)隔开!");
|
||||
this.TxtSearchWords.TextChanged += new System.EventHandler(this.TxtSearchWords_TextChanged);
|
||||
//
|
||||
// tabLayoutPnl
|
||||
//
|
||||
this.tabLayoutPnl.AutoSize = true;
|
||||
this.tabLayoutPnl.ColumnCount = 1;
|
||||
this.tabLayoutPnl.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tabLayoutPnl.Controls.Add(this.mainPnl, 0, 1);
|
||||
this.tabLayoutPnl.Controls.Add(this.RibbonTabContainer, 0, 0);
|
||||
this.tabLayoutPnl.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tabLayoutPnl.Location = new System.Drawing.Point(0, 0);
|
||||
this.tabLayoutPnl.Name = "tabLayoutPnl";
|
||||
this.tabLayoutPnl.RowCount = 2;
|
||||
this.tabLayoutPnl.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 15F));
|
||||
this.tabLayoutPnl.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 85F));
|
||||
this.tabLayoutPnl.Size = new System.Drawing.Size(1076, 700);
|
||||
this.tabLayoutPnl.TabIndex = 5;
|
||||
//
|
||||
// mainPnl
|
||||
//
|
||||
this.mainPnl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.mainPnl.Controls.Add(this.treePnl);
|
||||
this.mainPnl.Controls.Add(this.gpxHandle);
|
||||
this.mainPnl.Location = new System.Drawing.Point(3, 108);
|
||||
this.mainPnl.Name = "mainPnl";
|
||||
this.mainPnl.Size = new System.Drawing.Size(1070, 589);
|
||||
this.mainPnl.TabIndex = 14;
|
||||
//
|
||||
// treePnl
|
||||
//
|
||||
this.treePnl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.treePnl.Controls.Add(this.label2);
|
||||
this.treePnl.Controls.Add(this.treeDB);
|
||||
this.treePnl.Controls.Add(this.lblTongJi);
|
||||
this.treePnl.Controls.Add(this.label1);
|
||||
this.treePnl.Controls.Add(this.CkAll);
|
||||
this.treePnl.Controls.Add(this.TxtSearchWords);
|
||||
this.treePnl.Controls.Add(this.CkReverse);
|
||||
this.treePnl.Controls.Add(this.lblSelectRes);
|
||||
this.treePnl.Location = new System.Drawing.Point(3, 0);
|
||||
this.treePnl.Name = "treePnl";
|
||||
this.treePnl.Size = new System.Drawing.Size(324, 589);
|
||||
this.treePnl.TabIndex = 20;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(5, 571);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(0, 12);
|
||||
this.label2.TabIndex = 19;
|
||||
//
|
||||
// lblTongJi
|
||||
//
|
||||
this.lblTongJi.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.lblTongJi.AutoSize = true;
|
||||
this.lblTongJi.Location = new System.Drawing.Point(5, 571);
|
||||
this.lblTongJi.Name = "lblTongJi";
|
||||
this.lblTongJi.Size = new System.Drawing.Size(0, 12);
|
||||
this.lblTongJi.TabIndex = 19;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(14, 14);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(29, 12);
|
||||
this.label1.TabIndex = 16;
|
||||
this.label1.Text = "搜索";
|
||||
//
|
||||
// CkAll
|
||||
//
|
||||
this.CkAll.AutoSize = true;
|
||||
this.CkAll.Location = new System.Drawing.Point(16, 34);
|
||||
this.CkAll.Name = "CkAll";
|
||||
this.CkAll.Size = new System.Drawing.Size(48, 16);
|
||||
this.CkAll.TabIndex = 15;
|
||||
this.CkAll.Text = "全选";
|
||||
this.CkAll.UseVisualStyleBackColor = true;
|
||||
this.CkAll.CheckedChanged += new System.EventHandler(this.CkAll_CheckedChanged);
|
||||
//
|
||||
// CkReverse
|
||||
//
|
||||
this.CkReverse.AutoSize = true;
|
||||
this.CkReverse.Location = new System.Drawing.Point(70, 35);
|
||||
this.CkReverse.Name = "CkReverse";
|
||||
this.CkReverse.Size = new System.Drawing.Size(48, 16);
|
||||
this.CkReverse.TabIndex = 17;
|
||||
this.CkReverse.Text = "反选";
|
||||
this.CkReverse.UseVisualStyleBackColor = true;
|
||||
this.CkReverse.CheckedChanged += new System.EventHandler(this.CkReverse_CheckedChanged);
|
||||
//
|
||||
// lblSelectRes
|
||||
//
|
||||
this.lblSelectRes.AutoSize = true;
|
||||
this.lblSelectRes.Location = new System.Drawing.Point(191, 36);
|
||||
this.lblSelectRes.Name = "lblSelectRes";
|
||||
this.lblSelectRes.Size = new System.Drawing.Size(83, 12);
|
||||
this.lblSelectRes.TabIndex = 16;
|
||||
this.lblSelectRes.Text = "已选择0个项目";
|
||||
//
|
||||
// gpxHandle
|
||||
//
|
||||
this.gpxHandle.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.gpxHandle.Controls.Add(this.codePnl);
|
||||
this.gpxHandle.Controls.Add(this.pizhuPnl);
|
||||
this.gpxHandle.Location = new System.Drawing.Point(330, 3);
|
||||
this.gpxHandle.Name = "gpxHandle";
|
||||
this.gpxHandle.Size = new System.Drawing.Size(737, 583);
|
||||
this.gpxHandle.TabIndex = 21;
|
||||
this.gpxHandle.TabStop = false;
|
||||
this.gpxHandle.Text = "操作";
|
||||
//
|
||||
// codePnl
|
||||
//
|
||||
this.codePnl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.codePnl.Controls.Add(this.txtCode);
|
||||
this.codePnl.Location = new System.Drawing.Point(8000, 20);
|
||||
this.codePnl.Name = "codePnl";
|
||||
this.codePnl.Size = new System.Drawing.Size(725, 557);
|
||||
this.codePnl.TabIndex = 1;
|
||||
//
|
||||
// txtCode
|
||||
//
|
||||
this.txtCode.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtCode.Highlighting = "SQL";
|
||||
this.txtCode.Location = new System.Drawing.Point(13, 13);
|
||||
this.txtCode.Name = "txtCode";
|
||||
this.txtCode.ShowSpaces = true;
|
||||
this.txtCode.Size = new System.Drawing.Size(700, 530);
|
||||
this.txtCode.TabIndex = 0;
|
||||
this.txtCode.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;
|
||||
//
|
||||
// pizhuPnl
|
||||
//
|
||||
this.pizhuPnl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.pizhuPnl.Controls.Add(this.gpCurrTable);
|
||||
this.pizhuPnl.Controls.Add(this.GpColumns);
|
||||
this.pizhuPnl.Location = new System.Drawing.Point(6, 20);
|
||||
this.pizhuPnl.Name = "pizhuPnl";
|
||||
this.pizhuPnl.Size = new System.Drawing.Size(725, 557);
|
||||
this.pizhuPnl.TabIndex = 0;
|
||||
//
|
||||
// gpCurrTable
|
||||
//
|
||||
this.gpCurrTable.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.gpCurrTable.Controls.Add(this.labCurrTabComment);
|
||||
this.gpCurrTable.Controls.Add(this.TxtCurrTabComment);
|
||||
this.gpCurrTable.Controls.Add(this.LabCurrTabName);
|
||||
this.gpCurrTable.Controls.Add(this.label3);
|
||||
this.gpCurrTable.Location = new System.Drawing.Point(8, 13);
|
||||
this.gpCurrTable.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.gpCurrTable.Name = "gpCurrTable";
|
||||
this.gpCurrTable.Padding = new System.Windows.Forms.Padding(2);
|
||||
this.gpCurrTable.Size = new System.Drawing.Size(705, 73);
|
||||
this.gpCurrTable.TabIndex = 11;
|
||||
this.gpCurrTable.TabStop = false;
|
||||
this.gpCurrTable.Text = "表批注";
|
||||
//
|
||||
// labCurrTabComment
|
||||
//
|
||||
this.labCurrTabComment.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)));
|
||||
this.labCurrTabComment.AutoSize = true;
|
||||
this.labCurrTabComment.Location = new System.Drawing.Point(199, 42);
|
||||
this.labCurrTabComment.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.labCurrTabComment.Name = "labCurrTabComment";
|
||||
this.labCurrTabComment.Size = new System.Drawing.Size(53, 12);
|
||||
this.labCurrTabComment.TabIndex = 7;
|
||||
this.labCurrTabComment.Text = "表批注:";
|
||||
//
|
||||
// TxtCurrTabComment
|
||||
//
|
||||
this.TxtCurrTabComment.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)));
|
||||
this.TxtCurrTabComment.Location = new System.Drawing.Point(254, 39);
|
||||
this.TxtCurrTabComment.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.TxtCurrTabComment.Name = "TxtCurrTabComment";
|
||||
this.TxtCurrTabComment.Size = new System.Drawing.Size(300, 21);
|
||||
this.TxtCurrTabComment.TabIndex = 3;
|
||||
//
|
||||
// LabCurrTabName
|
||||
//
|
||||
this.LabCurrTabName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)));
|
||||
this.LabCurrTabName.AutoSize = true;
|
||||
this.LabCurrTabName.Location = new System.Drawing.Point(259, 17);
|
||||
this.LabCurrTabName.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.LabCurrTabName.Name = "LabCurrTabName";
|
||||
this.LabCurrTabName.Size = new System.Drawing.Size(0, 12);
|
||||
this.LabCurrTabName.TabIndex = 5;
|
||||
this.LabCurrTabName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)));
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(212, 17);
|
||||
this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(41, 12);
|
||||
this.label3.TabIndex = 6;
|
||||
this.label3.Text = "表名:";
|
||||
//
|
||||
// GpColumns
|
||||
//
|
||||
this.GpColumns.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.GpColumns.Controls.Add(this.lblTip);
|
||||
this.GpColumns.Controls.Add(this.GV_ColComments);
|
||||
this.GpColumns.Controls.Add(this.BtnSaveGridData);
|
||||
this.GpColumns.Location = new System.Drawing.Point(8, 90);
|
||||
this.GpColumns.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.GpColumns.Name = "GpColumns";
|
||||
this.GpColumns.Padding = new System.Windows.Forms.Padding(2);
|
||||
this.GpColumns.Size = new System.Drawing.Size(705, 453);
|
||||
this.GpColumns.TabIndex = 10;
|
||||
this.GpColumns.TabStop = false;
|
||||
this.GpColumns.Text = "列批注";
|
||||
//
|
||||
// lblTip
|
||||
//
|
||||
this.lblTip.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.lblTip.AutoSize = true;
|
||||
this.lblTip.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.lblTip.Location = new System.Drawing.Point(22, 411);
|
||||
this.lblTip.Name = "lblTip";
|
||||
this.lblTip.Size = new System.Drawing.Size(0, 21);
|
||||
this.lblTip.TabIndex = 9;
|
||||
//
|
||||
// GV_ColComments
|
||||
//
|
||||
this.GV_ColComments.AllowUserToAddRows = false;
|
||||
this.GV_ColComments.AllowUserToDeleteRows = false;
|
||||
this.GV_ColComments.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.GV_ColComments.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.DisplayedCells;
|
||||
this.GV_ColComments.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Raised;
|
||||
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
|
||||
dataGridViewCellStyle1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.GV_ColComments.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.GV_ColComments.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.GV_ColComments.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.ColXuHao,
|
||||
this.ColName,
|
||||
this.ColDataType,
|
||||
this.ColLength,
|
||||
this.ColComment});
|
||||
this.GV_ColComments.Location = new System.Drawing.Point(4, 18);
|
||||
this.GV_ColComments.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.GV_ColComments.MultiSelect = false;
|
||||
this.GV_ColComments.Name = "GV_ColComments";
|
||||
this.GV_ColComments.RowTemplate.Height = 27;
|
||||
this.GV_ColComments.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect;
|
||||
this.GV_ColComments.Size = new System.Drawing.Size(697, 363);
|
||||
this.GV_ColComments.TabIndex = 0;
|
||||
this.GV_ColComments.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.GV_ColComments_CellClick);
|
||||
this.GV_ColComments.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.GV_ColComments_PreviewKeyDown);
|
||||
//
|
||||
// ColXuHao
|
||||
//
|
||||
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
|
||||
this.ColXuHao.DefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.ColXuHao.FillWeight = 10F;
|
||||
this.ColXuHao.HeaderText = "序号";
|
||||
this.ColXuHao.MinimumWidth = 30;
|
||||
this.ColXuHao.Name = "ColXuHao";
|
||||
this.ColXuHao.ReadOnly = true;
|
||||
this.ColXuHao.Width = 54;
|
||||
//
|
||||
// ColName
|
||||
//
|
||||
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
|
||||
this.ColName.DefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.ColName.FillWeight = 20F;
|
||||
this.ColName.HeaderText = "列名";
|
||||
this.ColName.MinimumWidth = 150;
|
||||
this.ColName.Name = "ColName";
|
||||
this.ColName.ReadOnly = true;
|
||||
this.ColName.Width = 150;
|
||||
//
|
||||
// ColDataType
|
||||
//
|
||||
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
|
||||
this.ColDataType.DefaultCellStyle = dataGridViewCellStyle4;
|
||||
this.ColDataType.FillWeight = 23F;
|
||||
this.ColDataType.HeaderText = "数据类型";
|
||||
this.ColDataType.MinimumWidth = 110;
|
||||
this.ColDataType.Name = "ColDataType";
|
||||
this.ColDataType.ReadOnly = true;
|
||||
this.ColDataType.Width = 110;
|
||||
//
|
||||
// ColLength
|
||||
//
|
||||
dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
|
||||
this.ColLength.DefaultCellStyle = dataGridViewCellStyle5;
|
||||
this.ColLength.FillWeight = 12F;
|
||||
this.ColLength.HeaderText = "长度";
|
||||
this.ColLength.MinimumWidth = 30;
|
||||
this.ColLength.Name = "ColLength";
|
||||
this.ColLength.ReadOnly = true;
|
||||
this.ColLength.Width = 54;
|
||||
//
|
||||
// ColComment
|
||||
//
|
||||
this.ColComment.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
|
||||
dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
this.ColComment.DefaultCellStyle = dataGridViewCellStyle6;
|
||||
this.ColComment.FillWeight = 35F;
|
||||
this.ColComment.HeaderText = "列批注";
|
||||
this.ColComment.MinimumWidth = 320;
|
||||
this.ColComment.Name = "ColComment";
|
||||
this.ColComment.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
|
||||
//
|
||||
// BtnSaveGridData
|
||||
//
|
||||
this.BtnSaveGridData.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.BtnSaveGridData.Location = new System.Drawing.Point(593, 400);
|
||||
this.BtnSaveGridData.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.BtnSaveGridData.Name = "BtnSaveGridData";
|
||||
this.BtnSaveGridData.Size = new System.Drawing.Size(98, 34);
|
||||
this.BtnSaveGridData.TabIndex = 8;
|
||||
this.BtnSaveGridData.Values.Text = "保存";
|
||||
this.BtnSaveGridData.Click += new System.EventHandler(this.BtnSaveGridData_Click);
|
||||
//
|
||||
// RibbonTabContainer
|
||||
//
|
||||
this.RibbonTabContainer.Controls.Add(this.tpfile);
|
||||
this.RibbonTabContainer.Controls.Add(this.tptool);
|
||||
this.RibbonTabContainer.Controls.Add(this.apabout);
|
||||
this.RibbonTabContainer.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.RibbonTabContainer.ItemSize = new System.Drawing.Size(65, 20);
|
||||
this.RibbonTabContainer.Location = new System.Drawing.Point(3, 2);
|
||||
this.RibbonTabContainer.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.RibbonTabContainer.Name = "RibbonTabContainer";
|
||||
this.RibbonTabContainer.SelectedIndex = 0;
|
||||
this.RibbonTabContainer.Size = new System.Drawing.Size(1070, 101);
|
||||
this.RibbonTabContainer.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
|
||||
this.RibbonTabContainer.TabIndex = 3;
|
||||
this.RibbonTabContainer.Selecting += new System.Windows.Forms.TabControlCancelEventHandler(this.RibbonTabContainer_Selecting);
|
||||
this.RibbonTabContainer.Selected += new System.Windows.Forms.TabControlEventHandler(this.RibbonTabContainer_Selected);
|
||||
this.RibbonTabContainer.MouseClick += new System.Windows.Forms.MouseEventHandler(this.RibbonTabContainer_MouseClick);
|
||||
this.RibbonTabContainer.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.RibbonTabContainer_MouseDoubleClick);
|
||||
//
|
||||
// tpfile
|
||||
//
|
||||
this.tpfile.Controls.Add(this.ribbonPageFile);
|
||||
this.tpfile.Location = new System.Drawing.Point(4, 24);
|
||||
this.tpfile.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.tpfile.Name = "tpfile";
|
||||
this.tpfile.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.tpfile.Size = new System.Drawing.Size(1062, 73);
|
||||
this.tpfile.TabIndex = 0;
|
||||
this.tpfile.Text = "文件";
|
||||
this.tpfile.ToolTipText = "文件";
|
||||
//
|
||||
// ribbonPageFile
|
||||
//
|
||||
this.ribbonPageFile.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.ribbonPageFile.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.ribbonPageFile.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ribbonPageFile.Font = new System.Drawing.Font("Segoe UI", 9F);
|
||||
this.ribbonPageFile.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
|
||||
this.ribbonPageFile.ImageScalingSize = new System.Drawing.Size(48, 48);
|
||||
this.ribbonPageFile.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tsbConnect,
|
||||
this.tsbRefresh,
|
||||
this.tsbBuild,
|
||||
this.tsWordExp,
|
||||
this.tsExcelExp,
|
||||
this.tsPdfExp,
|
||||
this.tsHtmlExp,
|
||||
this.tsXmlExp,
|
||||
this.tsMarkDownExp});
|
||||
this.ribbonPageFile.Location = new System.Drawing.Point(3, 2);
|
||||
this.ribbonPageFile.Name = "ribbonPageFile";
|
||||
this.ribbonPageFile.Size = new System.Drawing.Size(1056, 69);
|
||||
this.ribbonPageFile.TabIndex = 0;
|
||||
this.ribbonPageFile.Text = "toolStripFile";
|
||||
this.ribbonPageFile.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.ribbonPageFile_ItemClicked);
|
||||
//
|
||||
// tsbConnect
|
||||
//
|
||||
this.tsbConnect.Image = ((System.Drawing.Image)(resources.GetObject("tsbConnect.Image")));
|
||||
this.tsbConnect.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbConnect.Name = "tsbConnect";
|
||||
this.tsbConnect.Size = new System.Drawing.Size(63, 66);
|
||||
this.tsbConnect.Text = "数据连接";
|
||||
this.tsbConnect.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbConnect.Click += new System.EventHandler(this.tsbConnect_Click);
|
||||
//
|
||||
// tsbRefresh
|
||||
//
|
||||
this.tsbRefresh.Image = ((System.Drawing.Image)(resources.GetObject("tsbRefresh.Image")));
|
||||
this.tsbRefresh.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbRefresh.Name = "tsbRefresh";
|
||||
this.tsbRefresh.Size = new System.Drawing.Size(63, 66);
|
||||
this.tsbRefresh.Text = "重新获取";
|
||||
this.tsbRefresh.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbRefresh.Click += new System.EventHandler(this.tsbRefresh_Click);
|
||||
//
|
||||
// tsbBuild
|
||||
//
|
||||
this.tsbBuild.Image = ((System.Drawing.Image)(resources.GetObject("tsbBuild.Image")));
|
||||
this.tsbBuild.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbBuild.Name = "tsbBuild";
|
||||
this.tsbBuild.Size = new System.Drawing.Size(65, 66);
|
||||
this.tsbBuild.Tag = "chm";
|
||||
this.tsbBuild.Text = "CHM导出";
|
||||
this.tsbBuild.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbBuild.Click += new System.EventHandler(this.tsbBuild_Click);
|
||||
//
|
||||
// tsWordExp
|
||||
//
|
||||
this.tsWordExp.Image = ((System.Drawing.Image)(resources.GetObject("tsWordExp.Image")));
|
||||
this.tsWordExp.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsWordExp.Name = "tsWordExp";
|
||||
this.tsWordExp.Size = new System.Drawing.Size(66, 66);
|
||||
this.tsWordExp.Tag = "word";
|
||||
this.tsWordExp.Text = "Word导出";
|
||||
this.tsWordExp.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsWordExp.Click += new System.EventHandler(this.tsbBuild_Click);
|
||||
//
|
||||
// tsExcelExp
|
||||
//
|
||||
this.tsExcelExp.Image = ((System.Drawing.Image)(resources.GetObject("tsExcelExp.Image")));
|
||||
this.tsExcelExp.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsExcelExp.Name = "tsExcelExp";
|
||||
this.tsExcelExp.Size = new System.Drawing.Size(63, 66);
|
||||
this.tsExcelExp.Tag = "excel";
|
||||
this.tsExcelExp.Text = "Excel导出";
|
||||
this.tsExcelExp.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsExcelExp.Click += new System.EventHandler(this.tsbBuild_Click);
|
||||
//
|
||||
// tsPdfExp
|
||||
//
|
||||
this.tsPdfExp.Image = ((System.Drawing.Image)(resources.GetObject("tsPdfExp.Image")));
|
||||
this.tsPdfExp.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsPdfExp.Name = "tsPdfExp";
|
||||
this.tsPdfExp.Size = new System.Drawing.Size(58, 66);
|
||||
this.tsPdfExp.Tag = "pdf";
|
||||
this.tsPdfExp.Text = "PDF导出";
|
||||
this.tsPdfExp.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsPdfExp.Click += new System.EventHandler(this.tsbBuild_Click);
|
||||
//
|
||||
// tsHtmlExp
|
||||
//
|
||||
this.tsHtmlExp.Image = ((System.Drawing.Image)(resources.GetObject("tsHtmlExp.Image")));
|
||||
this.tsHtmlExp.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsHtmlExp.Name = "tsHtmlExp";
|
||||
this.tsHtmlExp.Size = new System.Drawing.Size(64, 66);
|
||||
this.tsHtmlExp.Tag = "html";
|
||||
this.tsHtmlExp.Text = "Html导出";
|
||||
this.tsHtmlExp.TextDirection = System.Windows.Forms.ToolStripTextDirection.Horizontal;
|
||||
this.tsHtmlExp.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsHtmlExp.ToolTipText = "Html导出";
|
||||
this.tsHtmlExp.Click += new System.EventHandler(this.tsbBuild_Click);
|
||||
//
|
||||
// tsXmlExp
|
||||
//
|
||||
this.tsXmlExp.Image = ((System.Drawing.Image)(resources.GetObject("tsXmlExp.Image")));
|
||||
this.tsXmlExp.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsXmlExp.Name = "tsXmlExp";
|
||||
this.tsXmlExp.Size = new System.Drawing.Size(61, 66);
|
||||
this.tsXmlExp.Tag = "xml";
|
||||
this.tsXmlExp.Text = "XML导出";
|
||||
this.tsXmlExp.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsXmlExp.Click += new System.EventHandler(this.tsbBuild_Click);
|
||||
//
|
||||
// tsMarkDownExp
|
||||
//
|
||||
this.tsMarkDownExp.Image = ((System.Drawing.Image)(resources.GetObject("tsMarkDownExp.Image")));
|
||||
this.tsMarkDownExp.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsMarkDownExp.Name = "tsMarkDownExp";
|
||||
this.tsMarkDownExp.Size = new System.Drawing.Size(56, 66);
|
||||
this.tsMarkDownExp.Tag = "markdown";
|
||||
this.tsMarkDownExp.Text = "MD导出";
|
||||
this.tsMarkDownExp.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsMarkDownExp.Click += new System.EventHandler(this.tsbBuild_Click);
|
||||
//
|
||||
// tptool
|
||||
//
|
||||
this.tptool.Controls.Add(this.tsbPDMUpload);
|
||||
this.tptool.Location = new System.Drawing.Point(4, 24);
|
||||
this.tptool.Name = "tptool";
|
||||
this.tptool.Size = new System.Drawing.Size(1062, 73);
|
||||
this.tptool.TabIndex = 3;
|
||||
this.tptool.Text = "工具";
|
||||
this.tptool.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tsbPDMUpload
|
||||
//
|
||||
this.tsbPDMUpload.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.tsbPDMUpload.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.tsbPDMUpload.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tsbPDMUpload.Font = new System.Drawing.Font("Segoe UI", 9F);
|
||||
this.tsbPDMUpload.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
|
||||
this.tsbPDMUpload.ImageScalingSize = new System.Drawing.Size(48, 48);
|
||||
this.tsbPDMUpload.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripButton3});
|
||||
this.tsbPDMUpload.Location = new System.Drawing.Point(0, 0);
|
||||
this.tsbPDMUpload.Name = "tsbPDMUpload";
|
||||
this.tsbPDMUpload.Size = new System.Drawing.Size(1062, 73);
|
||||
this.tsbPDMUpload.TabIndex = 1;
|
||||
this.tsbPDMUpload.Text = "toolStripFile";
|
||||
this.tsbPDMUpload.Click += new System.EventHandler(this.tsbSaveUpload_Click);
|
||||
//
|
||||
// toolStripButton3
|
||||
//
|
||||
this.toolStripButton3.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton3.Image")));
|
||||
this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton3.Name = "toolStripButton3";
|
||||
this.toolStripButton3.Size = new System.Drawing.Size(63, 70);
|
||||
this.toolStripButton3.Text = "批注上载";
|
||||
this.toolStripButton3.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
//
|
||||
// apabout
|
||||
//
|
||||
this.apabout.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.apabout.Controls.Add(this.ribbonPageAbout);
|
||||
this.apabout.Location = new System.Drawing.Point(4, 24);
|
||||
this.apabout.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.apabout.Name = "apabout";
|
||||
this.apabout.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.apabout.Size = new System.Drawing.Size(1062, 73);
|
||||
this.apabout.TabIndex = 2;
|
||||
this.apabout.Text = "关于";
|
||||
this.apabout.ToolTipText = "关于";
|
||||
//
|
||||
// ribbonPageAbout
|
||||
//
|
||||
this.ribbonPageAbout.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.ribbonPageAbout.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.ribbonPageAbout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ribbonPageAbout.Font = new System.Drawing.Font("Segoe UI", 9F);
|
||||
this.ribbonPageAbout.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
|
||||
this.ribbonPageAbout.ImageScalingSize = new System.Drawing.Size(48, 48);
|
||||
this.ribbonPageAbout.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripButtonAbout});
|
||||
this.ribbonPageAbout.Location = new System.Drawing.Point(3, 2);
|
||||
this.ribbonPageAbout.Name = "ribbonPageAbout";
|
||||
this.ribbonPageAbout.Size = new System.Drawing.Size(1056, 69);
|
||||
this.ribbonPageAbout.TabIndex = 0;
|
||||
this.ribbonPageAbout.Text = "toolStripAbout";
|
||||
//
|
||||
// toolStripButtonAbout
|
||||
//
|
||||
this.toolStripButtonAbout.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonAbout.Image")));
|
||||
this.toolStripButtonAbout.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButtonAbout.Name = "toolStripButtonAbout";
|
||||
this.toolStripButtonAbout.Size = new System.Drawing.Size(52, 66);
|
||||
this.toolStripButtonAbout.Text = "About";
|
||||
this.toolStripButtonAbout.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.toolStripButtonAbout.Click += new System.EventHandler(this.toolStripButtonAbout_Click);
|
||||
//
|
||||
// miniToolStrip
|
||||
//
|
||||
this.miniToolStrip.AccessibleName = "新项选择";
|
||||
this.miniToolStrip.AccessibleRole = System.Windows.Forms.AccessibleRole.ButtonDropDown;
|
||||
this.miniToolStrip.AutoSize = false;
|
||||
this.miniToolStrip.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.miniToolStrip.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.miniToolStrip.CanOverflow = false;
|
||||
this.miniToolStrip.Dock = System.Windows.Forms.DockStyle.None;
|
||||
this.miniToolStrip.Font = new System.Drawing.Font("Segoe UI", 9F);
|
||||
this.miniToolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
|
||||
this.miniToolStrip.ImageScalingSize = new System.Drawing.Size(48, 48);
|
||||
this.miniToolStrip.Location = new System.Drawing.Point(0, 0);
|
||||
this.miniToolStrip.Name = "miniToolStrip";
|
||||
this.miniToolStrip.Size = new System.Drawing.Size(894, 70);
|
||||
this.miniToolStrip.TabIndex = 0;
|
||||
//
|
||||
// treeDB
|
||||
//
|
||||
this.treeDB.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.treeDB.CheckBoxes = true;
|
||||
this.treeDB.HideSelection = false;
|
||||
this.treeDB.ImageIndex = 0;
|
||||
this.treeDB.ImageList = this.imgList;
|
||||
this.treeDB.Indent = 16;
|
||||
this.treeDB.Location = new System.Drawing.Point(0, 57);
|
||||
this.treeDB.Name = "treeDB";
|
||||
this.treeDB.SelectedImageIndex = 0;
|
||||
this.treeDB.Size = new System.Drawing.Size(321, 511);
|
||||
this.treeDB.TabIndex = 18;
|
||||
this.treeDB.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.treeDB_AfterCheck);
|
||||
this.treeDB.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeDB_AfterSelect);
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AcceptButton = this.BtnSaveGridData;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1076, 700);
|
||||
this.Controls.Add(this.tabLayoutPnl);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.Name = "MainForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "DBCHM";
|
||||
this.Load += new System.EventHandler(this.MainForm_Load);
|
||||
this.Resize += new System.EventHandler(this.MainForm_Resize);
|
||||
this.tabLayoutPnl.ResumeLayout(false);
|
||||
this.mainPnl.ResumeLayout(false);
|
||||
this.treePnl.ResumeLayout(false);
|
||||
this.treePnl.PerformLayout();
|
||||
this.gpxHandle.ResumeLayout(false);
|
||||
this.codePnl.ResumeLayout(false);
|
||||
this.pizhuPnl.ResumeLayout(false);
|
||||
this.gpCurrTable.ResumeLayout(false);
|
||||
this.gpCurrTable.PerformLayout();
|
||||
this.GpColumns.ResumeLayout(false);
|
||||
this.GpColumns.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.GV_ColComments)).EndInit();
|
||||
this.RibbonTabContainer.ResumeLayout(false);
|
||||
this.tpfile.ResumeLayout(false);
|
||||
this.tpfile.PerformLayout();
|
||||
this.ribbonPageFile.ResumeLayout(false);
|
||||
this.ribbonPageFile.PerformLayout();
|
||||
this.tptool.ResumeLayout(false);
|
||||
this.tptool.PerformLayout();
|
||||
this.tsbPDMUpload.ResumeLayout(false);
|
||||
this.tsbPDMUpload.PerformLayout();
|
||||
this.apabout.ResumeLayout(false);
|
||||
this.apabout.PerformLayout();
|
||||
this.ribbonPageAbout.ResumeLayout(false);
|
||||
this.ribbonPageAbout.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.ToolTip tlTip;
|
||||
private System.Windows.Forms.ImageList imgList;
|
||||
private System.Windows.Forms.TableLayoutPanel tabLayoutPnl;
|
||||
private System.Windows.Forms.TabControl RibbonTabContainer;
|
||||
private System.Windows.Forms.TabPage tpfile;
|
||||
private System.Windows.Forms.ToolStrip ribbonPageFile;
|
||||
private System.Windows.Forms.ToolStripButton tsbConnect;
|
||||
private System.Windows.Forms.ToolStripButton tsbRefresh;
|
||||
private System.Windows.Forms.ToolStripButton tsbBuild;
|
||||
private System.Windows.Forms.ToolStripButton tsWordExp;
|
||||
private System.Windows.Forms.ToolStripButton tsExcelExp;
|
||||
private System.Windows.Forms.ToolStripButton tsPdfExp;
|
||||
private System.Windows.Forms.ToolStripButton tsHtmlExp;
|
||||
private System.Windows.Forms.ToolStripButton tsXmlExp;
|
||||
private System.Windows.Forms.ToolStripButton tsMarkDownExp;
|
||||
private System.Windows.Forms.TabPage tptool;
|
||||
private System.Windows.Forms.TabPage apabout;
|
||||
private System.Windows.Forms.ToolStrip ribbonPageAbout;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButtonAbout;
|
||||
private System.Windows.Forms.Panel mainPnl;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private TreeViewEnhanced treeDB;
|
||||
private System.Windows.Forms.CheckBox CkReverse;
|
||||
private System.Windows.Forms.Label lblSelectRes;
|
||||
private System.Windows.Forms.TextBox TxtSearchWords;
|
||||
private System.Windows.Forms.CheckBox CkAll;
|
||||
private System.Windows.Forms.ToolStrip miniToolStrip;
|
||||
private System.Windows.Forms.Label lblTongJi;
|
||||
private System.Windows.Forms.Panel treePnl;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.GroupBox gpxHandle;
|
||||
private System.Windows.Forms.Panel pizhuPnl;
|
||||
private System.Windows.Forms.GroupBox gpCurrTable;
|
||||
private System.Windows.Forms.Label labCurrTabComment;
|
||||
private System.Windows.Forms.TextBox TxtCurrTabComment;
|
||||
private System.Windows.Forms.Label LabCurrTabName;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.GroupBox GpColumns;
|
||||
private System.Windows.Forms.Label lblTip;
|
||||
private System.Windows.Forms.DataGridView GV_ColComments;
|
||||
private ComponentFactory.Krypton.Toolkit.KryptonButton BtnSaveGridData;
|
||||
private System.Windows.Forms.Panel codePnl;
|
||||
private ICSharpCode.TextEditor.TextEditorControl txtCode;
|
||||
private System.Windows.Forms.ToolStrip tsbPDMUpload;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton3;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColXuHao;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColDataType;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColLength;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColComment;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,944 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="imgList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>544, 17</value>
|
||||
</metadata>
|
||||
<data name="imgList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACU
|
||||
DAAAAk1TRnQBSQFMAgEBBQEAAUABBAFAAQQBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
|
||||
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
|
||||
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
|
||||
AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
|
||||
AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
|
||||
AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
|
||||
ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
|
||||
AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
|
||||
AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
|
||||
AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
|
||||
AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
|
||||
AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
|
||||
AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
|
||||
AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
|
||||
AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
|
||||
ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
|
||||
Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
|
||||
AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
|
||||
AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
|
||||
AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
|
||||
ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
|
||||
Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
|
||||
AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
|
||||
AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
|
||||
AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
|
||||
AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
|
||||
AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
|
||||
AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/wEAEKYwAAGzAeIC4Qfc
|
||||
BNsBpjAAAbMB4gEZAeEG3AXbAaYwAAGzAeIBkgESB9wE2wGmMAABswHiAdwBkgFtAdwD4QPcA9sBpjAA
|
||||
AbMC4gEZAdwBEgHcAYsBbAHcAWwBiwHbAtwBpjAAAbMD4gHcARIBGQHcARQBEQETAdwB2wLcAaYwAAGz
|
||||
A+IB3AESARkB4gHcAREBkQTcAaYwAAGzAfQC4gHcARUB4QHiAdwBEAGLAtsC3AGmMAABswH0AuIBtQFD
|
||||
AuoB7AEQAdwBiwHsAtwBpjAAAbMB/wLiARkB7AHqA+ICGQHhAtwBpjAAAbMB/wH0AuIB3AHqAhkB4gIZ
|
||||
AeEC3AGmMAABswH/AvQB4gEZAuwBbQHcAeICGQLhAaYwAAGzAf8D9AHiA9wD4gIZAeEBpjAAAbMF/wH0
|
||||
COIBpjAAELNSAAH/CfMB/zUAAQcB7Af3AesB8BQAAfQG8wbyAfMB/wIAAbUKZgFsBAABBwHyAfQB8wH0
|
||||
AfMB9ALzAvcD8wIAA60BiwWGAmYBhgMAAbwBHAFzAW4BSwJKAUQEFQFDARUB8wIAAfcB/wLxAfADvAMH
|
||||
AWwEAAEHAfMBBwHvAfIB9AG8Ae0BBwHtAa4BuwEHAe8CAAGtAvQC8wEZAfECGQHdAQkBhgMAAbwBmgGg
|
||||
AXoCWQFYBVIBSwEVAfMCAAG1BP8F9AEHAWwEAAEHAfMB8gEHAfIB/wG8Ae8B9AHtAZEB9AEZAe8CAAGt
|
||||
Af8HiwIJAYYDAAG8AZkBoAGaBHoBWQNTAVIBSgH0AgAB7wH/AbwBBwH/ArsB9AK1AQkBbAQAAQcB8wH0
|
||||
Av8B8wP/Ae0BkQH0ARkBtQIAAa0B/wL0AvMBGQHzARkB3QEJAYYDAAG8ARoBoAKaA3oCWQJTATEBSgH0
|
||||
AgABuwb/A/QBvAFsBAABBwHzAfQB/wH0AfMC/wH0Ae0BkQH0ARkBtQIAAa0B/wKLAfQCiwIZAt0BhgMA
|
||||
AbwBGgHDAaACmgN6AlkBUwExAUoB9AIAAbsB/wK8Af8CBwH/AQcBuwHwAWwEAAEHAfMB8gHvAfEB/wG8
|
||||
AfcB/wHtAZEB9AHzAbUCAAGtAv8C9ALzAhkB3QEZAYYDAAG8ARoBwwKgApoDegFZAVMBMQFuAfQCAAG7
|
||||
Cf8B8QFsBAABBwHzAQcBvAH0Af8B8wH3AQcB9wGRAfQB8wHvAgAB1AT/AfQC8wEZAfEBGQGGAwABvAEa
|
||||
AsMDoAGaA3oBWQFSAXMB9AIAAbsB/wK8Af8CvAH/AgcB8wFsBAABBwHwAbwB9AHzAfIB9AHyAfAB7AHt
|
||||
Af8BGQHvAgAB1QH/AosB9AH/AfQBGQHzAhkBiwMAAbwBGgHDAhoEoAGaA3oBcwH0AgABuwr/AWwEAAG8
|
||||
COwBbQEHAf8B8wHvAgAB1QH2Bf8B9AHzAhkBiwMAAfAEmQMcBZkBvAH/AgAB3APWAdUCtAWtBAAB/wHz
|
||||
AbwB8QbwAfMC9AG7AgABtALVAc8GrQGLAa0DAAHwAZkDGgGZAe8B8wH/BPQB/wMAAdwDCQLcAtYD1QGt
|
||||
BQAB/wQZAd0DCQTcAgABtAMJAdwD1gPVAa0DAAH/ArwBBwK8AfQKAAHcBNYB1QS0Aq0FAAH/AxkB3QMJ
|
||||
BdwCAAG1AdUDtALOBa0EAAX/HAAB/wbzBhlQAAFCAU0BPgcAAT4DAAEoAwABQAMAASADAAEBAQABAQYA
|
||||
AQEWAAP/gQAE/wHAAQcG/wHAAQcC/wGAAQABwAEDAcABAAHAAQMBgAEAAcABAwHAAQABwAEDAYABAAHA
|
||||
AQMBwAEAAcABAwGAAQABwAEDAcABAAHAAQMBgAEAAcABAwHAAQABwAEDAYABAAHAAQMBwAEAAcABAwGA
|
||||
AQABwAEDAcABAAHAAQMBgAEAAcABAwHAAQABwAEDAYABAAHAAQMBwAEAAcABAwGAAQABwAEDAcABAAHA
|
||||
AQMBgAEBAcABAwHgAQABwAEDAYAB/wHAAQMB4AEAAcABAwHBA/8B4AEACv8L
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="tlTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>466, 17</value>
|
||||
</metadata>
|
||||
<metadata name="ColXuHao.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="ColName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="ColDataType.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="ColLength.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="ColComment.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="BtnSaveGridData.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="ribbonPageFile.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>169, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="tsbConnect.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAEwAAABMCAYAAADHl1ErAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAARBSURBVHhe7dxpiFZVHMfxMbVyabdcWmzfKJKiRS0qSluJ
|
||||
KKhAKIoWokXUxPBFBhWmCEZEURFBQRQULVC9CCujlRZKX1REVJgKuZRmlmnL90tz4XI5zswZn2emM/x/
|
||||
8OHO3Osz4/nPvc899z7n3I5IJBKJ9DhDsR9OwAW4BjNxNxbjETxc4/cP4V7MwY24DKfhIOyGAZdhOBV3
|
||||
4Bl8ilXYgK34J8Pf+A1r8BVexwJcgn1RdCzU5XgJ65AqQKtswSe4EweguAzGLdiIVAPb6TmMRlHZAy/C
|
||||
BvzVuewrHrJnoqgMwW34EalGtdPLGIvishOuxBv4GanGtYrvYctwD8aguNh9OBA7Y3fYhZgHD1Mb5lny
|
||||
d6Qa351tWIuvsQQP4mocCrM/9vzvy3JyDN7FQni2rLIrDsbp8Ax6E+bifjyKx/FYg+vso92F2zENU3As
|
||||
moW5GJ4t7d8VFftdm2G/6S1YmMMxCK3OKFyIJ+Ge5144G0XlFKxH/VDy+zdhz90TwkWYgMNg32kvuMe4
|
||||
rHOd70vume5VZ+M63Ifn8S3qv0czUFRSBWuyl/8rVuBLfID38H6D677Ad/Bn/oHUz6sbkAVrpyhYpihY
|
||||
pihYpihYpihYpihYpihYpihYpihYpihYpihYpihYpihYpihYpihYpihYpihYpihYpihYpihYpihYpihY
|
||||
pihYpihYpihYpihYpuIK5uidX5BqTF9wKHtROQnV0KP+MB1FxWFKLyDVmHZbjckoLpPgeDCHWKYa1g4/
|
||||
4FY4ZLTIjMfNeAWOqHZEYqqhO8KTy0eYj4lwMHLxcWCwow0dn+q8oWfxIb7HT3AajSOh/+xc1rluE3xP
|
||||
XInleBUPwD/GWXCEYjuGg/5v4l4wHL7XOWTzREzFuTi50zk4D+fDPedoOMNjJIo95FodJ0RYIO3iikjX
|
||||
sTtSvTed4YpI13EeZVUw50RGuslRqArmSSKSyCIshRMgPkZVsM/wNtz2DjwpRIjFqIrUlWsRIa/BgnwD
|
||||
5xXVPQX7Ym6/CkXHiVb24JszN3JVUwOfQDN2RqvtFjT1+hyz0G8ZARvSKk+jGTu2rbxN5BVGv8W5kE6Q
|
||||
crLVjvCC2cZ4+DXjJVVVMCeqpl6f4woUHw9rC+KTB5zrWPc5qrsdlyJCnMVmQbpzPSLkBtgX646XTRHi
|
||||
jFonjzrJdHvc7t2NCPG2jbeUvYXjsslrSueIW9gI8WkA3g87Ej5vom4cjofb7WIUHTuVPmHJG4A2urcs
|
||||
1HHY3vMm3O5TCpxkn3p9Tx2Bft1LLZjF8pDyLkNvWQgb42OymvEZPofA3+O/Sb2+p5xgn/odfRqf3+Vz
|
||||
duxg9pZ7lh+W7A3/CHUWzMPSPXkfpF7fU/4/vZwrPjbEe/UeLhatziL5XDC3e2URIV6T+mwKC1ctq6/r
|
||||
66NgnfGw81MgPwBx6aNnVK2r1g+IzxvbEQuoSCQS6TodHf8CdiWsTC73UTEAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbRefresh.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbBuild.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsWordExp.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsExcelExp.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
HhM4NfU38485g/fFut8AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsPdfExp.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsHtmlExp.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsXmlExp.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsMarkDownExp.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="tsbPDMUpload.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>769, 17</value>
|
||||
</metadata>
|
||||
<data name="toolStripButton3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMPSURBVHhe7ZxPq01RGMaPf8WUsZCQKEL5VwwNfAhjkvKn
|
||||
+Axi4hsw4guYiRBXDAgpGRkxY6CUAc9zr12rfd93v2ufs9faq73ep3517r537XP6tZ619733nDXzeLJk
|
||||
LdgINk2IdWChrAF7wQVwDzwGTybEfXAZHAS9ZdHwDfAV/J0438FtsAVEhXJugT9AOuFUeQBMSawVZ05t
|
||||
cho4MTYANVxzaqiVxg9wCqjhgiwNrImbQAwv5bxaSYNq4hHgLc2q8CAv5dKgmuAtAC9Uq8KD/KY0qCZc
|
||||
kIELMnBBBi7IoGhBH8Gb1rHcFCvoPTgB9oGX/4+NQZGCXoMDoMluwBs26WdTU5wgzpxQTpOd4BmQxqSk
|
||||
KEGUcxJoYd2WgDQ2FcUIatdKS+66FSFIq5WWnHUbXZBVKy256jaqoNhaaclRt9EE9a2VltR1G0XQvLXS
|
||||
krJu2QXxV4chZk47qeqWVdBQtdKSom7ZBA1RK/4bysrQdcsiKLZWnAFHVx6KOQ2OrDzszJB1Sy4otlY7
|
||||
wFNwbfkrORcBz3d4+avuDFW3pILegphabQUPAcdc5QEl50Fz3kM8YGQ/eAHC19SXZIJ+g3PACmdOI4dc
|
||||
AVoaQSRW0lnwEzTj+pJ0BvEvgl0ziHLazxEriLwDXXXbA56DcExfkgoiH4C08Ia1CukjiGgzaRcY4vUn
|
||||
F0Qo6Rho0q5VSF9BpC2JM2eo155FEPkEjoPtoOu88wgirBsl8RK/6MIckk0Q4ZpkrQnzCiK8BXjVOrYo
|
||||
WQXFsIigFLggAxdk4IIMXJCBCzJwQQYuyMAFGbggAxdk4IIMXJCBCzIoTtB1wI8g8flD1oNLQBqTkuIE
|
||||
fQHSxz157DOQxqSEz12UoNJwQQYuyMAFGbggAxdk4IIMVEHcnoHbNUiDaoL3X+KHehnuZSENqok7QA3f
|
||||
+PQNSANr4Bc4A9SwZtyeQRpcA3eBuP6E2QxqXIv4HsdtICrcBYUziXtZSCebEqwVZ060nCb8cwM3+uBe
|
||||
FrTLy9+U4NWKCzLXHLNWVqa2PRdRL+Uez1CZzf4B3nCy+2JKK9UAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="ribbonPageAbout.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>309, 17</value>
|
||||
</metadata>
|
||||
<data name="toolStripButtonAbout.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
RK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="miniToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>638, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>66</value>
|
||||
</metadata>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEASEgAAAEAIACIVAAAFgAAACgAAABIAAAAkAAAAAEAIAAAAAAAAFEAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8vLwA+LS4ASkVBAEtL
|
||||
RABLS0YAS0tEAElHQgBAQD8APz8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAE1KQwBMSUMAU1BLAFtYUgBdWlQAXVxVAGBeWABramMADggHAyotJQYpKykFKiwlBiEf
|
||||
HQSAfXIAYF5ZAF9cVgBcWlQAWVdRAFZUTgBNTEYAQjc6AEc/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0xJAAAAAABQSUEAQ0E+AFVS
|
||||
TACEhYEAREE9CFVRTBVaV1A1WllSVl5cVm9iX1mCZmNdlGhmX5tpZ2CbaGZfm2VjXJhhX1mFX1xXdVxa
|
||||
VF1ZVlFAVFFLHkpKQwwABAABW1pRAEtJQgAbJBgARUU5AElJPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBPzwAODY1AFFPSQCFgnYAREM/DVZTTjlcWlRwYV9YqGdl
|
||||
X9RvbGXodXJr9Hl2b/59enL/hIB4/4eEfP+JhX3/iIR9/4WBev9/fHT/e3dw/3d0bfdyb2jsamdh3WRh
|
||||
W7heXFWDWFVPSktKQxUAAAABWVZTAEhFQwBPS0kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAT01HAExKRABYVk8AAAAAAk9NSCZbWVNwYmBavmxpYul0cWr/fnpy/4eDe/+Pi4L/lZCI/5qV
|
||||
jP+dmZD/oZyT/6Self+ln5f/paCX/6Oflf+gm5L/nZiP/5qVjP+UkIj/jomB/4WBev96d3D/cG1m8mVj
|
||||
XcxbWlOJU1BLOz07OwhcWlQATk1GAGdmWQAvLy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9NSAAAAAAAU1FMAP//
|
||||
/wBQTkgsWFZQimJgWdlua2T+e3dw/4eDe/+RjIT/mJOL/56ZkP+inZT/pJ+X/6ehmP+po5r/qqSb/6ul
|
||||
nP+rpZz/rKad/6ymnf+rpZz/qqSb/6mkm/+oopn/pZ+W/6Cbkv+alYz/kIyE/4SAef92c2z/aGVf6l1b
|
||||
VaVTUUtBQ0M7BldVTgBIRj8AT0xHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASkI/ADwxLQBTUEwAT05IE1lXUW9fXVfaamdh/3l1
|
||||
bv+Ggnv/kY2F/5mUi/+dmI//oJuS/6KdlP+kn5b/pqGY/6eimf+po5r/qqSb/6ulnP+rpZz/q6Wc/6ym
|
||||
nf+rpZz/q6Wc/6ulnP+qpJv/qaOa/6eimf+loJf/op2T/5yXj/+Tj4b/hoJ6/3Vya/9kYlzsV1VPk09O
|
||||
SCZbXFsAS0dCAExHQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAABFRT8ARUI9AG1xaQBRTUkvWVdSrWNgWvpxbmf/gHx1/4yIf/+Uj4f/mZOL/5yW
|
||||
jv+emZD/oJuS/6KdlP+kn5X/paCX/6ahmP+moJf/pqCX/6Wflv+inZT/op2U/6Wflv+nopj/qKKZ/6mj
|
||||
mv+qpJv/qKOa/6eimf+loJf/pJ+V/6Kdk/+empH/mZSL/46Kgv9/e3T/a2hi/1pYUs5NTEZTQjs3BEhH
|
||||
QQBHR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVF
|
||||
PwBHRkAAoJKOAFJQSUdYVlDPZGFb/3Zya/+EgHj/jYmA/5KOhf+VkYn/mZOL/5uWjf+dmI//npmQ/5yX
|
||||
jv+Yk4r/ko2E/4qFff+BfHT/fHhw/3Vxaf9taWL/a2hg/3JuZv94dGz/e3hv/4aBef+Qi4P/mZSM/5+a
|
||||
kf+inZT/o56U/6Gdk/+fm5H/nZiP/5qUjP+SjYX/hYF5/3BtZv9bWVPtTkxIcjw9OQZCQj0AOjo1AAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATk1IAEdHQQCdjYwATUxGS1RS
|
||||
TN5iX1n/dnJr/4R/eP+Lh37/j4qC/5GNhP+UkIj/l5GJ/5aQiP+RjIP/iYR8/4B7c/92cWn/bmli/2hk
|
||||
Xf9iXlf/XVlT/11ZU/9dWVP/WlZR/1VRTP9UUUv/V1RN/1tXUf9hXVb/bGdg/3dya/+GgXj/k46F/5qV
|
||||
jP+dmI//nJeO/5qVjf+Xkor/kY2F/4aCev9zcGj/W1lU80lIQ3MtLigGOzo2AD48OgAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pz8ATktFAE1KRwBMSkU8T01I3F5bVv9yb2j/gHx1/4eC
|
||||
e/+Lhn7/jomB/5CLg/+Qi4P/jId+/4WAd/9/eXH/fHdv/355cf+Dfnb/iIN7/4+Kgv+RjYX/ko2G/5iT
|
||||
i/+dl4//m5aO/5GMhf+Mh4D/i4Z//4SAeP99eXH/dnJr/3BsZf9vamP/dXBp/4B7c/+MiH//lpCI/5iS
|
||||
iv+WkYn/k4+H/4+Kgv+EgHj/cW1n/1dVT/NEQj5wMjAvBD8+OwBGRkQAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAADGu4cATkxFAEpIQxtLSkW/V1VP/21pY/97d3D/gn52/4WBev+JhHz/i4V9/4uF
|
||||
fP+Jg3r/iYN6/4+JgP+ZlIz/paCX/6+qov+1saj/uLOr/7u2rv+8t67/vLiv/724r/+9uK//vLev/7u2
|
||||
rv+6taz/ubOr/7axqP+yraX/raif/6Sfl/+YlIz/kIuD/4yHf/+Lh3//jYiA/5CLgv+SjYX/kY2E/4+L
|
||||
gv+Lhn7/f3t0/2lmYP9OTEfqQkE9TT87NgBKS0kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AABISEQAT1JRAkZEQH1OTEb9ZGFb/3Vxa/98eXH/gHx1/4N/d/+Ef3f/hoB4/4+JgP+dmI//r6qj/765
|
||||
sf/Gwrr/ycS9/8jDvP/Fwbn/wr61/8K9tP/CvbT/wb20/8G9tP/BvLP/wLyz/8C7sv+/u7L/vrqx/765
|
||||
sP++ubD/vbiv/7y3rv+6taz/tbCo/7Cro/+sp5//pKCa/6Kdl/+Yk4v/kIuD/42IgP+Lhn7/hYF5/3dz
|
||||
bP9dW1X/R0ZBx0ZFQx9FREEAWlpaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtHQwBGRT8ARUQ+KEdF
|
||||
QNpYVVD/bWlj/3dzbP97d3D/fXly/396cv+KhX3/pKCY/7+7tP/OysX/0s7I/8/Lw//Lx8D/ycS9/8fD
|
||||
u//Fwbn/xcC4/8S/t//AvLP/u7au/7q2rv+6tq7/ubWt/7m1rP+7tq7/wLyz/8C8s//AvLP/wLyz/8C7
|
||||
sv+/urH/vrmw/724sP+9uK//l5ON/7Cspv++u7b/r6ul/5eSi/+JhHz/hYF5/356c/9raGH/UE5J/ENC
|
||||
P3UAAAAAXl5eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtHQwBAQDoAREI9cUtIQ/1hXlj/cGxm/3Vx
|
||||
a/94dG3/gX11/52Ykf/Bvbf/19PO/9fUzv/Szsf/zcjB/8rGvv/FwLn/ubWu/6+ro/+empP/kY2H/4aD
|
||||
fP+Cf3j/gn54/4SAef+EgXr/hIB5/4J/eP+AfXb/gn95/4uIgf+Xk4z/pqKa/7Gtpf+6tq3/wbyz/8C8
|
||||
s//AvLL/rquk/52Ykv/Fwrr/z83I/8bDv/+gnZf/hoF6/397c/9zb2j/WldS/0NBPchAQD8bQkJBAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtJRQBPTkkMQ0E9rFBOSf9mY13/cG1n/3ZybP+MiIL/uLaw/9rX
|
||||
0//d29b/1NHK/9DKw//Iw7z/ubSt/52ak/+Jhn//endx/3Rxav94dW7/fXpz/4F9dv+Ggnr/jIiA/5CL
|
||||
g/+RjYT/kYyE/4+Lg/+Khn7/hIB4/4B8df97d3D/dHFr/3Zzbf+Bfnf/kY6H/6umnv+7tq7/yMS9/5qV
|
||||
kf+8tq7/xsK7/9nX0v/X1dL/p6Oe/4F9dv92cmv/Yl9Z/0ZEQO87OjhFNDIvAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAEZEQABGREAdRUM/2FVSTv9oZV//c3Bq/5aTjv/Pzcr/5+Xi/93a1P/Tz8j/ycW9/62o
|
||||
ov+Lh4H/dXJs/3Vxa/97eHH/hoN7/4+Lg/+Wkon/m5aO/5+bkf+inpT/paCX/6eimf+oo5r/qaOa/6ij
|
||||
mv+moZj/o56V/6Cbkv+bl47/lZGI/46Jgf+Cf3f/eHVu/3Rxav9+e3T/qqaf/62ppP+qpZ3/v7qx/8nF
|
||||
vv/i4Nz/4N/d/6eln/96dm//ZmNd/0lHQ/06OTdsNDMrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEpI
|
||||
RABJSEQkSkhE7FlWUf9raGP/mJaR/9va1//q5+T/3NnT/87Kw/+tqqP/hoN9/3FuZ/90cGr/gX52/42I
|
||||
gP+WkYj/nJeO/6Cbkv+jnpX/paCX/6eimf+po5r/qqSb/6ulnP+rpZz/rKad/6ymnf+spp3/q6Wc/6qk
|
||||
nP+po5r/pqGY/6Oelf+emZD/lpGJ/4uHf/98eHH/fntz/66rpf9tamT/Y2Ba/7ezq//NycP/6Ofk/+Xk
|
||||
4/+fnJf/aWZg/0xJRf85NzWDXVhLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5NSQBOTUklTkxI7F1b
|
||||
Vv+Ni4b/2tjV/+3r6f/d2dP/vrqz/4eEfv9qZ2H/cW1m/397dP+MiH//lZCH/5qVjf+emZD/oJuS/6Kd
|
||||
lP+kn5b/pqGX/6eimf+po5v/qqSb/6ulnP+rpZz/rKWc/6ymnf+spp3/q6Wc/6ulnP+qpJv/qaOa/6ei
|
||||
mf+loJf/o56U/5+ZkP+Xkon/i4d//25rY/8wLyj/Dg0L/3Rxbf/Ev7j/1dLM//X08//X1dP/fHl0/0xK
|
||||
Rf82NTKZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBPSwBPTkolUE5L7HNwbf/KyMb/7+7r/9zZ
|
||||
0/+tqqT/cG1n/2RhW/91cmv/hYF5/4+Lg/+VkYj/mZSM/5yWjv+emZD/oJuS/6Kdk/+jnpX/pJ+V/6Oe
|
||||
lf+hnJT/oZuS/52Xjv+blY3/mpWM/5yXjv+hnJP/o56U/6agmP+oopn/qKKZ/6eimP+loJf/pJ+V/6Kd
|
||||
k/+fm5H/nJeO/3BtZf83Ni3/FRQQ/xsaGP+Cf3n/wLy1/+Xi3v/29vX/qaek/09NSf8yMS6aAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJRTABPTkolWFZS7KKgnv/q6Ob/4d3Z/6Sgmv9kYlv/ZmNd/3l1
|
||||
bv+Hgnv/joqB/5KOhf+VkIj/mZOL/5uVjf+cl47/m5aN/5eSif+QjIP/iIN7/396cv92cWr/cGxl/2hj
|
||||
Xf9jX1j/YV1X/2NfWf9rZl//cGxl/3p2b/+FgXn/kIuD/5mUi/+fmpD/oZyT/6Gck/+fmpH/npmQ/4iD
|
||||
fP9IRz3/JSQd/wcGBf8zMi//fnt1/8XBuv/08/H/1NPR/19dWf8wLiyZAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAFZVUQBQTkolbGpn7MvJxv/o5eL/op+a/1xaVP9kYVv/eHRt/4WBef+Lh3//joqC/5GN
|
||||
hP+Uj4f/lZCI/5ONhf+Mh37/g311/3p1bf9xbWX/bWhh/2llXv9lYVr/ZGFa/2djXP9lYVr/Y19Z/2Fd
|
||||
WP9bV1L/WlZR/11YUv9fW1X/ZmFb/29rY/98d2//ioV9/5aRiP+bl43/nJaO/5eRif9VU0r/NDMq/w4O
|
||||
Cv8VFBP/UlBL/3t4cv/Z1tL/6+vp/3p5df8wLy2ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJg
|
||||
XABXVVEliIaD7d/d2v+0saz/W1lT/2BeWP90cWr/gX12/4eCe/+Khn7/jYmA/4+Kgv+OiYH/iYR7/4N9
|
||||
dP+AenL/gXxz/4aBef+NiYH/lZCJ/5yXj/+emZH/op2V/6eimv+nopr/p6Ka/6WgmP+dmJD/mZSM/5OP
|
||||
h/+Khn7/gn12/3l1bf91cGj/dnJq/355cv+Ig3v/kYyD/5aRiP9qaGD/PTwy/x8eGP8FBAP/QDw3/1xa
|
||||
VP+KiIT/5+bk/5eVkv81NTKZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9uagBiYV0nn56b7cnH
|
||||
xP9mZF//WldR/3BtZv98eHH/gX52/4WBev+Ig3z/iYN7/4qEe/+KhHv/joiA/5iTi/+moZn/s66m/7u2
|
||||
rv++urL/vrqx/7+7sv/Au7L/wLuy/7+7sv+/urH/v7qx/765sP+9ubD/vbiv/7u2rv+5tKv/tbCo/6+q
|
||||
of+nopn/nZiR/5aSi/+Tj4j/kIyE/5GMhP98eHD/RUQ6/y8uJv8KCgb/HRkW/2FdV/9ZV1L/qKek/6Wj
|
||||
oP89PDmaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzcABraWYooZ+c7YiGgv9RTkn/aGRe/3Zy
|
||||
a/98eHH/gHx0/4J+dv+CfnX/iIN6/5iTiv+sp6D/vbix/8fDvP/Lxr//y8a//8nEvP/Fwbn/w762/8K+
|
||||
tf/CvrX/wr21/8K+tf/CvbT/wb20/8C8s//Au7L/v7uy/7+6sf++urH/vrmw/724sP+8t6//urSs/7aw
|
||||
qP+yraX/sKyl/66qpP+dmJL/VlVM/zo5L/8YFxL/CAUD/0xIQv9iYFn/Y2Fd/4qJhf9DQj6YAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIF+ewCCgH0pioiF7VdVUP9aV1L/bmpk/3dzbP96d2//fHhx/4F8
|
||||
dP+Sjob/sKyl/8nFv//U0cv/0s7I/83Jwv/Kxr7/yMS8/8bCuv/Dv7f/wby0/765sf+1san/sq2l/6mm
|
||||
nv+opJz/p6Sc/6+ro/+yrqb/uLSs/7y4r/++ubD/v7uy/8G8s//Au7L/v7qx/765sP+8uK//vLev/766
|
||||
tP/Fwr3/goB6/0JBN/8oKCD/BgUD/yYhG/9lYVv/VVNN/1dWUv9DQj6H////AAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAHh2cgCDgH0hX11Z3k1KRv9iX1r/cG1m/3Vxav95dG3/h4N8/6yoov/Pzcj/2tfS/9bS
|
||||
zP/Qy8T/zMfA/8jDvP+8uLH/rKmi/5uYkf+NioL/gH13/3h1b/94dW7/fHhx/3p3cP96d3D/endv/3x5
|
||||
cv96d3D/eHVu/3t4cv+HhH3/lJCJ/6OfmP+wrKT/vrqx/8G8s//AvLP/v7qx/766sf/Fwbr/sa6p/09O
|
||||
Rf82Niz/EREN/wwIBP9QS0P/XVpV/0A+Ov0zMzBoPzw3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJP
|
||||
SwBWU08YRkRBy1FPSv9nZF7/cGxm/3h0bv+Xk47/x8XA/+De2v/d2tX/08/I/87Jwv/Au7T/qaSe/4uH
|
||||
gf97eHL/dXJs/3Vya/98eXH/g394/4mFff+OioH/k46G/5eSiv+ZlIv/mZSL/5eSiv+Tjob/jYmB/4iE
|
||||
ff+Cfnf/endv/3VybP94dW//goB5/5qXj/+wraT/v7qy/8K9tP/BvbT/vrmy/2tpYf8+PTP/ISEa/wUD
|
||||
Af8tJx//XltV/0RCPvw3NjNbKigjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZEPwBGQz8fRkQ/3lZT
|
||||
T/9oZV//dnNt/6OhnP/a2NX/5+Tg/9rWz//QzMT/vbmx/5eUjf96d3D/cW1n/3h0bf+Cfnb/jIiA/5SQ
|
||||
iP+alo3/n5qR/6OelP+loJf/qKKZ/6mkm/+qpJv/q6Wc/6qlnP+po5r/p6GY/6Wflv+hnJP/nJeO/5WQ
|
||||
iP+Lh3//f3x0/3Rxav9zcGn/h4R9/6qmnv+/u7L/xcC4/4yJgf9FRDr/MTAo/wsLCP8TDQf/TEdA/0tJ
|
||||
RP47OTZxNzUvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtJRQBLSUUlS0lF7FpXUv9va2b/paOf/+Tj
|
||||
4P/n5eH/2NTO/8XAuf+Zlo//dXJs/25rZf95dW7/h4N7/5GMhP+ZlIv/npmQ/6Gck/+kn5b/paCY/6ei
|
||||
mf+po5r/qqSb/6ulnP+rpZz/rKad/6ymnf+spp3/q6Wc/6ulnP+qpJv/qKKZ/6Wgl/+hnJP/m5aN/5KN
|
||||
hP+EgHj/dXFq/3BtZ/+Fgnv/r6uj/6+ro/9SUUf/PDwy/xoaFP8GAwD/MSoi/0lHQv85NzWHcGlYAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9NSQBPTUklT01J7GBeWf+cmpb/4+Lg/+ro5P/X083/r6ul/3p3
|
||||
cf9pZmD/dnJr/4SAef+Pi4P/l5GJ/5uWjv+emZD/oJuS/6KdlP+kn5X/pqGX/6eimf+po5r/qqSb/6qk
|
||||
m/+rpZz/q6Wc/6ulnP+rpZz/q6Wc/6ulnP+qpJv/qKOa/6eimf+loJf/pJ+V/6Cckv+alo3/kIyE/4J+
|
||||
dv9va2X/bWpk/5GNhv9raWH/QkE2/ysqIv8IBwX/GBEK/z06Nf83NjOZAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAFBPSwBQTkslUU9L7H58eP/Y1tT/7uvo/9TQyv+ZlpD/aWZh/2tnYf98eHH/iYV9/5GN
|
||||
hP+WkYn/mZSM/5uWjv+emZD/oJuS/6Gck/+inZP/oZuS/52Yj/+alYz/lpGI/5CLg/+OioH/joqB/4+K
|
||||
gv+VkIf/mpWM/5+Zkf+jnZX/paCX/6WhmP+loJb/o56V/6Kdk/+gm5H/nJeP/5aRiP+JhX3/d3Ns/2dl
|
||||
Xv9aWFH/REM5/zg4Lv8TEw//CgYB/yokHP8yMS+aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJR
|
||||
TQBPTkolW1lW7K6sqf/t6+j/1tLN/4uIgv9fXVf/bGli/356c/+JhX3/j4uC/5KOhf+VkIj/mJOL/5qV
|
||||
jf+alYz/l5KK/5GMhP+Ig3v/fnlx/3NvZ/9qZl//ZGBZ/11ZU/9aVlD/V1RO/1hUT/9dWVP/Yl9Y/2xn
|
||||
Yf93cmr/g352/5GMg/+alYz/n5qR/6Cbkv+fmpH/nZiP/5uVjf+WkYn/jIiA/3x4cf9hX1n/QUA3/0FA
|
||||
Nf8kIxz/BgUD/xoSC/8oJSKamv//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlXUwBRT0sldHJv7NLQ
|
||||
zv/h3tn/jImD/1tYUv9qZ2H/fHhx/4aCev+Lh37/joqB/5GNhP+Tj4b/k46F/4+Kgf+Hgnr/fnlx/3dy
|
||||
av9ybWb/cGxk/29rZP9taWL/cW1m/3JuZ/9wbGX/bmtk/25qZP9oZV//Y19Z/2RfWf9iXVf/ZGBa/2tm
|
||||
X/91cGj/gn51/4+Kgv+Yk4r/m5WN/5qUjP+Xkor/k46G/4uHfv97eHD/UVBI/0JBN/8zMin/Dg0K/w4I
|
||||
Av8eFw+nDTBaATUaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjYABZV1QmkI6L7eDe2/+fnJj/V1RP/2Zj
|
||||
Xf94dW3/gn53/4aCe/+KhX7/jYiA/46JgP+Nh37/h4J4/4N+dP+Efnb/ioR8/5KOhf+dmJH/p6Ob/7Cs
|
||||
pP+zr6f/urav/7y4sf+7t7D/urau/7i0rP+xrKX/qaWd/6Sfl/+alY3/kYyE/4aCev99eHD/enVu/355
|
||||
cf+FgHj/jYiA/5SPhv+UkIj/ko6G/4+Lgv+JhH3/amdg/0RDOv8+PTP/HBwW/wcFAv8XDgTGCQUBEgIA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFwbABkY18noqCd7b+9uv9dW1f/XVtV/3NvaP99eXH/gX12/4WA
|
||||
ef+Hgnv/iIJ6/4mDev+Nh37/l5KJ/6ikm/+7t7D/y8jC/9fUz//d2tb/3tzY/+Dd2f/e3Nf/3dvV/9vY
|
||||
0//Y1dD/1tPN/9PQyv/QzMX/zcnC/8nFvv/FwLn/wLuz/7m0rP+wq6L/pqCZ/56Zkf+ZlI3/lpGL/5OO
|
||||
hv+QjIP/kIuD/46Kgf+Lh3//gHx1/09NRP9CQTf/LCwk/wkJBv8QCQL0Fg0DTyMVBQAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAHl4dABycG0ooJ6a7Xd1cf9RT0r/amZg/3dzbP98eHH/f3t0/4F8dP+CfXX/jId//6Oe
|
||||
lv++urT/2NXQ/+fl4v/u7On/7u3q/+3r6P/q6OX/5+Xi/+Ti3//i4Nz/393Y/93a1f/a19L/19TP/9TR
|
||||
zP/Sz8j/0MzF/83Jwv/Kxr//x8O8/8TAuP/BvbT/vbiw/7mzq/+0sKj/s6+o/7Ovqf+qp6D/mZSM/42I
|
||||
gP+KhH3/hoJ7/2ViWv9DQjf/Ojkw/xUVEP8JBQH/GA0EoQIAAAcKBQIAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIKA
|
||||
fACHhYIogX977FFPS/9cWVT/b2tl/3ZybP96dm7/fHhw/4eCev+inpb/yMS//+Xj4P/z8vD/9vX0//Tz
|
||||
8f/x8O7/7+3q/+zq5//p5+T/5+Xi/+Xj3//j4N3/4N7Z/97b1v/b2NP/2NXQ/9bTzv/T0Mr/0c7H/87L
|
||||
xP/Mx8H/ycS9/8bCuv/Dv7f/wLyz/7+6sf++ubD/vLev/725sv/Fwrz/w8C7/6mlnv+OiYL/hYB5/3Zy
|
||||
a/9JRz7/QkE2/yYlHv8GBQP/EwsC5Q4GADMJAwAABgUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBuagB4dnIfV1VR2E1L
|
||||
R/9kYVv/cG1n/3Vxav97d3D/lZGK/8TBvP/o5+T/+Pf2//n49//29vT/9PPx//Lx7//w7+3/7u3q/+zq
|
||||
5//p5+T/5+Xi/+Xj3//j4d3/4d/a/9/c1//d2dT/2tbR/9fUz//U0cz/0s/I/9DMxf/NycL/y8a//8fD
|
||||
vP/Fwbn/wr61/8C8s//AvLP/wLuy/7+6sf/BvbT/zcrE/9bU0f+7uLP/j4uF/397c/9WVEz/QkE3/zQz
|
||||
Kv8VFRL/Ih0X/y8nH3wAAAABAQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtJRABMSUUXREI+yVJQS/9nZF//cG1m/315
|
||||
c/+npJ7/3NrX//b29P/5+fj/+Pf2//b19P/19PL/8/Lw//Lw7v/w7uz/7uzp/+zq5//p5+T/6OXi/+bj
|
||||
4P/j4d7/4d/b/9/d1//d2tX/29fS/9jVz//V0s3/09DJ/9HNxv/PysT/zMfA/8nFvv/Gwrv/xL+3/8K+
|
||||
tf/CvbX/wb20/8G8tP/AvLP/wr62/9TQy//l4+H/yMbC/4+LhP9pZV7/SEY9/19eVv90cm3/rKaf/2Ve
|
||||
VsoAAAAZGxYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVEPwBFQz4hRkRA41dUT/9oZV//fXp0/7a0sP/p6Ob/+fj3//j3
|
||||
9v/29fT/9fTz//X08v/z8vD/8vHv//Hv7f/v7uv/7uvo/+vp5v/p5+T/5+Xi/+bj4P/k4d3/4t/b/9/d
|
||||
2P/e2tX/29jT/9jV0P/W083/1NDL/9LOx//PzMT/zcjC/8vGv//Iw7z/xcG6/8TAuP/Ev7f/w7+2/8O/
|
||||
tv/DvrX/wr61/8bBuf/a2NP/7ezq/8PBvf9+enT/ZWJc/7q4s/9ubWj/T0xH/yIbFPYSCQJXGA4FABcK
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAExLRwBMS0clTEpH7VpXUv9zcGv/tbOv//Hx7//5+Pf/9vXz//Xz8v/08/H/9PPx//Py
|
||||
8P/y8e7/8e/t//Du6//u7On/7ern/+ro5f/p5uP/5+Xi/+bj4P/k4d3/4t/b/+Dd2P/e2tX/3NjT/9nW
|
||||
0f/X087/1dHL/9LPyP/QzcX/zsrC/8zHwP/JxL3/x8K7/8bCuv/Gwbr/xcG5/8XBuf/FwLj/xMC3/8S/
|
||||
t//Iw7z/4d7b//Lx8P+2tLD/Y2Bb/2NhWP9DQTj/FRUQ/wYDAP8YDgSmAAAACQYCAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBO
|
||||
SgBPTkolT01J7GRiXf+qqKT/7u3r//j39v/08/H/8/Lw//Py8P/y8e//8vHv//Hw7v/x7+3/8O7r/+/t
|
||||
6f/t6+j/7Onm/+ro5P/o5uP/5+Xh/+Xj3//k4d3/4t/b/+Dd1//e29b/3NjT/9rW0f/X1M7/1dLM/9PQ
|
||||
yf/Rzcb/z8vD/83Iwf/Lxr//ycS9/8nEvf/Iw7z/yMO8/8fDu//Hwrv/xsK6/8bBuv/Fwbn/zcnC/+7t
|
||||
6f/r6+n/jouH/0A+Nv9DQjf/Kikh/wgHBP8SCgLnFg0DMx4RBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBPSwBQT0slUlBM7IeF
|
||||
gf/g393/9/b1//Px7//y8O7/8vDu//Lw7v/x8O3/8e/t//Du7P/v7ur/7+3p/+7r6P/s6ub/6+jl/+nn
|
||||
5P/o5eL/5uTg/+Xj3v/j4dz/4t/a/+Dd1//f29b/3dnT/9vW0f/Y1M//1tLM/9TQyv/Szsf/0MzE/87J
|
||||
wv/Mx8D/zMa//8vGvv/Lxb7/ysW+/8rEvf/JxL3/ycS8/8jDvP/Hw7v/yMK7/9vY0v/5+Pf/wcC+/09N
|
||||
SP9ZV07/XlxU/xUUEP8LBgH+FAsCeyUWBgD/fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFNSTgBPTkolX15a7Le1s//z8vD/8/Hu//Dv
|
||||
7P/x7+z/8O/s//Dv7P/w7uv/8O7q/+/t6f/u7Oj/7evn/+3q5v/r6eX/6ufk/+jm4//n5eH/5uTg/+Xi
|
||||
3v/j4Nz/4t/Z/+Dd1//f3Nb/3dnT/9vX0f/Y1c//1tPN/9XRy//Tz8f/0c3F/8/Lw//OycL/zcnB/83I
|
||||
wf/Nx8D/zMfA/8zGv//Mxr//y8a//8vFvv/Kxb7/ycS9/8/Kw//t6+j/4uHg/2VkYP9YVk/9hoN9/z07
|
||||
Nf8FAwH/FAsDwgsEABMHAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFtZVgBRUEwlfHp37NrZ1//z8u//8O7q//Dt6v/w7er/7+3q/+/t
|
||||
6f/v7en/7+zo/+7s6P/t6+f/7enm/+zo5f/q6OT/6efj/+jl4v/n5OD/5uPf/+Xi3f/j4Nz/4t/Z/+Dd
|
||||
1//f3Nb/3dnU/9vX0f/Z1c//19PN/9XRy//T0Mj/0s7G/9HMxP/QzMT/0MzE/8/Lw//Py8P/z8rC/87J
|
||||
wv/OyMH/zcjB/83HwP/Mx8D/zMa//8zHv//e29b/7+7t/4uKh/45ODLrh4V//V9dVv8REQ3/CgUA8xQK
|
||||
AUccDwIABQMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAGlnZABbWlcmlZSR7ejm5P/x7+v/7+3p/+/t6P/v7en/7+3p/+7s6P/u7Oj/7uvn/+3q
|
||||
5//t6eb/7Onl/+ro5P/p5+P/6ebi/+jl4f/n5OD/5eLe/+Th3f/j4Nv/4t7Z/+Dd1//f3NX/3dnU/9zX
|
||||
0f/a1dD/2NTO/9bSy//U0Mn/08/H/9POx//Szsb/0s7G/9HNxf/RzcX/0czE/9DMxP/Qy8P/z8vD/8/L
|
||||
w//PysL/zsnC/83Iwf/W0sz/7uzq/6Oinv4zMi7CbWtk3ISBe/8sKyX/BgQB/xEJApQDAQACAQEAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJx
|
||||
bQBlZGAnoqGe7ezp5v/w7en/7uzn/+7s6P/u7Oj/7uzo/+7r5//u6uf/7erm/+3p5v/s6OX/6+jk/+rn
|
||||
4//p5uL/6OXh/+fk4P/m49//5eLe/+Th3f/j4Nv/4d7Y/+Dd1v/f3NX/3tnU/9zX0v/a1tD/2NTO/9fT
|
||||
zP/V0cv/1dHK/9XQyf/U0Mn/1M/I/9PPx//Tz8f/0s7G/9LOxv/SzcX/0c3F/9HNxf/QzMT/0MzE/8/L
|
||||
w//Tz8j/6Obi/6mnpP88OzecTkxFkoiGgP9WVE7/CQgG/w4HAdULBQEgBAEAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHt5dgBxcGwpq6mm7e3r
|
||||
6P/v7ej/7uzn/+7s5//u6+f/7urn/+7q5//t6ub/7enm/+zp5f/s6OT/6ufj/+nn4//p5uL/6OXh/+fk
|
||||
4P/m497/5eLd/+Th3P/j4Nr/4t7Y/+Hd1//g3NX/3tnU/93Y0v/b1tD/2dXO/9fTzf/X083/19LM/9bS
|
||||
zP/W0sv/1dHL/9XRyv/V0Mr/1NDJ/9TPyP/Tz8j/08/H/9POx//Szsb/0s3G/9HNxf/Uz8j/5ePe/6im
|
||||
ov9CQT2PJyYfOYOBe+h7eXP/IiEc/wUCAPgRCQFbIxICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIKBfQB7enYnr66q6u3r5//v7Of/7uvn/+7q
|
||||
5v/u6ub/7urm/+3q5v/t6eX/7enl/+zo5P/r6OP/6ufj/+nn4v/p5uH/6OXg/+fk3//m497/5eLd/+Th
|
||||
3P/j4Nr/4t7Y/+Hd1//g3Nb/39rU/93Y0v/c19H/29bQ/9vWz//a1c//2dXO/9nUzv/Y1M3/2NPN/9fT
|
||||
zP/X0sz/1tLM/9bSy//W0cv/1dHK/9XQyv/U0Mn/1NDI/9PPx//V0cn/4+Db/6Shnv9DQj56AAAABmJg
|
||||
Wp+Uko3/SEZA/wYFAv8KBACmDAIACAsDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHp3cwBsamYcpaKf0+fk4f/v6+f/7uvm/+7q5v/u6ub/7urm/+3p
|
||||
5f/t6eX/7Ojk/+zo5P/r6OP/6ufi/+nm4v/p5uH/6OXg/+fk3//m497/5uLd/+Xh3P/k4Nr/49/Y/+He
|
||||
1//g3Nb/39vU/97Z0//e2NL/3djS/93Y0v/c19H/3NfR/9vW0P/b1tD/29bP/9rVz//Z1c//2dTO/9jU
|
||||
zv/Y083/19PN/9fTzP/W0sz/1tLL/9bRy//X08z/39zX/5uYlPtGREBUW1lTADk3MkSPjYjsdXJs/xgX
|
||||
FP8FAQDeCgMAJgkDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAHFuagBQTUoKnZuWp93b1//w7ej/7+vm/+7q5v/u6ub/7urm/+7q5f/t6eX/7enk/+zo
|
||||
5P/s6OP/6ufi/+nm4v/p5uH/6OXg/+jk3//n497/5uLd/+Xh3P/k4Nv/49/Z/+Le1//h3db/4d3W/+Dc
|
||||
1f/g29T/39rU/9/a1P/e2dP/3tnT/97Y0v/d2NL/3dfR/9zX0f/c19H/29bQ/9rW0P/a1c//2dXP/9nV
|
||||
zv/Z1M7/2NTN/9jTzf/a1s//2dXP/5CNiOZGREEuRUM/AAAAAAt6eXOolJKO/z89N/8CAQD5BAAAZAUA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1q
|
||||
aACqp6IAkY6Kbs/Lx/zv7Of/7+zm/+/r5v/v6ub/7+rm/+7q5f/u6eX/7enk/+3o5P/s6OP/6+fi/+rn
|
||||
4v/p5uH/6eXg/+jk3//n497/5uPd/+bi3P/l4dv/5ODa/+Pf2f/j39j/4t7Y/+Le1//h3df/4d3W/+Hd
|
||||
1v/g3NX/4NzV/9/b1P/f29T/39rT/97Z0//e2NL/3djS/93Y0v/d19H/3NfR/9zW0P/b1tD/29bP/9rV
|
||||
z//c2NH/x8S+/316dbY8ODQOT0tHAGVjWQBQT0hQmJeT8nRxa/8SEQ7/AAAApAAAAAkAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL+4tACQjIkAhIF9Kri1
|
||||
sdvp5eD/8O3n//Ds5//v6+b/7+rm/+/q5f/u6eX/7unl/+3o5P/t6OP/7Oji/+zn4v/q5uH/6eXh/+nl
|
||||
3//o5N//5+Pe/+fj3f/m4t3/5uLc/+Xh2//l4dv/5ODa/+Tg2f/j39n/49/Y/+Pf2P/i3tf/4t7X/+Le
|
||||
1//h3db/4d3W/+Dc1f/g3NX/39vU/9/b1P/f2tT/3tnT/97Z0//d2NL/3djS/93X0f/b1tD/sK2n+nVy
|
||||
bmiloZkAQ0ZLACIhHAAAAAANkI+KspeUkP9APjn/AAAA3wAAACYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFg38AVlZSBJ6cl4bU0Mz+8Ozn//Ht
|
||||
5//x7ef/8Ozm/+/r5v/v6uX/7unl/+7p5P/u6eT/7ejj/+zo4v/s5+L/6ubh/+rm4f/p5eD/6eXg/+nl
|
||||
3//o5N//6OTe/+fj3v/n493/5uLd/+bi3P/m4tz/5eHb/+Xh2//k4Nr/5ODZ/+Tg2f/j39j/49/Y/+Le
|
||||
1//i3tf/4d3W/+Hd1v/h3db/4NzV/+Dc1f/f29T/39rU/9/a1P/OycP/mpeRxHZybRp+e3UAU1NTAAAA
|
||||
AADGwr0AeHZxT6imo/N5dnD/ERAO+QAAAGMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPytAAhoN9AIiGgCCyr6vI49/a//Dt5//x7ef/8e3o//Ds
|
||||
5//w6+b/8Ovm/+/r5f/v6uX/7+rl/+7p5P/u6eT/7ejj/+3o4//s6OL/6+fi/+vn4f/q5uH/6ubg/+nl
|
||||
4P/p5eD/6eXf/+jk3//o5N7/5+Pe/+fj3f/m4t3/5uLc/+bi3P/l4dv/5eHa/+Tg2v/k4Nn/49/Z/+Pf
|
||||
2P/j39j/4t7X/+Le1//h3db/4d3W/9vX0f+yr6nth4N+VJ6UlQB7e3IAAAAAAAUFAAAmJSIAPjw4DKup
|
||||
pq+hnpr/RUM+/wAAAKAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAADDwsIAGz0YALu4tQCWk5BKwb645erm4P/x7Of/8u7p//Lv6v/w7ef/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm/+/r5f/v6+X/7+vl/+/q5f/u6uT/7unk/+7o4//t6OP/7Oji/+zn4v/r5+L/6+bh/+rm
|
||||
4f/q5eD/6eXg/+nl3//o5N//6OTe/+fj3v/n493/5+Pd/+bi3f/m4tz/5eHc/+Xh2//k4Nr/5ODa/+Tg
|
||||
2f/j39n/4NzW/8C8t/uTkIqFdnRxCI2LhQDPz8EAAAAAAAAAAAAuLisA1dTRANXTzkmvrarzkIyG/xwb
|
||||
GdEAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAeHhvAHZ2cgANFBQCnpyWZ8vHwu7q5eD/8e3o//Pw7P/z8Ov/8e3n//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ovm/+/r5f/v6+X/7+rl/+7p5P/u6eT/7ejj/+3o4//s5+L/7Ofi/+vn
|
||||
4f/r5uH/6ubh/+rl4P/p5eD/6eXf/+jk3//o5N7/5+Pe/+fj3v/n493/5uLd/+bi3P/j39n/yMW//5mW
|
||||
kaNoZWERfn95AP///wAAAAAAAAAAAAAAAAAAAAAA0c3FAOPe1Q/KycazqaWh/3FtaPQODQxCLCooAK+n
|
||||
nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAH19
|
||||
eACRkIsAnJmVBaGfmmfBvrnl5uHc//Lu6f/18u7/9PHt//Hu6f/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/7+vl/+/q5f/u6uT/7unk/+7p5P/t6OP/7ejj/+zn
|
||||
4v/s5+L/6+fh/+rm4f/q5uD/6eXg/+nl4P/p5d//6eXf/+Pf2v/EwLv6m5eSm3p4cxuMioMAoKmXAH5z
|
||||
cwAAAAAAAAAAAAAAAAAAAAAA3NjSAN7c2QDh3ttQtbOx8bKtp/+inZaLZmFaAq6mngAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVkYoAlZONAFJY
|
||||
VQKZlZBOuLWw0dvX0v/v6+b/9fPv//b08P/z8Oz/8e3n//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ovm//Dr5v/v6+X/7+rl/+/q5f/u6eT/7unk/+3o
|
||||
4//t6OP/7Ofi/+zn4v/q5eD/3dnU/7u4s+uVkYx/dHNtD5SSjQAAAAAALCsqAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAODc1gDk3tYK2NbTn6qmo//HwLnTwbuyHbmyqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj42IAIaCfgD///8AiYeFK6ej
|
||||
n5/Hw77x5eHc//Tx7f/49vP/9/Tx//Pw7P/x7ej/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w6+b/8Ovm//Dr5v/v6uX/7unk/+bh
|
||||
3P/KxsH9qKahxIuJhU1UUE4Fe3lzAI6LhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
|
||||
/wDl4t4A7OnlLrCuqsOnpJ6e2NDJD763sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAH11cgCPgoEAkI6LAHdycAuXlJBUsq+ruMvH
|
||||
w/Xl4t7/9fPx//r49v/59/T/9fLu//Lv6v/x7ef/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds
|
||||
5v/w7Ob/8Ozm//Ds5v/w7Ob/8Ozm//Ds5v/w7Ob/8e3n/+/r5f/l4Nv/zsrF/bKuqdiTkIx7endzHK2m
|
||||
qwCHhH8Ah4N/ALa2tgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM/JxADLyMEA4+DYAb26
|
||||
sxOmpJ4NuLGrAL63sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AY2VzAIyIhQCxq6cAiIaDE5qYlFauq6exxsTA6dza
|
||||
1//v7ev/+Pf1//r59//49vP/9vPv//Tw7P/y7+r/8u7p//Hu6P/x7ef/8e3n//Ht5//x7ef/8e3n//Hu
|
||||
6P/y7uj/8O3n/+3p4//m4tz/2tbR/8bCvfauq6bGmJWQeICAeigAAAABiYeCAHh4cADJyLwAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX1M8A6ebhALm2sACmpJ4AAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJSUjgCanJYAkI2KALy4swBqamkLjoyIN6OhnXSysKy3xsTA39bU
|
||||
0ffi4d7/7Orn//Du7P/z8O3/8/Dt//Lw7P/x7ur/8Ozo/+/r5//u6uX/6OXg/+Lf2v/Z1dD/zMjD/b67
|
||||
t+etqqbJn5yXko6MiExwb2sY////AI2MhQB+fHoAlpOPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAADAwMAP///wCEgoEAlJGPAP///wBcW1kJe3p2LJGPi1KjoZ13rKmmmrKv
|
||||
rLq5trPRvLq33L27t+C6uLTlt7Wx4ra0sNuyr6vYqKaiwaGemqeal5OEjouHYHx6djhraGcSAAAAAZqY
|
||||
kwB+fHgAXmBeAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAD///8Axse9ADUzMQBqa2oAfHt4AJCOigD///8AOjs5BmJgXg1+fHoThYSAFYB/
|
||||
eiF6eXUvenl2JoSDgBV8enYUZmVhDklHRQkAAAAClZKOAHx5dQBwbWwAeHd1AHJvbAD07OQABQUFAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQUwB4eHUAenl3AIOBfwCUko8AmZeUAI+OigCGhYEAiIaDAJeV
|
||||
kgCQjooAgn98AHRybwBwb2kAc3NsAP///wAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////8AAAD///////////8A
|
||||
AAD/////AH////8AAAD////AAAD///8AAAD///wAAAAf//8AAAD///gAAAAP//8AAAD//+AAAAAB//8A
|
||||
AAD//4AAAAAA//8AAAD//wAAAAAAf/8AAAD//gAAAAAAP/8AAAD//AAAAAAAH/8AAAD/+AAAAAAAD/8A
|
||||
AAD/8AAAAAAAB/8AAAD/8AAAAAAAB/8AAAD/8AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8A
|
||||
AAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8A
|
||||
AAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8A
|
||||
AAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8A
|
||||
AAD/4AAAAAAAA/8AAAD/4AAAAAAAA/8AAAD/4AAAAAAAAf8AAAD/4AAAAAAAAf8AAAD/4AAAAAAAAP8A
|
||||
AAD/4AAAAAAAAP8AAAD/4AAAAAAAAP8AAAD/4AAAAAAAAH8AAAD/4AAAAAAAAH8AAAD/4AAAAAAAAH8A
|
||||
AAD/4AAAAAAAAD8AAAD/4AAAAAAAAD8AAAD/4AAAAAAAAB8AAAD/4AAAAAAAAB8AAAD/4AAAAAAAAA8A
|
||||
AAD/4AAAAAAAAA8AAAD/4AAAAAAAAA8AAAD/4AAAAAAAAAcAAAD/4AAAAAAAAAcAAAD/4AAAAAAAAAcA
|
||||
AAD/4AAAAAAAAAMAAAD/4AAAAAAAAAMAAAD/4AAAAAAAAAMAAAD/4AAAAAAAAAMAAAD/4AAAAAAAAAEA
|
||||
AAD/8AAAAAAABAEAAAD/8AAAAAAABgEAAAD/+AAAAAAABwAAAAD/+AAAAAAADwAAAAD//gAAAAAAH4AA
|
||||
AAD//wAAAAAAP4AAAAD//wAAAAAAf4AAAAD//4AAAAAA/8EAAAD///AAAAAD//8AAAD///wAAAAP//8A
|
||||
AAD///4AAAA///8AAAD////gAAP///8AAAD///////////8AAAD///////////8AAAD///////////8A
|
||||
AAA=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -0,0 +1,240 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using System.Xml;
|
||||
using System.Collections.Generic;
|
||||
using DBCHM.PdmModels;
|
||||
|
||||
namespace DBCHM.PDM
|
||||
{
|
||||
/// <summary>
|
||||
/// PDM实体集合
|
||||
/// </summary>
|
||||
public class PdmModels
|
||||
{
|
||||
public PdmModels()
|
||||
{
|
||||
this.Tables = new List<TableInfo>();
|
||||
}
|
||||
/// <summary>
|
||||
/// 表集合
|
||||
/// </summary>
|
||||
public IList<TableInfo> Tables { get; private set; }
|
||||
}
|
||||
|
||||
public class PdmReader
|
||||
{
|
||||
/// <summary>
|
||||
/// 读取指定Pdm文件的实体集合
|
||||
/// </summary>
|
||||
/// <param name="pdmFile">Pdm文件名(全路径名)</param>
|
||||
/// <returns>实体集合</returns>
|
||||
public PdmModels ReadFromFile(string pdmFile)
|
||||
{
|
||||
if (string.IsNullOrEmpty(pdmFile))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
//加载文件.
|
||||
var xmlDoc = new XmlDocument();
|
||||
xmlDoc.Load(pdmFile);
|
||||
//必须增加xml命名空间管理,否则读取会报错.
|
||||
var xmlnsManager = new XmlNamespaceManager(xmlDoc.NameTable);
|
||||
xmlnsManager.AddNamespace("a", "attribute");
|
||||
xmlnsManager.AddNamespace("c", "collection");
|
||||
xmlnsManager.AddNamespace("o", "object");
|
||||
var theModels = new PdmModels();
|
||||
|
||||
//读取所有表节点
|
||||
var xnTablesList = xmlDoc.SelectNodes("//c:Tables", xmlnsManager);
|
||||
if (xnTablesList != null)
|
||||
foreach (var xnTable in from XmlNode xmlTables in xnTablesList from XmlNode xnTable in xmlTables.ChildNodes where xnTable.Name != "o:Shortcut" select xnTable)
|
||||
{
|
||||
theModels.Tables.Add(GetTable(xnTable));
|
||||
}
|
||||
return theModels;
|
||||
}
|
||||
|
||||
//初始化"o:Table"的节点
|
||||
private TableInfo GetTable(XmlNode xnTable)
|
||||
{
|
||||
var mTable = new TableInfo();
|
||||
var xe = (XmlElement)xnTable;
|
||||
mTable.TableId = xe.GetAttribute("Id");
|
||||
var xnTProperty = xe.ChildNodes;
|
||||
foreach (XmlNode xnP in xnTProperty)
|
||||
{
|
||||
switch (xnP.Name)
|
||||
{
|
||||
case "a:ObjectID": mTable.ObjectID = xnP.InnerText;
|
||||
break;
|
||||
case "a:Name": mTable.Name = xnP.InnerText;
|
||||
break;
|
||||
case "a:Code": mTable.Code = xnP.InnerText;
|
||||
break;
|
||||
case "a:CreationDate": mTable.CreationDate = String2DateTime(xnP.InnerText);
|
||||
break;
|
||||
case "a:Creator": mTable.Creator = xnP.InnerText;
|
||||
break;
|
||||
case "a:ModificationDate": mTable.ModificationDate = String2DateTime(xnP.InnerText);
|
||||
break;
|
||||
case "a:Modifier": mTable.Modifier = xnP.InnerText;
|
||||
break;
|
||||
case "a:Comment": mTable.Comment = xnP.InnerText;
|
||||
break;
|
||||
case "a:PhysicalOptions": mTable.PhysicalOptions = xnP.InnerText;
|
||||
break;
|
||||
case "c:Columns": InitColumns(xnP, mTable);
|
||||
break;
|
||||
case "c:Keys": InitKeys(xnP, mTable);
|
||||
break;
|
||||
case "c:PrimaryKey":
|
||||
InitPrimaryKey(xnP, mTable);
|
||||
break;
|
||||
case "a:Description": mTable.Description = xnP.InnerText;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return mTable;
|
||||
}
|
||||
|
||||
//PDM文件中的日期格式采用的是当前日期与1970年1月1日8点之差的秒树来保存.
|
||||
private DateTime _baseDateTime = new DateTime(1970, 1, 1, 8, 0, 0);
|
||||
private DateTime String2DateTime(string dateString)
|
||||
{
|
||||
Int64 theTicker = Int64.Parse(dateString);
|
||||
return _baseDateTime.AddSeconds(theTicker);
|
||||
}
|
||||
|
||||
//初始化"c:Columns"的节点
|
||||
private void InitColumns(XmlNode xnColumns, TableInfo pTable)
|
||||
{
|
||||
foreach (XmlNode xnColumn in xnColumns)
|
||||
{
|
||||
pTable.AddColumn(GetColumn(xnColumn, pTable));
|
||||
}
|
||||
}
|
||||
|
||||
//初始化c:Keys"的节点
|
||||
private void InitKeys(XmlNode xnKeys, TableInfo pTable)
|
||||
{
|
||||
foreach (XmlNode xnKey in xnKeys)
|
||||
{
|
||||
pTable.AddKey(GetKey(xnKey, pTable));
|
||||
}
|
||||
}
|
||||
//初始化c:PrimaryKey"的节点
|
||||
private void InitPrimaryKey(XmlNode xnPrimaryKey, TableInfo pTable)
|
||||
{
|
||||
pTable.PrimaryKeyRefCode = GetPrimaryKey(xnPrimaryKey);
|
||||
}
|
||||
private static Boolean ConvertToBooleanPg(Object obj)
|
||||
{
|
||||
if (obj != null)
|
||||
{
|
||||
string mStr = obj.ToString();
|
||||
mStr = mStr.ToLower();
|
||||
if ((mStr.Equals("y") || mStr.Equals("1")) || mStr.Equals("true"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private ColumnInfo GetColumn(XmlNode xnColumn, TableInfo ownerTable)
|
||||
{
|
||||
var mColumn = new ColumnInfo(ownerTable);
|
||||
var xe = (XmlElement)xnColumn;
|
||||
mColumn.ColumnId = xe.GetAttribute("Id");
|
||||
var xnCProperty = xe.ChildNodes;
|
||||
foreach (XmlNode xnP in xnCProperty)
|
||||
{
|
||||
switch (xnP.Name)
|
||||
{
|
||||
case "a:ObjectID": mColumn.ObjectID = xnP.InnerText;
|
||||
break;
|
||||
case "a:Name": mColumn.Name = xnP.InnerText;
|
||||
break;
|
||||
case "a:Code": mColumn.Code = xnP.InnerText;
|
||||
break;
|
||||
case "a:CreationDate": mColumn.CreationDate = String2DateTime(xnP.InnerText);
|
||||
break;
|
||||
case "a:Creator": mColumn.Creator = xnP.InnerText;
|
||||
break;
|
||||
case "a:ModificationDate": mColumn.ModificationDate = String2DateTime(xnP.InnerText);
|
||||
break;
|
||||
case "a:Modifier": mColumn.Modifier = xnP.InnerText;
|
||||
break;
|
||||
case "a:Comment": mColumn.Comment = xnP.InnerText;
|
||||
break;
|
||||
case "a:DataType": mColumn.DataType = xnP.InnerText;
|
||||
break;
|
||||
case "a:Length": mColumn.Length = xnP.InnerText;
|
||||
break;
|
||||
case "a:Identity": mColumn.Identity = ConvertToBooleanPg(xnP.InnerText);
|
||||
break;
|
||||
case "a:Mandatory": mColumn.Mandatory = ConvertToBooleanPg(xnP.InnerText);
|
||||
break;
|
||||
case "a:PhysicalOptions": mColumn.PhysicalOptions = xnP.InnerText;
|
||||
break;
|
||||
case "a:ExtendedAttributesText": mColumn.ExtendedAttributesText = xnP.InnerText;
|
||||
break;
|
||||
case "a:Precision":
|
||||
mColumn.Precision = xnP.InnerText;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return mColumn;
|
||||
}
|
||||
|
||||
private string GetPrimaryKey(XmlNode xnKey)
|
||||
{
|
||||
var xe = (XmlElement)xnKey;
|
||||
if (xe.ChildNodes.Count <= 0) return "";
|
||||
var theKp = (XmlElement)xe.ChildNodes[0];
|
||||
return theKp.GetAttribute("Ref");
|
||||
}
|
||||
private void InitKeyColumns(XmlNode xnKeyColumns, PdmKey Key)
|
||||
{
|
||||
var xe = (XmlElement)xnKeyColumns;
|
||||
var xnKProperty = xe.ChildNodes;
|
||||
foreach (var theRef in from XmlNode xnP in xnKProperty select ((XmlElement)xnP).GetAttribute("Ref"))
|
||||
{
|
||||
Key.AddColumnObjCode(theRef);
|
||||
}
|
||||
}
|
||||
private PdmKey GetKey(XmlNode xnKey, TableInfo ownerTable)
|
||||
{
|
||||
var mKey = new PdmKey(ownerTable);
|
||||
var xe = (XmlElement)xnKey;
|
||||
mKey.KeyId = xe.GetAttribute("Id");
|
||||
var xnKProperty = xe.ChildNodes;
|
||||
foreach (XmlNode xnP in xnKProperty)
|
||||
{
|
||||
switch (xnP.Name)
|
||||
{
|
||||
case "a:ObjectID": mKey.ObjectID = xnP.InnerText;
|
||||
break;
|
||||
case "a:Name": mKey.Name = xnP.InnerText;
|
||||
break;
|
||||
case "a:Code": mKey.Code = xnP.InnerText;
|
||||
break;
|
||||
case "a:CreationDate": mKey.CreationDate = String2DateTime(xnP.InnerText);
|
||||
break;
|
||||
case "a:Creator": mKey.Creator = xnP.InnerText;
|
||||
break;
|
||||
case "a:ModificationDate": mKey.ModificationDate = String2DateTime(xnP.InnerText);
|
||||
break;
|
||||
case "a:Modifier": mKey.Modifier = xnP.InnerText;
|
||||
break;
|
||||
case "c:Key.Columns":
|
||||
InitKeyColumns(xnP, mKey);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return mKey;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,180 @@
|
|||
using System;
|
||||
|
||||
namespace DBCHM.PdmModels
|
||||
{
|
||||
/// <summary>
|
||||
/// 表列信息
|
||||
/// </summary>
|
||||
public class ColumnInfo
|
||||
{
|
||||
private TableInfo _OwnerTable;
|
||||
/// <summary>
|
||||
/// 所属表
|
||||
/// </summary>
|
||||
public TableInfo OwnerTable
|
||||
{
|
||||
get { return _OwnerTable; }
|
||||
}
|
||||
public ColumnInfo(TableInfo OwnerTable)
|
||||
{
|
||||
this._OwnerTable = OwnerTable;
|
||||
}
|
||||
/// <summary>
|
||||
/// 是否主键
|
||||
/// </summary>
|
||||
public bool IsPrimaryKey
|
||||
{
|
||||
get
|
||||
{
|
||||
PdmKey theKey = _OwnerTable.PrimaryKey;
|
||||
if (theKey != null)
|
||||
{
|
||||
if (theKey.ColumnObjCodes.Contains(columnId))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
string columnId;
|
||||
/// <summary>
|
||||
/// 列标识
|
||||
/// </summary>
|
||||
public string ColumnId
|
||||
{
|
||||
get { return columnId; }
|
||||
set { columnId = value; }
|
||||
}
|
||||
string objectID;
|
||||
/// <summary>
|
||||
/// 对象Id,全局唯一.
|
||||
/// </summary>
|
||||
public string ObjectID
|
||||
{
|
||||
get { return objectID; }
|
||||
set { objectID = value; }
|
||||
}
|
||||
string name;
|
||||
/// <summary>
|
||||
/// 列名
|
||||
/// </summary>
|
||||
public string Name
|
||||
{
|
||||
get { return name; }
|
||||
set { name = value; }
|
||||
}
|
||||
string code;
|
||||
/// <summary>
|
||||
/// 列代码,对应数据库表字段名
|
||||
/// </summary>
|
||||
public string Code
|
||||
{
|
||||
get { return code; }
|
||||
set { code = value; }
|
||||
}
|
||||
DateTime creationDate;
|
||||
/// <summary>
|
||||
/// 创建日期
|
||||
/// </summary>
|
||||
public DateTime CreationDate
|
||||
{
|
||||
get { return creationDate; }
|
||||
set { creationDate = value; }
|
||||
}
|
||||
string creator;
|
||||
/// <summary>
|
||||
/// 创建人
|
||||
/// </summary>
|
||||
public string Creator
|
||||
{
|
||||
get { return creator; }
|
||||
set { creator = value; }
|
||||
}
|
||||
DateTime modificationDate;
|
||||
/// <summary>
|
||||
/// 修改日期
|
||||
/// </summary>
|
||||
public DateTime ModificationDate
|
||||
{
|
||||
get { return modificationDate; }
|
||||
set { modificationDate = value; }
|
||||
}
|
||||
string modifier;
|
||||
/// <summary>
|
||||
/// 修改人
|
||||
/// </summary>
|
||||
public string Modifier
|
||||
{
|
||||
get { return modifier; }
|
||||
set { modifier = value; }
|
||||
}
|
||||
string comment;
|
||||
/// <summary>
|
||||
/// 注视
|
||||
/// </summary>
|
||||
public string Comment
|
||||
{
|
||||
get { return comment; }
|
||||
set { comment = value; }
|
||||
}
|
||||
string dataType;
|
||||
/// <summary>
|
||||
/// 数据类型
|
||||
/// </summary>
|
||||
public string DataType
|
||||
{
|
||||
get { return dataType; }
|
||||
set { dataType = value; }
|
||||
}
|
||||
string length;
|
||||
/// <summary>
|
||||
/// 数据长度
|
||||
/// </summary>
|
||||
public string Length
|
||||
{
|
||||
get { return length; }
|
||||
set { length = value; }
|
||||
}
|
||||
bool identity;
|
||||
/// <summary>
|
||||
/// 是否自增量
|
||||
/// </summary>
|
||||
public bool Identity
|
||||
{
|
||||
get { return identity; }
|
||||
set { identity = value; }
|
||||
}
|
||||
bool mandatory;
|
||||
/// <summary>
|
||||
/// 是否可空
|
||||
/// </summary>
|
||||
public bool Mandatory
|
||||
{
|
||||
get { return mandatory; }
|
||||
set { mandatory = value; }
|
||||
}
|
||||
string extendedAttributesText;
|
||||
/// <summary>
|
||||
/// 扩展属性
|
||||
/// </summary>
|
||||
public string ExtendedAttributesText
|
||||
{
|
||||
get { return extendedAttributesText; }
|
||||
set { extendedAttributesText = value; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 物理选项
|
||||
/// </summary>
|
||||
public string PhysicalOptions { get; set; }
|
||||
/// <summary>
|
||||
/// 精度
|
||||
/// </summary>
|
||||
public string Precision { get; set; }
|
||||
/// <summary>
|
||||
/// 描述
|
||||
/// </summary>
|
||||
public string Description { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,119 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace DBCHM.PdmModels
|
||||
{
|
||||
public class PdmKey
|
||||
{
|
||||
|
||||
string keyId;
|
||||
/// <summary>
|
||||
/// 关键字标识
|
||||
/// </summary>
|
||||
public string KeyId
|
||||
{
|
||||
get { return keyId; }
|
||||
set { keyId = value; }
|
||||
}
|
||||
string objectID;
|
||||
/// <summary>
|
||||
/// 对象Id
|
||||
/// </summary>
|
||||
public string ObjectID
|
||||
{
|
||||
get { return objectID; }
|
||||
set { objectID = value; }
|
||||
}
|
||||
string name;
|
||||
/// <summary>
|
||||
/// Key名
|
||||
/// </summary>
|
||||
public string Name
|
||||
{
|
||||
get { return name; }
|
||||
set { name = value; }
|
||||
}
|
||||
string code;
|
||||
/// <summary>
|
||||
/// Key代码,对应数据库中的Key.
|
||||
/// </summary>
|
||||
public string Code
|
||||
{
|
||||
get { return code; }
|
||||
set { code = value; }
|
||||
}
|
||||
DateTime creationDate;
|
||||
/// <summary>
|
||||
/// 创建日期
|
||||
/// </summary>
|
||||
public DateTime CreationDate
|
||||
{
|
||||
get { return creationDate; }
|
||||
set { creationDate = value; }
|
||||
}
|
||||
string creator;
|
||||
/// <summary>
|
||||
/// 创建人
|
||||
/// </summary>
|
||||
public string Creator
|
||||
{
|
||||
get { return creator; }
|
||||
set { creator = value; }
|
||||
}
|
||||
DateTime modificationDate;
|
||||
/// <summary>
|
||||
/// 修改日期
|
||||
/// </summary>
|
||||
public DateTime ModificationDate
|
||||
{
|
||||
get { return modificationDate; }
|
||||
set { modificationDate = value; }
|
||||
}
|
||||
string modifier;
|
||||
/// <summary>
|
||||
/// 修改人
|
||||
/// </summary>
|
||||
public string Modifier
|
||||
{
|
||||
get { return modifier; }
|
||||
set { modifier = value; }
|
||||
}
|
||||
|
||||
IList<ColumnInfo> columns;
|
||||
/// <summary>
|
||||
/// Key涉及的列
|
||||
/// </summary>
|
||||
public IList<ColumnInfo> Columns
|
||||
{
|
||||
get { return columns; }
|
||||
}
|
||||
|
||||
public void AddColumn(ColumnInfo mColumn)
|
||||
{
|
||||
if (columns == null)
|
||||
columns = new List<ColumnInfo>();
|
||||
columns.Add(mColumn);
|
||||
}
|
||||
|
||||
private List<string> _ColumnObjCodes = new List<string>();
|
||||
/// <summary>
|
||||
/// Key涉及的列代码,根据辞可访问到列信息.对应列的ColumnId
|
||||
/// </summary>
|
||||
public List<string> ColumnObjCodes
|
||||
{
|
||||
get { return _ColumnObjCodes; }
|
||||
}
|
||||
public void AddColumnObjCode(string ObjCode)
|
||||
{
|
||||
_ColumnObjCodes.Add(ObjCode);
|
||||
}
|
||||
|
||||
private TableInfo _OwnerTable = null;
|
||||
|
||||
public PdmKey(TableInfo table)
|
||||
{
|
||||
_OwnerTable = table;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace DBCHM.PdmModels
|
||||
{
|
||||
/// <summary>
|
||||
/// PDM实体集合
|
||||
/// </summary>
|
||||
public class PdmModels
|
||||
{
|
||||
public PdmModels()
|
||||
{
|
||||
Tables = new List<TableInfo>();
|
||||
}
|
||||
/// <summary>
|
||||
/// 表集合
|
||||
/// </summary>
|
||||
public IList<TableInfo> Tables { get; private set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
using DocTools.Dtos;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DBCHM.PdmModels
|
||||
{
|
||||
/// <summary>
|
||||
/// 关键词过滤
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class SelectedTables
|
||||
{
|
||||
public List<TableDto> tables { get; set; } = new List<TableDto>();
|
||||
|
||||
//var viewDict = new NameValueCollection();
|
||||
//var procDict = new NameValueCollection();
|
||||
|
||||
public Dictionary<string, string> viewDict { get; set; } = new Dictionary<string, string>();
|
||||
public Dictionary<string, string> procDict { get; set; } = new Dictionary<string, string>();
|
||||
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
this.tables.Clear();
|
||||
this.viewDict.Clear();
|
||||
this.procDict.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,167 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace DBCHM.PdmModels
|
||||
{
|
||||
/// <summary>
|
||||
/// 表信息
|
||||
/// </summary>
|
||||
public class TableInfo
|
||||
{
|
||||
public TableInfo()
|
||||
{
|
||||
keys = new List<PdmKey>();
|
||||
columns = new List<ColumnInfo>();
|
||||
|
||||
}
|
||||
string tableId;
|
||||
/// <summary>
|
||||
/// 表ID
|
||||
/// </summary>
|
||||
public string TableId
|
||||
{
|
||||
get { return tableId; }
|
||||
set { tableId = value; }
|
||||
}
|
||||
string objectID;
|
||||
/// <summary>
|
||||
/// 对象ID
|
||||
/// </summary>
|
||||
public string ObjectID
|
||||
{
|
||||
get { return objectID; }
|
||||
set { objectID = value; }
|
||||
}
|
||||
string name;
|
||||
/// <summary>
|
||||
/// 表名
|
||||
/// </summary>
|
||||
public string Name
|
||||
{
|
||||
get { return name; }
|
||||
set { name = value; }
|
||||
}
|
||||
string code;
|
||||
/// <summary>
|
||||
/// 表代码,对应数据库表名
|
||||
/// </summary>
|
||||
public string Code
|
||||
{
|
||||
get { return code; }
|
||||
set { code = value; }
|
||||
}
|
||||
DateTime creationDate;
|
||||
/// <summary>
|
||||
/// 创建日期
|
||||
/// </summary>
|
||||
public DateTime CreationDate
|
||||
{
|
||||
get { return creationDate; }
|
||||
set { creationDate = value; }
|
||||
}
|
||||
string creator;
|
||||
/// <summary>
|
||||
/// 创建人
|
||||
/// </summary>
|
||||
public string Creator
|
||||
{
|
||||
get { return creator; }
|
||||
set { creator = value; }
|
||||
}
|
||||
DateTime modificationDate;
|
||||
/// <summary>
|
||||
/// 修改日期
|
||||
/// </summary>
|
||||
public DateTime ModificationDate
|
||||
{
|
||||
get { return modificationDate; }
|
||||
set { modificationDate = value; }
|
||||
}
|
||||
string modifier;
|
||||
/// <summary>
|
||||
/// 修改人
|
||||
/// </summary>
|
||||
public string Modifier
|
||||
{
|
||||
get { return modifier; }
|
||||
set { modifier = value; }
|
||||
}
|
||||
string comment;
|
||||
/// <summary>
|
||||
/// 注释
|
||||
/// </summary>
|
||||
public string Comment
|
||||
{
|
||||
get { return comment; }
|
||||
set { comment = value; }
|
||||
}
|
||||
|
||||
string physicalOptions;
|
||||
/// <summary>
|
||||
/// 物理选项
|
||||
/// </summary>
|
||||
public string PhysicalOptions
|
||||
{
|
||||
get { return physicalOptions; }
|
||||
set { physicalOptions = value; }
|
||||
}
|
||||
|
||||
|
||||
IList<ColumnInfo> columns;
|
||||
/// <summary>
|
||||
/// 表列集合
|
||||
/// </summary>
|
||||
public IList<ColumnInfo> Columns
|
||||
{
|
||||
get { return columns; }
|
||||
}
|
||||
|
||||
IList<PdmKey> keys;
|
||||
/// <summary>
|
||||
/// 表Key集合
|
||||
/// </summary>
|
||||
public IList<PdmKey> Keys
|
||||
{
|
||||
get { return keys; }
|
||||
}
|
||||
|
||||
public void AddColumn(ColumnInfo mColumn)
|
||||
{
|
||||
if (columns == null)
|
||||
columns = new List<ColumnInfo>();
|
||||
columns.Add(mColumn);
|
||||
}
|
||||
|
||||
public void AddKey(PdmKey mKey)
|
||||
{
|
||||
if (keys == null)
|
||||
keys = new List<PdmKey>();
|
||||
keys.Add(mKey);
|
||||
}
|
||||
/// <summary>
|
||||
/// 主键Key代码.=>KeyId
|
||||
/// </summary>
|
||||
public string PrimaryKeyRefCode { get; set; }
|
||||
/// <summary>
|
||||
/// 主关键字
|
||||
/// </summary>
|
||||
public PdmKey PrimaryKey
|
||||
{
|
||||
get
|
||||
{
|
||||
foreach (var key in keys)
|
||||
{
|
||||
if (key.KeyId == PrimaryKeyRefCode)
|
||||
{
|
||||
return key;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 表的描述=>PDM Notes.
|
||||
/// </summary>
|
||||
public string Description { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DBCHM
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
public static bool IsAdministrator()
|
||||
{
|
||||
System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
|
||||
System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
|
||||
return principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 应用程序的主入口点。
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
|
||||
Application.ThreadException += Application_ThreadException;
|
||||
|
||||
|
||||
//判断当前登录用户是否为管理员
|
||||
if (IsAdministrator())
|
||||
{
|
||||
//如果是管理员,则直接运行
|
||||
Application.Run(new MainForm());
|
||||
}
|
||||
else
|
||||
{
|
||||
//创建启动对象
|
||||
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
|
||||
startInfo.UseShellExecute = true;
|
||||
startInfo.WorkingDirectory = Environment.CurrentDirectory;
|
||||
startInfo.FileName = Application.ExecutablePath;
|
||||
//设置启动动作,确保以管理员身份运行
|
||||
startInfo.Verb = "runas";
|
||||
try
|
||||
{
|
||||
System.Diagnostics.Process.Start(startInfo);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return;
|
||||
}
|
||||
//退出
|
||||
Application.Exit();
|
||||
}
|
||||
}
|
||||
|
||||
private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
|
||||
{
|
||||
LogUtils.LogError("Application_ThreadException", Developer. MJ, e.Exception);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 有关程序集的一般信息由以下
|
||||
// 控制。更改这些特性值可修改
|
||||
// 与程序集关联的信息。
|
||||
[assembly: AssemblyTitle("DBCHM - 51Try.Top")]
|
||||
[assembly: AssemblyDescription("数据库CHM生成工具")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("51Try.Top")]
|
||||
[assembly: AssemblyProduct("DBCHM")]
|
||||
[assembly: AssemblyCopyright("Copyright ©2018-2021 lztkdr")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
//将 ComVisible 设置为 false 将使此程序集中的类型
|
||||
//对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
|
||||
//请将此类型的 ComVisible 特性设置为 true。
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||
[assembly: Guid("55b00db1-ba55-47b7-bd44-35c0fcd05fd5")]
|
||||
|
||||
// 程序集的版本信息由下列四个值组成:
|
||||
//
|
||||
// 主版本
|
||||
// 次版本
|
||||
// 生成号
|
||||
// 修订号
|
||||
//
|
||||
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
||||
// 方法是按如下所示使用“*”: :
|
||||
[assembly: AssemblyVersion("1.8.0.3")]
|
||||
[assembly: AssemblyFileVersion("1.8.0.3-beta")]
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 此代码由工具生成。
|
||||
// 运行时版本:4.0.30319.42000
|
||||
//
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||
// 重新生成代码,这些更改将会丢失。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace DBCHM.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 一个强类型的资源类,用于查找本地化的字符串等。
|
||||
/// </summary>
|
||||
// 此类是由 StronglyTypedResourceBuilder
|
||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 返回此类使用的缓存的 ResourceManager 实例。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DBCHM.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写当前线程的 CurrentUICulture 属性,对
|
||||
/// 使用此强类型资源类的所有资源查找执行重写。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap loading {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("loading", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="loading" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\loading.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 此代码由工具生成。
|
||||
// 运行时版本:4.0.30319.42000
|
||||
//
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||
// 重新生成代码,这些更改将会丢失。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace DBCHM.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.2.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
|
After Width: | Height: | Size: 32 KiB |
|
|
@ -0,0 +1,23 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DBCHM
|
||||
{
|
||||
/// <summary>
|
||||
/// 在使用treeview控件过程中会碰到,
|
||||
/// 当快速点击checkbox时,checkbox选中状态和实际状态不符,并且不会触发aftercheck事件,
|
||||
/// 造成此问题的原因是:快速点击识别为双击事件。
|
||||
/// </summary>
|
||||
public class TreeViewEnhanced : TreeView
|
||||
{
|
||||
protected override void WndProc(ref Message m)
|
||||
{
|
||||
if (m.Msg == 0x203) { m.Result = IntPtr.Zero; }
|
||||
else base.WndProc(ref m);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
||||
</startup>
|
||||
<runtime>
|
||||
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
|
||||
</dependentAssembly>
|
||||
<probing privatePath="lib;libs" xmlns="" />
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Esprima" publicKeyToken="2e92ba9c8d81157f" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-2.1.3.0" newVersion="2.1.3.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 626 B |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="ICSharpCode.TextEditor.Extended" version="4.2.4" targetFramework="net47" />
|
||||
<package id="ZetaLongPaths" version="1.0.0.38" targetFramework="net47" />
|
||||
</packages>
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DocTools
|
||||
{
|
||||
/// <summary>
|
||||
/// dll库全局参数设置
|
||||
/// </summary>
|
||||
public static class AppConst
|
||||
{
|
||||
/// <summary>
|
||||
/// 修订日志
|
||||
/// </summary>
|
||||
public const string LOG_CHAPTER_NAME = "修订日志";
|
||||
|
||||
/// <summary>
|
||||
/// 数据库表目录
|
||||
/// </summary>
|
||||
public const string TABLE_CHAPTER_NAME = "数据库表目录";
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 数据库表结构
|
||||
/// </summary>
|
||||
public const string TABLE_STRUCTURE_CHAPTER_NAME = "数据库表结构";
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,352 @@
|
|||
using MJTop.Data;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.AccessControl;
|
||||
|
||||
namespace DocTools
|
||||
{
|
||||
/// <summary>
|
||||
/// 管理 配置的连接字符串
|
||||
/// </summary>
|
||||
public static class ConfigUtils
|
||||
{
|
||||
/// <summary>
|
||||
/// 当前应用程序的名称
|
||||
/// </summary>
|
||||
private static string ConfigFileName = Path.GetFileNameWithoutExtension(AppDomain.CurrentDomain.FriendlyName).Replace(".vshost", "");
|
||||
/// <summary>
|
||||
/// 定义配置存放的路径
|
||||
/// </summary>
|
||||
public static string AppPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData, Environment.SpecialFolderOption.Create), ConfigFileName);
|
||||
|
||||
/// <summary>
|
||||
/// sqlite db文件的存放路径
|
||||
/// </summary>
|
||||
private static string ConfigFilePath = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 针对配置的 数据库操作对象
|
||||
/// </summary>
|
||||
private static DB db = null;
|
||||
|
||||
/// <summary>
|
||||
/// 初始化静态数据
|
||||
/// 将sqlite数据库写入 C:\Users\用户名\AppData\Local\DBChm 目录中
|
||||
/// </summary>
|
||||
static ConfigUtils()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!ZetaLongPaths.ZlpIOHelper.DirectoryExists(AppPath))
|
||||
{
|
||||
ZetaLongPaths.ZlpIOHelper.CreateDirectory(AppPath);
|
||||
}
|
||||
AddSecurityControll2Folder(AppPath);
|
||||
ConfigFilePath = Path.Combine(AppPath, ConfigFileName + ".db");
|
||||
Init();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogUtils.LogError("ConfigUtils初始化", Developer.SysDefault, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化创建配置数据库
|
||||
/// </summary>
|
||||
private static void Init()
|
||||
{
|
||||
db = DBMgr.UseDB(DBType.SQLite, ConfigFilePath);
|
||||
|
||||
string strSql = @"create table DBCHMConfig
|
||||
(
|
||||
Id integer PRIMARY KEY autoincrement,
|
||||
Name nvarchar(200) unique,
|
||||
DBType varchar(30),
|
||||
Server varchar(100),
|
||||
Port integer,
|
||||
DBName varchar(100),
|
||||
Uid varchar(50),
|
||||
Pwd varchar(100),
|
||||
ConnTimeOut integer,
|
||||
ConnString text,
|
||||
Modified text
|
||||
)";
|
||||
|
||||
//表不存在则创建 连接字符串 配置表
|
||||
if (db.Info.TableNames == null || !db.Info.TableNames.Contains(nameof(DBCHMConfig), StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
db.ExecSql(strSql);
|
||||
//执行后,刷新实例 表结构信息
|
||||
db.Info.Refresh();
|
||||
}
|
||||
else
|
||||
{
|
||||
// v1.7.3.7 版本 增加 连接超时 与 最后连接时间
|
||||
var info = db.Info;
|
||||
if(!info.IsExistColumn(nameof(DBCHMConfig), nameof(DBCHMConfig.Modified)))
|
||||
{
|
||||
var configs = db.GetListDictionary("select * from " + nameof(DBCHMConfig));
|
||||
|
||||
db.Info.DropTable(nameof(DBCHMConfig));
|
||||
|
||||
db.ExecSql(strSql);
|
||||
|
||||
//执行后,刷新实例 表结构信息
|
||||
db.Info.Refresh();
|
||||
|
||||
if (configs != null && configs.Count > 0)
|
||||
{
|
||||
foreach (var config in configs)
|
||||
{
|
||||
try
|
||||
{
|
||||
db.Insert(config, nameof(DBCHMConfig));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogUtils.LogError("Init", Developer.SysDefault, ex, config);
|
||||
}
|
||||
}
|
||||
|
||||
db.ExecSql("update " + nameof(DBCHMConfig) + " set ConnTimeOut = 120 ");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 判断磁盘路径下是否安装存在某个文件,最后返回存在某个文件的路径
|
||||
/// </summary>
|
||||
/// <param name="installPaths"></param>
|
||||
/// <param name="installPath"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsInstall(string[] installPaths, out string installPath)
|
||||
{
|
||||
installPath = string.Empty;
|
||||
var driInfos = DriveInfo.GetDrives();
|
||||
foreach (DriveInfo dInfo in driInfos)
|
||||
{
|
||||
if (dInfo.DriveType == DriveType.Fixed)
|
||||
{
|
||||
foreach (string ipath in installPaths)
|
||||
{
|
||||
string path = Path.Combine(dInfo.Name, ipath);
|
||||
if (File.Exists(path))
|
||||
{
|
||||
installPath = path;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 搜索获取软件安装目录
|
||||
/// </summary>
|
||||
/// <param name="orNames">软件名称 或 软件的主程序带exe的文件名</param>
|
||||
/// <returns>获取安装目录</returns>
|
||||
public static string SearchInstallDir(params string[] orNames)
|
||||
{
|
||||
//即时刷新注册表
|
||||
SHChangeNotify(0x8000000, 0, IntPtr.Zero, IntPtr.Zero);
|
||||
|
||||
string installDir = null;
|
||||
|
||||
var or_install_addrs = new List<string>
|
||||
{
|
||||
@"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall",
|
||||
@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
|
||||
};
|
||||
|
||||
var or_get_key_names = new List<string>
|
||||
{
|
||||
"InstallLocation",
|
||||
"InstallPath",
|
||||
"Install_Dir",
|
||||
"UninstallString"
|
||||
};
|
||||
|
||||
|
||||
Microsoft.Win32.RegistryKey regKey = null;
|
||||
try
|
||||
{
|
||||
regKey = Microsoft.Win32.Registry.LocalMachine;
|
||||
|
||||
var arr_exe = orNames.Where(t => t.EndsWith(".exe")).ToList();
|
||||
var arr_name = orNames.Where(t => !t.EndsWith(".exe")).ToList();
|
||||
|
||||
if (arr_exe.Any())
|
||||
{
|
||||
foreach (var exe_name in arr_exe)
|
||||
{
|
||||
var name_node = regKey.OpenSubKey($@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\{exe_name}", false);
|
||||
if (name_node != null)
|
||||
{
|
||||
var keyValue = name_node.GetValue("Path");
|
||||
|
||||
if (keyValue == null)
|
||||
{
|
||||
//取 (默认)
|
||||
keyValue = name_node.GetValue("");
|
||||
}
|
||||
|
||||
if (keyValue != null)
|
||||
{
|
||||
// 值 可能 带双引号,去除双引号
|
||||
installDir = keyValue.ToString().Trim('"');
|
||||
if (!Directory.Exists(installDir))
|
||||
{
|
||||
// 可能是文件路径,取目录
|
||||
installDir = Path.GetDirectoryName(installDir);
|
||||
}
|
||||
return installDir;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var regAddr in or_install_addrs)
|
||||
{
|
||||
var regSubKey = regKey.OpenSubKey(regAddr, false);
|
||||
|
||||
foreach (var name in arr_name)
|
||||
{
|
||||
var name_node = regSubKey.OpenSubKey(name);
|
||||
|
||||
if (name_node != null)
|
||||
{
|
||||
foreach (var keyName in or_get_key_names)
|
||||
{
|
||||
var keyValue = name_node.GetValue(keyName);
|
||||
|
||||
if (keyValue != null)
|
||||
{
|
||||
// 值 可能 带双引号,去除双引号
|
||||
installDir = keyValue.ToString().Trim('"');
|
||||
if (!Directory.Exists(installDir))
|
||||
{
|
||||
// 可能是文件路径,取目录
|
||||
installDir = Path.GetDirectoryName(installDir);
|
||||
}
|
||||
return installDir;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
LogUtils.LogError(nameof(SearchInstallDir), Developer.SysDefault, ex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
regKey?.Close();
|
||||
}
|
||||
return installDir;
|
||||
}
|
||||
|
||||
|
||||
[DllImport("shell32.dll")]
|
||||
|
||||
public static extern void SHChangeNotify(uint wEventId, uint uFlags, IntPtr dwItem1, IntPtr dwItem2);
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
///为文件夹添加users,everyone用户组的完全控制权限
|
||||
/// </summary>
|
||||
/// <param name="dirPath"></param>
|
||||
public static void AddSecurityControll2Folder(string dirPath)
|
||||
{
|
||||
//获取文件夹信息
|
||||
DirectoryInfo dir = new DirectoryInfo(dirPath);
|
||||
if (dir.Exists)
|
||||
{
|
||||
//获得该文件夹的所有访问权限
|
||||
System.Security.AccessControl.DirectorySecurity dirSecurity = dir.GetAccessControl(AccessControlSections.All);
|
||||
//设定文件ACL继承
|
||||
InheritanceFlags inherits = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit;
|
||||
//添加ereryone用户组的访问权限规则 完全控制权限
|
||||
FileSystemAccessRule everyoneFileSystemAccessRule = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, inherits, PropagationFlags.None, AccessControlType.Allow);
|
||||
//添加Users用户组的访问权限规则 完全控制权限
|
||||
FileSystemAccessRule usersFileSystemAccessRule = new FileSystemAccessRule("Users", FileSystemRights.FullControl, inherits, PropagationFlags.None, AccessControlType.Allow);
|
||||
bool isModified = false;
|
||||
dirSecurity.ModifyAccessRule(AccessControlModification.Add, everyoneFileSystemAccessRule, out isModified);
|
||||
dirSecurity.ModifyAccessRule(AccessControlModification.Add, usersFileSystemAccessRule, out isModified);
|
||||
//设置访问权限
|
||||
dir.SetAccessControl(dirSecurity);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加或修改配置连接
|
||||
/// </summary>
|
||||
/// <param name="dbCHMConfig"></param>
|
||||
public static void Save(NameValueCollection dbCHMConfig)
|
||||
{
|
||||
db.Save(dbCHMConfig, "DBCHMConfig");
|
||||
}
|
||||
|
||||
public static void UpLastModified(int id)
|
||||
{
|
||||
db.ExecSql("update DBCHMConfig set Modified='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "' where id=" + id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除连接
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
public static void Delete(int id)
|
||||
{
|
||||
db.Delete("DBCHMConfig", "Id", id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询出所有配置的连接
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static List<DBCHMConfig> SelectAll()
|
||||
{
|
||||
return db.GetDataTable("select * from DBCHMConfig order by Modified desc ").ConvertToListObject<DBCHMConfig>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 得到其中1个连接
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public static DBCHMConfig Get(int id)
|
||||
{
|
||||
return db.GetDataTable("select * from DBCHMConfig where id = " + id).ConvertToListObject<DBCHMConfig>().FirstOrDefault();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 判断配置表是否存在连接字符串
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static bool HasValue()
|
||||
{
|
||||
string strSql = "select count(1) from DBCHMConfig";
|
||||
return db.Single<int>(strSql, 0) > 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DocTools
|
||||
{
|
||||
public class DBCHMConfig
|
||||
{
|
||||
[DisplayName("ID")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[DisplayName("连接名")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[DisplayName("数据库类型")]
|
||||
public string DBType { get; set; }
|
||||
|
||||
[DisplayName("主机")]
|
||||
public string Server { get; set; }
|
||||
|
||||
[DisplayName("端口")]
|
||||
public int? Port { get; set; }
|
||||
[DisplayName("数据库")]
|
||||
public string DBName { get; set; }
|
||||
|
||||
[DisplayName("用户名")]
|
||||
public string Uid { get; set; }
|
||||
|
||||
[DisplayName("密码")]
|
||||
public string Pwd { get; set; }
|
||||
|
||||
[DisplayName("连接超时")]
|
||||
public int? ConnTimeOut { get; set; }
|
||||
|
||||
[DisplayName("连接字符串")]
|
||||
public string ConnString { get; set; }
|
||||
|
||||
[DisplayName("最后使用时间")]
|
||||
public DateTime Modified { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,183 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using DocTools.Dtos;
|
||||
using ZetaLongPaths;
|
||||
|
||||
namespace DocTools.DBDoc
|
||||
{
|
||||
public class ChmDoc : Doc
|
||||
{
|
||||
public ChmDoc(DBDto dto, string filter = "chm files (*.chm)|*.chm") : base(dto, filter)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private Encoding CurrEncoding
|
||||
{
|
||||
get
|
||||
{
|
||||
return Encoding.GetEncoding("gbk");
|
||||
}
|
||||
}
|
||||
|
||||
private string HHCPath
|
||||
{
|
||||
get
|
||||
{
|
||||
var hhcPath = string.Empty;
|
||||
var hhwDir = ConfigUtils.SearchInstallDir("HTML Help Workshop", "hhw.exe");
|
||||
if (!string.IsNullOrWhiteSpace(hhwDir) && ZlpIOHelper.DirectoryExists(hhwDir))
|
||||
{
|
||||
hhcPath = Path.Combine(hhwDir, "hhc.exe");
|
||||
}
|
||||
return hhcPath;
|
||||
}
|
||||
}
|
||||
|
||||
void InitDirFiles()
|
||||
{
|
||||
var dirNames = new string[] {
|
||||
"表结构",
|
||||
"视图",
|
||||
"存储过程",
|
||||
//"函数",
|
||||
"resources\\js"
|
||||
};
|
||||
|
||||
foreach (var name in dirNames)
|
||||
{
|
||||
var tmpDir = Path.Combine(this.WorkTmpDir, name);
|
||||
|
||||
if (ZlpIOHelper.DirectoryExists(tmpDir))
|
||||
{
|
||||
ZlpIOHelper.DeleteDirectory(tmpDir, true);
|
||||
}
|
||||
ZlpIOHelper.CreateDirectory(tmpDir);
|
||||
}
|
||||
|
||||
|
||||
var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TplFile\\chm\\");
|
||||
|
||||
var files = Directory.GetFiles(dir, "*.js", SearchOption.AllDirectories);
|
||||
|
||||
foreach (var filePath in files)
|
||||
{
|
||||
var fileName = Path.GetFileName(filePath);
|
||||
ZlpIOHelper.CopyFile(filePath, Path.Combine(this.WorkTmpDir, "resources\\js\\", fileName), true);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Build(string filePath)
|
||||
{
|
||||
#region 使用 HTML Help Workshop 的 hhc.exe 编译 ,先判断系统中是否已经安装有 HTML Help Workshop
|
||||
|
||||
if (this.HHCPath.IsNullOrWhiteSpace())
|
||||
{
|
||||
string htmlhelpPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "htmlhelp.exe");
|
||||
|
||||
if (File.Exists(htmlhelpPath))
|
||||
{
|
||||
if (MessageBox.Show("导出CHM文档需安装 HTML Help Workshop ,是否现在安装?","提示",
|
||||
MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) == DialogResult.OK)
|
||||
{
|
||||
var proc = Process.Start(htmlhelpPath);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
this.InitDirFiles();
|
||||
|
||||
var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TplFile\\chm");
|
||||
|
||||
var hhc_tpl = File.ReadAllText(Path.Combine(dir, "hhc.cshtml"), CurrEncoding);
|
||||
var hhk_tpl = File.ReadAllText(Path.Combine(dir, "hhk.cshtml"), CurrEncoding);
|
||||
var hhp_tpl = File.ReadAllText(Path.Combine(dir, "hhp.cshtml"), CurrEncoding);
|
||||
var list_tpl = File.ReadAllText(Path.Combine(dir, "list.cshtml"), CurrEncoding);
|
||||
var table_tpl = File.ReadAllText(Path.Combine(dir, "table.cshtml"), CurrEncoding);
|
||||
var sqlcode_tpl = File.ReadAllText(Path.Combine(dir, "sqlcode.cshtml"), CurrEncoding);
|
||||
|
||||
var hhc = hhc_tpl.RazorRender(this.Dto).Replace("</LI>", "");
|
||||
|
||||
var hhk = hhk_tpl.RazorRender(this.Dto).Replace("</LI>", "");
|
||||
|
||||
ZlpIOHelper.WriteAllText(Path.Combine(this.WorkTmpDir, "chm.hhc"), hhc, CurrEncoding);
|
||||
|
||||
ZlpIOHelper.WriteAllText(Path.Combine(this.WorkTmpDir, "chm.hhk"), hhk, CurrEncoding);
|
||||
|
||||
ZlpIOHelper.WriteAllText(Path.Combine(this.WorkTmpDir, "数据库目录.html"), list_tpl.RazorRender(this.Dto), CurrEncoding);
|
||||
|
||||
foreach (var tab in this.Dto.Tables)
|
||||
{
|
||||
var tab_path = Path.Combine(this.WorkTmpDir, "表结构", $"{tab.TableName} {tab.Comment}.html");
|
||||
var content = table_tpl.RazorRender(tab);
|
||||
ZlpIOHelper.WriteAllText(tab_path, content, CurrEncoding);
|
||||
}
|
||||
|
||||
|
||||
foreach (var item in Dto.Views)
|
||||
{
|
||||
var vw_path = Path.Combine(this.WorkTmpDir, "视图", $"{item.Key}.html");
|
||||
var content = sqlcode_tpl.RazorRender(
|
||||
new SqlCode() { DBType = Dto.DBType, CodeName = item.Key, Content = item.Value.Trim() }
|
||||
);
|
||||
ZlpIOHelper.WriteAllText(vw_path, content, CurrEncoding);
|
||||
}
|
||||
|
||||
|
||||
foreach (var item in Dto.Procs)
|
||||
{
|
||||
var proc_path = Path.Combine(this.WorkTmpDir, "存储过程", $"{item.Key}.html");
|
||||
var content = sqlcode_tpl.RazorRender(
|
||||
new SqlCode() { DBType = Dto.DBType, CodeName = item.Key, Content = item.Value.Trim() }
|
||||
);
|
||||
ZlpIOHelper.WriteAllText(proc_path, content, CurrEncoding);
|
||||
}
|
||||
|
||||
var hhp_Path = Path.Combine(this.WorkTmpDir, "chm.hhp");
|
||||
|
||||
ZlpIOHelper.WriteAllText(hhp_Path, hhp_tpl.RazorRender(new ChmHHP(filePath, this.WorkTmpDir)), CurrEncoding);
|
||||
|
||||
|
||||
string res = StartRun(HHCPath, hhp_Path, Encoding.GetEncoding("gbk"));
|
||||
|
||||
ZlpIOHelper.WriteAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log", "chm.log"), res);
|
||||
}
|
||||
|
||||
private string StartRun(string hhcPath, string arguments, Encoding encoding)
|
||||
{
|
||||
string str = "";
|
||||
ProcessStartInfo startInfo = new ProcessStartInfo()
|
||||
{
|
||||
FileName = hhcPath, //调入HHC.EXE文件
|
||||
Arguments = arguments,
|
||||
WindowStyle = ProcessWindowStyle.Hidden,
|
||||
RedirectStandardOutput = true,
|
||||
UseShellExecute = false,
|
||||
RedirectStandardError = true,
|
||||
CreateNoWindow = true,
|
||||
StandardErrorEncoding = encoding,
|
||||
StandardOutputEncoding = encoding
|
||||
};
|
||||
|
||||
using (Process process = Process.Start(startInfo))
|
||||
{
|
||||
using (StreamReader reader = process.StandardOutput)
|
||||
{
|
||||
str = reader.ReadToEnd();
|
||||
}
|
||||
process.WaitForExit();
|
||||
}
|
||||
return str.Trim();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using DocTools.Dtos;
|
||||
using ZetaLongPaths;
|
||||
|
||||
namespace DocTools.DBDoc
|
||||
{
|
||||
public abstract class Doc
|
||||
{
|
||||
/// <summary>
|
||||
/// 当前应用程序的名称 => DBCHM
|
||||
/// </summary>
|
||||
private static string ConfigFileName = Path.GetFileNameWithoutExtension(AppDomain.CurrentDomain.FriendlyName).Replace(".vshost", "");
|
||||
|
||||
/// <summary>
|
||||
/// 定义配置存放的路径 => C:\Users\用户名\AppData\Local\DBCHM
|
||||
/// </summary>
|
||||
public static string AppPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData, Environment.SpecialFolderOption.Create), ConfigFileName);
|
||||
|
||||
|
||||
public Doc(DBDto dto, string filter)
|
||||
{
|
||||
this.Dto = dto;
|
||||
this.Filter = filter;
|
||||
this.WorkTmpDir = Path.Combine(AppPath, dto.DBType + "_" + dto.DBName);
|
||||
if (ZlpIOHelper.DirectoryExists(this.WorkTmpDir))
|
||||
{
|
||||
ZlpIOHelper.DeleteDirectory(this.WorkTmpDir, true);
|
||||
}
|
||||
ZlpIOHelper.CreateDirectory(this.WorkTmpDir);
|
||||
this.Ext = this.Filter.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries).LastOrDefault()?.Trim('*');
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 临时文件的存放目录
|
||||
/// </summary>
|
||||
public string WorkTmpDir { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// 文件扩展名
|
||||
/// </summary>
|
||||
public string Ext { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数据库Dto
|
||||
/// </summary>
|
||||
public DBDto Dto { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 扩展名过滤字符串
|
||||
/// </summary>
|
||||
public string Filter { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 构建生成文档
|
||||
/// </summary>
|
||||
public abstract void Build(string filePath);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,282 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using DocTools.Dtos;
|
||||
|
||||
namespace DocTools.DBDoc
|
||||
{
|
||||
public class ExcelDoc : Doc
|
||||
{
|
||||
public ExcelDoc(DBDto dto, string filter = "excel files (.xlsx)|*.xlsx") : base(dto, filter)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Build(string filePath)
|
||||
{
|
||||
ExcelUtils.ExportExcelByEpplus(filePath, this.Dto);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Excel处理工具类
|
||||
/// </summary>
|
||||
internal static class ExcelUtils
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 引用EPPlus.dll导出excel数据库字典文档
|
||||
/// </summary>
|
||||
/// <param name="fileName"></param>
|
||||
/// <param name="databaseName"></param>
|
||||
/// <param name="tables"></param>
|
||||
public static void ExportExcelByEpplus(string fileName, DBDto dto)
|
||||
{
|
||||
var tables = dto.Tables;
|
||||
|
||||
System.IO.FileInfo xlsFileInfo = new System.IO.FileInfo(fileName);
|
||||
|
||||
if (xlsFileInfo.Exists)
|
||||
{
|
||||
// 注意此处:存在Excel文档即删除再创建一个
|
||||
xlsFileInfo.Delete();
|
||||
xlsFileInfo = new System.IO.FileInfo(fileName);
|
||||
}
|
||||
// 创建并添加Excel文档信息
|
||||
using (OfficeOpenXml.ExcelPackage epck = new OfficeOpenXml.ExcelPackage(xlsFileInfo))
|
||||
{
|
||||
// 创建overview sheet
|
||||
CreateLogSheet(epck, AppConst.LOG_CHAPTER_NAME, tables);
|
||||
|
||||
// 创建overview sheet
|
||||
CreateOverviewSheet(epck, AppConst.TABLE_CHAPTER_NAME, tables);
|
||||
|
||||
// 创建tables sheet
|
||||
CreateTableSheet(epck, AppConst.TABLE_STRUCTURE_CHAPTER_NAME, tables);
|
||||
|
||||
epck.Save(); // 保存excel
|
||||
epck.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建修订日志sheet
|
||||
/// </summary>
|
||||
/// <param name="epck"></param>
|
||||
/// <param name="sheetName"></param>
|
||||
/// <param name="tables"></param>
|
||||
private static void CreateLogSheet(OfficeOpenXml.ExcelPackage epck, string sheetName, List<TableDto> tables)
|
||||
{
|
||||
OfficeOpenXml.ExcelWorksheet overviewTbWorksheet = epck.Workbook.Worksheets.Add(sheetName);
|
||||
|
||||
int row = 1;
|
||||
|
||||
overviewTbWorksheet.Cells[row, 1, row, 5].Merge = true;
|
||||
//overviewTbWorksheet.Cells[row, 1].Value = "总表数量";
|
||||
//overviewTbWorksheet.Cells[row, 2].Value = tables.Count + "";
|
||||
//overviewTbWorksheet.Cells[row, 4].Value = "密码等级";
|
||||
//overviewTbWorksheet.Cells[row, 5].Value = "秘密";
|
||||
|
||||
row++; // 行号+1
|
||||
|
||||
overviewTbWorksheet.Cells[row, 1].Value = "版本号";
|
||||
overviewTbWorksheet.Cells[row, 2].Value = "修订日期";
|
||||
overviewTbWorksheet.Cells[row, 3].Value = "修订内容";
|
||||
overviewTbWorksheet.Cells[row, 4].Value = "修订人";
|
||||
overviewTbWorksheet.Cells[row, 5].Value = "审核人";
|
||||
overviewTbWorksheet.Cells[row, 1, row, 5].Style.Font.Bold = true;
|
||||
overviewTbWorksheet.Cells[row, 1, row, 5].Style.Font.Size = 10;
|
||||
overviewTbWorksheet.Row(1).Height = 20; // 行高
|
||||
|
||||
// 循环日志记录
|
||||
row++; // 行号+1
|
||||
for (var i = 0; i < 16; i++)
|
||||
{
|
||||
// 添加列标题
|
||||
overviewTbWorksheet.Cells[row, 1].Value = "";
|
||||
overviewTbWorksheet.Cells[row, 2].Value = "";
|
||||
overviewTbWorksheet.Cells[row, 3].Value = "";
|
||||
overviewTbWorksheet.Cells[row, 4].Value = "";
|
||||
overviewTbWorksheet.Cells[row, 5].Value = "";
|
||||
|
||||
overviewTbWorksheet.Row(row).Height = 20; // 行高
|
||||
|
||||
row++; // 行号+1
|
||||
}
|
||||
// 水平居中
|
||||
overviewTbWorksheet.Cells[1, 1, row - 1, 5].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
|
||||
// 垂直居中
|
||||
overviewTbWorksheet.Cells[1, 1, row - 1, 5].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center;
|
||||
// 上下左右边框线
|
||||
overviewTbWorksheet.Cells[1, 1, row - 1, 5].Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
|
||||
overviewTbWorksheet.Cells[1, 1, row - 1, 5].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
|
||||
overviewTbWorksheet.Cells[1, 1, row - 1, 5].Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
|
||||
overviewTbWorksheet.Cells[1, 1, row - 1, 5].Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
|
||||
overviewTbWorksheet.Column(1).Width = 25;
|
||||
overviewTbWorksheet.Column(2).Width = 25;
|
||||
overviewTbWorksheet.Column(3).Width = 50;
|
||||
overviewTbWorksheet.Column(4).Width = 25;
|
||||
overviewTbWorksheet.Column(5).Width = 25;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建表目录sheet
|
||||
/// </summary>
|
||||
/// <param name="epck"></param>
|
||||
/// <param name="sheetName"></param>
|
||||
/// <param name="tables"></param>
|
||||
private static void CreateOverviewSheet(OfficeOpenXml.ExcelPackage epck, string sheetName, List<TableDto> tables)
|
||||
{
|
||||
OfficeOpenXml.ExcelWorksheet overviewTbWorksheet = epck.Workbook.Worksheets.Add(sheetName);
|
||||
|
||||
int row = 1;
|
||||
overviewTbWorksheet.Cells[row, 1].Value = "序号";
|
||||
overviewTbWorksheet.Cells[row, 2].Value = "表名";
|
||||
overviewTbWorksheet.Cells[row, 3].Value = "注释/说明";
|
||||
overviewTbWorksheet.Cells[row, 1, row, 3].Style.Font.Bold = true;
|
||||
overviewTbWorksheet.Cells[row, 1, row, 3].Style.Font.Size = 16;
|
||||
overviewTbWorksheet.Row(1).Height = 30; // 行高
|
||||
|
||||
// 循环数据库表名
|
||||
row++;
|
||||
foreach (var table in tables)
|
||||
{
|
||||
// 数据库名称
|
||||
// 添加列标题
|
||||
overviewTbWorksheet.Cells[row, 1].Value = table.TableOrder;
|
||||
overviewTbWorksheet.Cells[row, 2].Value = table.TableName;
|
||||
overviewTbWorksheet.Cells[row, 3].Value = (!string.IsNullOrWhiteSpace(table.Comment) ? table.Comment : "");
|
||||
|
||||
overviewTbWorksheet.Row(row).Height = 30; // 行高
|
||||
|
||||
row++; // 行号+1
|
||||
}
|
||||
// 水平居中
|
||||
overviewTbWorksheet.Cells[1, 1, row - 1, 3].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
|
||||
// 垂直居中
|
||||
overviewTbWorksheet.Cells[1, 1, row - 1, 3].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center;
|
||||
// 上下左右边框线
|
||||
overviewTbWorksheet.Cells[1, 1, row - 1, 3].Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
|
||||
overviewTbWorksheet.Cells[1, 1, row - 1, 3].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
|
||||
overviewTbWorksheet.Cells[1, 1, row - 1, 3].Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
|
||||
overviewTbWorksheet.Cells[1, 1, row - 1, 3].Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
|
||||
overviewTbWorksheet.Column(1).Width = 10;
|
||||
overviewTbWorksheet.Column(2).Width = 50;
|
||||
overviewTbWorksheet.Column(3).Width = 50;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建表结构sheet
|
||||
/// </summary>
|
||||
/// <param name="epck"></param>
|
||||
/// <param name="sheetName"></param>
|
||||
/// <param name="tables"></param>
|
||||
private static void CreateTableSheet(OfficeOpenXml.ExcelPackage epck, string sheetName, List<TableDto> tables)
|
||||
{
|
||||
OfficeOpenXml.ExcelWorksheet tbWorksheet = epck.Workbook.Worksheets.Add(sheetName);
|
||||
int rowNum = 1, fromRow = 0, count = 0; // 行号计数器
|
||||
// 循环数据库表名
|
||||
foreach (var table in tables)
|
||||
{
|
||||
var lstName = new List<string>
|
||||
{
|
||||
"序号","列名","数据类型","长度","小数位","主键","自增","允许空","默认值","列说明"
|
||||
};
|
||||
|
||||
//oracle不显示 列是否自增
|
||||
if (table.DBType.StartsWith("Oracle"))
|
||||
{
|
||||
lstName.Remove("自增");
|
||||
}
|
||||
|
||||
var spColCount = lstName.Count;
|
||||
|
||||
// 数据库名称
|
||||
tbWorksheet.Cells[rowNum, 1, rowNum, spColCount].Merge = true;
|
||||
tbWorksheet.Cells[rowNum, 1].Value = table.TableName + " " + (!string.IsNullOrWhiteSpace(table.Comment) ? table.Comment : "");
|
||||
tbWorksheet.Cells[rowNum, 1, rowNum, spColCount].Style.Font.Bold = true;
|
||||
tbWorksheet.Cells[rowNum, 1, rowNum, spColCount].Style.Font.Size = 16;
|
||||
tbWorksheet.Cells[rowNum, 1, rowNum, spColCount].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
|
||||
tbWorksheet.Cells[rowNum, 1, rowNum, spColCount].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center;
|
||||
|
||||
// 注意:保存起始行号
|
||||
fromRow = rowNum;
|
||||
|
||||
rowNum++; // 行号+1
|
||||
|
||||
// tbWorksheet.Cells[int FromRow, int FromCol, int ToRow, int ToCol]
|
||||
// 列标题字体为粗体
|
||||
tbWorksheet.Cells[rowNum, 1, rowNum, spColCount].Style.Font.Bold = true;
|
||||
|
||||
|
||||
|
||||
// 添加列标题
|
||||
for (int j = 0; j < lstName.Count; j++)
|
||||
{
|
||||
tbWorksheet.Cells[rowNum, j + 1].Value = lstName[j];
|
||||
}
|
||||
|
||||
rowNum++; // 行号+1
|
||||
|
||||
// 添加数据行,遍历数据库表字段
|
||||
foreach (var column in table.Columns)
|
||||
{
|
||||
tbWorksheet.Cells[rowNum, 1].Value = column.ColumnOrder;
|
||||
tbWorksheet.Cells[rowNum, 2].Value = column.ColumnName;
|
||||
tbWorksheet.Cells[rowNum, 3].Value = column.ColumnTypeName;
|
||||
tbWorksheet.Cells[rowNum, 4].Value = column.Length;
|
||||
tbWorksheet.Cells[rowNum, 5].Value = column.Scale;
|
||||
tbWorksheet.Cells[rowNum, 6].Value = column.IsPK;
|
||||
|
||||
//oracle不显示 列是否自增
|
||||
if (table.DBType.StartsWith("Oracle"))
|
||||
{
|
||||
tbWorksheet.Cells[rowNum, 7].Value = column.CanNull;
|
||||
tbWorksheet.Cells[rowNum, 8].Value = column.DefaultVal;
|
||||
tbWorksheet.Cells[rowNum, 9].Value = column.Comment;
|
||||
}
|
||||
else
|
||||
{
|
||||
tbWorksheet.Cells[rowNum, 7].Value = column.IsIdentity;
|
||||
tbWorksheet.Cells[rowNum, 8].Value = column.CanNull;
|
||||
tbWorksheet.Cells[rowNum, 9].Value = column.DefaultVal;
|
||||
tbWorksheet.Cells[rowNum, 10].Value = column.Comment;
|
||||
}
|
||||
rowNum++; // 行号+1
|
||||
}
|
||||
|
||||
// 水平居中
|
||||
tbWorksheet.Cells[fromRow, 1, rowNum - 1, spColCount].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
|
||||
// 垂直居中
|
||||
tbWorksheet.Cells[fromRow, 1, rowNum - 1, spColCount].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center;
|
||||
// 上下左右边框线
|
||||
tbWorksheet.Cells[fromRow, 1, rowNum - 1, spColCount].Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
|
||||
tbWorksheet.Cells[fromRow, 1, rowNum - 1, spColCount].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
|
||||
tbWorksheet.Cells[fromRow, 1, rowNum - 1, spColCount].Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
|
||||
tbWorksheet.Cells[fromRow, 1, rowNum - 1, spColCount].Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
|
||||
|
||||
// 处理空白行,分割用
|
||||
if (count < tables.Count - 1)
|
||||
{
|
||||
//tbWorksheet.Cells[rowNum, 1, rowNum, spColCount].Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
|
||||
//tbWorksheet.Cells[rowNum, 1, rowNum, spColCount].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
|
||||
tbWorksheet.Cells[rowNum, 1, rowNum, spColCount].Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
|
||||
tbWorksheet.Cells[rowNum, 1, rowNum, spColCount].Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
|
||||
tbWorksheet.Cells[rowNum, 1, rowNum, spColCount].Merge = true;
|
||||
tbWorksheet.Cells[rowNum, 1, rowNum, 1].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
|
||||
tbWorksheet.Cells[rowNum, 1, rowNum, 1].Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.DodgerBlue);
|
||||
}
|
||||
|
||||
rowNum++; // 行号+1
|
||||
|
||||
count++; // 计数器+1
|
||||
}
|
||||
|
||||
// 设置表格样式
|
||||
tbWorksheet.Cells.Style.WrapText = true; // 自动换行
|
||||
tbWorksheet.Cells.Style.ShrinkToFit = true; // 单元格自动适应大小
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using DocTools.Dtos;
|
||||
using ZetaLongPaths;
|
||||
|
||||
namespace DocTools.DBDoc
|
||||
{
|
||||
public class HtmlDoc : Doc
|
||||
{
|
||||
public HtmlDoc(DBDto dto, string filter = "html files (*.html)|*.html") : base(dto, filter)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Build(string filePath)
|
||||
{
|
||||
var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TplFile\\html");
|
||||
var html_tpl = File.ReadAllText(Path.Combine(dir, "html.cshtml"), Encoding.UTF8);
|
||||
var html_doc = html_tpl.RazorRender(this.Dto);
|
||||
ZlpIOHelper.WriteAllText(filePath, html_doc, Encoding.UTF8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using DocTools.Dtos;
|
||||
using ZetaLongPaths;
|
||||
|
||||
namespace DocTools.DBDoc
|
||||
{
|
||||
public class MarkDownDoc : Doc
|
||||
{
|
||||
public MarkDownDoc(DBDto dto, string filter = "markdown files (.md)|*.md") : base(dto, filter)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Build(string filePath)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
sb.AppendLine("# 数据库表目录");
|
||||
var dirMD = this.Dto.Tables.MarkDown("Columns", "DBType");
|
||||
dirMD = Regex.Replace(dirMD, @"(.+?\|\s+)([a-zA-Z][a-zA-Z0-9_]+)(\s+\|.+\n?)", $"$1[$2](#$2)$3", RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
||||
|
||||
sb.Append(dirMD);
|
||||
sb.AppendLine();
|
||||
|
||||
if (this.Dto.Tables.Any())
|
||||
{
|
||||
sb.Append("## 表结构");
|
||||
foreach (var dto in this.Dto.Tables)
|
||||
{
|
||||
sb.AppendLine();
|
||||
sb.AppendLine($"### <a name=\"{dto.TableName}\">{dto.TableName} {dto.Comment}</a>");
|
||||
|
||||
if (dto.DBType.StartsWith("Oracle"))
|
||||
{
|
||||
sb.Append(dto.Columns.MarkDown("IsIdentity"));
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append(dto.Columns.MarkDown());
|
||||
}
|
||||
|
||||
sb.AppendLine();
|
||||
}
|
||||
}
|
||||
|
||||
if (this.Dto.Views.Any())
|
||||
{
|
||||
sb.Append("## 视图");
|
||||
foreach (var item in this.Dto.Views)
|
||||
{
|
||||
sb.AppendLine();
|
||||
sb.AppendLine($"### {item.Key}");
|
||||
sb.AppendLine("``` sql");
|
||||
var fmtSql = JS.RunFmtSql(item.Value, this.Dto.DBType);
|
||||
sb.Append(fmtSql);
|
||||
sb.AppendLine("```");
|
||||
sb.AppendLine();
|
||||
}
|
||||
}
|
||||
|
||||
if (this.Dto.Procs.Any())
|
||||
{
|
||||
sb.Append("## 存储过程");
|
||||
foreach (var item in this.Dto.Procs)
|
||||
{
|
||||
sb.AppendLine();
|
||||
sb.AppendLine($"### {item.Key}");
|
||||
sb.AppendLine("``` sql");
|
||||
var fmtSql = JS.RunFmtSql(item.Value, this.Dto.DBType);
|
||||
sb.Append(fmtSql);
|
||||
sb.AppendLine("```");
|
||||
sb.AppendLine();
|
||||
}
|
||||
}
|
||||
var md = sb.ToString();
|
||||
|
||||
ZlpIOHelper.WriteAllText(filePath, md, Encoding.UTF8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,327 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using DocTools.Dtos;
|
||||
using iTextSharp.text;
|
||||
using iTextSharp.text.pdf;
|
||||
using ZetaLongPaths;
|
||||
|
||||
namespace DocTools.DBDoc
|
||||
{
|
||||
public class PdfDoc : Doc
|
||||
{
|
||||
public PdfDoc(DBDto dto, string filter = "html files (.pdf)|*.pdf") : base(dto, filter)
|
||||
{
|
||||
}
|
||||
|
||||
private static string TTF_Path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TplFile\\pdf\\msyh.ttf");
|
||||
|
||||
public override void Build(string filePath)
|
||||
{
|
||||
PdfUtils.ExportPdfByITextSharp(filePath, TTF_Path, this.Dto);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Pdf处理工具类
|
||||
/// </summary>
|
||||
internal static class PdfUtils
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 引用iTextSharp.dll导出pdf数据库字典文档
|
||||
/// </summary>
|
||||
/// <param name="databaseName"></param>
|
||||
/// <param name="tables"></param>
|
||||
public static void ExportPdfByITextSharp(string fileName, string fontPath, DBDto dto)
|
||||
{
|
||||
var databaseName = dto.DBName;
|
||||
var tables = dto.Tables;
|
||||
// 创建并添加文档信息
|
||||
Document pdfDocument = new Document();
|
||||
pdfDocument.AddTitle(fileName);
|
||||
|
||||
PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDocument,
|
||||
new System.IO.FileStream(fileName, System.IO.FileMode.Create));
|
||||
pdfDocument.Open(); // 打开文档
|
||||
|
||||
// 标题
|
||||
Paragraph title = new Paragraph("数据库字典文档\n\n", BaseFont(fontPath, 30, Font.BOLD));
|
||||
title.Alignment = Element.ALIGN_CENTER;
|
||||
pdfDocument.Add(title);
|
||||
Paragraph subTitle = new Paragraph(" —— " + databaseName, BaseFont(fontPath, 20, Font.NORMAL));
|
||||
subTitle.Alignment = Element.ALIGN_CENTER;
|
||||
pdfDocument.Add(subTitle);
|
||||
|
||||
// PDF换页
|
||||
pdfDocument.NewPage();
|
||||
|
||||
// 创建添加书签章节
|
||||
int chapterNum = 1;
|
||||
// 全局字体设置,处理iTextSharp中文不识别显示问题
|
||||
Font pdfFont = BaseFont(fontPath, 12, Font.NORMAL);
|
||||
|
||||
// log table
|
||||
Chapter logChapter = new Chapter(new Paragraph(AppConst.LOG_CHAPTER_NAME, pdfFont), chapterNum);
|
||||
pdfDocument.Add(logChapter);
|
||||
pdfDocument.Add(new Paragraph("\n", pdfFont)); // 换行
|
||||
CreateLogTable(pdfDocument, pdfFont, tables);
|
||||
// PDF换页
|
||||
pdfDocument.NewPage();
|
||||
|
||||
// overview table
|
||||
Chapter dirChapter = new Chapter(new Paragraph(AppConst.TABLE_CHAPTER_NAME, pdfFont), (++chapterNum));
|
||||
pdfDocument.Add(dirChapter);
|
||||
pdfDocument.Add(new Paragraph("\n", pdfFont)); // 换行
|
||||
CreateOverviewTable(pdfDocument, pdfFont, tables);
|
||||
// PDF换页
|
||||
pdfDocument.NewPage();
|
||||
|
||||
// table structure
|
||||
// 添加书签章节
|
||||
Chapter tableChapter = new Chapter(new Paragraph(AppConst.TABLE_STRUCTURE_CHAPTER_NAME, pdfFont), (++chapterNum));
|
||||
tableChapter.BookmarkOpen = true;
|
||||
pdfDocument.Add(tableChapter);
|
||||
pdfDocument.Add(new Paragraph("\n", pdfFont)); // 换行
|
||||
|
||||
foreach (var table in tables)
|
||||
{
|
||||
string docTableName = table.TableName + " " + (!string.IsNullOrWhiteSpace(table.Comment) ? table.Comment : "");
|
||||
// 添加书签章节
|
||||
Section selection = tableChapter.AddSection(20f, new Paragraph(docTableName, pdfFont), chapterNum);
|
||||
pdfDocument.Add(selection);
|
||||
pdfDocument.Add(new Paragraph("\n", pdfFont)); // 换行
|
||||
|
||||
// 遍历数据库表
|
||||
// 创建表格
|
||||
PdfPTable pdfTable = null;
|
||||
if (!table.DBType.StartsWith("Oracle"))
|
||||
{
|
||||
pdfTable = new PdfPTable(10);
|
||||
}
|
||||
else
|
||||
{
|
||||
pdfTable = new PdfPTable(9);
|
||||
}
|
||||
|
||||
// 添加列标题
|
||||
pdfTable.AddCell(CreatePdfPCell("序号", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("列名", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("数据类型", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("长度", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("小数位", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("主键", pdfFont));
|
||||
|
||||
if (!table.DBType.StartsWith("Oracle"))
|
||||
{
|
||||
pdfTable.AddCell(CreatePdfPCell("自增", pdfFont));
|
||||
}
|
||||
|
||||
pdfTable.AddCell(CreatePdfPCell("允许空", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("默认值", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("列说明", pdfFont));
|
||||
// 添加数据行,循环数据库表字段
|
||||
foreach (var column in table.Columns)
|
||||
{
|
||||
pdfTable.AddCell(CreatePdfPCell(column.ColumnOrder, pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell(column.ColumnName, pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell(column.ColumnTypeName, pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell(column.Length, pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell(column.Scale, pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell(column.IsPK, pdfFont));
|
||||
|
||||
if (!table.DBType.StartsWith("Oracle"))
|
||||
{
|
||||
pdfTable.AddCell(CreatePdfPCell(column.IsIdentity, pdfFont));
|
||||
}
|
||||
|
||||
pdfTable.AddCell(CreatePdfPCell(column.CanNull, pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell(column.DefaultVal, pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell(column.Comment, pdfFont));
|
||||
}
|
||||
|
||||
// 设置表格居中
|
||||
pdfTable.HorizontalAlignment = Element.ALIGN_CENTER;
|
||||
pdfTable.TotalWidth = 520F;
|
||||
pdfTable.LockedWidth = true;
|
||||
|
||||
if (!table.DBType.StartsWith("Oracle"))
|
||||
{
|
||||
pdfTable.SetWidths(new float[] { 50F, 60F, 60F, 50F, 50F, 50F, 50F, 50F, 50F, 50F });
|
||||
}
|
||||
else
|
||||
{
|
||||
pdfTable.SetWidths(new float[] { 50F, 80F, 70F, 50F, 50F, 50F, 50F, 50F, 70F });
|
||||
}
|
||||
|
||||
|
||||
// 添加表格
|
||||
pdfDocument.Add(pdfTable);
|
||||
|
||||
// PDF换页
|
||||
pdfDocument.NewPage();
|
||||
}
|
||||
|
||||
|
||||
if (dto.Views.Count > 0)
|
||||
{
|
||||
Chapter viewChapter = new Chapter(new Paragraph("视图", pdfFont), (++chapterNum));
|
||||
viewChapter.BookmarkOpen = true;
|
||||
pdfDocument.Add(viewChapter);
|
||||
// 换行
|
||||
pdfDocument.Add(new Paragraph("\n", pdfFont));
|
||||
|
||||
foreach (var item in dto.Views)
|
||||
{
|
||||
Section selection = viewChapter.AddSection(20f, new Paragraph(item.Key, pdfFont), chapterNum);
|
||||
pdfDocument.Add(selection);
|
||||
// 换行
|
||||
pdfDocument.Add(new Paragraph("\n", pdfFont));
|
||||
|
||||
Paragraph pgh = new Paragraph(item.Value.Replace("`", ""), pdfFont);
|
||||
pdfDocument.Add(pgh);
|
||||
|
||||
// 换行
|
||||
pdfDocument.Add(new Paragraph("\n", pdfFont));
|
||||
}
|
||||
pdfDocument.NewPage();
|
||||
}
|
||||
|
||||
|
||||
if (dto.Procs.Count > 0)
|
||||
{
|
||||
Chapter procChapter = new Chapter(new Paragraph("存储过程", pdfFont), (++chapterNum));
|
||||
procChapter.BookmarkOpen = true;
|
||||
pdfDocument.Add(procChapter);
|
||||
// 换行
|
||||
pdfDocument.Add(new Paragraph("\n", pdfFont));
|
||||
|
||||
foreach (var item in dto.Procs)
|
||||
{
|
||||
Section selection = procChapter.AddSection(20f, new Paragraph(item.Key, pdfFont), chapterNum);
|
||||
pdfDocument.Add(selection);
|
||||
// 换行
|
||||
pdfDocument.Add(new Paragraph("\n", pdfFont));
|
||||
|
||||
Paragraph pgh = new Paragraph(item.Value.Replace("`",""), pdfFont);
|
||||
pdfDocument.Add(pgh);
|
||||
|
||||
// 换行
|
||||
pdfDocument.Add(new Paragraph("\n", pdfFont));
|
||||
|
||||
}
|
||||
pdfDocument.NewPage();
|
||||
}
|
||||
|
||||
// 关闭释放PDF文档资源
|
||||
pdfDocument.Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// create log table
|
||||
/// </summary>
|
||||
/// <param name="pdfDocument"></param>
|
||||
/// <param name="pdfFont"></param>
|
||||
/// <param name="tables"></param>
|
||||
private static void CreateLogTable(Document pdfDocument, Font pdfFont, List<TableDto> tables)
|
||||
{
|
||||
// 创建表格
|
||||
PdfPTable pdfTable = new PdfPTable(5);
|
||||
|
||||
// 添加列标题
|
||||
pdfTable.AddCell(CreatePdfPCell("版本号", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("修订日期", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("修订内容", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("修订人", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("审核人", pdfFont));
|
||||
for (var i = 0; i < 16; i++)
|
||||
{
|
||||
// 添加数据行,循环数据库表字段
|
||||
pdfTable.AddCell(CreatePdfPCell("", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("", pdfFont));
|
||||
}
|
||||
|
||||
// 设置表格居中
|
||||
pdfTable.HorizontalAlignment = Element.ALIGN_CENTER;
|
||||
pdfTable.TotalWidth = 540F;
|
||||
pdfTable.LockedWidth = true;
|
||||
pdfTable.SetWidths(new float[] { 80F, 100F, 200F, 80F, 80F });
|
||||
|
||||
// 添加表格
|
||||
pdfDocument.Add(pdfTable);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// create overview table
|
||||
/// </summary>
|
||||
/// <param name="pdfDocument"></param>
|
||||
/// <param name="pdfFont"></param>
|
||||
/// <param name="tables"></param>
|
||||
private static void CreateOverviewTable(Document pdfDocument, Font pdfFont, List<TableDto> tables)
|
||||
{
|
||||
// 创建表格
|
||||
PdfPTable pdfTable = new PdfPTable(3);
|
||||
|
||||
// 添加列标题
|
||||
pdfTable.AddCell(CreatePdfPCell("序号", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("表名", pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell("注释/说明", pdfFont));
|
||||
foreach (var table in tables)
|
||||
{
|
||||
// 添加数据行,循环数据库表字段
|
||||
pdfTable.AddCell(CreatePdfPCell(table.TableOrder, pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell(table.TableName, pdfFont));
|
||||
pdfTable.AddCell(CreatePdfPCell((!string.IsNullOrWhiteSpace(table.Comment) ? table.Comment : ""), pdfFont));
|
||||
}
|
||||
|
||||
// 设置表格居中
|
||||
pdfTable.HorizontalAlignment = Element.ALIGN_CENTER;
|
||||
pdfTable.TotalWidth = 330F;
|
||||
pdfTable.LockedWidth = true;
|
||||
pdfTable.SetWidths(new float[] { 60F, 120F, 150F });
|
||||
|
||||
// 添加表格
|
||||
pdfDocument.Add(pdfTable);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建pdf表格单元格
|
||||
/// </summary>
|
||||
/// <param name="text"></param>
|
||||
/// <param name="pdfFont"></param>
|
||||
/// <returns></returns>
|
||||
private static PdfPCell CreatePdfPCell(string text, Font pdfFont)
|
||||
{
|
||||
Phrase phrase = new Phrase(text, pdfFont);
|
||||
PdfPCell pdfPCell = new PdfPCell(phrase);
|
||||
|
||||
// 单元格垂直居中显示
|
||||
pdfPCell.HorizontalAlignment = Element.ALIGN_CENTER;
|
||||
pdfPCell.VerticalAlignment = Element.ALIGN_MIDDLE;
|
||||
|
||||
pdfPCell.MinimumHeight = 30;
|
||||
|
||||
return pdfPCell;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// iTextSharp字体设置
|
||||
/// </summary>
|
||||
/// <param name="fontPath"></param>
|
||||
/// <param name="fontSize"></param>
|
||||
/// <param name="fontStyle"></param>
|
||||
private static Font BaseFont(string fontPath, float fontSize, int fontStyle)
|
||||
{
|
||||
BaseFont chinese = iTextSharp.text.pdf.BaseFont.CreateFont(fontPath, iTextSharp.text.pdf.BaseFont.IDENTITY_H, true);
|
||||
Font pdfFont = new Font(chinese, fontSize, fontStyle);
|
||||
return pdfFont;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,511 @@
|
|||
using System.Collections.Generic;
|
||||
using Aspose.Words.Tables;
|
||||
using DocTools.Dtos;
|
||||
|
||||
namespace DocTools.DBDoc
|
||||
{
|
||||
public class WordDoc : Doc
|
||||
{
|
||||
public WordDoc(DBDto dto, string filter = "word files (.doc)|*.doc") : base(dto, filter)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Build(string filePath)
|
||||
{
|
||||
WordUtils.ExportWordByAsposeWords(filePath, this.Dto);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Word处理工具类
|
||||
/// </summary>
|
||||
internal static class WordUtils
|
||||
{
|
||||
private static string asposeBookmark_prefix = "AsposeBookmark";
|
||||
private static string asposeBookmarkLog = "asposeBookmarkLog";
|
||||
private static string asposeBookmarkOverview = "asposeBookmarkOverview";
|
||||
|
||||
/// <summary>
|
||||
/// 引用Aspose.Words.dll导出word数据库字典文档
|
||||
/// 注意:不依赖微软office办公软件
|
||||
/// </summary>
|
||||
/// <param name="databaseName"></param>
|
||||
/// <param name="tables"></param>
|
||||
public static void ExportWordByAsposeWords(string fileName, DBDto dto)
|
||||
{
|
||||
var databaseName = dto.DBName;
|
||||
var tables = dto.Tables;
|
||||
|
||||
Aspose.Words.Document doc = new Aspose.Words.Document();
|
||||
|
||||
// TODO document properties
|
||||
doc.BuiltInDocumentProperties.Subject = "设计文档";
|
||||
doc.BuiltInDocumentProperties.ContentType = "数据库字典";
|
||||
doc.BuiltInDocumentProperties.Title = "数据库字典文档";
|
||||
doc.BuiltInDocumentProperties.Author = doc.BuiltInDocumentProperties.LastSavedBy = doc.BuiltInDocumentProperties.Manager = "trycache";
|
||||
doc.BuiltInDocumentProperties.Company = "51Try.Top";
|
||||
doc.BuiltInDocumentProperties.Version = doc.BuiltInDocumentProperties.RevisionNumber = 1;
|
||||
doc.BuiltInDocumentProperties.ContentStatus = "初稿";
|
||||
doc.BuiltInDocumentProperties.NameOfApplication = "DBCHM";
|
||||
doc.BuiltInDocumentProperties.LastSavedTime = doc.BuiltInDocumentProperties.CreatedTime = System.DateTime.Now;
|
||||
|
||||
// TODO header and footer setting
|
||||
Aspose.Words.HeaderFooter header = new Aspose.Words.HeaderFooter(doc, Aspose.Words.HeaderFooterType.HeaderPrimary);
|
||||
doc.FirstSection.HeadersFooters.Add(header);
|
||||
// Add a paragraph with text to the header.
|
||||
header.AppendParagraph("数智化合规系统字典").ParagraphFormat.Alignment =
|
||||
Aspose.Words.ParagraphAlignment.Right;
|
||||
|
||||
Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);
|
||||
|
||||
// TODO 创建文档标题书签
|
||||
CreateBookmark(builder, Aspose.Words.ParagraphAlignment.Center, Aspose.Words.OutlineLevel.Level1, 25,
|
||||
asposeBookmark_prefix + "0", "数据库字典文档");
|
||||
builder.ParagraphFormat.OutlineLevel = Aspose.Words.OutlineLevel.BodyText;
|
||||
builder.Writeln("—— " + databaseName);
|
||||
|
||||
// TODO 换行
|
||||
builder.InsertBreak(Aspose.Words.BreakType.ParagraphBreak);
|
||||
builder.InsertBreak(Aspose.Words.BreakType.ParagraphBreak);
|
||||
builder.InsertBreak(Aspose.Words.BreakType.ParagraphBreak);
|
||||
|
||||
// TODO 数据库字典文档修订日志表
|
||||
CreateBookmark(builder, Aspose.Words.ParagraphAlignment.Center, Aspose.Words.OutlineLevel.Level2, 16,
|
||||
asposeBookmarkLog, AppConst.LOG_CHAPTER_NAME);
|
||||
CreateLogTable(builder);
|
||||
builder.InsertBreak(Aspose.Words.BreakType.PageBreak);
|
||||
|
||||
// TODO 创建数据库字典文档数据库概况一览表
|
||||
CreateBookmark(builder, Aspose.Words.ParagraphAlignment.Center, Aspose.Words.OutlineLevel.Level2, 16,
|
||||
asposeBookmarkOverview, AppConst.TABLE_CHAPTER_NAME);
|
||||
CreateOverviewTable(builder, tables);
|
||||
builder.InsertBreak(Aspose.Words.BreakType.PageBreak);
|
||||
|
||||
// TODO 创建书签
|
||||
CreateBookmark(builder, Aspose.Words.ParagraphAlignment.Left, Aspose.Words.OutlineLevel.Level2, 16,
|
||||
asposeBookmark_prefix + 1, AppConst.TABLE_STRUCTURE_CHAPTER_NAME);
|
||||
|
||||
int i = 1; // 计数器
|
||||
// TODO 遍历数据库表集合
|
||||
foreach (var table in tables)
|
||||
{
|
||||
string bookmarkName = table.TableName + " " + (!string.IsNullOrWhiteSpace(table.Comment) ? table.Comment : "");
|
||||
|
||||
// TODO 创建书签
|
||||
CreateBookmark(builder, Aspose.Words.ParagraphAlignment.Left, Aspose.Words.OutlineLevel.Level3, 16,
|
||||
asposeBookmark_prefix + i, table.TableOrder + "、" + bookmarkName);
|
||||
|
||||
// TODO 遍历数据库表字段集合
|
||||
// TODO 创建表格
|
||||
Aspose.Words.Tables.Table asposeTable = builder.StartTable();
|
||||
|
||||
// 清除段落样式
|
||||
builder.ParagraphFormat.ClearFormatting();
|
||||
|
||||
#region 表格列设置,列标题,列宽,字体等
|
||||
// Make the header row.
|
||||
builder.InsertCell();
|
||||
// Set the left indent for the table. Table wide formatting must be applied after
|
||||
// at least one row is present in the table.
|
||||
asposeTable.Alignment = Aspose.Words.Tables.TableAlignment.Center;
|
||||
asposeTable.PreferredWidth = PreferredWidth.FromPercent(100);
|
||||
asposeTable.AllowAutoFit = false;
|
||||
// Set height and define the height rule for the header row.
|
||||
builder.RowFormat.Height = 25.0;
|
||||
builder.RowFormat.HeightRule = Aspose.Words.HeightRule.AtLeast;
|
||||
// Some special features for the header row.
|
||||
builder.CellFormat.Shading.BackgroundPatternColor = System.Drawing.Color.FromArgb(198, 217, 241);
|
||||
builder.ParagraphFormat.Alignment = Aspose.Words.ParagraphAlignment.Center;
|
||||
builder.Font.Size = 10;
|
||||
builder.Font.Name = "宋体";
|
||||
builder.Font.Bold = true;
|
||||
builder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(8);
|
||||
builder.Write("序号");
|
||||
|
||||
// We don't need to specify the width of this cell because it's inherited from the previous cell.
|
||||
builder.InsertCell();
|
||||
builder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(15);
|
||||
builder.Write("字段名称");
|
||||
|
||||
builder.InsertCell();
|
||||
builder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(25);
|
||||
builder.Write("字段描述");
|
||||
|
||||
builder.InsertCell();
|
||||
builder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(12);
|
||||
builder.Write("数据类型");
|
||||
|
||||
builder.InsertCell();
|
||||
builder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(10);
|
||||
builder.Write("长度");
|
||||
|
||||
//builder.InsertCell();
|
||||
//builder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(8);
|
||||
//builder.Write("小数位");
|
||||
|
||||
builder.InsertCell();
|
||||
builder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(10);
|
||||
builder.Write("主键");
|
||||
|
||||
//if (!table.DBType.StartsWith("Oracle"))
|
||||
//{
|
||||
// builder.InsertCell();
|
||||
// builder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(7);
|
||||
// builder.Write("自增");
|
||||
//}
|
||||
|
||||
builder.InsertCell();
|
||||
builder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(10);
|
||||
builder.Write("允许空");
|
||||
|
||||
builder.InsertCell();
|
||||
builder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(8);
|
||||
builder.Write("默认值");
|
||||
|
||||
|
||||
builder.EndRow();
|
||||
#endregion
|
||||
|
||||
foreach (var column in table.Columns)
|
||||
{
|
||||
#region 遍历表格数据行写入
|
||||
// Set features for the other rows and cells.
|
||||
builder.CellFormat.Shading.BackgroundPatternColor = System.Drawing.Color.White;
|
||||
builder.CellFormat.Width = 100.0;
|
||||
builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
|
||||
//builder.CellFormat.FitText = true;
|
||||
// Reset height and define a different height rule for table body
|
||||
builder.RowFormat.Height = 20.0;
|
||||
builder.RowFormat.HeightRule = Aspose.Words.HeightRule.AtLeast;
|
||||
builder.InsertCell();
|
||||
// Reset font formatting.
|
||||
builder.Font.Size = 9;
|
||||
builder.Font.Bold = false;
|
||||
builder.Write(column.ColumnOrder); // 序号
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Write(column.ColumnName); // 列名
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Font.Size = 9;
|
||||
builder.Write(column.Comment); // 列说明
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Write(column.ColumnTypeName); // 数据类型
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Write(column.Length); // 长度
|
||||
|
||||
//builder.InsertCell();
|
||||
//builder.Write(column.Scale); // 小数位
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Write(column.IsPK); // 主键
|
||||
|
||||
//if (!table.DBType.StartsWith("Oracle"))
|
||||
//{
|
||||
// builder.InsertCell();
|
||||
// builder.Write(column.IsIdentity); // 自增
|
||||
//}
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Write(column.CanNull); // 是否为空
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Font.Size = 9;
|
||||
builder.Write(column.DefaultVal); // 默认值
|
||||
|
||||
|
||||
|
||||
builder.EndRow();
|
||||
#endregion
|
||||
}
|
||||
|
||||
// TODO 表格创建完成,结束
|
||||
//asposeTable.PreferredWidth = Aspose.Words.Tables.PreferredWidth.Auto;
|
||||
//asposeTable.AutoFit(Aspose.Words.Tables.AutoFitBehavior.AutoFitToContents);
|
||||
builder.EndTable();
|
||||
|
||||
i++;
|
||||
|
||||
// TODO page breaks
|
||||
if (i < tables.Count)
|
||||
{
|
||||
builder.InsertBreak(Aspose.Words.BreakType.PageBreak);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO 生成页码
|
||||
AutoGenPageNum(doc, builder);
|
||||
|
||||
// TODO 添加水印
|
||||
//InsertWatermarkText(doc, "DBCHM-51Try.Top");
|
||||
|
||||
doc.Save(fileName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 生成页码
|
||||
/// </summary>
|
||||
/// <param name="builder"></param>
|
||||
public static void AutoGenPageNum(Aspose.Words.Document doc, Aspose.Words.DocumentBuilder builder)
|
||||
{
|
||||
Aspose.Words.HeaderFooter footer = new Aspose.Words.HeaderFooter(doc, Aspose.Words.HeaderFooterType.FooterPrimary);
|
||||
doc.FirstSection.HeadersFooters.Add(footer);
|
||||
// Add a paragraph with text to the footer.
|
||||
footer.AppendParagraph("").ParagraphFormat.Alignment = Aspose.Words.ParagraphAlignment.Center;
|
||||
// We want to insert a field like this: {PAGE} / {NUMPAGES}
|
||||
// TODO Go to the primary footer
|
||||
builder.MoveToHeaderFooter(Aspose.Words.HeaderFooterType.FooterPrimary);
|
||||
// TODO Add fields for current page number
|
||||
builder.InsertField("PAGE");
|
||||
// TODO Add any custom text formatter
|
||||
builder.Write(" / ");
|
||||
// TODO Add field for total page numbers in document
|
||||
builder.InsertField("NUMPAGES");
|
||||
// Finally update the outer field to recalcaluate the final value.
|
||||
// Doing this will automatically update the inner fields at the same time.
|
||||
// field.Update();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建数据库字典文档修订日志表
|
||||
/// </summary>
|
||||
/// <param name="builder"></param>
|
||||
private static void CreateLogTable(Aspose.Words.DocumentBuilder builder)
|
||||
{
|
||||
// 清除段落样式
|
||||
builder.ParagraphFormat.ClearFormatting();
|
||||
|
||||
// TODO 创建表格
|
||||
Aspose.Words.Tables.Table logTable = builder.StartTable();
|
||||
|
||||
#region 表格列设置,列标题,列宽,字体等
|
||||
// Make the header row.
|
||||
builder.InsertCell();
|
||||
// Set the left indent for the table. Table wide formatting must be applied after
|
||||
// at least one row is present in the table.
|
||||
logTable.Alignment = Aspose.Words.Tables.TableAlignment.Center;
|
||||
logTable.AllowAutoFit = true;
|
||||
// Set height and define the height rule for the header row.
|
||||
builder.RowFormat.Height = 40.0;
|
||||
builder.RowFormat.HeightRule = Aspose.Words.HeightRule.AtLeast;
|
||||
// Some special features for the header row.
|
||||
builder.CellFormat.Shading.BackgroundPatternColor = System.Drawing.Color.FromArgb(198, 217, 241);
|
||||
builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
|
||||
builder.ParagraphFormat.Alignment = Aspose.Words.ParagraphAlignment.Center;
|
||||
builder.Font.Size = 14;
|
||||
builder.Font.Name = "Arial";
|
||||
builder.Font.Bold = true;
|
||||
builder.CellFormat.Width = 100.0;
|
||||
builder.Write("版本号");
|
||||
|
||||
// We don't need to specify the width of this cell because it's inherited from the previous cell.
|
||||
builder.InsertCell();
|
||||
builder.Write("修订日期");
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Write("修订内容");
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Write("修订人");
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Write("审核人");
|
||||
|
||||
builder.EndRow();
|
||||
#endregion
|
||||
|
||||
for (var i = 0; i < 5; i++)
|
||||
{
|
||||
#region 遍历表格数据行写入
|
||||
// Set features for the other rows and cells.
|
||||
builder.CellFormat.Shading.BackgroundPatternColor = System.Drawing.Color.White;
|
||||
builder.CellFormat.Width = 100.0;
|
||||
builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
|
||||
// Reset height and define a different height rule for table body
|
||||
builder.RowFormat.Height = 40.0;
|
||||
builder.InsertCell();
|
||||
// Reset font formatting.
|
||||
builder.Font.Size = 12;
|
||||
builder.Font.Bold = false;
|
||||
builder.Write(""); // 版本号
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Write(""); // 修订日期
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Write(""); // 修订内容
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Write(""); // 修订人
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Write(""); // 审核人
|
||||
|
||||
builder.EndRow();
|
||||
#endregion
|
||||
}
|
||||
// TODO 表格创建完成,结束
|
||||
builder.EndTable();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建数据库字典文档数据库概况一览表
|
||||
/// </summary>
|
||||
/// <param name="builder"></param>
|
||||
/// <param name="tables"></param>
|
||||
private static void CreateOverviewTable(Aspose.Words.DocumentBuilder builder, List<TableDto> tables)
|
||||
{
|
||||
// 清除段落样式
|
||||
builder.ParagraphFormat.ClearFormatting();
|
||||
|
||||
// TODO 创建表格
|
||||
Aspose.Words.Tables.Table overviewTable = builder.StartTable();
|
||||
|
||||
#region 表格列设置,列标题,列宽,字体等
|
||||
// Make the header row.
|
||||
builder.InsertCell();
|
||||
// Set the left indent for the table. Table wide formatting must be applied after
|
||||
// at least one row is present in the table.
|
||||
overviewTable.Alignment = Aspose.Words.Tables.TableAlignment.Center;
|
||||
overviewTable.AllowAutoFit = true;
|
||||
// Set height and define the height rule for the header row.
|
||||
builder.RowFormat.Height = 40.0;
|
||||
builder.RowFormat.HeightRule = Aspose.Words.HeightRule.AtLeast;
|
||||
// Some special features for the header row.
|
||||
builder.CellFormat.Shading.BackgroundPatternColor = System.Drawing.Color.FromArgb(198, 217, 241);
|
||||
builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
|
||||
builder.ParagraphFormat.Alignment = Aspose.Words.ParagraphAlignment.Center;
|
||||
builder.Font.Size = 14;
|
||||
builder.Font.Name = "Arial";
|
||||
builder.Font.Bold = true;
|
||||
builder.CellFormat.Width = 100.0;
|
||||
builder.Write("序号");
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Write("表名");
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Write("注释/说明");
|
||||
|
||||
builder.EndRow();
|
||||
#endregion
|
||||
|
||||
// TODO 遍历数据库表集合
|
||||
foreach (var table in tables)
|
||||
{
|
||||
#region 遍历表格数据行写入
|
||||
// Set features for the other rows and cells.
|
||||
builder.CellFormat.Shading.BackgroundPatternColor = System.Drawing.Color.White;
|
||||
builder.CellFormat.Width = 100.0;
|
||||
builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
|
||||
// Reset height and define a different height rule for table body
|
||||
builder.RowFormat.Height = 40.0;
|
||||
builder.InsertCell();
|
||||
// Reset font formatting.
|
||||
builder.Font.Size = 12;
|
||||
builder.Font.Bold = false;
|
||||
builder.Write(table.TableOrder); // 序号
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Write(table.TableName); // 表名
|
||||
|
||||
builder.InsertCell();
|
||||
builder.Write((!string.IsNullOrWhiteSpace(table.Comment) ? table.Comment : "")); // 说明
|
||||
#endregion
|
||||
|
||||
builder.EndRow();
|
||||
}
|
||||
// TODO 表格创建完成,结束
|
||||
builder.EndTable();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建书签
|
||||
/// </summary>
|
||||
/// <param name="builder"></param>
|
||||
/// <param name="alignment"></param>
|
||||
/// <param name="outlineLevel"></param>
|
||||
/// <param name="fontSize"></param>
|
||||
/// <param name="bookmarkName"></param>
|
||||
/// <param name="bookmarkText"></param>
|
||||
private static void CreateBookmark(Aspose.Words.DocumentBuilder builder, Aspose.Words.ParagraphAlignment alignment,
|
||||
Aspose.Words.OutlineLevel outlineLevel, double fontSize, string bookmarkName, string bookmarkText)
|
||||
{
|
||||
// 清除段落样式
|
||||
builder.ParagraphFormat.ClearFormatting();
|
||||
|
||||
// TODO 创建书签
|
||||
builder.StartBookmark(bookmarkName);
|
||||
builder.ParagraphFormat.Alignment = alignment;
|
||||
builder.ParagraphFormat.OutlineLevel = outlineLevel;
|
||||
builder.ParagraphFormat.SpaceBefore = builder.ParagraphFormat.SpaceAfter = 15;
|
||||
builder.Font.Size = fontSize;
|
||||
builder.Font.Name = "Arial";
|
||||
builder.Font.Bold = true;
|
||||
builder.Writeln(bookmarkText);
|
||||
builder.EndBookmark(bookmarkName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Inserts a watermark into a document.
|
||||
/// </summary>
|
||||
/// <param name="doc">The input document.</param>
|
||||
/// <param name="watermarkText">Text of the watermark.</param>
|
||||
public static void InsertWatermarkText(Aspose.Words.Document doc, string watermarkText)
|
||||
{
|
||||
// Create a watermark shape. This will be a WordArt shape.
|
||||
// You are free to try other shape types as watermarks.
|
||||
Aspose.Words.Drawing.Shape watermark = new Aspose.Words.Drawing.Shape(doc, Aspose.Words.Drawing.ShapeType.TextPlainText);
|
||||
// Set up the text of the watermark.
|
||||
watermark.TextPath.Text = watermarkText;
|
||||
watermark.TextPath.FontFamily = "Arial";
|
||||
watermark.Width = 500;
|
||||
watermark.Height = 100;
|
||||
// Text will be directed from the bottom-left to the top-right corner.
|
||||
watermark.Rotation = -40;
|
||||
// Remove the following two lines if you need a solid black text.
|
||||
watermark.Fill.Color = System.Drawing.Color.Gray; // Try LightGray to get more Word-style watermark
|
||||
watermark.StrokeColor = System.Drawing.Color.Gray; // Try LightGray to get more Word-style watermark
|
||||
// Place the watermark in the page center.
|
||||
watermark.RelativeHorizontalPosition = Aspose.Words.Drawing.RelativeHorizontalPosition.Page;
|
||||
watermark.RelativeVerticalPosition = Aspose.Words.Drawing.RelativeVerticalPosition.Page;
|
||||
watermark.WrapType = Aspose.Words.Drawing.WrapType.None;
|
||||
watermark.VerticalAlignment = Aspose.Words.Drawing.VerticalAlignment.Center;
|
||||
watermark.HorizontalAlignment = Aspose.Words.Drawing.HorizontalAlignment.Center;
|
||||
// Create a new paragraph and append the watermark to this paragraph.
|
||||
Aspose.Words.Paragraph watermarkPara = new Aspose.Words.Paragraph(doc);
|
||||
watermarkPara.AppendChild(watermark);
|
||||
// Insert the watermark into all headers of each document section.
|
||||
foreach (Aspose.Words.Section sect in doc.Sections)
|
||||
{
|
||||
// There could be up to three different headers in each section, since we want
|
||||
// the watermark to appear on all pages, insert into all headers.
|
||||
InsertWatermarkIntoHeader(watermarkPara, sect, Aspose.Words.HeaderFooterType.HeaderPrimary);
|
||||
InsertWatermarkIntoHeader(watermarkPara, sect, Aspose.Words.HeaderFooterType.HeaderFirst);
|
||||
InsertWatermarkIntoHeader(watermarkPara, sect, Aspose.Words.HeaderFooterType.HeaderEven);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Inserts a watermark into a document header.
|
||||
/// </summary>
|
||||
/// <param name="watermarkPara"></param>
|
||||
/// <param name="sect"></param>
|
||||
/// <param name="headerType"></param>
|
||||
public static void InsertWatermarkIntoHeader(Aspose.Words.Paragraph watermarkPara, Aspose.Words.Section sect, Aspose.Words.HeaderFooterType headerType)
|
||||
{
|
||||
Aspose.Words.HeaderFooter header = sect.HeadersFooters[headerType];
|
||||
if (null == header)
|
||||
{
|
||||
// There is no header of the specified type in the current section, create it.
|
||||
header = new Aspose.Words.HeaderFooter(sect.Document, headerType);
|
||||
sect.HeadersFooters.Add(header);
|
||||
}
|
||||
// Insert a clone of the watermark into the header.
|
||||
header.AppendChild(watermarkPara.Clone(true));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml;
|
||||
using DocTools.Dtos;
|
||||
|
||||
namespace DocTools.DBDoc
|
||||
{
|
||||
public class XmlDoc : Doc
|
||||
{
|
||||
public XmlDoc(DBDto dto, string filter = "xml files (.xml)|*.xml") : base(dto, filter)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Build(string filePath)
|
||||
{
|
||||
string xmlContent = this.Dto.Tables.SerializeXml();
|
||||
XmlDocument xmlDoc = new XmlDocument();
|
||||
xmlDoc.LoadXml(xmlContent);
|
||||
|
||||
var root = xmlDoc.DocumentElement;
|
||||
root.SetAttribute("databaseName", this.Dto.DBName);
|
||||
root.SetAttribute("tableNum", this.Dto.Tables.Count + "");
|
||||
xmlDoc.Save(filePath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using DocTools.DBDoc;
|
||||
using DocTools.Dtos;
|
||||
|
||||
namespace DocTools
|
||||
{
|
||||
public class DocFactory
|
||||
{
|
||||
public static Doc CreateInstance(DocType type, DBDto dto)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case DocType.chm:
|
||||
return new ChmDoc(dto);
|
||||
case DocType.html:
|
||||
return new HtmlDoc(dto);
|
||||
case DocType.word:
|
||||
return new WordDoc(dto);
|
||||
case DocType.excel:
|
||||
return new ExcelDoc(dto);
|
||||
case DocType.pdf:
|
||||
return new PdfDoc(dto);
|
||||
case DocType.markdown:
|
||||
return new MarkDownDoc(dto);
|
||||
case DocType.xml:
|
||||
return new XmlDoc(dto);
|
||||
default:
|
||||
return new ChmDoc(dto);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,171 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{130A8861-0C39-4933-9DE8-AA9525488211}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>DocTools</RootNamespace>
|
||||
<AssemblyName>DocTools</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>true</Deterministic>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Aspose.Words, Version=18.7.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>lib\Aspose.Words.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="BouncyCastle.Crypto, Version=1.8.6.0, Culture=neutral, PublicKeyToken=0e99375e54769942">
|
||||
<HintPath>..\packages\BouncyCastle.1.8.6.1\lib\BouncyCastle.Crypto.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EPPlus, Version=4.0.5.0, Culture=neutral, PublicKeyToken=ea159fdaa78159a1, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>lib\EPPlus.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Esprima, Version=2.1.3.0, Culture=neutral, PublicKeyToken=2e92ba9c8d81157f, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Esprima.2.1.3\lib\net461\Esprima.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="itextsharp, Version=5.5.13.2, Culture=neutral, PublicKeyToken=8354ae6d2174ddca, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\iTextSharp.5.5.13.2\lib\itextsharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Jint, Version=3.0.0.0, Culture=neutral, PublicKeyToken=2e92ba9c8d81157f, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Jint.3.0.0-beta-2038\lib\net461\Jint.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.IO.RecyclableMemoryStream, Version=1.4.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.IO.RecyclableMemoryStream.1.4.1\lib\net46\Microsoft.IO.RecyclableMemoryStream.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="RazorEngine, Version=3.10.0.0, Culture=neutral, PublicKeyToken=9ee697374c7e744a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\RazorEngine.3.10.0\lib\net45\RazorEngine.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ComponentModel.Annotations, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ComponentModel.Annotations.4.7.0\lib\net461\System.ComponentModel.Annotations.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Security" />
|
||||
<Reference Include="System.Threading.Tasks" />
|
||||
<Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.Razor.3.0.0\lib\net45\System.Web.Razor.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="ZetaLongPaths, Version=1.0.0.38, Culture=neutral, PublicKeyToken=b764f59068f31f38, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ZetaLongPaths.1.0.0.38\lib\net452-full\ZetaLongPaths.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AppConst.cs" />
|
||||
<Compile Include="ConfigUtils.cs" />
|
||||
<Compile Include="DBCHMConfig.cs" />
|
||||
<Compile Include="DBDoc\ExcelDoc.cs" />
|
||||
<Compile Include="DBDoc\WordDoc.cs" />
|
||||
<Compile Include="DBDoc\XmlDoc.cs" />
|
||||
<Compile Include="DBDoc\MarkDownDoc.cs" />
|
||||
<Compile Include="DBDoc\HtmlDoc.cs" />
|
||||
<Compile Include="DBDoc\PdfDoc.cs" />
|
||||
<Compile Include="DBDoc\ChmDoc.cs" />
|
||||
<Compile Include="DBDoc\Doc.cs" />
|
||||
<Compile Include="DocFactory.cs" />
|
||||
<Compile Include="Dtos\ChmHHP.cs" />
|
||||
<Compile Include="Dtos\ColumnDto.cs" />
|
||||
<Compile Include="Dtos\DBDto.cs" />
|
||||
<Compile Include="Dtos\SqlCode.cs" />
|
||||
<Compile Include="Dtos\TableDto.cs" />
|
||||
<Compile Include="Enums.cs" />
|
||||
<Compile Include="Extensions.cs" />
|
||||
<Compile Include="JS.cs" />
|
||||
<Compile Include="LogUtils.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="RazorTpl.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
<None Include="TplFile\chm\hhc.cshtml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="TplFile\chm\hhk.cshtml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="TplFile\chm\hhp.cshtml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="TplFile\chm\list.cshtml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
<None Include="TplFile\chm\sqlcode.cshtml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="TplFile\chm\table.cshtml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="TplFile\pdf\msyh.ttf">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\MJTop.Data\MJTop.Data.csproj">
|
||||
<Project>{3d36cdc9-e989-465b-a9f1-ad85dc42f242}</Project>
|
||||
<Name>MJTop.Data</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="TplFile\html\html.cshtml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<EmbeddedResource Include="TplFile\chm\embed\highlight.js" />
|
||||
<Content Include="lib\Aspose.Words.dll" />
|
||||
<Content Include="lib\EPPlus.dll" />
|
||||
<Content Include="TplFile\chm\js\jQuery.js">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<EmbeddedResource Include="TplFile\chm\embed\sql-formatter.js" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DocTools.Dtos
|
||||
{
|
||||
public class ChmHHP
|
||||
{
|
||||
public ChmHHP() { }
|
||||
|
||||
public ChmHHP(string chmFile, string workTmpDir)
|
||||
{
|
||||
this.ChmFile = chmFile;
|
||||
this.WorkTmpDir = workTmpDir;
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(this.WorkTmpDir))
|
||||
{
|
||||
this.Files = Directory.GetFiles(this.WorkTmpDir, "*.html", SearchOption.AllDirectories).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
public string ChmFile { get; set; }
|
||||
|
||||
public string WorkTmpDir { get; set; }
|
||||
|
||||
public string DefaultFile { get; set; } = "数据库目录.html";
|
||||
|
||||
public string Title
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(this.ChmFile))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
return Path.GetFileName(this.ChmFile);
|
||||
}
|
||||
}
|
||||
|
||||
public List<string> Files { get; private set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace DocTools.Dtos
|
||||
{
|
||||
/// <summary>
|
||||
/// 数据库表字段dto
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class ColumnDto
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 序号
|
||||
/// </summary>
|
||||
[Display(Name = "序号")]
|
||||
public string ColumnOrder { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 列名
|
||||
/// </summary>
|
||||
[Display(Name = "列名")]
|
||||
public string ColumnName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数据类型
|
||||
/// </summary>
|
||||
[Display(Name = "数据类型")]
|
||||
public string ColumnTypeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 长度
|
||||
/// </summary>
|
||||
[Display(Name = "长度")]
|
||||
public string Length { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 小数位
|
||||
/// </summary>
|
||||
[Display(Name = "小数位数")]
|
||||
public string Scale { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 主键
|
||||
/// </summary>
|
||||
[Display(Name = "主键")]
|
||||
public string IsPK { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 自增
|
||||
/// </summary>
|
||||
[Display(Name = "自增")]
|
||||
public string IsIdentity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 允许空
|
||||
/// </summary>
|
||||
[Display(Name = "允许空")]
|
||||
public string CanNull { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 默认值
|
||||
/// </summary>
|
||||
[Display(Name = "默认值")]
|
||||
public string DefaultVal { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 注释
|
||||
/// </summary>
|
||||
[Display(Name = "列说明")]
|
||||
public string Comment { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace DocTools.Dtos
|
||||
{
|
||||
/// <summary>
|
||||
/// 数据库Dto
|
||||
/// </summary>
|
||||
public class DBDto
|
||||
{
|
||||
public DBDto() { }
|
||||
|
||||
public DBDto(string dbName, object tag = null)
|
||||
{
|
||||
this.DBName = dbName;
|
||||
this.Tag = tag;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 数据库名称
|
||||
/// </summary>
|
||||
public string DBName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数据库类型
|
||||
/// </summary>
|
||||
public string DBType { get; set; }
|
||||
|
||||
|
||||
private List<TableDto> _Tables = null;
|
||||
/// <summary>
|
||||
/// 表结构信息
|
||||
/// </summary>
|
||||
public List<TableDto> Tables
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_Tables == null)
|
||||
{
|
||||
return new List<TableDto>();
|
||||
}
|
||||
else
|
||||
{
|
||||
_Tables.ForEach(t =>
|
||||
{
|
||||
t.Comment = FilterIllegalDir(t.Comment);
|
||||
});
|
||||
return _Tables;
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
_Tables = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 数据库视图
|
||||
/// </summary>
|
||||
public Dictionary<string,string> Views { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数据库存储过程
|
||||
/// </summary>
|
||||
public Dictionary<string, string> Procs { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 其他一些参数数据,用法如 winform 控件的 Tag属性
|
||||
/// </summary>
|
||||
public object Tag { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 处理非法字符路径
|
||||
/// </summary>
|
||||
/// <param name="str"></param>
|
||||
/// <returns></returns>
|
||||
private string FilterIllegalDir(string str)
|
||||
{
|
||||
if (str.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0)
|
||||
{
|
||||
str = string.Join(" ", str.Split(Path.GetInvalidFileNameChars()));
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DocTools.Dtos
|
||||
{
|
||||
public class SqlCode
|
||||
{
|
||||
public string DBType { get; set; }
|
||||
|
||||
public string CodeName { get; set; }
|
||||
|
||||
public string Content { get; set; }
|
||||
|
||||
public string StyleContent
|
||||
{
|
||||
get
|
||||
{
|
||||
return JS.RunStyleSql(Content?.Trim(), DBType);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace DocTools.Dtos
|
||||
{
|
||||
/// <summary>
|
||||
/// 数据库表dto
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class TableDto
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 序号
|
||||
/// </summary>
|
||||
[Display(Name = "序号")]
|
||||
public string TableOrder { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 表名
|
||||
/// </summary>
|
||||
[Display(Name = "表名")]
|
||||
public string TableName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 注释
|
||||
/// </summary>
|
||||
[Display(Name = "表说明")]
|
||||
public string Comment { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数据库类型
|
||||
/// </summary>
|
||||
[Display(Name = "数据库类型")]
|
||||
public string DBType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 表格列集合
|
||||
/// </summary>
|
||||
[Display(Name = "列数据")]
|
||||
public List<ColumnDto> Columns { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DocTools
|
||||
{
|
||||
public enum DocType
|
||||
{
|
||||
chm,
|
||||
html,
|
||||
word,
|
||||
excel,
|
||||
pdf,
|
||||
markdown,
|
||||
xml
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,238 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Serialization;
|
||||
using ZetaLongPaths;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Collections.Specialized;
|
||||
|
||||
namespace DocTools
|
||||
{
|
||||
public static class Extensions
|
||||
{
|
||||
public static void WriteAllText(StringBuilder builder, string filePath, string enc = "gbk")
|
||||
{
|
||||
ZlpIOHelper.WriteAllText(filePath, builder.ToString(), Encoding.GetEncoding(enc));
|
||||
}
|
||||
|
||||
public static void WriteAllText(StringBuilder builder, string filePath, Encoding encoding)
|
||||
{
|
||||
ZlpIOHelper.WriteAllText(filePath, builder.ToString(), encoding);
|
||||
}
|
||||
|
||||
public static string GetResourceContent(this Assembly assembly, string name)
|
||||
{
|
||||
var buffer = assembly.GetResourceBuffer(name);
|
||||
return System.Text.Encoding.UTF8.GetString(buffer);
|
||||
}
|
||||
|
||||
public static byte[] GetResourceBuffer(this Assembly assembly, string name)
|
||||
{
|
||||
var stream = assembly.GetManifestResourceStream(name);
|
||||
var buffer = new byte[stream.Length];
|
||||
stream.Read(buffer, 0, buffer.Length);
|
||||
stream.Dispose();
|
||||
return buffer;
|
||||
}
|
||||
|
||||
public static EM GetEnum<EM>(this string enumName)
|
||||
where EM : struct, Enum
|
||||
{
|
||||
if (!Enum.TryParse<EM>(enumName, out EM em))
|
||||
{
|
||||
throw new ArgumentException("枚举转换失败!", nameof(enumName));
|
||||
}
|
||||
return em;
|
||||
}
|
||||
|
||||
public static Dictionary<string, string> ToDictionary(this NameValueCollection nvc)
|
||||
{
|
||||
var dict = new Dictionary<string, string>();
|
||||
foreach (var key in nvc.AllKeys)
|
||||
{
|
||||
dict.Add(key, nvc[key]);
|
||||
}
|
||||
return dict;
|
||||
}
|
||||
|
||||
#region MarkDown
|
||||
|
||||
public static string MarkDown<T>(this IEnumerable<T> objs, params string[] excludePropNames)
|
||||
{
|
||||
if (objs == null)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
var minus = 0;
|
||||
var type = typeof(T);
|
||||
var props = type.GetProperties();
|
||||
var lstTmp = new List<string>();
|
||||
|
||||
sb.Append(" | ");
|
||||
foreach (var prop in props)
|
||||
{
|
||||
if (excludePropNames != null && excludePropNames.Contains(prop.Name, StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
minus++;
|
||||
continue;
|
||||
}
|
||||
var headName = ((prop.GetCustomAttributes(typeof(DisplayAttribute), false)?.FirstOrDefault() as DisplayAttribute)?.Name) ?? prop.Name;
|
||||
lstTmp.Add(headName);
|
||||
}
|
||||
sb.Append(string.Join(" | ", lstTmp));
|
||||
sb.Append(" | ");
|
||||
sb.AppendLine();
|
||||
|
||||
lstTmp = new List<string>();
|
||||
sb.Append(" | ");
|
||||
for (int j = 0; j < props.Length - minus; j++)
|
||||
{
|
||||
lstTmp.Add(":---:");
|
||||
}
|
||||
sb.Append(string.Join(" | ", lstTmp));
|
||||
sb.Append(" | ");
|
||||
|
||||
foreach (var obj in objs)
|
||||
{
|
||||
if (obj == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
sb.AppendLine();
|
||||
sb.Append(" | ");
|
||||
lstTmp = new List<string>();
|
||||
foreach (var prop in props)
|
||||
{
|
||||
if (excludePropNames != null && excludePropNames.Contains(prop.Name, StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
var value = (prop.GetValue(obj, null) ?? string.Empty).ToString();
|
||||
lstTmp.Add(value);
|
||||
}
|
||||
sb.Append(string.Join(" | ", lstTmp));
|
||||
sb.Append(" | ");
|
||||
}
|
||||
var md = sb.ToString();
|
||||
return md;
|
||||
}
|
||||
|
||||
public static string MarkDown(this DataTable data, params string[] excludeColNames)
|
||||
{
|
||||
if (data == null)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
var minus = 0;
|
||||
var lstTmp = new List<string>();
|
||||
|
||||
sb.Append(" | ");
|
||||
foreach (DataColumn dc in data.Columns)
|
||||
{
|
||||
if (excludeColNames != null && excludeColNames.Contains(dc.ColumnName, StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
minus++;
|
||||
continue;
|
||||
}
|
||||
lstTmp.Add(dc.ColumnName);
|
||||
}
|
||||
sb.Append(string.Join(" | ", lstTmp));
|
||||
sb.Append(" | ");
|
||||
sb.AppendLine();
|
||||
|
||||
lstTmp = new List<string>();
|
||||
sb.Append(" | ");
|
||||
for (int j = 0; j < data.Columns.Count - minus; j++)
|
||||
{
|
||||
lstTmp.Add(":---:");
|
||||
}
|
||||
sb.Append(string.Join(" | ", lstTmp));
|
||||
sb.Append(" | ");
|
||||
|
||||
foreach (DataRow dr in data.Rows)
|
||||
{
|
||||
sb.AppendLine();
|
||||
sb.Append(" | ");
|
||||
lstTmp = new List<string>();
|
||||
foreach (DataColumn dc in data.Columns)
|
||||
{
|
||||
if (excludeColNames != null && excludeColNames.Contains(dc.ColumnName, StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
var value = (dr[dc] ?? string.Empty).ToString();
|
||||
lstTmp.Add(value);
|
||||
}
|
||||
sb.Append(string.Join(" | ", lstTmp));
|
||||
sb.Append(" | ");
|
||||
}
|
||||
var md = sb.ToString();
|
||||
return md;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Xml序列化/反序列化
|
||||
|
||||
/// <summary>
|
||||
/// 反序列化
|
||||
/// </summary>
|
||||
/// <param name="type">类型</param>
|
||||
/// <param name="xml">XML字符串</param>
|
||||
/// <returns></returns>
|
||||
public static object DeserializeXml(this Type type, string xml)
|
||||
{
|
||||
using (StringReader sr = new StringReader(xml))
|
||||
{
|
||||
XmlSerializer xmldes = new XmlSerializer(type);
|
||||
return xmldes.Deserialize(sr);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 反序列化
|
||||
/// </summary>
|
||||
/// <param name="type"></param>
|
||||
/// <param name="xml"></param>
|
||||
/// <returns></returns>
|
||||
public static object DeserializeXml(this Type type, Stream stream)
|
||||
{
|
||||
XmlSerializer xmldes = new XmlSerializer(type);
|
||||
return xmldes.Deserialize(stream);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 序列化
|
||||
/// </summary>
|
||||
/// <param name="type">类型</param>
|
||||
/// <param name="obj">对象</param>
|
||||
/// <returns></returns>
|
||||
public static string SerializeXml<T>(this T obj)
|
||||
where T : new()
|
||||
{
|
||||
MemoryStream Stream = new MemoryStream();
|
||||
XmlSerializer xml = new XmlSerializer(obj.GetType());
|
||||
//序列化对象
|
||||
xml.Serialize(Stream, obj);
|
||||
Stream.Position = 0;
|
||||
StreamReader sr = new StreamReader(Stream);
|
||||
string str = sr.ReadToEnd();
|
||||
|
||||
sr.Dispose();
|
||||
Stream.Dispose();
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,146 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DocTools
|
||||
{
|
||||
public class JS
|
||||
{
|
||||
private static Jint.Engine jt = null;
|
||||
static JS()
|
||||
{
|
||||
//jt = new Jint.Engine(cfg =>
|
||||
//{
|
||||
// //cfg.LimitRecursion();
|
||||
// cfg.Strict();
|
||||
//});
|
||||
jt = new Jint.Engine();
|
||||
jt.SetValue("log", new Action<object>(Console.WriteLine));
|
||||
|
||||
var text = string.Empty;
|
||||
var names = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames();
|
||||
foreach (var name in names)
|
||||
{
|
||||
if (Path.GetExtension(name) == ".js")
|
||||
{
|
||||
text = System.Reflection.Assembly.GetExecutingAssembly().GetResourceContent(name);
|
||||
try
|
||||
{
|
||||
jt.Execute(text);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// summary>
|
||||
/// https://zeroturnaround.github.io/sql-formatter/
|
||||
/// 格式化SQL语句
|
||||
/// </summary>
|
||||
/// <param name="sql">SQL语句</param>
|
||||
/// <param name="dbtype">数据库类型</param>
|
||||
/// <returns>格式化后的SQL语句</returns>
|
||||
public static string RunFmtSql(string sql, string dbtype)
|
||||
{
|
||||
var supportLang = new List<string>()
|
||||
{
|
||||
"sql",
|
||||
"redshift",
|
||||
"db2",
|
||||
"mariadb",
|
||||
"mysql",
|
||||
"n1ql",
|
||||
"plsql",
|
||||
"postgresql",
|
||||
"spark",
|
||||
"tsql"
|
||||
};
|
||||
|
||||
var lang = dbtype.ToLower();
|
||||
|
||||
if (!supportLang.Contains(lang))
|
||||
{
|
||||
if (lang.StartsWith("oracle"))
|
||||
{
|
||||
lang = "plsql";
|
||||
}
|
||||
else if (lang == "sqlserver")
|
||||
{
|
||||
lang = "tsql";
|
||||
}
|
||||
else
|
||||
{
|
||||
lang = "sql";
|
||||
}
|
||||
}
|
||||
|
||||
sql = sql.Replace("`", "");
|
||||
var code = $@"var fmtSql = sqlFormatter.format(`{ sql }`, {{language: ""{ lang }"",uppercase: true }});";
|
||||
var res = sql;
|
||||
try
|
||||
{
|
||||
jt.Execute(code);
|
||||
res = jt.GetValue("fmtSql").ToString();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// https://highlightjs.org/static/demo/
|
||||
/// 9.9版本
|
||||
/// 返回带有css样式的高亮SQL代码
|
||||
/// </summary>
|
||||
/// <param name="sql">格式化后的SQL代码</param>
|
||||
/// <param name="dbtype">数据库类型</param>
|
||||
/// <returns></returns>
|
||||
public static string RunHighlightHtml(string sql, string dbtype)
|
||||
{
|
||||
dbtype = dbtype.ToLower();
|
||||
var lang = "sql";
|
||||
|
||||
//if (dbtype.StartsWith("oracle"))
|
||||
//{
|
||||
// lang = "ruleslanguage";
|
||||
//}
|
||||
//else if (dbtype == "postgresql")
|
||||
//{
|
||||
// lang = "pgsql";
|
||||
//}
|
||||
|
||||
sql = sql.Replace("`", "");
|
||||
var code = $@"var hlhtml = hljs.highlight(""{ lang }"",`{ sql }`,true).value;";
|
||||
var res = sql;
|
||||
try
|
||||
{
|
||||
jt.Execute(code);
|
||||
res = jt.GetValue("hlhtml").ToString();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
public static string RunStyleSql(string sql, string dbtype)
|
||||
{
|
||||
var fmtSql = RunFmtSql(sql, dbtype);
|
||||
|
||||
var reSql = RunHighlightHtml(fmtSql, dbtype);
|
||||
|
||||
return reSql;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,266 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Linq;
|
||||
using System.Collections;
|
||||
using System.Reflection;
|
||||
using System.Collections.Specialized;
|
||||
using ZetaLongPaths;
|
||||
|
||||
/// <summary>
|
||||
/// 日志操作类
|
||||
/// </summary>
|
||||
public class LogUtils
|
||||
{
|
||||
|
||||
private static object locker = new object();
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 写入日志
|
||||
/// </summary>
|
||||
/// <param name="logName">日志名称</param>
|
||||
/// <param name="developer">开发记录者</param>
|
||||
/// <param name="level">日志级别</param>
|
||||
/// <param name="details">日志详情</param>
|
||||
/// <param name="createtime">记录时间</param>
|
||||
public static void Write(string logName, Developer developer, LogLevel level, List<object> details, DateTime createtime)
|
||||
{
|
||||
Log log = new Log();
|
||||
log.LogName = logName;
|
||||
log.Level = level;
|
||||
log.Developer = developer;
|
||||
log.Added = createtime;
|
||||
log.Details = details;
|
||||
|
||||
string logText = log.ToString() + "\r\n----------------------------------------------------------------------------------------------------\r\n";
|
||||
string fileName = DateTime.Now.ToString("yyyyMMdd") + ".log";
|
||||
string dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log");
|
||||
if (!ZetaLongPaths.ZlpIOHelper.DirectoryExists(dir))
|
||||
{
|
||||
ZetaLongPaths.ZlpIOHelper.CreateDirectory(dir);
|
||||
}
|
||||
fileName = Path.Combine(dir, fileName);
|
||||
ZlpIOHelper.AppendText(fileName, logText, Encoding.GetEncoding("GBK"));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写入Info 日志
|
||||
/// </summary>
|
||||
/// <param name="logName">日志名称</param>
|
||||
/// <param name="developer">开发记录者</param>
|
||||
/// <param name="Info_objs">日志内容</param>
|
||||
public static void LogInfo(string logName, Developer developer, params object[] Info_objs)
|
||||
{
|
||||
lock (locker)
|
||||
{
|
||||
Write(logName, developer, LogLevel.Info, Info_objs?.ToList(), DateTime.Now);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>s
|
||||
/// 写入带 堆栈执行 的Info 日志
|
||||
/// </summary>
|
||||
/// <param name="logName">日志名称</param>
|
||||
/// <param name="developer">开发记录者</param>
|
||||
/// <param name="Info_objs">日志内容</param>
|
||||
public static void LogWrite(string logName, Developer developer, params object[] Info_objs)
|
||||
{
|
||||
lock (locker)
|
||||
{
|
||||
List<object> lstDetails = new List<object>();
|
||||
System.Diagnostics.StackTrace stack = new System.Diagnostics.StackTrace(1, true);
|
||||
System.Diagnostics.StackFrame frame = stack.GetFrame(0);
|
||||
string execFile = frame.GetFileName();
|
||||
string fullName = frame.GetMethod().DeclaringType.FullName;
|
||||
string methodName = frame.GetMethod().Name;
|
||||
int execLine = frame.GetFileLineNumber();
|
||||
lstDetails.Add("文件路径:" + execFile + "\r\n");
|
||||
lstDetails.Add("类全命名:" + fullName + "\r\n");
|
||||
lstDetails.Add("执行方法:" + methodName + "\r\n");
|
||||
lstDetails.Add("当前行号:" + execLine + "\r\n");
|
||||
|
||||
if (Info_objs != null && Info_objs.Length > 0)
|
||||
{
|
||||
lstDetails.AddRange(Info_objs);
|
||||
}
|
||||
Write(logName, developer, LogLevel.Info, lstDetails, DateTime.Now);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写入Warn 日志
|
||||
/// </summary>
|
||||
/// <param name="logName">日志名称</param>
|
||||
/// <param name="developer">开发记录者</param>
|
||||
/// <param name="Info_objs">日志内容</param>
|
||||
public static void LogWarn(string logName, Developer developer, params object[] Info_objs)
|
||||
{
|
||||
lock (locker)
|
||||
{
|
||||
List<object> lstDetails = new List<object>();
|
||||
System.Diagnostics.StackTrace stack = new System.Diagnostics.StackTrace(1, true);
|
||||
System.Diagnostics.StackFrame frame = stack.GetFrame(0);
|
||||
string execFile = frame.GetFileName();
|
||||
string fullName = frame.GetMethod().DeclaringType.FullName;
|
||||
string methodName = frame.GetMethod().Name;
|
||||
int execLine = frame.GetFileLineNumber();
|
||||
lstDetails.Add("文件路径:" + execFile + "\r\n");
|
||||
lstDetails.Add("类全命名:" + fullName + "\r\n");
|
||||
lstDetails.Add("执行方法:" + methodName + "\r\n");
|
||||
lstDetails.Add("当前行号:" + execLine + "\r\n");
|
||||
|
||||
if (Info_objs != null && Info_objs.Length > 0)
|
||||
{
|
||||
lstDetails.AddRange(Info_objs);
|
||||
}
|
||||
Write(logName, developer, LogLevel.Warn, lstDetails, DateTime.Now);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写入 Errorr日志
|
||||
/// </summary>
|
||||
/// <param name="logName">日志名称</param>
|
||||
/// <param name="developer">开发记录者</param>
|
||||
/// <param name="ex">异常对象(可为null)</param>
|
||||
/// <param name="Info_objs">日志内容</param>
|
||||
public static void LogError(string logName, Developer developer, Exception ex, params object[] Info_objs)
|
||||
{
|
||||
lock (locker)
|
||||
{
|
||||
List<object> lstDetails = new List<object>();
|
||||
System.Diagnostics.StackTrace stack = new System.Diagnostics.StackTrace(1, true);
|
||||
System.Diagnostics.StackFrame frame = stack.GetFrame(0);
|
||||
string execFile = frame.GetFileName();
|
||||
string fullName = frame.GetMethod().DeclaringType.FullName;
|
||||
string methodName = frame.GetMethod().Name;
|
||||
int execLine = frame.GetFileLineNumber();
|
||||
lstDetails.Add("文件路径:" + execFile + "\r\n");
|
||||
lstDetails.Add("类全命名:" + fullName + "\r\n");
|
||||
lstDetails.Add("执行方法:" + methodName + "\r\n");
|
||||
lstDetails.Add("当前行号:" + execLine + "\r\n");
|
||||
lstDetails.Add(ex);
|
||||
if (ex.InnerException != null)
|
||||
{
|
||||
lstDetails.Add(ex.InnerException);
|
||||
}
|
||||
if (Info_objs != null && Info_objs.Length > 0)
|
||||
{
|
||||
lstDetails.AddRange(Info_objs);
|
||||
}
|
||||
Write(logName, developer, LogLevel.Error, lstDetails, DateTime.Now);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 程序日志
|
||||
/// </summary>
|
||||
public class Log
|
||||
{
|
||||
public Guid Id { get { return Guid.NewGuid(); } }
|
||||
|
||||
/// <summary>
|
||||
/// 日志名称
|
||||
/// </summary>
|
||||
public string LogName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 日志级别
|
||||
/// </summary>
|
||||
public LogLevel Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前记录日志者
|
||||
/// </summary>
|
||||
public Developer Developer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 日志详细内容
|
||||
/// </summary>
|
||||
public List<object> Details { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 日志时间
|
||||
/// </summary>
|
||||
public DateTime Added { get; set; }
|
||||
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return Newtonsoft.Json.JsonConvert.SerializeObject(this ?? default(Log));
|
||||
}
|
||||
|
||||
|
||||
#region 枚举 处理
|
||||
/// <summary>
|
||||
/// 根据枚举对象得到 枚举键值对
|
||||
/// </summary>
|
||||
/// <typeparam name="T">枚举</typeparam>
|
||||
/// <returns></returns>
|
||||
public static Dictionary<string, string> GetAllEnums<T>()
|
||||
{
|
||||
Dictionary<string, string> dict = null;
|
||||
Type type = typeof(T);
|
||||
string[] enums = Enum.GetNames(type);
|
||||
if (enums != null && enums.Length > 0)
|
||||
{
|
||||
dict = new Dictionary<string, string>();
|
||||
foreach (string item in enums)
|
||||
{
|
||||
string str = Enum.Parse(typeof(T), item).ToString();
|
||||
T deve = (T)Enum.Parse(typeof(T), item);
|
||||
string uid = Convert.ToInt32(deve).ToString();
|
||||
dict.Add(str, uid);
|
||||
}
|
||||
}
|
||||
return dict;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 根据枚举val获取枚举name
|
||||
/// </summary>
|
||||
/// <typeparam name="T">枚举类型</typeparam>
|
||||
/// <param name="enumVal">枚举val</param>
|
||||
/// <returns>枚举name</returns>
|
||||
public static T GetEnumName<T>(int enumVal)
|
||||
{
|
||||
T t = (T)Enum.Parse(typeof(T), enumVal.ToString());
|
||||
return t;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 日志级别
|
||||
/// </summary>
|
||||
public enum LogLevel
|
||||
{
|
||||
Info = 0,
|
||||
Warn = 1,
|
||||
Error = 2
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 日志记录开发者
|
||||
/// </summary>
|
||||
public enum Developer
|
||||
{
|
||||
/// <summary>
|
||||
/// 系统默认
|
||||
/// </summary>
|
||||
SysDefault = 0,
|
||||
|
||||
/// <summary>
|
||||
/// 其他用户
|
||||
/// </summary>
|
||||
|
||||
MJ = 1,
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 有关程序集的一般信息由以下
|
||||
// 控制。更改这些特性值可修改
|
||||
// 与程序集关联的信息。
|
||||
[assembly: AssemblyTitle("DocTools")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("DocTools")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2021")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// 将 ComVisible 设置为 false 会使此程序集中的类型
|
||||
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
|
||||
//请将此类型的 ComVisible 特性设置为 true。
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||
[assembly: Guid("130a8861-0c39-4933-9de8-aa9525488211")]
|
||||
|
||||
// 程序集的版本信息由下列四个值组成:
|
||||
//
|
||||
// 主版本
|
||||
// 次版本
|
||||
// 生成号
|
||||
// 修订号
|
||||
//
|
||||
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
|
||||
//通过使用 "*",如下所示:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using RazorEngine;
|
||||
using RazorEngine.Configuration;
|
||||
using RazorEngine.Templating;
|
||||
using RazorEngine.Text;
|
||||
|
||||
namespace DocTools
|
||||
{
|
||||
public static class RazorTpl
|
||||
{
|
||||
static RazorTpl()
|
||||
{
|
||||
var config = new TemplateServiceConfiguration();
|
||||
config.Language = Language.CSharp;
|
||||
config.EncodedStringFactory = new RawStringFactory();
|
||||
config.DisableTempFileLocking = true;
|
||||
//config.EncodedStringFactory = new HtmlEncodedStringFactory();
|
||||
var service = RazorEngineService.Create(config);
|
||||
Engine.Razor = service;
|
||||
}
|
||||
|
||||
public static string RazorRender(this FileInfo tpl_file, object model, string encoding = "utf-8")
|
||||
{
|
||||
try
|
||||
{
|
||||
var tpl_text = File.ReadAllText(tpl_file.FullName, System.Text.Encoding.GetEncoding(encoding));
|
||||
|
||||
return Engine.Razor.RunCompile(tpl_text, Md5(tpl_text), null, model);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
public static string RazorRender(this string tpl_text, object model)
|
||||
{
|
||||
try
|
||||
{
|
||||
return Engine.Razor.RunCompile(tpl_text, Md5(tpl_text), null, model);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 字符串的Md5值
|
||||
/// </summary>
|
||||
private static string Md5(string value)
|
||||
{
|
||||
if (value == null)
|
||||
return null;
|
||||
MD5 md5Hash = MD5.Create();
|
||||
byte[] data = md5Hash.ComputeHash(System.Text.Encoding.UTF8.GetBytes(value));
|
||||
StringBuilder sBuilder = new StringBuilder();
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
sBuilder.Append(data[i].ToString("x2"));
|
||||
}
|
||||
return sBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,964 @@
|
|||
|
||||
var hljs = {};
|
||||
// Convenience variables for build-in objects
|
||||
var ArrayProto = [],
|
||||
objectKeys = Object.keys;
|
||||
|
||||
// Global internal variables used within the highlight.js library.
|
||||
var languages = {},
|
||||
aliases = {};
|
||||
|
||||
// Regular expressions used throughout the highlight.js library.
|
||||
var noHighlightRe = /^(no-?highlight|plain|text)$/i,
|
||||
languagePrefixRe = /\blang(?:uage)?-([\w-]+)\b/i,
|
||||
fixMarkupRe = /((^(<[^>]+>|\t|)+|(?:\n)))/gm;
|
||||
|
||||
var spanEndTag = '</span>';
|
||||
|
||||
// Global options used when within external APIs. This is modified when
|
||||
// calling the `hljs.configure` function.
|
||||
var options = {
|
||||
classPrefix: 'hljs-',
|
||||
tabReplace: null,
|
||||
useBR: false,
|
||||
languages: undefined
|
||||
};
|
||||
|
||||
// Object map that is used to escape some common HTML characters.
|
||||
var escapeRegexMap = {
|
||||
'&': '&',
|
||||
'<': '<',
|
||||
'>': '>'
|
||||
};
|
||||
|
||||
/* Utility functions */
|
||||
|
||||
function escape(value) {
|
||||
return value.replace(/[&<>]/gm, function (character) {
|
||||
return escapeRegexMap[character];
|
||||
});
|
||||
}
|
||||
|
||||
function tag(node) {
|
||||
return node.nodeName.toLowerCase();
|
||||
}
|
||||
|
||||
function testRe(re, lexeme) {
|
||||
var match = re && re.exec(lexeme);
|
||||
return match && match.index === 0;
|
||||
}
|
||||
|
||||
function isNotHighlighted(language) {
|
||||
return noHighlightRe.test(language);
|
||||
}
|
||||
|
||||
function blockLanguage(block) {
|
||||
var i, match, length, _class;
|
||||
var classes = block.className + ' ';
|
||||
|
||||
classes += block.parentNode ? block.parentNode.className : '';
|
||||
|
||||
// language-* takes precedence over non-prefixed class names.
|
||||
match = languagePrefixRe.exec(classes);
|
||||
if (match) {
|
||||
return getLanguage(match[1]) ? match[1] : 'no-highlight';
|
||||
}
|
||||
|
||||
classes = classes.split(/\s+/);
|
||||
|
||||
for (i = 0, length = classes.length; i < length; i++) {
|
||||
_class = classes[i]
|
||||
|
||||
if (isNotHighlighted(_class) || getLanguage(_class)) {
|
||||
return _class;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function inherit(parent, obj) {
|
||||
var key;
|
||||
var result = {};
|
||||
|
||||
for (key in parent)
|
||||
result[key] = parent[key];
|
||||
if (obj)
|
||||
for (key in obj)
|
||||
result[key] = obj[key];
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Stream merging */
|
||||
|
||||
function nodeStream(node) {
|
||||
var result = [];
|
||||
(function _nodeStream(node, offset) {
|
||||
for (var child = node.firstChild; child; child = child.nextSibling) {
|
||||
if (child.nodeType === 3)
|
||||
offset += child.nodeValue.length;
|
||||
else if (child.nodeType === 1) {
|
||||
result.push({
|
||||
event: 'start',
|
||||
offset: offset,
|
||||
node: child
|
||||
});
|
||||
offset = _nodeStream(child, offset);
|
||||
// Prevent void elements from having an end tag that would actually
|
||||
// double them in the output. There are more void elements in HTML
|
||||
// but we list only those realistically expected in code display.
|
||||
if (!tag(child).match(/br|hr|img|input/)) {
|
||||
result.push({
|
||||
event: 'stop',
|
||||
offset: offset,
|
||||
node: child
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
return offset;
|
||||
})(node, 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
function mergeStreams(original, highlighted, value) {
|
||||
var processed = 0;
|
||||
var result = '';
|
||||
var nodeStack = [];
|
||||
|
||||
function selectStream() {
|
||||
if (!original.length || !highlighted.length) {
|
||||
return original.length ? original : highlighted;
|
||||
}
|
||||
if (original[0].offset !== highlighted[0].offset) {
|
||||
return (original[0].offset < highlighted[0].offset) ? original : highlighted;
|
||||
}
|
||||
|
||||
/*
|
||||
To avoid starting the stream just before it should stop the order is
|
||||
ensured that original always starts first and closes last:
|
||||
|
||||
if (event1 == 'start' && event2 == 'start')
|
||||
return original;
|
||||
if (event1 == 'start' && event2 == 'stop')
|
||||
return highlighted;
|
||||
if (event1 == 'stop' && event2 == 'start')
|
||||
return original;
|
||||
if (event1 == 'stop' && event2 == 'stop')
|
||||
return highlighted;
|
||||
|
||||
... which is collapsed to:
|
||||
*/
|
||||
return highlighted[0].event === 'start' ? original : highlighted;
|
||||
}
|
||||
|
||||
function open(node) {
|
||||
function attr_str(a) { return ' ' + a.nodeName + '="' + escape(a.value) + '"'; }
|
||||
result += '<' + tag(node) + ArrayProto.map.call(node.attributes, attr_str).join('') + '>';
|
||||
}
|
||||
|
||||
function close(node) {
|
||||
result += '</' + tag(node) + '>';
|
||||
}
|
||||
|
||||
function render(event) {
|
||||
(event.event === 'start' ? open : close)(event.node);
|
||||
}
|
||||
|
||||
while (original.length || highlighted.length) {
|
||||
var stream = selectStream();
|
||||
result += escape(value.substring(processed, stream[0].offset));
|
||||
processed = stream[0].offset;
|
||||
if (stream === original) {
|
||||
/*
|
||||
On any opening or closing tag of the original markup we first close
|
||||
the entire highlighted node stack, then render the original tag along
|
||||
with all the following original tags at the same offset and then
|
||||
reopen all the tags on the highlighted stack.
|
||||
*/
|
||||
nodeStack.reverse().forEach(close);
|
||||
do {
|
||||
render(stream.splice(0, 1)[0]);
|
||||
stream = selectStream();
|
||||
} while (stream === original && stream.length && stream[0].offset === processed);
|
||||
nodeStack.reverse().forEach(open);
|
||||
} else {
|
||||
if (stream[0].event === 'start') {
|
||||
nodeStack.push(stream[0].node);
|
||||
} else {
|
||||
nodeStack.pop();
|
||||
}
|
||||
render(stream.splice(0, 1)[0]);
|
||||
}
|
||||
}
|
||||
return result + escape(value.substr(processed));
|
||||
}
|
||||
|
||||
/* Initialization */
|
||||
|
||||
|
||||
function compileLanguage(language) {
|
||||
|
||||
function reStr(re) {
|
||||
return (re && re.source) || re;
|
||||
}
|
||||
|
||||
function langRe(value, global) {
|
||||
return new RegExp(
|
||||
reStr(value),
|
||||
'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '')
|
||||
);
|
||||
}
|
||||
|
||||
let cnt = 0;
|
||||
function compileMode(mode, parent) {
|
||||
cnt++;
|
||||
if (cnt > 5) {
|
||||
return;
|
||||
}
|
||||
if (mode.compiled)
|
||||
return;
|
||||
mode.compiled = true;
|
||||
|
||||
mode.keywords = mode.keywords || mode.beginKeywords;
|
||||
if (mode.keywords) {
|
||||
var compiled_keywords = {};
|
||||
|
||||
var flatten = function (className, str) {
|
||||
if (language.case_insensitive) {
|
||||
str = str.toLowerCase();
|
||||
}
|
||||
str.split(' ').forEach(function (kw) {
|
||||
var pair = kw.split('|');
|
||||
compiled_keywords[pair[0]] = [className, pair[1] ? Number(pair[1]) : 1];
|
||||
});
|
||||
};
|
||||
|
||||
if (typeof mode.keywords === 'string') { // string
|
||||
flatten('keyword', mode.keywords);
|
||||
} else {
|
||||
objectKeys(mode.keywords).forEach(function (className) {
|
||||
flatten(className, mode.keywords[className]);
|
||||
});
|
||||
}
|
||||
mode.keywords = compiled_keywords;
|
||||
}
|
||||
mode.lexemesRe = langRe(mode.lexemes || /\w+/, true);
|
||||
|
||||
if (parent) {
|
||||
if (mode.beginKeywords) {
|
||||
mode.begin = '\\b(' + mode.beginKeywords.split(' ').join('|') + ')\\b';
|
||||
}
|
||||
if (!mode.begin)
|
||||
mode.begin = /\B|\b/;
|
||||
mode.beginRe = langRe(mode.begin);
|
||||
if (!mode.end && !mode.endsWithParent)
|
||||
mode.end = /\B|\b/;
|
||||
if (mode.end)
|
||||
mode.endRe = langRe(mode.end);
|
||||
mode.terminator_end = reStr(mode.end) || '';
|
||||
if (mode.endsWithParent && parent.terminator_end)
|
||||
mode.terminator_end += (mode.end ? '|' : '') + parent.terminator_end;
|
||||
}
|
||||
if (mode.illegal)
|
||||
mode.illegalRe = langRe(mode.illegal);
|
||||
if (mode.relevance == null)
|
||||
mode.relevance = 1;
|
||||
if (!mode.contains) {
|
||||
mode.contains = [];
|
||||
}
|
||||
var expanded_contains = [];
|
||||
log("mode.contains.length:" + mode.contains.length);
|
||||
mode.contains.forEach(function (c) {
|
||||
if (c.variants) {
|
||||
c.variants.forEach(function (v) { expanded_contains.push(inherit(c, v)); });
|
||||
} else {
|
||||
expanded_contains.push(c === 'self' ? mode : c);
|
||||
}
|
||||
});
|
||||
mode.contains = expanded_contains;
|
||||
mode.contains.forEach(function (c) {
|
||||
compileMode(c, mode);
|
||||
});
|
||||
|
||||
if (mode.starts) {
|
||||
compileMode(mode.starts, parent);
|
||||
}
|
||||
|
||||
var terminators =
|
||||
mode.contains.map(function (c) {
|
||||
return c.beginKeywords ? '\\.?(' + c.begin + ')\\.?' : c.begin;
|
||||
})
|
||||
.concat([mode.terminator_end, mode.illegal])
|
||||
.map(reStr)
|
||||
.filter(Boolean);
|
||||
mode.terminators = terminators.length ? langRe(terminators.join('|'), true) : { exec: function (/*s*/) { return null; } };
|
||||
}
|
||||
|
||||
compileMode(language);
|
||||
}
|
||||
|
||||
/*
|
||||
Core highlighting function. Accepts a language name, or an alias, and a
|
||||
string with the code to highlight. Returns an object with the following
|
||||
properties:
|
||||
|
||||
- relevance (int)
|
||||
- value (an HTML string with highlighting markup)
|
||||
|
||||
*/
|
||||
function highlight(name, value, ignore_illegals, continuation) {
|
||||
|
||||
function subMode(lexeme, mode) {
|
||||
var i, length;
|
||||
|
||||
for (i = 0, length = mode.contains.length; i < length; i++) {
|
||||
if (testRe(mode.contains[i].beginRe, lexeme)) {
|
||||
return mode.contains[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function endOfMode(mode, lexeme) {
|
||||
if (testRe(mode.endRe, lexeme)) {
|
||||
while (mode.endsParent && mode.parent) {
|
||||
mode = mode.parent;
|
||||
}
|
||||
return mode;
|
||||
}
|
||||
if (mode.endsWithParent) {
|
||||
return endOfMode(mode.parent, lexeme);
|
||||
}
|
||||
}
|
||||
|
||||
function isIllegal(lexeme, mode) {
|
||||
return !ignore_illegals && testRe(mode.illegalRe, lexeme);
|
||||
}
|
||||
|
||||
function keywordMatch(mode, match) {
|
||||
var match_str = language.case_insensitive ? match[0].toLowerCase() : match[0];
|
||||
return mode.keywords.hasOwnProperty(match_str) && mode.keywords[match_str];
|
||||
}
|
||||
|
||||
function buildSpan(classname, insideSpan, leaveOpen, noPrefix) {
|
||||
var classPrefix = noPrefix ? '' : options.classPrefix,
|
||||
openSpan = '<span class="' + classPrefix,
|
||||
closeSpan = leaveOpen ? '' : spanEndTag
|
||||
|
||||
openSpan += classname + '">';
|
||||
|
||||
return openSpan + insideSpan + closeSpan;
|
||||
}
|
||||
|
||||
function processKeywords() {
|
||||
var keyword_match, last_index, match, result;
|
||||
|
||||
if (!top.keywords)
|
||||
return escape(mode_buffer);
|
||||
|
||||
result = '';
|
||||
last_index = 0;
|
||||
top.lexemesRe.lastIndex = 0;
|
||||
match = top.lexemesRe.exec(mode_buffer);
|
||||
|
||||
while (match) {
|
||||
result += escape(mode_buffer.substring(last_index, match.index));
|
||||
keyword_match = keywordMatch(top, match);
|
||||
if (keyword_match) {
|
||||
relevance += keyword_match[1];
|
||||
result += buildSpan(keyword_match[0], escape(match[0]));
|
||||
} else {
|
||||
result += escape(match[0]);
|
||||
}
|
||||
last_index = top.lexemesRe.lastIndex;
|
||||
match = top.lexemesRe.exec(mode_buffer);
|
||||
}
|
||||
return result + escape(mode_buffer.substr(last_index));
|
||||
}
|
||||
|
||||
function processSubLanguage() {
|
||||
var explicit = typeof top.subLanguage === 'string';
|
||||
if (explicit && !languages[top.subLanguage]) {
|
||||
return escape(mode_buffer);
|
||||
}
|
||||
|
||||
var result = explicit ?
|
||||
highlight(top.subLanguage, mode_buffer, true, continuations[top.subLanguage]) :
|
||||
highlightAuto(mode_buffer, top.subLanguage.length ? top.subLanguage : undefined);
|
||||
|
||||
// Counting embedded language score towards the host language may be disabled
|
||||
// with zeroing the containing mode relevance. Usecase in point is Markdown that
|
||||
// allows XML everywhere and makes every XML snippet to have a much larger Markdown
|
||||
// score.
|
||||
if (top.relevance > 0) {
|
||||
relevance += result.relevance;
|
||||
}
|
||||
if (explicit) {
|
||||
continuations[top.subLanguage] = result.top;
|
||||
}
|
||||
return buildSpan(result.language, result.value, false, true);
|
||||
}
|
||||
|
||||
function processBuffer() {
|
||||
result += (top.subLanguage != null ? processSubLanguage() : processKeywords());
|
||||
mode_buffer = '';
|
||||
}
|
||||
|
||||
function startNewMode(mode) {
|
||||
result += mode.className ? buildSpan(mode.className, '', true) : '';
|
||||
top = Object.create(mode, { parent: { value: top } });
|
||||
}
|
||||
|
||||
function processLexeme(buffer, lexeme) {
|
||||
|
||||
mode_buffer += buffer;
|
||||
|
||||
if (lexeme == null) {
|
||||
processBuffer();
|
||||
return 0;
|
||||
}
|
||||
|
||||
var new_mode = subMode(lexeme, top);
|
||||
if (new_mode) {
|
||||
if (new_mode.skip) {
|
||||
mode_buffer += lexeme;
|
||||
} else {
|
||||
if (new_mode.excludeBegin) {
|
||||
mode_buffer += lexeme;
|
||||
}
|
||||
processBuffer();
|
||||
if (!new_mode.returnBegin && !new_mode.excludeBegin) {
|
||||
mode_buffer = lexeme;
|
||||
}
|
||||
}
|
||||
startNewMode(new_mode, lexeme);
|
||||
return new_mode.returnBegin ? 0 : lexeme.length;
|
||||
}
|
||||
|
||||
var end_mode = endOfMode(top, lexeme);
|
||||
if (end_mode) {
|
||||
var origin = top;
|
||||
if (origin.skip) {
|
||||
mode_buffer += lexeme;
|
||||
} else {
|
||||
if (!(origin.returnEnd || origin.excludeEnd)) {
|
||||
mode_buffer += lexeme;
|
||||
}
|
||||
processBuffer();
|
||||
if (origin.excludeEnd) {
|
||||
mode_buffer = lexeme;
|
||||
}
|
||||
}
|
||||
do {
|
||||
if (top.className) {
|
||||
result += spanEndTag;
|
||||
}
|
||||
if (!top.skip) {
|
||||
relevance += top.relevance;
|
||||
}
|
||||
top = top.parent;
|
||||
} while (top !== end_mode.parent);
|
||||
if (end_mode.starts) {
|
||||
startNewMode(end_mode.starts, '');
|
||||
}
|
||||
return origin.returnEnd ? 0 : lexeme.length;
|
||||
}
|
||||
|
||||
if (isIllegal(lexeme, top))
|
||||
throw new Error('Illegal lexeme "' + lexeme + '" for mode "' + (top.className || '<unnamed>') + '"');
|
||||
|
||||
/*
|
||||
Parser should not reach this point as all types of lexemes should be caught
|
||||
earlier, but if it does due to some bug make sure it advances at least one
|
||||
character forward to prevent infinite looping.
|
||||
*/
|
||||
mode_buffer += lexeme;
|
||||
return lexeme.length || 1;
|
||||
}
|
||||
|
||||
var language = getLanguage(name);
|
||||
log(name + " " + language);
|
||||
if (!language) {
|
||||
throw new Error('Unknown language: "' + name + '"');
|
||||
}
|
||||
|
||||
log("language:" + language);
|
||||
compileLanguage(language);
|
||||
var top = continuation || language;
|
||||
|
||||
|
||||
var continuations = {}; // keep continuations for sub-languages
|
||||
var result = '', current;
|
||||
for (current = top; current !== language; current = current.parent) {
|
||||
if (current.className) {
|
||||
result = buildSpan(current.className, '', true) + result;
|
||||
}
|
||||
}
|
||||
log("name:" + name);
|
||||
var mode_buffer = '';
|
||||
var relevance = 0;
|
||||
try {
|
||||
var match, count, index = 0;
|
||||
while (true) {
|
||||
log("index:"+index);
|
||||
top.terminators.lastIndex = index;
|
||||
match = top.terminators.exec(value);
|
||||
if (!match)
|
||||
break;
|
||||
count = processLexeme(value.substring(index, match.index), match[0]);
|
||||
index = match.index + count;
|
||||
}
|
||||
processLexeme(value.substr(index));
|
||||
for (current = top; current.parent; current = current.parent) { // close dangling modes
|
||||
if (current.className) {
|
||||
result += spanEndTag;
|
||||
}
|
||||
}
|
||||
return {
|
||||
relevance: relevance,
|
||||
value: result,
|
||||
language: name,
|
||||
top: top
|
||||
};
|
||||
} catch (e) {
|
||||
if (e.message && e.message.indexOf('Illegal') !== -1) {
|
||||
return {
|
||||
relevance: 0,
|
||||
value: escape(value)
|
||||
};
|
||||
} else {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Highlighting with language detection. Accepts a string with the code to
|
||||
highlight. Returns an object with the following properties:
|
||||
|
||||
- language (detected language)
|
||||
- relevance (int)
|
||||
- value (an HTML string with highlighting markup)
|
||||
- second_best (object with the same structure for second-best heuristically
|
||||
detected language, may be absent)
|
||||
|
||||
*/
|
||||
function highlightAuto(text, languageSubset) {
|
||||
languageSubset = languageSubset || options.languages || objectKeys(languages);
|
||||
var result = {
|
||||
relevance: 0,
|
||||
value: escape(text)
|
||||
};
|
||||
var second_best = result;
|
||||
languageSubset.filter(getLanguage).forEach(function (name) {
|
||||
var current = highlight(name, text, false);
|
||||
current.language = name;
|
||||
if (current.relevance > second_best.relevance) {
|
||||
second_best = current;
|
||||
}
|
||||
if (current.relevance > result.relevance) {
|
||||
second_best = result;
|
||||
result = current;
|
||||
}
|
||||
});
|
||||
if (second_best.language) {
|
||||
result.second_best = second_best;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
Post-processing of the highlighted markup:
|
||||
|
||||
- replace TABs with something more useful
|
||||
- replace real line-breaks with '<br>' for non-pre containers
|
||||
|
||||
*/
|
||||
function fixMarkup(value) {
|
||||
return !(options.tabReplace || options.useBR)
|
||||
? value
|
||||
: value.replace(fixMarkupRe, function (match, p1) {
|
||||
if (options.useBR && match === '\n') {
|
||||
return '<br>';
|
||||
} else if (options.tabReplace) {
|
||||
return p1.replace(/\t/g, options.tabReplace);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function buildClassName(prevClassName, currentLang, resultLang) {
|
||||
var language = currentLang ? aliases[currentLang] : resultLang,
|
||||
result = [prevClassName.trim()];
|
||||
|
||||
if (!prevClassName.match(/\bhljs\b/)) {
|
||||
result.push('hljs');
|
||||
}
|
||||
|
||||
if (prevClassName.indexOf(language) === -1) {
|
||||
result.push(language);
|
||||
}
|
||||
|
||||
return result.join(' ').trim();
|
||||
}
|
||||
|
||||
/*
|
||||
Applies highlighting to a DOM node containing code. Accepts a DOM node and
|
||||
two optional parameters for fixMarkup.
|
||||
*/
|
||||
function highlightBlock(block) {
|
||||
var node, originalStream, result, resultNode, text;
|
||||
var language = blockLanguage(block);
|
||||
|
||||
if (isNotHighlighted(language))
|
||||
return;
|
||||
|
||||
if (options.useBR) {
|
||||
node = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
|
||||
node.innerHTML = block.innerHTML.replace(/\n/g, '').replace(/<br[ \/]*>/g, '\n');
|
||||
} else {
|
||||
node = block;
|
||||
}
|
||||
text = node.textContent;
|
||||
result = language ? highlight(language, text, true) : highlightAuto(text);
|
||||
|
||||
originalStream = nodeStream(node);
|
||||
if (originalStream.length) {
|
||||
resultNode = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
|
||||
resultNode.innerHTML = result.value;
|
||||
result.value = mergeStreams(originalStream, nodeStream(resultNode), text);
|
||||
}
|
||||
result.value = fixMarkup(result.value);
|
||||
|
||||
block.innerHTML = result.value;
|
||||
block.className = buildClassName(block.className, language, result.language);
|
||||
block.result = {
|
||||
language: result.language,
|
||||
re: result.relevance
|
||||
};
|
||||
if (result.second_best) {
|
||||
block.second_best = {
|
||||
language: result.second_best.language,
|
||||
re: result.second_best.relevance
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Updates highlight.js global options with values passed in the form of an object.
|
||||
*/
|
||||
function configure(user_options) {
|
||||
options = inherit(options, user_options);
|
||||
}
|
||||
|
||||
/*
|
||||
Applies highlighting to all <pre><code>..</code></pre> blocks on a page.
|
||||
*/
|
||||
function initHighlighting() {
|
||||
if (initHighlighting.called)
|
||||
return;
|
||||
initHighlighting.called = true;
|
||||
|
||||
var blocks = document.querySelectorAll('pre code');
|
||||
ArrayProto.forEach.call(blocks, highlightBlock);
|
||||
}
|
||||
|
||||
/*
|
||||
Attaches highlighting to the page load event.
|
||||
*/
|
||||
function initHighlightingOnLoad() {
|
||||
addEventListener('DOMContentLoaded', initHighlighting, false);
|
||||
addEventListener('load', initHighlighting, false);
|
||||
}
|
||||
|
||||
function registerLanguage(name, language) {
|
||||
//log(name + " " + language);
|
||||
var lang = languages[name] = language(hljs);
|
||||
if (lang.aliases) {
|
||||
lang.aliases.forEach(function (alias) { aliases[alias] = name; });
|
||||
}
|
||||
}
|
||||
|
||||
function listLanguages() {
|
||||
return objectKeys(languages);
|
||||
}
|
||||
|
||||
function getLanguage(name) {
|
||||
name = (name || '').toLowerCase();
|
||||
return languages[name] || languages[aliases[name]];
|
||||
}
|
||||
|
||||
/* Interface definition */
|
||||
|
||||
hljs.highlight = highlight;
|
||||
hljs.highlightAuto = highlightAuto;
|
||||
hljs.fixMarkup = fixMarkup;
|
||||
hljs.highlightBlock = highlightBlock;
|
||||
hljs.configure = configure;
|
||||
hljs.initHighlighting = initHighlighting;
|
||||
hljs.initHighlightingOnLoad = initHighlightingOnLoad;
|
||||
hljs.registerLanguage = registerLanguage;
|
||||
hljs.listLanguages = listLanguages;
|
||||
hljs.getLanguage = getLanguage;
|
||||
hljs.inherit = inherit;
|
||||
|
||||
// Common regexps
|
||||
hljs.IDENT_RE = '[a-zA-Z]\\w*';
|
||||
hljs.UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\w*';
|
||||
hljs.NUMBER_RE = '\\b\\d+(\\.\\d+)?';
|
||||
hljs.C_NUMBER_RE = '(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)'; // 0x..., 0..., decimal, float
|
||||
hljs.BINARY_NUMBER_RE = '\\b(0b[01]+)'; // 0b...
|
||||
hljs.RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~';
|
||||
|
||||
// Common modes
|
||||
hljs.BACKSLASH_ESCAPE = {
|
||||
begin: '\\\\[\\s\\S]', relevance: 0
|
||||
};
|
||||
hljs.APOS_STRING_MODE = {
|
||||
className: 'string',
|
||||
begin: '\'', end: '\'',
|
||||
illegal: '\\n',
|
||||
contains: [hljs.BACKSLASH_ESCAPE]
|
||||
};
|
||||
hljs.QUOTE_STRING_MODE = {
|
||||
className: 'string',
|
||||
begin: '"', end: '"',
|
||||
illegal: '\\n',
|
||||
contains: [hljs.BACKSLASH_ESCAPE]
|
||||
};
|
||||
hljs.PHRASAL_WORDS_MODE = {
|
||||
begin: /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\b/
|
||||
};
|
||||
hljs.COMMENT = function (begin, end, inherits) {
|
||||
var mode = hljs.inherit(
|
||||
{
|
||||
className: 'comment',
|
||||
begin: begin, end: end,
|
||||
contains: []
|
||||
},
|
||||
inherits || {}
|
||||
);
|
||||
mode.contains.push(hljs.PHRASAL_WORDS_MODE);
|
||||
mode.contains.push({
|
||||
className: 'doctag',
|
||||
begin: '(?:TODO|FIXME|NOTE|BUG|XXX):',
|
||||
relevance: 0
|
||||
});
|
||||
return mode;
|
||||
};
|
||||
hljs.C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$');
|
||||
hljs.C_BLOCK_COMMENT_MODE = hljs.COMMENT('/\\*', '\\*/');
|
||||
hljs.HASH_COMMENT_MODE = hljs.COMMENT('#', '$');
|
||||
hljs.NUMBER_MODE = {
|
||||
className: 'number',
|
||||
begin: hljs.NUMBER_RE,
|
||||
relevance: 0
|
||||
};
|
||||
hljs.C_NUMBER_MODE = {
|
||||
className: 'number',
|
||||
begin: hljs.C_NUMBER_RE,
|
||||
relevance: 0
|
||||
};
|
||||
hljs.BINARY_NUMBER_MODE = {
|
||||
className: 'number',
|
||||
begin: hljs.BINARY_NUMBER_RE,
|
||||
relevance: 0
|
||||
};
|
||||
hljs.CSS_NUMBER_MODE = {
|
||||
className: 'number',
|
||||
begin: hljs.NUMBER_RE + '(' +
|
||||
'%|em|ex|ch|rem' +
|
||||
'|vw|vh|vmin|vmax' +
|
||||
'|cm|mm|in|pt|pc|px' +
|
||||
'|deg|grad|rad|turn' +
|
||||
'|s|ms' +
|
||||
'|Hz|kHz' +
|
||||
'|dpi|dpcm|dppx' +
|
||||
')?',
|
||||
relevance: 0
|
||||
};
|
||||
hljs.REGEXP_MODE = {
|
||||
className: 'regexp',
|
||||
begin: /\//, end: /\/[gimuy]*/,
|
||||
illegal: /\n/,
|
||||
contains: [
|
||||
hljs.BACKSLASH_ESCAPE,
|
||||
{
|
||||
begin: /\[/, end: /\]/,
|
||||
relevance: 0,
|
||||
contains: [hljs.BACKSLASH_ESCAPE]
|
||||
}
|
||||
]
|
||||
};
|
||||
hljs.TITLE_MODE = {
|
||||
className: 'title',
|
||||
begin: hljs.IDENT_RE,
|
||||
relevance: 0
|
||||
};
|
||||
hljs.UNDERSCORE_TITLE_MODE = {
|
||||
className: 'title',
|
||||
begin: hljs.UNDERSCORE_IDENT_RE,
|
||||
relevance: 0
|
||||
};
|
||||
hljs.METHOD_GUARD = {
|
||||
// excludes method names from keyword processing
|
||||
begin: '\\.\\s*' + hljs.UNDERSCORE_IDENT_RE,
|
||||
relevance: 0
|
||||
};
|
||||
|
||||
hljs.registerLanguage("sql", function (hljs) {
|
||||
var COMMENT_MODE = hljs.COMMENT('--', '$');
|
||||
return {
|
||||
case_insensitive: true,
|
||||
illegal: /[<>{}*#]/,
|
||||
contains: [
|
||||
{
|
||||
beginKeywords:
|
||||
'begin end start commit rollback savepoint lock alter create drop rename call ' +
|
||||
'delete do handler insert load replace select truncate update set show pragma grant ' +
|
||||
'merge describe use explain help declare prepare execute deallocate release ' +
|
||||
'unlock purge reset change stop analyze cache flush optimize repair kill ' +
|
||||
'install uninstall checksum restore check backup revoke comment',
|
||||
end: /;/, endsWithParent: true,
|
||||
lexemes: /[\w\.]+/,
|
||||
keywords: {
|
||||
keyword:
|
||||
'abort abs absolute acc acce accep accept access accessed accessible account acos action activate add ' +
|
||||
'addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias ' +
|
||||
'allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply ' +
|
||||
'archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan ' +
|
||||
'atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid ' +
|
||||
'authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile ' +
|
||||
'before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float ' +
|
||||
'binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound ' +
|
||||
'buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel ' +
|
||||
'capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base ' +
|
||||
'char_length character_length characters characterset charindex charset charsetform charsetid check ' +
|
||||
'checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close ' +
|
||||
'cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation ' +
|
||||
'collect colu colum column column_value columns columns_updated comment commit compact compatibility ' +
|
||||
'compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn ' +
|
||||
'connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection ' +
|
||||
'consider consistent constant constraint constraints constructor container content contents context ' +
|
||||
'contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost ' +
|
||||
'count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation ' +
|
||||
'critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user ' +
|
||||
'cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add ' +
|
||||
'date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts ' +
|
||||
'day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate ' +
|
||||
'declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults ' +
|
||||
'deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank ' +
|
||||
'depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor ' +
|
||||
'deterministic diagnostics difference dimension direct_load directory disable disable_all ' +
|
||||
'disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div ' +
|
||||
'do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable ' +
|
||||
'editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt ' +
|
||||
'end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors ' +
|
||||
'escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding ' +
|
||||
'execu execut execute exempt exists exit exp expire explain export export_set extended extent external ' +
|
||||
'external_1 external_2 externally extract failed failed_login_attempts failover failure far fast ' +
|
||||
'feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final ' +
|
||||
'finish first first_value fixed flash_cache flashback floor flush following follows for forall force ' +
|
||||
'form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ' +
|
||||
'ftp full function general generated get get_format get_lock getdate getutcdate global global_name ' +
|
||||
'globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups ' +
|
||||
'gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex ' +
|
||||
'hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified ' +
|
||||
'identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment ' +
|
||||
'index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile ' +
|
||||
'initial initialized initially initrans inmemory inner innodb input insert install instance instantiable ' +
|
||||
'instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat ' +
|
||||
'is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists ' +
|
||||
'keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase ' +
|
||||
'lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit ' +
|
||||
'lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate ' +
|
||||
'locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call ' +
|
||||
'logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime ' +
|
||||
'managed management manual map mapping mask master master_pos_wait match matched materialized max ' +
|
||||
'maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans ' +
|
||||
'md5 measures median medium member memcompress memory merge microsecond mid migration min minextents ' +
|
||||
'minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month ' +
|
||||
'months mount move movement multiset mutex name name_const names nan national native natural nav nchar ' +
|
||||
'nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile ' +
|
||||
'nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile ' +
|
||||
'nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder ' +
|
||||
'nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck ' +
|
||||
'noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe ' +
|
||||
'nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ' +
|
||||
'ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old ' +
|
||||
'on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date ' +
|
||||
'oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary ' +
|
||||
'out outer outfile outline output over overflow overriding package pad parallel parallel_enable ' +
|
||||
'parameters parent parse partial partition partitions pascal passing password password_grace_time ' +
|
||||
'password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex ' +
|
||||
'pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc ' +
|
||||
'performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin ' +
|
||||
'policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction ' +
|
||||
'prediction_cost prediction_details prediction_probability prediction_set prepare present preserve ' +
|
||||
'prior priority private private_sga privileges procedural procedure procedure_analyze processlist ' +
|
||||
'profiles project prompt protection public publishingservername purge quarter query quick quiesce quota ' +
|
||||
'quotename radians raise rand range rank raw read reads readsize rebuild record records ' +
|
||||
'recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh ' +
|
||||
'regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy ' +
|
||||
'reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename ' +
|
||||
'repair repeat replace replicate replication required reset resetlogs resize resource respect restore ' +
|
||||
'restricted result result_cache resumable resume retention return returning returns reuse reverse revoke ' +
|
||||
'right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows ' +
|
||||
'rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll ' +
|
||||
'sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select ' +
|
||||
'self sequence sequential serializable server servererror session session_user sessions_per_user set ' +
|
||||
'sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor ' +
|
||||
'si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin ' +
|
||||
'size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex ' +
|
||||
'source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows ' +
|
||||
'sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone ' +
|
||||
'standby start starting startup statement static statistics stats_binomial_test stats_crosstab ' +
|
||||
'stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep ' +
|
||||
'stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev ' +
|
||||
'stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate ' +
|
||||
'subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum ' +
|
||||
'suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate ' +
|
||||
'sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo ' +
|
||||
'template temporary terminated tertiary_weights test than then thread through tier ties time time_format ' +
|
||||
'time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr ' +
|
||||
'timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking ' +
|
||||
'transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate ' +
|
||||
'try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress ' +
|
||||
'under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot ' +
|
||||
'unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert ' +
|
||||
'url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date ' +
|
||||
'utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var ' +
|
||||
'var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray ' +
|
||||
'verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear ' +
|
||||
'wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped ' +
|
||||
'xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces ' +
|
||||
'xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek',
|
||||
literal:
|
||||
'true false null',
|
||||
built_in:
|
||||
'array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number ' +
|
||||
'numeric real record serial serial8 smallint text varchar varying void'
|
||||
},
|
||||
contains: [
|
||||
{
|
||||
className: 'string',
|
||||
begin: '\'', end: '\'',
|
||||
contains: [hljs.BACKSLASH_ESCAPE, { begin: '\'\'' }]
|
||||
},
|
||||
{
|
||||
className: 'string',
|
||||
begin: '"', end: '"',
|
||||
contains: [hljs.BACKSLASH_ESCAPE, { begin: '""' }]
|
||||
},
|
||||
{
|
||||
className: 'string',
|
||||
begin: '`', end: '`',
|
||||
contains: [hljs.BACKSLASH_ESCAPE]
|
||||
},
|
||||
hljs.C_NUMBER_MODE,
|
||||
hljs.C_BLOCK_COMMENT_MODE,
|
||||
COMMENT_MODE
|
||||
]
|
||||
},
|
||||
hljs.C_BLOCK_COMMENT_MODE,
|
||||
COMMENT_MODE
|
||||
]
|
||||
};
|
||||
});
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<meta name="GENERATOR" content="DBCHM.exe by lztkdr">
|
||||
<!-- Sitemap 1.0 -->
|
||||
<!-- hhk文件渲染后,需 Replace("</LI>", "") -->
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<OBJECT type="text/site properties">
|
||||
<param name="ExWindow Styles" value="0x200">
|
||||
<param name="Window Styles" value="0x800025">
|
||||
<param name="Font" value="MS Sans Serif,9,0">
|
||||
</OBJECT>
|
||||
<UL>
|
||||
<LI><OBJECT type="text/sitemap">
|
||||
<param name="Name" value="数据库目录">
|
||||
<param name="Local" value="数据库目录.html">
|
||||
<param name="ImageNumber" value="11">
|
||||
</OBJECT>
|
||||
</LI>
|
||||
@if (Model.Tables != null && Model.Tables.Count > 0)
|
||||
{
|
||||
<LI><OBJECT type="text/sitemap">
|
||||
<param name="Name" value="表结构">
|
||||
<param name="ImageNumber" value="1">
|
||||
</OBJECT>
|
||||
<UL>
|
||||
@foreach (var table in Model.Tables)
|
||||
{
|
||||
<LI><OBJECT type="text/sitemap">
|
||||
<param name="Name" value="@(table.TableName+" "+table.Comment)">
|
||||
<param name="Local" value="表结构\@(table.TableName+" "+table.Comment).html">
|
||||
<param name="ImageNumber" value="11">
|
||||
</OBJECT>
|
||||
</LI>
|
||||
}
|
||||
</UL>
|
||||
</LI>
|
||||
}
|
||||
|
||||
@if (Model.Views != null && Model.Views.Count > 0)
|
||||
{
|
||||
<LI><OBJECT type="text/sitemap">
|
||||
<param name="Name" value="视图">
|
||||
<param name="ImageNumber" value="1">
|
||||
</OBJECT>
|
||||
<UL>
|
||||
@foreach (var item in Model.Views)
|
||||
{
|
||||
<LI><OBJECT type="text/sitemap">
|
||||
<param name="Name" value="@(item.Key)">
|
||||
<param name="Local" value="视图\@(item.Key).html">
|
||||
<param name="ImageNumber" value="11">
|
||||
</OBJECT>
|
||||
</LI>
|
||||
}
|
||||
</UL>
|
||||
</LI>
|
||||
|
||||
}
|
||||
|
||||
|
||||
@if (Model.Procs != null && Model.Procs.Count > 0)
|
||||
{
|
||||
<LI><OBJECT type="text/sitemap">
|
||||
<param name="Name" value="存储过程">
|
||||
<param name="ImageNumber" value="1">
|
||||
</OBJECT>
|
||||
<UL>
|
||||
@foreach (var item in Model.Procs)
|
||||
{
|
||||
<LI><OBJECT type="text/sitemap">
|
||||
<param name="Name" value="@(item.Key)">
|
||||
<param name="Local" value="存储过程\@(item.Key).html">
|
||||
<param name="ImageNumber" value="11">
|
||||
</OBJECT>
|
||||
</LI>
|
||||
}
|
||||
</UL>
|
||||
</LI>
|
||||
}
|
||||
</UL>
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<meta name="GENERATOR" content="DBCHM.exe by lztkdr">
|
||||
<!-- Sitemap 1.0 -->
|
||||
<!-- hhk文件渲染后,需 Replace("</LI>", "") -->
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<OBJECT type="text/site properties">
|
||||
<param name="ExWindow Styles" value="0x200">
|
||||
<param name="Window Styles" value="0x800025">
|
||||
<param name="Font" value="MS Sans Serif,9,0">
|
||||
</OBJECT>
|
||||
<UL>
|
||||
<LI><OBJECT type="text/sitemap">
|
||||
<param name="Name" value="数据库目录">
|
||||
<param name="Local" value="数据库目录.html">
|
||||
<param name="ImageNumber" value="11">
|
||||
</OBJECT>
|
||||
</LI>
|
||||
@if (Model.Tables != null && Model.Tables.Count > 0)
|
||||
{
|
||||
foreach (var tab in Model.Tables)
|
||||
{
|
||||
<LI><OBJECT type="text/sitemap">
|
||||
<param name="Name" value="@tab.TableName">
|
||||
<param name="Local" value="表结构\@(tab.TableName + " " + tab.Comment).html">
|
||||
<param name="ImageNumber" value="11">
|
||||
</OBJECT>
|
||||
</LI>
|
||||
//hhk文件不能太大,不然hhc编译时,会报提示 :An internal error has occurred.An error record has been saved to ..
|
||||
//https://documentation.red-gate.com/sdoc5/troubleshooting/error-messages/assertion-failure-outputting-in-chm-format
|
||||
@*foreach (var column in tab.Columns)
|
||||
{
|
||||
<LI><OBJECT type="text/sitemap">
|
||||
<param name="Name" value="@column.ColumnName">
|
||||
<param name="Local" value="表结构\@(tab.TableName + " " + tab.Comment).html">
|
||||
<param name="ImageNumber" value="11">
|
||||
</OBJECT>
|
||||
</LI>
|
||||
}*@
|
||||
}
|
||||
}
|
||||
|
||||
@if (Model.Views != null && Model.Views.Count > 0)
|
||||
{
|
||||
foreach (var item in Model.Views)
|
||||
{
|
||||
<LI><OBJECT type="text/sitemap">
|
||||
<param name="Name" value="@item.Key">
|
||||
<param name="Local" value="视图\@(item.Key).html">
|
||||
<param name="ImageNumber" value="11">
|
||||
</OBJECT>
|
||||
</LI>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@if (Model.Procs != null && Model.Procs.Count > 0)
|
||||
{
|
||||
foreach (var item in Model.Procs)
|
||||
{
|
||||
<LI><OBJECT type="text/sitemap">
|
||||
<param name="Name" value="@item.Key">
|
||||
<param name="Local" value="存储过程\@(item.Key).html">
|
||||
<param name="ImageNumber" value="11">
|
||||
</OBJECT>
|
||||
</LI>
|
||||
}
|
||||
}
|
||||
|
||||
</UL>
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
[OPTIONS]
|
||||
Auto Index=Yes
|
||||
CITATION=Made by lztkdr
|
||||
Compatibility=1.1 or later
|
||||
Compiled file=@Model.ChmFile
|
||||
Contents file=chm.HHC
|
||||
COPYRIGHT=www.51try.top
|
||||
Default topic=@Model.DefaultFile
|
||||
Default Window=Main
|
||||
Display compile notes=Yes
|
||||
Display compile progress=Yes
|
||||
Full-text search=Yes
|
||||
Language=0x804 ÖÐÎÄ(Öйú)
|
||||
Index file=chm.HHK
|
||||
Title=@Model.Title
|
||||
Enhanced decompilation=yes
|
||||
|
||||
[WINDOWS]
|
||||
Main="@Model.Title","chm.hhc","chm.hhk","@Model.DefaultFile","@Model.DefaultFile",,,,20000,0x63520,180,0x104E, [0,0,745,509],0x0,0x0,,,,,0
|
||||
|
||||
[MERGE FILES]
|
||||
|
||||
[FILES]
|
||||
@if (Model.Files != null && Model.Files.Count > 0)
|
||||
{
|
||||
foreach (var filePath in Model.Files)
|
||||
{
|
||||
@(filePath + "\r\n")
|
||||
}
|
||||
}
|
||||