miniSql

创建
zgc123@gmail.com authored at 11/19/2023 1:40:15 AM
6136600
Tree
0 Parent(s)
Summary: 509 changed files with 65989 additions and 0 deletions.
Added +7 -0
Added +7 -0
Added +78 -0
Added +20 -0
Added +52 -0
Added +6 -0
Added +18 -0
Added +98 -0
Added +89 -0
Added +13 -0
Added +275 -0
Added +429 -0
Added +153 -0
Added +17 -0
Added +113 -0
Added +40 -0
Added +73 -0
Added +124 -0
Added +0 -0
Added +18 -0
Added +18 -0
Added +73 -0
Added +14 -0
Added +0 -0
Added +20 -0
Added +111 -0
Added +26 -0
Added +73 -0
Added +124 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +6786 -0
Added +0 -0
Added +6780 -0
Added +0 -0
Added +0 -0
Added +7323 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +34 -0
Added +20 -0
Added +36 -0
Added +119 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +37 -0
Added +14 -0
Added +36 -0
Added +517 -0
Added +123 -0
Added +282 -0
Added +73 -0
Added +49 -0
Added +215 -0
Added +86 -0
Added +56 -0
Added +46 -0
Added +48 -0
Added +45 -0
Added +147 -0
Added +40 -0
Added +49 -0
Added +48 -0
Added +38 -0
Added +66 -0
Added +27 -0
Added +64 -0
Added +33 -0
Added +61 -0
Added +47 -0
Added +40 -0
Added +38 -0
Added +52 -0
Added +78 -0
Added +44 -0
Added +38 -0
Added +38 -0
Added +25 -0
Added +51 -0
Added +25 -0
Added +148 -0
Added +72 -0
Added +59 -0
Added +120 -0
Added +51 -0
Added +119 -0
Added +120 -0
Added +37 -0
Added +84 -0
Added +120 -0
Added +50 -0
Added +99 -0
Added +101 -0
Added +89 -0
Added +15 -0
Added +54 -0
Added +94 -0
Added +54 -0
Added +101 -0
Added +46 -0
Added +66 -0
Added +212 -0
Added +20 -0
Added +359 -0
Added +67 -0
Added +43 -0
Added +101 -0
Added +323 -0
Added +105 -0
Added +261 -0
Added +22 -0
Added +57 -0
Added +126 -0
Added +101 -0
Added +50 -0
Added +107 -0
Added +120 -0
Added +134 -0
Added +149 -0
Added +77 -0
Added +29 -0
Added +41 -0
Added +65 -0
Added +46 -0
Added +41 -0
Added +81 -0
Added +44 -0
Added +59 -0
Added +56 -0
Added +148 -0
Added +833 -0
Added +352 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +48 -0
Added +9 -0
Added +50 -0
Added +33 -0
Added +65 -0
Added +24 -0
Added +24 -0
Added +36 -0
Added +23 -0
Added +24 -0
Added +35 -0
Added +7 -0
Added +376 -0
Added +0 -0
Added +18 -0
Added +83 -0
Added +49 -0
Added +32 -0
Added +51 -0
Added +96 -0
Added +68 -0
Added +16 -0
Added +100 -0
Added +130 -0
Added +52 -0
Added +125 -0
Added +321 -0
Added +85 -0
Added +45 -0
Added +22 -0
Added +41 -0
Added +148 -0
Added +57 -0
Added +44 -0
Added +21 -0
Added +197 -0
Added +93 -0
Added +0 -0
Added +19 -0
Added +86 -0
Added +95 -0
Added +55 -0
Added +64 -0
Added +116 -0
Added +84 -0
Added +103 -0
Added +144 -0
Added +156 -0
Added +41 -0
Added +19 -0
Added +5252 -0
Added +79 -0
Added +215 -0
Added +80 -0
Added +54 -0
Added +0 -0
Added +35 -0
Added +109 -0
Added +127 -0
Added +82 -0
Added +14 -0
Added +140 -0
Added +2 -0
Added +8 -0
Added +62 -0
Added +59 -0
Added +114 -0
Added +41 -0
Added +49 -0
Added +21 -0
Added +156 -0
Added +280 -0
Added +120 -0
Added +75 -0
Added +132 -0
Added +0 -0
Added +314 -0
Added +416 -0
Added +97 -0
Added +123 -0
Added +263 -0
Added +75 -0
Added +42 -0
Added +49 -0
Added +178 -0
Added +54 -0
Added +58 -0
Added +80 -0
Added +32 -0
Added +34 -0
Added +56 -0
Added +159 -0
Added +120 -0
Added +37 -0
Added +92 -0
Added +120 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +165 -0
Added +518 -0
Added +452 -0
Added +498 -0
Added +455 -0
Added +0 -0
Added +289 -0
Added +73 -0
Added +82 -0
Added +95 -0
Added +120 -0
Added +177 -0
Added +132 -0
Added +120 -0
Added +30 -0
Added +346 -0
Added +224 -0
Added +169 -0
Added +34 -0
Added +345 -0
Added +325 -0
Added +229 -0
Added +79 -0
Added +212 -0
Added +280 -0
Added +28 -0
Added +38 -0
Added +38 -0
Added +38 -0
Added +38 -0
Added +70 -0
Added +38 -0
Added +41 -0
Added +34 -0
Added +47 -0
Added +69 -0
Added +553 -0
Added +120 -0
Added +161 -0
Added +53 -0
Added +203 -0
Added +82 -0
Added +120 -0
Added +75 -0
Added +54 -0
Added +64 -0
Added +40 -0
Added +212 -0
Added +154 -0
Added +120 -0
Added +76 -0
Added +102 -0
Added +120 -0
Added +25 -0
Added +50 -0
Added +31 -0
Added +41 -0
Added +18 -0
Added +201 -0
Added +462 -0
Added +170 -0
Added +123 -0
Added +449 -0
Added +155 -0
Added +202 -0
Added +82 -0
Added +127 -0
Added +67 -0
Added +35 -0
Added +152 -0
Added +134 -0
Added +212 -0
Added +40 -0
Added +29 -0
Added +66 -0
Added +39 -0
Added +37 -0
Added +0 -0
Added +531 -0
Added +171 -0
Added +155 -0
Added +37 -0
Added +19 -0
Added +315 -0
Added +191 -0
Added +172 -0
Added +45 -0
Added +1017 -0
Added +211 -0
Added +161 -0
Added +0 -0
Added +162 -0
Added +9 -0
Added +7 -0
Added +1 -0
Added +4 -0
Added +26 -0
Added +8 -0
Added +8 -0
Added +14 -0
Added +28 -0
Added +38 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +103 -0
Added +22 -0
Added +458 -0
Added +56 -0
Added +9 -0
Added +0 -0
Added +0 -0
Added +27 -0
Added +71 -0
Added +22 -0
Added +17 -0
Added +39 -0
Added +21 -0
Added +0 -0
Added +20 -0
Added +2 -0
Added +88 -0
Added +0 -0
Added +36 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +2323 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +0 -0
Added +340 -0
Added +158 -0
Added +2536 -0
Added +1 -0
Added +7 -0
diff --git a/minisqlquery-master/src/Build-DISTRO.cmd b/minisqlquery-master/src/Build-DISTRO.cmd
new file mode 100644
index 0000000..543f10d
--- /dev/null
+++ b/minisqlquery-master/src/Build-DISTRO.cmd
@@ -0,0 +1,7 @@
+REM setp both the VS.NET Pro path (local dev), and the community edition path (appveyor)
+SET PATH=%PATH%;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\
+SET PATH=%PATH%;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin
+
+Tools\nant\bin\nant.exe distro
+
+@PAUSE
\ No newline at end of file
Added +7 -0
diff --git a/minisqlquery-master/src/Build-Release.cmd b/minisqlquery-master/src/Build-Release.cmd
new file mode 100644
index 0000000..7fe4159
--- /dev/null
+++ b/minisqlquery-master/src/Build-Release.cmd
@@ -0,0 +1,7 @@
+REM setp both the VS.NET Pro path (local dev), and the community edition path (appveyor)
+SET PATH=%PATH%;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\
+SET PATH=%PATH%;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin
+
+Tools\nant\bin\nant.exe full-build
+
+@PAUSE
\ No newline at end of file
Added +78 -0
diff --git a/minisqlquery-master/src/ChangeLog.txt b/minisqlquery-master/src/ChangeLog.txt
new file mode 100644
index 0000000..5903e59
--- /dev/null
+++ b/minisqlquery-master/src/ChangeLog.txt
@@ -0,0 +1,78 @@
+Mini SQL Query Change Log
+=========================
+
+2019-11-03	ENH: Upgraded framework version from 4.6.2 to 4.8 with other package updates and minor fixes.
+2019-06-23	ENH: Upgraded framework version from 3.5 to 4.6.2 with other package updates.
+2016-07-02	FIX: Fix for generic schema errors
+2016-01-28	FIX: Fix for the print dialog never showing up properly
+2015-01-23	ENH: Improved the View Table screen with better default columns sizes and remembers it between executions
+2015-01-22	ENH: Added a "Cancel" implementation - provider specific of course!
+2015-01-21	FIX: Fixed issue where template host not creating data object
+2014-08-22	ENH: Improved the find object design (ALT+F) - added up/down checks for a list etc
+2014-08-07	ENH: Made SQLite a first class Mini SQL Query Citizen
+2014-07-29	ENH: Modified the IoC to be Ninject
+2013-03-06	ENH: Improved the grid setting of column widths, more so for larger text fields
+2012-07-11	FIX: First use - no connection strings defined - 'Query' menu causes an error (Work Item 9488)
+2012-07-02	FIX: Don't automatically refresh as it can try to reconnect to a connection you don't have etc
+2011-11-02	ENH: Updated 3rd party libraries to latest with NuGet etc
+2011-06-11	ENH: Added a Most Recently Used file list
+2011-06-03	ENH: Added Row counts to the query (per tab) and table view windows
+2011-04-19	ENH: Added the Command Timout option, only valid for MSSQL for now
+2011-03-30	ENH: Added in the ExportSqlCe version 4 tool
+2011-03-30	ENH: Upgraded the Contrib projects to VS 2010
+2011-03-29	FIX: The schema service factory was too specific with the SQL CE versions, now works with 3.5 of 4 etc.
+2010-08-09	ENH: Made exporting with "read only columns" (e.g. PK's) an option
+2010-01-28	ENH: Added a 'copy table name' menu item on the DB Inspector
+2010-01-28	ENH: Friendlier truncate table message
+2010-01-15	ENH: Added a "SELECT COUNT(*)" option for tables and views
+2009-12-18	ENH: Added a bit of a hack of an 'export data' functionality via the 'view table data' option (see 'Export Script...' link under 'Reload Data')
+2009-12-10	ENH: quick change to include the column name in the comment of the generated insert sql code
+2009-10-06	MOD: Removed all obsolete references in prep for a real release ;-O
+2009-09-24	ENH: Finally added drag drop ;-)
+2009-09-24	ENH: Added options.
+2009-09-22	ENH: added a simple file watcher mechanism to monitor the templates directory (*.mt) and update the tree view.
+2009-09-17	ENH: Added some "quick help" for the template editor.
+2009-09-16	ENH: Simple syntax highlighting for the template editor.
+2009-09-07	ENH: Updated query form, view table form and edit template form to make use of the IPerformTask interface (enabling use of F5 on those windows to "run" the task).
+2009-09-02	ENH: Updated the DB Inspector to display the PK/FK info for MSSQL and MSSQL Compact Edition databases.
+2009-09-01	ENH: Added Foreign key ability to the SQL CE providers.
+2009-08-30	ENH: Some additions by Kent Carlsle - Minimise to tray and copy selected grid items with/without headers (context menu)
+2009-08-28	ENH: Re-implementation of templating using the NVelocity engine
+2009-08-26	FIX: Improved handling of db objects with 'unfriendly names' (e.g. spaces etc).
+2009-08-26	ENH: Added simple template processing, access to properties of IApplicationServices using braces.
+2009-08-21	ENH: Major breaking changes around the collection of the database schemas (See Core.DbModel).
+2009-08-21	ENH: Added support for SQL CE 3.5 databases.
+2009-07-08	ENH: Added views to the DB Inspector plugin - added "Tables" and "Views" nodes at the root.
+2009-07-07	ENH: Pushed the query execution into background worker.
+2009-07-06	ENH: Added the messages pane to the results, started to add providers (these are provider specific, just 'generic' and SqlClient for now).
+2009-07-01	ENH: Updated the dock panel suite.
+2009-07-01	ENH: Added better credits to the About Form.
+2009-06-30	ENH: addded "is dirty" checks to the connection string editor form
+2009-06-29	ENH: Added query batching using "GO" keyword (made IQueryEditor.DataSet obsolete)
+2009-06-24	ENH: Updated the Text Editor to v3 (also load definition by file now, see 'SQL-Mode.xshd')
+2009-06-10	TASK[4126]: Modified connections to use XML rather than text files (breaking change)
+2009-06-04	FIX: handle SQL object names with spaces etc "My Col" -> "[My Col]"
+2009-05-06	FIX[4030]: for "BUG: CSV Export plugin does not escape certain characters"
+
+
+Version 0.9.9.1 - 14 June 2008 - Preview Release
+------------------------------------------------
+Preview release prior to version 1.0.
+	* Modified app to use Castle Windsor for dependency injection (finally!)
+	* General refactoring around core interfaces
+	* Added allot of hopefully useful commenting
+	* Implemented simple text searching abilities
+	* Added a "search tools" plugin under the SDK as an example and find implementation.
+	* Enhanced the connection strings editor to make use of the providers connection string builder.
+
+
+Version 0.9.9.0 - 23 May 2008 - Final
+ Beta
+
+------------------------------------------
+The final beta version.
+
+
+Previous Versions (pre May 2008)
+--------------------------------
+Mini SQL Query changes prior to being open source not formerly tracked.
Added +20 -0
diff --git a/minisqlquery-master/src/CommonAssemblyInfo.cs b/minisqlquery-master/src/CommonAssemblyInfo.cs
new file mode 100644
index 0000000..9cb6b9e
--- /dev/null
+++ b/minisqlquery-master/src/CommonAssemblyInfo.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+[assembly: ComVisibleAttribute(false)]
+[assembly: CLSCompliantAttribute(true)]
+[assembly: AssemblyConfigurationAttribute("Release - No Tests")]
+[assembly: AssemblyCompanyAttribute("Paul Kohler")]
+[assembly: AssemblyCopyrightAttribute("Copyright (C) 2005-2019 Paul Kohler")]
+
Added +52 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.Contrib.sln b/minisqlquery-master/src/Contrib/MiniSqlQuery.Contrib.sln
new file mode 100644
index 0000000..6051503
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.Contrib.sln
@@ -0,0 +1,52 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29424.173
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniSqlQuery.Exports.Plugin", "MiniSqlQuery.Exports.Plugin\MiniSqlQuery.Exports.Plugin.csproj", "{BADDFE58-B855-4A88-A131-BE4066F080E8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniSqlQuery.Core", "..\MiniSqlQuery.Core\MiniSqlQuery.Core.csproj", "{B819CF6A-B5FD-4E85-842D-FD855F856A5A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniSqlQuery", "..\MiniSqlQuery\MiniSqlQuery.csproj", "{0164E1CD-8EC2-4C9E-8D67-2575221D8707}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniSqlQuery.ExternalTools.Plugin", "MiniSqlQuery.ExternalTools.Plugin\MiniSqlQuery.ExternalTools.Plugin.csproj", "{803B1BA0-361A-47B9-A8EE-B790CD05B827}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release - No Tests|Any CPU = Release - No Tests|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{BADDFE58-B855-4A88-A131-BE4066F080E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{BADDFE58-B855-4A88-A131-BE4066F080E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{BADDFE58-B855-4A88-A131-BE4066F080E8}.Release - No Tests|Any CPU.ActiveCfg = Release - No Tests|Any CPU
+		{BADDFE58-B855-4A88-A131-BE4066F080E8}.Release - No Tests|Any CPU.Build.0 = Release - No Tests|Any CPU
+		{BADDFE58-B855-4A88-A131-BE4066F080E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{BADDFE58-B855-4A88-A131-BE4066F080E8}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B819CF6A-B5FD-4E85-842D-FD855F856A5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B819CF6A-B5FD-4E85-842D-FD855F856A5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B819CF6A-B5FD-4E85-842D-FD855F856A5A}.Release - No Tests|Any CPU.ActiveCfg = Release - No Tests|Any CPU
+		{B819CF6A-B5FD-4E85-842D-FD855F856A5A}.Release - No Tests|Any CPU.Build.0 = Release - No Tests|Any CPU
+		{B819CF6A-B5FD-4E85-842D-FD855F856A5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B819CF6A-B5FD-4E85-842D-FD855F856A5A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0164E1CD-8EC2-4C9E-8D67-2575221D8707}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0164E1CD-8EC2-4C9E-8D67-2575221D8707}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0164E1CD-8EC2-4C9E-8D67-2575221D8707}.Release - No Tests|Any CPU.ActiveCfg = Release - No Tests|Any CPU
+		{0164E1CD-8EC2-4C9E-8D67-2575221D8707}.Release - No Tests|Any CPU.Build.0 = Release - No Tests|Any CPU
+		{0164E1CD-8EC2-4C9E-8D67-2575221D8707}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0164E1CD-8EC2-4C9E-8D67-2575221D8707}.Release|Any CPU.Build.0 = Release|Any CPU
+		{803B1BA0-361A-47B9-A8EE-B790CD05B827}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{803B1BA0-361A-47B9-A8EE-B790CD05B827}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{803B1BA0-361A-47B9-A8EE-B790CD05B827}.Release - No Tests|Any CPU.ActiveCfg = Release - No Tests|Any CPU
+		{803B1BA0-361A-47B9-A8EE-B790CD05B827}.Release - No Tests|Any CPU.Build.0 = Release - No Tests|Any CPU
+		{803B1BA0-361A-47B9-A8EE-B790CD05B827}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{803B1BA0-361A-47B9-A8EE-B790CD05B827}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {987E23D2-E9EA-4C75-9F86-88149A712084}
+	EndGlobalSection
+EndGlobal
Added +6 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/app.config b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/app.config
new file mode 100644
index 0000000..b5a9018
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/app.config
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<configuration>
+  <startup>
+    <supportedRuntime version="v2.0.50727"/>
+  </startup>
+</configuration>
Added +18 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Commands/ShowExportWindowCommand.cs b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Commands/ShowExportWindowCommand.cs
new file mode 100644
index 0000000..90df497
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Commands/ShowExportWindowCommand.cs
@@ -0,0 +1,18 @@
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.Exports.Plugin.Commands
+{
+    public class ShowExportWindowCommand : CommandBase
+    {
+        public ShowExportWindowCommand()
+            : base("&Export data...")
+        {
+        }
+
+        public override void Execute()
+        {
+            ExportWindow frm = new ExportWindow(Services);
+            frm.Show(Services.HostWindow.Instance);
+        }
+    }
+}
\ No newline at end of file
Added +98 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Export/CSVExport.cs b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Export/CSVExport.cs
new file mode 100644
index 0000000..b55807a
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Export/CSVExport.cs
@@ -0,0 +1,98 @@
+using System;
+using System.Data;
+using System.IO;
+
+namespace MiniSqlQuery.Exports.Plugin.Export
+{
+    public class CSVExport
+    {
+        #region Delegates
+
+        public delegate void WrittenData(string text);
+
+        #endregion
+
+        public static event WrittenData OnWrittenData;
+
+        public static void ExportToCSV(DataTable source, string fileName, bool fileNamesFirstRow)
+        {
+            // Create the CSV file to which grid data will be exported.
+            StreamWriter sw = new StreamWriter(fileName, false);
+            // First we will write the headers.
+            DataTable dt = source;
+            int iColCount = dt.Columns.Count;
+
+            if (fileNamesFirstRow)
+            {
+                for (int i = 0; i < iColCount; i++)
+                {
+                    CsvWrite(sw, dt.Columns[i].ColumnName);
+                    if (i < iColCount - 1)
+                    {
+                        sw.Write(",");
+                    }
+                    if (OnWrittenData != null)
+                    {
+                        OnWrittenData(string.Format("Wrote column name {0}", i));
+                    }
+                }
+                sw.Write(sw.NewLine);
+                if (OnWrittenData != null)
+                {
+                    OnWrittenData("Wrote filednames row..");
+                }
+            }
+            // Now write all the rows.
+            int counter = 0;
+            foreach (DataRow dr in dt.Rows)
+            {
+                for (int i = 0; i < iColCount; i++)
+                {
+                    if (!Convert.IsDBNull(dr[i]))
+                    {
+                        CsvWrite(sw, dr[i].ToString());
+                    }
+                    if (i < iColCount - 1)
+                    {
+                        sw.Write(",");
+                    }
+                }
+                sw.Write(sw.NewLine);
+                counter++;
+                if (OnWrittenData != null)
+                {
+                    OnWrittenData(string.Format("Wrote row {0}", counter));
+                }
+            }
+            sw.Close();
+            if (OnWrittenData != null)
+            {
+                OnWrittenData("Finished exporting CSV file to " + fileName);
+            }
+        }
+
+        /// <summary>
+        /// Perform a CSV compliant wtrite of <paramref name="text"/> to the <paramref name="sw"/>.
+        /// Handles commas, quotes and newlines.
+        /// </summary>
+        /// <param name="sw">The writer.</param>
+        /// <param name="text">The text.</param>
+        private static void CsvWrite(TextWriter sw, string text)
+        {
+            if (text != null)
+            {
+                bool needsQuotes = false;
+                if (text.Contains("\"") || text.Contains(",") || text.Contains("\n"))
+                {
+                    needsQuotes = true;
+                    text = text.Replace("\"", "\"\"");
+                }
+                if (needsQuotes)
+                {
+                    text = string.Concat("\"", text, "\"");
+                }
+                sw.Write(text);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +89 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Export/HtmlExport.cs b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Export/HtmlExport.cs
new file mode 100644
index 0000000..3a989af
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Export/HtmlExport.cs
@@ -0,0 +1,89 @@
+using System.Data;
+using System.Text;
+
+namespace MiniSqlQuery.Exports.Plugin.Export
+{
+    public class HtmlExport
+    {
+        public delegate void WrittenData(string text);
+
+        public static event WrittenData OnWrittenData;
+
+        public static void ExportToHTML(DataTable source, string fileName, HtmlExportFormat format)
+        {
+            StringBuilder sbCss = new StringBuilder();
+            StringBuilder sbHtml = new StringBuilder();
+            bool isAltSet = false;
+
+            sbCss.Append("<style>");
+            sbCss.Append("body { font-family:" + format.FontFamily + "; font-size:" + format.FontSize + "; color:" + format.FontColor + "; }");
+            sbCss.Append(".Header {background-color:" + format.HeaderColor + "}");
+            sbCss.Append(".Row    {background-color:" + format.RowColor + "}");
+            sbCss.Append(".AltRow    {background-color:" + format.RowAltColor + "}");
+            sbCss.Append("</style>");
+
+            //this.SetStatusText = "Created style for html";
+
+            sbHtml.Append("<html>");
+            sbHtml.Append("<head><title>Export from " + source.TableName + "</title>");
+            sbHtml.Append(sbCss.ToString());
+            sbHtml.Append("</head>");
+            sbHtml.Append("<body>");
+
+            int fields = source.Columns.Count;
+            sbHtml.Append("<table border='0' cellpadding='2'");
+            sbHtml.Append("<tr>");
+            for (int i = 0; i < fields; i++)
+            {
+                sbHtml.Append(string.Format("<td class='Header'>{0}</td>", source.Columns[i].ColumnName));
+
+                if (OnWrittenData != null)
+                {
+                    OnWrittenData("Writing column name " + i);
+                }
+            }
+            sbHtml.Append("</tr>");
+
+            int counter = 0;
+            foreach (DataRow dr in source.Rows)
+            {
+                sbHtml.Append("<tr>");
+
+                for (int i = 0; i < fields; i++)
+                {
+                    if (isAltSet)
+                    {
+                        sbHtml.Append(string.Format("<td class='AltRow'>{0}</td>", dr[i]));
+                    }
+                    else
+                    {
+                        sbHtml.Append(string.Format("<td class='Row'>{0}</td>", dr[i]));
+                    }
+                }
+                counter++;
+                if (OnWrittenData != null)
+                {
+                    OnWrittenData("Writing row " + counter);
+                }
+
+                sbHtml.Append("</tr>");
+
+                if (isAltSet == false)
+                    isAltSet = true;
+                else
+                    isAltSet = false;
+            }
+            sbHtml.Append("</table>");
+            sbHtml.Append("</body></html>");
+
+
+            System.IO.TextWriter tw = new System.IO.StreamWriter(fileName);
+            tw.WriteLine(sbHtml.ToString());
+            tw.Close();
+            if (OnWrittenData != null)
+            {
+                OnWrittenData("Finished exporting to html file");
+            }
+        }
+    }
+}
\ No newline at end of file
Added +13 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Export/HtmlExportFormat.cs b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Export/HtmlExportFormat.cs
new file mode 100644
index 0000000..fdd0c14
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Export/HtmlExportFormat.cs
@@ -0,0 +1,13 @@
+namespace MiniSqlQuery.Exports.Plugin.Export
+{
+    public class HtmlExportFormat
+    {
+        public string FontFamily { get; set; }
+        public string FontSize { get; set; }
+        public string FontColor { get; set; }
+
+        public string HeaderColor { get; set; }
+        public string RowColor { get; set; }
+        public string RowAltColor { get; set; }
+    }
+}
\ No newline at end of file
Added +275 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/ExportWindow.cs b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/ExportWindow.cs
new file mode 100644
index 0000000..d75de71
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/ExportWindow.cs
@@ -0,0 +1,275 @@
+using System;
+using System.Data;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Forms;
+
+namespace MiniSqlQuery.Exports.Plugin
+{
+    public partial class ExportWindow : Form
+    {
+        private readonly IApplicationServices _services;
+        private DataSet _dsExecutedData;
+
+        public ExportWindow(IApplicationServices services)
+        {
+            _services = services;
+            InitializeComponent();
+            txtFilePath.Text = string.Format("{0}\\export{1:yyyy-MM-dd}.htm",
+                                             Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), DateTime.Today);
+        }
+
+        public string SetStatusText
+        {
+            set
+            {
+                toolStripStatusLabel1.Text = value;
+                statusStrip1.Refresh();
+            }
+        }
+
+        private void ExportWindow_Load(object sender, EventArgs e)
+        {
+            IQueryBatchProvider batchProvider = _services.HostWindow.ActiveChildForm as IQueryBatchProvider;
+
+            if (batchProvider != null && batchProvider.Batch != null)
+            {
+                if (batchProvider.Batch.Queries.Count > 1)
+                {
+                    BatchQuerySelectForm querySelectForm = new BatchQuerySelectForm();
+                    querySelectForm.Fill(batchProvider.Batch);
+                    querySelectForm.ShowDialog();
+                    if (querySelectForm.DialogResult == DialogResult.OK)
+                    {
+                        _dsExecutedData = querySelectForm.SelectedQuery.Result;
+                    }
+                    else
+                    {
+                        Close(); // user calncelled
+                    }
+                    return;
+                }
+
+                if (batchProvider.Batch.Queries.Count == 1)
+                {
+                    _dsExecutedData = batchProvider.Batch.Queries[0].Result;
+                    return;
+                }
+            }
+
+            MessageBox.Show("Couldn't find a result window, run a query or view a table to export the data.");
+            Close();
+        }
+
+        private void btnExport_Click(object sender, EventArgs e)
+        {
+            if (rbtXml.Checked)
+            {
+                ExportXml();
+            }
+
+            if (rbtHtml.Checked)
+            {
+                ExportHtml();
+            }
+
+            if (rbtCsv.Checked)
+            {
+                ExportCSV();
+            }
+        }
+
+        private void button1_Click(object sender, EventArgs e)
+        {
+            // Create new SaveFileDialog object
+            SaveFileDialog dialogSave = new SaveFileDialog();
+
+            // Default file extension
+            if (rbtCsv.Checked)
+            {
+                dialogSave.DefaultExt = "csv";
+                dialogSave.FilterIndex = 2;
+            }
+
+            if (rbtHtml.Checked)
+            {
+                dialogSave.DefaultExt = "htm";
+                dialogSave.FilterIndex = 1;
+            }
+
+            if (rbtXml.Checked)
+            {
+                dialogSave.DefaultExt = "xml";
+                dialogSave.FilterIndex = 3;
+            }
+
+            //DialogSave.DefaultExt = "txt";
+
+            // Available file extensions
+            dialogSave.Filter = "Html File (*.htm)|*.htm|CSV File (*.csv)|*.csv|XML file (*.xml)|*.xml";
+
+            // Adds a extension if the user does not
+            dialogSave.AddExtension = true;
+
+            // Restores the selected directory, next time
+            dialogSave.RestoreDirectory = true;
+
+            // Dialog title
+            dialogSave.Title = "Where do you want to save the file?";
+
+            // Startup directory
+            dialogSave.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
+
+            // Show the dialog and process the result
+            if (dialogSave.ShowDialog() == DialogResult.OK)
+            {
+                txtFilePath.Text = dialogSave.FileName;
+                //MessageBox.Show("You selected the file: " + DialogSave.FileName);
+            }
+
+            dialogSave.Dispose();
+        }
+
+        //private int GetFieldCount
+        //{
+        //    get { return _dsExecutedData.Tables[0].Columns.Count; }
+        //}
+        //private int GetRowCount
+        //{
+        //    get { return _dsExecutedData.Tables[0].Rows.Count; }
+        //}
+
+        private void ExportHtml()
+        {
+            Export.HtmlExportFormat format = new Export.HtmlExportFormat();
+            format.FontColor = txtFontColor.Text;
+            format.FontFamily = txtFontFamily.Text;
+            format.FontSize = txtFontSize.Text;
+
+            format.HeaderColor = txtHeaderBGColor.Text;
+            format.RowAltColor = txtRowBgAltColor.Text;
+            format.RowColor = txtRowBgcolor.Text;
+
+            Export.HtmlExport.OnWrittenData += CSVExport_OnWrittenData;
+            Export.HtmlExport.ExportToHTML(_dsExecutedData.Tables[0], txtFilePath.Text, format);
+
+            #region Not used
+
+            //StringBuilder sbCss = new StringBuilder();
+            //StringBuilder sbHtml = new StringBuilder();
+            //bool isAltSet = false;
+
+            //sbCss.Append("<style>");
+            //sbCss.Append("body { font-family:" + this.txtFontFamily.Text + "; font-size:" + this.txtFontSize.Text + "; color:" + this.txtFontColor.Text + "; }");
+            //sbCss.Append(".Header {background-color:" + this.txtHeaderBGColor.Text + "}");
+            //sbCss.Append(".Row    {background-color:" + this.txtRowBgcolor.Text + "}");
+            //sbCss.Append(".AltRow    {background-color:" +  this.txtRowBgAltColor.Text + "}");
+            //sbCss.Append("</style>");
+
+            //this.SetStatusText = "Created style for html";
+
+            //sbHtml.Append("<html>");
+            //sbHtml.Append("<head><title>Export from " + _dsExecutedData.Tables[0].TableName + "</title>");
+            //sbHtml.Append(sbCss.ToString());
+            //sbHtml.Append("</head>");
+            //sbHtml.Append("<body>");
+
+            //int fields = this.GetFieldCount;
+            //sbHtml.Append("<table border='0' cellpadding='2'");
+            //sbHtml.Append("<tr>");
+            //for (int i = 0; i < fields; i++)
+            //{
+            //    sbHtml.Append(string.Format("<td class='Header'>{0}</td>", _dsExecutedData.Tables[0].Columns[i].ColumnName));
+            //    this.SetStatusText = "Writing column name " + i.ToString();
+            //}
+            //sbHtml.Append("</tr>");
+
+            //int Counter = 0;
+            //foreach (DataRow dr in _dsExecutedData.Tables[0].Rows)
+            //{
+            //    sbHtml.Append("<tr>");
+
+            //    for (int i = 0; i < fields; i++)
+            //    {
+            //        if (isAltSet)
+            //        {
+            //            sbHtml.Append(string.Format("<td class='AltRow'>{0}</td>", dr[i].ToString()));
+
+            //        }
+            //        else
+            //        {
+            //            sbHtml.Append(string.Format("<td class='Row'>{0}</td>", dr[i].ToString()));
+
+            //        }
+            //    }
+            //    Counter++;
+            //    this.SetStatusText = "Wring row " + Counter.ToString();
+            //    sbHtml.Append("</tr>");
+
+            //    if (isAltSet == false)
+            //        isAltSet = true;
+            //    else
+            //        isAltSet = false;
+            //}
+            //sbHtml.Append("</table>");
+            //sbHtml.Append("</body></html>");
+
+
+            //System.IO.TextWriter tw = new System.IO.StreamWriter(this.txtFilePath.Text);
+            //tw.WriteLine(sbHtml.ToString());
+            //tw.Close();
+            //this.SetStatusText = "Finished exporting to html file"; 
+
+            #endregion
+        }
+
+        private void ExportCSV()
+        {
+            Export.CSVExport.OnWrittenData += CSVExport_OnWrittenData;
+            Export.CSVExport.ExportToCSV(_dsExecutedData.Tables[0], txtFilePath.Text, chkRowNames.Checked);
+        }
+
+        private void CSVExport_OnWrittenData(string text)
+        {
+            SetStatusText = text;
+        }
+
+        private void ExportXml()
+        {
+            _dsExecutedData.Tables[0].WriteXml(txtFilePath.Text);
+            SetStatusText = "Finished exporting to Xml file";
+        }
+
+        private void btnCancel_Click(object sender, EventArgs e)
+        {
+            Close();
+        }
+
+        private void rbtHtml_CheckedChanged(object sender, EventArgs e)
+        {
+            ChangeExtension("htm");
+        }
+
+        private void ChangeExtension(string extension)
+        {
+            if (!string.IsNullOrEmpty(txtFilePath.Text))
+            {
+                string p = txtFilePath.Text;
+                int idx = p.LastIndexOf(".");
+                p = p.Remove(idx);
+                p = p + "." + extension;
+                txtFilePath.Text = p;
+            }
+        }
+
+        private void rbtCsv_CheckedChanged(object sender, EventArgs e)
+        {
+            ChangeExtension("csv");
+        }
+
+        private void rbtXml_CheckedChanged(object sender, EventArgs e)
+        {
+            ChangeExtension("xml");
+        }
+    }
+}
\ No newline at end of file
Added +429 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/ExportWindow.Designer.cs b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/ExportWindow.Designer.cs
new file mode 100644
index 0000000..a065afb
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/ExportWindow.Designer.cs
@@ -0,0 +1,429 @@
+namespace MiniSqlQuery.Exports.Plugin
+{
+    partial class ExportWindow
+    {
+        /// <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(ExportWindow));
+            this.label1 = new System.Windows.Forms.Label();
+            this.txtFilePath = new System.Windows.Forms.TextBox();
+            this.button1 = new System.Windows.Forms.Button();
+            this.imageList1 = new System.Windows.Forms.ImageList(this.components);
+            this.rbtHtml = new System.Windows.Forms.RadioButton();
+            this.rbtCsv = new System.Windows.Forms.RadioButton();
+            this.rbtXml = new System.Windows.Forms.RadioButton();
+            this.btnCancel = new System.Windows.Forms.Button();
+            this.btnExport = new System.Windows.Forms.Button();
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.groupBox3 = new System.Windows.Forms.GroupBox();
+            this.chkRowNames = new System.Windows.Forms.CheckBox();
+            this.groupBox2 = new System.Windows.Forms.GroupBox();
+            this.txtRowBgAltColor = new System.Windows.Forms.TextBox();
+            this.label10 = new System.Windows.Forms.Label();
+            this.txtRowBgcolor = new System.Windows.Forms.TextBox();
+            this.label8 = new System.Windows.Forms.Label();
+            this.label9 = new System.Windows.Forms.Label();
+            this.txtHeaderBGColor = new System.Windows.Forms.TextBox();
+            this.label7 = new System.Windows.Forms.Label();
+            this.txtFontColor = new System.Windows.Forms.TextBox();
+            this.label6 = new System.Windows.Forms.Label();
+            this.label5 = new System.Windows.Forms.Label();
+            this.txtFontSize = new System.Windows.Forms.TextBox();
+            this.label4 = new System.Windows.Forms.Label();
+            this.txtFontFamily = new System.Windows.Forms.TextBox();
+            this.label3 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+            this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
+            this.groupBox1.SuspendLayout();
+            this.groupBox3.SuspendLayout();
+            this.groupBox2.SuspendLayout();
+            this.statusStrip1.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(12, 9);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(68, 13);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "Export to file:";
+            // 
+            // txtFilePath
+            // 
+            this.txtFilePath.Location = new System.Drawing.Point(15, 25);
+            this.txtFilePath.Name = "txtFilePath";
+            this.txtFilePath.Size = new System.Drawing.Size(428, 20);
+            this.txtFilePath.TabIndex = 1;
+            // 
+            // button1
+            // 
+            this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
+            this.button1.ImageKey = "VSFolder_open.bmp";
+            this.button1.ImageList = this.imageList1;
+            this.button1.Location = new System.Drawing.Point(449, 25);
+            this.button1.Name = "button1";
+            this.button1.Size = new System.Drawing.Size(27, 20);
+            this.button1.TabIndex = 2;
+            this.button1.UseVisualStyleBackColor = true;
+            this.button1.Click += new System.EventHandler(this.button1_Click);
+            // 
+            // imageList1
+            // 
+            this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
+            this.imageList1.TransparentColor = System.Drawing.Color.Magenta;
+            this.imageList1.Images.SetKeyName(0, "VSFolder_open.bmp");
+            // 
+            // rbtHtml
+            // 
+            this.rbtHtml.AutoSize = true;
+            this.rbtHtml.Checked = true;
+            this.rbtHtml.Location = new System.Drawing.Point(15, 51);
+            this.rbtHtml.Name = "rbtHtml";
+            this.rbtHtml.Size = new System.Drawing.Size(46, 17);
+            this.rbtHtml.TabIndex = 3;
+            this.rbtHtml.TabStop = true;
+            this.rbtHtml.Text = "Html";
+            this.rbtHtml.UseVisualStyleBackColor = true;
+            this.rbtHtml.CheckedChanged += new System.EventHandler(this.rbtHtml_CheckedChanged);
+            // 
+            // rbtCsv
+            // 
+            this.rbtCsv.AutoSize = true;
+            this.rbtCsv.Location = new System.Drawing.Point(77, 51);
+            this.rbtCsv.Name = "rbtCsv";
+            this.rbtCsv.Size = new System.Drawing.Size(43, 17);
+            this.rbtCsv.TabIndex = 4;
+            this.rbtCsv.Text = "Csv";
+            this.rbtCsv.UseVisualStyleBackColor = true;
+            this.rbtCsv.CheckedChanged += new System.EventHandler(this.rbtCsv_CheckedChanged);
+            // 
+            // rbtXml
+            // 
+            this.rbtXml.AutoSize = true;
+            this.rbtXml.Location = new System.Drawing.Point(126, 51);
+            this.rbtXml.Name = "rbtXml";
+            this.rbtXml.Size = new System.Drawing.Size(42, 17);
+            this.rbtXml.TabIndex = 5;
+            this.rbtXml.Text = "Xml";
+            this.rbtXml.UseVisualStyleBackColor = true;
+            this.rbtXml.CheckedChanged += new System.EventHandler(this.rbtXml_CheckedChanged);
+            // 
+            // btnCancel
+            // 
+            this.btnCancel.Location = new System.Drawing.Point(401, 359);
+            this.btnCancel.Name = "btnCancel";
+            this.btnCancel.Size = new System.Drawing.Size(75, 23);
+            this.btnCancel.TabIndex = 6;
+            this.btnCancel.Text = "Close";
+            this.btnCancel.UseVisualStyleBackColor = true;
+            this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
+            // 
+            // btnExport
+            // 
+            this.btnExport.Location = new System.Drawing.Point(320, 359);
+            this.btnExport.Name = "btnExport";
+            this.btnExport.Size = new System.Drawing.Size(75, 23);
+            this.btnExport.TabIndex = 7;
+            this.btnExport.Text = "Export";
+            this.btnExport.UseVisualStyleBackColor = true;
+            this.btnExport.Click += new System.EventHandler(this.btnExport_Click);
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Controls.Add(this.groupBox3);
+            this.groupBox1.Controls.Add(this.groupBox2);
+            this.groupBox1.Location = new System.Drawing.Point(15, 85);
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.Size = new System.Drawing.Size(461, 268);
+            this.groupBox1.TabIndex = 8;
+            this.groupBox1.TabStop = false;
+            this.groupBox1.Text = "Output settings";
+            // 
+            // groupBox3
+            // 
+            this.groupBox3.Controls.Add(this.chkRowNames);
+            this.groupBox3.Location = new System.Drawing.Point(6, 201);
+            this.groupBox3.Name = "groupBox3";
+            this.groupBox3.Size = new System.Drawing.Size(449, 54);
+            this.groupBox3.TabIndex = 1;
+            this.groupBox3.TabStop = false;
+            this.groupBox3.Text = "Csv";
+            // 
+            // chkRowNames
+            // 
+            this.chkRowNames.AutoSize = true;
+            this.chkRowNames.Checked = true;
+            this.chkRowNames.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.chkRowNames.Location = new System.Drawing.Point(9, 19);
+            this.chkRowNames.Name = "chkRowNames";
+            this.chkRowNames.Size = new System.Drawing.Size(145, 17);
+            this.chkRowNames.TabIndex = 0;
+            this.chkRowNames.Text = "Column names in first row";
+            this.chkRowNames.UseVisualStyleBackColor = true;
+            // 
+            // groupBox2
+            // 
+            this.groupBox2.Controls.Add(this.txtRowBgAltColor);
+            this.groupBox2.Controls.Add(this.label10);
+            this.groupBox2.Controls.Add(this.txtRowBgcolor);
+            this.groupBox2.Controls.Add(this.label8);
+            this.groupBox2.Controls.Add(this.label9);
+            this.groupBox2.Controls.Add(this.txtHeaderBGColor);
+            this.groupBox2.Controls.Add(this.label7);
+            this.groupBox2.Controls.Add(this.txtFontColor);
+            this.groupBox2.Controls.Add(this.label6);
+            this.groupBox2.Controls.Add(this.label5);
+            this.groupBox2.Controls.Add(this.txtFontSize);
+            this.groupBox2.Controls.Add(this.label4);
+            this.groupBox2.Controls.Add(this.txtFontFamily);
+            this.groupBox2.Controls.Add(this.label3);
+            this.groupBox2.Controls.Add(this.label2);
+            this.groupBox2.Location = new System.Drawing.Point(6, 19);
+            this.groupBox2.Name = "groupBox2";
+            this.groupBox2.Size = new System.Drawing.Size(449, 176);
+            this.groupBox2.TabIndex = 0;
+            this.groupBox2.TabStop = false;
+            this.groupBox2.Text = "Html";
+            // 
+            // txtRowBgAltColor
+            // 
+            this.txtRowBgAltColor.Location = new System.Drawing.Point(241, 131);
+            this.txtRowBgAltColor.Name = "txtRowBgAltColor";
+            this.txtRowBgAltColor.Size = new System.Drawing.Size(100, 20);
+            this.txtRowBgAltColor.TabIndex = 15;
+            this.txtRowBgAltColor.Text = "#F2F2F2";
+            // 
+            // label10
+            // 
+            this.label10.AutoSize = true;
+            this.label10.Location = new System.Drawing.Point(186, 134);
+            this.label10.Name = "label10";
+            this.label10.Size = new System.Drawing.Size(49, 13);
+            this.label10.TabIndex = 14;
+            this.label10.Text = "Alternate";
+            // 
+            // txtRowBgcolor
+            // 
+            this.txtRowBgcolor.Location = new System.Drawing.Point(62, 131);
+            this.txtRowBgcolor.Name = "txtRowBgcolor";
+            this.txtRowBgcolor.Size = new System.Drawing.Size(100, 20);
+            this.txtRowBgcolor.TabIndex = 13;
+            this.txtRowBgcolor.Text = "#FFFFFF";
+            // 
+            // label8
+            // 
+            this.label8.AutoSize = true;
+            this.label8.Location = new System.Drawing.Point(25, 134);
+            this.label8.Name = "label8";
+            this.label8.Size = new System.Drawing.Size(31, 13);
+            this.label8.TabIndex = 12;
+            this.label8.Text = "Color";
+            // 
+            // label9
+            // 
+            this.label9.AutoSize = true;
+            this.label9.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label9.Location = new System.Drawing.Point(6, 109);
+            this.label9.Name = "label9";
+            this.label9.Size = new System.Drawing.Size(32, 13);
+            this.label9.TabIndex = 11;
+            this.label9.Text = "Row";
+            // 
+            // txtHeaderBGColor
+            // 
+            this.txtHeaderBGColor.Location = new System.Drawing.Point(62, 82);
+            this.txtHeaderBGColor.Name = "txtHeaderBGColor";
+            this.txtHeaderBGColor.Size = new System.Drawing.Size(100, 20);
+            this.txtHeaderBGColor.TabIndex = 10;
+            this.txtHeaderBGColor.Text = "#CAE1FF";
+            // 
+            // label7
+            // 
+            this.label7.AutoSize = true;
+            this.label7.Location = new System.Drawing.Point(25, 85);
+            this.label7.Name = "label7";
+            this.label7.Size = new System.Drawing.Size(31, 13);
+            this.label7.TabIndex = 9;
+            this.label7.Text = "Color";
+            // 
+            // txtFontColor
+            // 
+            this.txtFontColor.Location = new System.Drawing.Point(319, 35);
+            this.txtFontColor.Name = "txtFontColor";
+            this.txtFontColor.Size = new System.Drawing.Size(100, 20);
+            this.txtFontColor.TabIndex = 8;
+            this.txtFontColor.Text = "#000000";
+            // 
+            // label6
+            // 
+            this.label6.AutoSize = true;
+            this.label6.Location = new System.Drawing.Point(282, 38);
+            this.label6.Name = "label6";
+            this.label6.Size = new System.Drawing.Size(31, 13);
+            this.label6.TabIndex = 7;
+            this.label6.Text = "Color";
+            // 
+            // label5
+            // 
+            this.label5.AutoSize = true;
+            this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label5.Location = new System.Drawing.Point(6, 16);
+            this.label5.Name = "label5";
+            this.label5.Size = new System.Drawing.Size(32, 13);
+            this.label5.TabIndex = 6;
+            this.label5.Text = "Font";
+            // 
+            // txtFontSize
+            // 
+            this.txtFontSize.Location = new System.Drawing.Point(223, 35);
+            this.txtFontSize.Name = "txtFontSize";
+            this.txtFontSize.Size = new System.Drawing.Size(53, 20);
+            this.txtFontSize.TabIndex = 5;
+            this.txtFontSize.Text = "12px";
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Location = new System.Drawing.Point(168, 38);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(49, 13);
+            this.label4.TabIndex = 4;
+            this.label4.Text = "Font size";
+            // 
+            // txtFontFamily
+            // 
+            this.txtFontFamily.Location = new System.Drawing.Point(62, 35);
+            this.txtFontFamily.Name = "txtFontFamily";
+            this.txtFontFamily.Size = new System.Drawing.Size(100, 20);
+            this.txtFontFamily.TabIndex = 3;
+            this.txtFontFamily.Text = "Verdana";
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(20, 38);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(36, 13);
+            this.label3.TabIndex = 2;
+            this.label3.Text = "Family";
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label2.Location = new System.Drawing.Point(6, 60);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(48, 13);
+            this.label2.TabIndex = 0;
+            this.label2.Text = "Header";
+            // 
+            // statusStrip1
+            // 
+            this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripStatusLabel1});
+            this.statusStrip1.Location = new System.Drawing.Point(0, 390);
+            this.statusStrip1.Name = "statusStrip1";
+            this.statusStrip1.Size = new System.Drawing.Size(488, 22);
+            this.statusStrip1.TabIndex = 9;
+            this.statusStrip1.Text = "statusStrip1";
+            // 
+            // toolStripStatusLabel1
+            // 
+            this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
+            this.toolStripStatusLabel1.Size = new System.Drawing.Size(473, 17);
+            this.toolStripStatusLabel1.Spring = true;
+            this.toolStripStatusLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            // 
+            // ExportWindow
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(488, 412);
+            this.Controls.Add(this.statusStrip1);
+            this.Controls.Add(this.groupBox1);
+            this.Controls.Add(this.btnExport);
+            this.Controls.Add(this.btnCancel);
+            this.Controls.Add(this.rbtXml);
+            this.Controls.Add(this.rbtCsv);
+            this.Controls.Add(this.rbtHtml);
+            this.Controls.Add(this.button1);
+            this.Controls.Add(this.txtFilePath);
+            this.Controls.Add(this.label1);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+            this.Name = "ExportWindow";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+            this.Text = "ExportWindow";
+            this.Load += new System.EventHandler(this.ExportWindow_Load);
+            this.groupBox1.ResumeLayout(false);
+            this.groupBox3.ResumeLayout(false);
+            this.groupBox3.PerformLayout();
+            this.groupBox2.ResumeLayout(false);
+            this.groupBox2.PerformLayout();
+            this.statusStrip1.ResumeLayout(false);
+            this.statusStrip1.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.TextBox txtFilePath;
+        private System.Windows.Forms.Button button1;
+        private System.Windows.Forms.RadioButton rbtHtml;
+        private System.Windows.Forms.RadioButton rbtCsv;
+        private System.Windows.Forms.RadioButton rbtXml;
+        private System.Windows.Forms.Button btnCancel;
+        private System.Windows.Forms.Button btnExport;
+        private System.Windows.Forms.ImageList imageList1;
+        private System.Windows.Forms.GroupBox groupBox1;
+        private System.Windows.Forms.GroupBox groupBox3;
+        private System.Windows.Forms.GroupBox groupBox2;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.TextBox txtRowBgAltColor;
+        private System.Windows.Forms.Label label10;
+        private System.Windows.Forms.TextBox txtRowBgcolor;
+        private System.Windows.Forms.Label label8;
+        private System.Windows.Forms.Label label9;
+        private System.Windows.Forms.TextBox txtHeaderBGColor;
+        private System.Windows.Forms.Label label7;
+        private System.Windows.Forms.TextBox txtFontColor;
+        private System.Windows.Forms.Label label6;
+        private System.Windows.Forms.Label label5;
+        private System.Windows.Forms.TextBox txtFontSize;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.TextBox txtFontFamily;
+        private System.Windows.Forms.CheckBox chkRowNames;
+        private System.Windows.Forms.StatusStrip statusStrip1;
+        private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
+    }
+}
\ No newline at end of file
Added +153 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/ExportWindow.resx b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/ExportWindow.resx
new file mode 100644
index 0000000..8831e4a
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/ExportWindow.resx
@@ -0,0 +1,153 @@
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACE
+        BAAAAk1TRnQBSQFMAwEBAAEEAQABBAEAARABAAEQAQAE/wEZAQAI/wFCAU0BNgcAATYDAAEoAwABQAMA
+        ARADAAEBAQABGAYAAQz/AJMAAXUBhAGPAWYBgAGPAWABeQGHAVcBbgF7AU4BYgFvAUQBVgFhATkBSAFS
+        AS4BOgFDASUBLgE1ARsBIgEpARQBGQEeAQ4BEgEWAQ4BEwEYmQABdwGHAZIBiQGhAasBagGyAdQBAAGP
+        Ac0BAAGPAc0BAAGPAc0BBAGMAccBCAGIAb4BDwGCAbQBFQF8AakBGwF3AZ8BHwFyAZYBIgFLAVwBmwGt
+        AbWWAAF6AYoBlQF+Ab4B0wGKAaQBrgF+AdwB/wFfAc8B/wFVAcsB/wFMAcQB+gFBAbwB9QE3AbMB8AEu
+        AaoB6wEkAaAB5QETAYwB1AEjAWcBgAFeAWkBbZYAAX0BjgGYAXkB0gHsAYsBpAGtAYkBwgHOAXEB2AH/
+        AWUB0wH/AVwBzgH/AVEByQH+AUkBwQH6AT8BuQH1ATQBsAHuASkBqAHpARABhQHNASIBSwFbAbIBwAHG
+        kwABgAGRAZwBgQHXAe8BfQHFAeABjAGmAbABgAHdAf4BaAHTAf8BZwHUAf8BYgHRAf8BWAHNAf8BTgHH
+        AfwBRgG+AfcBOwG2AfIBMQGsAewBJQFpAYEBegGVAaGTAAGDAZUBnwGJAdwB8QGMAeIB/wGNAagBsQGM
+        AboBxwF0AdgB/wFnAdQB/wFnAdQB/wFnAdQB/wFfAdAB/wFUAc0B/wFLAcUB/AFBAbsB9wEuAaIB2wFR
+        AWcBdAGyAcABxpAAAYYBmgGjAZIB4QHyAZgB6AH9AYABxAHeAY4BpwGwAYEB3gH9AYQB4AH/AYQB4AH/
+        AYQB4AH/AYQB4AH/AYEB3wH/AXsB3QH/AXQB2AH/AWsB1gH/AVYBqQHRAY8BmwGkkAABiAGcAaUBmgHm
+        AfMBnwHrAfsBmAHoAf4BiwGsAbkBiwGsAbkBigGqAbcBiAGmAbMBhgGjAa8BgwGfAaoBgQGaAaYBfwGV
+        AaEBfAGRAZ0BegGOAZkBeQGLAZUBdwGIAZOQAAGLAaABqAGgAeoB9gGmAe4B+QGfAesB+wGYAegB/gF6
+        AdoB/wFnAdQB/wFnAdQB/wFnAdQB/wFnAdQB/wFnAdQB/wFnAdQB/wF3AYgBk5kAAY4BogGrAacB7gH2
+        AasB8AH3AaYB7gH5AZ8B6wH7AZgB6AH9AXEB1AH7AYkBngGnAYYBmQGjAYIBlAGfAX4BkAGaAXoBjAGX
+        AXcBiAGTmQABjwGkAawBoAHSAdoBqwHwAfcBqwHwAfcBpgHuAfkBnwHrAfsBjQGhAaoB1QHcAeCoAAHa
+        Ad4B4QGPAaQBrAGPAaQBrAGPAaQBrAGPAaQBrAGPAaQBrAHVAdwB4P8A/wAtAAFCAU0BPgcAAT4DAAEo
+        AwABQAMAARADAAEBAQABAQUAAYAXAAP/AQAC/wYAAv8HAAEHBwABAwcAAQMHAAEBBwABAR8AAQcHAAEH
+        BwAB/wYAAQEB/wYAAv8GAAL/BgAL
+</value>
+  </data>
+  <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>122, 17</value>
+  </metadata>
+</root>
\ No newline at end of file
Added +17 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Loader.cs b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Loader.cs
new file mode 100644
index 0000000..1fa65f6
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Loader.cs
@@ -0,0 +1,17 @@
+using MiniSqlQuery.Core;
+
+namespace MiniSqlQuery.Exports.Plugin
+{
+    public class Loader : PluginLoaderBase
+    {
+        public Loader()
+            : base("Exports for MiniSqlQuery", "Enables exporting of data")
+        {
+        }
+
+        public override void InitializePlugIn()
+        {
+            Services.HostWindow.AddPluginCommand<Commands.ShowExportWindowCommand>();
+        }
+    }
+}
\ No newline at end of file
Added +113 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/MiniSqlQuery.Exports.Plugin.csproj b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/MiniSqlQuery.Exports.Plugin.csproj
new file mode 100644
index 0000000..ba9fb74
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/MiniSqlQuery.Exports.Plugin.csproj
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{BADDFE58-B855-4A88-A131-BE4066F080E8}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>MiniSqlQuery.Exports.Plugin</RootNamespace>
+    <AssemblyName>MiniSqlQuery.Exports.Plugin</AssemblyName>
+    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\Build\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </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>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release - No Tests|AnyCPU'">
+    <OutputPath>bin\Release - No Tests\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <LangVersion>7.3</LangVersion>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Commands\ShowExportWindowCommand.cs" />
+    <Compile Include="ExportWindow.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="ExportWindow.Designer.cs">
+      <DependentUpon>ExportWindow.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Export\CSVExport.cs" />
+    <Compile Include="Export\HtmlExport.cs" />
+    <Compile Include="Export\HtmlExportFormat.cs" />
+    <Compile Include="Loader.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="ExportWindow.resx">
+      <DependentUpon>ExportWindow.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\Folder_Open.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\MiniSqlQuery.Core\MiniSqlQuery.Core.csproj">
+      <Project>{B819CF6A-B5FD-4E85-842D-FD855F856A5A}</Project>
+      <Name>MiniSqlQuery.Core</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>
+  -->
+</Project>
\ No newline at end of file
Added +40 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Properties/AssemblyInfo.cs b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..1424e3c
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Properties/AssemblyInfo.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+
+[assembly: AssemblyTitle("MiniSqlQuery.Exports.Plugin")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Home")]
+[assembly: AssemblyProduct("MiniSqlQuery.Exports.Plugin")]
+[assembly: AssemblyCopyright("Copyright © Home 2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+
+[assembly: Guid("41c446b6-7194-40de-865b-6255393ad6ce")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
\ No newline at end of file
Added +73 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Properties/Resources.Designer.cs b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..5b268f2
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Properties/Resources.Designer.cs
@@ -0,0 +1,73 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace MiniSqlQuery.Exports.Plugin.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.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>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </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("MiniSqlQuery.Exports.Plugin.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        internal static System.Drawing.Bitmap Folder_Open {
+            get {
+                object obj = ResourceManager.GetObject("Folder_Open", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+    }
+}
Added +124 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Properties/Resources.resx b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Properties/Resources.resx
new file mode 100644
index 0000000..345583e
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Properties/Resources.resx
@@ -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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="Folder_Open" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Folder_Open.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+</root>
\ No newline at end of file
Added +0 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Resources/Folder_Open.png b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Resources/Folder_Open.png
new file mode 100644
index 0000000..5555c85
Binary files /dev/null and b/minisqlquery-master/src/Contrib/MiniSqlQuery.Exports.Plugin/Resources/Folder_Open.png differ
Added +18 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Commands/RunExportSqlCe40Command.cs b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Commands/RunExportSqlCe40Command.cs
new file mode 100644
index 0000000..2450129
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Commands/RunExportSqlCe40Command.cs
@@ -0,0 +1,18 @@
+using MiniSqlQuery.ExternalTools.Plugin.Properties;
+
+namespace MiniSqlQuery.ExternalTools.Plugin.Commands
+{
+    public class RunExportSqlCe40Command : RunExportSqlCeCommandBase
+    {
+        public RunExportSqlCe40Command()
+            : base("Run 'Export SQL CE 4.0' Tool")
+        {
+            SmallImage = Resources.data_out.ToBitmap();
+        }
+
+        public override void Execute()
+        {
+            RunExportSqlCe("ExportSqlCE40.exe");
+        }
+    }
+}
\ No newline at end of file
Added +18 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Commands/RunExportSqlCeCommand.cs b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Commands/RunExportSqlCeCommand.cs
new file mode 100644
index 0000000..a79bdf3
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Commands/RunExportSqlCeCommand.cs
@@ -0,0 +1,18 @@
+using MiniSqlQuery.ExternalTools.Plugin.Properties;
+
+namespace MiniSqlQuery.ExternalTools.Plugin.Commands
+{
+    public class RunExportSqlCeCommand : RunExportSqlCeCommandBase
+    {
+        public RunExportSqlCeCommand()
+            : base("Run 'Export SQL CE 3.5' Tool")
+        {
+            SmallImage = Resources.data_out.ToBitmap();
+        }
+
+        public override void Execute()
+        {
+            RunExportSqlCe("ExportSqlCE.exe");
+        }
+    }
+}
\ No newline at end of file
Added +73 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Commands/RunExportSqlCeCommandBase.cs b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Commands/RunExportSqlCeCommandBase.cs
new file mode 100644
index 0000000..ccc4daa
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Commands/RunExportSqlCeCommandBase.cs
@@ -0,0 +1,73 @@
+using System;
+using System.Diagnostics;
+using System.IO;
+using System.Text;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.ExternalTools.Plugin.Commands
+{
+    public class RunExportSqlCeCommandBase : CommandBase
+    {
+        public RunExportSqlCeCommandBase(string name)
+            : base(name)
+        {
+        }
+
+        protected void RunExportSqlCe(string fileName)
+        {
+            string file = Path.GetTempFileName() + ".sql";
+            string conn = Settings.ConnectionDefinition.ConnectionString.Replace(@"""", @"\""");
+            string arguments = string.Format("\"{0}\" \"{1}\"", conn, file);
+
+            var tool = new Process();
+            tool.StartInfo.FileName = fileName;
+            tool.StartInfo.Arguments = arguments;
+            tool.StartInfo.UseShellExecute = false;
+            tool.StartInfo.RedirectStandardOutput = true;
+            tool.StartInfo.RedirectStandardError = true;
+
+            if (tool.Start())
+            {
+                string output = tool.StandardOutput.ReadToEnd();
+                string err = tool.StandardError.ReadToEnd();
+
+                if (!string.IsNullOrEmpty(err))
+                {
+                    output = "ERROR:" + Environment.NewLine + err + Environment.NewLine + output;
+                }
+
+                if (File.Exists(file))
+                {
+                    IEditor editor = Services.Resolve<IFileEditorResolver>().ResolveEditorInstance(file);
+                    editor.FileName = file;
+                    editor.LoadFile();
+                    HostWindow.DisplayDockedForm(editor as DockContent);
+                }
+                else
+                {
+                    var sb = new StringBuilder();
+                    sb.AppendLine("Error generating the output file.");
+                    sb.AppendLine("Process Info:");
+                    sb.AppendFormat("  File Name: {0}", tool.StartInfo.FileName);
+                    sb.AppendLine();
+                    sb.AppendFormat("  Arguments: {0}", tool.StartInfo.Arguments);
+                    sb.AppendLine();
+                    sb.AppendLine(output);
+                    output = sb.ToString();
+                }
+
+                if (!string.IsNullOrEmpty(output))
+                {
+                    HostWindow.DisplaySimpleMessageBox(null, output, fileName + " Output");
+                }
+            }
+        }
+
+        public override void Execute()
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
\ No newline at end of file
Added +14 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Commands/ShowSiteForExportSqlCeCommand.cs b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Commands/ShowSiteForExportSqlCeCommand.cs
new file mode 100644
index 0000000..f5cf053
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Commands/ShowSiteForExportSqlCeCommand.cs
@@ -0,0 +1,14 @@
+using MiniSqlQuery.Core.Commands;
+using MiniSqlQuery.ExternalTools.Plugin.Properties;
+
+namespace MiniSqlQuery.ExternalTools.Plugin.Commands
+{
+    public class ShowSiteForExportSqlCeCommand
+        : ShowUrlCommand
+    {
+        public ShowSiteForExportSqlCeCommand()
+            : base("&Export SQL CE site (https://github.com/ErikEJ/SqlCeToolbox/)", "https://github.com/ErikEJ/SqlCeToolbox/", Resources.data_out.ToBitmap())
+        {
+        }
+    }
+}
\ No newline at end of file
Added +0 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/data_out.ico b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/data_out.ico
new file mode 100644
index 0000000..90cd676
Binary files /dev/null and b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/data_out.ico differ
Added +20 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Loader.cs b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Loader.cs
new file mode 100644
index 0000000..5230f62
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Loader.cs
@@ -0,0 +1,20 @@
+using MiniSqlQuery.Core;
+using MiniSqlQuery.ExternalTools.Plugin.Commands;
+
+namespace MiniSqlQuery.ExternalTools.Plugin
+{
+    public class Loader : PluginLoaderBase
+    {
+        public Loader()
+            : base("Run External Tools Wrapper", "A plugin that wraps executing external tools.")
+        {
+        }
+
+        public override void InitializePlugIn()
+        {
+            Services.HostWindow.AddPluginCommand<RunExportSqlCeCommand>();
+            Services.HostWindow.AddPluginCommand<RunExportSqlCe40Command>();
+            Services.HostWindow.AddPluginCommand<ShowSiteForExportSqlCeCommand>();
+        }
+    }
+}
\ No newline at end of file
Added +111 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/MiniSqlQuery.ExternalTools.Plugin.csproj b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/MiniSqlQuery.ExternalTools.Plugin.csproj
new file mode 100644
index 0000000..476233c
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/MiniSqlQuery.ExternalTools.Plugin.csproj
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{803B1BA0-361A-47B9-A8EE-B790CD05B827}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>MiniSqlQuery.ExternalTools.Plugin</RootNamespace>
+    <AssemblyName>MiniSqlQuery.ExternalTools.Plugin</AssemblyName>
+    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <ApplicationIcon>data_out.ico</ApplicationIcon>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\Build\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\..\Build\Debug</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release - No Tests|AnyCPU'">
+    <OutputPath>bin\Release - No Tests\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <LangVersion>7.3</LangVersion>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="ExportSqlCE, Version=2.0.1.0, Culture=neutral, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\References\ExportSqlCE.exe</HintPath>
+    </Reference>
+    <Reference Include="ExportSqlCE40">
+      <HintPath>..\References\ExportSqlCE40.exe</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Commands\RunExportSqlCe40Command.cs" />
+    <Compile Include="Commands\RunExportSqlCeCommand.cs" />
+    <Compile Include="Commands\RunExportSqlCeCommandBase.cs" />
+    <Compile Include="Commands\ShowSiteForExportSqlCeCommand.cs" />
+    <Compile Include="Loader.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\MiniSqlQuery.Core\MiniSqlQuery.Core.csproj">
+      <Project>{B819CF6A-B5FD-4E85-842D-FD855F856A5A}</Project>
+      <Name>MiniSqlQuery.Core</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="data_out.ico" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="DockPanelSuite">
+      <Version>2.9.0</Version>
+    </PackageReference>
+  </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>
+  -->
+</Project>
\ No newline at end of file
Added +26 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Properties/AssemblyInfo.cs b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..ae275c8
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Properties/AssemblyInfo.cs
@@ -0,0 +1,26 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("MiniSqlQuery.ExternalTools.Plugin")]
+[assembly: AssemblyDescription("A Mini SQL Query Plugin for running external tools")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompanyAttribute("Paul Kohler")]
+[assembly: AssemblyCopyrightAttribute("Copyright (C) 2005-2009 Paul Kohler")]
+[assembly: AssemblyProduct("MiniSqlQuery.ExternalTools.Plugin")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: ComVisible(false)]
+[assembly: Guid("2a584097-2e16-466e-a176-c1206761ad25")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Added +73 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Properties/Resources.Designer.cs b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..8033dc0
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Properties/Resources.Designer.cs
@@ -0,0 +1,73 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace MiniSqlQuery.ExternalTools.Plugin.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.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>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </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("MiniSqlQuery.ExternalTools.Plugin.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+        /// </summary>
+        internal static System.Drawing.Icon data_out {
+            get {
+                object obj = ResourceManager.GetObject("data_out", resourceCulture);
+                return ((System.Drawing.Icon)(obj));
+            }
+        }
+    }
+}
Added +124 -0
diff --git a/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Properties/Resources.resx b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Properties/Resources.resx
new file mode 100644
index 0000000..c998559
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/MiniSqlQuery.ExternalTools.Plugin/Properties/Resources.resx
@@ -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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="data_out" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\data_out.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+</root>
\ No newline at end of file
Added +0 -0
diff --git a/minisqlquery-master/src/Contrib/packages/ICSharpCode.TextEditor.3.2.1.6466/ICSharpCode.TextEditor.3.2.1.6466.nupkg b/minisqlquery-master/src/Contrib/packages/ICSharpCode.TextEditor.3.2.1.6466/ICSharpCode.TextEditor.3.2.1.6466.nupkg
new file mode 100644
index 0000000..f28d65b
Binary files /dev/null and b/minisqlquery-master/src/Contrib/packages/ICSharpCode.TextEditor.3.2.1.6466/ICSharpCode.TextEditor.3.2.1.6466.nupkg differ
Added +0 -0
diff --git a/minisqlquery-master/src/Contrib/packages/ICSharpCode.TextEditor.3.2.1.6466/lib/Net20/ICSharpCode.TextEditor.dll b/minisqlquery-master/src/Contrib/packages/ICSharpCode.TextEditor.3.2.1.6466/lib/Net20/ICSharpCode.TextEditor.dll
new file mode 100644
index 0000000..47aff41
Binary files /dev/null and b/minisqlquery-master/src/Contrib/packages/ICSharpCode.TextEditor.3.2.1.6466/lib/Net20/ICSharpCode.TextEditor.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/.signature.p7s b/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/.signature.p7s
new file mode 100644
index 0000000..10f091f
Binary files /dev/null and b/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/.signature.p7s differ
Added +0 -0
diff --git a/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/lib/net45/Ninject.dll b/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/lib/net45/Ninject.dll
new file mode 100644
index 0000000..10747f9
Binary files /dev/null and b/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/lib/net45/Ninject.dll differ
Added +6786 -0
diff --git a/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/lib/net45/Ninject.xml b/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/lib/net45/Ninject.xml
new file mode 100644
index 0000000..7abcee9
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/lib/net45/Ninject.xml
@@ -0,0 +1,6786 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>Ninject</name>
+    </assembly>
+    <members>
+        <member name="T:Ninject.ActivationException">
+            <summary>
+            Indicates that an error occurred during activation of an instance.
+            </summary>
+        </member>
+        <member name="M:Ninject.ActivationException.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.ActivationException"/> class.
+            </summary>
+        </member>
+        <member name="M:Ninject.ActivationException.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.ActivationException"/> class.
+            </summary>
+            <param name="message">The exception message.</param>
+        </member>
+        <member name="M:Ninject.ActivationException.#ctor(System.String,System.Exception)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.ActivationException"/> class.
+            </summary>
+            <param name="message">The exception message.</param>
+            <param name="innerException">The inner exception.</param>
+        </member>
+        <member name="M:Ninject.ActivationException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.ActivationException"/> class.
+            </summary>
+            <param name="info">The serialized object data.</param>
+            <param name="context">The serialization context.</param>
+        </member>
+        <member name="T:Ninject.Activation.Blocks.ActivationBlock">
+            <summary>
+            A block used for deterministic disposal of activated instances. When the block is
+            disposed, all instances activated via it will be deactivated.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Blocks.ActivationBlock.#ctor(Ninject.Syntax.IResolutionRoot)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Blocks.ActivationBlock"/> class.
+            </summary>
+            <param name="parent">The parent resolution root.</param>
+        </member>
+        <member name="P:Ninject.Activation.Blocks.ActivationBlock.Parent">
+            <summary>
+            Gets the parent resolution root (usually the kernel).
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Blocks.ActivationBlock.Inject(System.Object,Ninject.Parameters.IParameter[])">
+            <summary>
+            Injects the specified existing instance, without managing its lifecycle.
+            </summary>
+            <param name="instance">The instance to inject.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+        </member>
+        <member name="M:Ninject.Activation.Blocks.ActivationBlock.CanResolve(Ninject.Activation.IRequest)">
+            <summary>
+            Determines whether the specified request can be resolved.
+            </summary>
+            <param name="request">The request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Blocks.ActivationBlock.CanResolve(Ninject.Activation.IRequest,System.Boolean)">
+            <summary>
+            Determines whether the specified request can be resolved.
+            </summary>
+            <param name="request">The request.</param>
+            <param name="ignoreImplicitBindings">if set to <c>true</c> implicit bindings are ignored.</param>
+            <returns>
+                <c>True</c> if the request can be resolved; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.Activation.Blocks.ActivationBlock.Resolve(Ninject.Activation.IRequest)">
+            <summary>
+            Resolves instances for the specified request. The instances are not actually resolved
+            until a consumer iterates over the enumerator.
+            </summary>
+            <param name="request">The request to resolve.</param>
+            <returns>An enumerator of instances that match the request.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Blocks.ActivationBlock.CreateRequest(System.Type,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},System.Collections.Generic.IEnumerable{Ninject.Parameters.IParameter},System.Boolean,System.Boolean)">
+            <summary>
+            Creates a request for the specified service.
+            </summary>
+            <param name="service">The service that is being requested.</param>
+            <param name="constraint">The constraint to apply to the bindings to determine if they match the request.</param>
+            <param name="parameters">The parameters to pass to the resolution.</param>
+            <param name="isOptional"><c>True</c> if the request is optional; otherwise, <c>false</c>.</param>
+            <param name="isUnique"><c>True</c> if the request should return a unique result; otherwise, <c>false</c>.</param>
+            <returns>The created request.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Blocks.ActivationBlock.Release(System.Object)">
+            <summary>
+            Deactivates and releases the specified instance if it is currently managed by Ninject.
+            </summary>
+            <param name="instance">The instance to release.</param>
+            <returns><see langword="True"/> if the instance was found and released; otherwise <see langword="false"/>.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Blocks.IActivationBlock">
+            <summary>
+            A block used for deterministic disposal of activated instances. When the block is
+            disposed, all instances activated via it will be deactivated.
+            </summary>
+        </member>
+        <member name="T:Ninject.Activation.Caching.ActivationCache">
+            <summary>
+            Stores the objects that were activated
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Caching.ActivationCache.activatedObjects">
+            <summary>
+            The objects that were activated as reference equal weak references.
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Caching.ActivationCache.deactivatedObjects">
+            <summary>
+            The objects that were activated as reference equal weak references.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ActivationCache.#ctor(Ninject.Activation.Caching.ICachePruner)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Caching.ActivationCache"/> class.
+            </summary>
+            <param name="cachePruner">The cache pruner.</param>
+        </member>
+        <member name="P:Ninject.Activation.Caching.ActivationCache.ActivatedObjectCount">
+            <summary>
+            Gets the activated object count.
+            </summary>
+            <value>The activated object count.</value>
+        </member>
+        <member name="P:Ninject.Activation.Caching.ActivationCache.DeactivatedObjectCount">
+            <summary>
+            Gets the deactivated object count.
+            </summary>
+            <value>The deactivated object count.</value>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ActivationCache.Clear">
+            <summary>
+            Clears the cache.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ActivationCache.AddActivatedInstance(System.Object)">
+            <summary>
+            Adds an activated instance.
+            </summary>
+            <param name="instance">The instance to be added.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ActivationCache.AddDeactivatedInstance(System.Object)">
+            <summary>
+            Adds an deactivated instance.
+            </summary>
+            <param name="instance">The instance to be added.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ActivationCache.IsActivated(System.Object)">
+            <summary>
+            Determines whether the specified instance is activated.
+            </summary>
+            <param name="instance">The instance.</param>
+            <returns>
+                <c>true</c> if the specified instance is activated; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ActivationCache.IsDeactivated(System.Object)">
+            <summary>
+            Determines whether the specified instance is deactivated.
+            </summary>
+            <param name="instance">The instance.</param>
+            <returns>
+                <c>true</c> if the specified instance is deactivated; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ActivationCache.Prune">
+            <summary>
+            Prunes this instance.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ActivationCache.RemoveDeadObjects(System.Collections.Generic.HashSet{System.Object})">
+            <summary>
+            Removes all dead objects.
+            </summary>
+            <param name="objects">The objects collection to be freed of dead objects.</param>
+        </member>
+        <member name="T:Ninject.Activation.Caching.Cache">
+            <summary>
+            Tracks instances for re-use in certain scopes.
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Caching.Cache.entries">
+            <summary>
+            Contains all cached instances.
+            This is a dictionary of scopes to a multimap for bindings to cache entries.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.#ctor(Ninject.Activation.IPipeline,Ninject.Activation.Caching.ICachePruner)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Caching.Cache"/> class.
+            </summary>
+            <param name="pipeline">The pipeline component.</param>
+            <param name="cachePruner">The cache pruner component.</param>
+        </member>
+        <member name="P:Ninject.Activation.Caching.Cache.Pipeline">
+            <summary>
+            Gets the pipeline component.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Caching.Cache.Count">
+            <summary>
+            Gets the number of entries currently stored in the cache.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.Dispose(System.Boolean)">
+            <summary>
+            Releases resources held by the object.
+            </summary>
+            <param name="disposing"><c>True</c> if called manually, otherwise by GC.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.Remember(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Stores the specified context in the cache.
+            </summary>
+            <param name="context">The context to store.</param>
+            <param name="reference">The instance reference.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.TryGet(Ninject.Activation.IContext)">
+            <summary>
+            Tries to retrieve an instance to re-use in the specified context.
+            </summary>
+            <param name="context">The context that is being activated.</param>
+            <returns>The instance for re-use, or <see langword="null"/> if none has been stored.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.Release(System.Object)">
+            <summary>
+            Deactivates and releases the specified instance from the cache.
+            </summary>
+            <param name="instance">The instance to release.</param>
+            <returns><see langword="True"/> if the instance was found and released; otherwise <see langword="false"/>.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.Prune">
+            <summary>
+            Removes instances from the cache which should no longer be re-used.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.Clear(System.Object)">
+            <summary>
+            Immediately deactivates and removes all instances in the cache that are owned by
+            the specified scope.
+            </summary>
+            <param name="scope">The scope whose instances should be deactivated.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.Clear">
+            <summary>
+            Immediately deactivates and removes all instances in the cache, regardless of scope.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.GetAllBindingEntries(Ninject.Infrastructure.Multimap{Ninject.Planning.Bindings.IBindingConfiguration,Ninject.Activation.Caching.Cache.CacheEntry})">
+            <summary>
+            Gets all entries for a binding within the selected scope.
+            </summary>
+            <param name="bindings">The bindings.</param>
+            <returns>All bindings of a binding.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.GetAllCacheEntries">
+            <summary>
+            Gets all cache entries.
+            </summary>
+            <returns>Returns all cache entries.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.Forget(System.Collections.Generic.IEnumerable{Ninject.Activation.Caching.Cache.CacheEntry})">
+            <summary>
+            Forgets the specified cache entries.
+            </summary>
+            <param name="cacheEntries">The cache entries.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.Forget(Ninject.Activation.Caching.Cache.CacheEntry)">
+            <summary>
+            Forgets the specified entry.
+            </summary>
+            <param name="entry">The entry.</param>
+        </member>
+        <member name="T:Ninject.Activation.Caching.Cache.CacheEntry">
+            <summary>
+            An entry in the cache.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.CacheEntry.#ctor(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Caching.Cache.CacheEntry"/> class.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">The instance reference.</param>
+        </member>
+        <member name="P:Ninject.Activation.Caching.Cache.CacheEntry.Context">
+            <summary>
+            Gets the context of the instance.
+            </summary>
+            <value>The context.</value>
+        </member>
+        <member name="P:Ninject.Activation.Caching.Cache.CacheEntry.Reference">
+            <summary>
+            Gets the instance reference.
+            </summary>
+            <value>The instance reference.</value>
+        </member>
+        <member name="T:Ninject.Activation.Caching.GarbageCollectionCachePruner">
+            <summary>
+            Uses a <see cref="T:System.Threading.Timer"/> and some <see cref="T:System.WeakReference"/> magic to poll
+            the garbage collector to see if it has run.
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Caching.GarbageCollectionCachePruner.indicator">
+            <summary>
+            indicator for if GC has been run.
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Caching.GarbageCollectionCachePruner.caches">
+            <summary>
+            The caches that are being pruned.
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Caching.GarbageCollectionCachePruner.timer">
+            <summary>
+            The timer used to trigger the cache pruning.
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Caching.GarbageCollectionCachePruner.stop">
+            <summary>
+            The flag to indicate whether the cache pruning is stopped or not.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.GarbageCollectionCachePruner.Dispose(System.Boolean)">
+            <summary>
+            Releases resources held by the object.
+            </summary>
+            <param name="disposing"><c>True</c> if called manually, otherwise by GC.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.GarbageCollectionCachePruner.Start(Ninject.Activation.Caching.IPruneable)">
+            <summary>
+            Starts pruning the specified pruneable based on the rules of the pruner.
+            </summary>
+            <param name="pruneable">The pruneable that will be pruned.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.GarbageCollectionCachePruner.Stop">
+            <summary>
+            Stops pruning.
+            </summary>
+        </member>
+        <member name="T:Ninject.Activation.Caching.IActivationCache">
+            <summary>
+            Stores the objects that were activated
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.IActivationCache.Clear">
+            <summary>
+            Clears the cache.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.IActivationCache.AddActivatedInstance(System.Object)">
+            <summary>
+            Adds an activated instance.
+            </summary>
+            <param name="instance">The instance to be added.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.IActivationCache.AddDeactivatedInstance(System.Object)">
+            <summary>
+            Adds an deactivated instance.
+            </summary>
+            <param name="instance">The instance to be added.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.IActivationCache.IsActivated(System.Object)">
+            <summary>
+            Determines whether the specified instance is activated.
+            </summary>
+            <param name="instance">The instance.</param>
+            <returns>
+                <c>true</c> if the specified instance is activated; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.IActivationCache.IsDeactivated(System.Object)">
+            <summary>
+            Determines whether the specified instance is deactivated.
+            </summary>
+            <param name="instance">The instance.</param>
+            <returns>
+                <c>true</c> if the specified instance is deactivated; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="T:Ninject.Activation.Caching.ICache">
+            <summary>
+            Tracks instances for re-use in certain scopes.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Caching.ICache.Count">
+            <summary>
+            Gets the number of entries currently stored in the cache.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ICache.Remember(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Stores the specified instance in the cache.
+            </summary>
+            <param name="context">The context to store.</param>
+            <param name="reference">The instance reference.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ICache.TryGet(Ninject.Activation.IContext)">
+            <summary>
+            Tries to retrieve an instance to re-use in the specified context.
+            </summary>
+            <param name="context">The context that is being activated.</param>
+            <returns>The instance for re-use, or <see langword="null"/> if none has been stored.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ICache.Release(System.Object)">
+            <summary>
+            Deactivates and releases the specified instance from the cache.
+            </summary>
+            <param name="instance">The instance to release.</param>
+            <returns><see langword="True"/> if the instance was found and released; otherwise <see langword="false"/>.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ICache.Clear(System.Object)">
+            <summary>
+            Immediately deactivates and removes all instances in the cache that are owned by
+            the specified scope.
+            </summary>
+            <param name="scope">The scope whose instances should be deactivated.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ICache.Clear">
+            <summary>
+            Immediately deactivates and removes all instances in the cache, regardless of scope.
+            </summary>
+        </member>
+        <member name="T:Ninject.Activation.Caching.ICachePruner">
+            <summary>
+            Prunes instances from an <see cref="T:Ninject.Activation.Caching.ICache"/> based on environmental information.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ICachePruner.Start(Ninject.Activation.Caching.IPruneable)">
+            <summary>
+            Starts pruning the specified cache based on the rules of the pruner.
+            </summary>
+            <param name="cache">The cache that will be pruned.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ICachePruner.Stop">
+            <summary>
+            Stops pruning.
+            </summary>
+        </member>
+        <member name="T:Ninject.Activation.Caching.IPruneable">
+            <summary>
+            An object that is pruneable.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.IPruneable.Prune">
+            <summary>
+            Removes instances from the cache which should no longer be re-used.
+            </summary>
+        </member>
+        <member name="T:Ninject.Activation.Caching.WeakReferenceEqualityComparer">
+            <summary>
+            Compares ReferenceEqualWeakReferences to objects
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.WeakReferenceEqualityComparer.Equals(System.Object,System.Object)">
+            <summary>
+            Returns if the specified objects are equal.
+            </summary>
+            <param name="x">The first object.</param>
+            <param name="y">The second object.</param>
+            <returns>True if the objects are equal; otherwise false</returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.WeakReferenceEqualityComparer.GetHashCode(System.Object)">
+            <summary>
+            Returns the hash code of the specified object.
+            </summary>
+            <param name="obj">The object for which the hash code is calculated.</param>
+            <returns>The hash code of the specified object.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Context">
+            <summary>
+            Contains information about the activation of a single instance.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Context.#ctor(Ninject.IKernel,Ninject.Activation.IRequest,Ninject.Planning.Bindings.IBinding,Ninject.Activation.Caching.ICache,Ninject.Planning.IPlanner,Ninject.Activation.IPipeline)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Context"/> class.
+            </summary>
+            <param name="kernel">The kernel managing the resolution.</param>
+            <param name="request">The context's request.</param>
+            <param name="binding">The context's binding.</param>
+            <param name="cache">The cache component.</param>
+            <param name="planner">The planner component.</param>
+            <param name="pipeline">The pipeline component.</param>
+        </member>
+        <member name="P:Ninject.Activation.Context.Kernel">
+            <summary>
+            Gets or sets the kernel that is driving the activation.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.Request">
+            <summary>
+            Gets or sets the request.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.Binding">
+            <summary>
+            Gets or sets the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.Plan">
+            <summary>
+            Gets or sets the activation plan.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.Parameters">
+            <summary>
+            Gets or sets the parameters that were passed to manipulate the activation process.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.GenericArguments">
+            <summary>
+            Gets the generic arguments for the request, if any.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.HasInferredGenericArguments">
+            <summary>
+            Gets a value indicating whether the request involves inferred generic arguments.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.Cache">
+            <summary>
+            Gets the cache component.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.Planner">
+            <summary>
+            Gets the planner component.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.Pipeline">
+            <summary>
+            Gets the pipeline component.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Context.GetScope">
+            <summary>
+            Gets the scope for the context that "owns" the instance activated therein.
+            </summary>
+            <returns>The object that acts as the scope.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Context.GetProvider">
+            <summary>
+            Gets the provider that should be used to create the instance for this context.
+            </summary>
+            <returns>The provider that should be used.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Context.Resolve">
+            <summary>
+            Resolves the instance associated with this hook.
+            </summary>
+            <returns>The resolved instance.</returns>
+        </member>
+        <member name="T:Ninject.Activation.IContext">
+            <summary>
+            Contains information about the activation of a single instance.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IContext.Kernel">
+            <summary>
+            Gets the kernel that is driving the activation.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IContext.Request">
+            <summary>
+            Gets the request.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IContext.Binding">
+            <summary>
+            Gets the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IContext.Plan">
+            <summary>
+            Gets or sets the activation plan.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IContext.Cache">
+            <summary>
+            Gets the cache component.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IContext.Parameters">
+            <summary>
+            Gets the parameters that were passed to manipulate the activation process.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IContext.GenericArguments">
+            <summary>
+            Gets the generic arguments for the request, if any.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IContext.HasInferredGenericArguments">
+            <summary>
+            Gets a value indicating whether the request involves inferred generic arguments.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.IContext.GetProvider">
+            <summary>
+            Gets the provider that should be used to create the instance for this context.
+            </summary>
+            <returns>The provider that should be used.</returns>
+        </member>
+        <member name="M:Ninject.Activation.IContext.GetScope">
+            <summary>
+            Gets the scope for the context that "owns" the instance activated therein.
+            </summary>
+            <returns>The object that acts as the scope.</returns>
+        </member>
+        <member name="M:Ninject.Activation.IContext.Resolve">
+            <summary>
+            Resolves this instance for this context.
+            </summary>
+            <returns>The resolved instance.</returns>
+        </member>
+        <member name="T:Ninject.Activation.InstanceReference">
+            <summary>
+            Holds an instance during activation or after it has been cached.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.InstanceReference.Instance">
+            <summary>
+            Gets or sets the instance.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.InstanceReference.Is``1">
+            <summary>
+            Returns a value indicating whether the instance is of the specified type.
+            </summary>
+            <typeparam name="T">The type in question.</typeparam>
+            <returns><see langword="True"/> if the instance is of the specified type, otherwise <see langword="false"/>.</returns>
+        </member>
+        <member name="M:Ninject.Activation.InstanceReference.As``1">
+            <summary>
+            Returns the instance as the specified type.
+            </summary>
+            <typeparam name="T">The requested type.</typeparam>
+            <returns>The instance.</returns>
+        </member>
+        <member name="M:Ninject.Activation.InstanceReference.IfInstanceIs``1(System.Action{``0})">
+            <summary>
+            Executes the specified action if the instance if of the specified type.
+            </summary>
+            <typeparam name="T">The type in question.</typeparam>
+            <param name="action">The action to execute.</param>
+        </member>
+        <member name="T:Ninject.Activation.IPipeline">
+            <summary>
+            Drives the activation (injection, etc.) of an instance.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IPipeline.Strategies">
+            <summary>
+            Gets the strategies that contribute to the activation and deactivation processes.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.IPipeline.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Activates the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">The instance reference.</param>
+        </member>
+        <member name="M:Ninject.Activation.IPipeline.Deactivate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Deactivates the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">The instance reference.</param>
+        </member>
+        <member name="T:Ninject.Activation.IProvider">
+            <summary>
+            Creates instances of services.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IProvider.Type">
+            <summary>
+            Gets the type (or prototype) of instances the provider creates.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.IProvider.Create(Ninject.Activation.IContext)">
+            <summary>
+            Creates an instance within the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The created instance.</returns>
+        </member>
+        <member name="T:Ninject.Activation.IProvider`1">
+            <summary>
+            Provides instances ot the type T
+            </summary>
+            <typeparam name="T">The type provides by this implementation.</typeparam>
+        </member>
+        <member name="T:Ninject.Activation.IRequest">
+            <summary>
+            Describes the request for a service resolution.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.Service">
+            <summary>
+            Gets the service that was requested.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.ParentRequest">
+            <summary>
+            Gets the parent request.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.ParentContext">
+            <summary>
+            Gets the parent context.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.Target">
+            <summary>
+            Gets the target that will receive the injection, if any.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.Constraint">
+            <summary>
+            Gets the constraint that will be applied to filter the bindings used for the request.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.Parameters">
+            <summary>
+            Gets the parameters that affect the resolution.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.ActiveBindings">
+            <summary>
+            Gets the stack of bindings which have been activated by either this request or its ancestors.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.Depth">
+            <summary>
+            Gets the recursive depth at which this request occurs.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.IsOptional">
+            <summary>
+            Gets or sets a value indicating whether the request is optional.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.IsUnique">
+            <summary>
+            Gets or sets a value indicating whether the request should return a unique result.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.ForceUnique">
+            <summary>
+            Gets or sets a value indicating whether the request should force to return a unique value even if the request is optional.
+            If this value is set true the request will throw an ActivationException if there are multiple satisfying bindings rather
+            than returning null for the request is optional. For none optional requests this parameter does not change anything.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.IRequest.Matches(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Determines whether the specified binding satisfies the constraint defined on this request.
+            </summary>
+            <param name="binding">The binding.</param>
+            <returns><c>True</c> if the binding satisfies the constraint; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Activation.IRequest.GetScope">
+            <summary>
+            Gets the scope if one was specified in the request.
+            </summary>
+            <returns>The object that acts as the scope.</returns>
+        </member>
+        <member name="M:Ninject.Activation.IRequest.CreateChild(System.Type,Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Creates a child request.
+            </summary>
+            <param name="service">The service that is being requested.</param>
+            <param name="parentContext">The context in which the request was made.</param>
+            <param name="target">The target that will receive the injection.</param>
+            <returns>The child request.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Pipeline">
+            <summary>
+            Drives the activation (injection, etc.) of an instance.
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Pipeline.activationCache">
+            <summary>
+            The activation cache.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Pipeline.#ctor(System.Collections.Generic.IEnumerable{Ninject.Activation.Strategies.IActivationStrategy},Ninject.Activation.Caching.IActivationCache)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Pipeline"/> class.
+            </summary>
+            <param name="strategies">The strategies to execute during activation and deactivation.</param>
+            <param name="activationCache">The activation cache.</param>
+        </member>
+        <member name="P:Ninject.Activation.Pipeline.Strategies">
+            <summary>
+            Gets the strategies that contribute to the activation and deactivation processes.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Pipeline.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Activates the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">The instance reference.</param>
+        </member>
+        <member name="M:Ninject.Activation.Pipeline.Deactivate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Deactivates the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">The instance reference.</param>
+        </member>
+        <member name="T:Ninject.Activation.Provider`1">
+            <summary>
+            A simple abstract provider for instances of a specific type.
+            </summary>
+            <typeparam name="T">The type of instances the provider creates.</typeparam>
+        </member>
+        <member name="P:Ninject.Activation.Provider`1.Type">
+            <summary>
+            Gets the type (or prototype) of instances the provider creates.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Provider`1.Create(Ninject.Activation.IContext)">
+            <summary>
+            Creates an instance within the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The created instance.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Provider`1.CreateInstance(Ninject.Activation.IContext)">
+            <summary>
+            Creates an instance within the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The created instance.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Providers.CallbackProvider`1">
+            <summary>
+            A provider that delegates to a callback method to create instances.
+            </summary>
+            <typeparam name="T">The type of instances the provider creates.</typeparam>
+        </member>
+        <member name="M:Ninject.Activation.Providers.CallbackProvider`1.#ctor(System.Func{Ninject.Activation.IContext,`0})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Providers.CallbackProvider`1"/> class.
+            </summary>
+            <param name="method">The callback method that will be called to create instances.</param>
+        </member>
+        <member name="P:Ninject.Activation.Providers.CallbackProvider`1.Method">
+            <summary>
+            Gets the callback method used by the provider.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Providers.CallbackProvider`1.CreateInstance(Ninject.Activation.IContext)">
+            <summary>
+            Invokes the callback method to create an instance.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The created instance.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Providers.ConstantProvider`1">
+            <summary>
+            A provider that always returns the same constant value.
+            </summary>
+            <typeparam name="T">The type of value that is returned.</typeparam>
+        </member>
+        <member name="M:Ninject.Activation.Providers.ConstantProvider`1.#ctor(`0)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Providers.ConstantProvider`1"/> class.
+            </summary>
+            <param name="value">The value that the provider should return.</param>
+        </member>
+        <member name="P:Ninject.Activation.Providers.ConstantProvider`1.Value">
+            <summary>
+            Gets the value that the provider will return.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Providers.ConstantProvider`1.CreateInstance(Ninject.Activation.IContext)">
+            <summary>
+            Creates an instance within the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The constant value this provider returns.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Providers.StandardProvider">
+            <summary>
+            The standard provider for types, which activates instances via a <see cref="T:Ninject.Activation.IPipeline"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Providers.StandardProvider.#ctor(System.Type,Ninject.Planning.IPlanner,Ninject.Selection.Heuristics.IConstructorScorer)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Providers.StandardProvider"/> class.
+            </summary>
+            <param name="type">The type (or prototype) of instances the provider creates.</param>
+            <param name="planner">The planner component.</param>
+            <param name="constructorScorer">The constructor scorer component.</param>
+        </member>
+        <member name="P:Ninject.Activation.Providers.StandardProvider.Type">
+            <summary>
+            Gets the type (or prototype) of instances the provider creates.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Providers.StandardProvider.Planner">
+            <summary>
+            Gets the planner component.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Providers.StandardProvider.ConstructorScorer">
+            <summary>
+            Gets the constructor scorer component.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Providers.StandardProvider.GetCreationCallback(System.Type)">
+            <summary>
+            Gets a callback that creates an instance of the <see cref="T:Ninject.Activation.Providers.StandardProvider"/>
+            for the specified type.
+            </summary>
+            <param name="prototype">The prototype the provider instance will create.</param>
+            <returns>The created callback.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Providers.StandardProvider.GetCreationCallback(System.Type,System.Reflection.ConstructorInfo)">
+            <summary>
+            Gets a callback that creates an instance of the <see cref="T:Ninject.Activation.Providers.StandardProvider"/>
+            for the specified type and constructor.
+            </summary>
+            <param name="prototype">The prototype the provider instance will create.</param>
+            <param name="constructor">The constructor.</param>
+            <returns>The created callback.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Providers.StandardProvider.Create(Ninject.Activation.IContext)">
+            <summary>
+            Creates an instance within the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The created instance.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Providers.StandardProvider.GetValue(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Gets the value to inject into the specified target.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>The value to inject into the specified target.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Providers.StandardProvider.GetImplementationType(System.Type)">
+            <summary>
+            Gets the implementation type that the provider will activate an instance of
+            for the specified service.
+            </summary>
+            <param name="service">The service in question.</param>
+            <returns>The implementation type that will be activated.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Request">
+            <summary>
+            Describes the request for a service resolution.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Request.#ctor(System.Type,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},System.Collections.Generic.IEnumerable{Ninject.Parameters.IParameter},System.Func{System.Object},System.Boolean,System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Request"/> class.
+            </summary>
+            <param name="service">The service that was requested.</param>
+            <param name="constraint">The constraint that will be applied to filter the bindings used for the request.</param>
+            <param name="parameters">The parameters that affect the resolution.</param>
+            <param name="scopeCallback">The scope callback, if an external scope was specified.</param>
+            <param name="isOptional"><c>True</c> if the request is optional; otherwise, <c>false</c>.</param>
+            <param name="isUnique"><c>True</c> if the request should return a unique result; otherwise, <c>false</c>.</param>
+        </member>
+        <member name="M:Ninject.Activation.Request.#ctor(Ninject.Activation.IContext,System.Type,Ninject.Planning.Targets.ITarget,System.Func{System.Object})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Request"/> class.
+            </summary>
+            <param name="parentContext">The parent context.</param>
+            <param name="service">The service that was requested.</param>
+            <param name="target">The target that will receive the injection.</param>
+            <param name="scopeCallback">The scope callback, if an external scope was specified.</param>
+        </member>
+        <member name="P:Ninject.Activation.Request.Service">
+            <summary>
+            Gets the service that was requested.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.ParentRequest">
+            <summary>
+            Gets the parent request.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.ParentContext">
+            <summary>
+            Gets the parent context.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.Target">
+            <summary>
+            Gets the target that will receive the injection, if any.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.Constraint">
+            <summary>
+            Gets the constraint that will be applied to filter the bindings used for the request.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.Parameters">
+            <summary>
+            Gets the parameters that affect the resolution.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.ActiveBindings">
+            <summary>
+            Gets the stack of bindings which have been activated by either this request or its ancestors.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.Depth">
+            <summary>
+            Gets the recursive depth at which this request occurs.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.IsOptional">
+            <summary>
+            Gets or sets a value indicating whether the request is optional.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.IsUnique">
+            <summary>
+            Gets or sets a value indicating whether the request is for a single service.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.ForceUnique">
+            <summary>
+            Gets or sets a value indicating whether the request should force to return a unique value even if the request is optional.
+            If this value is set true the request will throw an ActivationException if there are multiple satisfying bindings rather
+            than returning null for the request is optional. For none optional requests this parameter does not change anything.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.ScopeCallback">
+            <summary>
+            Gets the callback that resolves the scope for the request, if an external scope was provided.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Request.Matches(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Determines whether the specified binding satisfies the constraints defined on this request.
+            </summary>
+            <param name="binding">The binding.</param>
+            <returns><c>True</c> if the binding satisfies the constraints; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Request.GetScope">
+            <summary>
+            Gets the scope if one was specified in the request.
+            </summary>
+            <returns>The object that acts as the scope.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Request.CreateChild(System.Type,Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Creates a child request.
+            </summary>
+            <param name="service">The service that is being requested.</param>
+            <param name="parentContext">The context in which the request was made.</param>
+            <param name="target">The target that will receive the injection.</param>
+            <returns>The child request.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Request.ToString">
+            <summary>
+            Formats this object into a meaningful string representation.
+            </summary>
+            <returns>The request formatted as string.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.ActivationCacheStrategy">
+            <summary>
+            Adds all activated instances to the activation cache.
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Strategies.ActivationCacheStrategy.activationCache">
+            <summary>
+            The activation cache.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.ActivationCacheStrategy.#ctor(Ninject.Activation.Caching.IActivationCache)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Strategies.ActivationCacheStrategy"/> class.
+            </summary>
+            <param name="activationCache">The activation cache.</param>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.ActivationCacheStrategy.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Contributes to the activation of the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.ActivationCacheStrategy.Deactivate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Contributes to the deactivation of the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being deactivated.</param>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.ActivationStrategy">
+            <summary>
+            Contributes to a <see cref="T:Ninject.Activation.IPipeline"/>, and is called during the activation
+            and deactivation of an instance.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.ActivationStrategy.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Contributes to the activation of the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.ActivationStrategy.Deactivate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Contributes to the deactivation of the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being deactivated.</param>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.BindingActionStrategy">
+            <summary>
+            Executes actions defined on the binding during activation and deactivation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.BindingActionStrategy.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Calls the activation actions defined on the binding.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.BindingActionStrategy.Deactivate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Calls the deactivation actions defined on the binding.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being deactivated.</param>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.DisposableStrategy">
+            <summary>
+            During deactivation, disposes instances that implement <see cref="T:System.IDisposable"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.DisposableStrategy.Deactivate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Disposes the specified instance.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being deactivated.</param>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.IActivationStrategy">
+            <summary>
+            Contributes to a <see cref="T:Ninject.Activation.IPipeline"/>, and is called during the activation
+            and deactivation of an instance.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.IActivationStrategy.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Contributes to the activation of the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.IActivationStrategy.Deactivate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Contributes to the deactivation of the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being deactivated.</param>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.InitializableStrategy">
+            <summary>
+            During activation, initializes instances that implement <see cref="T:Ninject.IInitializable"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.InitializableStrategy.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Initializes the specified instance.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.MethodInjectionStrategy">
+            <summary>
+            Injects methods on an instance during activation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.MethodInjectionStrategy.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Injects values into the properties as described by <see cref="T:Ninject.Planning.Directives.MethodInjectionDirective"/>s
+            contained in the plan.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.PropertyInjectionStrategy">
+            <summary>
+            Injects properties on an instance during activation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.PropertyInjectionStrategy.#ctor(Ninject.Injection.IInjectorFactory)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Strategies.PropertyInjectionStrategy"/> class.
+            </summary>
+            <param name="injectorFactory">The injector factory component.</param>
+        </member>
+        <member name="P:Ninject.Activation.Strategies.PropertyInjectionStrategy.InjectorFactory">
+            <summary>
+            Gets or sets the injector factory component.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.PropertyInjectionStrategy.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Injects values into the properties as described by <see cref="T:Ninject.Planning.Directives.PropertyInjectionDirective"/>s
+            contained in the plan.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.PropertyInjectionStrategy.AssignPropertyOverrides(Ninject.Activation.IContext,Ninject.Activation.InstanceReference,System.Collections.Generic.IList{Ninject.Parameters.IPropertyValue})">
+            <summary>
+            Applies user supplied override values to instance properties.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+            <param name="propertyValues">The parameter override value accessors.</param>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.PropertyInjectionStrategy.GetValue(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Collections.Generic.IEnumerable{Ninject.Parameters.IPropertyValue})">
+            <summary>
+            Gets the value to inject into the specified target.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <param name="allPropertyValues">all property values of the current request.</param>
+            <returns>The value to inject into the specified target.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.StartableStrategy">
+            <summary>
+            Starts instances that implement <see cref="T:Ninject.IStartable"/> during activation,
+            and stops them during deactivation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.StartableStrategy.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Starts the specified instance.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.StartableStrategy.Deactivate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Stops the specified instance.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being deactivated.</param>
+        </member>
+        <member name="T:Ninject.ConstraintAttribute">
+            <summary>
+            Defines a constraint on the decorated member.
+            </summary>
+        </member>
+        <member name="M:Ninject.ConstraintAttribute.Matches(Ninject.Planning.Bindings.IBindingMetadata)">
+            <summary>
+            Determines whether the specified binding metadata matches the constraint.
+            </summary>
+            <param name="metadata">The metadata in question.</param>
+            <returns><c>True</c> if the metadata matches; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="T:Ninject.InjectAttribute">
+            <summary>
+            Indicates that the decorated member should be injected.
+            </summary>
+        </member>
+        <member name="T:Ninject.NamedAttribute">
+            <summary>
+            Indicates that the decorated member should only be injected using binding(s) registered
+            with the specified name.
+            </summary>
+        </member>
+        <member name="M:Ninject.NamedAttribute.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.NamedAttribute"/> class.
+            </summary>
+            <param name="name">The name of the binding(s) to use.</param>
+        </member>
+        <member name="P:Ninject.NamedAttribute.Name">
+            <summary>
+            Gets the binding name.
+            </summary>
+        </member>
+        <member name="M:Ninject.NamedAttribute.Matches(Ninject.Planning.Bindings.IBindingMetadata)">
+            <summary>
+            Determines whether the specified binding metadata matches the constraint.
+            </summary>
+            <param name="metadata">The metadata in question.</param>
+            <returns><c>True</c> if the metadata matches; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="T:Ninject.OptionalAttribute">
+            <summary>
+            Indicates that the decorated member represents an optional dependency.
+            </summary>
+        </member>
+        <member name="T:Ninject.Components.ComponentContainer">
+            <summary>
+            An internal container that manages and resolves components that contribute to Ninject.
+            </summary>
+        </member>
+        <member name="P:Ninject.Components.ComponentContainer.Kernel">
+            <summary>
+            Gets or sets the kernel that owns the component container.
+            </summary>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.Dispose(System.Boolean)">
+            <summary>
+            Releases resources held by the object.
+            </summary>
+            <param name="disposing"><c>True</c> if called manually, otherwise by GC.</param>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.Add``2">
+            <summary>
+            Registers a component in the container.
+            </summary>
+            <typeparam name="TComponent">The component type.</typeparam>
+            <typeparam name="TImplementation">The component's implementation type.</typeparam>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.AddTransient``2">
+            <summary>
+            Registers a transient component in the container.
+            </summary>
+            <typeparam name="TComponent">The component type.</typeparam>
+            <typeparam name="TImplementation">The component's implementation type.</typeparam>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.RemoveAll``1">
+            <summary>
+            Removes all registrations for the specified component.
+            </summary>
+            <typeparam name="T">The component type.</typeparam>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.Remove``2">
+            <summary>
+            Removes the specified registration.
+            </summary>
+            <typeparam name="T">The component type.</typeparam>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.RemoveAll(System.Type)">
+            <summary>
+            Removes all registrations for the specified component.
+            </summary>
+            <param name="component">The component type.</param>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.Get``1">
+            <summary>
+            Gets one instance of the specified component.
+            </summary>
+            <typeparam name="T">The component type.</typeparam>
+            <returns>The instance of the component.</returns>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.GetAll``1">
+            <summary>
+            Gets all available instances of the specified component.
+            </summary>
+            <typeparam name="T">The component type.</typeparam>
+            <returns>A series of instances of the specified component.</returns>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.Get(System.Type)">
+            <summary>
+            Gets one instance of the specified component.
+            </summary>
+            <param name="component">The component type.</param>
+            <returns>The instance of the component.</returns>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.GetAll(System.Type)">
+            <summary>
+            Gets all available instances of the specified component.
+            </summary>
+            <param name="component">The component type.</param>
+            <returns>A series of instances of the specified component.</returns>
+        </member>
+        <member name="T:Ninject.Components.IComponentContainer">
+            <summary>
+            An internal container that manages and resolves components that contribute to Ninject.
+            </summary>
+        </member>
+        <member name="P:Ninject.Components.IComponentContainer.Kernel">
+            <summary>
+            Gets or sets the kernel that owns the component container.
+            </summary>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.Add``2">
+            <summary>
+            Registers a component in the container.
+            </summary>
+            <typeparam name="TComponent">The component type.</typeparam>
+            <typeparam name="TImplementation">The component's implementation type.</typeparam>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.RemoveAll``1">
+            <summary>
+            Removes all registrations for the specified component.
+            </summary>
+            <typeparam name="T">The component type.</typeparam>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.RemoveAll(System.Type)">
+            <summary>
+            Removes all registrations for the specified component.
+            </summary>
+            <param name="component">The component's type.</param>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.Remove``2">
+            <summary>
+            Removes the specified registration.
+            </summary>
+            <typeparam name="T">The component type.</typeparam>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.Get``1">
+            <summary>
+            Gets one instance of the specified component.
+            </summary>
+            <typeparam name="T">The component type.</typeparam>
+            <returns>The instance of the component.</returns>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.GetAll``1">
+            <summary>
+            Gets all available instances of the specified component.
+            </summary>
+            <typeparam name="T">The component type.</typeparam>
+            <returns>A series of instances of the specified component.</returns>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.Get(System.Type)">
+            <summary>
+            Gets one instance of the specified component.
+            </summary>
+            <param name="component">The component type.</param>
+            <returns>The instance of the component.</returns>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.GetAll(System.Type)">
+            <summary>
+            Gets all available instances of the specified component.
+            </summary>
+            <param name="component">The component type.</param>
+            <returns>A series of instances of the specified component.</returns>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.AddTransient``2">
+            <summary>
+            Registers a transient component in the container.
+            </summary>
+            <typeparam name="TComponent">The component type.</typeparam>
+            <typeparam name="TImplementation">The component's implementation type.</typeparam>
+        </member>
+        <member name="T:Ninject.Components.INinjectComponent">
+            <summary>
+            A component that contributes to the internals of Ninject.
+            </summary>
+        </member>
+        <member name="P:Ninject.Components.INinjectComponent.Settings">
+            <summary>
+            Gets or sets the settings.
+            </summary>
+        </member>
+        <member name="T:Ninject.Components.NinjectComponent">
+            <summary>
+            A component that contributes to the internals of Ninject.
+            </summary>
+        </member>
+        <member name="P:Ninject.Components.NinjectComponent.Settings">
+            <summary>
+            Gets or sets the settings.
+            </summary>
+        </member>
+        <member name="T:Ninject.GlobalKernelRegistration">
+            <summary>
+            Allows to register kernel globally to perform some tasks on all kernels.
+            The registration is done by loading the GlobalKernelRegistrationModule to the kernel.
+            </summary>
+        </member>
+        <member name="M:Ninject.GlobalKernelRegistration.RegisterKernelForType(Ninject.IKernel,System.Type)">
+            <summary>
+            Registers the kernel for the specified type.
+            </summary>
+            <param name="kernel">The <see cref="T:Ninject.IKernel"/>.</param>
+            <param name="type">The service type.</param>
+        </member>
+        <member name="M:Ninject.GlobalKernelRegistration.UnregisterKernelForType(Ninject.IKernel,System.Type)">
+            <summary>
+            Un-registers the kernel for the specified type.
+            </summary>
+            <param name="kernel">The <see cref="T:Ninject.IKernel"/>.</param>
+            <param name="type">The service type.</param>
+        </member>
+        <member name="M:Ninject.GlobalKernelRegistration.MapKernels(System.Action{Ninject.IKernel})">
+            <summary>
+            Performs an action on all registered kernels.
+            </summary>
+            <param name="action">The action.</param>
+        </member>
+        <member name="T:Ninject.GlobalKernelRegistrationModule`1">
+            <summary>
+            Registers the kernel into which the module is loaded on the GlobalKernelRegistry using the
+            type specified by TGlobalKernelRegistry.
+            </summary>
+            <typeparam name="TGlobalKernelRegistry">The type that is used to register the kernel.</typeparam>
+        </member>
+        <member name="M:Ninject.GlobalKernelRegistrationModule`1.Load">
+            <summary>
+            Loads the module into the kernel.
+            </summary>
+        </member>
+        <member name="M:Ninject.GlobalKernelRegistrationModule`1.Unload">
+            <summary>
+            Unloads the module from the kernel.
+            </summary>
+        </member>
+        <member name="T:Ninject.IHaveNinjectComponents">
+            <summary>
+            Provides access to Ninject components.
+            </summary>
+        </member>
+        <member name="P:Ninject.IHaveNinjectComponents.Components">
+            <summary>
+            Gets the component container, which holds components that contribute to Ninject.
+            </summary>
+        </member>
+        <member name="T:Ninject.IHaveNinjectSettings">
+            <summary>
+            Provides access to Ninject settings.
+            </summary>
+        </member>
+        <member name="P:Ninject.IHaveNinjectSettings.Settings">
+            <summary>
+            Gets the kernel settings.
+            </summary>
+        </member>
+        <member name="T:Ninject.IInitializable">
+            <summary>
+            A service that requires initialization after it is activated.
+            </summary>
+        </member>
+        <member name="M:Ninject.IInitializable.Initialize">
+            <summary>
+            Initializes the instance. Called during activation.
+            </summary>
+        </member>
+        <member name="T:Ninject.IKernel">
+            <summary>
+            A super-factory that can create objects of all kinds, following hints provided by <see cref="T:Ninject.Planning.Bindings.IBinding"/>s.
+            </summary>
+        </member>
+        <member name="P:Ninject.IKernel.Settings">
+            <summary>
+            Gets the kernel settings.
+            </summary>
+        </member>
+        <member name="P:Ninject.IKernel.Components">
+            <summary>
+            Gets the component container, which holds components that contribute to Ninject.
+            </summary>
+        </member>
+        <member name="M:Ninject.IKernel.GetModules">
+            <summary>
+            Gets the modules that have been loaded into the kernel.
+            </summary>
+            <returns>A series of loaded modules.</returns>
+        </member>
+        <member name="M:Ninject.IKernel.HasModule(System.String)">
+            <summary>
+            Determines whether a module with the specified name has been loaded in the kernel.
+            </summary>
+            <param name="name">The name of the module.</param>
+            <returns><c>True</c> if the specified module has been loaded; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.IKernel.Load(System.Collections.Generic.IEnumerable{Ninject.Modules.INinjectModule})">
+            <summary>
+            Loads the module(s) into the kernel.
+            </summary>
+            <param name="m">The modules to load.</param>
+        </member>
+        <member name="M:Ninject.IKernel.Load(System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            Loads modules from the files that match the specified pattern(s).
+            </summary>
+            <param name="filePatterns">The file patterns (i.e. "*.dll", "modules/*.rb") to match.</param>
+        </member>
+        <member name="M:Ninject.IKernel.Load(System.Collections.Generic.IEnumerable{System.Reflection.Assembly})">
+            <summary>
+            Loads modules defined in the specified assemblies.
+            </summary>
+            <param name="assemblies">The assemblies to search.</param>
+        </member>
+        <member name="M:Ninject.IKernel.Unload(System.String)">
+            <summary>
+            Unloads the plugin with the specified name.
+            </summary>
+            <param name="name">The plugin's name.</param>
+        </member>
+        <member name="M:Ninject.IKernel.GetBindings(System.Type)">
+            <summary>
+            Gets the bindings registered for the specified service.
+            </summary>
+            <param name="service">The service in question.</param>
+            <returns>A series of bindings that are registered for the service.</returns>
+        </member>
+        <member name="M:Ninject.IKernel.BeginBlock">
+            <summary>
+            Begins a new activation block, which can be used to deterministically dispose resolved instances.
+            </summary>
+            <returns>The new activation block.</returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.Disposal.DisposableObject">
+            <summary>
+            An object that notifies when it is disposed.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Disposal.DisposableObject.Finalize">
+            <summary>
+            Finalizes an instance of the <see cref="T:Ninject.Infrastructure.Disposal.DisposableObject"/> class.
+            </summary>
+        </member>
+        <member name="E:Ninject.Infrastructure.Disposal.DisposableObject.Disposed">
+            <summary>
+            Occurs when the object is disposed.
+            </summary>
+        </member>
+        <member name="P:Ninject.Infrastructure.Disposal.DisposableObject.IsDisposed">
+            <summary>
+            Gets a value indicating whether this instance is disposed.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Disposal.DisposableObject.Dispose">
+            <summary>
+            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Disposal.DisposableObject.Dispose(System.Boolean)">
+            <summary>
+            Releases resources held by the object.
+            </summary>
+            <param name="disposing"><c>True</c> if called manually, otherwise by GC.</param>
+        </member>
+        <member name="T:Ninject.Infrastructure.Disposal.IDisposableObject">
+            <summary>
+            An object that can report whether or not it is disposed.
+            </summary>
+        </member>
+        <member name="P:Ninject.Infrastructure.Disposal.IDisposableObject.IsDisposed">
+            <summary>
+            Gets a value indicating whether this instance is disposed.
+            </summary>
+        </member>
+        <member name="T:Ninject.Infrastructure.Disposal.INotifyWhenDisposed">
+            <summary>
+            An object that fires an event when it is disposed.
+            </summary>
+        </member>
+        <member name="E:Ninject.Infrastructure.Disposal.INotifyWhenDisposed.Disposed">
+            <summary>
+            Occurs when the object is disposed.
+            </summary>
+        </member>
+        <member name="T:Ninject.Infrastructure.Ensure">
+            <summary>
+            Argument guard.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Ensure.ArgumentNotNull(System.Object,System.String)">
+            <summary>
+            Ensures the argument is not null.
+            </summary>
+            <param name="argument">The argument value.</param>
+            <param name="name">The argument name.</param>
+        </member>
+        <member name="M:Ninject.Infrastructure.Ensure.ArgumentNotNullOrEmpty(System.String,System.String)">
+            <summary>
+            Ensures the argument is not null or empty.
+            </summary>
+            <param name="argument">The argument value.</param>
+            <param name="name">The argument name.</param>
+        </member>
+        <member name="T:Ninject.Infrastructure.IHaveBindingConfiguration">
+            <summary>
+            Indicates the object has a reference to a <see cref="T:Ninject.Planning.Bindings.IBinding"/>.
+            </summary>
+        </member>
+        <member name="P:Ninject.Infrastructure.IHaveBindingConfiguration.BindingConfiguration">
+            <summary>
+            Gets the binding.
+            </summary>
+        </member>
+        <member name="T:Ninject.Infrastructure.IHaveKernel">
+            <summary>
+            Indicates that the object has a reference to an <see cref="T:Ninject.IKernel"/>.
+            </summary>
+        </member>
+        <member name="P:Ninject.Infrastructure.IHaveKernel.Kernel">
+            <summary>
+            Gets the kernel.
+            </summary>
+        </member>
+        <member name="T:Ninject.Infrastructure.Introspection.ExceptionFormatter">
+            <summary>
+            Provides meaningful exception messages.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.ModulesWithNullOrEmptyNamesAreNotSupported">
+            <summary>
+            Generates a message saying that modules without names are not supported.
+            </summary>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.TargetDoesNotHaveADefaultValue(Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Generates a message saying that modules without names are not supported.
+            </summary>
+            <param name="target">The target.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.ModuleWithSameNameIsAlreadyLoaded(Ninject.Modules.INinjectModule,Ninject.Modules.INinjectModule)">
+            <summary>
+            Generates a message saying that a module with the same name is already loaded.
+            </summary>
+            <param name="newModule">The new module.</param>
+            <param name="existingModule">The existing module.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.NoModuleLoadedWithTheSpecifiedName(System.String)">
+            <summary>
+            Generates a message saying that no module has been loaded with the specified name.
+            </summary>
+            <param name="name">The module name.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.CouldNotUniquelyResolveBinding(Ninject.Activation.IRequest,System.String[])">
+            <summary>
+            Generates a message saying that the binding could not be uniquely resolved.
+            </summary>
+            <param name="request">The request.</param>
+            <param name="formattedMatchingBindings">The matching bindings, already formatted as strings</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.CouldNotResolveBinding(Ninject.Activation.IRequest)">
+            <summary>
+            Generates a message saying that the binding could not be resolved on the specified request.
+            </summary>
+            <param name="request">The request.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.CyclicalDependenciesDetected(Ninject.Activation.IContext)">
+            <summary>
+            Generates a message saying that the specified context has cyclic dependencies.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.InvalidAttributeTypeUsedInBindingCondition(System.String,System.String,System.Type)">
+            <summary>
+            Generates a message saying that an invalid attribute type is used in the binding condition.
+            </summary>
+            <param name="serviceNames">The names of the services.</param>
+            <param name="methodName">Name of the method.</param>
+            <param name="type">The type.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.NoConstructorsAvailable(Ninject.Activation.IContext)">
+            <summary>
+            Generates a message saying that no constructors are available on the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.NoConstructorsAvailableForComponent(System.Type,System.Type)">
+            <summary>
+            Generates a message saying that no constructors are available for the given component.
+            </summary>
+            <param name="component">The component.</param>
+            <param name="implementation">The implementation.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.NoSuchComponentRegistered(System.Type)">
+            <summary>
+            Generates a message saying that the specified component is not registered.
+            </summary>
+            <param name="component">The component.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.CouldNotResolvePropertyForValueInjection(Ninject.Activation.IRequest,System.String)">
+            <summary>
+            Generates a message saying that the specified property could not be resolved on the specified request.
+            </summary>
+            <param name="request">The request.</param>
+            <param name="propertyName">The property name.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.ProviderCallbackIsNull(Ninject.Activation.IContext)">
+            <summary>
+            Generates a message saying that the provider callback on the specified context is null.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.ProviderReturnedNull(Ninject.Activation.IContext)">
+            <summary>
+            Generates a message saying that the provider on the specified context returned null.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.ConstructorsAmbiguous(Ninject.Activation.IContext,System.Linq.IGrouping{System.Int32,Ninject.Planning.Directives.ConstructorInjectionDirective})">
+            <summary>
+            Generates a message saying that the constructor is ambiguous.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="bestDirectives">The best constructor directives.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.FormatConstructor(System.Reflection.ConstructorInfo,System.IO.StringWriter)">
+            <summary>
+            Formats the constructor.
+            </summary>
+            <param name="constructor">The constructor.</param>
+            <param name="sw">The string writer.</param>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.FormatAttribute(System.IO.StringWriter,System.Attribute)">
+            <summary>
+            Formats the attribute.
+            </summary>
+            <param name="sw">The string writer.</param>
+            <param name="attribute">The attribute.</param>
+        </member>
+        <member name="T:Ninject.Infrastructure.Introspection.FormatExtensions">
+            <summary>
+            Provides extension methods for string formatting
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.FormatExtensions.FormatActivationPath(Ninject.Activation.IRequest)">
+            <summary>
+            Formats the activation path into a meaningful string representation.
+            </summary>
+            <param name="request">The request to be formatted.</param>
+            <returns>The activation path formatted as string.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.FormatExtensions.Format(Ninject.Planning.Bindings.IBinding,Ninject.Activation.IContext)">
+            <summary>
+            Formats the given binding into a meaningful string representation.
+            </summary>
+            <param name="binding">The binding to be formatted.</param>
+            <param name="context">The context.</param>
+            <returns>The binding formatted as string</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.FormatExtensions.Format(Ninject.Activation.IRequest)">
+            <summary>
+            Formats the specified request into a meaningful string representation.
+            </summary>
+            <param name="request">The request to be formatted.</param>
+            <returns>The request formatted as string.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.FormatExtensions.Format(Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Formats the specified target into a meaningful string representation..
+            </summary>
+            <param name="target">The target to be formatted.</param>
+            <returns>The target formatted as string.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.FormatExtensions.Format(System.Type)">
+            <summary>
+            Formats the specified type into a meaningful string representation..
+            </summary>
+            <param name="type">The type to be formatted.</param>
+            <returns>The type formatted as string.</returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.Language.ExtensionsForAssembly">
+            <summary>
+            Provides extension methods for <see cref="T:System.Reflection.Assembly"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForAssembly.HasNinjectModules(System.Reflection.Assembly)">
+            <summary>
+            Determines whether the assembly has loadable <see cref="T:Ninject.Modules.INinjectModule"/>.
+            </summary>
+            <param name="assembly">The <see cref="T:System.Reflection.Assembly"/>.</param>
+            <returns><c>True</c> if there's any loadable <see cref="T:Ninject.Modules.INinjectModule"/>, otherwise <c>False</c>.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForAssembly.GetNinjectModules(System.Reflection.Assembly)">
+            <summary>
+            Gets loadable <see cref="T:Ninject.Modules.INinjectModule"/>s from the <see cref="T:System.Reflection.Assembly"/>.
+            </summary>
+            <param name="assembly">The <see cref="T:System.Reflection.Assembly"/>.</param>
+            <returns>The loadable <see cref="T:Ninject.Modules.INinjectModule"/>s</returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.Language.ExtensionsForICustomAttributeProvider">
+            <summary>
+            Provides extension methods for <see cref="T:System.Reflection.ICustomAttributeProvider"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForICustomAttributeProvider.HasAttribute(System.Reflection.ICustomAttributeProvider,System.Type)">
+            <summary>
+            Determines if the <see cref="T:System.Reflection.ICustomAttributeProvider"/> has the specified attribute.
+            </summary>
+            <param name="member">The <see cref="T:System.Reflection.ICustomAttributeProvider"/>.</param>
+            <param name="type">The attribute type.</param>
+            <returns><c>True</c> if the <see cref="T:System.Reflection.ICustomAttributeProvider"/> has the attribute, otherwise <c>False</c>.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForICustomAttributeProvider.GetCustomAttributesExtended(System.Reflection.ICustomAttributeProvider,System.Type,System.Boolean)">
+            <summary>
+            Gets custom attributes which supports <see cref="T:System.Reflection.MemberInfo"/> and <see cref="T:System.Reflection.PropertyInfo"/>.
+            </summary>
+            <param name="member">The <see cref="T:System.Reflection.ICustomAttributeProvider"/>.</param>
+            <param name="attributeType">The attribute type.</param>
+            <param name="inherit">When true, look up the hierarchy chain for the inherited custom attribute.</param>
+            <returns>The attributes.</returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.Language.ExtensionsForIEnumerable">
+            <summary>
+            Provides extension methods for <see cref="T:System.Collections.IEnumerable"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForIEnumerable.CastSlow(System.Collections.IEnumerable,System.Type)">
+            <summary>
+            Casts the elements of an <see cref="T:System.Collections.IEnumerable"/> to the specified type using reflection.
+            </summary>
+            <param name="series">The <see cref="T:System.Collections.IEnumerable"/> that contains the elements to be cast.</param>
+            <param name="elementType">The type to cast the elements of source to.</param>
+            <returns>
+            An <see cref="T:System.Collections.IEnumerable"/> that contains each element of the
+            source sequence cast to the specified type.
+            </returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForIEnumerable.ToArraySlow(System.Collections.IEnumerable,System.Type)">
+            <summary>
+            Creates an array from an <see cref="T:System.Collections.IEnumerable"/>.
+            </summary>
+            <param name="series">An <see cref="T:System.Collections.IEnumerable"/> to create an array from.</param>
+            <param name="elementType">The type of the elements.</param>
+            <returns>An array that contains the elements from the input sequence.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForIEnumerable.ToListSlow(System.Collections.IEnumerable,System.Type)">
+            <summary>
+            Creates an <see cref="T:System.Collections.IList"/> from an <see cref="T:System.Collections.IEnumerable"/>.
+            </summary>
+            <param name="series">An <see cref="T:System.Collections.IEnumerable"/> to create an <see cref="T:System.Collections.IList"/> from.</param>
+            <param name="elementType">The type of the elements.</param>
+            <returns>An <see cref="T:System.Collections.IList"/> that contains the elements from the input sequence.</returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT">
+            <summary>
+            Provides extension methods for <see cref="T:System.Collections.Generic.IEnumerable`1"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map``1(System.Collections.Generic.IEnumerable{``0},System.Action{``0})">
+            <summary>
+            Executes the given action for each of the elements in the enumerable.
+            </summary>
+            <typeparam name="T">Type of the enumerable.</typeparam>
+            <param name="series">The series.</param>
+            <param name="action">The action.</param>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.ToEnumerable``1(System.Collections.Generic.IEnumerable{``0})">
+            <summary>
+            Converts the given enumerable type to prevent changed on the type behind.
+            </summary>
+            <typeparam name="T">The type of the enumerable.</typeparam>
+            <param name="series">The series.</param>
+            <returns>The input type as real enumerable not castable to the original type.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.SingleOrThrowException``1(System.Collections.Generic.IEnumerable{``0},System.Func{Ninject.ActivationException})">
+            <summary>
+            Returns single element of enumerable or throws exception.
+            </summary>
+            <param name="series">The series.</param>
+            <param name="exceptionCreator">The exception creator.</param>
+            <typeparam name="T">Type of the enumerable.</typeparam>
+            <returns>The single element of enumerable.</returns>
+            <exception cref="T:Ninject.ActivationException">
+            Exception specified by exception creator.
+            </exception>
+        </member>
+        <member name="T:Ninject.Infrastructure.Language.ExtensionsForMemberInfo">
+            <summary>
+            Provides extension methods for <see cref="T:System.Reflection.MemberInfo"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForMemberInfo.HasAttribute``1(System.Reflection.MemberInfo)">
+            <summary>
+            Determines whether the specified member has attribute.
+            </summary>
+            <typeparam name="T">The type of the attribute.</typeparam>
+            <param name="member">The member.</param>
+            <returns>
+            <c>true</c> if the specified member has attribute; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForMemberInfo.HasAttribute(System.Reflection.MemberInfo,System.Type)">
+            <summary>
+            Determines whether the specified member has attribute.
+            </summary>
+            <param name="member">The member.</param>
+            <param name="type">The type of the attribute.</param>
+            <returns>
+            <c>true</c> if the specified member has attribute; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForMemberInfo.GetPropertyFromDeclaredType(System.Reflection.MemberInfo,System.Reflection.PropertyInfo,System.Reflection.BindingFlags)">
+            <summary>
+            Gets the property info from its declared tpe.
+            </summary>
+            <param name="memberInfo">The member info.</param>
+            <param name="propertyDefinition">The property definition.</param>
+            <param name="flags">The flags.</param>
+            <returns>The property info from the declared type of the property.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForMemberInfo.IsPrivate(System.Reflection.PropertyInfo)">
+            <summary>
+            Determines whether the specified property info is private.
+            </summary>
+            <param name="propertyInfo">The property info.</param>
+            <returns>
+            <c>true</c> if the specified property info is private; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForMemberInfo.GetCustomAttributesExtended(System.Reflection.MemberInfo,System.Type,System.Boolean)">
+            <summary>
+            Gets the custom attributes.
+            This version is able to get custom attributes for properties from base types even if the property is non-public.
+            </summary>
+            <param name="member">The member.</param>
+            <param name="attributeType">Type of the attribute.</param>
+            <param name="inherited">if set to <c>true</c> [inherited].</param>
+            <returns>The custom attributes.</returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.Language.ExtensionsForTargetInvocationException">
+            <summary>
+            Provides extension methods for <see cref="T:System.Reflection.TargetInvocationException"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForTargetInvocationException.RethrowInnerException(System.Reflection.TargetInvocationException)">
+            <summary>
+            Re-throws inner exception.
+            </summary>
+            <param name="exception">The <see cref="T:System.Reflection.TargetInvocationException"/>.</param>
+        </member>
+        <member name="T:Ninject.Infrastructure.Language.ExtensionsForType">
+            <summary>
+            Extension methods for <see cref="T:System.Type"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForType.GetAllBaseTypes(System.Type)">
+            <summary>
+            Gets an enumerable containing the given type and all its base types
+            </summary>
+            <param name="type">The type.</param>
+            <returns>An enumerable containing the given type and all its base types</returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.Multimap`2">
+            <summary>
+            A data structure that contains multiple values for a each key.
+            </summary>
+            <typeparam name="TKey">The type of key.</typeparam>
+            <typeparam name="TValue">The type of value.</typeparam>
+        </member>
+        <member name="P:Ninject.Infrastructure.Multimap`2.Keys">
+            <summary>
+            Gets the collection of keys.
+            </summary>
+        </member>
+        <member name="P:Ninject.Infrastructure.Multimap`2.Values">
+            <summary>
+            Gets the collection of collections of values.
+            </summary>
+        </member>
+        <member name="P:Ninject.Infrastructure.Multimap`2.Item(`0)">
+            <summary>
+            Gets the collection of values stored under the specified key.
+            </summary>
+            <param name="key">The key.</param>
+        </member>
+        <member name="M:Ninject.Infrastructure.Multimap`2.Add(`0,`1)">
+            <summary>
+            Adds the specified value for the specified key.
+            </summary>
+            <param name="key">The key.</param>
+            <param name="value">The value.</param>
+        </member>
+        <member name="M:Ninject.Infrastructure.Multimap`2.Remove(`0,`1)">
+            <summary>
+            Removes the specified value for the specified key.
+            </summary>
+            <param name="key">The key.</param>
+            <param name="value">The value.</param>
+            <returns><c>True</c> if such a value existed and was removed; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Multimap`2.RemoveAll(`0)">
+            <summary>
+            Removes all values for the specified key.
+            </summary>
+            <param name="key">The key.</param>
+            <returns><c>True</c> if any such values existed; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Multimap`2.Clear">
+            <summary>
+            Removes all values.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Multimap`2.ContainsKey(`0)">
+            <summary>
+            Determines whether the multimap contains any values for the specified key.
+            </summary>
+            <param name="key">The key.</param>
+            <returns><c>True</c> if the multimap has one or more values for the specified key; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Multimap`2.ContainsValue(`0,`1)">
+            <summary>
+            Determines whether the multimap contains the specified value for the specified key.
+            </summary>
+            <param name="key">The key.</param>
+            <param name="value">The value.</param>
+            <returns><c>True</c> if the multimap contains such a value; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Multimap`2.GetEnumerator">
+            <summary>
+            Returns an enumerator that iterates through a the multimap.
+            </summary>
+            <returns>An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the multimap.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Multimap`2.System#Collections#Generic#IEnumerable{System#Collections#Generic#KeyValuePair{TKey,System#Collections#Generic#ICollection{TValue}}}#GetEnumerator">
+            <summary>
+            Returns an enumerator that iterates through a the multimap.
+            </summary>
+            <returns>An <see cref="T:System.Collections.Generic.IEnumerator`1"/> object that can be used to iterate through the multimap.</returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.ReferenceEqualWeakReference">
+            <summary>
+            Weak reference that can be used in collections. It is equal to the
+            object it references and has the same hash code.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.ReferenceEqualWeakReference.#ctor(System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Infrastructure.ReferenceEqualWeakReference"/> class.
+            </summary>
+            <param name="target">The target.</param>
+        </member>
+        <member name="M:Ninject.Infrastructure.ReferenceEqualWeakReference.#ctor(System.Object,System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Infrastructure.ReferenceEqualWeakReference"/> class.
+            </summary>
+            <param name="target">The target.</param>
+            <param name="trackResurrection">if set to <c>true</c> [track resurrection].</param>
+        </member>
+        <member name="M:Ninject.Infrastructure.ReferenceEqualWeakReference.Equals(System.Object)">
+            <summary>
+            Determines whether the specified <see cref="T:System.Object"/> is equal to this instance.
+            </summary>
+            <param name="obj">The <see cref="T:System.Object"/> to compare with this instance.</param>
+            <returns>
+                <c>true</c> if the specified <see cref="T:System.Object"/> is equal to this instance; otherwise, <c>false</c>.
+            </returns>
+            <exception cref="T:System.NullReferenceException">
+            The <paramref name="obj"/> parameter is null.
+            </exception>
+        </member>
+        <member name="M:Ninject.Infrastructure.ReferenceEqualWeakReference.GetHashCode">
+            <summary>
+            Returns a hash code for this instance.
+            </summary>
+            <returns>
+            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+            </returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.StandardScopeCallbacks">
+            <summary>
+            Scope callbacks for standard scopes.
+            </summary>
+        </member>
+        <member name="F:Ninject.Infrastructure.StandardScopeCallbacks.Transient">
+            <summary>
+            Gets the callback for transient scope.
+            </summary>
+        </member>
+        <member name="F:Ninject.Infrastructure.StandardScopeCallbacks.Singleton">
+            <summary>
+            Gets the callback for singleton scope.
+            </summary>
+        </member>
+        <member name="F:Ninject.Infrastructure.StandardScopeCallbacks.Thread">
+            <summary>
+            Gets the callback for thread scope.
+            </summary>
+        </member>
+        <member name="T:Ninject.INinjectSettings">
+            <summary>
+            Contains configuration options for Ninject.
+            </summary>
+        </member>
+        <member name="P:Ninject.INinjectSettings.InjectAttribute">
+            <summary>
+            Gets the attribute that indicates that a member should be injected.
+            </summary>
+        </member>
+        <member name="P:Ninject.INinjectSettings.CachePruningInterval">
+            <summary>
+            Gets the interval at which the cache should be pruned.
+            </summary>
+        </member>
+        <member name="P:Ninject.INinjectSettings.DefaultScopeCallback">
+            <summary>
+            Gets the default scope callback.
+            </summary>
+        </member>
+        <member name="P:Ninject.INinjectSettings.LoadExtensions">
+            <summary>
+            Gets a value indicating whether the kernel should automatically load extensions at startup.
+            </summary>
+        </member>
+        <member name="P:Ninject.INinjectSettings.ExtensionSearchPatterns">
+            <summary>
+            Gets the paths that should be searched for extensions.
+            </summary>
+        </member>
+        <member name="P:Ninject.INinjectSettings.UseReflectionBasedInjection">
+            <summary>
+            Gets a value indicating whether Ninject should use reflection-based injection instead of
+            the (usually faster) lightweight code generation system.
+            </summary>
+        </member>
+        <member name="P:Ninject.INinjectSettings.InjectNonPublic">
+            <summary>
+            Gets or sets a value indicating whether Ninject should inject non public members.
+            </summary>
+        </member>
+        <member name="P:Ninject.INinjectSettings.InjectParentPrivateProperties">
+            <summary>
+            Gets or sets a value indicating whether Ninject should inject private properties of base classes.
+            </summary>
+            <remarks>
+            Activating this setting has an impact on the performance. It is recommended not
+            to use this feature and use constructor injection instead.
+            </remarks>
+        </member>
+        <member name="P:Ninject.INinjectSettings.ActivationCacheDisabled">
+            <summary>
+            Gets or sets a value indicating whether the activation cache is disabled.
+            If the activation cache is disabled less memory is used. But in some cases
+            instances are activated or deactivated multiple times. e.g. in the following scenario:
+            Bind{A}().ToSelf();
+            Bind{IA}().ToMethod(ctx => kernel.Get{IA}();
+            </summary>
+            <value>
+                <c>true</c> if activation cache is disabled; otherwise, <c>false</c>.
+            </value>
+        </member>
+        <member name="P:Ninject.INinjectSettings.AllowNullInjection">
+            <summary>
+            Gets or sets a value indicating whether Null is a valid value for injection.
+            By default this is disabled and whenever a provider returns null an exception is thrown.
+            </summary>
+            <value><c>true</c> if null is allowed as injected value otherwise false.</value>
+        </member>
+        <member name="M:Ninject.INinjectSettings.Get``1(System.String,``0)">
+            <summary>
+            Gets the value for the specified key.
+            </summary>
+            <typeparam name="T">The type of value to return.</typeparam>
+            <param name="key">The setting's key.</param>
+            <param name="defaultValue">The value to return if no setting is available.</param>
+            <returns>The value, or the default value if none was found.</returns>
+        </member>
+        <member name="M:Ninject.INinjectSettings.Set(System.String,System.Object)">
+            <summary>
+            Sets the value for the specified key.
+            </summary>
+            <param name="key">The setting's key.</param>
+            <param name="value">The setting's value.</param>
+        </member>
+        <member name="T:Ninject.Injection.ConstructorInjector">
+            <summary>
+            Represents a delegate that can inject values into a constructor.
+            </summary>
+            <param name="arguments">The arguments used for the constructor.</param>
+            <returns>An object created from the constructor.</returns>
+        </member>
+        <member name="T:Ninject.Injection.DynamicMethodInjectorFactory">
+            <summary>
+            Creates injectors for members via <see cref="T:System.Reflection.Emit.DynamicMethod"/>s.
+            </summary>
+        </member>
+        <member name="M:Ninject.Injection.DynamicMethodInjectorFactory.Create(System.Reflection.ConstructorInfo)">
+            <summary>
+            Gets or creates an injector for the specified constructor.
+            </summary>
+            <param name="constructor">The constructor.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="M:Ninject.Injection.DynamicMethodInjectorFactory.Create(System.Reflection.PropertyInfo)">
+            <summary>
+            Gets or creates an injector for the specified property.
+            </summary>
+            <param name="property">The property.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="M:Ninject.Injection.DynamicMethodInjectorFactory.Create(System.Reflection.MethodInfo)">
+            <summary>
+            Gets or creates an injector for the specified method.
+            </summary>
+            <param name="method">The method.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="T:Ninject.Injection.IInjectorFactory">
+            <summary>
+            Creates injectors from members.
+            </summary>
+        </member>
+        <member name="M:Ninject.Injection.IInjectorFactory.Create(System.Reflection.ConstructorInfo)">
+            <summary>
+            Gets or creates an injector for the specified constructor.
+            </summary>
+            <param name="constructor">The constructor.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="M:Ninject.Injection.IInjectorFactory.Create(System.Reflection.PropertyInfo)">
+            <summary>
+            Gets or creates an injector for the specified property.
+            </summary>
+            <param name="property">The property.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="M:Ninject.Injection.IInjectorFactory.Create(System.Reflection.MethodInfo)">
+            <summary>
+            Gets or creates an injector for the specified method.
+            </summary>
+            <param name="method">The method.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="T:Ninject.Injection.MethodInjector">
+            <summary>
+            Represents a delegate that can inject values into a method.
+            </summary>
+            <param name="target">The method info.</param>
+            <param name="arguments">The arguments used for the method.</param>
+        </member>
+        <member name="T:Ninject.Injection.PropertyInjector">
+            <summary>
+            Represents a delegate that can inject values into a property.
+            </summary>
+            <param name="target">The property info.</param>
+            <param name="value">The value to be injected to the property.</param>
+        </member>
+        <member name="T:Ninject.Injection.ReflectionInjectorFactory">
+            <summary>
+            Creates injectors from members via reflective invocation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Injection.ReflectionInjectorFactory.Create(System.Reflection.ConstructorInfo)">
+            <summary>
+            Gets or creates an injector for the specified constructor.
+            </summary>
+            <param name="constructor">The constructor.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="M:Ninject.Injection.ReflectionInjectorFactory.Create(System.Reflection.PropertyInfo)">
+            <summary>
+            Gets or creates an injector for the specified property.
+            </summary>
+            <param name="property">The property.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="M:Ninject.Injection.ReflectionInjectorFactory.Create(System.Reflection.MethodInfo)">
+            <summary>
+            Gets or creates an injector for the specified method.
+            </summary>
+            <param name="method">The method.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="T:Ninject.IStartable">
+            <summary>
+            A service that is started when activated, and stopped when deactivated.
+            </summary>
+        </member>
+        <member name="M:Ninject.IStartable.Start">
+            <summary>
+            Starts this instance. Called during activation.
+            </summary>
+        </member>
+        <member name="M:Ninject.IStartable.Stop">
+            <summary>
+            Stops this instance. Called during deactivation.
+            </summary>
+        </member>
+        <member name="T:Ninject.KernelBase">
+            <summary>
+            The base implementation of an <see cref="T:Ninject.IKernel"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.KernelBase.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.KernelBase"/> class.
+            </summary>
+        </member>
+        <member name="M:Ninject.KernelBase.#ctor(Ninject.Modules.INinjectModule[])">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.KernelBase"/> class.
+            </summary>
+            <param name="modules">The modules to load into the kernel.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.#ctor(Ninject.INinjectSettings,Ninject.Modules.INinjectModule[])">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.KernelBase"/> class.
+            </summary>
+            <param name="settings">The configuration to use.</param>
+            <param name="modules">The modules to load into the kernel.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.#ctor(Ninject.Components.IComponentContainer,Ninject.INinjectSettings,Ninject.Modules.INinjectModule[])">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.KernelBase"/> class.
+            </summary>
+            <param name="components">The component container to use.</param>
+            <param name="settings">The configuration to use.</param>
+            <param name="modules">The modules to load into the kernel.</param>
+        </member>
+        <member name="P:Ninject.KernelBase.Settings">
+            <summary>
+            Gets the kernel settings.
+            </summary>
+        </member>
+        <member name="P:Ninject.KernelBase.Components">
+            <summary>
+            Gets the component container, which holds components that contribute to Ninject.
+            </summary>
+        </member>
+        <member name="M:Ninject.KernelBase.Dispose(System.Boolean)">
+            <summary>
+            Releases resources held by the object.
+            </summary>
+            <param name="disposing"><c>True</c> if called manually, otherwise by GC.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.Unbind(System.Type)">
+            <summary>
+            Unregisters all bindings for the specified service.
+            </summary>
+            <param name="service">The service to unbind.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.AddBinding(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Registers the specified binding.
+            </summary>
+            <param name="binding">The binding to add.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.RemoveBinding(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Unregisters the specified binding.
+            </summary>
+            <param name="binding">The binding to remove.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.HasModule(System.String)">
+            <summary>
+            Determines whether a module with the specified name has been loaded in the kernel.
+            </summary>
+            <param name="name">The name of the module.</param>
+            <returns><c>True</c> if the specified module has been loaded; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.GetModules">
+            <summary>
+            Gets the modules that have been loaded into the kernel.
+            </summary>
+            <returns>A series of loaded modules.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.Load(System.Collections.Generic.IEnumerable{Ninject.Modules.INinjectModule})">
+            <summary>
+            Loads the module(s) into the kernel.
+            </summary>
+            <param name="m">The modules to load.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.Load(System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            Loads modules from the files that match the specified pattern(s).
+            </summary>
+            <param name="filePatterns">The file patterns (i.e. "*.dll", "modules/*.rb") to match.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.Load(System.Collections.Generic.IEnumerable{System.Reflection.Assembly})">
+            <summary>
+            Loads modules defined in the specified assemblies.
+            </summary>
+            <param name="assemblies">The assemblies to search.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.Unload(System.String)">
+            <summary>
+            Unloads the plugin with the specified name.
+            </summary>
+            <param name="name">The plugin's name.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.Inject(System.Object,Ninject.Parameters.IParameter[])">
+            <summary>
+            Injects the specified existing instance, without managing its lifecycle.
+            </summary>
+            <param name="instance">The instance to inject.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.Release(System.Object)">
+            <summary>
+            Deactivates and releases the specified instance if it is currently managed by Ninject.
+            </summary>
+            <param name="instance">The instance to release.</param>
+            <returns><see langword="True"/> if the instance was found and released; otherwise <see langword="false"/>.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.CanResolve(Ninject.Activation.IRequest)">
+            <summary>
+            Determines whether the specified request can be resolved.
+            </summary>
+            <param name="request">The request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.CanResolve(Ninject.Activation.IRequest,System.Boolean)">
+            <summary>
+            Determines whether the specified request can be resolved.
+            </summary>
+            <param name="request">The request.</param>
+            <param name="ignoreImplicitBindings">if set to <c>true</c> implicit bindings are ignored.</param>
+            <returns>
+                <c>True</c> if the request can be resolved; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.KernelBase.Resolve(Ninject.Activation.IRequest)">
+            <summary>
+            Resolves instances for the specified request. The instances are not actually resolved
+            until a consumer iterates over the enumerator.
+            </summary>
+            <param name="request">The request to resolve.</param>
+            <returns>An enumerator of instances that match the request.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.CreateRequest(System.Type,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},System.Collections.Generic.IEnumerable{Ninject.Parameters.IParameter},System.Boolean,System.Boolean)">
+            <summary>
+            Creates a request for the specified service.
+            </summary>
+            <param name="service">The service that is being requested.</param>
+            <param name="constraint">The constraint to apply to the bindings to determine if they match the request.</param>
+            <param name="parameters">The parameters to pass to the resolution.</param>
+            <param name="isOptional"><c>True</c> if the request is optional; otherwise, <c>false</c>.</param>
+            <param name="isUnique"><c>True</c> if the request should return a unique result; otherwise, <c>false</c>.</param>
+            <returns>The created request.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.BeginBlock">
+            <summary>
+            Begins a new activation block, which can be used to deterministically dispose resolved instances.
+            </summary>
+            <returns>The new activation block.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.GetBindings(System.Type)">
+            <summary>
+            Gets the bindings registered for the specified service.
+            </summary>
+            <param name="service">The service in question.</param>
+            <returns>A series of bindings that are registered for the service.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.System#IServiceProvider#GetService(System.Type)">
+            <summary>
+            Gets the service object of the specified type.
+            </summary>
+            <param name="service">The service type.</param>
+            <returns>The service object</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.SatifiesRequest(Ninject.Activation.IRequest)">
+            <summary>
+            Returns a predicate that can determine if a given IBinding matches the request.
+            </summary>
+            <param name="request">The request/</param>
+            <returns>A predicate that can determine if a given IBinding matches the request.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.AddComponents">
+            <summary>
+            Adds components to the kernel during startup.
+            </summary>
+        </member>
+        <member name="M:Ninject.KernelBase.HandleMissingBinding(Ninject.Activation.IRequest)">
+            <summary>
+            Attempts to handle a missing binding for a request.
+            </summary>
+            <param name="request">The request.</param>
+            <returns><c>True</c> if the missing binding can be handled; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.CreateContext(Ninject.Activation.IRequest,Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Creates a context for the specified request and binding.
+            </summary>
+            <param name="request">The request.</param>
+            <param name="binding">The binding.</param>
+            <returns>The created context.</returns>
+        </member>
+        <member name="T:Ninject.Modules.AssemblyNameRetriever">
+            <summary>
+            Retrieves assembly names from file names using a temporary app domain.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.AssemblyNameRetriever.GetAssemblyNames(System.Collections.Generic.IEnumerable{System.String},System.Predicate{System.Reflection.Assembly})">
+            <summary>
+            Gets all assembly names of the assemblies in the given files that match the filter.
+            </summary>
+            <param name="filenames">The filenames.</param>
+            <param name="filter">The filter.</param>
+            <returns>All assembly names of the assemblies in the given files that match the filter.</returns>
+        </member>
+        <member name="M:Ninject.Modules.AssemblyNameRetriever.CreateTemporaryAppDomain">
+            <summary>
+            Creates a temporary app domain.
+            </summary>
+            <returns>The created app domain.</returns>
+        </member>
+        <member name="T:Ninject.Modules.AssemblyNameRetriever.AssemblyChecker">
+            <summary>
+            This class is loaded into the temporary appdomain to load and check if the assemblies match the filter.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.AssemblyNameRetriever.AssemblyChecker.GetAssemblyNames(System.Collections.Generic.IEnumerable{System.String},System.Predicate{System.Reflection.Assembly})">
+            <summary>
+            Gets the assembly names of the assemblies matching the filter.
+            </summary>
+            <param name="filenames">The filenames.</param>
+            <param name="filter">The filter.</param>
+            <returns>All assembly names of the assemblies matching the filter.</returns>
+        </member>
+        <member name="T:Ninject.Modules.CompiledModuleLoaderPlugin">
+            <summary>
+            Loads modules from compiled assemblies.
+            </summary>
+        </member>
+        <member name="F:Ninject.Modules.CompiledModuleLoaderPlugin.Extensions">
+            <summary>
+            The file extensions that are supported.
+            </summary>
+        </member>
+        <member name="F:Ninject.Modules.CompiledModuleLoaderPlugin.assemblyNameRetriever">
+            <summary>
+            The assembly name retriever.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.CompiledModuleLoaderPlugin.#ctor(Ninject.IKernel,Ninject.Modules.IAssemblyNameRetriever)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Modules.CompiledModuleLoaderPlugin"/> class.
+            </summary>
+            <param name="kernel">The kernel into which modules will be loaded.</param>
+            <param name="assemblyNameRetriever">The assembly name retriever.</param>
+        </member>
+        <member name="P:Ninject.Modules.CompiledModuleLoaderPlugin.Kernel">
+            <summary>
+            Gets the kernel into which modules will be loaded.
+            </summary>
+        </member>
+        <member name="P:Ninject.Modules.CompiledModuleLoaderPlugin.SupportedExtensions">
+            <summary>
+            Gets the file extensions that the plugin understands how to load.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.CompiledModuleLoaderPlugin.LoadModules(System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            Loads modules from the specified files.
+            </summary>
+            <param name="filenames">The names of the files to load modules from.</param>
+        </member>
+        <member name="T:Ninject.Modules.IAssemblyNameRetriever">
+            <summary>
+            Retrieves assembly names from file names using a temporary app domain.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.IAssemblyNameRetriever.GetAssemblyNames(System.Collections.Generic.IEnumerable{System.String},System.Predicate{System.Reflection.Assembly})">
+            <summary>
+            Gets all assembly names of the assemblies in the given files that match the filter.
+            </summary>
+            <param name="filenames">The filenames.</param>
+            <param name="filter">The filter.</param>
+            <returns>All assembly names of the assemblies in the given files that match the filter.</returns>
+        </member>
+        <member name="T:Ninject.Modules.IModuleLoader">
+            <summary>
+            Finds modules defined in external files.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.IModuleLoader.LoadModules(System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            Loads any modules found in the files that match the specified patterns.
+            </summary>
+            <param name="patterns">The patterns to search.</param>
+        </member>
+        <member name="T:Ninject.Modules.IModuleLoaderPlugin">
+            <summary>
+            Loads modules at runtime by searching external files.
+            </summary>
+        </member>
+        <member name="P:Ninject.Modules.IModuleLoaderPlugin.SupportedExtensions">
+            <summary>
+            Gets the file extensions that the plugin understands how to load.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.IModuleLoaderPlugin.LoadModules(System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            Loads modules from the specified files.
+            </summary>
+            <param name="filenames">The names of the files to load modules from.</param>
+        </member>
+        <member name="T:Ninject.Modules.INinjectModule">
+            <summary>
+            A pluggable unit that can be loaded into an <see cref="T:Ninject.IKernel"/>.
+            </summary>
+        </member>
+        <member name="P:Ninject.Modules.INinjectModule.Name">
+            <summary>
+            Gets the module's name.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.INinjectModule.OnLoad(Ninject.IKernel)">
+            <summary>
+            Called when the module is loaded into a kernel.
+            </summary>
+            <param name="kernel">The kernel that is loading the module.</param>
+        </member>
+        <member name="M:Ninject.Modules.INinjectModule.OnUnload(Ninject.IKernel)">
+            <summary>
+            Called when the module is unloaded from a kernel.
+            </summary>
+            <param name="kernel">The kernel that is unloading the module.</param>
+        </member>
+        <member name="M:Ninject.Modules.INinjectModule.OnVerifyRequiredModules">
+            <summary>
+            Called after loading the modules. A module can verify here if all other required modules are loaded.
+            </summary>
+        </member>
+        <member name="T:Ninject.Modules.ModuleLoader">
+            <summary>
+            Automatically finds and loads modules from assemblies.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.ModuleLoader.#ctor(Ninject.IKernel)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Modules.ModuleLoader"/> class.
+            </summary>
+            <param name="kernel">The kernel into which modules will be loaded.</param>
+        </member>
+        <member name="P:Ninject.Modules.ModuleLoader.Kernel">
+            <summary>
+            Gets the kernel into which modules will be loaded.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.ModuleLoader.LoadModules(System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            Loads any modules found in the files that match the specified patterns.
+            </summary>
+            <param name="patterns">The patterns to search.</param>
+        </member>
+        <member name="T:Ninject.Modules.NinjectModule">
+            <summary>
+            A loadable unit that defines bindings for your application.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Modules.NinjectModule"/> class.
+            </summary>
+        </member>
+        <member name="P:Ninject.Modules.NinjectModule.Kernel">
+            <summary>
+            Gets the kernel that the module is loaded into.
+            </summary>
+        </member>
+        <member name="P:Ninject.Modules.NinjectModule.Name">
+            <summary>
+            Gets the module's name. Only a single module with a given name can be loaded at one time.
+            </summary>
+        </member>
+        <member name="P:Ninject.Modules.NinjectModule.Bindings">
+            <summary>
+            Gets the bindings that were registered by the module.
+            </summary>
+        </member>
+        <member name="P:Ninject.Modules.NinjectModule.KernelInstance">
+            <summary>
+            Gets the kernel.
+            </summary>
+            <value>The kernel.</value>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.OnLoad(Ninject.IKernel)">
+            <summary>
+            Called when the module is loaded into a kernel.
+            </summary>
+            <param name="kernel">The kernel that is loading the module.</param>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.OnUnload(Ninject.IKernel)">
+            <summary>
+            Called when the module is unloaded from a kernel.
+            </summary>
+            <param name="kernel">The kernel that is unloading the module.</param>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.OnVerifyRequiredModules">
+            <summary>
+            Called after loading the modules. A module can verify here if all other required modules are loaded.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.Load">
+            <summary>
+            Loads the module into the kernel.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.Unload">
+            <summary>
+            Unloads the module from the kernel.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.VerifyRequiredModulesAreLoaded">
+            <summary>
+            Called after loading the modules. A module can verify here if all other required modules are loaded.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.Unbind(System.Type)">
+            <summary>
+            Unregisters all bindings for the specified service.
+            </summary>
+            <param name="service">The service to unbind.</param>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.AddBinding(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Registers the specified binding.
+            </summary>
+            <param name="binding">The binding to add.</param>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.RemoveBinding(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Unregisters the specified binding.
+            </summary>
+            <param name="binding">The binding to remove.</param>
+        </member>
+        <member name="T:Ninject.NinjectSettings">
+            <summary>
+            Contains configuration options for Ninject.
+            </summary>
+        </member>
+        <member name="P:Ninject.NinjectSettings.InjectAttribute">
+            <summary>
+            Gets or sets the attribute that indicates that a member should be injected.
+            </summary>
+        </member>
+        <member name="P:Ninject.NinjectSettings.CachePruningInterval">
+            <summary>
+            Gets or sets the interval at which the GC should be polled.
+            </summary>
+        </member>
+        <member name="P:Ninject.NinjectSettings.DefaultScopeCallback">
+            <summary>
+            Gets or sets the default scope callback.
+            </summary>
+        </member>
+        <member name="P:Ninject.NinjectSettings.LoadExtensions">
+            <summary>
+            Gets or sets a value indicating whether the kernel should automatically load extensions at startup.
+            </summary>
+        </member>
+        <member name="P:Ninject.NinjectSettings.ExtensionSearchPatterns">
+            <summary>
+            Gets or sets the paths that should be searched for extensions.
+            </summary>
+        </member>
+        <member name="P:Ninject.NinjectSettings.UseReflectionBasedInjection">
+            <summary>
+            Gets or sets a value indicating whether Ninject should use reflection-based injection instead of
+            the (usually faster) lightweight code generation system.
+            </summary>
+        </member>
+        <member name="P:Ninject.NinjectSettings.InjectNonPublic">
+            <summary>
+            Gets or sets a value indicating whether Ninject should inject non public members.
+            </summary>
+        </member>
+        <member name="P:Ninject.NinjectSettings.InjectParentPrivateProperties">
+            <summary>
+            Gets or sets a value indicating whether Ninject should inject private properties of base classes.
+            </summary>
+            <remarks>
+            Activating this setting has an impact on the performance. It is recommended not
+            to use this feature and use constructor injection instead.
+            </remarks>
+        </member>
+        <member name="P:Ninject.NinjectSettings.ActivationCacheDisabled">
+            <summary>
+            Gets or sets a value indicating whether the activation cache is disabled.
+            If the activation cache is disabled less memory is used. But in some cases
+            instances are activated or deactivated multiple times. e.g. in the following scenario:
+            Bind{A}().ToSelf();
+            Bind{IA}().ToMethod(ctx =&gt; kernel.Get{IA}();
+            </summary>
+            <value>
+            <c>true</c> if activation cache is disabled; otherwise, <c>false</c>.
+            </value>
+        </member>
+        <member name="P:Ninject.NinjectSettings.AllowNullInjection">
+            <summary>
+            Gets or sets a value indicating whether Null is a valid value for injection.
+            By default this is disabled and whenever a provider returns null an exception is thrown.
+            </summary>
+            <value>
+            <c>true</c> if null is allowed as injected value otherwise false.
+            </value>
+        </member>
+        <member name="M:Ninject.NinjectSettings.Get``1(System.String,``0)">
+            <summary>
+            Gets the value for the specified key.
+            </summary>
+            <typeparam name="T">The type of value to return.</typeparam>
+            <param name="key">The setting's key.</param>
+            <param name="defaultValue">The value to return if no setting is available.</param>
+            <returns>The value, or the default value if none was found.</returns>
+        </member>
+        <member name="M:Ninject.NinjectSettings.Set(System.String,System.Object)">
+            <summary>
+            Sets the value for the specified key.
+            </summary>
+            <param name="key">The setting's key.</param>
+            <param name="value">The setting's value.</param>
+        </member>
+        <member name="T:Ninject.Parameters.ConstructorArgument">
+            <summary>
+            Overrides the injected value of a constructor argument.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.ConstructorArgument.#ctor(System.String,System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.ConstructorArgument"/> class.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="value">The value to inject into the property.</param>
+        </member>
+        <member name="M:Ninject.Parameters.ConstructorArgument.#ctor(System.String,System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.ConstructorArgument"/> class.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="valueCallback">The callback to invoke to get the value that should be injected.</param>
+        </member>
+        <member name="M:Ninject.Parameters.ConstructorArgument.#ctor(System.String,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.ConstructorArgument"/> class.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="valueCallback">The callback to invoke to get the value that should be injected.</param>
+        </member>
+        <member name="M:Ninject.Parameters.ConstructorArgument.#ctor(System.String,System.Object,System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.ConstructorArgument"/> class.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="value">The value to inject into the property.</param>
+            <param name="shouldInherit">Whether the parameter should be inherited into child requests.</param>
+        </member>
+        <member name="M:Ninject.Parameters.ConstructorArgument.#ctor(System.String,System.Func{Ninject.Activation.IContext,System.Object},System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.ConstructorArgument"/> class.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="valueCallback">The callback to invoke to get the value that should be injected.</param>
+            <param name="shouldInherit">if set to <c>true</c> [should inherit].</param>
+        </member>
+        <member name="M:Ninject.Parameters.ConstructorArgument.#ctor(System.String,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object},System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.ConstructorArgument"/> class.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="valueCallback">The callback to invoke to get the value that should be injected.</param>
+            <param name="shouldInherit">if set to <c>true</c> [should inherit].</param>
+        </member>
+        <member name="M:Ninject.Parameters.ConstructorArgument.AppliesToTarget(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Determines if the parameter applies to the given target.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>
+            True if the parameter applies in the specified context to the specified target.
+            </returns>
+            <remarks>
+            Only one parameter may return true.
+            </remarks>
+        </member>
+        <member name="T:Ninject.Parameters.IConstructorArgument">
+            <summary>
+            Defines the interface for constructor arguments.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.IConstructorArgument.AppliesToTarget(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Determines if the parameter applies to the given target.
+            </summary>
+            <remarks>
+            Only one parameter may return true.
+            </remarks>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>True if the parameter applies in the specified context to the specified target.</returns>
+        </member>
+        <member name="T:Ninject.Parameters.IParameter">
+            <summary>
+            Modifies an activation process in some way.
+            </summary>
+        </member>
+        <member name="P:Ninject.Parameters.IParameter.Name">
+            <summary>
+            Gets the name of the parameter.
+            </summary>
+        </member>
+        <member name="P:Ninject.Parameters.IParameter.ShouldInherit">
+            <summary>
+            Gets a value indicating whether the parameter should be inherited into child requests.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.IParameter.GetValue(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Gets the value for the parameter within the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>The value for the parameter.</returns>
+        </member>
+        <member name="T:Ninject.Parameters.IPropertyValue">
+            <summary>
+            Overrides the injected value of a property.
+            </summary>
+        </member>
+        <member name="T:Ninject.Parameters.Parameter">
+            <summary>
+            Modifies an activation process in some way.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.Parameter.#ctor(System.String,System.Object,System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.Parameter"/> class.
+            </summary>
+            <param name="name">The name of the parameter.</param>
+            <param name="value">The value of the parameter.</param>
+            <param name="shouldInherit">Whether the parameter should be inherited into child requests.</param>
+        </member>
+        <member name="M:Ninject.Parameters.Parameter.#ctor(System.String,System.Func{Ninject.Activation.IContext,System.Object},System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.Parameter"/> class.
+            </summary>
+            <param name="name">The name of the parameter.</param>
+            <param name="valueCallback">The callback that will be triggered to get the parameter's value.</param>
+            <param name="shouldInherit">Whether the parameter should be inherited into child requests.</param>
+        </member>
+        <member name="M:Ninject.Parameters.Parameter.#ctor(System.String,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object},System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.Parameter"/> class.
+            </summary>
+            <param name="name">The name of the parameter.</param>
+            <param name="valueCallback">The callback that will be triggered to get the parameter's value.</param>
+            <param name="shouldInherit">Whether the parameter should be inherited into child requests.</param>
+        </member>
+        <member name="P:Ninject.Parameters.Parameter.Name">
+            <summary>
+            Gets the name of the parameter.
+            </summary>
+        </member>
+        <member name="P:Ninject.Parameters.Parameter.ShouldInherit">
+            <summary>
+            Gets a value indicating whether the parameter should be inherited into child requests.
+            </summary>
+        </member>
+        <member name="P:Ninject.Parameters.Parameter.ValueCallback">
+            <summary>
+            Gets the callback that will be triggered to get the parameter's value.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.Parameter.GetValue(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Gets the value for the parameter within the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>The value for the parameter.</returns>
+        </member>
+        <member name="M:Ninject.Parameters.Parameter.Equals(System.Object)">
+            <summary>
+            Determines whether the object equals the specified object.
+            </summary>
+            <param name="obj">An object to compare with this object.</param>
+            <returns><c>True</c> if the objects are equal; otherwise <c>false</c></returns>
+        </member>
+        <member name="M:Ninject.Parameters.Parameter.GetHashCode">
+            <summary>
+            Serves as a hash function for a particular type.
+            </summary>
+            <returns>A hash code for the object.</returns>
+        </member>
+        <member name="M:Ninject.Parameters.Parameter.Equals(Ninject.Parameters.IParameter)">
+            <summary>
+            Indicates whether the current object is equal to another object of the same type.
+            </summary>
+            <param name="other">An object to compare with this object.</param>
+            <returns><c>True</c> if the objects are equal; otherwise <c>false</c></returns>
+        </member>
+        <member name="T:Ninject.Parameters.PropertyValue">
+            <summary>
+            Overrides the injected value of a property.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.PropertyValue.#ctor(System.String,System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.PropertyValue"/> class.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="value">The value to inject into the property.</param>
+        </member>
+        <member name="M:Ninject.Parameters.PropertyValue.#ctor(System.String,System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.PropertyValue"/> class.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="valueCallback">The callback to invoke to get the value that should be injected.</param>
+        </member>
+        <member name="M:Ninject.Parameters.PropertyValue.#ctor(System.String,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.PropertyValue"/> class.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="valueCallback">The callback to invoke to get the value that should be injected.</param>
+        </member>
+        <member name="T:Ninject.Parameters.TypeMatchingConstructorArgument">
+            <summary>
+            Overrides the injected value of a constructor argument.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.TypeMatchingConstructorArgument.#ctor(System.Type,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.TypeMatchingConstructorArgument"/> class.
+            </summary>
+            <param name="type">The type of the argument to override.</param>
+            <param name="valueCallback">The callback that will be triggered to get the parameter's value.</param>
+        </member>
+        <member name="M:Ninject.Parameters.TypeMatchingConstructorArgument.#ctor(System.Type,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object},System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.TypeMatchingConstructorArgument"/> class.
+            </summary>
+            <param name="type">The type of the argument to override.</param>
+            <param name="valueCallback">The callback that will be triggered to get the parameter's value.</param>
+            <param name="shouldInherit">Whether the parameter should be inherited into child requests.</param>
+        </member>
+        <member name="P:Ninject.Parameters.TypeMatchingConstructorArgument.Name">
+            <summary>
+            Gets the name of the parameter.
+            </summary>
+        </member>
+        <member name="P:Ninject.Parameters.TypeMatchingConstructorArgument.ShouldInherit">
+            <summary>
+            Gets a value indicating whether the parameter should be inherited into child requests.
+            </summary>
+        </member>
+        <member name="P:Ninject.Parameters.TypeMatchingConstructorArgument.ValueCallback">
+            <summary>
+            Gets or sets the callback that will be triggered to get the parameter's value.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.TypeMatchingConstructorArgument.AppliesToTarget(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Determines if the parameter applies to the given target.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>
+            True if the parameter applies in the specified context to the specified target.
+            </returns>
+            <remarks>
+            Only one parameter may return true.
+            </remarks>
+        </member>
+        <member name="M:Ninject.Parameters.TypeMatchingConstructorArgument.GetValue(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Gets the value for the parameter within the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>The value for the parameter.</returns>
+        </member>
+        <member name="M:Ninject.Parameters.TypeMatchingConstructorArgument.Equals(Ninject.Parameters.IParameter)">
+            <summary>
+            Indicates whether the current object is equal to another object of the same type.
+            </summary>
+            <param name="other">An object to compare with this object.</param>
+            <returns><c>True</c> if the objects are equal; otherwise <c>false</c></returns>
+        </member>
+        <member name="M:Ninject.Parameters.TypeMatchingConstructorArgument.Equals(System.Object)">
+            <summary>
+            Determines whether the object equals the specified object.
+            </summary>
+            <param name="obj">An object to compare with this object.</param>
+            <returns><c>True</c> if the objects are equal; otherwise <c>false</c></returns>
+        </member>
+        <member name="M:Ninject.Parameters.TypeMatchingConstructorArgument.GetHashCode">
+            <summary>
+            Serves as a hash function for a particular type.
+            </summary>
+            <returns>A hash code for the object.</returns>
+        </member>
+        <member name="T:Ninject.Parameters.WeakConstructorArgument">
+            <summary>
+            Overrides the injected value of a constructor argument.
+            </summary>
+        </member>
+        <member name="F:Ninject.Parameters.WeakConstructorArgument.weakReference">
+            <summary>
+            A weak reference to the constructor argument value.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.WeakConstructorArgument.#ctor(System.String,System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.WeakConstructorArgument"/> class.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="value">The value to inject into the property.</param>
+        </member>
+        <member name="M:Ninject.Parameters.WeakConstructorArgument.#ctor(System.String,System.Object,System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.WeakConstructorArgument"/> class.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="value">The value to inject into the property.</param>
+            <param name="shouldInherit">Whether the parameter should be inherited into child requests.</param>
+        </member>
+        <member name="M:Ninject.Parameters.WeakConstructorArgument.AppliesToTarget(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Determines if the parameter applies to the given target.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>
+            True if the parameter applies in the specified context to the specified target.
+            </returns>
+            <remarks>
+            Only one parameter may return true.
+            </remarks>
+        </member>
+        <member name="T:Ninject.Parameters.WeakPropertyValue">
+            <summary>
+            Overrides the injected value of a property.
+            Keeps a weak reference to the value.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.WeakPropertyValue.#ctor(System.String,System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.WeakPropertyValue"/> class.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="value">The value to inject into the property.</param>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.Binding">
+            <summary>
+            Contains information about a service registration.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Binding.#ctor(System.Type)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.Binding"/> class.
+            </summary>
+            <param name="service">The service that is controlled by the binding.</param>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Binding.#ctor(System.Type,Ninject.Planning.Bindings.IBindingConfiguration)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.Binding"/> class.
+            </summary>
+            <param name="service">The service that is controlled by the binding.</param>
+            <param name="configuration">The binding configuration.</param>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.BindingConfiguration">
+            <summary>
+            Gets the binding configuration.
+            </summary>
+            <value>The binding configuration.</value>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.Service">
+            <summary>
+            Gets the service type that is controlled by the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.Metadata">
+            <summary>
+            Gets the binding's metadata.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.Target">
+            <summary>
+            Gets or sets the type of target for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.IsImplicit">
+            <summary>
+            Gets or sets a value indicating whether the binding was implicitly registered.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.IsConditional">
+            <summary>
+            Gets a value indicating whether the binding has a condition associated with it.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.Condition">
+            <summary>
+            Gets or sets the condition defined for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.ProviderCallback">
+            <summary>
+            Gets or sets the callback that returns the provider that should be used by the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.ScopeCallback">
+            <summary>
+            Gets or sets the callback that returns the object that will act as the binding's scope.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.Parameters">
+            <summary>
+            Gets the parameters defined for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.ActivationActions">
+            <summary>
+            Gets the actions that should be called after instances are activated via the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.DeactivationActions">
+            <summary>
+            Gets the actions that should be called before instances are deactivated via the binding.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Binding.GetProvider(Ninject.Activation.IContext)">
+            <summary>
+            Gets the provider for the binding.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The provider to use.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Binding.GetScope(Ninject.Activation.IContext)">
+            <summary>
+            Gets the scope for the binding, if any.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>
+            The object that will act as the scope, or <see langword="null"/> if the service is transient.
+            </returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Binding.Matches(Ninject.Activation.IRequest)">
+            <summary>
+            Determines whether the specified request satisfies the condition defined on the binding,
+            if one was defined.
+            </summary>
+            <param name="request">The request.</param>
+            <returns>
+                <c>True</c> if the request satisfies the condition; otherwise <c>false</c>.
+            </returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingBuilder">
+            <summary>
+            Provides a root for the fluent syntax associated with an <see cref="P:Ninject.Planning.Bindings.BindingBuilder.BindingConfiguration"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.#ctor(Ninject.Planning.Bindings.IBindingConfiguration,Ninject.IKernel,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.BindingBuilder"/> class.
+            </summary>
+            <param name="bindingConfiguration">The binding to build.</param>
+            <param name="kernel">The kernel.</param>
+            <param name="serviceNames">The names of the services.</param>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingBuilder.BindingConfiguration">
+            <summary>
+            Gets the binding being built.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingBuilder.Kernel">
+            <summary>
+            Gets the kernel.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingBuilder.ServiceNames">
+            <summary>
+            Gets the names of the services.
+            </summary>
+            <value>The names of the services.</value>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.InternalTo``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.InternalTo``1(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="T">The type of the returned syntax.</typeparam>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.InternalToConfiguration``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.InternalToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.InternalToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.ToProviderInternal``2">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.ToProviderInternal``1(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="T">The type of the returned fluent syntax</typeparam>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.InternalToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.AddConstructorArguments(System.Linq.Expressions.NewExpression,System.Linq.Expressions.ParameterExpression)">
+            <summary>
+            Adds the constructor arguments for the specified constructor expression.
+            </summary>
+            <param name="ctorExpression">The ctor expression.</param>
+            <param name="constructorArgumentSyntaxParameterExpression">The constructor argument syntax parameter expression.</param>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.AddConstructorArgument(System.Linq.Expressions.Expression,System.String,System.Linq.Expressions.ParameterExpression)">
+            <summary>
+            Adds a constructor argument for the specified argument expression.
+            </summary>
+            <param name="argument">The argument.</param>
+            <param name="argumentName">Name of the argument.</param>
+            <param name="constructorArgumentSyntaxParameterExpression">The constructor argument syntax parameter expression.</param>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingBuilder.ConstructorArgumentSyntax">
+            <summary>
+            Passed to ToConstructor to specify that a constructor value is Injected.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.ConstructorArgumentSyntax.#ctor(Ninject.Activation.IContext)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.BindingBuilder.ConstructorArgumentSyntax"/> class.
+            </summary>
+            <param name="context">The context.</param>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingBuilder.ConstructorArgumentSyntax.Context">
+            <summary>
+            Gets the context.
+            </summary>
+            <value>The context.</value>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.ConstructorArgumentSyntax.Inject``1">
+            <summary>
+            Specifies that the argument is injected.
+            </summary>
+            <typeparam name="T1">The type of the parameter</typeparam>
+            <returns>Not used. This interface has no implementation.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingBuilder`4">
+            <summary>
+            Provides a root for the fluent syntax associated with an <see cref="P:Ninject.Planning.Bindings.BindingBuilder.BindingConfiguration"/>.
+            </summary>
+            <typeparam name="T1">The first service type.</typeparam>
+            <typeparam name="T2">The second service type.</typeparam>
+            <typeparam name="T3">The third service type.</typeparam>
+            <typeparam name="T4">The fourth service type.</typeparam>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.#ctor(Ninject.Planning.Bindings.IBindingConfiguration,Ninject.IKernel,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.BindingBuilder`4"/> class.
+            </summary>
+            <param name="bindingConfigurationConfiguration">The binding to build.</param>
+            <param name="kernel">The kernel.</param>
+            <param name="serviceNames">The names of the services.</param>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.To``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.To(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.ToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.ToProvider``1">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.ToProvider``2">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.ToProvider(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.ToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.ToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.ToConstant``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingBuilder`3">
+            <summary>
+            Provides a root for the fluent syntax associated with an <see cref="P:Ninject.Planning.Bindings.BindingBuilder.BindingConfiguration"/>.
+            </summary>
+            <typeparam name="T1">The first service type.</typeparam>
+            <typeparam name="T2">The second service type.</typeparam>
+            <typeparam name="T3">The third service type.</typeparam>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.#ctor(Ninject.Planning.Bindings.IBindingConfiguration,Ninject.IKernel,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.BindingBuilder`3"/> class.
+            </summary>
+            <param name="bindingConfigurationConfiguration">The binding to build.</param>
+            <param name="kernel">The kernel.</param>
+            <param name="serviceNames">The names of the services.</param>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.To``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.To(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.ToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.ToProvider``1">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.ToProvider``2">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.ToProvider(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.ToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.ToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.ToConstant``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingBuilder`2">
+            <summary>
+            Provides a root for the fluent syntax associated with an <see cref="P:Ninject.Planning.Bindings.BindingBuilder.BindingConfiguration"/>.
+            </summary>
+            <typeparam name="T1">The first service type.</typeparam>
+            <typeparam name="T2">The second service type.</typeparam>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.#ctor(Ninject.Planning.Bindings.IBindingConfiguration,Ninject.IKernel,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.BindingBuilder`2"/> class.
+            </summary>
+            <param name="bindingConfigurationConfiguration">The binding to build.</param>
+            <param name="kernel">The kernel.</param>
+            <param name="serviceNames">The names of the services.</param>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.To``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.To(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.ToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.ToProvider``1">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.ToProvider``2">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.ToProvider(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.ToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.ToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.ToConstant``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingBuilder`1">
+            <summary>
+            Provides a root for the fluent syntax associated with an <see cref="P:Ninject.Planning.Bindings.BindingBuilder`1.Binding"/>.
+            </summary>
+            <typeparam name="T1">The service type.</typeparam>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.#ctor(Ninject.Planning.Bindings.IBinding,Ninject.IKernel,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.BindingBuilder`1"/> class.
+            </summary>
+            <param name="binding">The binding to build.</param>
+            <param name="kernel">The kernel.</param>
+            <param name="serviceNames">The names of the services.</param>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingBuilder`1.Binding">
+            <summary>
+            Gets the binding being built.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.ToSelf">
+            <summary>
+            Indicates that the service should be self-bound.
+            </summary>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.To``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.To(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.ToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.ToProvider``1">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.ToProvider(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.ToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.ToMethod(System.Func{Ninject.Activation.IContext,`0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.ToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.ToConstant``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingConfiguration">
+            <summary>
+            The configuration of a binding.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfiguration.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.BindingConfiguration"/> class.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.Metadata">
+            <summary>
+            Gets the binding's metadata.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.IsImplicit">
+            <summary>
+            Gets or sets a value indicating whether the binding was implicitly registered.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.IsConditional">
+            <summary>
+            Gets a value indicating whether the binding has a condition associated with it.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.Target">
+            <summary>
+            Gets or sets the type of target for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.Condition">
+            <summary>
+            Gets or sets the condition defined for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.ProviderCallback">
+            <summary>
+            Gets or sets the callback that returns the provider that should be used by the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.ScopeCallback">
+            <summary>
+            Gets or sets the callback that returns the object that will act as the binding's scope.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.Parameters">
+            <summary>
+            Gets the parameters defined for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.ActivationActions">
+            <summary>
+            Gets the actions that should be called after instances are activated via the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.DeactivationActions">
+            <summary>
+            Gets the actions that should be called before instances are deactivated via the binding.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfiguration.GetProvider(Ninject.Activation.IContext)">
+            <summary>
+            Gets the provider for the binding.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The provider to use.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfiguration.GetScope(Ninject.Activation.IContext)">
+            <summary>
+            Gets the scope for the binding, if any.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The object that will act as the scope, or <see langword="null"/> if the service is transient.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfiguration.Matches(Ninject.Activation.IRequest)">
+            <summary>
+            Determines whether the specified request satisfies the conditions defined on this binding.
+            </summary>
+            <param name="request">The request.</param>
+            <returns><c>True</c> if the request satisfies the conditions; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingConfigurationBuilder`1">
+            <summary>
+            Provides a root for the fluent syntax associated with an <see cref="P:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.BindingConfiguration"/>.
+            </summary>
+            <typeparam name="T">The implementation type of the built binding.</typeparam>
+        </member>
+        <member name="F:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.serviceNames">
+            <summary>
+            The names of the services added to the exceptions.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.#ctor(Ninject.Planning.Bindings.IBindingConfiguration,System.String,Ninject.IKernel)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.BindingConfigurationBuilder`1"/> class.
+            </summary>
+            <param name="bindingConfiguration">The binding configuration to build.</param>
+            <param name="serviceNames">The names of the configured services.</param>
+            <param name="kernel">The kernel.</param>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.BindingConfiguration">
+            <summary>
+            Gets the binding being built.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.Kernel">
+            <summary>
+            Gets the kernel.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.When(System.Func{Ninject.Activation.IRequest,System.Boolean})">
+            <summary>
+            Indicates that the binding should be used only for requests that support the specified condition.
+            </summary>
+            <param name="condition">The condition.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenInjectedInto``1">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            Types that derive from the specified type are considered as valid targets.
+            </summary>
+            <typeparam name="TParent">The type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenInjectedInto(System.Type)">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            Types that derive from the specified type are considered as valid targets.
+            </summary>
+            <param name="parent">The type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenInjectedInto(System.Type[])">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            Types that derive from the specified type are considered as valid targets.
+            </summary>
+            <param name="parents">The type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenInjectedExactlyInto``1">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            The type must match exactly the specified type. Types that derive from the specified type
+            will not be considered as valid target.
+            </summary>
+            <typeparam name="TParent">The type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenInjectedExactlyInto(System.Type)">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            The type must match exactly the specified type. Types that derive from the specified type
+            will not be considered as valid target.
+            </summary>
+            <param name="parent">The type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenInjectedExactlyInto(System.Type[])">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            The type must match exactly the specified type. Types that derive from the specified type
+            will not be considered as valid target.
+            Should match at least one of the specified targets
+            </summary>
+            <param name="parents">The types.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenClassHas``1">
+            <summary>
+            Indicates that the binding should be used only when the class being injected has
+            an attribute of the specified type.
+            </summary>
+            <typeparam name="TAttribute">The type of attribute.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenMemberHas``1">
+            <summary>
+            Indicates that the binding should be used only when the member being injected has
+            an attribute of the specified type.
+            </summary>
+            <typeparam name="TAttribute">The type of attribute.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenTargetHas``1">
+            <summary>
+            Indicates that the binding should be used only when the target being injected has
+            an attribute of the specified type.
+            </summary>
+            <typeparam name="TAttribute">The type of attribute.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenClassHas(System.Type)">
+            <summary>
+            Indicates that the binding should be used only when the class being injected has
+            an attribute of the specified type.
+            </summary>
+            <param name="attributeType">The type of attribute.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenMemberHas(System.Type)">
+            <summary>
+            Indicates that the binding should be used only when the member being injected has
+            an attribute of the specified type.
+            </summary>
+            <param name="attributeType">The type of attribute.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenTargetHas(System.Type)">
+            <summary>
+            Indicates that the binding should be used only when the target being injected has
+            an attribute of the specified type.
+            </summary>
+            <param name="attributeType">The type of attribute.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenParentNamed(System.String)">
+            <summary>
+            Indicates that the binding should be used only when the service is being requested
+            by a service bound with the specified name.
+            </summary>
+            <param name="name">The name to expect.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenAnyAnchestorNamed(System.String)">
+            <summary>
+            Indicates that the binding should be used only when any ancestor is bound with the specified name.
+            </summary>
+            <param name="name">The name to expect.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenAnyAncestorNamed(System.String)">
+            <summary>
+            Indicates that the binding should be used only when any ancestor is bound with the specified name.
+            </summary>
+            <param name="name">The name to expect.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenNoAncestorNamed(System.String)">
+            <summary>
+            Indicates that the binding should be used only when no ancestor is bound with the specified name.
+            </summary>
+            <param name="name">The name to expect.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenAnyAncestorMatches(System.Predicate{Ninject.Activation.IContext})">
+            <summary>
+            Indicates that the binding should be used only when any ancestor matches the specified predicate.
+            </summary>
+            <param name="predicate">The predicate to match.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenNoAncestorMatches(System.Predicate{Ninject.Activation.IContext})">
+            <summary>
+            Indicates that the binding should be used only when no ancestor matches the specified predicate.
+            </summary>
+            <param name="predicate">The predicate to match.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.Named(System.String)">
+            <summary>
+            Indicates that the binding should be registered with the specified name. Names are not
+            necessarily unique; multiple bindings for a given service may be registered with the same name.
+            </summary>
+            <param name="name">The name to give the binding.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.InSingletonScope">
+            <summary>
+            Indicates that only a single instance of the binding should be created, and then
+            should be re-used for all subsequent requests.
+            </summary>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.InTransientScope">
+            <summary>
+            Indicates that instances activated via the binding should not be re-used, nor have
+            their lifecycle managed by Ninject.
+            </summary>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.InThreadScope">
+            <summary>
+            Indicates that instances activated via the binding should be re-used within the same thread.
+            </summary>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.InScope(System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Indicates that instances activated via the binding should be re-used as long as the object
+            returned by the provided callback remains alive (that is, has not been garbage collected).
+            </summary>
+            <param name="scope">The callback that returns the scope.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument(System.String,System.Object)">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="value">The value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument(System.String,System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument(System.String,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument``1(``0)">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <typeparam name="TValue">Specifies the argument type to override.</typeparam>
+            <param name="value">The value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument(System.Type,System.Object)">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="type">The type of the argument to override.</param>
+            <param name="value">The value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument(System.Type,System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="type">The type of the argument to override.</param>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <typeparam name="TValue">The type of the argument type to override.</typeparam>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument(System.Type,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="type">The type of the argument to override.</param>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument``1(System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,``0})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <typeparam name="TValue">The type of the argument type to override.</typeparam>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithPropertyValue(System.String,System.Object)">
+            <summary>
+            Indicates that the specified property should be injected with the specified value.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="value">The value for the property.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithPropertyValue(System.String,System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Indicates that the specified property should be injected with the specified value.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="callback">The callback to invoke to get the value for the property.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithPropertyValue(System.String,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Indicates that the specified property should be injected with the specified value.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="callback">The callback to invoke to get the value for the property.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithParameter(Ninject.Parameters.IParameter)">
+            <summary>
+            Adds a custom parameter to the binding.
+            </summary>
+            <param name="parameter">The parameter.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithMetadata(System.String,System.Object)">
+            <summary>
+            Sets the value of a piece of metadata on the binding.
+            </summary>
+            <param name="key">The metadata key.</param>
+            <param name="value">The metadata value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.OnActivation(System.Action{`0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are activated.
+            </summary>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.OnActivation``1(System.Action{``0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are activated.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.OnActivation(System.Action{Ninject.Activation.IContext,`0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are activated.
+            </summary>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.OnActivation``1(System.Action{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are activated.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.OnDeactivation(System.Action{`0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are deactivated.
+            </summary>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.OnDeactivation``1(System.Action{``0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are deactivated.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.OnDeactivation(System.Action{Ninject.Activation.IContext,`0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are deactivated.
+            </summary>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.OnDeactivation``1(System.Action{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are deactivated.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingMetadata">
+            <summary>
+            Additional information available about a binding, which can be used in constraints
+            to select bindings to use in activation.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingMetadata.Name">
+            <summary>
+            Gets or sets the binding's name.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingMetadata.Has(System.String)">
+            <summary>
+            Determines whether a piece of metadata with the specified key has been defined.
+            </summary>
+            <param name="key">The metadata key.</param>
+            <returns><c>True</c> if such a piece of metadata exists; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingMetadata.Get``1(System.String)">
+            <summary>
+            Gets the value of metadata defined with the specified key, cast to the specified type.
+            </summary>
+            <typeparam name="T">The type of value to expect.</typeparam>
+            <param name="key">The metadata key.</param>
+            <returns>The metadata value.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingMetadata.Get``1(System.String,``0)">
+            <summary>
+            Gets the value of metadata defined with the specified key.
+            </summary>
+            <typeparam name="T">The type of value to expect.</typeparam>
+            <param name="key">The metadata key.</param>
+            <param name="defaultValue">The value to return if the binding has no metadata set with the specified key.</param>
+            <returns>The metadata value, or the default value if none was set.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingMetadata.Set(System.String,System.Object)">
+            <summary>
+            Sets the value of a piece of metadata.
+            </summary>
+            <param name="key">The metadata key.</param>
+            <param name="value">The metadata value.</param>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingPrecedenceComparer">
+            <summary>
+            Implements the binding precedence comparer interface
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingPrecedenceComparer.Compare(Ninject.Planning.Bindings.IBinding,Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Compares the two bindings.
+            </summary>
+            <param name="x">The first binding.</param>
+            <param name="y">The second binding.</param>
+            <returns>Less than zero if x is less than y; Zero is x equals y; Greater than zero if x is greater than y.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingTarget">
+            <summary>
+            Describes the target of a binding.
+            </summary>
+        </member>
+        <member name="F:Ninject.Planning.Bindings.BindingTarget.Self">
+            <summary>
+            Indicates that the binding is from a type to itself.
+            </summary>
+        </member>
+        <member name="F:Ninject.Planning.Bindings.BindingTarget.Type">
+            <summary>
+            Indicates that the binding is from one type to another.
+            </summary>
+        </member>
+        <member name="F:Ninject.Planning.Bindings.BindingTarget.Provider">
+            <summary>
+            Indicates that the binding is from a type to a provider.
+            </summary>
+        </member>
+        <member name="F:Ninject.Planning.Bindings.BindingTarget.Method">
+            <summary>
+            Indicates that the binding is from a type to a callback method.
+            </summary>
+        </member>
+        <member name="F:Ninject.Planning.Bindings.BindingTarget.Constant">
+            <summary>
+            Indicates that the binding is from a type to a constant value.
+            </summary>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.IBinding">
+            <summary>
+            Contains information about a service registration.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBinding.BindingConfiguration">
+            <summary>
+            Gets the binding configuration.
+            </summary>
+            <value>The binding configuration.</value>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBinding.Service">
+            <summary>
+            Gets the service type that is controlled by the binding.
+            </summary>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.IBindingConfiguration">
+            <summary>
+            The configuration of a binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.Metadata">
+            <summary>
+            Gets the binding's metadata.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.Target">
+            <summary>
+            Gets or sets the type of target for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.IsImplicit">
+            <summary>
+            Gets or sets a value indicating whether the binding was implicitly registered.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.IsConditional">
+            <summary>
+            Gets a value indicating whether the binding has a condition associated with it.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.Condition">
+            <summary>
+            Gets or sets the condition defined for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.ProviderCallback">
+            <summary>
+            Gets or sets the callback that returns the provider that should be used by the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.ScopeCallback">
+            <summary>
+            Gets or sets the callback that returns the object that will act as the binding's scope.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.Parameters">
+            <summary>
+            Gets the parameters defined for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.ActivationActions">
+            <summary>
+            Gets the actions that should be called after instances are activated via the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.DeactivationActions">
+            <summary>
+            Gets the actions that should be called before instances are deactivated via the binding.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.IBindingConfiguration.GetProvider(Ninject.Activation.IContext)">
+            <summary>
+            Gets the provider for the binding.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The provider to use.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.IBindingConfiguration.GetScope(Ninject.Activation.IContext)">
+            <summary>
+            Gets the scope for the binding, if any.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The object that will act as the scope, or <see langword="null"/> if the service is transient.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.IBindingConfiguration.Matches(Ninject.Activation.IRequest)">
+            <summary>
+            Determines whether the specified request satisfies the condition defined on the binding,
+            if one was defined.
+            </summary>
+            <param name="request">The request.</param>
+            <returns><c>True</c> if the request satisfies the condition; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.IBindingConfigurationSyntax`1">
+            <summary>
+            The syntax to define bindings.
+            </summary>
+            <typeparam name="T">The type of the service.</typeparam>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.IBindingMetadata">
+            <summary>
+            Additional information available about a binding, which can be used in constraints
+            to select bindings to use in activation.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingMetadata.Name">
+            <summary>
+            Gets or sets the binding's name.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.IBindingMetadata.Has(System.String)">
+            <summary>
+            Determines whether a piece of metadata with the specified key has been defined.
+            </summary>
+            <param name="key">The metadata key.</param>
+            <returns><c>True</c> if such a piece of metadata exists; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.IBindingMetadata.Get``1(System.String)">
+            <summary>
+            Gets the value of metadata defined with the specified key, cast to the specified type.
+            </summary>
+            <typeparam name="T">The type of value to expect.</typeparam>
+            <param name="key">The metadata key.</param>
+            <returns>The metadata value.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.IBindingMetadata.Get``1(System.String,``0)">
+            <summary>
+            Gets the value of metadata defined with the specified key.
+            </summary>
+            <typeparam name="T">The type of value to expect.</typeparam>
+            <param name="key">The metadata key.</param>
+            <param name="defaultValue">The value to return if the binding has no metadata set with the specified key.</param>
+            <returns>The metadata value, or the default value if none was set.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.IBindingMetadata.Set(System.String,System.Object)">
+            <summary>
+            Sets the value of a piece of metadata.
+            </summary>
+            <param name="key">The metadata key.</param>
+            <param name="value">The metadata value.</param>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.IBindingPrecedenceComparer">
+            <summary>
+            The binding precedence comparer interface
+            </summary>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.Resolvers.DefaultValueBindingResolver">
+            <summary>
+            Represents a binding resolver that takes the target default value as the resolved object.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Resolvers.DefaultValueBindingResolver.Resolve(Ninject.Infrastructure.Multimap{System.Type,Ninject.Planning.Bindings.IBinding},Ninject.Activation.IRequest)">
+            <summary>
+            Returns any bindings from the specified collection that match the specified service.
+            </summary>
+            <param name="bindings">The multimap of all registered bindings.</param>
+            <param name="request">The service in question.</param>
+            <returns>The series of matching bindings.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.Resolvers.IBindingResolver">
+            <summary>
+            Contains logic about which bindings to use for a given service request.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Resolvers.IBindingResolver.Resolve(Ninject.Infrastructure.Multimap{System.Type,Ninject.Planning.Bindings.IBinding},System.Type)">
+            <summary>
+            Returns any bindings from the specified collection that match the specified service.
+            </summary>
+            <param name="bindings">The multimap of all registered bindings.</param>
+            <param name="service">The service in question.</param>
+            <returns>The series of matching bindings.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.Resolvers.IMissingBindingResolver">
+            <summary>
+            Contains logic about which bindings to use for a given service request
+            when other attempts have failed.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Resolvers.IMissingBindingResolver.Resolve(Ninject.Infrastructure.Multimap{System.Type,Ninject.Planning.Bindings.IBinding},Ninject.Activation.IRequest)">
+            <summary>
+            Returns any bindings from the specified collection that match the specified request.
+            </summary>
+            <param name="bindings">The multimap of all registered bindings.</param>
+            <param name="request">The request in question.</param>
+            <returns>The series of matching bindings.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.Resolvers.OpenGenericBindingResolver">
+            <summary>
+            Resolves bindings for open generic types.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Resolvers.OpenGenericBindingResolver.Resolve(Ninject.Infrastructure.Multimap{System.Type,Ninject.Planning.Bindings.IBinding},System.Type)">
+            <summary>
+            Returns any bindings from the specified collection that match the specified service.
+            </summary>
+            <param name="bindings">The multimap of all registered bindings.</param>
+            <param name="service">The service in question.</param>
+            <returns>The series of matching bindings.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.Resolvers.SelfBindingResolver">
+            <summary>
+            Represents a binding resolver that use the service in question itself as the target to activate.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Resolvers.SelfBindingResolver.Resolve(Ninject.Infrastructure.Multimap{System.Type,Ninject.Planning.Bindings.IBinding},Ninject.Activation.IRequest)">
+            <summary>
+            Returns any bindings from the specified collection that match the specified service.
+            </summary>
+            <param name="bindings">The multimap of all registered bindings.</param>
+            <param name="request">The service in question.</param>
+            <returns>The series of matching bindings.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Resolvers.SelfBindingResolver.TypeIsSelfBindable(System.Type)">
+            <summary>
+            Returns a value indicating whether the specified service is self-bindable.
+            </summary>
+            <param name="service">The service.</param>
+            <returns><see langword="True"/> if the type is self-bindable; otherwise <see langword="false"/>.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.Resolvers.StandardBindingResolver">
+            <summary>
+            Resolves bindings that have been registered directly for the service.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Resolvers.StandardBindingResolver.Resolve(Ninject.Infrastructure.Multimap{System.Type,Ninject.Planning.Bindings.IBinding},System.Type)">
+            <summary>
+            Returns any bindings from the specified collection that match the specified service.
+            </summary>
+            <param name="bindings">The multimap of all registered bindings.</param>
+            <param name="service">The service in question.</param>
+            <returns>The series of matching bindings.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Directives.ConstructorInjectionDirective">
+            <summary>
+            Describes the injection of a constructor.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Directives.ConstructorInjectionDirective.#ctor(System.Reflection.ConstructorInfo,Ninject.Injection.ConstructorInjector)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Directives.ConstructorInjectionDirective"/> class.
+            </summary>
+            <param name="constructor">The constructor described by the directive.</param>
+            <param name="injector">The injector that will be triggered.</param>
+        </member>
+        <member name="P:Ninject.Planning.Directives.ConstructorInjectionDirective.Constructor">
+            <summary>
+            Gets or sets the base .ctor definition.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Directives.ConstructorInjectionDirective.HasInjectAttribute">
+            <summary>
+            Gets or sets a value indicating whether this constructor has an inject attribute.
+            </summary>
+            <value><c>true</c> if this constructor has an inject attribute; otherwise, <c>false</c>.</value>
+        </member>
+        <member name="P:Ninject.Planning.Directives.ConstructorInjectionDirective.HasObsoleteAttribute">
+            <summary>
+            Gets or sets a value indicating whether this contructor has an obsolete attribute.
+            </summary>
+            <value><c>true</c> if this constructor has an obsolete attribute; otherwise, <c>false</c>.</value>
+        </member>
+        <member name="T:Ninject.Planning.Directives.IDirective">
+            <summary>
+            A piece of information used in an <see cref="T:Ninject.Planning.IPlan"/>. (Just a marker.)
+            </summary>
+        </member>
+        <member name="T:Ninject.Planning.Directives.MethodInjectionDirective">
+            <summary>
+            Describes the injection of a method.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Directives.MethodInjectionDirective.#ctor(System.Reflection.MethodInfo,Ninject.Injection.MethodInjector)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Directives.MethodInjectionDirective"/> class.
+            </summary>
+            <param name="method">The method described by the directive.</param>
+            <param name="injector">The injector that will be triggered.</param>
+        </member>
+        <member name="T:Ninject.Planning.Directives.MethodInjectionDirectiveBase`2">
+            <summary>
+            Describes the injection of a method or constructor.
+            </summary>
+            <typeparam name="TMethod">The method info.</typeparam>
+            <typeparam name="TInjector">The injector.</typeparam>
+        </member>
+        <member name="M:Ninject.Planning.Directives.MethodInjectionDirectiveBase`2.#ctor(`0,`1)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Directives.MethodInjectionDirectiveBase`2"/> class.
+            </summary>
+            <param name="method">The method this directive represents.</param>
+            <param name="injector">The injector that will be triggered.</param>
+        </member>
+        <member name="P:Ninject.Planning.Directives.MethodInjectionDirectiveBase`2.Injector">
+            <summary>
+            Gets the injector that will be triggered.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Directives.MethodInjectionDirectiveBase`2.Targets">
+            <summary>
+            Gets the targets for the directive.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Directives.MethodInjectionDirectiveBase`2.CreateTargetsFromParameters(`0)">
+            <summary>
+            Creates targets for the parameters of the method.
+            </summary>
+            <param name="method">The method.</param>
+            <returns>The targets for the method's parameters.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Directives.PropertyInjectionDirective">
+            <summary>
+            Describes the injection of a property.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Directives.PropertyInjectionDirective.#ctor(System.Reflection.PropertyInfo,Ninject.Injection.PropertyInjector)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Directives.PropertyInjectionDirective"/> class.
+            </summary>
+            <param name="member">The member the directive describes.</param>
+            <param name="injector">The injector that will be triggered.</param>
+        </member>
+        <member name="P:Ninject.Planning.Directives.PropertyInjectionDirective.Injector">
+            <summary>
+            Gets the injector that will be triggered.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Directives.PropertyInjectionDirective.Target">
+            <summary>
+            Gets the injection target for the directive.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Directives.PropertyInjectionDirective.CreateTarget(System.Reflection.PropertyInfo)">
+            <summary>
+            Creates a target for the property.
+            </summary>
+            <param name="propertyInfo">The property.</param>
+            <returns>The target for the property.</returns>
+        </member>
+        <member name="T:Ninject.Planning.IPlan">
+            <summary>
+            Describes the means by which a type should be activated.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.IPlan.Type">
+            <summary>
+            Gets the type that the plan describes.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.IPlan.ConstructorInjectionDirectives">
+            <summary>
+            Gets the constructor injection directives.
+            </summary>
+            <value>The constructor injection directives.</value>
+        </member>
+        <member name="M:Ninject.Planning.IPlan.Add(Ninject.Planning.Directives.IDirective)">
+            <summary>
+            Adds the specified directive to the plan.
+            </summary>
+            <param name="directive">The directive.</param>
+        </member>
+        <member name="M:Ninject.Planning.IPlan.Has``1">
+            <summary>
+            Determines whether the plan contains one or more directives of the specified type.
+            </summary>
+            <typeparam name="TDirective">The type of directive.</typeparam>
+            <returns><c>True</c> if the plan has one or more directives of the type; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Planning.IPlan.GetOne``1">
+            <summary>
+            Gets the first directive of the specified type from the plan.
+            </summary>
+            <typeparam name="TDirective">The type of directive.</typeparam>
+            <returns>The first directive, or <see langword="null"/> if no matching directives exist.</returns>
+        </member>
+        <member name="M:Ninject.Planning.IPlan.GetAll``1">
+            <summary>
+            Gets all directives of the specified type that exist in the plan.
+            </summary>
+            <typeparam name="TDirective">The type of directive.</typeparam>
+            <returns>A series of directives of the specified type.</returns>
+        </member>
+        <member name="T:Ninject.Planning.IPlanner">
+            <summary>
+            Generates plans for how to activate instances.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.IPlanner.Strategies">
+            <summary>
+            Gets the strategies that contribute to the planning process.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.IPlanner.GetPlan(System.Type)">
+            <summary>
+            Gets or creates an activation plan for the specified type.
+            </summary>
+            <param name="type">The type for which a plan should be created.</param>
+            <returns>The type's activation plan.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Plan">
+            <summary>
+            Describes the means by which a type should be activated.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Plan.#ctor(System.Type)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Plan"/> class.
+            </summary>
+            <param name="type">The type the plan describes.</param>
+        </member>
+        <member name="P:Ninject.Planning.Plan.Type">
+            <summary>
+            Gets the type that the plan describes.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Plan.Directives">
+            <summary>
+            Gets the directives defined in the plan.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Plan.ConstructorInjectionDirectives">
+            <summary>
+            Gets the constructor injection directives defined in the plan.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Plan.Add(Ninject.Planning.Directives.IDirective)">
+            <summary>
+            Adds the specified directive to the plan.
+            </summary>
+            <param name="directive">The directive.</param>
+        </member>
+        <member name="M:Ninject.Planning.Plan.Has``1">
+            <summary>
+            Determines whether the plan contains one or more directives of the specified type.
+            </summary>
+            <typeparam name="TDirective">The type of directive.</typeparam>
+            <returns><c>True</c> if the plan has one or more directives of the type; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Plan.GetOne``1">
+            <summary>
+            Gets the first directive of the specified type from the plan.
+            </summary>
+            <typeparam name="TDirective">The type of directive.</typeparam>
+            <returns>The first directive, or <see langword="null"/> if no matching directives exist.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Plan.GetAll``1">
+            <summary>
+            Gets all directives of the specified type that exist in the plan.
+            </summary>
+            <typeparam name="TDirective">The type of directive.</typeparam>
+            <returns>A series of directives of the specified type.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Planner">
+            <summary>
+            Generates plans for how to activate instances.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Planner.#ctor(System.Collections.Generic.IEnumerable{Ninject.Planning.Strategies.IPlanningStrategy})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Planner"/> class.
+            </summary>
+            <param name="strategies">The strategies to execute during planning.</param>
+        </member>
+        <member name="P:Ninject.Planning.Planner.Strategies">
+            <summary>
+            Gets the strategies that contribute to the planning process.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Planner.GetPlan(System.Type)">
+            <summary>
+            Gets or creates an activation plan for the specified type.
+            </summary>
+            <param name="type">The type for which a plan should be created.</param>
+            <returns>The type's activation plan.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Planner.CreateEmptyPlan(System.Type)">
+            <summary>
+            Creates an empty plan for the specified type.
+            </summary>
+            <param name="type">The type for which a plan should be created.</param>
+            <returns>The created plan.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Planner.CreateNewPlan(System.Type)">
+            <summary>
+            Creates a new plan for the specified type.
+            This method requires an active reader lock!
+            </summary>
+            <param name="type">The type.</param>
+            <returns>The newly created plan.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Strategies.ConstructorReflectionStrategy">
+            <summary>
+            Adds a directive to plans indicating which constructor should be injected during activation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Strategies.ConstructorReflectionStrategy.#ctor(Ninject.Selection.ISelector,Ninject.Injection.IInjectorFactory)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Strategies.ConstructorReflectionStrategy"/> class.
+            </summary>
+            <param name="selector">The selector component.</param>
+            <param name="injectorFactory">The injector factory component.</param>
+        </member>
+        <member name="P:Ninject.Planning.Strategies.ConstructorReflectionStrategy.Selector">
+            <summary>
+            Gets the selector component.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Strategies.ConstructorReflectionStrategy.InjectorFactory">
+            <summary>
+            Gets or sets the injector factory component.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Strategies.ConstructorReflectionStrategy.Execute(Ninject.Planning.IPlan)">
+            <summary>
+            Adds a <see cref="T:Ninject.Planning.Directives.ConstructorInjectionDirective"/> to the plan for the constructor
+            that should be injected.
+            </summary>
+            <param name="plan">The plan that is being generated.</param>
+        </member>
+        <member name="T:Ninject.Planning.Strategies.IPlanningStrategy">
+            <summary>
+            Contributes to the generation of a <see cref="T:Ninject.Planning.IPlan"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Strategies.IPlanningStrategy.Execute(Ninject.Planning.IPlan)">
+            <summary>
+            Contributes to the specified plan.
+            </summary>
+            <param name="plan">The plan that is being generated.</param>
+        </member>
+        <member name="T:Ninject.Planning.Strategies.MethodReflectionStrategy">
+            <summary>
+            Adds directives to plans indicating which methods should be injected during activation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Strategies.MethodReflectionStrategy.#ctor(Ninject.Selection.ISelector,Ninject.Injection.IInjectorFactory)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Strategies.MethodReflectionStrategy"/> class.
+            </summary>
+            <param name="selector">The selector component.</param>
+            <param name="injectorFactory">The injector factory component.</param>
+        </member>
+        <member name="P:Ninject.Planning.Strategies.MethodReflectionStrategy.Selector">
+            <summary>
+            Gets the selector component.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Strategies.MethodReflectionStrategy.InjectorFactory">
+            <summary>
+            Gets or sets the injector factory component.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Strategies.MethodReflectionStrategy.Execute(Ninject.Planning.IPlan)">
+            <summary>
+            Adds a <see cref="T:Ninject.Planning.Directives.MethodInjectionDirective"/> to the plan for each method
+            that should be injected.
+            </summary>
+            <param name="plan">The plan that is being generated.</param>
+        </member>
+        <member name="T:Ninject.Planning.Strategies.PropertyReflectionStrategy">
+            <summary>
+            Adds directives to plans indicating which properties should be injected during activation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Strategies.PropertyReflectionStrategy.#ctor(Ninject.Selection.ISelector,Ninject.Injection.IInjectorFactory)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Strategies.PropertyReflectionStrategy"/> class.
+            </summary>
+            <param name="selector">The selector component.</param>
+            <param name="injectorFactory">The injector factory component.</param>
+        </member>
+        <member name="P:Ninject.Planning.Strategies.PropertyReflectionStrategy.Selector">
+            <summary>
+            Gets the selector component.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Strategies.PropertyReflectionStrategy.InjectorFactory">
+            <summary>
+            Gets or sets the injector factory component.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Strategies.PropertyReflectionStrategy.Execute(Ninject.Planning.IPlan)">
+            <summary>
+            Adds a <see cref="T:Ninject.Planning.Directives.PropertyInjectionDirective"/> to the plan for each property
+            that should be injected.
+            </summary>
+            <param name="plan">The plan that is being generated.</param>
+        </member>
+        <member name="T:Ninject.Planning.Targets.ITarget">
+            <summary>
+            Represents a site on a type where a value will be injected.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ITarget.Type">
+            <summary>
+            Gets the type of the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ITarget.Name">
+            <summary>
+            Gets the name of the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ITarget.Member">
+            <summary>
+            Gets the member that contains the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ITarget.Constraint">
+            <summary>
+            Gets the constraint defined on the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ITarget.IsOptional">
+            <summary>
+            Gets a value indicating whether the target represents an optional dependency.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ITarget.HasDefaultValue">
+            <summary>
+            Gets a value indicating whether the target has a default value.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ITarget.DefaultValue">
+            <summary>
+            Gets the default value for the target.
+            </summary>
+            <exception cref="T:System.InvalidOperationException">If the item does not have a default value.</exception>
+        </member>
+        <member name="M:Ninject.Planning.Targets.ITarget.ResolveWithin(Ninject.Activation.IContext)">
+            <summary>
+            Resolves a value for the target within the specified parent context.
+            </summary>
+            <param name="parent">The parent context.</param>
+            <returns>The resolved value.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Targets.ParameterTarget">
+            <summary>
+            Represents an injection target for a <see cref="T:System.Reflection.ParameterInfo"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Targets.ParameterTarget.#ctor(System.Reflection.MethodBase,System.Reflection.ParameterInfo)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Targets.ParameterTarget"/> class.
+            </summary>
+            <param name="method">The method that defines the parameter.</param>
+            <param name="site">The parameter that this target represents.</param>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ParameterTarget.Name">
+            <summary>
+            Gets the name of the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ParameterTarget.Type">
+            <summary>
+            Gets the type of the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ParameterTarget.HasDefaultValue">
+            <summary>
+            Gets a value indicating whether the target has a default value.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ParameterTarget.DefaultValue">
+            <summary>
+            Gets the default value for the target.
+            </summary>
+            <exception cref="T:System.InvalidOperationException">If the item does not have a default value.</exception>
+        </member>
+        <member name="T:Ninject.Planning.Targets.PropertyTarget">
+            <summary>
+            Represents an injection target for a <see cref="T:System.Reflection.PropertyInfo"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Targets.PropertyTarget.#ctor(System.Reflection.PropertyInfo)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Targets.PropertyTarget"/> class.
+            </summary>
+            <param name="site">The property that this target represents.</param>
+        </member>
+        <member name="P:Ninject.Planning.Targets.PropertyTarget.Name">
+            <summary>
+            Gets the name of the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.PropertyTarget.Type">
+            <summary>
+            Gets the type of the target.
+            </summary>
+        </member>
+        <member name="T:Ninject.Planning.Targets.Target`1">
+            <summary>
+            Represents a site on a type where a value can be injected.
+            </summary>
+            <typeparam name="T">The type of site this represents.</typeparam>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.#ctor(System.Reflection.MemberInfo,`0)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Targets.Target`1"/> class.
+            </summary>
+            <param name="member">The member that contains the target.</param>
+            <param name="site">The site represented by the target.</param>
+        </member>
+        <member name="P:Ninject.Planning.Targets.Target`1.Member">
+            <summary>
+            Gets the member that contains the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.Target`1.Site">
+            <summary>
+            Gets the site (property, parameter, etc.) represented by the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.Target`1.Name">
+            <summary>
+            Gets the name of the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.Target`1.Type">
+            <summary>
+            Gets the type of the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.Target`1.Constraint">
+            <summary>
+            Gets the constraint defined on the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.Target`1.IsOptional">
+            <summary>
+            Gets a value indicating whether the target represents an optional dependency.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.Target`1.HasDefaultValue">
+            <summary>
+            Gets a value indicating whether the target has a default value.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.Target`1.DefaultValue">
+            <summary>
+            Gets the default value for the target.
+            </summary>
+            <exception cref="T:System.InvalidOperationException">If the item does not have a default value.</exception>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.GetCustomAttributes(System.Type,System.Boolean)">
+            <summary>
+            Returns an array of custom attributes of a specified type defined on the target.
+            </summary>
+            <param name="attributeType">The type of attribute to search for.</param>
+            <param name="inherit">Whether to look up the hierarchy chain for inherited custom attributes.</param>
+            <returns>An array of custom attributes of the specified type.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.GetCustomAttributes(System.Boolean)">
+            <summary>
+            Returns an array of custom attributes defined on the target.
+            </summary>
+            <param name="inherit">Whether to look up the hierarchy chain for inherited custom attributes.</param>
+            <returns>An array of custom attributes.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.IsDefined(System.Type,System.Boolean)">
+            <summary>
+            Returns a value indicating whether an attribute of the specified type is defined on the target.
+            </summary>
+            <param name="attributeType">The type of attribute to search for.</param>
+            <param name="inherit">Whether to look up the hierarchy chain for inherited custom attributes.</param>
+            <returns><c>True</c> if such an attribute is defined; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.ResolveWithin(Ninject.Activation.IContext)">
+            <summary>
+            Resolves a value for the target within the specified parent context.
+            </summary>
+            <param name="parent">The parent context.</param>
+            <returns>The resolved value.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.GetValues(System.Type,Ninject.Activation.IContext)">
+            <summary>
+            Gets the value(s) that should be injected into the target.
+            </summary>
+            <param name="service">The service that the target is requesting.</param>
+            <param name="parent">The parent context in which the target is being injected.</param>
+            <returns>A series of values that are available for injection.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.GetValue(System.Type,Ninject.Activation.IContext)">
+            <summary>
+            Gets the value that should be injected into the target.
+            </summary>
+            <param name="service">The service that the target is requesting.</param>
+            <param name="parent">The parent context in which the target is being injected.</param>
+            <returns>The value that is to be injected.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.ReadOptionalFromTarget">
+            <summary>
+            Reads whether the target represents an optional dependency.
+            </summary>
+            <returns><see langword="True"/> if it is optional; otherwise <see langword="false"/>.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.ReadConstraintFromTarget">
+            <summary>
+            Reads the resolution constraint from target.
+            </summary>
+            <returns>The resolution constraint.</returns>
+        </member>
+        <member name="T:Ninject.Selection.Heuristics.IConstructorScorer">
+            <summary>
+            Generates scores for constructors, to determine which is the best one to call during activation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.IConstructorScorer.Score(Ninject.Activation.IContext,Ninject.Planning.Directives.ConstructorInjectionDirective)">
+            <summary>
+            Gets the score for the specified constructor.
+            </summary>
+            <param name="context">The injection context.</param>
+            <param name="directive">The constructor.</param>
+            <returns>The constructor's score.</returns>
+        </member>
+        <member name="T:Ninject.Selection.Heuristics.IInjectionHeuristic">
+            <summary>
+            Determines whether members should be injected during activation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.IInjectionHeuristic.ShouldInject(System.Reflection.MemberInfo)">
+            <summary>
+            Returns a value indicating whether the specified member should be injected.
+            </summary>
+            <param name="member">The member in question.</param>
+            <returns><c>True</c> if the member should be injected; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="T:Ninject.Selection.Heuristics.SpecificConstructorSelector">
+            <summary>
+            Constructor selector that selects the constructor matching the one passed to the constructor.
+            </summary>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.SpecificConstructorSelector.#ctor(System.Reflection.ConstructorInfo)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Selection.Heuristics.SpecificConstructorSelector"/> class.
+            </summary>
+            <param name="constructorInfo">The constructor info of the constructor that shall be selected.</param>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.SpecificConstructorSelector.Score(Ninject.Activation.IContext,Ninject.Planning.Directives.ConstructorInjectionDirective)">
+            <summary>
+            Gets the score for the specified constructor.
+            </summary>
+            <param name="context">The injection context.</param>
+            <param name="directive">The constructor.</param>
+            <returns>The constructor's score.</returns>
+        </member>
+        <member name="T:Ninject.Selection.Heuristics.StandardConstructorScorer">
+            <summary>
+            Scores constructors by either looking for the existence of an injection marker
+            attribute, or by counting the number of parameters.
+            </summary>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.StandardConstructorScorer.Score(Ninject.Activation.IContext,Ninject.Planning.Directives.ConstructorInjectionDirective)">
+            <summary>
+            Gets the score for the specified constructor.
+            </summary>
+            <param name="context">The injection context.</param>
+            <param name="directive">The constructor.</param>
+            <returns>The constructor's score.</returns>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.StandardConstructorScorer.BindingExists(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Checkes whether a binding exists for a given target.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>Whether a binding exists for the target in the given context.</returns>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.StandardConstructorScorer.BindingExists(Ninject.IKernel,Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Checkes whether a binding exists for a given target on the specified kernel.
+            </summary>
+            <param name="kernel">The kernel.</param>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>Whether a binding exists for the target in the given context.</returns>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.StandardConstructorScorer.ParameterExists(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Checks whether any parameters exist for the given target..
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>Whether a parameter exists for the target in the given context.</returns>
+        </member>
+        <member name="T:Ninject.Selection.Heuristics.StandardInjectionHeuristic">
+            <summary>
+            Determines whether members should be injected during activation by checking
+            if they are decorated with an injection marker attribute.
+            </summary>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.StandardInjectionHeuristic.ShouldInject(System.Reflection.MemberInfo)">
+            <summary>
+            Returns a value indicating whether the specified member should be injected.
+            </summary>
+            <param name="member">The member in question.</param>
+            <returns><c>True</c> if the member should be injected; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="T:Ninject.Selection.ISelector">
+            <summary>
+            Selects members for injection.
+            </summary>
+        </member>
+        <member name="P:Ninject.Selection.ISelector.ConstructorScorer">
+            <summary>
+            Gets the constructor scorer.
+            </summary>
+        </member>
+        <member name="P:Ninject.Selection.ISelector.InjectionHeuristics">
+            <summary>
+            Gets the heuristics used to determine which members should be injected.
+            </summary>
+        </member>
+        <member name="M:Ninject.Selection.ISelector.SelectConstructorsForInjection(System.Type)">
+            <summary>
+            Selects the constructor to call on the specified type, by using the constructor scorer.
+            </summary>
+            <param name="type">The type.</param>
+            <returns>The selected constructor, or <see langword="null"/> if none were available.</returns>
+        </member>
+        <member name="M:Ninject.Selection.ISelector.SelectPropertiesForInjection(System.Type)">
+            <summary>
+            Selects properties that should be injected.
+            </summary>
+            <param name="type">The type.</param>
+            <returns>A series of the selected properties.</returns>
+        </member>
+        <member name="M:Ninject.Selection.ISelector.SelectMethodsForInjection(System.Type)">
+            <summary>
+            Selects methods that should be injected.
+            </summary>
+            <param name="type">The type.</param>
+            <returns>A series of the selected methods.</returns>
+        </member>
+        <member name="T:Ninject.Selection.Selector">
+            <summary>
+            Selects members for injection.
+            </summary>
+        </member>
+        <member name="M:Ninject.Selection.Selector.#ctor(Ninject.Selection.Heuristics.IConstructorScorer,System.Collections.Generic.IEnumerable{Ninject.Selection.Heuristics.IInjectionHeuristic})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Selection.Selector"/> class.
+            </summary>
+            <param name="constructorScorer">The constructor scorer.</param>
+            <param name="injectionHeuristics">The injection heuristics.</param>
+        </member>
+        <member name="P:Ninject.Selection.Selector.ConstructorScorer">
+            <summary>
+            Gets the constructor scorer.
+            </summary>
+        </member>
+        <member name="P:Ninject.Selection.Selector.InjectionHeuristics">
+            <summary>
+            Gets the property injection heuristics.
+            </summary>
+        </member>
+        <member name="P:Ninject.Selection.Selector.Flags">
+            <summary>
+            Gets the default binding flags.
+            </summary>
+        </member>
+        <member name="M:Ninject.Selection.Selector.SelectConstructorsForInjection(System.Type)">
+            <summary>
+            Selects the constructor to call on the specified type, by using the constructor scorer.
+            </summary>
+            <param name="type">The type.</param>
+            <returns>The selected constructor, or <see langword="null"/> if none were available.</returns>
+        </member>
+        <member name="M:Ninject.Selection.Selector.SelectPropertiesForInjection(System.Type)">
+            <summary>
+            Selects properties that should be injected.
+            </summary>
+            <param name="type">The type.</param>
+            <returns>A series of the selected properties.</returns>
+        </member>
+        <member name="M:Ninject.Selection.Selector.SelectMethodsForInjection(System.Type)">
+            <summary>
+            Selects methods that should be injected.
+            </summary>
+            <param name="type">The type.</param>
+            <returns>A series of the selected methods.</returns>
+        </member>
+        <member name="T:Ninject.StandardKernel">
+            <summary>
+            The standard implementation of a kernel.
+            </summary>
+        </member>
+        <member name="M:Ninject.StandardKernel.#ctor(Ninject.Modules.INinjectModule[])">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.StandardKernel"/> class.
+            </summary>
+            <param name="modules">The modules to load into the kernel.</param>
+        </member>
+        <member name="M:Ninject.StandardKernel.#ctor(Ninject.INinjectSettings,Ninject.Modules.INinjectModule[])">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.StandardKernel"/> class.
+            </summary>
+            <param name="settings">The configuration to use.</param>
+            <param name="modules">The modules to load into the kernel.</param>
+        </member>
+        <member name="P:Ninject.StandardKernel.KernelInstance">
+            <summary>
+            Gets the kernel.
+            </summary>
+            <value>The kernel.</value>
+        </member>
+        <member name="M:Ninject.StandardKernel.AddComponents">
+            <summary>
+            Adds components to the kernel during startup.
+            </summary>
+        </member>
+        <member name="T:Ninject.Syntax.BindingRoot">
+            <summary>
+            Provides a path to register bindings.
+            </summary>
+        </member>
+        <member name="P:Ninject.Syntax.BindingRoot.KernelInstance">
+            <summary>
+            Gets the kernel.
+            </summary>
+            <value>The kernel.</value>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Bind``1">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <typeparam name="T">The service to bind.</typeparam>
+            <returns>The fluent syntax</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Bind``2">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <typeparam name="T1">The first service to bind.</typeparam>
+            <typeparam name="T2">The second service to bind.</typeparam>
+            <returns>The fluent syntax</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Bind``3">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <typeparam name="T1">The first service to bind.</typeparam>
+            <typeparam name="T2">The second service to bind.</typeparam>
+            <typeparam name="T3">The third service to bind.</typeparam>
+            <returns>The fluent syntax</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Bind``4">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <typeparam name="T1">The first service to bind.</typeparam>
+            <typeparam name="T2">The second service to bind.</typeparam>
+            <typeparam name="T3">The third service to bind.</typeparam>
+            <typeparam name="T4">The fourth service to bind.</typeparam>
+            <returns>The fluent syntax</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Bind(System.Type[])">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <param name="services">The services to bind.</param>
+            <returns>The fluent syntax</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Unbind``1">
+            <summary>
+            Unregisters all bindings for the specified service.
+            </summary>
+            <typeparam name="T">The service to unbind.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Unbind(System.Type)">
+            <summary>
+            Unregisters all bindings for the specified service.
+            </summary>
+            <param name="service">The service to unbind.</param>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Rebind``1">
+            <summary>
+            Removes any existing bindings for the specified service, and declares a new one.
+            </summary>
+            <typeparam name="T1">The first service to re-bind.</typeparam>
+            <returns>The fluent syntax</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Rebind``2">
+            <summary>
+            Removes any existing bindings for the specified services, and declares a new one.
+            </summary>
+            <typeparam name="T1">The first service to re-bind.</typeparam>
+            <typeparam name="T2">The second service to re-bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Rebind``3">
+            <summary>
+            Removes any existing bindings for the specified services, and declares a new one.
+            </summary>
+            <typeparam name="T1">The first service to re-bind.</typeparam>
+            <typeparam name="T2">The second service to re-bind.</typeparam>
+            <typeparam name="T3">The third service to re-bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Rebind``4">
+            <summary>
+            Removes any existing bindings for the specified services, and declares a new one.
+            </summary>
+            <typeparam name="T1">The first service to re-bind.</typeparam>
+            <typeparam name="T2">The second service to re-bind.</typeparam>
+            <typeparam name="T3">The third service to re-bind.</typeparam>
+            <typeparam name="T4">The fourth service to re-bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Rebind(System.Type[])">
+            <summary>
+            Removes any existing bindings for the specified service, and declares a new one.
+            </summary>
+            <param name="services">The services to re-bind.</param>
+            <returns>The fluent syntax</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.AddBinding(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Registers the specified binding.
+            </summary>
+            <param name="binding">The binding to add.</param>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.RemoveBinding(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Unregisters the specified binding.
+            </summary>
+            <param name="binding">The binding to remove.</param>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingInNamedWithOrOnSyntax`1">
+            <summary>
+            Used to set the scope, name, or add additional information or actions to a binding.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingInSyntax`1">
+            <summary>
+            Used to define the scope in which instances activated via a binding should be re-used.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingInSyntax`1.InSingletonScope">
+            <summary>
+            Indicates that only a single instance of the binding should be created, and then
+            should be re-used for all subsequent requests.
+            </summary>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingInSyntax`1.InTransientScope">
+            <summary>
+            Indicates that instances activated via the binding should not be re-used, nor have
+            their lifecycle managed by Ninject.
+            </summary>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingInSyntax`1.InThreadScope">
+            <summary>
+            Indicates that instances activated via the binding should be re-used within the same thread.
+            </summary>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingInSyntax`1.InScope(System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Indicates that instances activated via the binding should be re-used as long as the object
+            returned by the provided callback remains alive (that is, has not been garbage collected).
+            </summary>
+            <param name="scope">The callback that returns the scope.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingNamedSyntax`1">
+            <summary>
+            Used to define the name of a binding.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingNamedSyntax`1.Named(System.String)">
+            <summary>
+            Indicates that the binding should be registered with the specified name. Names are not
+            necessarily unique; multiple bindings for a given service may be registered with the same name.
+            </summary>
+            <param name="name">The name to give the binding.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingNamedWithOrOnSyntax`1">
+            <summary>
+            Used to set the name, or add additional information or actions to a binding.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingOnSyntax`1">
+            <summary>
+            Used to add additional actions to be performed during activation or deactivation of instances via a binding.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingOnSyntax`1.OnActivation(System.Action{`0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are activated.
+            </summary>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingOnSyntax`1.OnActivation``1(System.Action{``0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are activated.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingOnSyntax`1.OnActivation(System.Action{Ninject.Activation.IContext,`0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are activated.
+            </summary>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingOnSyntax`1.OnActivation``1(System.Action{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are activated.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingOnSyntax`1.OnDeactivation(System.Action{`0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are deactivated.
+            </summary>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingOnSyntax`1.OnDeactivation``1(System.Action{``0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are deactivated.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingOnSyntax`1.OnDeactivation(System.Action{Ninject.Activation.IContext,`0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are deactivated.
+            </summary>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingOnSyntax`1.OnDeactivation``1(System.Action{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are deactivated.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingRoot">
+            <summary>
+            Provides a path to register bindings.
+            </summary>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Bind``1">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <typeparam name="T">The service to bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Bind``2">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <typeparam name="T1">The first service to bind.</typeparam>
+            <typeparam name="T2">The second service to bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Bind``3">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <typeparam name="T1">The first service to bind.</typeparam>
+            <typeparam name="T2">The second service to bind.</typeparam>
+            <typeparam name="T3">The third service to bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Bind``4">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <typeparam name="T1">The first service to bind.</typeparam>
+            <typeparam name="T2">The second service to bind.</typeparam>
+            <typeparam name="T3">The third service to bind.</typeparam>
+            <typeparam name="T4">The fourth service to bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Bind(System.Type[])">
+            <summary>
+            Declares a binding from the service to itself.
+            </summary>
+            <param name="services">The services to bind.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Unbind``1">
+            <summary>
+            Unregisters all bindings for the specified service.
+            </summary>
+            <typeparam name="T">The service to unbind.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Unbind(System.Type)">
+            <summary>
+            Unregisters all bindings for the specified service.
+            </summary>
+            <param name="service">The service to unbind.</param>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Rebind``1">
+            <summary>
+            Removes any existing bindings for the specified service, and declares a new one.
+            </summary>
+            <typeparam name="T1">The first service to re-bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Rebind``2">
+            <summary>
+            Removes any existing bindings for the specified services, and declares a new one.
+            </summary>
+            <typeparam name="T1">The first service to re-bind.</typeparam>
+            <typeparam name="T2">The second service to re-bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Rebind``3">
+            <summary>
+            Removes any existing bindings for the specified services, and declares a new one.
+            </summary>
+            <typeparam name="T1">The first service to re-bind.</typeparam>
+            <typeparam name="T2">The second service to re-bind.</typeparam>
+            <typeparam name="T3">The third service to re-bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Rebind``4">
+            <summary>
+            Removes any existing bindings for the specified services, and declares a new one.
+            </summary>
+            <typeparam name="T1">The first service to re-bind.</typeparam>
+            <typeparam name="T2">The second service to re-bind.</typeparam>
+            <typeparam name="T3">The third service to re-bind.</typeparam>
+            <typeparam name="T4">The fourth service to re-bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Rebind(System.Type[])">
+            <summary>
+            Removes any existing bindings for the specified services, and declares a new one.
+            </summary>
+            <param name="services">The services to re-bind.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.AddBinding(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Registers the specified binding.
+            </summary>
+            <param name="binding">The binding to add.</param>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.RemoveBinding(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Unregisters the specified binding.
+            </summary>
+            <param name="binding">The binding to remove.</param>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingSyntax">
+            <summary>
+            Used to define a basic binding syntax builder.
+            </summary>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingToSyntax`4">
+            <summary>
+            Used to define the target of a binding.
+            </summary>
+            <typeparam name="T1">The first service type to be bound.</typeparam>
+            <typeparam name="T2">The second service type to be bound.</typeparam>
+            <typeparam name="T3">The third service type to be bound.</typeparam>
+            <typeparam name="T4">The fourth service type to be bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.To``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.To(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.ToProvider``1">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.ToProvider``2">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.ToProvider(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.ToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.ToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.ToConstant``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.ToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingToSyntax`3">
+            <summary>
+            Used to define the target of a binding.
+            </summary>
+            <typeparam name="T1">The first service type to be bound.</typeparam>
+            <typeparam name="T2">The second service type to be bound.</typeparam>
+            <typeparam name="T3">The third service type to be bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.To``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.To(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.ToProvider``1">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.ToProvider``2">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.ToProvider(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.ToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.ToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.ToConstant``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.ToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingToSyntax`2">
+            <summary>
+            Used to define the target of a binding.
+            </summary>
+            <typeparam name="T1">The first service type to be bound.</typeparam>
+            <typeparam name="T2">The second service type to be bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.To``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.To(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.ToProvider``1">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.ToProvider``2">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.ToProvider(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.ToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.ToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.ToConstant``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.ToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingToSyntax`1">
+            <summary>
+            Used to define the target of a binding.
+            </summary>
+            <typeparam name="T1">The service being bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.ToSelf">
+            <summary>
+            Indicates that the service should be self-bound.
+            </summary>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.To``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.To(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.ToProvider``1">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.ToProvider(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.ToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.ToMethod(System.Func{Ninject.Activation.IContext,`0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.ToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.ToConstant``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.ToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingWhenInNamedWithOrOnSyntax`1">
+            <summary>
+            Used to set the condition, scope, name, or add additional information or actions to a binding.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingWhenSyntax`1">
+            <summary>
+            Used to define the conditions under which a binding should be used.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.When(System.Func{Ninject.Activation.IRequest,System.Boolean})">
+            <summary>
+            Indicates that the binding should be used only for requests that support the specified condition.
+            </summary>
+            <param name="condition">The condition.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenInjectedInto``1">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            Types that derive from the specified type are considered as valid targets.
+            </summary>
+            <typeparam name="TParent">The type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenInjectedInto(System.Type)">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            Types that derive from the specified type are considered as valid targets.
+            </summary>
+            <param name="parent">The type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenInjectedInto(System.Type[])">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified types.
+            Types that derive from one of the specified types are considered as valid targets.
+            Should match at lease one of the targets.
+            </summary>
+            <param name="parents">The types to match.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenInjectedExactlyInto``1">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            The type must match exactly the specified type. Types that derive from the specified type
+            will not be considered as valid target.
+            </summary>
+            <typeparam name="TParent">The type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenInjectedExactlyInto(System.Type)">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            The type must match exactly the specified type. Types that derive from the specified type
+            will not be considered as valid target.
+            </summary>
+            <param name="parent">The type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenInjectedExactlyInto(System.Type[])">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            The type must match one of the specified types exactly. Types that derive from one of the specified types
+            will not be considered as valid target.
+            Should match at least one of the specified targets
+            </summary>
+            <param name="parents">The types.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenClassHas``1">
+            <summary>
+            Indicates that the binding should be used only when the class being injected has
+            an attribute of the specified type.
+            </summary>
+            <typeparam name="TAttribute">The type of attribute.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenMemberHas``1">
+            <summary>
+            Indicates that the binding should be used only when the member being injected has
+            an attribute of the specified type.
+            </summary>
+            <typeparam name="TAttribute">The type of attribute.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenTargetHas``1">
+            <summary>
+            Indicates that the binding should be used only when the target being injected has
+            an attribute of the specified type.
+            </summary>
+            <typeparam name="TAttribute">The type of attribute.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenClassHas(System.Type)">
+            <summary>
+            Indicates that the binding should be used only when the class being injected has
+            an attribute of the specified type.
+            </summary>
+            <param name="attributeType">The type of attribute.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenMemberHas(System.Type)">
+            <summary>
+            Indicates that the binding should be used only when the member being injected has
+            an attribute of the specified type.
+            </summary>
+            <param name="attributeType">The type of attribute.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenTargetHas(System.Type)">
+            <summary>
+            Indicates that the binding should be used only when the target being injected has
+            an attribute of the specified type.
+            </summary>
+            <param name="attributeType">The type of attribute.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenParentNamed(System.String)">
+            <summary>
+            Indicates that the binding should be used only when the service is being requested
+            by a service bound with the specified name.
+            </summary>
+            <param name="name">The name to expect.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenAnyAnchestorNamed(System.String)">
+            <summary>
+            Indicates that the binding should be used only when any ancestor is bound with the specified name.
+            </summary>
+            <param name="name">The name to expect.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenAnyAncestorNamed(System.String)">
+            <summary>
+            Indicates that the binding should be used only when any ancestor is bound with the specified name.
+            </summary>
+            <param name="name">The name to expect.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenNoAncestorNamed(System.String)">
+            <summary>
+            Indicates that the binding should be used only when no ancestor is bound with the specified name.
+            </summary>
+            <param name="name">The name to expect.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenAnyAncestorMatches(System.Predicate{Ninject.Activation.IContext})">
+            <summary>
+            Indicates that the binding should be used only when any ancestor matches the specified predicate.
+            </summary>
+            <param name="predicate">The predicate to match.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenNoAncestorMatches(System.Predicate{Ninject.Activation.IContext})">
+            <summary>
+            Indicates that the binding should be used only when no ancestor matches the specified predicate.
+            </summary>
+            <param name="predicate">The predicate to match.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingWithOrOnSyntax`1">
+            <summary>
+            Used to add additional information or actions to a binding.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingWithSyntax`1">
+            <summary>
+            Used to add additional information to a binding.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument(System.String,System.Object)">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="value">The value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument(System.String,System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument(System.String,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument``1(``0)">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <typeparam name="TValue">Specifies the argument type to override.</typeparam>
+            <param name="value">The value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument(System.Type,System.Object)">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="type">The type of the argument to override.</param>
+            <param name="value">The value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <typeparam name="TValue">The type of the argument to override.</typeparam>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument(System.Type,System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="type">The type of the argument to override.</param>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument``1(System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,``0})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <typeparam name="TValue">The type of the argument to override.</typeparam>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument(System.Type,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="type">The type of the argument to override.</param>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithPropertyValue(System.String,System.Object)">
+            <summary>
+            Indicates that the specified property should be injected with the specified value.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="value">The value for the property.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithPropertyValue(System.String,System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Indicates that the specified property should be injected with the specified value.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="callback">The callback to invoke to get the value for the property.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithPropertyValue(System.String,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Indicates that the specified property should be injected with the specified value.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="callback">The callback to invoke to get the value for the property.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithParameter(Ninject.Parameters.IParameter)">
+            <summary>
+            Adds a custom parameter to the binding.
+            </summary>
+            <param name="parameter">The parameter.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithMetadata(System.String,System.Object)">
+            <summary>
+            Sets the value of a piece of metadata on the binding.
+            </summary>
+            <param name="key">The metadata key.</param>
+            <param name="value">The metadata value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IConstructorArgumentSyntax">
+            <summary>
+            Passed to ToConstructor to specify that a constructor value is Injected.
+            </summary>
+        </member>
+        <member name="P:Ninject.Syntax.IConstructorArgumentSyntax.Context">
+            <summary>
+            Gets the context.
+            </summary>
+            <value>The context.</value>
+        </member>
+        <member name="M:Ninject.Syntax.IConstructorArgumentSyntax.Inject``1">
+            <summary>
+            Specifies that the argument is injected.
+            </summary>
+            <typeparam name="T">The type of the parameter</typeparam>
+            <returns>Not used. This interface has no implementation.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IFluentSyntax">
+            <summary>
+            A hack to hide methods defined on <see cref="T:System.Object"/> for IntelliSense
+            on fluent interfaces. Credit to Daniel Cazzulino.
+            </summary>
+        </member>
+        <member name="M:Ninject.Syntax.IFluentSyntax.GetType">
+            <summary>
+            Gets the type of this instance.
+            </summary>
+            <returns>The type of this instance.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IFluentSyntax.GetHashCode">
+            <summary>
+            Returns a hash code for this instance.
+            </summary>
+            <returns>
+            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+            </returns>
+        </member>
+        <member name="M:Ninject.Syntax.IFluentSyntax.ToString">
+            <summary>
+            Returns a <see cref="T:System.String"/> that represents this instance.
+            </summary>
+            <returns>
+            A <see cref="T:System.String"/> that represents this instance.
+            </returns>
+        </member>
+        <member name="M:Ninject.Syntax.IFluentSyntax.Equals(System.Object)">
+            <summary>
+            Determines whether the specified <see cref="T:System.Object"/> is equal to this instance.
+            </summary>
+            <param name="other">The <see cref="T:System.Object"/> to compare with this instance.</param>
+            <returns>
+                <c>true</c> if the specified <see cref="T:System.Object"/> is equal to this instance; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="T:Ninject.Syntax.IResolutionRoot">
+            <summary>
+            Provides a path to resolve instances.
+            </summary>
+        </member>
+        <member name="M:Ninject.Syntax.IResolutionRoot.Inject(System.Object,Ninject.Parameters.IParameter[])">
+            <summary>
+            Injects the specified existing instance, without managing its lifecycle.
+            </summary>
+            <param name="instance">The instance to inject.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+        </member>
+        <member name="M:Ninject.Syntax.IResolutionRoot.CanResolve(Ninject.Activation.IRequest)">
+            <summary>
+            Determines whether the specified request can be resolved.
+            </summary>
+            <param name="request">The request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IResolutionRoot.CanResolve(Ninject.Activation.IRequest,System.Boolean)">
+            <summary>
+            Determines whether the specified request can be resolved.
+            </summary>
+            <param name="request">The request.</param>
+            <param name="ignoreImplicitBindings">if set to <c>true</c> implicit bindings are ignored.</param>
+            <returns>
+                <c>True</c> if the request can be resolved; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.Syntax.IResolutionRoot.Resolve(Ninject.Activation.IRequest)">
+            <summary>
+            Resolves instances for the specified request. The instances are not actually resolved
+            until a consumer iterates over the enumerator.
+            </summary>
+            <param name="request">The request to resolve.</param>
+            <returns>An enumerator of instances that match the request.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IResolutionRoot.CreateRequest(System.Type,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},System.Collections.Generic.IEnumerable{Ninject.Parameters.IParameter},System.Boolean,System.Boolean)">
+            <summary>
+            Creates a request for the specified service.
+            </summary>
+            <param name="service">The service that is being requested.</param>
+            <param name="constraint">The constraint to apply to the bindings to determine if they match the request.</param>
+            <param name="parameters">The parameters to pass to the resolution.</param>
+            <param name="isOptional"><c>True</c> if the request is optional; otherwise, <c>false</c>.</param>
+            <param name="isUnique"><c>True</c> if the request should return a unique result; otherwise, <c>false</c>.</param>
+            <returns>The created request.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IResolutionRoot.Release(System.Object)">
+            <summary>
+            Deactivates and releases the specified instance if it is currently managed by Ninject.
+            </summary>
+            <param name="instance">The instance to release.</param>
+            <returns><see langword="True"/> if the instance was found and released; otherwise <see langword="false"/>.</returns>
+        </member>
+        <member name="T:Ninject.ModuleLoadExtensions">
+            <summary>
+            Extension methods that enhance module loading.
+            </summary>
+        </member>
+        <member name="M:Ninject.ModuleLoadExtensions.Load``1(Ninject.IKernel)">
+            <summary>
+            Creates a new instance of the module and loads it into the kernel.
+            </summary>
+            <typeparam name="TModule">The type of the module.</typeparam>
+            <param name="kernel">The kernel.</param>
+        </member>
+        <member name="M:Ninject.ModuleLoadExtensions.Load(Ninject.IKernel,Ninject.Modules.INinjectModule[])">
+            <summary>
+            Loads the module(s) into the kernel.
+            </summary>
+            <param name="kernel">The kernel.</param>
+            <param name="modules">The modules to load.</param>
+        </member>
+        <member name="M:Ninject.ModuleLoadExtensions.Load(Ninject.IKernel,System.String[])">
+            <summary>
+            Loads modules from the files that match the specified pattern(s).
+            </summary>
+            <param name="kernel">The kernel.</param>
+            <param name="filePatterns">The file patterns (i.e. "*.dll", "modules/*.rb") to match.</param>
+        </member>
+        <member name="M:Ninject.ModuleLoadExtensions.Load(Ninject.IKernel,System.Reflection.Assembly[])">
+            <summary>
+            Loads modules defined in the specified assemblies.
+            </summary>
+            <param name="kernel">The kernel.</param>
+            <param name="assemblies">The assemblies to search.</param>
+        </member>
+        <member name="T:Ninject.ResolutionExtensions">
+            <summary>
+            Extensions that enhance resolution of services.
+            </summary>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.Get``1(Ninject.Syntax.IResolutionRoot,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.Get``1(Ninject.Syntax.IResolutionRoot,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service by using the first binding with the specified name.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.Get``1(Ninject.Syntax.IResolutionRoot,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service by using the first binding that matches the specified constraint.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="constraint">The constraint to apply to the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGet``1(Ninject.Syntax.IResolutionRoot,Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGet``1(Ninject.Syntax.IResolutionRoot,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service by using the first binding with the specified name.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGet``1(Ninject.Syntax.IResolutionRoot,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service by using the first binding that matches the specified constraint.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="constraint">The constraint to apply to the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGetAndThrowOnInvalidBinding``1(Ninject.Syntax.IResolutionRoot,Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGetAndThrowOnInvalidBinding``1(Ninject.Syntax.IResolutionRoot,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service by using the first binding with the specified name.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGetAndThrowOnInvalidBinding``1(Ninject.Syntax.IResolutionRoot,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service by using the first binding that matches the specified constraint.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="constraint">The constraint to apply to the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.GetAll``1(Ninject.Syntax.IResolutionRoot,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets all available instances of the specified service.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>A series of instances of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.GetAll``1(Ninject.Syntax.IResolutionRoot,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets all instances of the specified service using bindings registered with the specified name.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>A series of instances of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.GetAll``1(Ninject.Syntax.IResolutionRoot,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets all instances of the specified service by using the bindings that match the specified constraint.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="constraint">The constraint to apply to the bindings.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>A series of instances of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.Get(Ninject.Syntax.IResolutionRoot,System.Type,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.Get(Ninject.Syntax.IResolutionRoot,System.Type,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service by using the first binding with the specified name.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.Get(Ninject.Syntax.IResolutionRoot,System.Type,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service by using the first binding that matches the specified constraint.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="constraint">The constraint to apply to the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGet(Ninject.Syntax.IResolutionRoot,System.Type,Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGet(Ninject.Syntax.IResolutionRoot,System.Type,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service by using the first binding with the specified name.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGet(Ninject.Syntax.IResolutionRoot,System.Type,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service by using the first binding that matches the specified constraint.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="constraint">The constraint to apply to the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.GetAll(Ninject.Syntax.IResolutionRoot,System.Type,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets all available instances of the specified service.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>A series of instances of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.GetAll(Ninject.Syntax.IResolutionRoot,System.Type,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets all instances of the specified service using bindings registered with the specified name.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>A series of instances of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.GetAll(Ninject.Syntax.IResolutionRoot,System.Type,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets all instances of the specified service by using the bindings that match the specified constraint.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="constraint">The constraint to apply to the bindings.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>A series of instances of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.CanResolve``1(Ninject.Syntax.IResolutionRoot,Ninject.Parameters.IParameter[])">
+            <summary>
+            Evaluates if an instance of the specified service can be resolved.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.CanResolve``1(Ninject.Syntax.IResolutionRoot,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Evaluates if  an instance of the specified service by using the first binding with the specified name can be resolved.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.CanResolve``1(Ninject.Syntax.IResolutionRoot,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Evaluates if  an instance of the specified service by using the first binding that matches the specified constraint can be resolved.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="constraint">The constraint to apply to the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.CanResolve(Ninject.Syntax.IResolutionRoot,System.Type,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.CanResolve(Ninject.Syntax.IResolutionRoot,System.Type,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service by using the first binding with the specified name.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.CanResolve(Ninject.Syntax.IResolutionRoot,System.Type,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service by using the first binding that matches the specified constraint.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="constraint">The constraint to apply to the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+    </members>
+</doc>
Added +0 -0
diff --git a/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/lib/netstandard2.0/Ninject.dll b/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/lib/netstandard2.0/Ninject.dll
new file mode 100644
index 0000000..e1ff32d
Binary files /dev/null and b/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/lib/netstandard2.0/Ninject.dll differ
Added +6780 -0
diff --git a/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/lib/netstandard2.0/Ninject.xml b/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/lib/netstandard2.0/Ninject.xml
new file mode 100644
index 0000000..1ceb4be
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/lib/netstandard2.0/Ninject.xml
@@ -0,0 +1,6780 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>Ninject</name>
+    </assembly>
+    <members>
+        <member name="T:Ninject.ActivationException">
+            <summary>
+            Indicates that an error occurred during activation of an instance.
+            </summary>
+        </member>
+        <member name="M:Ninject.ActivationException.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.ActivationException"/> class.
+            </summary>
+        </member>
+        <member name="M:Ninject.ActivationException.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.ActivationException"/> class.
+            </summary>
+            <param name="message">The exception message.</param>
+        </member>
+        <member name="M:Ninject.ActivationException.#ctor(System.String,System.Exception)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.ActivationException"/> class.
+            </summary>
+            <param name="message">The exception message.</param>
+            <param name="innerException">The inner exception.</param>
+        </member>
+        <member name="M:Ninject.ActivationException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.ActivationException"/> class.
+            </summary>
+            <param name="info">The serialized object data.</param>
+            <param name="context">The serialization context.</param>
+        </member>
+        <member name="T:Ninject.Activation.Blocks.ActivationBlock">
+            <summary>
+            A block used for deterministic disposal of activated instances. When the block is
+            disposed, all instances activated via it will be deactivated.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Blocks.ActivationBlock.#ctor(Ninject.Syntax.IResolutionRoot)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Blocks.ActivationBlock"/> class.
+            </summary>
+            <param name="parent">The parent resolution root.</param>
+        </member>
+        <member name="P:Ninject.Activation.Blocks.ActivationBlock.Parent">
+            <summary>
+            Gets the parent resolution root (usually the kernel).
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Blocks.ActivationBlock.Inject(System.Object,Ninject.Parameters.IParameter[])">
+            <summary>
+            Injects the specified existing instance, without managing its lifecycle.
+            </summary>
+            <param name="instance">The instance to inject.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+        </member>
+        <member name="M:Ninject.Activation.Blocks.ActivationBlock.CanResolve(Ninject.Activation.IRequest)">
+            <summary>
+            Determines whether the specified request can be resolved.
+            </summary>
+            <param name="request">The request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Blocks.ActivationBlock.CanResolve(Ninject.Activation.IRequest,System.Boolean)">
+            <summary>
+            Determines whether the specified request can be resolved.
+            </summary>
+            <param name="request">The request.</param>
+            <param name="ignoreImplicitBindings">if set to <c>true</c> implicit bindings are ignored.</param>
+            <returns>
+                <c>True</c> if the request can be resolved; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.Activation.Blocks.ActivationBlock.Resolve(Ninject.Activation.IRequest)">
+            <summary>
+            Resolves instances for the specified request. The instances are not actually resolved
+            until a consumer iterates over the enumerator.
+            </summary>
+            <param name="request">The request to resolve.</param>
+            <returns>An enumerator of instances that match the request.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Blocks.ActivationBlock.CreateRequest(System.Type,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},System.Collections.Generic.IEnumerable{Ninject.Parameters.IParameter},System.Boolean,System.Boolean)">
+            <summary>
+            Creates a request for the specified service.
+            </summary>
+            <param name="service">The service that is being requested.</param>
+            <param name="constraint">The constraint to apply to the bindings to determine if they match the request.</param>
+            <param name="parameters">The parameters to pass to the resolution.</param>
+            <param name="isOptional"><c>True</c> if the request is optional; otherwise, <c>false</c>.</param>
+            <param name="isUnique"><c>True</c> if the request should return a unique result; otherwise, <c>false</c>.</param>
+            <returns>The created request.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Blocks.ActivationBlock.Release(System.Object)">
+            <summary>
+            Deactivates and releases the specified instance if it is currently managed by Ninject.
+            </summary>
+            <param name="instance">The instance to release.</param>
+            <returns><see langword="True"/> if the instance was found and released; otherwise <see langword="false"/>.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Blocks.IActivationBlock">
+            <summary>
+            A block used for deterministic disposal of activated instances. When the block is
+            disposed, all instances activated via it will be deactivated.
+            </summary>
+        </member>
+        <member name="T:Ninject.Activation.Caching.ActivationCache">
+            <summary>
+            Stores the objects that were activated
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Caching.ActivationCache.activatedObjects">
+            <summary>
+            The objects that were activated as reference equal weak references.
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Caching.ActivationCache.deactivatedObjects">
+            <summary>
+            The objects that were activated as reference equal weak references.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ActivationCache.#ctor(Ninject.Activation.Caching.ICachePruner)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Caching.ActivationCache"/> class.
+            </summary>
+            <param name="cachePruner">The cache pruner.</param>
+        </member>
+        <member name="P:Ninject.Activation.Caching.ActivationCache.ActivatedObjectCount">
+            <summary>
+            Gets the activated object count.
+            </summary>
+            <value>The activated object count.</value>
+        </member>
+        <member name="P:Ninject.Activation.Caching.ActivationCache.DeactivatedObjectCount">
+            <summary>
+            Gets the deactivated object count.
+            </summary>
+            <value>The deactivated object count.</value>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ActivationCache.Clear">
+            <summary>
+            Clears the cache.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ActivationCache.AddActivatedInstance(System.Object)">
+            <summary>
+            Adds an activated instance.
+            </summary>
+            <param name="instance">The instance to be added.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ActivationCache.AddDeactivatedInstance(System.Object)">
+            <summary>
+            Adds an deactivated instance.
+            </summary>
+            <param name="instance">The instance to be added.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ActivationCache.IsActivated(System.Object)">
+            <summary>
+            Determines whether the specified instance is activated.
+            </summary>
+            <param name="instance">The instance.</param>
+            <returns>
+                <c>true</c> if the specified instance is activated; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ActivationCache.IsDeactivated(System.Object)">
+            <summary>
+            Determines whether the specified instance is deactivated.
+            </summary>
+            <param name="instance">The instance.</param>
+            <returns>
+                <c>true</c> if the specified instance is deactivated; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ActivationCache.Prune">
+            <summary>
+            Prunes this instance.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ActivationCache.RemoveDeadObjects(System.Collections.Generic.HashSet{System.Object})">
+            <summary>
+            Removes all dead objects.
+            </summary>
+            <param name="objects">The objects collection to be freed of dead objects.</param>
+        </member>
+        <member name="T:Ninject.Activation.Caching.Cache">
+            <summary>
+            Tracks instances for re-use in certain scopes.
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Caching.Cache.entries">
+            <summary>
+            Contains all cached instances.
+            This is a dictionary of scopes to a multimap for bindings to cache entries.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.#ctor(Ninject.Activation.IPipeline,Ninject.Activation.Caching.ICachePruner)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Caching.Cache"/> class.
+            </summary>
+            <param name="pipeline">The pipeline component.</param>
+            <param name="cachePruner">The cache pruner component.</param>
+        </member>
+        <member name="P:Ninject.Activation.Caching.Cache.Pipeline">
+            <summary>
+            Gets the pipeline component.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Caching.Cache.Count">
+            <summary>
+            Gets the number of entries currently stored in the cache.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.Dispose(System.Boolean)">
+            <summary>
+            Releases resources held by the object.
+            </summary>
+            <param name="disposing"><c>True</c> if called manually, otherwise by GC.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.Remember(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Stores the specified context in the cache.
+            </summary>
+            <param name="context">The context to store.</param>
+            <param name="reference">The instance reference.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.TryGet(Ninject.Activation.IContext)">
+            <summary>
+            Tries to retrieve an instance to re-use in the specified context.
+            </summary>
+            <param name="context">The context that is being activated.</param>
+            <returns>The instance for re-use, or <see langword="null"/> if none has been stored.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.Release(System.Object)">
+            <summary>
+            Deactivates and releases the specified instance from the cache.
+            </summary>
+            <param name="instance">The instance to release.</param>
+            <returns><see langword="True"/> if the instance was found and released; otherwise <see langword="false"/>.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.Prune">
+            <summary>
+            Removes instances from the cache which should no longer be re-used.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.Clear(System.Object)">
+            <summary>
+            Immediately deactivates and removes all instances in the cache that are owned by
+            the specified scope.
+            </summary>
+            <param name="scope">The scope whose instances should be deactivated.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.Clear">
+            <summary>
+            Immediately deactivates and removes all instances in the cache, regardless of scope.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.GetAllBindingEntries(Ninject.Infrastructure.Multimap{Ninject.Planning.Bindings.IBindingConfiguration,Ninject.Activation.Caching.Cache.CacheEntry})">
+            <summary>
+            Gets all entries for a binding within the selected scope.
+            </summary>
+            <param name="bindings">The bindings.</param>
+            <returns>All bindings of a binding.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.GetAllCacheEntries">
+            <summary>
+            Gets all cache entries.
+            </summary>
+            <returns>Returns all cache entries.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.Forget(System.Collections.Generic.IEnumerable{Ninject.Activation.Caching.Cache.CacheEntry})">
+            <summary>
+            Forgets the specified cache entries.
+            </summary>
+            <param name="cacheEntries">The cache entries.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.Forget(Ninject.Activation.Caching.Cache.CacheEntry)">
+            <summary>
+            Forgets the specified entry.
+            </summary>
+            <param name="entry">The entry.</param>
+        </member>
+        <member name="T:Ninject.Activation.Caching.Cache.CacheEntry">
+            <summary>
+            An entry in the cache.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.Cache.CacheEntry.#ctor(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Caching.Cache.CacheEntry"/> class.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">The instance reference.</param>
+        </member>
+        <member name="P:Ninject.Activation.Caching.Cache.CacheEntry.Context">
+            <summary>
+            Gets the context of the instance.
+            </summary>
+            <value>The context.</value>
+        </member>
+        <member name="P:Ninject.Activation.Caching.Cache.CacheEntry.Reference">
+            <summary>
+            Gets the instance reference.
+            </summary>
+            <value>The instance reference.</value>
+        </member>
+        <member name="T:Ninject.Activation.Caching.GarbageCollectionCachePruner">
+            <summary>
+            Uses a <see cref="T:System.Threading.Timer"/> and some <see cref="T:System.WeakReference"/> magic to poll
+            the garbage collector to see if it has run.
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Caching.GarbageCollectionCachePruner.indicator">
+            <summary>
+            indicator for if GC has been run.
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Caching.GarbageCollectionCachePruner.caches">
+            <summary>
+            The caches that are being pruned.
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Caching.GarbageCollectionCachePruner.timer">
+            <summary>
+            The timer used to trigger the cache pruning.
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Caching.GarbageCollectionCachePruner.stop">
+            <summary>
+            The flag to indicate whether the cache pruning is stopped or not.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.GarbageCollectionCachePruner.Dispose(System.Boolean)">
+            <summary>
+            Releases resources held by the object.
+            </summary>
+            <param name="disposing"><c>True</c> if called manually, otherwise by GC.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.GarbageCollectionCachePruner.Start(Ninject.Activation.Caching.IPruneable)">
+            <summary>
+            Starts pruning the specified pruneable based on the rules of the pruner.
+            </summary>
+            <param name="pruneable">The pruneable that will be pruned.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.GarbageCollectionCachePruner.Stop">
+            <summary>
+            Stops pruning.
+            </summary>
+        </member>
+        <member name="T:Ninject.Activation.Caching.IActivationCache">
+            <summary>
+            Stores the objects that were activated
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.IActivationCache.Clear">
+            <summary>
+            Clears the cache.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.IActivationCache.AddActivatedInstance(System.Object)">
+            <summary>
+            Adds an activated instance.
+            </summary>
+            <param name="instance">The instance to be added.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.IActivationCache.AddDeactivatedInstance(System.Object)">
+            <summary>
+            Adds an deactivated instance.
+            </summary>
+            <param name="instance">The instance to be added.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.IActivationCache.IsActivated(System.Object)">
+            <summary>
+            Determines whether the specified instance is activated.
+            </summary>
+            <param name="instance">The instance.</param>
+            <returns>
+                <c>true</c> if the specified instance is activated; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.IActivationCache.IsDeactivated(System.Object)">
+            <summary>
+            Determines whether the specified instance is deactivated.
+            </summary>
+            <param name="instance">The instance.</param>
+            <returns>
+                <c>true</c> if the specified instance is deactivated; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="T:Ninject.Activation.Caching.ICache">
+            <summary>
+            Tracks instances for re-use in certain scopes.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Caching.ICache.Count">
+            <summary>
+            Gets the number of entries currently stored in the cache.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ICache.Remember(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Stores the specified instance in the cache.
+            </summary>
+            <param name="context">The context to store.</param>
+            <param name="reference">The instance reference.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ICache.TryGet(Ninject.Activation.IContext)">
+            <summary>
+            Tries to retrieve an instance to re-use in the specified context.
+            </summary>
+            <param name="context">The context that is being activated.</param>
+            <returns>The instance for re-use, or <see langword="null"/> if none has been stored.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ICache.Release(System.Object)">
+            <summary>
+            Deactivates and releases the specified instance from the cache.
+            </summary>
+            <param name="instance">The instance to release.</param>
+            <returns><see langword="True"/> if the instance was found and released; otherwise <see langword="false"/>.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ICache.Clear(System.Object)">
+            <summary>
+            Immediately deactivates and removes all instances in the cache that are owned by
+            the specified scope.
+            </summary>
+            <param name="scope">The scope whose instances should be deactivated.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ICache.Clear">
+            <summary>
+            Immediately deactivates and removes all instances in the cache, regardless of scope.
+            </summary>
+        </member>
+        <member name="T:Ninject.Activation.Caching.ICachePruner">
+            <summary>
+            Prunes instances from an <see cref="T:Ninject.Activation.Caching.ICache"/> based on environmental information.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ICachePruner.Start(Ninject.Activation.Caching.IPruneable)">
+            <summary>
+            Starts pruning the specified cache based on the rules of the pruner.
+            </summary>
+            <param name="cache">The cache that will be pruned.</param>
+        </member>
+        <member name="M:Ninject.Activation.Caching.ICachePruner.Stop">
+            <summary>
+            Stops pruning.
+            </summary>
+        </member>
+        <member name="T:Ninject.Activation.Caching.IPruneable">
+            <summary>
+            An object that is pruneable.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.IPruneable.Prune">
+            <summary>
+            Removes instances from the cache which should no longer be re-used.
+            </summary>
+        </member>
+        <member name="T:Ninject.Activation.Caching.WeakReferenceEqualityComparer">
+            <summary>
+            Compares ReferenceEqualWeakReferences to objects
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Caching.WeakReferenceEqualityComparer.Equals(System.Object,System.Object)">
+            <summary>
+            Returns if the specified objects are equal.
+            </summary>
+            <param name="x">The first object.</param>
+            <param name="y">The second object.</param>
+            <returns>True if the objects are equal; otherwise false</returns>
+        </member>
+        <member name="M:Ninject.Activation.Caching.WeakReferenceEqualityComparer.GetHashCode(System.Object)">
+            <summary>
+            Returns the hash code of the specified object.
+            </summary>
+            <param name="obj">The object for which the hash code is calculated.</param>
+            <returns>The hash code of the specified object.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Context">
+            <summary>
+            Contains information about the activation of a single instance.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Context.#ctor(Ninject.IKernel,Ninject.Activation.IRequest,Ninject.Planning.Bindings.IBinding,Ninject.Activation.Caching.ICache,Ninject.Planning.IPlanner,Ninject.Activation.IPipeline)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Context"/> class.
+            </summary>
+            <param name="kernel">The kernel managing the resolution.</param>
+            <param name="request">The context's request.</param>
+            <param name="binding">The context's binding.</param>
+            <param name="cache">The cache component.</param>
+            <param name="planner">The planner component.</param>
+            <param name="pipeline">The pipeline component.</param>
+        </member>
+        <member name="P:Ninject.Activation.Context.Kernel">
+            <summary>
+            Gets or sets the kernel that is driving the activation.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.Request">
+            <summary>
+            Gets or sets the request.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.Binding">
+            <summary>
+            Gets or sets the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.Plan">
+            <summary>
+            Gets or sets the activation plan.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.Parameters">
+            <summary>
+            Gets or sets the parameters that were passed to manipulate the activation process.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.GenericArguments">
+            <summary>
+            Gets the generic arguments for the request, if any.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.HasInferredGenericArguments">
+            <summary>
+            Gets a value indicating whether the request involves inferred generic arguments.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.Cache">
+            <summary>
+            Gets the cache component.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.Planner">
+            <summary>
+            Gets the planner component.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Context.Pipeline">
+            <summary>
+            Gets the pipeline component.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Context.GetScope">
+            <summary>
+            Gets the scope for the context that "owns" the instance activated therein.
+            </summary>
+            <returns>The object that acts as the scope.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Context.GetProvider">
+            <summary>
+            Gets the provider that should be used to create the instance for this context.
+            </summary>
+            <returns>The provider that should be used.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Context.Resolve">
+            <summary>
+            Resolves the instance associated with this hook.
+            </summary>
+            <returns>The resolved instance.</returns>
+        </member>
+        <member name="T:Ninject.Activation.IContext">
+            <summary>
+            Contains information about the activation of a single instance.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IContext.Kernel">
+            <summary>
+            Gets the kernel that is driving the activation.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IContext.Request">
+            <summary>
+            Gets the request.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IContext.Binding">
+            <summary>
+            Gets the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IContext.Plan">
+            <summary>
+            Gets or sets the activation plan.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IContext.Cache">
+            <summary>
+            Gets the cache component.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IContext.Parameters">
+            <summary>
+            Gets the parameters that were passed to manipulate the activation process.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IContext.GenericArguments">
+            <summary>
+            Gets the generic arguments for the request, if any.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IContext.HasInferredGenericArguments">
+            <summary>
+            Gets a value indicating whether the request involves inferred generic arguments.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.IContext.GetProvider">
+            <summary>
+            Gets the provider that should be used to create the instance for this context.
+            </summary>
+            <returns>The provider that should be used.</returns>
+        </member>
+        <member name="M:Ninject.Activation.IContext.GetScope">
+            <summary>
+            Gets the scope for the context that "owns" the instance activated therein.
+            </summary>
+            <returns>The object that acts as the scope.</returns>
+        </member>
+        <member name="M:Ninject.Activation.IContext.Resolve">
+            <summary>
+            Resolves this instance for this context.
+            </summary>
+            <returns>The resolved instance.</returns>
+        </member>
+        <member name="T:Ninject.Activation.InstanceReference">
+            <summary>
+            Holds an instance during activation or after it has been cached.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.InstanceReference.Instance">
+            <summary>
+            Gets or sets the instance.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.InstanceReference.Is``1">
+            <summary>
+            Returns a value indicating whether the instance is of the specified type.
+            </summary>
+            <typeparam name="T">The type in question.</typeparam>
+            <returns><see langword="True"/> if the instance is of the specified type, otherwise <see langword="false"/>.</returns>
+        </member>
+        <member name="M:Ninject.Activation.InstanceReference.As``1">
+            <summary>
+            Returns the instance as the specified type.
+            </summary>
+            <typeparam name="T">The requested type.</typeparam>
+            <returns>The instance.</returns>
+        </member>
+        <member name="M:Ninject.Activation.InstanceReference.IfInstanceIs``1(System.Action{``0})">
+            <summary>
+            Executes the specified action if the instance if of the specified type.
+            </summary>
+            <typeparam name="T">The type in question.</typeparam>
+            <param name="action">The action to execute.</param>
+        </member>
+        <member name="T:Ninject.Activation.IPipeline">
+            <summary>
+            Drives the activation (injection, etc.) of an instance.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IPipeline.Strategies">
+            <summary>
+            Gets the strategies that contribute to the activation and deactivation processes.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.IPipeline.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Activates the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">The instance reference.</param>
+        </member>
+        <member name="M:Ninject.Activation.IPipeline.Deactivate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Deactivates the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">The instance reference.</param>
+        </member>
+        <member name="T:Ninject.Activation.IProvider">
+            <summary>
+            Creates instances of services.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IProvider.Type">
+            <summary>
+            Gets the type (or prototype) of instances the provider creates.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.IProvider.Create(Ninject.Activation.IContext)">
+            <summary>
+            Creates an instance within the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The created instance.</returns>
+        </member>
+        <member name="T:Ninject.Activation.IProvider`1">
+            <summary>
+            Provides instances ot the type T
+            </summary>
+            <typeparam name="T">The type provides by this implementation.</typeparam>
+        </member>
+        <member name="T:Ninject.Activation.IRequest">
+            <summary>
+            Describes the request for a service resolution.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.Service">
+            <summary>
+            Gets the service that was requested.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.ParentRequest">
+            <summary>
+            Gets the parent request.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.ParentContext">
+            <summary>
+            Gets the parent context.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.Target">
+            <summary>
+            Gets the target that will receive the injection, if any.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.Constraint">
+            <summary>
+            Gets the constraint that will be applied to filter the bindings used for the request.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.Parameters">
+            <summary>
+            Gets the parameters that affect the resolution.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.ActiveBindings">
+            <summary>
+            Gets the stack of bindings which have been activated by either this request or its ancestors.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.Depth">
+            <summary>
+            Gets the recursive depth at which this request occurs.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.IsOptional">
+            <summary>
+            Gets or sets a value indicating whether the request is optional.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.IsUnique">
+            <summary>
+            Gets or sets a value indicating whether the request should return a unique result.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.IRequest.ForceUnique">
+            <summary>
+            Gets or sets a value indicating whether the request should force to return a unique value even if the request is optional.
+            If this value is set true the request will throw an ActivationException if there are multiple satisfying bindings rather
+            than returning null for the request is optional. For none optional requests this parameter does not change anything.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.IRequest.Matches(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Determines whether the specified binding satisfies the constraint defined on this request.
+            </summary>
+            <param name="binding">The binding.</param>
+            <returns><c>True</c> if the binding satisfies the constraint; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Activation.IRequest.GetScope">
+            <summary>
+            Gets the scope if one was specified in the request.
+            </summary>
+            <returns>The object that acts as the scope.</returns>
+        </member>
+        <member name="M:Ninject.Activation.IRequest.CreateChild(System.Type,Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Creates a child request.
+            </summary>
+            <param name="service">The service that is being requested.</param>
+            <param name="parentContext">The context in which the request was made.</param>
+            <param name="target">The target that will receive the injection.</param>
+            <returns>The child request.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Pipeline">
+            <summary>
+            Drives the activation (injection, etc.) of an instance.
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Pipeline.activationCache">
+            <summary>
+            The activation cache.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Pipeline.#ctor(System.Collections.Generic.IEnumerable{Ninject.Activation.Strategies.IActivationStrategy},Ninject.Activation.Caching.IActivationCache)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Pipeline"/> class.
+            </summary>
+            <param name="strategies">The strategies to execute during activation and deactivation.</param>
+            <param name="activationCache">The activation cache.</param>
+        </member>
+        <member name="P:Ninject.Activation.Pipeline.Strategies">
+            <summary>
+            Gets the strategies that contribute to the activation and deactivation processes.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Pipeline.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Activates the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">The instance reference.</param>
+        </member>
+        <member name="M:Ninject.Activation.Pipeline.Deactivate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Deactivates the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">The instance reference.</param>
+        </member>
+        <member name="T:Ninject.Activation.Provider`1">
+            <summary>
+            A simple abstract provider for instances of a specific type.
+            </summary>
+            <typeparam name="T">The type of instances the provider creates.</typeparam>
+        </member>
+        <member name="P:Ninject.Activation.Provider`1.Type">
+            <summary>
+            Gets the type (or prototype) of instances the provider creates.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Provider`1.Create(Ninject.Activation.IContext)">
+            <summary>
+            Creates an instance within the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The created instance.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Provider`1.CreateInstance(Ninject.Activation.IContext)">
+            <summary>
+            Creates an instance within the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The created instance.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Providers.CallbackProvider`1">
+            <summary>
+            A provider that delegates to a callback method to create instances.
+            </summary>
+            <typeparam name="T">The type of instances the provider creates.</typeparam>
+        </member>
+        <member name="M:Ninject.Activation.Providers.CallbackProvider`1.#ctor(System.Func{Ninject.Activation.IContext,`0})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Providers.CallbackProvider`1"/> class.
+            </summary>
+            <param name="method">The callback method that will be called to create instances.</param>
+        </member>
+        <member name="P:Ninject.Activation.Providers.CallbackProvider`1.Method">
+            <summary>
+            Gets the callback method used by the provider.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Providers.CallbackProvider`1.CreateInstance(Ninject.Activation.IContext)">
+            <summary>
+            Invokes the callback method to create an instance.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The created instance.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Providers.ConstantProvider`1">
+            <summary>
+            A provider that always returns the same constant value.
+            </summary>
+            <typeparam name="T">The type of value that is returned.</typeparam>
+        </member>
+        <member name="M:Ninject.Activation.Providers.ConstantProvider`1.#ctor(`0)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Providers.ConstantProvider`1"/> class.
+            </summary>
+            <param name="value">The value that the provider should return.</param>
+        </member>
+        <member name="P:Ninject.Activation.Providers.ConstantProvider`1.Value">
+            <summary>
+            Gets the value that the provider will return.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Providers.ConstantProvider`1.CreateInstance(Ninject.Activation.IContext)">
+            <summary>
+            Creates an instance within the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The constant value this provider returns.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Providers.StandardProvider">
+            <summary>
+            The standard provider for types, which activates instances via a <see cref="T:Ninject.Activation.IPipeline"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Providers.StandardProvider.#ctor(System.Type,Ninject.Planning.IPlanner,Ninject.Selection.Heuristics.IConstructorScorer)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Providers.StandardProvider"/> class.
+            </summary>
+            <param name="type">The type (or prototype) of instances the provider creates.</param>
+            <param name="planner">The planner component.</param>
+            <param name="constructorScorer">The constructor scorer component.</param>
+        </member>
+        <member name="P:Ninject.Activation.Providers.StandardProvider.Type">
+            <summary>
+            Gets the type (or prototype) of instances the provider creates.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Providers.StandardProvider.Planner">
+            <summary>
+            Gets the planner component.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Providers.StandardProvider.ConstructorScorer">
+            <summary>
+            Gets the constructor scorer component.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Providers.StandardProvider.GetCreationCallback(System.Type)">
+            <summary>
+            Gets a callback that creates an instance of the <see cref="T:Ninject.Activation.Providers.StandardProvider"/>
+            for the specified type.
+            </summary>
+            <param name="prototype">The prototype the provider instance will create.</param>
+            <returns>The created callback.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Providers.StandardProvider.GetCreationCallback(System.Type,System.Reflection.ConstructorInfo)">
+            <summary>
+            Gets a callback that creates an instance of the <see cref="T:Ninject.Activation.Providers.StandardProvider"/>
+            for the specified type and constructor.
+            </summary>
+            <param name="prototype">The prototype the provider instance will create.</param>
+            <param name="constructor">The constructor.</param>
+            <returns>The created callback.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Providers.StandardProvider.Create(Ninject.Activation.IContext)">
+            <summary>
+            Creates an instance within the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The created instance.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Providers.StandardProvider.GetValue(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Gets the value to inject into the specified target.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>The value to inject into the specified target.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Providers.StandardProvider.GetImplementationType(System.Type)">
+            <summary>
+            Gets the implementation type that the provider will activate an instance of
+            for the specified service.
+            </summary>
+            <param name="service">The service in question.</param>
+            <returns>The implementation type that will be activated.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Request">
+            <summary>
+            Describes the request for a service resolution.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Request.#ctor(System.Type,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},System.Collections.Generic.IEnumerable{Ninject.Parameters.IParameter},System.Func{System.Object},System.Boolean,System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Request"/> class.
+            </summary>
+            <param name="service">The service that was requested.</param>
+            <param name="constraint">The constraint that will be applied to filter the bindings used for the request.</param>
+            <param name="parameters">The parameters that affect the resolution.</param>
+            <param name="scopeCallback">The scope callback, if an external scope was specified.</param>
+            <param name="isOptional"><c>True</c> if the request is optional; otherwise, <c>false</c>.</param>
+            <param name="isUnique"><c>True</c> if the request should return a unique result; otherwise, <c>false</c>.</param>
+        </member>
+        <member name="M:Ninject.Activation.Request.#ctor(Ninject.Activation.IContext,System.Type,Ninject.Planning.Targets.ITarget,System.Func{System.Object})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Request"/> class.
+            </summary>
+            <param name="parentContext">The parent context.</param>
+            <param name="service">The service that was requested.</param>
+            <param name="target">The target that will receive the injection.</param>
+            <param name="scopeCallback">The scope callback, if an external scope was specified.</param>
+        </member>
+        <member name="P:Ninject.Activation.Request.Service">
+            <summary>
+            Gets the service that was requested.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.ParentRequest">
+            <summary>
+            Gets the parent request.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.ParentContext">
+            <summary>
+            Gets the parent context.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.Target">
+            <summary>
+            Gets the target that will receive the injection, if any.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.Constraint">
+            <summary>
+            Gets the constraint that will be applied to filter the bindings used for the request.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.Parameters">
+            <summary>
+            Gets the parameters that affect the resolution.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.ActiveBindings">
+            <summary>
+            Gets the stack of bindings which have been activated by either this request or its ancestors.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.Depth">
+            <summary>
+            Gets the recursive depth at which this request occurs.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.IsOptional">
+            <summary>
+            Gets or sets a value indicating whether the request is optional.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.IsUnique">
+            <summary>
+            Gets or sets a value indicating whether the request is for a single service.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.ForceUnique">
+            <summary>
+            Gets or sets a value indicating whether the request should force to return a unique value even if the request is optional.
+            If this value is set true the request will throw an ActivationException if there are multiple satisfying bindings rather
+            than returning null for the request is optional. For none optional requests this parameter does not change anything.
+            </summary>
+        </member>
+        <member name="P:Ninject.Activation.Request.ScopeCallback">
+            <summary>
+            Gets the callback that resolves the scope for the request, if an external scope was provided.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Request.Matches(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Determines whether the specified binding satisfies the constraints defined on this request.
+            </summary>
+            <param name="binding">The binding.</param>
+            <returns><c>True</c> if the binding satisfies the constraints; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Request.GetScope">
+            <summary>
+            Gets the scope if one was specified in the request.
+            </summary>
+            <returns>The object that acts as the scope.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Request.CreateChild(System.Type,Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Creates a child request.
+            </summary>
+            <param name="service">The service that is being requested.</param>
+            <param name="parentContext">The context in which the request was made.</param>
+            <param name="target">The target that will receive the injection.</param>
+            <returns>The child request.</returns>
+        </member>
+        <member name="M:Ninject.Activation.Request.ToString">
+            <summary>
+            Formats this object into a meaningful string representation.
+            </summary>
+            <returns>The request formatted as string.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.ActivationCacheStrategy">
+            <summary>
+            Adds all activated instances to the activation cache.
+            </summary>
+        </member>
+        <member name="F:Ninject.Activation.Strategies.ActivationCacheStrategy.activationCache">
+            <summary>
+            The activation cache.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.ActivationCacheStrategy.#ctor(Ninject.Activation.Caching.IActivationCache)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Strategies.ActivationCacheStrategy"/> class.
+            </summary>
+            <param name="activationCache">The activation cache.</param>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.ActivationCacheStrategy.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Contributes to the activation of the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.ActivationCacheStrategy.Deactivate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Contributes to the deactivation of the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being deactivated.</param>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.ActivationStrategy">
+            <summary>
+            Contributes to a <see cref="T:Ninject.Activation.IPipeline"/>, and is called during the activation
+            and deactivation of an instance.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.ActivationStrategy.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Contributes to the activation of the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.ActivationStrategy.Deactivate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Contributes to the deactivation of the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being deactivated.</param>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.BindingActionStrategy">
+            <summary>
+            Executes actions defined on the binding during activation and deactivation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.BindingActionStrategy.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Calls the activation actions defined on the binding.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.BindingActionStrategy.Deactivate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Calls the deactivation actions defined on the binding.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being deactivated.</param>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.DisposableStrategy">
+            <summary>
+            During deactivation, disposes instances that implement <see cref="T:System.IDisposable"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.DisposableStrategy.Deactivate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Disposes the specified instance.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being deactivated.</param>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.IActivationStrategy">
+            <summary>
+            Contributes to a <see cref="T:Ninject.Activation.IPipeline"/>, and is called during the activation
+            and deactivation of an instance.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.IActivationStrategy.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Contributes to the activation of the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.IActivationStrategy.Deactivate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Contributes to the deactivation of the instance in the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being deactivated.</param>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.InitializableStrategy">
+            <summary>
+            During activation, initializes instances that implement <see cref="T:Ninject.IInitializable"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.InitializableStrategy.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Initializes the specified instance.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.MethodInjectionStrategy">
+            <summary>
+            Injects methods on an instance during activation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.MethodInjectionStrategy.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Injects values into the properties as described by <see cref="T:Ninject.Planning.Directives.MethodInjectionDirective"/>s
+            contained in the plan.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.PropertyInjectionStrategy">
+            <summary>
+            Injects properties on an instance during activation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.PropertyInjectionStrategy.#ctor(Ninject.Injection.IInjectorFactory)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Activation.Strategies.PropertyInjectionStrategy"/> class.
+            </summary>
+            <param name="injectorFactory">The injector factory component.</param>
+        </member>
+        <member name="P:Ninject.Activation.Strategies.PropertyInjectionStrategy.InjectorFactory">
+            <summary>
+            Gets or sets the injector factory component.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.PropertyInjectionStrategy.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Injects values into the properties as described by <see cref="T:Ninject.Planning.Directives.PropertyInjectionDirective"/>s
+            contained in the plan.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.PropertyInjectionStrategy.AssignPropertyOverrides(Ninject.Activation.IContext,Ninject.Activation.InstanceReference,System.Collections.Generic.IList{Ninject.Parameters.IPropertyValue})">
+            <summary>
+            Applies user supplied override values to instance properties.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+            <param name="propertyValues">The parameter override value accessors.</param>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.PropertyInjectionStrategy.GetValue(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Collections.Generic.IEnumerable{Ninject.Parameters.IPropertyValue})">
+            <summary>
+            Gets the value to inject into the specified target.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <param name="allPropertyValues">all property values of the current request.</param>
+            <returns>The value to inject into the specified target.</returns>
+        </member>
+        <member name="T:Ninject.Activation.Strategies.StartableStrategy">
+            <summary>
+            Starts instances that implement <see cref="T:Ninject.IStartable"/> during activation,
+            and stops them during deactivation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.StartableStrategy.Activate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Starts the specified instance.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being activated.</param>
+        </member>
+        <member name="M:Ninject.Activation.Strategies.StartableStrategy.Deactivate(Ninject.Activation.IContext,Ninject.Activation.InstanceReference)">
+            <summary>
+            Stops the specified instance.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="reference">A reference to the instance being deactivated.</param>
+        </member>
+        <member name="T:Ninject.ConstraintAttribute">
+            <summary>
+            Defines a constraint on the decorated member.
+            </summary>
+        </member>
+        <member name="M:Ninject.ConstraintAttribute.Matches(Ninject.Planning.Bindings.IBindingMetadata)">
+            <summary>
+            Determines whether the specified binding metadata matches the constraint.
+            </summary>
+            <param name="metadata">The metadata in question.</param>
+            <returns><c>True</c> if the metadata matches; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="T:Ninject.InjectAttribute">
+            <summary>
+            Indicates that the decorated member should be injected.
+            </summary>
+        </member>
+        <member name="T:Ninject.NamedAttribute">
+            <summary>
+            Indicates that the decorated member should only be injected using binding(s) registered
+            with the specified name.
+            </summary>
+        </member>
+        <member name="M:Ninject.NamedAttribute.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.NamedAttribute"/> class.
+            </summary>
+            <param name="name">The name of the binding(s) to use.</param>
+        </member>
+        <member name="P:Ninject.NamedAttribute.Name">
+            <summary>
+            Gets the binding name.
+            </summary>
+        </member>
+        <member name="M:Ninject.NamedAttribute.Matches(Ninject.Planning.Bindings.IBindingMetadata)">
+            <summary>
+            Determines whether the specified binding metadata matches the constraint.
+            </summary>
+            <param name="metadata">The metadata in question.</param>
+            <returns><c>True</c> if the metadata matches; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="T:Ninject.OptionalAttribute">
+            <summary>
+            Indicates that the decorated member represents an optional dependency.
+            </summary>
+        </member>
+        <member name="T:Ninject.Components.ComponentContainer">
+            <summary>
+            An internal container that manages and resolves components that contribute to Ninject.
+            </summary>
+        </member>
+        <member name="P:Ninject.Components.ComponentContainer.Kernel">
+            <summary>
+            Gets or sets the kernel that owns the component container.
+            </summary>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.Dispose(System.Boolean)">
+            <summary>
+            Releases resources held by the object.
+            </summary>
+            <param name="disposing"><c>True</c> if called manually, otherwise by GC.</param>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.Add``2">
+            <summary>
+            Registers a component in the container.
+            </summary>
+            <typeparam name="TComponent">The component type.</typeparam>
+            <typeparam name="TImplementation">The component's implementation type.</typeparam>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.AddTransient``2">
+            <summary>
+            Registers a transient component in the container.
+            </summary>
+            <typeparam name="TComponent">The component type.</typeparam>
+            <typeparam name="TImplementation">The component's implementation type.</typeparam>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.RemoveAll``1">
+            <summary>
+            Removes all registrations for the specified component.
+            </summary>
+            <typeparam name="T">The component type.</typeparam>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.Remove``2">
+            <summary>
+            Removes the specified registration.
+            </summary>
+            <typeparam name="T">The component type.</typeparam>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.RemoveAll(System.Type)">
+            <summary>
+            Removes all registrations for the specified component.
+            </summary>
+            <param name="component">The component type.</param>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.Get``1">
+            <summary>
+            Gets one instance of the specified component.
+            </summary>
+            <typeparam name="T">The component type.</typeparam>
+            <returns>The instance of the component.</returns>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.GetAll``1">
+            <summary>
+            Gets all available instances of the specified component.
+            </summary>
+            <typeparam name="T">The component type.</typeparam>
+            <returns>A series of instances of the specified component.</returns>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.Get(System.Type)">
+            <summary>
+            Gets one instance of the specified component.
+            </summary>
+            <param name="component">The component type.</param>
+            <returns>The instance of the component.</returns>
+        </member>
+        <member name="M:Ninject.Components.ComponentContainer.GetAll(System.Type)">
+            <summary>
+            Gets all available instances of the specified component.
+            </summary>
+            <param name="component">The component type.</param>
+            <returns>A series of instances of the specified component.</returns>
+        </member>
+        <member name="T:Ninject.Components.IComponentContainer">
+            <summary>
+            An internal container that manages and resolves components that contribute to Ninject.
+            </summary>
+        </member>
+        <member name="P:Ninject.Components.IComponentContainer.Kernel">
+            <summary>
+            Gets or sets the kernel that owns the component container.
+            </summary>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.Add``2">
+            <summary>
+            Registers a component in the container.
+            </summary>
+            <typeparam name="TComponent">The component type.</typeparam>
+            <typeparam name="TImplementation">The component's implementation type.</typeparam>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.RemoveAll``1">
+            <summary>
+            Removes all registrations for the specified component.
+            </summary>
+            <typeparam name="T">The component type.</typeparam>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.RemoveAll(System.Type)">
+            <summary>
+            Removes all registrations for the specified component.
+            </summary>
+            <param name="component">The component's type.</param>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.Remove``2">
+            <summary>
+            Removes the specified registration.
+            </summary>
+            <typeparam name="T">The component type.</typeparam>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.Get``1">
+            <summary>
+            Gets one instance of the specified component.
+            </summary>
+            <typeparam name="T">The component type.</typeparam>
+            <returns>The instance of the component.</returns>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.GetAll``1">
+            <summary>
+            Gets all available instances of the specified component.
+            </summary>
+            <typeparam name="T">The component type.</typeparam>
+            <returns>A series of instances of the specified component.</returns>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.Get(System.Type)">
+            <summary>
+            Gets one instance of the specified component.
+            </summary>
+            <param name="component">The component type.</param>
+            <returns>The instance of the component.</returns>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.GetAll(System.Type)">
+            <summary>
+            Gets all available instances of the specified component.
+            </summary>
+            <param name="component">The component type.</param>
+            <returns>A series of instances of the specified component.</returns>
+        </member>
+        <member name="M:Ninject.Components.IComponentContainer.AddTransient``2">
+            <summary>
+            Registers a transient component in the container.
+            </summary>
+            <typeparam name="TComponent">The component type.</typeparam>
+            <typeparam name="TImplementation">The component's implementation type.</typeparam>
+        </member>
+        <member name="T:Ninject.Components.INinjectComponent">
+            <summary>
+            A component that contributes to the internals of Ninject.
+            </summary>
+        </member>
+        <member name="P:Ninject.Components.INinjectComponent.Settings">
+            <summary>
+            Gets or sets the settings.
+            </summary>
+        </member>
+        <member name="T:Ninject.Components.NinjectComponent">
+            <summary>
+            A component that contributes to the internals of Ninject.
+            </summary>
+        </member>
+        <member name="P:Ninject.Components.NinjectComponent.Settings">
+            <summary>
+            Gets or sets the settings.
+            </summary>
+        </member>
+        <member name="T:Ninject.GlobalKernelRegistration">
+            <summary>
+            Allows to register kernel globally to perform some tasks on all kernels.
+            The registration is done by loading the GlobalKernelRegistrationModule to the kernel.
+            </summary>
+        </member>
+        <member name="M:Ninject.GlobalKernelRegistration.RegisterKernelForType(Ninject.IKernel,System.Type)">
+            <summary>
+            Registers the kernel for the specified type.
+            </summary>
+            <param name="kernel">The <see cref="T:Ninject.IKernel"/>.</param>
+            <param name="type">The service type.</param>
+        </member>
+        <member name="M:Ninject.GlobalKernelRegistration.UnregisterKernelForType(Ninject.IKernel,System.Type)">
+            <summary>
+            Un-registers the kernel for the specified type.
+            </summary>
+            <param name="kernel">The <see cref="T:Ninject.IKernel"/>.</param>
+            <param name="type">The service type.</param>
+        </member>
+        <member name="M:Ninject.GlobalKernelRegistration.MapKernels(System.Action{Ninject.IKernel})">
+            <summary>
+            Performs an action on all registered kernels.
+            </summary>
+            <param name="action">The action.</param>
+        </member>
+        <member name="T:Ninject.GlobalKernelRegistrationModule`1">
+            <summary>
+            Registers the kernel into which the module is loaded on the GlobalKernelRegistry using the
+            type specified by TGlobalKernelRegistry.
+            </summary>
+            <typeparam name="TGlobalKernelRegistry">The type that is used to register the kernel.</typeparam>
+        </member>
+        <member name="M:Ninject.GlobalKernelRegistrationModule`1.Load">
+            <summary>
+            Loads the module into the kernel.
+            </summary>
+        </member>
+        <member name="M:Ninject.GlobalKernelRegistrationModule`1.Unload">
+            <summary>
+            Unloads the module from the kernel.
+            </summary>
+        </member>
+        <member name="T:Ninject.IHaveNinjectComponents">
+            <summary>
+            Provides access to Ninject components.
+            </summary>
+        </member>
+        <member name="P:Ninject.IHaveNinjectComponents.Components">
+            <summary>
+            Gets the component container, which holds components that contribute to Ninject.
+            </summary>
+        </member>
+        <member name="T:Ninject.IHaveNinjectSettings">
+            <summary>
+            Provides access to Ninject settings.
+            </summary>
+        </member>
+        <member name="P:Ninject.IHaveNinjectSettings.Settings">
+            <summary>
+            Gets the kernel settings.
+            </summary>
+        </member>
+        <member name="T:Ninject.IInitializable">
+            <summary>
+            A service that requires initialization after it is activated.
+            </summary>
+        </member>
+        <member name="M:Ninject.IInitializable.Initialize">
+            <summary>
+            Initializes the instance. Called during activation.
+            </summary>
+        </member>
+        <member name="T:Ninject.IKernel">
+            <summary>
+            A super-factory that can create objects of all kinds, following hints provided by <see cref="T:Ninject.Planning.Bindings.IBinding"/>s.
+            </summary>
+        </member>
+        <member name="P:Ninject.IKernel.Settings">
+            <summary>
+            Gets the kernel settings.
+            </summary>
+        </member>
+        <member name="P:Ninject.IKernel.Components">
+            <summary>
+            Gets the component container, which holds components that contribute to Ninject.
+            </summary>
+        </member>
+        <member name="M:Ninject.IKernel.GetModules">
+            <summary>
+            Gets the modules that have been loaded into the kernel.
+            </summary>
+            <returns>A series of loaded modules.</returns>
+        </member>
+        <member name="M:Ninject.IKernel.HasModule(System.String)">
+            <summary>
+            Determines whether a module with the specified name has been loaded in the kernel.
+            </summary>
+            <param name="name">The name of the module.</param>
+            <returns><c>True</c> if the specified module has been loaded; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.IKernel.Load(System.Collections.Generic.IEnumerable{Ninject.Modules.INinjectModule})">
+            <summary>
+            Loads the module(s) into the kernel.
+            </summary>
+            <param name="m">The modules to load.</param>
+        </member>
+        <member name="M:Ninject.IKernel.Load(System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            Loads modules from the files that match the specified pattern(s).
+            </summary>
+            <param name="filePatterns">The file patterns (i.e. "*.dll", "modules/*.rb") to match.</param>
+        </member>
+        <member name="M:Ninject.IKernel.Load(System.Collections.Generic.IEnumerable{System.Reflection.Assembly})">
+            <summary>
+            Loads modules defined in the specified assemblies.
+            </summary>
+            <param name="assemblies">The assemblies to search.</param>
+        </member>
+        <member name="M:Ninject.IKernel.Unload(System.String)">
+            <summary>
+            Unloads the plugin with the specified name.
+            </summary>
+            <param name="name">The plugin's name.</param>
+        </member>
+        <member name="M:Ninject.IKernel.GetBindings(System.Type)">
+            <summary>
+            Gets the bindings registered for the specified service.
+            </summary>
+            <param name="service">The service in question.</param>
+            <returns>A series of bindings that are registered for the service.</returns>
+        </member>
+        <member name="M:Ninject.IKernel.BeginBlock">
+            <summary>
+            Begins a new activation block, which can be used to deterministically dispose resolved instances.
+            </summary>
+            <returns>The new activation block.</returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.Disposal.DisposableObject">
+            <summary>
+            An object that notifies when it is disposed.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Disposal.DisposableObject.Finalize">
+            <summary>
+            Finalizes an instance of the <see cref="T:Ninject.Infrastructure.Disposal.DisposableObject"/> class.
+            </summary>
+        </member>
+        <member name="E:Ninject.Infrastructure.Disposal.DisposableObject.Disposed">
+            <summary>
+            Occurs when the object is disposed.
+            </summary>
+        </member>
+        <member name="P:Ninject.Infrastructure.Disposal.DisposableObject.IsDisposed">
+            <summary>
+            Gets a value indicating whether this instance is disposed.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Disposal.DisposableObject.Dispose">
+            <summary>
+            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Disposal.DisposableObject.Dispose(System.Boolean)">
+            <summary>
+            Releases resources held by the object.
+            </summary>
+            <param name="disposing"><c>True</c> if called manually, otherwise by GC.</param>
+        </member>
+        <member name="T:Ninject.Infrastructure.Disposal.IDisposableObject">
+            <summary>
+            An object that can report whether or not it is disposed.
+            </summary>
+        </member>
+        <member name="P:Ninject.Infrastructure.Disposal.IDisposableObject.IsDisposed">
+            <summary>
+            Gets a value indicating whether this instance is disposed.
+            </summary>
+        </member>
+        <member name="T:Ninject.Infrastructure.Disposal.INotifyWhenDisposed">
+            <summary>
+            An object that fires an event when it is disposed.
+            </summary>
+        </member>
+        <member name="E:Ninject.Infrastructure.Disposal.INotifyWhenDisposed.Disposed">
+            <summary>
+            Occurs when the object is disposed.
+            </summary>
+        </member>
+        <member name="T:Ninject.Infrastructure.Ensure">
+            <summary>
+            Argument guard.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Ensure.ArgumentNotNull(System.Object,System.String)">
+            <summary>
+            Ensures the argument is not null.
+            </summary>
+            <param name="argument">The argument value.</param>
+            <param name="name">The argument name.</param>
+        </member>
+        <member name="M:Ninject.Infrastructure.Ensure.ArgumentNotNullOrEmpty(System.String,System.String)">
+            <summary>
+            Ensures the argument is not null or empty.
+            </summary>
+            <param name="argument">The argument value.</param>
+            <param name="name">The argument name.</param>
+        </member>
+        <member name="T:Ninject.Infrastructure.IHaveBindingConfiguration">
+            <summary>
+            Indicates the object has a reference to a <see cref="T:Ninject.Planning.Bindings.IBinding"/>.
+            </summary>
+        </member>
+        <member name="P:Ninject.Infrastructure.IHaveBindingConfiguration.BindingConfiguration">
+            <summary>
+            Gets the binding.
+            </summary>
+        </member>
+        <member name="T:Ninject.Infrastructure.IHaveKernel">
+            <summary>
+            Indicates that the object has a reference to an <see cref="T:Ninject.IKernel"/>.
+            </summary>
+        </member>
+        <member name="P:Ninject.Infrastructure.IHaveKernel.Kernel">
+            <summary>
+            Gets the kernel.
+            </summary>
+        </member>
+        <member name="T:Ninject.Infrastructure.Introspection.ExceptionFormatter">
+            <summary>
+            Provides meaningful exception messages.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.ModulesWithNullOrEmptyNamesAreNotSupported">
+            <summary>
+            Generates a message saying that modules without names are not supported.
+            </summary>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.TargetDoesNotHaveADefaultValue(Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Generates a message saying that modules without names are not supported.
+            </summary>
+            <param name="target">The target.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.ModuleWithSameNameIsAlreadyLoaded(Ninject.Modules.INinjectModule,Ninject.Modules.INinjectModule)">
+            <summary>
+            Generates a message saying that a module with the same name is already loaded.
+            </summary>
+            <param name="newModule">The new module.</param>
+            <param name="existingModule">The existing module.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.NoModuleLoadedWithTheSpecifiedName(System.String)">
+            <summary>
+            Generates a message saying that no module has been loaded with the specified name.
+            </summary>
+            <param name="name">The module name.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.CouldNotUniquelyResolveBinding(Ninject.Activation.IRequest,System.String[])">
+            <summary>
+            Generates a message saying that the binding could not be uniquely resolved.
+            </summary>
+            <param name="request">The request.</param>
+            <param name="formattedMatchingBindings">The matching bindings, already formatted as strings</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.CouldNotResolveBinding(Ninject.Activation.IRequest)">
+            <summary>
+            Generates a message saying that the binding could not be resolved on the specified request.
+            </summary>
+            <param name="request">The request.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.CyclicalDependenciesDetected(Ninject.Activation.IContext)">
+            <summary>
+            Generates a message saying that the specified context has cyclic dependencies.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.InvalidAttributeTypeUsedInBindingCondition(System.String,System.String,System.Type)">
+            <summary>
+            Generates a message saying that an invalid attribute type is used in the binding condition.
+            </summary>
+            <param name="serviceNames">The names of the services.</param>
+            <param name="methodName">Name of the method.</param>
+            <param name="type">The type.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.NoConstructorsAvailable(Ninject.Activation.IContext)">
+            <summary>
+            Generates a message saying that no constructors are available on the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.NoConstructorsAvailableForComponent(System.Type,System.Type)">
+            <summary>
+            Generates a message saying that no constructors are available for the given component.
+            </summary>
+            <param name="component">The component.</param>
+            <param name="implementation">The implementation.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.NoSuchComponentRegistered(System.Type)">
+            <summary>
+            Generates a message saying that the specified component is not registered.
+            </summary>
+            <param name="component">The component.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.CouldNotResolvePropertyForValueInjection(Ninject.Activation.IRequest,System.String)">
+            <summary>
+            Generates a message saying that the specified property could not be resolved on the specified request.
+            </summary>
+            <param name="request">The request.</param>
+            <param name="propertyName">The property name.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.ProviderCallbackIsNull(Ninject.Activation.IContext)">
+            <summary>
+            Generates a message saying that the provider callback on the specified context is null.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.ProviderReturnedNull(Ninject.Activation.IContext)">
+            <summary>
+            Generates a message saying that the provider on the specified context returned null.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.ConstructorsAmbiguous(Ninject.Activation.IContext,System.Linq.IGrouping{System.Int32,Ninject.Planning.Directives.ConstructorInjectionDirective})">
+            <summary>
+            Generates a message saying that the constructor is ambiguous.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="bestDirectives">The best constructor directives.</param>
+            <returns>The exception message.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.FormatConstructor(System.Reflection.ConstructorInfo,System.IO.StringWriter)">
+            <summary>
+            Formats the constructor.
+            </summary>
+            <param name="constructor">The constructor.</param>
+            <param name="sw">The string writer.</param>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.ExceptionFormatter.FormatAttribute(System.IO.StringWriter,System.Attribute)">
+            <summary>
+            Formats the attribute.
+            </summary>
+            <param name="sw">The string writer.</param>
+            <param name="attribute">The attribute.</param>
+        </member>
+        <member name="T:Ninject.Infrastructure.Introspection.FormatExtensions">
+            <summary>
+            Provides extension methods for string formatting
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.FormatExtensions.FormatActivationPath(Ninject.Activation.IRequest)">
+            <summary>
+            Formats the activation path into a meaningful string representation.
+            </summary>
+            <param name="request">The request to be formatted.</param>
+            <returns>The activation path formatted as string.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.FormatExtensions.Format(Ninject.Planning.Bindings.IBinding,Ninject.Activation.IContext)">
+            <summary>
+            Formats the given binding into a meaningful string representation.
+            </summary>
+            <param name="binding">The binding to be formatted.</param>
+            <param name="context">The context.</param>
+            <returns>The binding formatted as string</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.FormatExtensions.Format(Ninject.Activation.IRequest)">
+            <summary>
+            Formats the specified request into a meaningful string representation.
+            </summary>
+            <param name="request">The request to be formatted.</param>
+            <returns>The request formatted as string.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.FormatExtensions.Format(Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Formats the specified target into a meaningful string representation..
+            </summary>
+            <param name="target">The target to be formatted.</param>
+            <returns>The target formatted as string.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Introspection.FormatExtensions.Format(System.Type)">
+            <summary>
+            Formats the specified type into a meaningful string representation..
+            </summary>
+            <param name="type">The type to be formatted.</param>
+            <returns>The type formatted as string.</returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.Language.ExtensionsForAssembly">
+            <summary>
+            Provides extension methods for <see cref="T:System.Reflection.Assembly"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForAssembly.HasNinjectModules(System.Reflection.Assembly)">
+            <summary>
+            Determines whether the assembly has loadable <see cref="T:Ninject.Modules.INinjectModule"/>.
+            </summary>
+            <param name="assembly">The <see cref="T:System.Reflection.Assembly"/>.</param>
+            <returns><c>True</c> if there's any loadable <see cref="T:Ninject.Modules.INinjectModule"/>, otherwise <c>False</c>.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForAssembly.GetNinjectModules(System.Reflection.Assembly)">
+            <summary>
+            Gets loadable <see cref="T:Ninject.Modules.INinjectModule"/>s from the <see cref="T:System.Reflection.Assembly"/>.
+            </summary>
+            <param name="assembly">The <see cref="T:System.Reflection.Assembly"/>.</param>
+            <returns>The loadable <see cref="T:Ninject.Modules.INinjectModule"/>s</returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.Language.ExtensionsForICustomAttributeProvider">
+            <summary>
+            Provides extension methods for <see cref="T:System.Reflection.ICustomAttributeProvider"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForICustomAttributeProvider.HasAttribute(System.Reflection.ICustomAttributeProvider,System.Type)">
+            <summary>
+            Determines if the <see cref="T:System.Reflection.ICustomAttributeProvider"/> has the specified attribute.
+            </summary>
+            <param name="member">The <see cref="T:System.Reflection.ICustomAttributeProvider"/>.</param>
+            <param name="type">The attribute type.</param>
+            <returns><c>True</c> if the <see cref="T:System.Reflection.ICustomAttributeProvider"/> has the attribute, otherwise <c>False</c>.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForICustomAttributeProvider.GetCustomAttributesExtended(System.Reflection.ICustomAttributeProvider,System.Type,System.Boolean)">
+            <summary>
+            Gets custom attributes which supports <see cref="T:System.Reflection.MemberInfo"/> and <see cref="T:System.Reflection.PropertyInfo"/>.
+            </summary>
+            <param name="member">The <see cref="T:System.Reflection.ICustomAttributeProvider"/>.</param>
+            <param name="attributeType">The attribute type.</param>
+            <param name="inherit">When true, look up the hierarchy chain for the inherited custom attribute.</param>
+            <returns>The attributes.</returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.Language.ExtensionsForIEnumerable">
+            <summary>
+            Provides extension methods for <see cref="T:System.Collections.IEnumerable"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForIEnumerable.CastSlow(System.Collections.IEnumerable,System.Type)">
+            <summary>
+            Casts the elements of an <see cref="T:System.Collections.IEnumerable"/> to the specified type using reflection.
+            </summary>
+            <param name="series">The <see cref="T:System.Collections.IEnumerable"/> that contains the elements to be cast.</param>
+            <param name="elementType">The type to cast the elements of source to.</param>
+            <returns>
+            An <see cref="T:System.Collections.IEnumerable"/> that contains each element of the
+            source sequence cast to the specified type.
+            </returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForIEnumerable.ToArraySlow(System.Collections.IEnumerable,System.Type)">
+            <summary>
+            Creates an array from an <see cref="T:System.Collections.IEnumerable"/>.
+            </summary>
+            <param name="series">An <see cref="T:System.Collections.IEnumerable"/> to create an array from.</param>
+            <param name="elementType">The type of the elements.</param>
+            <returns>An array that contains the elements from the input sequence.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForIEnumerable.ToListSlow(System.Collections.IEnumerable,System.Type)">
+            <summary>
+            Creates an <see cref="T:System.Collections.IList"/> from an <see cref="T:System.Collections.IEnumerable"/>.
+            </summary>
+            <param name="series">An <see cref="T:System.Collections.IEnumerable"/> to create an <see cref="T:System.Collections.IList"/> from.</param>
+            <param name="elementType">The type of the elements.</param>
+            <returns>An <see cref="T:System.Collections.IList"/> that contains the elements from the input sequence.</returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT">
+            <summary>
+            Provides extension methods for <see cref="T:System.Collections.Generic.IEnumerable`1"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map``1(System.Collections.Generic.IEnumerable{``0},System.Action{``0})">
+            <summary>
+            Executes the given action for each of the elements in the enumerable.
+            </summary>
+            <typeparam name="T">Type of the enumerable.</typeparam>
+            <param name="series">The series.</param>
+            <param name="action">The action.</param>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.ToEnumerable``1(System.Collections.Generic.IEnumerable{``0})">
+            <summary>
+            Converts the given enumerable type to prevent changed on the type behind.
+            </summary>
+            <typeparam name="T">The type of the enumerable.</typeparam>
+            <param name="series">The series.</param>
+            <returns>The input type as real enumerable not castable to the original type.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.SingleOrThrowException``1(System.Collections.Generic.IEnumerable{``0},System.Func{Ninject.ActivationException})">
+            <summary>
+            Returns single element of enumerable or throws exception.
+            </summary>
+            <param name="series">The series.</param>
+            <param name="exceptionCreator">The exception creator.</param>
+            <typeparam name="T">Type of the enumerable.</typeparam>
+            <returns>The single element of enumerable.</returns>
+            <exception cref="T:Ninject.ActivationException">
+            Exception specified by exception creator.
+            </exception>
+        </member>
+        <member name="T:Ninject.Infrastructure.Language.ExtensionsForMemberInfo">
+            <summary>
+            Provides extension methods for <see cref="T:System.Reflection.MemberInfo"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForMemberInfo.HasAttribute``1(System.Reflection.MemberInfo)">
+            <summary>
+            Determines whether the specified member has attribute.
+            </summary>
+            <typeparam name="T">The type of the attribute.</typeparam>
+            <param name="member">The member.</param>
+            <returns>
+            <c>true</c> if the specified member has attribute; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForMemberInfo.HasAttribute(System.Reflection.MemberInfo,System.Type)">
+            <summary>
+            Determines whether the specified member has attribute.
+            </summary>
+            <param name="member">The member.</param>
+            <param name="type">The type of the attribute.</param>
+            <returns>
+            <c>true</c> if the specified member has attribute; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForMemberInfo.GetPropertyFromDeclaredType(System.Reflection.MemberInfo,System.Reflection.PropertyInfo,System.Reflection.BindingFlags)">
+            <summary>
+            Gets the property info from its declared tpe.
+            </summary>
+            <param name="memberInfo">The member info.</param>
+            <param name="propertyDefinition">The property definition.</param>
+            <param name="flags">The flags.</param>
+            <returns>The property info from the declared type of the property.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForMemberInfo.IsPrivate(System.Reflection.PropertyInfo)">
+            <summary>
+            Determines whether the specified property info is private.
+            </summary>
+            <param name="propertyInfo">The property info.</param>
+            <returns>
+            <c>true</c> if the specified property info is private; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForMemberInfo.GetCustomAttributesExtended(System.Reflection.MemberInfo,System.Type,System.Boolean)">
+            <summary>
+            Gets the custom attributes.
+            This version is able to get custom attributes for properties from base types even if the property is non-public.
+            </summary>
+            <param name="member">The member.</param>
+            <param name="attributeType">Type of the attribute.</param>
+            <param name="inherited">if set to <c>true</c> [inherited].</param>
+            <returns>The custom attributes.</returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.Language.ExtensionsForTargetInvocationException">
+            <summary>
+            Provides extension methods for <see cref="T:System.Reflection.TargetInvocationException"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForTargetInvocationException.RethrowInnerException(System.Reflection.TargetInvocationException)">
+            <summary>
+            Re-throws inner exception.
+            </summary>
+            <param name="exception">The <see cref="T:System.Reflection.TargetInvocationException"/>.</param>
+        </member>
+        <member name="T:Ninject.Infrastructure.Language.ExtensionsForType">
+            <summary>
+            Extension methods for <see cref="T:System.Type"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Language.ExtensionsForType.GetAllBaseTypes(System.Type)">
+            <summary>
+            Gets an enumerable containing the given type and all its base types
+            </summary>
+            <param name="type">The type.</param>
+            <returns>An enumerable containing the given type and all its base types</returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.Multimap`2">
+            <summary>
+            A data structure that contains multiple values for a each key.
+            </summary>
+            <typeparam name="TKey">The type of key.</typeparam>
+            <typeparam name="TValue">The type of value.</typeparam>
+        </member>
+        <member name="P:Ninject.Infrastructure.Multimap`2.Keys">
+            <summary>
+            Gets the collection of keys.
+            </summary>
+        </member>
+        <member name="P:Ninject.Infrastructure.Multimap`2.Values">
+            <summary>
+            Gets the collection of collections of values.
+            </summary>
+        </member>
+        <member name="P:Ninject.Infrastructure.Multimap`2.Item(`0)">
+            <summary>
+            Gets the collection of values stored under the specified key.
+            </summary>
+            <param name="key">The key.</param>
+        </member>
+        <member name="M:Ninject.Infrastructure.Multimap`2.Add(`0,`1)">
+            <summary>
+            Adds the specified value for the specified key.
+            </summary>
+            <param name="key">The key.</param>
+            <param name="value">The value.</param>
+        </member>
+        <member name="M:Ninject.Infrastructure.Multimap`2.Remove(`0,`1)">
+            <summary>
+            Removes the specified value for the specified key.
+            </summary>
+            <param name="key">The key.</param>
+            <param name="value">The value.</param>
+            <returns><c>True</c> if such a value existed and was removed; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Multimap`2.RemoveAll(`0)">
+            <summary>
+            Removes all values for the specified key.
+            </summary>
+            <param name="key">The key.</param>
+            <returns><c>True</c> if any such values existed; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Multimap`2.Clear">
+            <summary>
+            Removes all values.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.Multimap`2.ContainsKey(`0)">
+            <summary>
+            Determines whether the multimap contains any values for the specified key.
+            </summary>
+            <param name="key">The key.</param>
+            <returns><c>True</c> if the multimap has one or more values for the specified key; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Multimap`2.ContainsValue(`0,`1)">
+            <summary>
+            Determines whether the multimap contains the specified value for the specified key.
+            </summary>
+            <param name="key">The key.</param>
+            <param name="value">The value.</param>
+            <returns><c>True</c> if the multimap contains such a value; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Multimap`2.GetEnumerator">
+            <summary>
+            Returns an enumerator that iterates through a the multimap.
+            </summary>
+            <returns>An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the multimap.</returns>
+        </member>
+        <member name="M:Ninject.Infrastructure.Multimap`2.System#Collections#Generic#IEnumerable{System#Collections#Generic#KeyValuePair{TKey,System#Collections#Generic#ICollection{TValue}}}#GetEnumerator">
+            <summary>
+            Returns an enumerator that iterates through a the multimap.
+            </summary>
+            <returns>An <see cref="T:System.Collections.Generic.IEnumerator`1"/> object that can be used to iterate through the multimap.</returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.ReferenceEqualWeakReference">
+            <summary>
+            Weak reference that can be used in collections. It is equal to the
+            object it references and has the same hash code.
+            </summary>
+        </member>
+        <member name="M:Ninject.Infrastructure.ReferenceEqualWeakReference.#ctor(System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Infrastructure.ReferenceEqualWeakReference"/> class.
+            </summary>
+            <param name="target">The target.</param>
+        </member>
+        <member name="M:Ninject.Infrastructure.ReferenceEqualWeakReference.#ctor(System.Object,System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Infrastructure.ReferenceEqualWeakReference"/> class.
+            </summary>
+            <param name="target">The target.</param>
+            <param name="trackResurrection">if set to <c>true</c> [track resurrection].</param>
+        </member>
+        <member name="M:Ninject.Infrastructure.ReferenceEqualWeakReference.Equals(System.Object)">
+            <summary>
+            Determines whether the specified <see cref="T:System.Object"/> is equal to this instance.
+            </summary>
+            <param name="obj">The <see cref="T:System.Object"/> to compare with this instance.</param>
+            <returns>
+                <c>true</c> if the specified <see cref="T:System.Object"/> is equal to this instance; otherwise, <c>false</c>.
+            </returns>
+            <exception cref="T:System.NullReferenceException">
+            The <paramref name="obj"/> parameter is null.
+            </exception>
+        </member>
+        <member name="M:Ninject.Infrastructure.ReferenceEqualWeakReference.GetHashCode">
+            <summary>
+            Returns a hash code for this instance.
+            </summary>
+            <returns>
+            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+            </returns>
+        </member>
+        <member name="T:Ninject.Infrastructure.StandardScopeCallbacks">
+            <summary>
+            Scope callbacks for standard scopes.
+            </summary>
+        </member>
+        <member name="F:Ninject.Infrastructure.StandardScopeCallbacks.Transient">
+            <summary>
+            Gets the callback for transient scope.
+            </summary>
+        </member>
+        <member name="F:Ninject.Infrastructure.StandardScopeCallbacks.Singleton">
+            <summary>
+            Gets the callback for singleton scope.
+            </summary>
+        </member>
+        <member name="F:Ninject.Infrastructure.StandardScopeCallbacks.Thread">
+            <summary>
+            Gets the callback for thread scope.
+            </summary>
+        </member>
+        <member name="T:Ninject.INinjectSettings">
+            <summary>
+            Contains configuration options for Ninject.
+            </summary>
+        </member>
+        <member name="P:Ninject.INinjectSettings.InjectAttribute">
+            <summary>
+            Gets the attribute that indicates that a member should be injected.
+            </summary>
+        </member>
+        <member name="P:Ninject.INinjectSettings.CachePruningInterval">
+            <summary>
+            Gets the interval at which the cache should be pruned.
+            </summary>
+        </member>
+        <member name="P:Ninject.INinjectSettings.DefaultScopeCallback">
+            <summary>
+            Gets the default scope callback.
+            </summary>
+        </member>
+        <member name="P:Ninject.INinjectSettings.LoadExtensions">
+            <summary>
+            Gets a value indicating whether the kernel should automatically load extensions at startup.
+            </summary>
+        </member>
+        <member name="P:Ninject.INinjectSettings.ExtensionSearchPatterns">
+            <summary>
+            Gets the paths that should be searched for extensions.
+            </summary>
+        </member>
+        <member name="P:Ninject.INinjectSettings.UseReflectionBasedInjection">
+            <summary>
+            Gets a value indicating whether Ninject should use reflection-based injection instead of
+            the (usually faster) lightweight code generation system.
+            </summary>
+        </member>
+        <member name="P:Ninject.INinjectSettings.InjectNonPublic">
+            <summary>
+            Gets or sets a value indicating whether Ninject should inject non public members.
+            </summary>
+        </member>
+        <member name="P:Ninject.INinjectSettings.InjectParentPrivateProperties">
+            <summary>
+            Gets or sets a value indicating whether Ninject should inject private properties of base classes.
+            </summary>
+            <remarks>
+            Activating this setting has an impact on the performance. It is recommended not
+            to use this feature and use constructor injection instead.
+            </remarks>
+        </member>
+        <member name="P:Ninject.INinjectSettings.ActivationCacheDisabled">
+            <summary>
+            Gets or sets a value indicating whether the activation cache is disabled.
+            If the activation cache is disabled less memory is used. But in some cases
+            instances are activated or deactivated multiple times. e.g. in the following scenario:
+            Bind{A}().ToSelf();
+            Bind{IA}().ToMethod(ctx => kernel.Get{IA}();
+            </summary>
+            <value>
+                <c>true</c> if activation cache is disabled; otherwise, <c>false</c>.
+            </value>
+        </member>
+        <member name="P:Ninject.INinjectSettings.AllowNullInjection">
+            <summary>
+            Gets or sets a value indicating whether Null is a valid value for injection.
+            By default this is disabled and whenever a provider returns null an exception is thrown.
+            </summary>
+            <value><c>true</c> if null is allowed as injected value otherwise false.</value>
+        </member>
+        <member name="M:Ninject.INinjectSettings.Get``1(System.String,``0)">
+            <summary>
+            Gets the value for the specified key.
+            </summary>
+            <typeparam name="T">The type of value to return.</typeparam>
+            <param name="key">The setting's key.</param>
+            <param name="defaultValue">The value to return if no setting is available.</param>
+            <returns>The value, or the default value if none was found.</returns>
+        </member>
+        <member name="M:Ninject.INinjectSettings.Set(System.String,System.Object)">
+            <summary>
+            Sets the value for the specified key.
+            </summary>
+            <param name="key">The setting's key.</param>
+            <param name="value">The setting's value.</param>
+        </member>
+        <member name="T:Ninject.Injection.ConstructorInjector">
+            <summary>
+            Represents a delegate that can inject values into a constructor.
+            </summary>
+            <param name="arguments">The arguments used for the constructor.</param>
+            <returns>An object created from the constructor.</returns>
+        </member>
+        <member name="T:Ninject.Injection.DynamicMethodInjectorFactory">
+            <summary>
+            Creates injectors for members via <see cref="T:System.Reflection.Emit.DynamicMethod"/>s.
+            </summary>
+        </member>
+        <member name="M:Ninject.Injection.DynamicMethodInjectorFactory.Create(System.Reflection.ConstructorInfo)">
+            <summary>
+            Gets or creates an injector for the specified constructor.
+            </summary>
+            <param name="constructor">The constructor.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="M:Ninject.Injection.DynamicMethodInjectorFactory.Create(System.Reflection.PropertyInfo)">
+            <summary>
+            Gets or creates an injector for the specified property.
+            </summary>
+            <param name="property">The property.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="M:Ninject.Injection.DynamicMethodInjectorFactory.Create(System.Reflection.MethodInfo)">
+            <summary>
+            Gets or creates an injector for the specified method.
+            </summary>
+            <param name="method">The method.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="T:Ninject.Injection.IInjectorFactory">
+            <summary>
+            Creates injectors from members.
+            </summary>
+        </member>
+        <member name="M:Ninject.Injection.IInjectorFactory.Create(System.Reflection.ConstructorInfo)">
+            <summary>
+            Gets or creates an injector for the specified constructor.
+            </summary>
+            <param name="constructor">The constructor.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="M:Ninject.Injection.IInjectorFactory.Create(System.Reflection.PropertyInfo)">
+            <summary>
+            Gets or creates an injector for the specified property.
+            </summary>
+            <param name="property">The property.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="M:Ninject.Injection.IInjectorFactory.Create(System.Reflection.MethodInfo)">
+            <summary>
+            Gets or creates an injector for the specified method.
+            </summary>
+            <param name="method">The method.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="T:Ninject.Injection.MethodInjector">
+            <summary>
+            Represents a delegate that can inject values into a method.
+            </summary>
+            <param name="target">The method info.</param>
+            <param name="arguments">The arguments used for the method.</param>
+        </member>
+        <member name="T:Ninject.Injection.PropertyInjector">
+            <summary>
+            Represents a delegate that can inject values into a property.
+            </summary>
+            <param name="target">The property info.</param>
+            <param name="value">The value to be injected to the property.</param>
+        </member>
+        <member name="T:Ninject.Injection.ReflectionInjectorFactory">
+            <summary>
+            Creates injectors from members via reflective invocation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Injection.ReflectionInjectorFactory.Create(System.Reflection.ConstructorInfo)">
+            <summary>
+            Gets or creates an injector for the specified constructor.
+            </summary>
+            <param name="constructor">The constructor.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="M:Ninject.Injection.ReflectionInjectorFactory.Create(System.Reflection.PropertyInfo)">
+            <summary>
+            Gets or creates an injector for the specified property.
+            </summary>
+            <param name="property">The property.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="M:Ninject.Injection.ReflectionInjectorFactory.Create(System.Reflection.MethodInfo)">
+            <summary>
+            Gets or creates an injector for the specified method.
+            </summary>
+            <param name="method">The method.</param>
+            <returns>The created injector.</returns>
+        </member>
+        <member name="T:Ninject.IStartable">
+            <summary>
+            A service that is started when activated, and stopped when deactivated.
+            </summary>
+        </member>
+        <member name="M:Ninject.IStartable.Start">
+            <summary>
+            Starts this instance. Called during activation.
+            </summary>
+        </member>
+        <member name="M:Ninject.IStartable.Stop">
+            <summary>
+            Stops this instance. Called during deactivation.
+            </summary>
+        </member>
+        <member name="T:Ninject.KernelBase">
+            <summary>
+            The base implementation of an <see cref="T:Ninject.IKernel"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.KernelBase.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.KernelBase"/> class.
+            </summary>
+        </member>
+        <member name="M:Ninject.KernelBase.#ctor(Ninject.Modules.INinjectModule[])">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.KernelBase"/> class.
+            </summary>
+            <param name="modules">The modules to load into the kernel.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.#ctor(Ninject.INinjectSettings,Ninject.Modules.INinjectModule[])">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.KernelBase"/> class.
+            </summary>
+            <param name="settings">The configuration to use.</param>
+            <param name="modules">The modules to load into the kernel.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.#ctor(Ninject.Components.IComponentContainer,Ninject.INinjectSettings,Ninject.Modules.INinjectModule[])">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.KernelBase"/> class.
+            </summary>
+            <param name="components">The component container to use.</param>
+            <param name="settings">The configuration to use.</param>
+            <param name="modules">The modules to load into the kernel.</param>
+        </member>
+        <member name="P:Ninject.KernelBase.Settings">
+            <summary>
+            Gets the kernel settings.
+            </summary>
+        </member>
+        <member name="P:Ninject.KernelBase.Components">
+            <summary>
+            Gets the component container, which holds components that contribute to Ninject.
+            </summary>
+        </member>
+        <member name="M:Ninject.KernelBase.Dispose(System.Boolean)">
+            <summary>
+            Releases resources held by the object.
+            </summary>
+            <param name="disposing"><c>True</c> if called manually, otherwise by GC.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.Unbind(System.Type)">
+            <summary>
+            Unregisters all bindings for the specified service.
+            </summary>
+            <param name="service">The service to unbind.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.AddBinding(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Registers the specified binding.
+            </summary>
+            <param name="binding">The binding to add.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.RemoveBinding(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Unregisters the specified binding.
+            </summary>
+            <param name="binding">The binding to remove.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.HasModule(System.String)">
+            <summary>
+            Determines whether a module with the specified name has been loaded in the kernel.
+            </summary>
+            <param name="name">The name of the module.</param>
+            <returns><c>True</c> if the specified module has been loaded; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.GetModules">
+            <summary>
+            Gets the modules that have been loaded into the kernel.
+            </summary>
+            <returns>A series of loaded modules.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.Load(System.Collections.Generic.IEnumerable{Ninject.Modules.INinjectModule})">
+            <summary>
+            Loads the module(s) into the kernel.
+            </summary>
+            <param name="m">The modules to load.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.Load(System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            Loads modules from the files that match the specified pattern(s).
+            </summary>
+            <param name="filePatterns">The file patterns (i.e. "*.dll", "modules/*.rb") to match.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.Load(System.Collections.Generic.IEnumerable{System.Reflection.Assembly})">
+            <summary>
+            Loads modules defined in the specified assemblies.
+            </summary>
+            <param name="assemblies">The assemblies to search.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.Unload(System.String)">
+            <summary>
+            Unloads the plugin with the specified name.
+            </summary>
+            <param name="name">The plugin's name.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.Inject(System.Object,Ninject.Parameters.IParameter[])">
+            <summary>
+            Injects the specified existing instance, without managing its lifecycle.
+            </summary>
+            <param name="instance">The instance to inject.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+        </member>
+        <member name="M:Ninject.KernelBase.Release(System.Object)">
+            <summary>
+            Deactivates and releases the specified instance if it is currently managed by Ninject.
+            </summary>
+            <param name="instance">The instance to release.</param>
+            <returns><see langword="True"/> if the instance was found and released; otherwise <see langword="false"/>.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.CanResolve(Ninject.Activation.IRequest)">
+            <summary>
+            Determines whether the specified request can be resolved.
+            </summary>
+            <param name="request">The request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.CanResolve(Ninject.Activation.IRequest,System.Boolean)">
+            <summary>
+            Determines whether the specified request can be resolved.
+            </summary>
+            <param name="request">The request.</param>
+            <param name="ignoreImplicitBindings">if set to <c>true</c> implicit bindings are ignored.</param>
+            <returns>
+                <c>True</c> if the request can be resolved; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.KernelBase.Resolve(Ninject.Activation.IRequest)">
+            <summary>
+            Resolves instances for the specified request. The instances are not actually resolved
+            until a consumer iterates over the enumerator.
+            </summary>
+            <param name="request">The request to resolve.</param>
+            <returns>An enumerator of instances that match the request.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.CreateRequest(System.Type,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},System.Collections.Generic.IEnumerable{Ninject.Parameters.IParameter},System.Boolean,System.Boolean)">
+            <summary>
+            Creates a request for the specified service.
+            </summary>
+            <param name="service">The service that is being requested.</param>
+            <param name="constraint">The constraint to apply to the bindings to determine if they match the request.</param>
+            <param name="parameters">The parameters to pass to the resolution.</param>
+            <param name="isOptional"><c>True</c> if the request is optional; otherwise, <c>false</c>.</param>
+            <param name="isUnique"><c>True</c> if the request should return a unique result; otherwise, <c>false</c>.</param>
+            <returns>The created request.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.BeginBlock">
+            <summary>
+            Begins a new activation block, which can be used to deterministically dispose resolved instances.
+            </summary>
+            <returns>The new activation block.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.GetBindings(System.Type)">
+            <summary>
+            Gets the bindings registered for the specified service.
+            </summary>
+            <param name="service">The service in question.</param>
+            <returns>A series of bindings that are registered for the service.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.System#IServiceProvider#GetService(System.Type)">
+            <summary>
+            Gets the service object of the specified type.
+            </summary>
+            <param name="service">The service type.</param>
+            <returns>The service object</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.SatifiesRequest(Ninject.Activation.IRequest)">
+            <summary>
+            Returns a predicate that can determine if a given IBinding matches the request.
+            </summary>
+            <param name="request">The request/</param>
+            <returns>A predicate that can determine if a given IBinding matches the request.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.AddComponents">
+            <summary>
+            Adds components to the kernel during startup.
+            </summary>
+        </member>
+        <member name="M:Ninject.KernelBase.HandleMissingBinding(Ninject.Activation.IRequest)">
+            <summary>
+            Attempts to handle a missing binding for a request.
+            </summary>
+            <param name="request">The request.</param>
+            <returns><c>True</c> if the missing binding can be handled; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.KernelBase.CreateContext(Ninject.Activation.IRequest,Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Creates a context for the specified request and binding.
+            </summary>
+            <param name="request">The request.</param>
+            <param name="binding">The binding.</param>
+            <returns>The created context.</returns>
+        </member>
+        <member name="T:Ninject.Modules.AssemblyNameRetriever">
+            <summary>
+            Retrieves assembly names from file names using a temporary app domain.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.AssemblyNameRetriever.GetAssemblyNames(System.Collections.Generic.IEnumerable{System.String},System.Predicate{System.Reflection.Assembly})">
+            <summary>
+            Gets all assembly names of the assemblies in the given files that match the filter.
+            </summary>
+            <param name="filenames">The filenames.</param>
+            <param name="filter">The filter.</param>
+            <returns>All assembly names of the assemblies in the given files that match the filter.</returns>
+        </member>
+        <member name="T:Ninject.Modules.AssemblyNameRetriever.AssemblyChecker">
+            <summary>
+            This class is loaded into the temporary appdomain to load and check if the assemblies match the filter.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.AssemblyNameRetriever.AssemblyChecker.GetAssemblyNames(System.Collections.Generic.IEnumerable{System.String},System.Predicate{System.Reflection.Assembly})">
+            <summary>
+            Gets the assembly names of the assemblies matching the filter.
+            </summary>
+            <param name="filenames">The filenames.</param>
+            <param name="filter">The filter.</param>
+            <returns>All assembly names of the assemblies matching the filter.</returns>
+        </member>
+        <member name="T:Ninject.Modules.CompiledModuleLoaderPlugin">
+            <summary>
+            Loads modules from compiled assemblies.
+            </summary>
+        </member>
+        <member name="F:Ninject.Modules.CompiledModuleLoaderPlugin.Extensions">
+            <summary>
+            The file extensions that are supported.
+            </summary>
+        </member>
+        <member name="F:Ninject.Modules.CompiledModuleLoaderPlugin.assemblyNameRetriever">
+            <summary>
+            The assembly name retriever.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.CompiledModuleLoaderPlugin.#ctor(Ninject.IKernel,Ninject.Modules.IAssemblyNameRetriever)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Modules.CompiledModuleLoaderPlugin"/> class.
+            </summary>
+            <param name="kernel">The kernel into which modules will be loaded.</param>
+            <param name="assemblyNameRetriever">The assembly name retriever.</param>
+        </member>
+        <member name="P:Ninject.Modules.CompiledModuleLoaderPlugin.Kernel">
+            <summary>
+            Gets the kernel into which modules will be loaded.
+            </summary>
+        </member>
+        <member name="P:Ninject.Modules.CompiledModuleLoaderPlugin.SupportedExtensions">
+            <summary>
+            Gets the file extensions that the plugin understands how to load.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.CompiledModuleLoaderPlugin.LoadModules(System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            Loads modules from the specified files.
+            </summary>
+            <param name="filenames">The names of the files to load modules from.</param>
+        </member>
+        <member name="T:Ninject.Modules.IAssemblyNameRetriever">
+            <summary>
+            Retrieves assembly names from file names using a temporary app domain.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.IAssemblyNameRetriever.GetAssemblyNames(System.Collections.Generic.IEnumerable{System.String},System.Predicate{System.Reflection.Assembly})">
+            <summary>
+            Gets all assembly names of the assemblies in the given files that match the filter.
+            </summary>
+            <param name="filenames">The filenames.</param>
+            <param name="filter">The filter.</param>
+            <returns>All assembly names of the assemblies in the given files that match the filter.</returns>
+        </member>
+        <member name="T:Ninject.Modules.IModuleLoader">
+            <summary>
+            Finds modules defined in external files.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.IModuleLoader.LoadModules(System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            Loads any modules found in the files that match the specified patterns.
+            </summary>
+            <param name="patterns">The patterns to search.</param>
+        </member>
+        <member name="T:Ninject.Modules.IModuleLoaderPlugin">
+            <summary>
+            Loads modules at runtime by searching external files.
+            </summary>
+        </member>
+        <member name="P:Ninject.Modules.IModuleLoaderPlugin.SupportedExtensions">
+            <summary>
+            Gets the file extensions that the plugin understands how to load.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.IModuleLoaderPlugin.LoadModules(System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            Loads modules from the specified files.
+            </summary>
+            <param name="filenames">The names of the files to load modules from.</param>
+        </member>
+        <member name="T:Ninject.Modules.INinjectModule">
+            <summary>
+            A pluggable unit that can be loaded into an <see cref="T:Ninject.IKernel"/>.
+            </summary>
+        </member>
+        <member name="P:Ninject.Modules.INinjectModule.Name">
+            <summary>
+            Gets the module's name.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.INinjectModule.OnLoad(Ninject.IKernel)">
+            <summary>
+            Called when the module is loaded into a kernel.
+            </summary>
+            <param name="kernel">The kernel that is loading the module.</param>
+        </member>
+        <member name="M:Ninject.Modules.INinjectModule.OnUnload(Ninject.IKernel)">
+            <summary>
+            Called when the module is unloaded from a kernel.
+            </summary>
+            <param name="kernel">The kernel that is unloading the module.</param>
+        </member>
+        <member name="M:Ninject.Modules.INinjectModule.OnVerifyRequiredModules">
+            <summary>
+            Called after loading the modules. A module can verify here if all other required modules are loaded.
+            </summary>
+        </member>
+        <member name="T:Ninject.Modules.ModuleLoader">
+            <summary>
+            Automatically finds and loads modules from assemblies.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.ModuleLoader.#ctor(Ninject.IKernel)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Modules.ModuleLoader"/> class.
+            </summary>
+            <param name="kernel">The kernel into which modules will be loaded.</param>
+        </member>
+        <member name="P:Ninject.Modules.ModuleLoader.Kernel">
+            <summary>
+            Gets the kernel into which modules will be loaded.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.ModuleLoader.LoadModules(System.Collections.Generic.IEnumerable{System.String})">
+            <summary>
+            Loads any modules found in the files that match the specified patterns.
+            </summary>
+            <param name="patterns">The patterns to search.</param>
+        </member>
+        <member name="T:Ninject.Modules.NinjectModule">
+            <summary>
+            A loadable unit that defines bindings for your application.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Modules.NinjectModule"/> class.
+            </summary>
+        </member>
+        <member name="P:Ninject.Modules.NinjectModule.Kernel">
+            <summary>
+            Gets the kernel that the module is loaded into.
+            </summary>
+        </member>
+        <member name="P:Ninject.Modules.NinjectModule.Name">
+            <summary>
+            Gets the module's name. Only a single module with a given name can be loaded at one time.
+            </summary>
+        </member>
+        <member name="P:Ninject.Modules.NinjectModule.Bindings">
+            <summary>
+            Gets the bindings that were registered by the module.
+            </summary>
+        </member>
+        <member name="P:Ninject.Modules.NinjectModule.KernelInstance">
+            <summary>
+            Gets the kernel.
+            </summary>
+            <value>The kernel.</value>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.OnLoad(Ninject.IKernel)">
+            <summary>
+            Called when the module is loaded into a kernel.
+            </summary>
+            <param name="kernel">The kernel that is loading the module.</param>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.OnUnload(Ninject.IKernel)">
+            <summary>
+            Called when the module is unloaded from a kernel.
+            </summary>
+            <param name="kernel">The kernel that is unloading the module.</param>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.OnVerifyRequiredModules">
+            <summary>
+            Called after loading the modules. A module can verify here if all other required modules are loaded.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.Load">
+            <summary>
+            Loads the module into the kernel.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.Unload">
+            <summary>
+            Unloads the module from the kernel.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.VerifyRequiredModulesAreLoaded">
+            <summary>
+            Called after loading the modules. A module can verify here if all other required modules are loaded.
+            </summary>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.Unbind(System.Type)">
+            <summary>
+            Unregisters all bindings for the specified service.
+            </summary>
+            <param name="service">The service to unbind.</param>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.AddBinding(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Registers the specified binding.
+            </summary>
+            <param name="binding">The binding to add.</param>
+        </member>
+        <member name="M:Ninject.Modules.NinjectModule.RemoveBinding(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Unregisters the specified binding.
+            </summary>
+            <param name="binding">The binding to remove.</param>
+        </member>
+        <member name="T:Ninject.NinjectSettings">
+            <summary>
+            Contains configuration options for Ninject.
+            </summary>
+        </member>
+        <member name="P:Ninject.NinjectSettings.InjectAttribute">
+            <summary>
+            Gets or sets the attribute that indicates that a member should be injected.
+            </summary>
+        </member>
+        <member name="P:Ninject.NinjectSettings.CachePruningInterval">
+            <summary>
+            Gets or sets the interval at which the GC should be polled.
+            </summary>
+        </member>
+        <member name="P:Ninject.NinjectSettings.DefaultScopeCallback">
+            <summary>
+            Gets or sets the default scope callback.
+            </summary>
+        </member>
+        <member name="P:Ninject.NinjectSettings.LoadExtensions">
+            <summary>
+            Gets or sets a value indicating whether the kernel should automatically load extensions at startup.
+            </summary>
+        </member>
+        <member name="P:Ninject.NinjectSettings.ExtensionSearchPatterns">
+            <summary>
+            Gets or sets the paths that should be searched for extensions.
+            </summary>
+        </member>
+        <member name="P:Ninject.NinjectSettings.UseReflectionBasedInjection">
+            <summary>
+            Gets or sets a value indicating whether Ninject should use reflection-based injection instead of
+            the (usually faster) lightweight code generation system.
+            </summary>
+        </member>
+        <member name="P:Ninject.NinjectSettings.InjectNonPublic">
+            <summary>
+            Gets or sets a value indicating whether Ninject should inject non public members.
+            </summary>
+        </member>
+        <member name="P:Ninject.NinjectSettings.InjectParentPrivateProperties">
+            <summary>
+            Gets or sets a value indicating whether Ninject should inject private properties of base classes.
+            </summary>
+            <remarks>
+            Activating this setting has an impact on the performance. It is recommended not
+            to use this feature and use constructor injection instead.
+            </remarks>
+        </member>
+        <member name="P:Ninject.NinjectSettings.ActivationCacheDisabled">
+            <summary>
+            Gets or sets a value indicating whether the activation cache is disabled.
+            If the activation cache is disabled less memory is used. But in some cases
+            instances are activated or deactivated multiple times. e.g. in the following scenario:
+            Bind{A}().ToSelf();
+            Bind{IA}().ToMethod(ctx =&gt; kernel.Get{IA}();
+            </summary>
+            <value>
+            <c>true</c> if activation cache is disabled; otherwise, <c>false</c>.
+            </value>
+        </member>
+        <member name="P:Ninject.NinjectSettings.AllowNullInjection">
+            <summary>
+            Gets or sets a value indicating whether Null is a valid value for injection.
+            By default this is disabled and whenever a provider returns null an exception is thrown.
+            </summary>
+            <value>
+            <c>true</c> if null is allowed as injected value otherwise false.
+            </value>
+        </member>
+        <member name="M:Ninject.NinjectSettings.Get``1(System.String,``0)">
+            <summary>
+            Gets the value for the specified key.
+            </summary>
+            <typeparam name="T">The type of value to return.</typeparam>
+            <param name="key">The setting's key.</param>
+            <param name="defaultValue">The value to return if no setting is available.</param>
+            <returns>The value, or the default value if none was found.</returns>
+        </member>
+        <member name="M:Ninject.NinjectSettings.Set(System.String,System.Object)">
+            <summary>
+            Sets the value for the specified key.
+            </summary>
+            <param name="key">The setting's key.</param>
+            <param name="value">The setting's value.</param>
+        </member>
+        <member name="T:Ninject.Parameters.ConstructorArgument">
+            <summary>
+            Overrides the injected value of a constructor argument.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.ConstructorArgument.#ctor(System.String,System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.ConstructorArgument"/> class.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="value">The value to inject into the property.</param>
+        </member>
+        <member name="M:Ninject.Parameters.ConstructorArgument.#ctor(System.String,System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.ConstructorArgument"/> class.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="valueCallback">The callback to invoke to get the value that should be injected.</param>
+        </member>
+        <member name="M:Ninject.Parameters.ConstructorArgument.#ctor(System.String,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.ConstructorArgument"/> class.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="valueCallback">The callback to invoke to get the value that should be injected.</param>
+        </member>
+        <member name="M:Ninject.Parameters.ConstructorArgument.#ctor(System.String,System.Object,System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.ConstructorArgument"/> class.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="value">The value to inject into the property.</param>
+            <param name="shouldInherit">Whether the parameter should be inherited into child requests.</param>
+        </member>
+        <member name="M:Ninject.Parameters.ConstructorArgument.#ctor(System.String,System.Func{Ninject.Activation.IContext,System.Object},System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.ConstructorArgument"/> class.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="valueCallback">The callback to invoke to get the value that should be injected.</param>
+            <param name="shouldInherit">if set to <c>true</c> [should inherit].</param>
+        </member>
+        <member name="M:Ninject.Parameters.ConstructorArgument.#ctor(System.String,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object},System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.ConstructorArgument"/> class.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="valueCallback">The callback to invoke to get the value that should be injected.</param>
+            <param name="shouldInherit">if set to <c>true</c> [should inherit].</param>
+        </member>
+        <member name="M:Ninject.Parameters.ConstructorArgument.AppliesToTarget(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Determines if the parameter applies to the given target.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>
+            True if the parameter applies in the specified context to the specified target.
+            </returns>
+            <remarks>
+            Only one parameter may return true.
+            </remarks>
+        </member>
+        <member name="T:Ninject.Parameters.IConstructorArgument">
+            <summary>
+            Defines the interface for constructor arguments.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.IConstructorArgument.AppliesToTarget(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Determines if the parameter applies to the given target.
+            </summary>
+            <remarks>
+            Only one parameter may return true.
+            </remarks>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>True if the parameter applies in the specified context to the specified target.</returns>
+        </member>
+        <member name="T:Ninject.Parameters.IParameter">
+            <summary>
+            Modifies an activation process in some way.
+            </summary>
+        </member>
+        <member name="P:Ninject.Parameters.IParameter.Name">
+            <summary>
+            Gets the name of the parameter.
+            </summary>
+        </member>
+        <member name="P:Ninject.Parameters.IParameter.ShouldInherit">
+            <summary>
+            Gets a value indicating whether the parameter should be inherited into child requests.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.IParameter.GetValue(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Gets the value for the parameter within the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>The value for the parameter.</returns>
+        </member>
+        <member name="T:Ninject.Parameters.IPropertyValue">
+            <summary>
+            Overrides the injected value of a property.
+            </summary>
+        </member>
+        <member name="T:Ninject.Parameters.Parameter">
+            <summary>
+            Modifies an activation process in some way.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.Parameter.#ctor(System.String,System.Object,System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.Parameter"/> class.
+            </summary>
+            <param name="name">The name of the parameter.</param>
+            <param name="value">The value of the parameter.</param>
+            <param name="shouldInherit">Whether the parameter should be inherited into child requests.</param>
+        </member>
+        <member name="M:Ninject.Parameters.Parameter.#ctor(System.String,System.Func{Ninject.Activation.IContext,System.Object},System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.Parameter"/> class.
+            </summary>
+            <param name="name">The name of the parameter.</param>
+            <param name="valueCallback">The callback that will be triggered to get the parameter's value.</param>
+            <param name="shouldInherit">Whether the parameter should be inherited into child requests.</param>
+        </member>
+        <member name="M:Ninject.Parameters.Parameter.#ctor(System.String,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object},System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.Parameter"/> class.
+            </summary>
+            <param name="name">The name of the parameter.</param>
+            <param name="valueCallback">The callback that will be triggered to get the parameter's value.</param>
+            <param name="shouldInherit">Whether the parameter should be inherited into child requests.</param>
+        </member>
+        <member name="P:Ninject.Parameters.Parameter.Name">
+            <summary>
+            Gets the name of the parameter.
+            </summary>
+        </member>
+        <member name="P:Ninject.Parameters.Parameter.ShouldInherit">
+            <summary>
+            Gets a value indicating whether the parameter should be inherited into child requests.
+            </summary>
+        </member>
+        <member name="P:Ninject.Parameters.Parameter.ValueCallback">
+            <summary>
+            Gets the callback that will be triggered to get the parameter's value.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.Parameter.GetValue(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Gets the value for the parameter within the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>The value for the parameter.</returns>
+        </member>
+        <member name="M:Ninject.Parameters.Parameter.Equals(System.Object)">
+            <summary>
+            Determines whether the object equals the specified object.
+            </summary>
+            <param name="obj">An object to compare with this object.</param>
+            <returns><c>True</c> if the objects are equal; otherwise <c>false</c></returns>
+        </member>
+        <member name="M:Ninject.Parameters.Parameter.GetHashCode">
+            <summary>
+            Serves as a hash function for a particular type.
+            </summary>
+            <returns>A hash code for the object.</returns>
+        </member>
+        <member name="M:Ninject.Parameters.Parameter.Equals(Ninject.Parameters.IParameter)">
+            <summary>
+            Indicates whether the current object is equal to another object of the same type.
+            </summary>
+            <param name="other">An object to compare with this object.</param>
+            <returns><c>True</c> if the objects are equal; otherwise <c>false</c></returns>
+        </member>
+        <member name="T:Ninject.Parameters.PropertyValue">
+            <summary>
+            Overrides the injected value of a property.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.PropertyValue.#ctor(System.String,System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.PropertyValue"/> class.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="value">The value to inject into the property.</param>
+        </member>
+        <member name="M:Ninject.Parameters.PropertyValue.#ctor(System.String,System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.PropertyValue"/> class.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="valueCallback">The callback to invoke to get the value that should be injected.</param>
+        </member>
+        <member name="M:Ninject.Parameters.PropertyValue.#ctor(System.String,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.PropertyValue"/> class.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="valueCallback">The callback to invoke to get the value that should be injected.</param>
+        </member>
+        <member name="T:Ninject.Parameters.TypeMatchingConstructorArgument">
+            <summary>
+            Overrides the injected value of a constructor argument.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.TypeMatchingConstructorArgument.#ctor(System.Type,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.TypeMatchingConstructorArgument"/> class.
+            </summary>
+            <param name="type">The type of the argument to override.</param>
+            <param name="valueCallback">The callback that will be triggered to get the parameter's value.</param>
+        </member>
+        <member name="M:Ninject.Parameters.TypeMatchingConstructorArgument.#ctor(System.Type,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object},System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.TypeMatchingConstructorArgument"/> class.
+            </summary>
+            <param name="type">The type of the argument to override.</param>
+            <param name="valueCallback">The callback that will be triggered to get the parameter's value.</param>
+            <param name="shouldInherit">Whether the parameter should be inherited into child requests.</param>
+        </member>
+        <member name="P:Ninject.Parameters.TypeMatchingConstructorArgument.Name">
+            <summary>
+            Gets the name of the parameter.
+            </summary>
+        </member>
+        <member name="P:Ninject.Parameters.TypeMatchingConstructorArgument.ShouldInherit">
+            <summary>
+            Gets a value indicating whether the parameter should be inherited into child requests.
+            </summary>
+        </member>
+        <member name="P:Ninject.Parameters.TypeMatchingConstructorArgument.ValueCallback">
+            <summary>
+            Gets or sets the callback that will be triggered to get the parameter's value.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.TypeMatchingConstructorArgument.AppliesToTarget(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Determines if the parameter applies to the given target.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>
+            True if the parameter applies in the specified context to the specified target.
+            </returns>
+            <remarks>
+            Only one parameter may return true.
+            </remarks>
+        </member>
+        <member name="M:Ninject.Parameters.TypeMatchingConstructorArgument.GetValue(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Gets the value for the parameter within the specified context.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>The value for the parameter.</returns>
+        </member>
+        <member name="M:Ninject.Parameters.TypeMatchingConstructorArgument.Equals(Ninject.Parameters.IParameter)">
+            <summary>
+            Indicates whether the current object is equal to another object of the same type.
+            </summary>
+            <param name="other">An object to compare with this object.</param>
+            <returns><c>True</c> if the objects are equal; otherwise <c>false</c></returns>
+        </member>
+        <member name="M:Ninject.Parameters.TypeMatchingConstructorArgument.Equals(System.Object)">
+            <summary>
+            Determines whether the object equals the specified object.
+            </summary>
+            <param name="obj">An object to compare with this object.</param>
+            <returns><c>True</c> if the objects are equal; otherwise <c>false</c></returns>
+        </member>
+        <member name="M:Ninject.Parameters.TypeMatchingConstructorArgument.GetHashCode">
+            <summary>
+            Serves as a hash function for a particular type.
+            </summary>
+            <returns>A hash code for the object.</returns>
+        </member>
+        <member name="T:Ninject.Parameters.WeakConstructorArgument">
+            <summary>
+            Overrides the injected value of a constructor argument.
+            </summary>
+        </member>
+        <member name="F:Ninject.Parameters.WeakConstructorArgument.weakReference">
+            <summary>
+            A weak reference to the constructor argument value.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.WeakConstructorArgument.#ctor(System.String,System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.WeakConstructorArgument"/> class.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="value">The value to inject into the property.</param>
+        </member>
+        <member name="M:Ninject.Parameters.WeakConstructorArgument.#ctor(System.String,System.Object,System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.WeakConstructorArgument"/> class.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="value">The value to inject into the property.</param>
+            <param name="shouldInherit">Whether the parameter should be inherited into child requests.</param>
+        </member>
+        <member name="M:Ninject.Parameters.WeakConstructorArgument.AppliesToTarget(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Determines if the parameter applies to the given target.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>
+            True if the parameter applies in the specified context to the specified target.
+            </returns>
+            <remarks>
+            Only one parameter may return true.
+            </remarks>
+        </member>
+        <member name="T:Ninject.Parameters.WeakPropertyValue">
+            <summary>
+            Overrides the injected value of a property.
+            Keeps a weak reference to the value.
+            </summary>
+        </member>
+        <member name="M:Ninject.Parameters.WeakPropertyValue.#ctor(System.String,System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Parameters.WeakPropertyValue"/> class.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="value">The value to inject into the property.</param>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.Binding">
+            <summary>
+            Contains information about a service registration.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Binding.#ctor(System.Type)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.Binding"/> class.
+            </summary>
+            <param name="service">The service that is controlled by the binding.</param>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Binding.#ctor(System.Type,Ninject.Planning.Bindings.IBindingConfiguration)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.Binding"/> class.
+            </summary>
+            <param name="service">The service that is controlled by the binding.</param>
+            <param name="configuration">The binding configuration.</param>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.BindingConfiguration">
+            <summary>
+            Gets the binding configuration.
+            </summary>
+            <value>The binding configuration.</value>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.Service">
+            <summary>
+            Gets the service type that is controlled by the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.Metadata">
+            <summary>
+            Gets the binding's metadata.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.Target">
+            <summary>
+            Gets or sets the type of target for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.IsImplicit">
+            <summary>
+            Gets or sets a value indicating whether the binding was implicitly registered.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.IsConditional">
+            <summary>
+            Gets a value indicating whether the binding has a condition associated with it.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.Condition">
+            <summary>
+            Gets or sets the condition defined for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.ProviderCallback">
+            <summary>
+            Gets or sets the callback that returns the provider that should be used by the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.ScopeCallback">
+            <summary>
+            Gets or sets the callback that returns the object that will act as the binding's scope.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.Parameters">
+            <summary>
+            Gets the parameters defined for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.ActivationActions">
+            <summary>
+            Gets the actions that should be called after instances are activated via the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.Binding.DeactivationActions">
+            <summary>
+            Gets the actions that should be called before instances are deactivated via the binding.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Binding.GetProvider(Ninject.Activation.IContext)">
+            <summary>
+            Gets the provider for the binding.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The provider to use.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Binding.GetScope(Ninject.Activation.IContext)">
+            <summary>
+            Gets the scope for the binding, if any.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>
+            The object that will act as the scope, or <see langword="null"/> if the service is transient.
+            </returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Binding.Matches(Ninject.Activation.IRequest)">
+            <summary>
+            Determines whether the specified request satisfies the condition defined on the binding,
+            if one was defined.
+            </summary>
+            <param name="request">The request.</param>
+            <returns>
+                <c>True</c> if the request satisfies the condition; otherwise <c>false</c>.
+            </returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingBuilder">
+            <summary>
+            Provides a root for the fluent syntax associated with an <see cref="P:Ninject.Planning.Bindings.BindingBuilder.BindingConfiguration"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.#ctor(Ninject.Planning.Bindings.IBindingConfiguration,Ninject.IKernel,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.BindingBuilder"/> class.
+            </summary>
+            <param name="bindingConfiguration">The binding to build.</param>
+            <param name="kernel">The kernel.</param>
+            <param name="serviceNames">The names of the services.</param>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingBuilder.BindingConfiguration">
+            <summary>
+            Gets the binding being built.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingBuilder.Kernel">
+            <summary>
+            Gets the kernel.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingBuilder.ServiceNames">
+            <summary>
+            Gets the names of the services.
+            </summary>
+            <value>The names of the services.</value>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.InternalTo``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.InternalTo``1(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="T">The type of the returned syntax.</typeparam>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.InternalToConfiguration``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.InternalToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.InternalToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.ToProviderInternal``2">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.ToProviderInternal``1(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="T">The type of the returned fluent syntax</typeparam>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.InternalToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.AddConstructorArguments(System.Linq.Expressions.NewExpression,System.Linq.Expressions.ParameterExpression)">
+            <summary>
+            Adds the constructor arguments for the specified constructor expression.
+            </summary>
+            <param name="ctorExpression">The ctor expression.</param>
+            <param name="constructorArgumentSyntaxParameterExpression">The constructor argument syntax parameter expression.</param>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.AddConstructorArgument(System.Linq.Expressions.Expression,System.String,System.Linq.Expressions.ParameterExpression)">
+            <summary>
+            Adds a constructor argument for the specified argument expression.
+            </summary>
+            <param name="argument">The argument.</param>
+            <param name="argumentName">Name of the argument.</param>
+            <param name="constructorArgumentSyntaxParameterExpression">The constructor argument syntax parameter expression.</param>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingBuilder.ConstructorArgumentSyntax">
+            <summary>
+            Passed to ToConstructor to specify that a constructor value is Injected.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.ConstructorArgumentSyntax.#ctor(Ninject.Activation.IContext)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.BindingBuilder.ConstructorArgumentSyntax"/> class.
+            </summary>
+            <param name="context">The context.</param>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingBuilder.ConstructorArgumentSyntax.Context">
+            <summary>
+            Gets the context.
+            </summary>
+            <value>The context.</value>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder.ConstructorArgumentSyntax.Inject``1">
+            <summary>
+            Specifies that the argument is injected.
+            </summary>
+            <typeparam name="T1">The type of the parameter</typeparam>
+            <returns>Not used. This interface has no implementation.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingBuilder`4">
+            <summary>
+            Provides a root for the fluent syntax associated with an <see cref="P:Ninject.Planning.Bindings.BindingBuilder.BindingConfiguration"/>.
+            </summary>
+            <typeparam name="T1">The first service type.</typeparam>
+            <typeparam name="T2">The second service type.</typeparam>
+            <typeparam name="T3">The third service type.</typeparam>
+            <typeparam name="T4">The fourth service type.</typeparam>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.#ctor(Ninject.Planning.Bindings.IBindingConfiguration,Ninject.IKernel,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.BindingBuilder`4"/> class.
+            </summary>
+            <param name="bindingConfigurationConfiguration">The binding to build.</param>
+            <param name="kernel">The kernel.</param>
+            <param name="serviceNames">The names of the services.</param>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.To``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.To(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.ToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.ToProvider``1">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.ToProvider``2">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.ToProvider(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.ToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.ToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`4.ToConstant``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingBuilder`3">
+            <summary>
+            Provides a root for the fluent syntax associated with an <see cref="P:Ninject.Planning.Bindings.BindingBuilder.BindingConfiguration"/>.
+            </summary>
+            <typeparam name="T1">The first service type.</typeparam>
+            <typeparam name="T2">The second service type.</typeparam>
+            <typeparam name="T3">The third service type.</typeparam>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.#ctor(Ninject.Planning.Bindings.IBindingConfiguration,Ninject.IKernel,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.BindingBuilder`3"/> class.
+            </summary>
+            <param name="bindingConfigurationConfiguration">The binding to build.</param>
+            <param name="kernel">The kernel.</param>
+            <param name="serviceNames">The names of the services.</param>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.To``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.To(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.ToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.ToProvider``1">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.ToProvider``2">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.ToProvider(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.ToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.ToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`3.ToConstant``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingBuilder`2">
+            <summary>
+            Provides a root for the fluent syntax associated with an <see cref="P:Ninject.Planning.Bindings.BindingBuilder.BindingConfiguration"/>.
+            </summary>
+            <typeparam name="T1">The first service type.</typeparam>
+            <typeparam name="T2">The second service type.</typeparam>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.#ctor(Ninject.Planning.Bindings.IBindingConfiguration,Ninject.IKernel,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.BindingBuilder`2"/> class.
+            </summary>
+            <param name="bindingConfigurationConfiguration">The binding to build.</param>
+            <param name="kernel">The kernel.</param>
+            <param name="serviceNames">The names of the services.</param>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.To``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.To(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.ToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.ToProvider``1">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.ToProvider``2">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.ToProvider(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.ToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.ToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`2.ToConstant``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingBuilder`1">
+            <summary>
+            Provides a root for the fluent syntax associated with an <see cref="P:Ninject.Planning.Bindings.BindingBuilder`1.Binding"/>.
+            </summary>
+            <typeparam name="T1">The service type.</typeparam>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.#ctor(Ninject.Planning.Bindings.IBinding,Ninject.IKernel,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.BindingBuilder`1"/> class.
+            </summary>
+            <param name="binding">The binding to build.</param>
+            <param name="kernel">The kernel.</param>
+            <param name="serviceNames">The names of the services.</param>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingBuilder`1.Binding">
+            <summary>
+            Gets the binding being built.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.ToSelf">
+            <summary>
+            Indicates that the service should be self-bound.
+            </summary>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.To``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.To(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.ToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.ToProvider``1">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.ToProvider(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.ToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.ToMethod(System.Func{Ninject.Activation.IContext,`0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.ToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingBuilder`1.ToConstant``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingConfiguration">
+            <summary>
+            The configuration of a binding.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfiguration.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.BindingConfiguration"/> class.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.Metadata">
+            <summary>
+            Gets the binding's metadata.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.IsImplicit">
+            <summary>
+            Gets or sets a value indicating whether the binding was implicitly registered.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.IsConditional">
+            <summary>
+            Gets a value indicating whether the binding has a condition associated with it.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.Target">
+            <summary>
+            Gets or sets the type of target for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.Condition">
+            <summary>
+            Gets or sets the condition defined for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.ProviderCallback">
+            <summary>
+            Gets or sets the callback that returns the provider that should be used by the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.ScopeCallback">
+            <summary>
+            Gets or sets the callback that returns the object that will act as the binding's scope.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.Parameters">
+            <summary>
+            Gets the parameters defined for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.ActivationActions">
+            <summary>
+            Gets the actions that should be called after instances are activated via the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfiguration.DeactivationActions">
+            <summary>
+            Gets the actions that should be called before instances are deactivated via the binding.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfiguration.GetProvider(Ninject.Activation.IContext)">
+            <summary>
+            Gets the provider for the binding.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The provider to use.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfiguration.GetScope(Ninject.Activation.IContext)">
+            <summary>
+            Gets the scope for the binding, if any.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The object that will act as the scope, or <see langword="null"/> if the service is transient.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfiguration.Matches(Ninject.Activation.IRequest)">
+            <summary>
+            Determines whether the specified request satisfies the conditions defined on this binding.
+            </summary>
+            <param name="request">The request.</param>
+            <returns><c>True</c> if the request satisfies the conditions; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingConfigurationBuilder`1">
+            <summary>
+            Provides a root for the fluent syntax associated with an <see cref="P:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.BindingConfiguration"/>.
+            </summary>
+            <typeparam name="T">The implementation type of the built binding.</typeparam>
+        </member>
+        <member name="F:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.serviceNames">
+            <summary>
+            The names of the services added to the exceptions.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.#ctor(Ninject.Planning.Bindings.IBindingConfiguration,System.String,Ninject.IKernel)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Bindings.BindingConfigurationBuilder`1"/> class.
+            </summary>
+            <param name="bindingConfiguration">The binding configuration to build.</param>
+            <param name="serviceNames">The names of the configured services.</param>
+            <param name="kernel">The kernel.</param>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.BindingConfiguration">
+            <summary>
+            Gets the binding being built.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.Kernel">
+            <summary>
+            Gets the kernel.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.When(System.Func{Ninject.Activation.IRequest,System.Boolean})">
+            <summary>
+            Indicates that the binding should be used only for requests that support the specified condition.
+            </summary>
+            <param name="condition">The condition.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenInjectedInto``1">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            Types that derive from the specified type are considered as valid targets.
+            </summary>
+            <typeparam name="TParent">The type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenInjectedInto(System.Type)">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            Types that derive from the specified type are considered as valid targets.
+            </summary>
+            <param name="parent">The type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenInjectedInto(System.Type[])">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            Types that derive from the specified type are considered as valid targets.
+            </summary>
+            <param name="parents">The type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenInjectedExactlyInto``1">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            The type must match exactly the specified type. Types that derive from the specified type
+            will not be considered as valid target.
+            </summary>
+            <typeparam name="TParent">The type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenInjectedExactlyInto(System.Type)">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            The type must match exactly the specified type. Types that derive from the specified type
+            will not be considered as valid target.
+            </summary>
+            <param name="parent">The type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenInjectedExactlyInto(System.Type[])">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            The type must match exactly the specified type. Types that derive from the specified type
+            will not be considered as valid target.
+            Should match at least one of the specified targets
+            </summary>
+            <param name="parents">The types.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenClassHas``1">
+            <summary>
+            Indicates that the binding should be used only when the class being injected has
+            an attribute of the specified type.
+            </summary>
+            <typeparam name="TAttribute">The type of attribute.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenMemberHas``1">
+            <summary>
+            Indicates that the binding should be used only when the member being injected has
+            an attribute of the specified type.
+            </summary>
+            <typeparam name="TAttribute">The type of attribute.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenTargetHas``1">
+            <summary>
+            Indicates that the binding should be used only when the target being injected has
+            an attribute of the specified type.
+            </summary>
+            <typeparam name="TAttribute">The type of attribute.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenClassHas(System.Type)">
+            <summary>
+            Indicates that the binding should be used only when the class being injected has
+            an attribute of the specified type.
+            </summary>
+            <param name="attributeType">The type of attribute.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenMemberHas(System.Type)">
+            <summary>
+            Indicates that the binding should be used only when the member being injected has
+            an attribute of the specified type.
+            </summary>
+            <param name="attributeType">The type of attribute.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenTargetHas(System.Type)">
+            <summary>
+            Indicates that the binding should be used only when the target being injected has
+            an attribute of the specified type.
+            </summary>
+            <param name="attributeType">The type of attribute.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenParentNamed(System.String)">
+            <summary>
+            Indicates that the binding should be used only when the service is being requested
+            by a service bound with the specified name.
+            </summary>
+            <param name="name">The name to expect.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenAnyAnchestorNamed(System.String)">
+            <summary>
+            Indicates that the binding should be used only when any ancestor is bound with the specified name.
+            </summary>
+            <param name="name">The name to expect.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenAnyAncestorNamed(System.String)">
+            <summary>
+            Indicates that the binding should be used only when any ancestor is bound with the specified name.
+            </summary>
+            <param name="name">The name to expect.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenNoAncestorNamed(System.String)">
+            <summary>
+            Indicates that the binding should be used only when no ancestor is bound with the specified name.
+            </summary>
+            <param name="name">The name to expect.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenAnyAncestorMatches(System.Predicate{Ninject.Activation.IContext})">
+            <summary>
+            Indicates that the binding should be used only when any ancestor matches the specified predicate.
+            </summary>
+            <param name="predicate">The predicate to match.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WhenNoAncestorMatches(System.Predicate{Ninject.Activation.IContext})">
+            <summary>
+            Indicates that the binding should be used only when no ancestor matches the specified predicate.
+            </summary>
+            <param name="predicate">The predicate to match.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.Named(System.String)">
+            <summary>
+            Indicates that the binding should be registered with the specified name. Names are not
+            necessarily unique; multiple bindings for a given service may be registered with the same name.
+            </summary>
+            <param name="name">The name to give the binding.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.InSingletonScope">
+            <summary>
+            Indicates that only a single instance of the binding should be created, and then
+            should be re-used for all subsequent requests.
+            </summary>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.InTransientScope">
+            <summary>
+            Indicates that instances activated via the binding should not be re-used, nor have
+            their lifecycle managed by Ninject.
+            </summary>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.InThreadScope">
+            <summary>
+            Indicates that instances activated via the binding should be re-used within the same thread.
+            </summary>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.InScope(System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Indicates that instances activated via the binding should be re-used as long as the object
+            returned by the provided callback remains alive (that is, has not been garbage collected).
+            </summary>
+            <param name="scope">The callback that returns the scope.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument(System.String,System.Object)">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="value">The value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument(System.String,System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument(System.String,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument``1(``0)">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <typeparam name="TValue">Specifies the argument type to override.</typeparam>
+            <param name="value">The value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument(System.Type,System.Object)">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="type">The type of the argument to override.</param>
+            <param name="value">The value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument(System.Type,System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="type">The type of the argument to override.</param>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <typeparam name="TValue">The type of the argument type to override.</typeparam>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument(System.Type,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="type">The type of the argument to override.</param>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithConstructorArgument``1(System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,``0})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <typeparam name="TValue">The type of the argument type to override.</typeparam>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithPropertyValue(System.String,System.Object)">
+            <summary>
+            Indicates that the specified property should be injected with the specified value.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="value">The value for the property.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithPropertyValue(System.String,System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Indicates that the specified property should be injected with the specified value.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="callback">The callback to invoke to get the value for the property.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithPropertyValue(System.String,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Indicates that the specified property should be injected with the specified value.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="callback">The callback to invoke to get the value for the property.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithParameter(Ninject.Parameters.IParameter)">
+            <summary>
+            Adds a custom parameter to the binding.
+            </summary>
+            <param name="parameter">The parameter.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.WithMetadata(System.String,System.Object)">
+            <summary>
+            Sets the value of a piece of metadata on the binding.
+            </summary>
+            <param name="key">The metadata key.</param>
+            <param name="value">The metadata value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.OnActivation(System.Action{`0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are activated.
+            </summary>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.OnActivation``1(System.Action{``0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are activated.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.OnActivation(System.Action{Ninject.Activation.IContext,`0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are activated.
+            </summary>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.OnActivation``1(System.Action{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are activated.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.OnDeactivation(System.Action{`0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are deactivated.
+            </summary>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.OnDeactivation``1(System.Action{``0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are deactivated.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.OnDeactivation(System.Action{Ninject.Activation.IContext,`0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are deactivated.
+            </summary>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingConfigurationBuilder`1.OnDeactivation``1(System.Action{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are deactivated.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingMetadata">
+            <summary>
+            Additional information available about a binding, which can be used in constraints
+            to select bindings to use in activation.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.BindingMetadata.Name">
+            <summary>
+            Gets or sets the binding's name.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingMetadata.Has(System.String)">
+            <summary>
+            Determines whether a piece of metadata with the specified key has been defined.
+            </summary>
+            <param name="key">The metadata key.</param>
+            <returns><c>True</c> if such a piece of metadata exists; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingMetadata.Get``1(System.String)">
+            <summary>
+            Gets the value of metadata defined with the specified key, cast to the specified type.
+            </summary>
+            <typeparam name="T">The type of value to expect.</typeparam>
+            <param name="key">The metadata key.</param>
+            <returns>The metadata value.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingMetadata.Get``1(System.String,``0)">
+            <summary>
+            Gets the value of metadata defined with the specified key.
+            </summary>
+            <typeparam name="T">The type of value to expect.</typeparam>
+            <param name="key">The metadata key.</param>
+            <param name="defaultValue">The value to return if the binding has no metadata set with the specified key.</param>
+            <returns>The metadata value, or the default value if none was set.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingMetadata.Set(System.String,System.Object)">
+            <summary>
+            Sets the value of a piece of metadata.
+            </summary>
+            <param name="key">The metadata key.</param>
+            <param name="value">The metadata value.</param>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingPrecedenceComparer">
+            <summary>
+            Implements the binding precedence comparer interface
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.BindingPrecedenceComparer.Compare(Ninject.Planning.Bindings.IBinding,Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Compares the two bindings.
+            </summary>
+            <param name="x">The first binding.</param>
+            <param name="y">The second binding.</param>
+            <returns>Less than zero if x is less than y; Zero is x equals y; Greater than zero if x is greater than y.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.BindingTarget">
+            <summary>
+            Describes the target of a binding.
+            </summary>
+        </member>
+        <member name="F:Ninject.Planning.Bindings.BindingTarget.Self">
+            <summary>
+            Indicates that the binding is from a type to itself.
+            </summary>
+        </member>
+        <member name="F:Ninject.Planning.Bindings.BindingTarget.Type">
+            <summary>
+            Indicates that the binding is from one type to another.
+            </summary>
+        </member>
+        <member name="F:Ninject.Planning.Bindings.BindingTarget.Provider">
+            <summary>
+            Indicates that the binding is from a type to a provider.
+            </summary>
+        </member>
+        <member name="F:Ninject.Planning.Bindings.BindingTarget.Method">
+            <summary>
+            Indicates that the binding is from a type to a callback method.
+            </summary>
+        </member>
+        <member name="F:Ninject.Planning.Bindings.BindingTarget.Constant">
+            <summary>
+            Indicates that the binding is from a type to a constant value.
+            </summary>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.IBinding">
+            <summary>
+            Contains information about a service registration.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBinding.BindingConfiguration">
+            <summary>
+            Gets the binding configuration.
+            </summary>
+            <value>The binding configuration.</value>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBinding.Service">
+            <summary>
+            Gets the service type that is controlled by the binding.
+            </summary>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.IBindingConfiguration">
+            <summary>
+            The configuration of a binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.Metadata">
+            <summary>
+            Gets the binding's metadata.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.Target">
+            <summary>
+            Gets or sets the type of target for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.IsImplicit">
+            <summary>
+            Gets or sets a value indicating whether the binding was implicitly registered.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.IsConditional">
+            <summary>
+            Gets a value indicating whether the binding has a condition associated with it.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.Condition">
+            <summary>
+            Gets or sets the condition defined for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.ProviderCallback">
+            <summary>
+            Gets or sets the callback that returns the provider that should be used by the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.ScopeCallback">
+            <summary>
+            Gets or sets the callback that returns the object that will act as the binding's scope.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.Parameters">
+            <summary>
+            Gets the parameters defined for the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.ActivationActions">
+            <summary>
+            Gets the actions that should be called after instances are activated via the binding.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingConfiguration.DeactivationActions">
+            <summary>
+            Gets the actions that should be called before instances are deactivated via the binding.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.IBindingConfiguration.GetProvider(Ninject.Activation.IContext)">
+            <summary>
+            Gets the provider for the binding.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The provider to use.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.IBindingConfiguration.GetScope(Ninject.Activation.IContext)">
+            <summary>
+            Gets the scope for the binding, if any.
+            </summary>
+            <param name="context">The context.</param>
+            <returns>The object that will act as the scope, or <see langword="null"/> if the service is transient.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.IBindingConfiguration.Matches(Ninject.Activation.IRequest)">
+            <summary>
+            Determines whether the specified request satisfies the condition defined on the binding,
+            if one was defined.
+            </summary>
+            <param name="request">The request.</param>
+            <returns><c>True</c> if the request satisfies the condition; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.IBindingConfigurationSyntax`1">
+            <summary>
+            The syntax to define bindings.
+            </summary>
+            <typeparam name="T">The type of the service.</typeparam>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.IBindingMetadata">
+            <summary>
+            Additional information available about a binding, which can be used in constraints
+            to select bindings to use in activation.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Bindings.IBindingMetadata.Name">
+            <summary>
+            Gets or sets the binding's name.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.IBindingMetadata.Has(System.String)">
+            <summary>
+            Determines whether a piece of metadata with the specified key has been defined.
+            </summary>
+            <param name="key">The metadata key.</param>
+            <returns><c>True</c> if such a piece of metadata exists; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.IBindingMetadata.Get``1(System.String)">
+            <summary>
+            Gets the value of metadata defined with the specified key, cast to the specified type.
+            </summary>
+            <typeparam name="T">The type of value to expect.</typeparam>
+            <param name="key">The metadata key.</param>
+            <returns>The metadata value.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.IBindingMetadata.Get``1(System.String,``0)">
+            <summary>
+            Gets the value of metadata defined with the specified key.
+            </summary>
+            <typeparam name="T">The type of value to expect.</typeparam>
+            <param name="key">The metadata key.</param>
+            <param name="defaultValue">The value to return if the binding has no metadata set with the specified key.</param>
+            <returns>The metadata value, or the default value if none was set.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.IBindingMetadata.Set(System.String,System.Object)">
+            <summary>
+            Sets the value of a piece of metadata.
+            </summary>
+            <param name="key">The metadata key.</param>
+            <param name="value">The metadata value.</param>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.IBindingPrecedenceComparer">
+            <summary>
+            The binding precedence comparer interface
+            </summary>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.Resolvers.DefaultValueBindingResolver">
+            <summary>
+            Represents a binding resolver that takes the target default value as the resolved object.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Resolvers.DefaultValueBindingResolver.Resolve(Ninject.Infrastructure.Multimap{System.Type,Ninject.Planning.Bindings.IBinding},Ninject.Activation.IRequest)">
+            <summary>
+            Returns any bindings from the specified collection that match the specified service.
+            </summary>
+            <param name="bindings">The multimap of all registered bindings.</param>
+            <param name="request">The service in question.</param>
+            <returns>The series of matching bindings.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.Resolvers.IBindingResolver">
+            <summary>
+            Contains logic about which bindings to use for a given service request.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Resolvers.IBindingResolver.Resolve(Ninject.Infrastructure.Multimap{System.Type,Ninject.Planning.Bindings.IBinding},System.Type)">
+            <summary>
+            Returns any bindings from the specified collection that match the specified service.
+            </summary>
+            <param name="bindings">The multimap of all registered bindings.</param>
+            <param name="service">The service in question.</param>
+            <returns>The series of matching bindings.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.Resolvers.IMissingBindingResolver">
+            <summary>
+            Contains logic about which bindings to use for a given service request
+            when other attempts have failed.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Resolvers.IMissingBindingResolver.Resolve(Ninject.Infrastructure.Multimap{System.Type,Ninject.Planning.Bindings.IBinding},Ninject.Activation.IRequest)">
+            <summary>
+            Returns any bindings from the specified collection that match the specified request.
+            </summary>
+            <param name="bindings">The multimap of all registered bindings.</param>
+            <param name="request">The request in question.</param>
+            <returns>The series of matching bindings.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.Resolvers.OpenGenericBindingResolver">
+            <summary>
+            Resolves bindings for open generic types.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Resolvers.OpenGenericBindingResolver.Resolve(Ninject.Infrastructure.Multimap{System.Type,Ninject.Planning.Bindings.IBinding},System.Type)">
+            <summary>
+            Returns any bindings from the specified collection that match the specified service.
+            </summary>
+            <param name="bindings">The multimap of all registered bindings.</param>
+            <param name="service">The service in question.</param>
+            <returns>The series of matching bindings.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.Resolvers.SelfBindingResolver">
+            <summary>
+            Represents a binding resolver that use the service in question itself as the target to activate.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Resolvers.SelfBindingResolver.Resolve(Ninject.Infrastructure.Multimap{System.Type,Ninject.Planning.Bindings.IBinding},Ninject.Activation.IRequest)">
+            <summary>
+            Returns any bindings from the specified collection that match the specified service.
+            </summary>
+            <param name="bindings">The multimap of all registered bindings.</param>
+            <param name="request">The service in question.</param>
+            <returns>The series of matching bindings.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Resolvers.SelfBindingResolver.TypeIsSelfBindable(System.Type)">
+            <summary>
+            Returns a value indicating whether the specified service is self-bindable.
+            </summary>
+            <param name="service">The service.</param>
+            <returns><see langword="True"/> if the type is self-bindable; otherwise <see langword="false"/>.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Bindings.Resolvers.StandardBindingResolver">
+            <summary>
+            Resolves bindings that have been registered directly for the service.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Bindings.Resolvers.StandardBindingResolver.Resolve(Ninject.Infrastructure.Multimap{System.Type,Ninject.Planning.Bindings.IBinding},System.Type)">
+            <summary>
+            Returns any bindings from the specified collection that match the specified service.
+            </summary>
+            <param name="bindings">The multimap of all registered bindings.</param>
+            <param name="service">The service in question.</param>
+            <returns>The series of matching bindings.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Directives.ConstructorInjectionDirective">
+            <summary>
+            Describes the injection of a constructor.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Directives.ConstructorInjectionDirective.#ctor(System.Reflection.ConstructorInfo,Ninject.Injection.ConstructorInjector)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Directives.ConstructorInjectionDirective"/> class.
+            </summary>
+            <param name="constructor">The constructor described by the directive.</param>
+            <param name="injector">The injector that will be triggered.</param>
+        </member>
+        <member name="P:Ninject.Planning.Directives.ConstructorInjectionDirective.Constructor">
+            <summary>
+            Gets or sets the base .ctor definition.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Directives.ConstructorInjectionDirective.HasInjectAttribute">
+            <summary>
+            Gets or sets a value indicating whether this constructor has an inject attribute.
+            </summary>
+            <value><c>true</c> if this constructor has an inject attribute; otherwise, <c>false</c>.</value>
+        </member>
+        <member name="P:Ninject.Planning.Directives.ConstructorInjectionDirective.HasObsoleteAttribute">
+            <summary>
+            Gets or sets a value indicating whether this contructor has an obsolete attribute.
+            </summary>
+            <value><c>true</c> if this constructor has an obsolete attribute; otherwise, <c>false</c>.</value>
+        </member>
+        <member name="T:Ninject.Planning.Directives.IDirective">
+            <summary>
+            A piece of information used in an <see cref="T:Ninject.Planning.IPlan"/>. (Just a marker.)
+            </summary>
+        </member>
+        <member name="T:Ninject.Planning.Directives.MethodInjectionDirective">
+            <summary>
+            Describes the injection of a method.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Directives.MethodInjectionDirective.#ctor(System.Reflection.MethodInfo,Ninject.Injection.MethodInjector)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Directives.MethodInjectionDirective"/> class.
+            </summary>
+            <param name="method">The method described by the directive.</param>
+            <param name="injector">The injector that will be triggered.</param>
+        </member>
+        <member name="T:Ninject.Planning.Directives.MethodInjectionDirectiveBase`2">
+            <summary>
+            Describes the injection of a method or constructor.
+            </summary>
+            <typeparam name="TMethod">The method info.</typeparam>
+            <typeparam name="TInjector">The injector.</typeparam>
+        </member>
+        <member name="M:Ninject.Planning.Directives.MethodInjectionDirectiveBase`2.#ctor(`0,`1)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Directives.MethodInjectionDirectiveBase`2"/> class.
+            </summary>
+            <param name="method">The method this directive represents.</param>
+            <param name="injector">The injector that will be triggered.</param>
+        </member>
+        <member name="P:Ninject.Planning.Directives.MethodInjectionDirectiveBase`2.Injector">
+            <summary>
+            Gets the injector that will be triggered.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Directives.MethodInjectionDirectiveBase`2.Targets">
+            <summary>
+            Gets the targets for the directive.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Directives.MethodInjectionDirectiveBase`2.CreateTargetsFromParameters(`0)">
+            <summary>
+            Creates targets for the parameters of the method.
+            </summary>
+            <param name="method">The method.</param>
+            <returns>The targets for the method's parameters.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Directives.PropertyInjectionDirective">
+            <summary>
+            Describes the injection of a property.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Directives.PropertyInjectionDirective.#ctor(System.Reflection.PropertyInfo,Ninject.Injection.PropertyInjector)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Directives.PropertyInjectionDirective"/> class.
+            </summary>
+            <param name="member">The member the directive describes.</param>
+            <param name="injector">The injector that will be triggered.</param>
+        </member>
+        <member name="P:Ninject.Planning.Directives.PropertyInjectionDirective.Injector">
+            <summary>
+            Gets the injector that will be triggered.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Directives.PropertyInjectionDirective.Target">
+            <summary>
+            Gets the injection target for the directive.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Directives.PropertyInjectionDirective.CreateTarget(System.Reflection.PropertyInfo)">
+            <summary>
+            Creates a target for the property.
+            </summary>
+            <param name="propertyInfo">The property.</param>
+            <returns>The target for the property.</returns>
+        </member>
+        <member name="T:Ninject.Planning.IPlan">
+            <summary>
+            Describes the means by which a type should be activated.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.IPlan.Type">
+            <summary>
+            Gets the type that the plan describes.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.IPlan.ConstructorInjectionDirectives">
+            <summary>
+            Gets the constructor injection directives.
+            </summary>
+            <value>The constructor injection directives.</value>
+        </member>
+        <member name="M:Ninject.Planning.IPlan.Add(Ninject.Planning.Directives.IDirective)">
+            <summary>
+            Adds the specified directive to the plan.
+            </summary>
+            <param name="directive">The directive.</param>
+        </member>
+        <member name="M:Ninject.Planning.IPlan.Has``1">
+            <summary>
+            Determines whether the plan contains one or more directives of the specified type.
+            </summary>
+            <typeparam name="TDirective">The type of directive.</typeparam>
+            <returns><c>True</c> if the plan has one or more directives of the type; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Planning.IPlan.GetOne``1">
+            <summary>
+            Gets the first directive of the specified type from the plan.
+            </summary>
+            <typeparam name="TDirective">The type of directive.</typeparam>
+            <returns>The first directive, or <see langword="null"/> if no matching directives exist.</returns>
+        </member>
+        <member name="M:Ninject.Planning.IPlan.GetAll``1">
+            <summary>
+            Gets all directives of the specified type that exist in the plan.
+            </summary>
+            <typeparam name="TDirective">The type of directive.</typeparam>
+            <returns>A series of directives of the specified type.</returns>
+        </member>
+        <member name="T:Ninject.Planning.IPlanner">
+            <summary>
+            Generates plans for how to activate instances.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.IPlanner.Strategies">
+            <summary>
+            Gets the strategies that contribute to the planning process.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.IPlanner.GetPlan(System.Type)">
+            <summary>
+            Gets or creates an activation plan for the specified type.
+            </summary>
+            <param name="type">The type for which a plan should be created.</param>
+            <returns>The type's activation plan.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Plan">
+            <summary>
+            Describes the means by which a type should be activated.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Plan.#ctor(System.Type)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Plan"/> class.
+            </summary>
+            <param name="type">The type the plan describes.</param>
+        </member>
+        <member name="P:Ninject.Planning.Plan.Type">
+            <summary>
+            Gets the type that the plan describes.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Plan.Directives">
+            <summary>
+            Gets the directives defined in the plan.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Plan.ConstructorInjectionDirectives">
+            <summary>
+            Gets the constructor injection directives defined in the plan.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Plan.Add(Ninject.Planning.Directives.IDirective)">
+            <summary>
+            Adds the specified directive to the plan.
+            </summary>
+            <param name="directive">The directive.</param>
+        </member>
+        <member name="M:Ninject.Planning.Plan.Has``1">
+            <summary>
+            Determines whether the plan contains one or more directives of the specified type.
+            </summary>
+            <typeparam name="TDirective">The type of directive.</typeparam>
+            <returns><c>True</c> if the plan has one or more directives of the type; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Plan.GetOne``1">
+            <summary>
+            Gets the first directive of the specified type from the plan.
+            </summary>
+            <typeparam name="TDirective">The type of directive.</typeparam>
+            <returns>The first directive, or <see langword="null"/> if no matching directives exist.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Plan.GetAll``1">
+            <summary>
+            Gets all directives of the specified type that exist in the plan.
+            </summary>
+            <typeparam name="TDirective">The type of directive.</typeparam>
+            <returns>A series of directives of the specified type.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Planner">
+            <summary>
+            Generates plans for how to activate instances.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Planner.#ctor(System.Collections.Generic.IEnumerable{Ninject.Planning.Strategies.IPlanningStrategy})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Planner"/> class.
+            </summary>
+            <param name="strategies">The strategies to execute during planning.</param>
+        </member>
+        <member name="P:Ninject.Planning.Planner.Strategies">
+            <summary>
+            Gets the strategies that contribute to the planning process.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Planner.GetPlan(System.Type)">
+            <summary>
+            Gets or creates an activation plan for the specified type.
+            </summary>
+            <param name="type">The type for which a plan should be created.</param>
+            <returns>The type's activation plan.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Planner.CreateEmptyPlan(System.Type)">
+            <summary>
+            Creates an empty plan for the specified type.
+            </summary>
+            <param name="type">The type for which a plan should be created.</param>
+            <returns>The created plan.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Planner.CreateNewPlan(System.Type)">
+            <summary>
+            Creates a new plan for the specified type.
+            This method requires an active reader lock!
+            </summary>
+            <param name="type">The type.</param>
+            <returns>The newly created plan.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Strategies.ConstructorReflectionStrategy">
+            <summary>
+            Adds a directive to plans indicating which constructor should be injected during activation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Strategies.ConstructorReflectionStrategy.#ctor(Ninject.Selection.ISelector,Ninject.Injection.IInjectorFactory)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Strategies.ConstructorReflectionStrategy"/> class.
+            </summary>
+            <param name="selector">The selector component.</param>
+            <param name="injectorFactory">The injector factory component.</param>
+        </member>
+        <member name="P:Ninject.Planning.Strategies.ConstructorReflectionStrategy.Selector">
+            <summary>
+            Gets the selector component.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Strategies.ConstructorReflectionStrategy.InjectorFactory">
+            <summary>
+            Gets or sets the injector factory component.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Strategies.ConstructorReflectionStrategy.Execute(Ninject.Planning.IPlan)">
+            <summary>
+            Adds a <see cref="T:Ninject.Planning.Directives.ConstructorInjectionDirective"/> to the plan for the constructor
+            that should be injected.
+            </summary>
+            <param name="plan">The plan that is being generated.</param>
+        </member>
+        <member name="T:Ninject.Planning.Strategies.IPlanningStrategy">
+            <summary>
+            Contributes to the generation of a <see cref="T:Ninject.Planning.IPlan"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Strategies.IPlanningStrategy.Execute(Ninject.Planning.IPlan)">
+            <summary>
+            Contributes to the specified plan.
+            </summary>
+            <param name="plan">The plan that is being generated.</param>
+        </member>
+        <member name="T:Ninject.Planning.Strategies.MethodReflectionStrategy">
+            <summary>
+            Adds directives to plans indicating which methods should be injected during activation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Strategies.MethodReflectionStrategy.#ctor(Ninject.Selection.ISelector,Ninject.Injection.IInjectorFactory)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Strategies.MethodReflectionStrategy"/> class.
+            </summary>
+            <param name="selector">The selector component.</param>
+            <param name="injectorFactory">The injector factory component.</param>
+        </member>
+        <member name="P:Ninject.Planning.Strategies.MethodReflectionStrategy.Selector">
+            <summary>
+            Gets the selector component.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Strategies.MethodReflectionStrategy.InjectorFactory">
+            <summary>
+            Gets or sets the injector factory component.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Strategies.MethodReflectionStrategy.Execute(Ninject.Planning.IPlan)">
+            <summary>
+            Adds a <see cref="T:Ninject.Planning.Directives.MethodInjectionDirective"/> to the plan for each method
+            that should be injected.
+            </summary>
+            <param name="plan">The plan that is being generated.</param>
+        </member>
+        <member name="T:Ninject.Planning.Strategies.PropertyReflectionStrategy">
+            <summary>
+            Adds directives to plans indicating which properties should be injected during activation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Strategies.PropertyReflectionStrategy.#ctor(Ninject.Selection.ISelector,Ninject.Injection.IInjectorFactory)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Strategies.PropertyReflectionStrategy"/> class.
+            </summary>
+            <param name="selector">The selector component.</param>
+            <param name="injectorFactory">The injector factory component.</param>
+        </member>
+        <member name="P:Ninject.Planning.Strategies.PropertyReflectionStrategy.Selector">
+            <summary>
+            Gets the selector component.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Strategies.PropertyReflectionStrategy.InjectorFactory">
+            <summary>
+            Gets or sets the injector factory component.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Strategies.PropertyReflectionStrategy.Execute(Ninject.Planning.IPlan)">
+            <summary>
+            Adds a <see cref="T:Ninject.Planning.Directives.PropertyInjectionDirective"/> to the plan for each property
+            that should be injected.
+            </summary>
+            <param name="plan">The plan that is being generated.</param>
+        </member>
+        <member name="T:Ninject.Planning.Targets.ITarget">
+            <summary>
+            Represents a site on a type where a value will be injected.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ITarget.Type">
+            <summary>
+            Gets the type of the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ITarget.Name">
+            <summary>
+            Gets the name of the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ITarget.Member">
+            <summary>
+            Gets the member that contains the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ITarget.Constraint">
+            <summary>
+            Gets the constraint defined on the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ITarget.IsOptional">
+            <summary>
+            Gets a value indicating whether the target represents an optional dependency.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ITarget.HasDefaultValue">
+            <summary>
+            Gets a value indicating whether the target has a default value.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ITarget.DefaultValue">
+            <summary>
+            Gets the default value for the target.
+            </summary>
+            <exception cref="T:System.InvalidOperationException">If the item does not have a default value.</exception>
+        </member>
+        <member name="M:Ninject.Planning.Targets.ITarget.ResolveWithin(Ninject.Activation.IContext)">
+            <summary>
+            Resolves a value for the target within the specified parent context.
+            </summary>
+            <param name="parent">The parent context.</param>
+            <returns>The resolved value.</returns>
+        </member>
+        <member name="T:Ninject.Planning.Targets.ParameterTarget">
+            <summary>
+            Represents an injection target for a <see cref="T:System.Reflection.ParameterInfo"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Targets.ParameterTarget.#ctor(System.Reflection.MethodBase,System.Reflection.ParameterInfo)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Targets.ParameterTarget"/> class.
+            </summary>
+            <param name="method">The method that defines the parameter.</param>
+            <param name="site">The parameter that this target represents.</param>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ParameterTarget.Name">
+            <summary>
+            Gets the name of the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ParameterTarget.Type">
+            <summary>
+            Gets the type of the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ParameterTarget.HasDefaultValue">
+            <summary>
+            Gets a value indicating whether the target has a default value.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.ParameterTarget.DefaultValue">
+            <summary>
+            Gets the default value for the target.
+            </summary>
+            <exception cref="T:System.InvalidOperationException">If the item does not have a default value.</exception>
+        </member>
+        <member name="T:Ninject.Planning.Targets.PropertyTarget">
+            <summary>
+            Represents an injection target for a <see cref="T:System.Reflection.PropertyInfo"/>.
+            </summary>
+        </member>
+        <member name="M:Ninject.Planning.Targets.PropertyTarget.#ctor(System.Reflection.PropertyInfo)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Targets.PropertyTarget"/> class.
+            </summary>
+            <param name="site">The property that this target represents.</param>
+        </member>
+        <member name="P:Ninject.Planning.Targets.PropertyTarget.Name">
+            <summary>
+            Gets the name of the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.PropertyTarget.Type">
+            <summary>
+            Gets the type of the target.
+            </summary>
+        </member>
+        <member name="T:Ninject.Planning.Targets.Target`1">
+            <summary>
+            Represents a site on a type where a value can be injected.
+            </summary>
+            <typeparam name="T">The type of site this represents.</typeparam>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.#ctor(System.Reflection.MemberInfo,`0)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Planning.Targets.Target`1"/> class.
+            </summary>
+            <param name="member">The member that contains the target.</param>
+            <param name="site">The site represented by the target.</param>
+        </member>
+        <member name="P:Ninject.Planning.Targets.Target`1.Member">
+            <summary>
+            Gets the member that contains the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.Target`1.Site">
+            <summary>
+            Gets the site (property, parameter, etc.) represented by the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.Target`1.Name">
+            <summary>
+            Gets the name of the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.Target`1.Type">
+            <summary>
+            Gets the type of the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.Target`1.Constraint">
+            <summary>
+            Gets the constraint defined on the target.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.Target`1.IsOptional">
+            <summary>
+            Gets a value indicating whether the target represents an optional dependency.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.Target`1.HasDefaultValue">
+            <summary>
+            Gets a value indicating whether the target has a default value.
+            </summary>
+        </member>
+        <member name="P:Ninject.Planning.Targets.Target`1.DefaultValue">
+            <summary>
+            Gets the default value for the target.
+            </summary>
+            <exception cref="T:System.InvalidOperationException">If the item does not have a default value.</exception>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.GetCustomAttributes(System.Type,System.Boolean)">
+            <summary>
+            Returns an array of custom attributes of a specified type defined on the target.
+            </summary>
+            <param name="attributeType">The type of attribute to search for.</param>
+            <param name="inherit">Whether to look up the hierarchy chain for inherited custom attributes.</param>
+            <returns>An array of custom attributes of the specified type.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.GetCustomAttributes(System.Boolean)">
+            <summary>
+            Returns an array of custom attributes defined on the target.
+            </summary>
+            <param name="inherit">Whether to look up the hierarchy chain for inherited custom attributes.</param>
+            <returns>An array of custom attributes.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.IsDefined(System.Type,System.Boolean)">
+            <summary>
+            Returns a value indicating whether an attribute of the specified type is defined on the target.
+            </summary>
+            <param name="attributeType">The type of attribute to search for.</param>
+            <param name="inherit">Whether to look up the hierarchy chain for inherited custom attributes.</param>
+            <returns><c>True</c> if such an attribute is defined; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.ResolveWithin(Ninject.Activation.IContext)">
+            <summary>
+            Resolves a value for the target within the specified parent context.
+            </summary>
+            <param name="parent">The parent context.</param>
+            <returns>The resolved value.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.GetValues(System.Type,Ninject.Activation.IContext)">
+            <summary>
+            Gets the value(s) that should be injected into the target.
+            </summary>
+            <param name="service">The service that the target is requesting.</param>
+            <param name="parent">The parent context in which the target is being injected.</param>
+            <returns>A series of values that are available for injection.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.GetValue(System.Type,Ninject.Activation.IContext)">
+            <summary>
+            Gets the value that should be injected into the target.
+            </summary>
+            <param name="service">The service that the target is requesting.</param>
+            <param name="parent">The parent context in which the target is being injected.</param>
+            <returns>The value that is to be injected.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.ReadOptionalFromTarget">
+            <summary>
+            Reads whether the target represents an optional dependency.
+            </summary>
+            <returns><see langword="True"/> if it is optional; otherwise <see langword="false"/>.</returns>
+        </member>
+        <member name="M:Ninject.Planning.Targets.Target`1.ReadConstraintFromTarget">
+            <summary>
+            Reads the resolution constraint from target.
+            </summary>
+            <returns>The resolution constraint.</returns>
+        </member>
+        <member name="T:Ninject.Selection.Heuristics.IConstructorScorer">
+            <summary>
+            Generates scores for constructors, to determine which is the best one to call during activation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.IConstructorScorer.Score(Ninject.Activation.IContext,Ninject.Planning.Directives.ConstructorInjectionDirective)">
+            <summary>
+            Gets the score for the specified constructor.
+            </summary>
+            <param name="context">The injection context.</param>
+            <param name="directive">The constructor.</param>
+            <returns>The constructor's score.</returns>
+        </member>
+        <member name="T:Ninject.Selection.Heuristics.IInjectionHeuristic">
+            <summary>
+            Determines whether members should be injected during activation.
+            </summary>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.IInjectionHeuristic.ShouldInject(System.Reflection.MemberInfo)">
+            <summary>
+            Returns a value indicating whether the specified member should be injected.
+            </summary>
+            <param name="member">The member in question.</param>
+            <returns><c>True</c> if the member should be injected; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="T:Ninject.Selection.Heuristics.SpecificConstructorSelector">
+            <summary>
+            Constructor selector that selects the constructor matching the one passed to the constructor.
+            </summary>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.SpecificConstructorSelector.#ctor(System.Reflection.ConstructorInfo)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Selection.Heuristics.SpecificConstructorSelector"/> class.
+            </summary>
+            <param name="constructorInfo">The constructor info of the constructor that shall be selected.</param>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.SpecificConstructorSelector.Score(Ninject.Activation.IContext,Ninject.Planning.Directives.ConstructorInjectionDirective)">
+            <summary>
+            Gets the score for the specified constructor.
+            </summary>
+            <param name="context">The injection context.</param>
+            <param name="directive">The constructor.</param>
+            <returns>The constructor's score.</returns>
+        </member>
+        <member name="T:Ninject.Selection.Heuristics.StandardConstructorScorer">
+            <summary>
+            Scores constructors by either looking for the existence of an injection marker
+            attribute, or by counting the number of parameters.
+            </summary>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.StandardConstructorScorer.Score(Ninject.Activation.IContext,Ninject.Planning.Directives.ConstructorInjectionDirective)">
+            <summary>
+            Gets the score for the specified constructor.
+            </summary>
+            <param name="context">The injection context.</param>
+            <param name="directive">The constructor.</param>
+            <returns>The constructor's score.</returns>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.StandardConstructorScorer.BindingExists(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Checkes whether a binding exists for a given target.
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>Whether a binding exists for the target in the given context.</returns>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.StandardConstructorScorer.BindingExists(Ninject.IKernel,Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Checkes whether a binding exists for a given target on the specified kernel.
+            </summary>
+            <param name="kernel">The kernel.</param>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>Whether a binding exists for the target in the given context.</returns>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.StandardConstructorScorer.ParameterExists(Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget)">
+            <summary>
+            Checks whether any parameters exist for the given target..
+            </summary>
+            <param name="context">The context.</param>
+            <param name="target">The target.</param>
+            <returns>Whether a parameter exists for the target in the given context.</returns>
+        </member>
+        <member name="T:Ninject.Selection.Heuristics.StandardInjectionHeuristic">
+            <summary>
+            Determines whether members should be injected during activation by checking
+            if they are decorated with an injection marker attribute.
+            </summary>
+        </member>
+        <member name="M:Ninject.Selection.Heuristics.StandardInjectionHeuristic.ShouldInject(System.Reflection.MemberInfo)">
+            <summary>
+            Returns a value indicating whether the specified member should be injected.
+            </summary>
+            <param name="member">The member in question.</param>
+            <returns><c>True</c> if the member should be injected; otherwise <c>false</c>.</returns>
+        </member>
+        <member name="T:Ninject.Selection.ISelector">
+            <summary>
+            Selects members for injection.
+            </summary>
+        </member>
+        <member name="P:Ninject.Selection.ISelector.ConstructorScorer">
+            <summary>
+            Gets the constructor scorer.
+            </summary>
+        </member>
+        <member name="P:Ninject.Selection.ISelector.InjectionHeuristics">
+            <summary>
+            Gets the heuristics used to determine which members should be injected.
+            </summary>
+        </member>
+        <member name="M:Ninject.Selection.ISelector.SelectConstructorsForInjection(System.Type)">
+            <summary>
+            Selects the constructor to call on the specified type, by using the constructor scorer.
+            </summary>
+            <param name="type">The type.</param>
+            <returns>The selected constructor, or <see langword="null"/> if none were available.</returns>
+        </member>
+        <member name="M:Ninject.Selection.ISelector.SelectPropertiesForInjection(System.Type)">
+            <summary>
+            Selects properties that should be injected.
+            </summary>
+            <param name="type">The type.</param>
+            <returns>A series of the selected properties.</returns>
+        </member>
+        <member name="M:Ninject.Selection.ISelector.SelectMethodsForInjection(System.Type)">
+            <summary>
+            Selects methods that should be injected.
+            </summary>
+            <param name="type">The type.</param>
+            <returns>A series of the selected methods.</returns>
+        </member>
+        <member name="T:Ninject.Selection.Selector">
+            <summary>
+            Selects members for injection.
+            </summary>
+        </member>
+        <member name="M:Ninject.Selection.Selector.#ctor(Ninject.Selection.Heuristics.IConstructorScorer,System.Collections.Generic.IEnumerable{Ninject.Selection.Heuristics.IInjectionHeuristic})">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.Selection.Selector"/> class.
+            </summary>
+            <param name="constructorScorer">The constructor scorer.</param>
+            <param name="injectionHeuristics">The injection heuristics.</param>
+        </member>
+        <member name="P:Ninject.Selection.Selector.ConstructorScorer">
+            <summary>
+            Gets the constructor scorer.
+            </summary>
+        </member>
+        <member name="P:Ninject.Selection.Selector.InjectionHeuristics">
+            <summary>
+            Gets the property injection heuristics.
+            </summary>
+        </member>
+        <member name="P:Ninject.Selection.Selector.Flags">
+            <summary>
+            Gets the default binding flags.
+            </summary>
+        </member>
+        <member name="M:Ninject.Selection.Selector.SelectConstructorsForInjection(System.Type)">
+            <summary>
+            Selects the constructor to call on the specified type, by using the constructor scorer.
+            </summary>
+            <param name="type">The type.</param>
+            <returns>The selected constructor, or <see langword="null"/> if none were available.</returns>
+        </member>
+        <member name="M:Ninject.Selection.Selector.SelectPropertiesForInjection(System.Type)">
+            <summary>
+            Selects properties that should be injected.
+            </summary>
+            <param name="type">The type.</param>
+            <returns>A series of the selected properties.</returns>
+        </member>
+        <member name="M:Ninject.Selection.Selector.SelectMethodsForInjection(System.Type)">
+            <summary>
+            Selects methods that should be injected.
+            </summary>
+            <param name="type">The type.</param>
+            <returns>A series of the selected methods.</returns>
+        </member>
+        <member name="T:Ninject.StandardKernel">
+            <summary>
+            The standard implementation of a kernel.
+            </summary>
+        </member>
+        <member name="M:Ninject.StandardKernel.#ctor(Ninject.Modules.INinjectModule[])">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.StandardKernel"/> class.
+            </summary>
+            <param name="modules">The modules to load into the kernel.</param>
+        </member>
+        <member name="M:Ninject.StandardKernel.#ctor(Ninject.INinjectSettings,Ninject.Modules.INinjectModule[])">
+            <summary>
+            Initializes a new instance of the <see cref="T:Ninject.StandardKernel"/> class.
+            </summary>
+            <param name="settings">The configuration to use.</param>
+            <param name="modules">The modules to load into the kernel.</param>
+        </member>
+        <member name="P:Ninject.StandardKernel.KernelInstance">
+            <summary>
+            Gets the kernel.
+            </summary>
+            <value>The kernel.</value>
+        </member>
+        <member name="M:Ninject.StandardKernel.AddComponents">
+            <summary>
+            Adds components to the kernel during startup.
+            </summary>
+        </member>
+        <member name="T:Ninject.Syntax.BindingRoot">
+            <summary>
+            Provides a path to register bindings.
+            </summary>
+        </member>
+        <member name="P:Ninject.Syntax.BindingRoot.KernelInstance">
+            <summary>
+            Gets the kernel.
+            </summary>
+            <value>The kernel.</value>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Bind``1">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <typeparam name="T">The service to bind.</typeparam>
+            <returns>The fluent syntax</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Bind``2">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <typeparam name="T1">The first service to bind.</typeparam>
+            <typeparam name="T2">The second service to bind.</typeparam>
+            <returns>The fluent syntax</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Bind``3">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <typeparam name="T1">The first service to bind.</typeparam>
+            <typeparam name="T2">The second service to bind.</typeparam>
+            <typeparam name="T3">The third service to bind.</typeparam>
+            <returns>The fluent syntax</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Bind``4">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <typeparam name="T1">The first service to bind.</typeparam>
+            <typeparam name="T2">The second service to bind.</typeparam>
+            <typeparam name="T3">The third service to bind.</typeparam>
+            <typeparam name="T4">The fourth service to bind.</typeparam>
+            <returns>The fluent syntax</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Bind(System.Type[])">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <param name="services">The services to bind.</param>
+            <returns>The fluent syntax</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Unbind``1">
+            <summary>
+            Unregisters all bindings for the specified service.
+            </summary>
+            <typeparam name="T">The service to unbind.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Unbind(System.Type)">
+            <summary>
+            Unregisters all bindings for the specified service.
+            </summary>
+            <param name="service">The service to unbind.</param>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Rebind``1">
+            <summary>
+            Removes any existing bindings for the specified service, and declares a new one.
+            </summary>
+            <typeparam name="T1">The first service to re-bind.</typeparam>
+            <returns>The fluent syntax</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Rebind``2">
+            <summary>
+            Removes any existing bindings for the specified services, and declares a new one.
+            </summary>
+            <typeparam name="T1">The first service to re-bind.</typeparam>
+            <typeparam name="T2">The second service to re-bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Rebind``3">
+            <summary>
+            Removes any existing bindings for the specified services, and declares a new one.
+            </summary>
+            <typeparam name="T1">The first service to re-bind.</typeparam>
+            <typeparam name="T2">The second service to re-bind.</typeparam>
+            <typeparam name="T3">The third service to re-bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Rebind``4">
+            <summary>
+            Removes any existing bindings for the specified services, and declares a new one.
+            </summary>
+            <typeparam name="T1">The first service to re-bind.</typeparam>
+            <typeparam name="T2">The second service to re-bind.</typeparam>
+            <typeparam name="T3">The third service to re-bind.</typeparam>
+            <typeparam name="T4">The fourth service to re-bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.Rebind(System.Type[])">
+            <summary>
+            Removes any existing bindings for the specified service, and declares a new one.
+            </summary>
+            <param name="services">The services to re-bind.</param>
+            <returns>The fluent syntax</returns>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.AddBinding(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Registers the specified binding.
+            </summary>
+            <param name="binding">The binding to add.</param>
+        </member>
+        <member name="M:Ninject.Syntax.BindingRoot.RemoveBinding(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Unregisters the specified binding.
+            </summary>
+            <param name="binding">The binding to remove.</param>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingInNamedWithOrOnSyntax`1">
+            <summary>
+            Used to set the scope, name, or add additional information or actions to a binding.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingInSyntax`1">
+            <summary>
+            Used to define the scope in which instances activated via a binding should be re-used.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingInSyntax`1.InSingletonScope">
+            <summary>
+            Indicates that only a single instance of the binding should be created, and then
+            should be re-used for all subsequent requests.
+            </summary>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingInSyntax`1.InTransientScope">
+            <summary>
+            Indicates that instances activated via the binding should not be re-used, nor have
+            their lifecycle managed by Ninject.
+            </summary>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingInSyntax`1.InThreadScope">
+            <summary>
+            Indicates that instances activated via the binding should be re-used within the same thread.
+            </summary>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingInSyntax`1.InScope(System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Indicates that instances activated via the binding should be re-used as long as the object
+            returned by the provided callback remains alive (that is, has not been garbage collected).
+            </summary>
+            <param name="scope">The callback that returns the scope.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingNamedSyntax`1">
+            <summary>
+            Used to define the name of a binding.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingNamedSyntax`1.Named(System.String)">
+            <summary>
+            Indicates that the binding should be registered with the specified name. Names are not
+            necessarily unique; multiple bindings for a given service may be registered with the same name.
+            </summary>
+            <param name="name">The name to give the binding.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingNamedWithOrOnSyntax`1">
+            <summary>
+            Used to set the name, or add additional information or actions to a binding.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingOnSyntax`1">
+            <summary>
+            Used to add additional actions to be performed during activation or deactivation of instances via a binding.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingOnSyntax`1.OnActivation(System.Action{`0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are activated.
+            </summary>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingOnSyntax`1.OnActivation``1(System.Action{``0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are activated.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingOnSyntax`1.OnActivation(System.Action{Ninject.Activation.IContext,`0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are activated.
+            </summary>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingOnSyntax`1.OnActivation``1(System.Action{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are activated.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingOnSyntax`1.OnDeactivation(System.Action{`0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are deactivated.
+            </summary>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingOnSyntax`1.OnDeactivation``1(System.Action{``0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are deactivated.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingOnSyntax`1.OnDeactivation(System.Action{Ninject.Activation.IContext,`0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are deactivated.
+            </summary>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingOnSyntax`1.OnDeactivation``1(System.Action{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the specified callback should be invoked when instances are deactivated.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="action">The action callback.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingRoot">
+            <summary>
+            Provides a path to register bindings.
+            </summary>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Bind``1">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <typeparam name="T">The service to bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Bind``2">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <typeparam name="T1">The first service to bind.</typeparam>
+            <typeparam name="T2">The second service to bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Bind``3">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <typeparam name="T1">The first service to bind.</typeparam>
+            <typeparam name="T2">The second service to bind.</typeparam>
+            <typeparam name="T3">The third service to bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Bind``4">
+            <summary>
+            Declares a binding for the specified service.
+            </summary>
+            <typeparam name="T1">The first service to bind.</typeparam>
+            <typeparam name="T2">The second service to bind.</typeparam>
+            <typeparam name="T3">The third service to bind.</typeparam>
+            <typeparam name="T4">The fourth service to bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Bind(System.Type[])">
+            <summary>
+            Declares a binding from the service to itself.
+            </summary>
+            <param name="services">The services to bind.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Unbind``1">
+            <summary>
+            Unregisters all bindings for the specified service.
+            </summary>
+            <typeparam name="T">The service to unbind.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Unbind(System.Type)">
+            <summary>
+            Unregisters all bindings for the specified service.
+            </summary>
+            <param name="service">The service to unbind.</param>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Rebind``1">
+            <summary>
+            Removes any existing bindings for the specified service, and declares a new one.
+            </summary>
+            <typeparam name="T1">The first service to re-bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Rebind``2">
+            <summary>
+            Removes any existing bindings for the specified services, and declares a new one.
+            </summary>
+            <typeparam name="T1">The first service to re-bind.</typeparam>
+            <typeparam name="T2">The second service to re-bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Rebind``3">
+            <summary>
+            Removes any existing bindings for the specified services, and declares a new one.
+            </summary>
+            <typeparam name="T1">The first service to re-bind.</typeparam>
+            <typeparam name="T2">The second service to re-bind.</typeparam>
+            <typeparam name="T3">The third service to re-bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Rebind``4">
+            <summary>
+            Removes any existing bindings for the specified services, and declares a new one.
+            </summary>
+            <typeparam name="T1">The first service to re-bind.</typeparam>
+            <typeparam name="T2">The second service to re-bind.</typeparam>
+            <typeparam name="T3">The third service to re-bind.</typeparam>
+            <typeparam name="T4">The fourth service to re-bind.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.Rebind(System.Type[])">
+            <summary>
+            Removes any existing bindings for the specified services, and declares a new one.
+            </summary>
+            <param name="services">The services to re-bind.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.AddBinding(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Registers the specified binding.
+            </summary>
+            <param name="binding">The binding to add.</param>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingRoot.RemoveBinding(Ninject.Planning.Bindings.IBinding)">
+            <summary>
+            Unregisters the specified binding.
+            </summary>
+            <param name="binding">The binding to remove.</param>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingSyntax">
+            <summary>
+            Used to define a basic binding syntax builder.
+            </summary>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingToSyntax`4">
+            <summary>
+            Used to define the target of a binding.
+            </summary>
+            <typeparam name="T1">The first service type to be bound.</typeparam>
+            <typeparam name="T2">The second service type to be bound.</typeparam>
+            <typeparam name="T3">The third service type to be bound.</typeparam>
+            <typeparam name="T4">The fourth service type to be bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.To``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.To(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.ToProvider``1">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.ToProvider``2">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.ToProvider(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.ToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.ToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.ToConstant``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`4.ToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingToSyntax`3">
+            <summary>
+            Used to define the target of a binding.
+            </summary>
+            <typeparam name="T1">The first service type to be bound.</typeparam>
+            <typeparam name="T2">The second service type to be bound.</typeparam>
+            <typeparam name="T3">The third service type to be bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.To``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.To(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.ToProvider``1">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.ToProvider``2">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.ToProvider(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.ToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.ToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.ToConstant``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`3.ToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingToSyntax`2">
+            <summary>
+            Used to define the target of a binding.
+            </summary>
+            <typeparam name="T1">The first service type to be bound.</typeparam>
+            <typeparam name="T2">The second service type to be bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.To``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.To(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.ToProvider``1">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.ToProvider``2">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.ToProvider(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.ToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.ToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.ToConstant``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`2.ToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingToSyntax`1">
+            <summary>
+            Used to define the target of a binding.
+            </summary>
+            <typeparam name="T1">The service being bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.ToSelf">
+            <summary>
+            Indicates that the service should be self-bound.
+            </summary>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.To``1">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <typeparam name="TImplementation">The implementation type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.To(System.Type)">
+            <summary>
+            Indicates that the service should be bound to the specified implementation type.
+            </summary>
+            <param name="implementation">The implementation type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.ToProvider``1">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <typeparam name="TProvider">The type of provider to activate.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.ToProvider(System.Type)">
+            <summary>
+            Indicates that the service should be bound to an instance of the specified provider type.
+            The instance will be activated via the kernel when an instance of the service is activated.
+            </summary>
+            <param name="providerType">The type of provider to activate.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.ToProvider``1(Ninject.Activation.IProvider{``0})">
+            <summary>
+            Indicates that the service should be bound to the specified provider.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="provider">The provider.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.ToMethod(System.Func{Ninject.Activation.IContext,`0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.ToMethod``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the service should be bound to the specified callback method.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="method">The method.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.ToConstant``1(``0)">
+            <summary>
+            Indicates that the service should be bound to the specified constant value.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="value">The constant value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingToSyntax`1.ToConstructor``1(System.Linq.Expressions.Expression{System.Func{Ninject.Syntax.IConstructorArgumentSyntax,``0}})">
+            <summary>
+            Indicates that the service should be bound to the specified constructor.
+            </summary>
+            <typeparam name="TImplementation">The type of the implementation.</typeparam>
+            <param name="newExpression">The expression that specifies the constructor.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingWhenInNamedWithOrOnSyntax`1">
+            <summary>
+            Used to set the condition, scope, name, or add additional information or actions to a binding.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingWhenSyntax`1">
+            <summary>
+            Used to define the conditions under which a binding should be used.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.When(System.Func{Ninject.Activation.IRequest,System.Boolean})">
+            <summary>
+            Indicates that the binding should be used only for requests that support the specified condition.
+            </summary>
+            <param name="condition">The condition.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenInjectedInto``1">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            Types that derive from the specified type are considered as valid targets.
+            </summary>
+            <typeparam name="TParent">The type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenInjectedInto(System.Type)">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            Types that derive from the specified type are considered as valid targets.
+            </summary>
+            <param name="parent">The type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenInjectedInto(System.Type[])">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified types.
+            Types that derive from one of the specified types are considered as valid targets.
+            Should match at lease one of the targets.
+            </summary>
+            <param name="parents">The types to match.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenInjectedExactlyInto``1">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            The type must match exactly the specified type. Types that derive from the specified type
+            will not be considered as valid target.
+            </summary>
+            <typeparam name="TParent">The type.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenInjectedExactlyInto(System.Type)">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            The type must match exactly the specified type. Types that derive from the specified type
+            will not be considered as valid target.
+            </summary>
+            <param name="parent">The type.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenInjectedExactlyInto(System.Type[])">
+            <summary>
+            Indicates that the binding should be used only for injections on the specified type.
+            The type must match one of the specified types exactly. Types that derive from one of the specified types
+            will not be considered as valid target.
+            Should match at least one of the specified targets
+            </summary>
+            <param name="parents">The types.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenClassHas``1">
+            <summary>
+            Indicates that the binding should be used only when the class being injected has
+            an attribute of the specified type.
+            </summary>
+            <typeparam name="TAttribute">The type of attribute.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenMemberHas``1">
+            <summary>
+            Indicates that the binding should be used only when the member being injected has
+            an attribute of the specified type.
+            </summary>
+            <typeparam name="TAttribute">The type of attribute.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenTargetHas``1">
+            <summary>
+            Indicates that the binding should be used only when the target being injected has
+            an attribute of the specified type.
+            </summary>
+            <typeparam name="TAttribute">The type of attribute.</typeparam>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenClassHas(System.Type)">
+            <summary>
+            Indicates that the binding should be used only when the class being injected has
+            an attribute of the specified type.
+            </summary>
+            <param name="attributeType">The type of attribute.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenMemberHas(System.Type)">
+            <summary>
+            Indicates that the binding should be used only when the member being injected has
+            an attribute of the specified type.
+            </summary>
+            <param name="attributeType">The type of attribute.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenTargetHas(System.Type)">
+            <summary>
+            Indicates that the binding should be used only when the target being injected has
+            an attribute of the specified type.
+            </summary>
+            <param name="attributeType">The type of attribute.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenParentNamed(System.String)">
+            <summary>
+            Indicates that the binding should be used only when the service is being requested
+            by a service bound with the specified name.
+            </summary>
+            <param name="name">The name to expect.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenAnyAnchestorNamed(System.String)">
+            <summary>
+            Indicates that the binding should be used only when any ancestor is bound with the specified name.
+            </summary>
+            <param name="name">The name to expect.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenAnyAncestorNamed(System.String)">
+            <summary>
+            Indicates that the binding should be used only when any ancestor is bound with the specified name.
+            </summary>
+            <param name="name">The name to expect.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenNoAncestorNamed(System.String)">
+            <summary>
+            Indicates that the binding should be used only when no ancestor is bound with the specified name.
+            </summary>
+            <param name="name">The name to expect.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenAnyAncestorMatches(System.Predicate{Ninject.Activation.IContext})">
+            <summary>
+            Indicates that the binding should be used only when any ancestor matches the specified predicate.
+            </summary>
+            <param name="predicate">The predicate to match.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWhenSyntax`1.WhenNoAncestorMatches(System.Predicate{Ninject.Activation.IContext})">
+            <summary>
+            Indicates that the binding should be used only when no ancestor matches the specified predicate.
+            </summary>
+            <param name="predicate">The predicate to match.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingWithOrOnSyntax`1">
+            <summary>
+            Used to add additional information or actions to a binding.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="T:Ninject.Syntax.IBindingWithSyntax`1">
+            <summary>
+            Used to add additional information to a binding.
+            </summary>
+            <typeparam name="T">The service being bound.</typeparam>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument(System.String,System.Object)">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="value">The value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument(System.String,System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument(System.String,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="name">The name of the argument to override.</param>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument``1(``0)">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <typeparam name="TValue">Specifies the argument type to override.</typeparam>
+            <param name="value">The value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument(System.Type,System.Object)">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="type">The type of the argument to override.</param>
+            <param name="value">The value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument``1(System.Func{Ninject.Activation.IContext,``0})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <typeparam name="TValue">The type of the argument to override.</typeparam>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument(System.Type,System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="type">The type of the argument to override.</param>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument``1(System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,``0})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <typeparam name="TValue">The type of the argument to override.</typeparam>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithConstructorArgument(System.Type,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Indicates that the specified constructor argument should be overridden with the specified value.
+            </summary>
+            <param name="type">The type of the argument to override.</param>
+            <param name="callback">The callback to invoke to get the value for the argument.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithPropertyValue(System.String,System.Object)">
+            <summary>
+            Indicates that the specified property should be injected with the specified value.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="value">The value for the property.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithPropertyValue(System.String,System.Func{Ninject.Activation.IContext,System.Object})">
+            <summary>
+            Indicates that the specified property should be injected with the specified value.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="callback">The callback to invoke to get the value for the property.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithPropertyValue(System.String,System.Func{Ninject.Activation.IContext,Ninject.Planning.Targets.ITarget,System.Object})">
+            <summary>
+            Indicates that the specified property should be injected with the specified value.
+            </summary>
+            <param name="name">The name of the property to override.</param>
+            <param name="callback">The callback to invoke to get the value for the property.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithParameter(Ninject.Parameters.IParameter)">
+            <summary>
+            Adds a custom parameter to the binding.
+            </summary>
+            <param name="parameter">The parameter.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IBindingWithSyntax`1.WithMetadata(System.String,System.Object)">
+            <summary>
+            Sets the value of a piece of metadata on the binding.
+            </summary>
+            <param name="key">The metadata key.</param>
+            <param name="value">The metadata value.</param>
+            <returns>The fluent syntax.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IConstructorArgumentSyntax">
+            <summary>
+            Passed to ToConstructor to specify that a constructor value is Injected.
+            </summary>
+        </member>
+        <member name="P:Ninject.Syntax.IConstructorArgumentSyntax.Context">
+            <summary>
+            Gets the context.
+            </summary>
+            <value>The context.</value>
+        </member>
+        <member name="M:Ninject.Syntax.IConstructorArgumentSyntax.Inject``1">
+            <summary>
+            Specifies that the argument is injected.
+            </summary>
+            <typeparam name="T">The type of the parameter</typeparam>
+            <returns>Not used. This interface has no implementation.</returns>
+        </member>
+        <member name="T:Ninject.Syntax.IFluentSyntax">
+            <summary>
+            A hack to hide methods defined on <see cref="T:System.Object"/> for IntelliSense
+            on fluent interfaces. Credit to Daniel Cazzulino.
+            </summary>
+        </member>
+        <member name="M:Ninject.Syntax.IFluentSyntax.GetType">
+            <summary>
+            Gets the type of this instance.
+            </summary>
+            <returns>The type of this instance.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IFluentSyntax.GetHashCode">
+            <summary>
+            Returns a hash code for this instance.
+            </summary>
+            <returns>
+            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+            </returns>
+        </member>
+        <member name="M:Ninject.Syntax.IFluentSyntax.ToString">
+            <summary>
+            Returns a <see cref="T:System.String"/> that represents this instance.
+            </summary>
+            <returns>
+            A <see cref="T:System.String"/> that represents this instance.
+            </returns>
+        </member>
+        <member name="M:Ninject.Syntax.IFluentSyntax.Equals(System.Object)">
+            <summary>
+            Determines whether the specified <see cref="T:System.Object"/> is equal to this instance.
+            </summary>
+            <param name="other">The <see cref="T:System.Object"/> to compare with this instance.</param>
+            <returns>
+                <c>true</c> if the specified <see cref="T:System.Object"/> is equal to this instance; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="T:Ninject.Syntax.IResolutionRoot">
+            <summary>
+            Provides a path to resolve instances.
+            </summary>
+        </member>
+        <member name="M:Ninject.Syntax.IResolutionRoot.Inject(System.Object,Ninject.Parameters.IParameter[])">
+            <summary>
+            Injects the specified existing instance, without managing its lifecycle.
+            </summary>
+            <param name="instance">The instance to inject.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+        </member>
+        <member name="M:Ninject.Syntax.IResolutionRoot.CanResolve(Ninject.Activation.IRequest)">
+            <summary>
+            Determines whether the specified request can be resolved.
+            </summary>
+            <param name="request">The request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IResolutionRoot.CanResolve(Ninject.Activation.IRequest,System.Boolean)">
+            <summary>
+            Determines whether the specified request can be resolved.
+            </summary>
+            <param name="request">The request.</param>
+            <param name="ignoreImplicitBindings">if set to <c>true</c> implicit bindings are ignored.</param>
+            <returns>
+                <c>True</c> if the request can be resolved; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:Ninject.Syntax.IResolutionRoot.Resolve(Ninject.Activation.IRequest)">
+            <summary>
+            Resolves instances for the specified request. The instances are not actually resolved
+            until a consumer iterates over the enumerator.
+            </summary>
+            <param name="request">The request to resolve.</param>
+            <returns>An enumerator of instances that match the request.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IResolutionRoot.CreateRequest(System.Type,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},System.Collections.Generic.IEnumerable{Ninject.Parameters.IParameter},System.Boolean,System.Boolean)">
+            <summary>
+            Creates a request for the specified service.
+            </summary>
+            <param name="service">The service that is being requested.</param>
+            <param name="constraint">The constraint to apply to the bindings to determine if they match the request.</param>
+            <param name="parameters">The parameters to pass to the resolution.</param>
+            <param name="isOptional"><c>True</c> if the request is optional; otherwise, <c>false</c>.</param>
+            <param name="isUnique"><c>True</c> if the request should return a unique result; otherwise, <c>false</c>.</param>
+            <returns>The created request.</returns>
+        </member>
+        <member name="M:Ninject.Syntax.IResolutionRoot.Release(System.Object)">
+            <summary>
+            Deactivates and releases the specified instance if it is currently managed by Ninject.
+            </summary>
+            <param name="instance">The instance to release.</param>
+            <returns><see langword="True"/> if the instance was found and released; otherwise <see langword="false"/>.</returns>
+        </member>
+        <member name="T:Ninject.ModuleLoadExtensions">
+            <summary>
+            Extension methods that enhance module loading.
+            </summary>
+        </member>
+        <member name="M:Ninject.ModuleLoadExtensions.Load``1(Ninject.IKernel)">
+            <summary>
+            Creates a new instance of the module and loads it into the kernel.
+            </summary>
+            <typeparam name="TModule">The type of the module.</typeparam>
+            <param name="kernel">The kernel.</param>
+        </member>
+        <member name="M:Ninject.ModuleLoadExtensions.Load(Ninject.IKernel,Ninject.Modules.INinjectModule[])">
+            <summary>
+            Loads the module(s) into the kernel.
+            </summary>
+            <param name="kernel">The kernel.</param>
+            <param name="modules">The modules to load.</param>
+        </member>
+        <member name="M:Ninject.ModuleLoadExtensions.Load(Ninject.IKernel,System.String[])">
+            <summary>
+            Loads modules from the files that match the specified pattern(s).
+            </summary>
+            <param name="kernel">The kernel.</param>
+            <param name="filePatterns">The file patterns (i.e. "*.dll", "modules/*.rb") to match.</param>
+        </member>
+        <member name="M:Ninject.ModuleLoadExtensions.Load(Ninject.IKernel,System.Reflection.Assembly[])">
+            <summary>
+            Loads modules defined in the specified assemblies.
+            </summary>
+            <param name="kernel">The kernel.</param>
+            <param name="assemblies">The assemblies to search.</param>
+        </member>
+        <member name="T:Ninject.ResolutionExtensions">
+            <summary>
+            Extensions that enhance resolution of services.
+            </summary>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.Get``1(Ninject.Syntax.IResolutionRoot,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.Get``1(Ninject.Syntax.IResolutionRoot,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service by using the first binding with the specified name.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.Get``1(Ninject.Syntax.IResolutionRoot,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service by using the first binding that matches the specified constraint.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="constraint">The constraint to apply to the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGet``1(Ninject.Syntax.IResolutionRoot,Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGet``1(Ninject.Syntax.IResolutionRoot,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service by using the first binding with the specified name.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGet``1(Ninject.Syntax.IResolutionRoot,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service by using the first binding that matches the specified constraint.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="constraint">The constraint to apply to the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGetAndThrowOnInvalidBinding``1(Ninject.Syntax.IResolutionRoot,Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGetAndThrowOnInvalidBinding``1(Ninject.Syntax.IResolutionRoot,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service by using the first binding with the specified name.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGetAndThrowOnInvalidBinding``1(Ninject.Syntax.IResolutionRoot,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service by using the first binding that matches the specified constraint.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="constraint">The constraint to apply to the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.GetAll``1(Ninject.Syntax.IResolutionRoot,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets all available instances of the specified service.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>A series of instances of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.GetAll``1(Ninject.Syntax.IResolutionRoot,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets all instances of the specified service using bindings registered with the specified name.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>A series of instances of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.GetAll``1(Ninject.Syntax.IResolutionRoot,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets all instances of the specified service by using the bindings that match the specified constraint.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="constraint">The constraint to apply to the bindings.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>A series of instances of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.Get(Ninject.Syntax.IResolutionRoot,System.Type,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.Get(Ninject.Syntax.IResolutionRoot,System.Type,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service by using the first binding with the specified name.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.Get(Ninject.Syntax.IResolutionRoot,System.Type,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service by using the first binding that matches the specified constraint.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="constraint">The constraint to apply to the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGet(Ninject.Syntax.IResolutionRoot,System.Type,Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGet(Ninject.Syntax.IResolutionRoot,System.Type,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service by using the first binding with the specified name.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.TryGet(Ninject.Syntax.IResolutionRoot,System.Type,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Tries to get an instance of the specified service by using the first binding that matches the specified constraint.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="constraint">The constraint to apply to the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>An instance of the service, or <see langword="null"/> if no implementation was available.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.GetAll(Ninject.Syntax.IResolutionRoot,System.Type,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets all available instances of the specified service.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>A series of instances of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.GetAll(Ninject.Syntax.IResolutionRoot,System.Type,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets all instances of the specified service using bindings registered with the specified name.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>A series of instances of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.GetAll(Ninject.Syntax.IResolutionRoot,System.Type,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets all instances of the specified service by using the bindings that match the specified constraint.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="constraint">The constraint to apply to the bindings.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns>A series of instances of the service.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.CanResolve``1(Ninject.Syntax.IResolutionRoot,Ninject.Parameters.IParameter[])">
+            <summary>
+            Evaluates if an instance of the specified service can be resolved.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.CanResolve``1(Ninject.Syntax.IResolutionRoot,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Evaluates if  an instance of the specified service by using the first binding with the specified name can be resolved.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.CanResolve``1(Ninject.Syntax.IResolutionRoot,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Evaluates if  an instance of the specified service by using the first binding that matches the specified constraint can be resolved.
+            </summary>
+            <typeparam name="T">The service to resolve.</typeparam>
+            <param name="root">The resolution root.</param>
+            <param name="constraint">The constraint to apply to the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.CanResolve(Ninject.Syntax.IResolutionRoot,System.Type,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.CanResolve(Ninject.Syntax.IResolutionRoot,System.Type,System.String,Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service by using the first binding with the specified name.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="name">The name of the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+        <member name="M:Ninject.ResolutionExtensions.CanResolve(Ninject.Syntax.IResolutionRoot,System.Type,System.Func{Ninject.Planning.Bindings.IBindingMetadata,System.Boolean},Ninject.Parameters.IParameter[])">
+            <summary>
+            Gets an instance of the specified service by using the first binding that matches the specified constraint.
+            </summary>
+            <param name="root">The resolution root.</param>
+            <param name="service">The service to resolve.</param>
+            <param name="constraint">The constraint to apply to the binding.</param>
+            <param name="parameters">The parameters to pass to the request.</param>
+            <returns><c>True</c> if the request can be resolved; otherwise, <c>false</c>.</returns>
+        </member>
+    </members>
+</doc>
Added +0 -0
diff --git a/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/Ninject.3.3.4.nupkg b/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/Ninject.3.3.4.nupkg
new file mode 100644
index 0000000..1266ced
Binary files /dev/null and b/minisqlquery-master/src/Contrib/packages/Ninject.3.3.4/Ninject.3.3.4.nupkg differ
Added +0 -0
diff --git a/minisqlquery-master/src/Contrib/packages/NVelocity.1.0.3/lib/NVelocity.dll b/minisqlquery-master/src/Contrib/packages/NVelocity.1.0.3/lib/NVelocity.dll
new file mode 100644
index 0000000..51683db
Binary files /dev/null and b/minisqlquery-master/src/Contrib/packages/NVelocity.1.0.3/lib/NVelocity.dll differ
Added +7323 -0
diff --git a/minisqlquery-master/src/Contrib/packages/NVelocity.1.0.3/lib/NVelocity.xml b/minisqlquery-master/src/Contrib/packages/NVelocity.1.0.3/lib/NVelocity.xml
new file mode 100644
index 0000000..596e3f4
--- /dev/null
+++ b/minisqlquery-master/src/Contrib/packages/NVelocity.1.0.3/lib/NVelocity.xml
@@ -0,0 +1,7323 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>NVelocity</name>
+    </assembly>
+    <members>
+        <member name="T:NVelocity.App.Events.EventCartridge">
+            <summary>
+            'Package' of event handlers...
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.Events.EventCartridge.ReferenceInsert(System.Collections.Stack,System.String,System.Object)">
+            <summary>
+            Called during Velocity merge before a reference value will
+            be inserted into the output stream.
+            </summary>
+            <param name="referenceStack">the stack of objects used to reach this reference</param>
+            <param name="reference">reference from template about to be inserted</param>
+            <param name="value"> value about to be inserted (after toString() )</param>
+            <returns>
+            Object on which toString() should be called for output.
+            </returns>
+        </member>
+        <member name="M:NVelocity.App.Events.EventCartridge.ShouldLogOnNullSet(System.String,System.String)">
+            <summary>
+            Called during Velocity merge to determine if when
+            a #set() results in a null assignment, a warning
+            is logged.
+            </summary>
+            <returns>true if to be logged, false otherwise</returns>
+        </member>
+        <member name="M:NVelocity.App.Events.EventCartridge.HandleMethodException(System.Type,System.String,System.Exception)">
+            <summary>
+            Called during Velocity merge if a reference is null
+            </summary>
+            <param name="type">Class that is causing the exception</param>
+            <param name="method">method called that causes the exception</param>
+            <param name="e">Exception thrown by the method</param>
+            <returns>Object to return as method result</returns>
+            <exception cref="T:System.Exception">exception to be wrapped and propagated to app</exception>
+        </member>
+        <member name="M:NVelocity.App.Events.EventCartridge.AttachToContext(NVelocity.Context.IContext)">
+            <summary>
+            Attached the EventCartridge to the context
+            </summary>
+            <param name="context">context to attach to</param>
+            <returns>true if successful, false otherwise</returns>
+        </member>
+        <member name="T:NVelocity.App.Events.EventHandler">
+             <summary>  Base interface for all event handlers
+             *
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version> $Id: EventHandler.cs,v 1.3 2003/10/27 13:54:07 corts Exp $
+            
+             </version>
+        </member>
+        <member name="T:NVelocity.App.Events.NullSetEventHandler">
+            <summary>
+            Lets an app approve / veto writing a log message when RHS of #set() is null.
+            </summary>
+        </member>
+        <member name="P:NVelocity.App.Events.NullSetEventArgs.LHS">
+            <summary>
+            Reference literal of left-hand-side of set statement
+            </summary>
+        </member>
+        <member name="P:NVelocity.App.Events.NullSetEventArgs.RHS">
+            <summary>
+            reference literal of right-hand-side of set statement
+            </summary>
+        </member>
+        <member name="T:NVelocity.App.Tools.VelocityFormatter">
+            <summary>
+            Formatting tool for inserting into the Velocity WebContext.  Can
+            format dates or lists of objects.
+            
+            <para>Here's an example of some uses:
+            <code><pre>
+            $formatter.formatShortDate($object.Date)
+            $formatter.formatLongDate($db.getRecord(232).getDate())
+            $formatter.formatArray($array)
+            $formatter.limitLen(30, $object.Description)
+            </pre></code>
+            </para>
+            </summary>
+            <author><a href="mailto:sean@somacity.com">Sean Legassick</a></author>
+            <author><a href="mailto:dlr@collab.net">Daniel Rall</a></author>
+            <version>$Id: VelocityFormatter.cs,v 1.5 2003/11/05 04:15:02 corts Exp $</version>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.#ctor(NVelocity.Context.IContext)">
+            <summary>
+            Constructor needs a backPointer to the context.
+            </summary>
+            <param name="context">A Context.</param>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.FormatShortDate(System.DateTime)">
+            <summary>
+            Formats a date in 'short' style.
+            </summary>
+            <param name="date">A Date.</param>
+            <returns>A String.</returns>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.FormatLongDate(System.DateTime)">
+            <summary>
+            Formats a date in 'long' style.
+            </summary>
+            <param name="date">A Date.</param>
+            <returns>A String.</returns>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.FormatShortDateTime(System.DateTime)">
+            <summary>
+            Formats a date/time in 'short' style.
+            </summary>
+            <param name="date">A Date.</param>
+            <returns>A String.</returns>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.FormatLongDateTime(System.DateTime)">
+            <summary>
+            Formats a date/time in 'long' style.
+            </summary>
+            <param name="date">A Date.</param>
+            <returns>A String.</returns>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.FormatArray(System.Object)">
+            <summary>
+            Formats an array into the form "A, B and C".
+            </summary>
+            <param name="array">An Object.</param>
+            <returns>A String.</returns>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.FormatArray(System.Object,System.String)">
+            <summary> 
+            Formats an array into the form
+            "A&lt;delim&gt;B&lt;delim&gt;C".
+            </summary>
+            <param name="array">An Object.</param>
+            <param name="delim">A String.</param>
+            <returns>A String.</returns>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.FormatArray(System.Object,System.String,System.String)">
+            <summary>
+            Formats an array into the form
+            "A&lt;delim&gt;B&lt;finalDelimiter&gt;C".
+            </summary>
+            <param name="array">An Object.</param>
+            <param name="delim">A String.</param>
+            <param name="finalDelimiter">A String.</param>
+            <returns>A String.</returns>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.FormatVector(System.Collections.IList)">
+            <summary>
+            Formats a list into the form "A, B and C".
+            </summary>
+            <param name="list">A list.</param>
+            <returns>A String.</returns>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.FormatVector(System.Collections.IList,System.String)">
+            <summary>
+            Formats a list into the form "A&lt;delim&gt;B&lt;delim&gt;C".
+            </summary>
+            <param name="list">A list.</param>
+            <param name="delim">A String.</param>
+            <returns>A String.</returns>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.FormatVector(System.Collections.IList,System.String,System.String)">
+            <summary>
+            Formats a list into the form
+            "Adelim&gt;B&lt;finalDelimiter&gt;C".
+            </summary>
+            <param name="list">A list.</param>
+            <param name="delim">A String.</param>
+            <param name="finalDelimiter">A String.</param>
+            <returns>A String.</returns>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.LimitLen(System.Int32,System.String)">
+            <summary>
+            Limits 'string' to 'maximumLength' characters.  If the string gets
+            curtailed, "..." is appended to it.
+            </summary>
+            <param name="maximumLength">An int with the maximum length.</param>
+            <param name="value">A String.</param>
+            <returns>A String.</returns>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.LimitLen(System.Int32,System.String,System.String)">
+            <summary>
+            Limits 'string' to 'maximumLength' character.  If the string gets
+            curtailed, 'suffix' is appended to it.
+            </summary>
+            <param name="maximumLength">An int with the maximum length.</param>
+            <param name="value">A String.</param>
+            <param name="suffix">A String.</param>
+            <returns>A String.</returns>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.MakeAlternator(System.String,System.String,System.String)">
+            <summary>
+            Makes an alternator object that alternates between two values.
+            
+            <para>Example usage in a Velocity template:
+            
+            <code>
+            &lt;table&gt;
+            $formatter.makeAlternator("rowColor", "#c0c0c0", "#e0e0e0")
+            #foreach $item in $items
+            &lt;tr&gt;&lt;td bgcolor="$rowColor"&gt;$item.Name&lt;/td&gt;&lt;/tr&gt;
+            $rowColor.alternate()
+            #end
+            &lt;/table&gt;
+            </code>
+            </para>
+            </summary>
+            <param name="name">The name for the alternator int the context.</param>
+            <param name="alt1">The first alternate.</param>
+            <param name="alt2">The second alternate.</param>
+            <returns>The newly created instance.</returns>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.MakeAlternator(System.String,System.String,System.String,System.String)">
+            <summary>
+            Makes an alternator object that alternates between three values.
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.MakeAlternator(System.String,System.String,System.String,System.String,System.String)">
+            <summary>
+            Makes an alternator object that alternates between four values.
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.MakeAutoAlternator(System.String,System.String,System.String)">
+            <summary>
+            Makes an alternator object that alternates between two values
+            automatically.
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.IsNull(System.Object,System.Object)">
+            <summary>
+            Returns a default value if the object passed is null.
+            </summary>
+        </member>
+        <member name="T:NVelocity.App.Tools.VelocityFormatter.VelocityAlternator">
+            <summary>
+            Class that returns alternating values in a template.  It stores
+            a list of alternate Strings, whenever alternate() is called it
+            switches to the next in the list.  The current alternate is
+            retrieved through toString() - i.e. just by referencing the
+            object in a Velocity template.  For an example of usage see the
+            makeAlternator() method below.
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.VelocityAlternator.#ctor(System.String[])">
+            <summary>
+            Constructor takes an array of Strings.
+            </summary>
+            <param name="alternates">A String[].
+            </param>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.VelocityAlternator.Alternate">
+            <summary>
+            Alternates to the next in the list.
+            </summary>
+            <returns>The current alternate in the sequence.</returns>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.VelocityAlternator.ToString">
+            <summary>
+            Returns the current alternate.
+            </summary>
+            <returns>A String.</returns>
+        </member>
+        <member name="T:NVelocity.App.Tools.VelocityFormatter.VelocityAutoAlternator">
+            <summary>
+            As VelocityAlternator, but calls <code>alternate()</code>
+            automatically on rendering in a template.
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.VelocityAutoAlternator.#ctor(System.String[])">
+             <summary>
+             Constructor takes an array of Strings.
+             </summary>
+             <param name="alternates">A String[].
+            
+             </param>
+        </member>
+        <member name="M:NVelocity.App.Tools.VelocityFormatter.VelocityAutoAlternator.ToString">
+            <summary>
+            Returns the current alternate, and automatically alternates
+            to the next alternate in its sequence (triggered upon
+            rendering).
+            </summary>
+            <returns>The current alternate in the sequence.</returns>
+        </member>
+        <member name="T:NVelocity.App.FieldMethodizer">
+             <summary>
+             <para>This is a small utility class allow easy access to static fields in a class,
+             such as string constants.  Velocity will not introspect for class
+             fields (and won't in the future :), but writing setter/getter methods to do
+             this really is a pain,  so use this if you really have
+             to access fields.</para>
+            
+             <para>The idea it so enable access to the fields just like you would in Java.
+             For example, in Java, you would access a static field like
+             <blockquote><pre>
+             MyClass.STRING_CONSTANT
+             </pre></blockquote>
+             and that is the same thing we are trying to allow here.</para>
+            
+             <para>So to use in your Java code, do something like this :
+             <blockquote><pre>
+             context.put("runtime", new FieldMethodizer( "NVelocity.Runtime.Runtime" ));
+             </pre></blockquote>
+             and then in your template, you can access any of your static fields in this way :
+             <blockquote><pre>
+             $runtime.RUNTIME_LOG_WARN_STACKTRACE
+             </pre></blockquote></para>
+            
+             <para>Right now, this class only methodizes <code>public static</code> fields.  It seems
+             that anything else is too dangerous.  This class is for convenience accessing
+             'constants'.  If you have fields that aren't <code>static</code> it may be better
+             to handle them by explicitly placing them into the context.</para>
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version>$Id: FieldMethodizer.cs,v 1.3 2003/10/27 13:54:07 corts Exp $</version>
+        </member>
+        <member name="F:NVelocity.App.FieldMethodizer.fieldHash">
+            <summary>
+            Hold the field objects by field name
+            </summary>
+        </member>
+        <member name="F:NVelocity.App.FieldMethodizer.classHash">
+            <summary>
+            Hold the class objects by field name
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.FieldMethodizer.#ctor">
+            <summary>
+            Allow object to be initialized without any data. You would use
+            addObject() to add data later.
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.FieldMethodizer.#ctor(System.String)">
+            <summary>
+            Constructor that takes as it's arg the name of the class
+            to methodize.
+            </summary>
+            <param name="s">Name of class to methodize.</param>
+        </member>
+        <member name="M:NVelocity.App.FieldMethodizer.#ctor(System.Object)">
+            <summary>
+            Constructor that takes as it's arg a living
+            object to methodize.  Note that it will still
+            only methodized the public static fields of
+            the class.
+            </summary>
+            <param name="o">object to methodize.</param>
+        </member>
+        <member name="M:NVelocity.App.FieldMethodizer.AddObject(System.String)">
+            <summary>
+            Add the Name of the class to methodize
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.FieldMethodizer.AddObject(System.Object)">
+            <summary> Add an Object to methodize
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.FieldMethodizer.Get(System.String)">
+            <summary>
+            Accessor method to get the fields by name.
+            </summary>
+            <param name="fieldName">Name of static field to retrieve</param>
+            <returns>The value of the given field.</returns>
+        </member>
+        <member name="M:NVelocity.App.FieldMethodizer.Inspect(System.Type)">
+            <summary>  Method that retrieves all public static fields
+            in the class we are methodizing.
+            </summary>
+        </member>
+        <member name="T:NVelocity.App.Velocity">
+            <summary>
+            This class provides  services to the application
+            developer, such as :
+            <ul>
+            <li> Simple Velocity Runtime engine initialization methods.</li>
+            <li> Functions to apply the template engine to streams and strings</li>
+            to allow embedding and dynamic template generation.
+            <li> Methods to access Velocimacros directly.</li>
+            </ul>
+            <br/><br/>
+            While the most common way to use NVelocity is via templates, as
+            Velocity is a general-purpose template engine, there are other
+            uses that NVelocity is well suited for, such as processing dynamically
+            created templates, or processing content streams.
+            <br/><br/>
+            The methods herein were developed to allow easy access to the NVelocity
+            facilities without direct spelunking of the internals.  If there is
+            something you feel is necessary to add here, please, send a patch.
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.Velocity.Init">
+            <summary>
+            initialize the NVelocity runtime engine, using the default
+            properties of the NVelocity distribution
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.Velocity.Init(System.String)">
+            <summary>
+            initialize the Velocity runtime engine, using default properties
+            plus the properties in the properties file passed in as the arg
+            </summary>
+            <param name="propsFilename">
+            file containing properties to use to initialize
+            the Velocity runtime
+            </param>
+        </member>
+        <member name="M:NVelocity.App.Velocity.Init(Commons.Collections.ExtendedProperties)">
+            <summary>
+            initialize the Velocity runtime engine, using default properties
+            plus the properties in the passed in java.util.Properties object
+            </summary>
+            <param name="p">
+            Proprties object containing initialization properties
+            </param>
+        </member>
+        <member name="M:NVelocity.App.Velocity.SetProperty(System.String,System.Object)">
+            <summary>
+            Set a Velocity Runtime property.
+            </summary>
+            <param name="key">key</param>
+            <param name="value">value</param>
+        </member>
+        <member name="M:NVelocity.App.Velocity.AddProperty(System.String,System.Object)">
+            <summary>
+            Add a Velocity Runtime property.
+            </summary>
+            <param name="key">key</param>
+            <param name="value">value</param>
+        </member>
+        <member name="M:NVelocity.App.Velocity.ClearProperty(System.String)">
+            <summary>
+            Clear a NVelocity Runtime property.
+            </summary>
+            <param name="key">of property to clear</param>
+        </member>
+        <member name="M:NVelocity.App.Velocity.SetExtendedProperties(Commons.Collections.ExtendedProperties)">
+            <summary>
+            Set an entire configuration at once. This is
+            useful in cases where the parent application uses
+            the ExtendedProperties class and the velocity configuration
+            is a subset of the parent application's configuration.
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.Velocity.GetProperty(System.String)">
+            <summary>
+            Get a Velocity Runtime property.
+            </summary>
+            <param name="key">property to retrieve</param>
+            <returns>property value or null if the property not currently set</returns>
+        </member>
+        <member name="M:NVelocity.App.Velocity.Evaluate(NVelocity.Context.IContext,System.IO.TextWriter,System.String,System.String)">
+            <summary>
+            renders the input string using the context into the output writer.
+            To be used when a template is dynamically constructed, or want to use
+            Velocity as a token replacer.
+            </summary>
+            <param name="context">context to use in rendering input string</param>
+            <param name="writer"> Writer in which to render the output</param>
+            <param name="logTag"> string to be used as the template name for log messages in case of error</param>
+            <param name="inString">input string containing the VTL to be rendered</param>
+            <returns>true if successful, false otherwise.  If false, see Velocity runtime log</returns>
+        </member>
+        <member name="M:NVelocity.App.Velocity.Evaluate(NVelocity.Context.IContext,System.IO.TextWriter,System.String,System.IO.Stream)">
+            <summary>
+            Renders the input stream using the context into the output writer.
+            To be used when a template is dynamically constructed, or want to
+            use Velocity as a token replacer.
+            </summary>
+            <param name="context">context to use in rendering input string</param>
+            <param name="writer"> Writer in which to render the output</param>
+            <param name="logTag"> string to be used as the template name for log messages in case of error</param>
+            <param name="instream">input stream containing the VTL to be rendered</param>
+            <returns>true if successful, false otherwise.  If false, see Velocity runtime log</returns>
+        </member>
+        <member name="M:NVelocity.App.Velocity.Evaluate(NVelocity.Context.IContext,System.IO.TextWriter,System.String,System.IO.TextReader)">
+            <summary>
+            Renders the input reader using the context into the output writer.
+            To be used when a template is dynamically constructed, or want to
+            use Velocity as a token replacer.
+            </summary>
+            <param name="context">context to use in rendering input string</param>
+            <param name="writer"> Writer in which to render the output</param>
+            <param name="logTag"> string to be used as the template name for log messages in case of error</param>
+            <param name="reader">Reader containing the VTL to be rendered</param>
+            <returns>true if successful, false otherwise.  If false, see Velocity runtime log</returns>
+        </member>
+        <member name="M:NVelocity.App.Velocity.InvokeVelocimacro(System.String,System.String,System.String[],NVelocity.Context.IContext,System.IO.TextWriter)">
+            <summary>
+            Invokes a currently registered Velocimacro with the parameters provided
+            and places the rendered stream into the writer.
+            
+            Note : currently only accepts args to the VM if they are in the context.
+            </summary>
+            <param name="vmName">name of Velocimacro to call</param>
+            <param name="logTag">string to be used for template name in case of error</param>
+            <param name="parameters">args used to invoke Velocimacro. In context key format :
+            eg  "foo","bar" (rather than "$foo","$bar")
+            </param>
+            <param name="context">Context object containing data/objects used for rendering.</param>
+            <param name="writer"> Writer for output stream</param>
+            <returns>true if Velocimacro exists and successfully invoked, false otherwise.</returns>
+        </member>
+        <member name="M:NVelocity.App.Velocity.MergeTemplate(System.String,NVelocity.Context.IContext,System.IO.TextWriter)">
+            <summary>
+            merges a template and puts the rendered stream into the writer
+            </summary>
+            <param name="templateName">name of template to be used in merge</param>
+            <param name="context"> filled context to be used in merge</param>
+            <param name="writer"> writer to write template into</param>
+            <returns>true if successful, false otherwise.  Errors logged to velocity log.</returns>
+        </member>
+        <member name="M:NVelocity.App.Velocity.MergeTemplate(System.String,System.String,NVelocity.Context.IContext,System.IO.TextWriter)">
+            <summary>
+            merges a template and puts the rendered stream into the writer
+            </summary>
+            <param name="templateName">name of template to be used in merge</param>
+            <param name="encoding">encoding used in template</param>
+            <param name="context"> filled context to be used in merge</param>
+            <param name="writer"> writer to write template into</param>
+            <returns>true if successful, false otherwise.  Errors logged to velocity log</returns>
+        </member>
+        <member name="M:NVelocity.App.Velocity.GetTemplate(System.String)">
+            <summary>
+            Returns a <code>Template</code> from the Velocity
+            resource management system.
+            </summary>
+            <param name="name">The file name of the desired template.
+            </param>
+            <returns>    The template.
+            @throws ResourceNotFoundException if template not found
+            from any available source.
+            @throws ParseErrorException if template cannot be parsed due
+            to syntax (or other) error.
+            @throws Exception if an error occurs in template initialization
+            </returns>
+        </member>
+        <member name="M:NVelocity.App.Velocity.GetTemplate(System.String,System.String)">
+            <summary>
+            Returns a <code>Template</code> from the Velocity
+            resource management system.
+            </summary>
+            <param name="name">The file name of the desired template.</param>
+            <param name="encoding">The character encoding to use for the template.</param>
+            <returns>The <see cref="T:NVelocity.Template"/> instance.</returns>
+            <exception cref="T:NVelocity.Exception.ResourceNotFoundException">
+            If template is not found from any available source.
+            </exception>
+            <exception cref="T:NVelocity.Exception.ParseErrorException">
+            If template cannot be parsed due to syntax (or other) error.
+            </exception>
+            <exception cref="T:System.Exception">
+            If an error occurs in template initialization.
+            </exception>
+        </member>
+        <member name="M:NVelocity.App.Velocity.ResourceExists(System.String)">
+            <summary>
+            <p>Determines whether a resource is accessible via the
+            currently configured resource loaders. <see cref="T:NVelocity.Runtime.Resource.Resource"/>
+            is the generic description of templates, static content, etc.</p>
+            
+            <p>Note that the current implementation will <b>not</b> change
+            the state of the system in any real way - so this cannot be
+            used to pre-load the resource cache, as the previous
+            implementation did as a side-effect.</p>
+            </summary>
+            <param name="templateName"> name of the template to search for</param>
+            <returns>Whether the resource was located.</returns>
+        </member>
+        <member name="M:NVelocity.App.Velocity.Warn(System.Object)">
+            <summary>
+            Log a warning message.
+            </summary>
+            <param name="message">message to log
+            </param>
+        </member>
+        <member name="M:NVelocity.App.Velocity.Info(System.Object)">
+            <summary>
+            Log an info message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.App.Velocity.Error(System.Object)">
+            <summary>
+            Log an error message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.App.Velocity.Debug(System.Object)">
+            <summary>
+            Log a debug message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.App.Velocity.SetApplicationAttribute(System.Object,System.Object)">
+            <summary>
+            <p>
+            Set the an ApplicationAttribute, which is an Object
+            set by the application which is accessible from
+            any component of the system that gets a RuntimeServices.
+            This allows communication between the application
+            environment and custom pluggable components of the
+            Velocity engine, such as loaders and loggers.
+            </p>
+            <p>
+            Note that there is no enforcement or rules for the key
+            used - it is up to the application developer.  However, to
+            help make the intermixing of components possible, using
+            the target Class name (e.g.  com.foo.bar ) as the key
+            might help avoid collision.
+            </p>
+            </summary>
+            <param name="key">object 'name' under which the object is stored
+            </param>
+            <param name="value">object to store under this key
+            </param>
+        </member>
+        <member name="M:NVelocity.App.Velocity.TemplateExists(System.String)">
+            <summary>
+            <see>#ResourceExists(String)</see>
+            </summary>
+        </member>
+        <member name="T:NVelocity.App.VelocityEngine">
+            <summary>
+            This class provides a separate new-able instance of the
+            Velocity template engine.  The alternative model for use
+            is using the Velocity class which employs the singleton
+            model.
+            
+            Please ensure that you call one of the init() variants.
+            This is critical for proper behavior.
+            
+            Coming soon : Velocity will call
+            the parameter-less init() at the first use of this class
+            if the init() wasn't explicitly called.  While this will
+            ensure that Velocity functions, it almost certainly won't
+            function in the way you intend, so please make sure to
+            call init().
+            </summary>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a></author>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.#ctor">
+            <summary>
+            Init-less CTOR
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.#ctor(System.String)">
+            <summary>
+            CTOR that invokes an init(String), initializing
+            the engine using the properties file specified
+            </summary>
+            <exception cref="T:System.Exception"></exception>
+            <param name="propsFilename">name of properties file to init with</param>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.#ctor(Commons.Collections.ExtendedProperties)">
+            <summary>
+            CTOR that invokes an init(String), initializing
+            the engine using the Properties specified
+            </summary>
+            <param name="p">name of properties to init with</param>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.SetExtendedProperties(Commons.Collections.ExtendedProperties)">
+            <summary>
+            Set an entire configuration at once. This is
+            useful in cases where the parent application uses
+            the ExtendedProperties class and the velocity configuration
+            is a subset of the parent application's configuration.
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.Init">
+            <summary>
+            initialize the Velocity runtime engine, using the default
+            properties of the Velocity distribution
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.Init(System.String)">
+            <summary>
+            initialize the Velocity runtime engine, using default properties
+            plus the properties in the properties file passed in as the arg
+            </summary>
+            <param name="propsFilename">file containing properties to use to initialize
+            the Velocity runtime</param>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.Init(Commons.Collections.ExtendedProperties)">
+            <summary>
+            initialize the Velocity runtime engine, using default properties
+            plus the properties in the passed in java.util.Properties object
+            </summary>
+            <param name="p"> Properties object containing initialization properties</param>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.SetProperty(System.String,System.Object)">
+            <summary>
+            Set a Velocity Runtime property.
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.AddProperty(System.String,System.Object)">
+            <summary>
+            Add a Velocity Runtime property.
+            </summary>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.ClearProperty(System.String)">
+            <summary>
+            Clear a Velocity Runtime property.
+            </summary>
+            <param name="key">key of property to clear</param>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.GetProperty(System.String)">
+            <summary>
+            Get a Velocity Runtime property.
+            </summary>
+            <param name="key">property to retrieve</param>
+            <returns>
+            property value or null if the property not currently set
+            </returns>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.Evaluate(NVelocity.Context.IContext,System.IO.TextWriter,System.String,System.String)">
+            <summary>
+            renders the input string using the context into the output writer.
+            To be used when a template is dynamically constructed, or want to use
+            Velocity as a token replacer.
+            </summary>
+            <param name="context">context to use in rendering input string</param>
+            <param name="writer"> Writer in which to render the output</param>
+            <param name="logTag"> string to be used as the template name for log messages in case of error</param>
+            <param name="inString">input string containing the VTL to be rendered</param>
+            <returns>true if successful, false otherwise.  If false, see Velocity runtime log</returns>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.Evaluate(NVelocity.Context.IContext,System.IO.TextWriter,System.String,System.IO.Stream)">
+            <summary>
+            Renders the input stream using the context into the output writer.
+            To be used when a template is dynamically constructed, or want to
+            use Velocity as a token replacer.
+            </summary>
+            <param name="context">context to use in rendering input string</param>
+            <param name="writer"> Writer in which to render the output</param>
+            <param name="logTag"> string to be used as the template name for log messages in case of error</param>
+            <param name="instream">input stream containing the VTL to be rendered</param>
+            <returns>true if successful, false otherwise.  If false, see Velocity runtime log</returns>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.Evaluate(NVelocity.Context.IContext,System.IO.TextWriter,System.String,System.IO.TextReader)">
+            <summary>
+            Renders the input reader using the context into the output writer.
+            To be used when a template is dynamically constructed, or want to
+            use Velocity as a token replacer.
+            </summary>
+            <param name="context">context to use in rendering input string</param>
+            <param name="writer"> Writer in which to render the output</param>
+            <param name="logTag"> string to be used as the template name for log messages in case of error</param>
+            <param name="reader">Reader containing the VTL to be rendered</param>
+            <returns>true if successful, false otherwise.  If false, see Velocity runtime log</returns>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.InvokeVelocimacro(System.String,System.String,System.String[],NVelocity.Context.IContext,System.IO.TextWriter)">
+            <summary>
+            Invokes a currently registered Velocimacro with the parameters provided
+            and places the rendered stream into the writer.
+            Note : currently only accepts args to the VM if they are in the context.
+            </summary>
+            <param name="vmName">name of Velocimacro to call</param>
+            <param name="logTag">string to be used for template name in case of error</param>
+            <param name="parameters">args used to invoke Velocimacro. In context key format :
+            eg  "foo","bar" (rather than "$foo","$bar")
+            </param>
+            <param name="context">Context object containing data/objects used for rendering.</param>
+            <param name="writer"> Writer for output stream</param>
+            <returns>true if Velocimacro exists and successfully invoked, false otherwise.</returns>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.MergeTemplate(System.String,NVelocity.Context.IContext,System.IO.TextWriter)">
+            <summary>
+            merges a template and puts the rendered stream into the writer
+            </summary>
+            <param name="templateName">name of template to be used in merge</param>
+            <param name="context"> filled context to be used in merge</param>
+            <param name="writer"> writer to write template into</param>
+            <returns>true if successful, false otherwise.  Errors logged to velocity log.</returns>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.MergeTemplate(System.String,System.String,NVelocity.Context.IContext,System.IO.TextWriter)">
+            <summary>
+            merges a template and puts the rendered stream into the writer
+            </summary>
+            <param name="templateName">name of template to be used in merge</param>
+            <param name="encoding">encoding used in template</param>
+            <param name="context"> filled context to be used in merge</param>
+            <param name="writer"> writer to write template into</param>
+            <returns>true if successful, false otherwise.  Errors logged to velocity log</returns>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.GetTemplate(System.String)">
+            <summary>
+            Returns a <code>Template</code> from the Velocity
+            resource management system.
+            </summary>
+            <param name="name">The file name of the desired template.</param>
+            <returns>The template.</returns>
+            <exception cref="T:NVelocity.Exception.ResourceNotFoundException">
+            if template not found from any available source.
+            </exception>
+            <exception cref="T:NVelocity.Exception.ParseErrorException">
+            if template cannot be parsed due
+            to syntax (or other) error.
+            </exception>
+            <exception cref="T:System.Exception">
+            if an error occurs in template initialization
+            </exception>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.GetTemplate(System.String,System.String)">
+            <summary>
+            Returns a <code>Template</code> from the Velocity
+            resource management system.
+            </summary>
+            <param name="name">The file name of the desired template.</param>
+            <param name="encoding">The character encoding to use for the template.</param>
+            <returns>The template.</returns>
+            <exception cref="T:NVelocity.Exception.ResourceNotFoundException">
+            if template not found from any available source.
+            </exception>
+            <exception cref="T:NVelocity.Exception.ParseErrorException">
+            if template cannot be parsed due
+            to syntax (or other) error.
+            </exception>
+            <exception cref="T:System.Exception">
+            if an error occurs in template initialization
+            </exception>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.TemplateExists(System.String)">
+            <summary>
+            Determines if a template is accessible via the currently
+            configured resource loaders.
+            <br/><br/>
+            Note that the current implementation will <b>not</b>
+            change the state of the system in any real way - so this
+            cannot be used to pre-load the resource cache, as the
+            previous implementation did as a side-effect.
+            <br/><br/>
+            The previous implementation exhibited extreme laziness and
+            sloth, and the author has been flogged.
+            </summary>
+            <param name="templateName"> name of the template to search for
+            </param>
+            <returns>true if found, false otherwise
+            </returns>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.Warn(System.Object)">
+            <summary>
+            Log a warning message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.Info(System.Object)">
+            
+             <summary>
+             Log an info message.
+             </summary>
+             <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.Error(System.Object)">
+            <summary>
+            Log an error message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.Debug(System.Object)">
+            <summary>
+            Log a debug message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.App.VelocityEngine.SetApplicationAttribute(System.Object,System.Object)">
+            <summary>
+            <p>
+            Set the an ApplicationAttribute, which is an Object
+            set by the application which is accessible from
+            any component of the system that gets a RuntimeServices.
+            This allows communication between the application
+            environment and custom pluggable components of the
+            Velocity engine, such as loaders and loggers.
+            </p>
+            <p>
+            Note that there is no enforcement or rules for the key
+            used - it is up to the application developer.  However, to
+            help make the intermixing of components possible, using
+            the target Class name (e.g.  com.foo.bar ) as the key
+            might help avoid collision.
+            </p>
+            </summary>
+            <param name="key">object 'name' under which the object is stored</param>
+            <param name="value">object to store under this key</param>
+        </member>
+        <member name="T:Commons.Collections.CollectionsUtil">
+            <summary>
+            Static utility methods for collections
+            </summary>
+        </member>
+        <member name="T:Commons.Collections.ExtendedProperties">
+             <summary>
+             This class extends normal Java properties by adding the possibility
+             to use the same key many times concatenating the value strings
+             instead of overwriting them.
+            
+             <para>The Extended Properties syntax is explained here:
+            
+             <ul>
+             <li>
+             Each property has the syntax <code>key = value</code>
+             </li>
+             <li>
+             The <i>key</i> may use any character but the equal sign '='.
+             </li>
+             <li>
+             <i>value</i> may be separated on different lines if a backslash
+             is placed at the end of the line that continues below.
+             </li>
+             <li>
+             If <i>value</i> is a list of strings, each token is separated
+             by a comma ','.
+             </li>
+             <li>
+             Commas in each token are escaped placing a backslash right before
+             the comma.
+             </li>
+             <li>
+             If a <i>key</i> is used more than once, the values are appended
+             like if they were on the same line separated with commas.
+             </li>
+             <li>
+             Blank lines and lines starting with character '#' are skipped.
+             </li>
+             <li>
+             If a property is named "include" (or whatever is defined by
+             setInclude() and getInclude() and the value of that property is
+             the full path to a file on disk, that file will be included into
+             the ConfigurationsRepository. You can also pull in files relative
+             to the parent configuration file. So if you have something
+             like the following:
+            
+             include = additional.properties
+            
+             Then "additional.properties" is expected to be in the same
+             directory as the parent configuration file.
+            
+             Duplicate name values will be replaced, so be careful.
+            
+             </li>
+             </ul>
+             </para>
+             <para>Here is an example of a valid extended properties file:
+             </para>
+             <para><pre>
+             # lines starting with # are comments
+            
+             # This is the simplest property
+             key = value
+            
+             # A long property may be separated on multiple lines
+             longvalue = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \
+             aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+            
+             # This is a property with many tokens
+             tokens_on_a_line = first token, second token
+            
+             # This sequence generates exactly the same result
+             tokens_on_multiple_lines = first token
+             tokens_on_multiple_lines = second token
+            
+             # commas may be escaped in tokens
+             commas.excaped = Hi\, what'up?
+             </pre>
+             </para>
+             <para><b>NOTE</b>: this class has <b>not</b> been written for
+             performance nor low memory usage.  In fact, it's way slower than it
+             could be and generates too much memory garbage.  But since
+             performance is not an issue during intialization (and there is not
+             much time to improve it), I wrote it this way.  If you don't like
+             it, go ahead and tune it up!</para>
+             </summary>
+        </member>
+        <member name="F:Commons.Collections.ExtendedProperties.defaults">
+            <summary> Default configurations repository.
+            </summary>
+        </member>
+        <member name="F:Commons.Collections.ExtendedProperties.file">
+            <summary>
+            The file connected to this repository (holding comments and such).
+            </summary>
+        </member>
+        <member name="F:Commons.Collections.ExtendedProperties.basePath">
+            <summary>
+            Base path of the configuration file used to create
+            this ExtendedProperties object.
+            </summary>
+        </member>
+        <member name="F:Commons.Collections.ExtendedProperties.fileSeparator">
+            <summary>
+            File separator.
+            </summary>
+        </member>
+        <member name="F:Commons.Collections.ExtendedProperties.isInitialized">
+            <summary>
+            Has this configuration been initialized.
+            </summary>
+        </member>
+        <member name="F:Commons.Collections.ExtendedProperties.include">
+            <summary>
+            This is the name of the property that can point to other
+            properties file for including other properties files.
+            </summary>
+        </member>
+        <member name="F:Commons.Collections.ExtendedProperties.keysAsListed">
+            <summary>
+            These are the keys in the order they listed
+            in the configuration file. This is useful when
+            you wish to perform operations with configuration
+            information in a particular order.
+            </summary>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.#ctor">
+            <summary>
+            Creates an empty extended properties object.
+            </summary>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.#ctor(System.String)">
+            <summary>
+            Creates and loads the extended properties from the specified
+            file.
+            </summary>
+            <param name="file">A String.</param>
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.#ctor(System.String,System.String)">
+            <summary>
+            Creates and loads the extended properties from the specified
+            file.
+            </summary>
+            <param name="file">A String.</param>
+            <param name="defaultFile">File to load defaults from.</param>
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.IsInitialized">
+            <summary>
+            Indicate to client code whether property
+            resources have been initialized or not.
+            </summary>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.Load(System.IO.Stream,System.String)">
+            <summary>
+            Load the properties from the given input stream
+            and using the specified encoding.
+            </summary>
+            <param name="input">An InputStream.
+            </param>
+            <param name="encoding">An encoding.
+            </param>
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetProperty(System.String)">
+             <summary>  Gets a property from the configuration.
+             *
+             </summary>
+             <param name="key">property to retrieve
+             </param>
+             <returns>value as object. Will return user value if exists,
+             if not then default value if exists, otherwise null
+            
+             </returns>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.AddProperty(System.String,System.Object)">
+            <summary> Add a property to the configuration. If it already
+            exists then the value stated here will be added
+            to the configuration entry. For example, if
+            *
+            resource.loader = file
+            *
+            is already present in the configuration and you
+            *
+            addProperty("resource.loader", "classpath")
+            *
+            Then you will end up with a Vector like the
+            following:
+            *
+            ["file", "classpath"]
+            *
+            </summary>
+            <param name="key"></param>
+            <param name="token"></param>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.AddPropertyDirect(System.String,System.Object)">
+             <summary>   Adds a key/value pair to the map.  This routine does
+             no magic morphing.  It ensures the keyList is maintained
+             *
+             </summary>
+             <param name="key">key to use for mapping
+             </param>
+             <param name="obj">object to store
+            
+             </param>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.AddStringProperty(System.String,System.String)">
+             <summary>  Sets a string property w/o checking for commas - used
+             internally when a property has been broken up into
+             strings that could contain escaped commas to prevent
+             the inadvertent vectorization.
+            
+             Thanks to Leon Messerschmidt for this one.
+            
+             </summary>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.SetProperty(System.String,System.Object)">
+            <summary> Set a property, this will replace any previously
+            set values. Set values is implicitly a call
+            to clearProperty(key), addProperty(key,value).
+            </summary>
+            <param name="key"></param>
+            <param name="value"></param>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.Save(System.IO.TextWriter,System.String)">
+            <summary> Save the properties to the given outputStream.
+            </summary>
+            <param name="output">An OutputStream.
+            </param>
+            <param name="Header">A String.
+            </param>
+            <exception cref="T:System.IO.IOException">
+            </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.Combine(Commons.Collections.ExtendedProperties)">
+             <summary> Combines an existing Hashtable with this Hashtable.
+             *
+             Warning: It will overwrite previous entries without warning.
+             *
+             </summary>
+             <param name="c">ExtendedProperties
+            
+             </param>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.ClearProperty(System.String)">
+             <summary> Clear a property in the configuration.
+             *
+             </summary>
+             <param name="key">key to remove along with corresponding value.
+            
+             </param>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetKeys(System.String)">
+             <summary> Get the list of the keys contained in the configuration
+             repository.
+             *
+             </summary>
+             <returns>An Iterator.
+            
+             </returns>
+             <summary> Get the list of the keys contained in the configuration
+             repository that match the specified prefix.
+             *
+             </summary>
+             <param name="prefix">The prefix to test against.
+             </param>
+             <returns>An Iterator of keys that match the prefix.
+            
+             </returns>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.Subset(System.String)">
+             <summary> Create an ExtendedProperties object that is a subset
+             of this one. Take into account duplicate keys
+             by using the setProperty() in ExtendedProperties.
+             *
+             </summary>
+             <param name="prefix">prefix
+            
+             </param>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.ToString">
+            <summary> Display the configuration for debugging
+            purposes.
+            </summary>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetString(System.String)">
+             <summary> Get a string associated with the given configuration key.
+             *
+             </summary>
+             <param name="key">The configuration key.
+             </param>
+             <returns>The associated string.
+             </returns>
+             <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+             object that is not a String.
+            
+             </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetString(System.String,System.String)">
+             <summary> Get a string associated with the given configuration key.
+             *
+             </summary>
+             <param name="key">The configuration key.
+             </param>
+             <param name="defaultValue">The default value.
+             </param>
+             <returns>The associated string if key is found,
+             default value otherwise.
+             </returns>
+             <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+             object that is not a String.
+            
+             </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetProperties(System.String)">
+             <summary> Get a list of properties associated with the given
+             configuration key.
+             *
+             </summary>
+             <param name="key">The configuration key.
+             </param>
+             <returns>The associated properties if key is found.
+             </returns>
+             <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+             object that is not a String/Vector.
+             </exception>
+             <exception cref="T:System.ArgumentException"> if one of the tokens is
+             malformed (does not contain an equals sign).
+            
+             </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetProperties(System.String,System.Collections.Hashtable)">
+             <summary> Get a list of properties associated with the given
+             configuration key.
+             *
+             </summary>
+             <param name="key">The configuration key.
+             </param>
+             <param name="defaultProps">Default property values.
+             </param>
+             <returns>The associated properties if key is found.
+             </returns>
+             <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+             object that is not a String/Vector.
+             </exception>
+             <exception cref="T:System.ArgumentException"> if one of the tokens is
+             malformed (does not contain an equals sign).
+            
+             </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetStringArray(System.String)">
+             <summary> Get an array of strings associated with the given configuration
+             key.
+             *
+             </summary>
+             <param name="key">The configuration key.
+             </param>
+             <returns>The associated string array if key is found.
+             </returns>
+             <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+             object that is not a String/Vector.
+            
+             </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetVector(System.String)">
+             <summary> Get a Vector of strings associated with the given configuration
+             key.
+             *
+             </summary>
+             <param name="key">The configuration key.
+             </param>
+             <returns>The associated Vector.
+             </returns>
+             <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+             object that is not a Vector.
+            
+             </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetStringList(System.String)">
+            <summary>
+            Gets the string list.
+            </summary>
+            <param name="key">The key.</param>
+            <returns></returns>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetVector(System.String,System.Collections.ArrayList)">
+             <summary> Get a Vector of strings associated with the given configuration
+             key.
+             *
+             </summary>
+             <param name="key">The configuration key.
+             </param>
+             <param name="defaultValue">The default value.
+             </param>
+             <returns>The associated Vector.
+             </returns>
+             <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+             object that is not a Vector.
+            
+             </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetBoolean(System.String)">
+             <summary> Get a boolean associated with the given configuration key.
+             *
+             </summary>
+             <param name="key">The configuration key.
+             </param>
+             <returns>The associated boolean.
+             </returns>
+             <exception cref="T:System.Exception"> is thrown if the key doesn't
+             map to an existing object.
+             </exception>
+             <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+             object that is not a Boolean.
+            
+             </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetBoolean(System.String,System.Boolean)">
+             <summary> Get a boolean associated with the given configuration key.
+             *
+             </summary>
+             <param name="key">The configuration key.
+             </param>
+             <param name="defaultValue">The default value.
+             </param>
+             <returns>The associated boolean if key is found and has valid
+             format, default value otherwise.
+             </returns>
+             <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+             object that is not a Boolean.
+            
+             </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.TestBoolean(System.String)">
+             <summary> Test whether the string represent by value maps to a boolean
+             value or not. We will allow <code>true</code>, <code>on</code>,
+             and <code>yes</code> for a <code>true</code> boolean value, and
+             <code>false</code>, <code>off</code>, and <code>no</code> for
+             <code>false</code> boolean values.  Case of value to test for
+             boolean status is ignored.
+             *
+             </summary>
+             <param name="value">The value to test for boolean state.
+             </param>
+             <returns><code>true</code> or <code>false</code> if the supplied
+             text maps to a boolean value, or <code>null</code> otherwise.
+            
+             </returns>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetByte(System.String)">
+            <summary> Get a byte associated with the given configuration key.
+            *
+            </summary>
+            <param name="key">The configuration key.
+            </param>
+            <returns>The associated byte if key is found and has valid
+            format, <see cref="F:Commons.Collections.ExtendedProperties.DEFAULT_BYTE"/> otherwise.
+            </returns>
+            <exception cref="T:System.Exception"> is thrown if the key doesn't
+            map to an existing object.
+            </exception>
+            <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+            object that is not a Byte.
+            </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetByte(System.String,System.SByte)">
+            <summary> Get a byte associated with the given configuration key.
+            *
+            </summary>
+            <param name="key">The configuration key.
+            </param>
+            <param name="defaultValue">The default value.
+            </param>
+            <returns>The associated byte if key is found and has valid
+            format, default value otherwise.
+            </returns>
+            <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+            object that is not a Byte.
+            </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetByte(System.String,System.Byte)">
+            <summary> Get a byte associated with the given configuration key.
+            *
+            </summary>
+            <param name="key">The configuration key.
+            </param>
+            <param name="defaultValue">The default value.
+            </param>
+            <returns>The associated byte if key is found and has valid
+            format, default value otherwise.
+            </returns>
+            <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+            object that is not a Byte.
+            </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetInt(System.String)">
+             <summary> The purpose of this method is to get the configuration resource
+             with the given name as an integer.
+             *
+             </summary>
+             <param name="name">The resource name.
+             </param>
+             <returns>The value of the resource as an integer.
+            
+             </returns>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetInt(System.String,System.Int32)">
+             <summary> The purpose of this method is to get the configuration resource
+             with the given name as an integer, or a default value.
+             *
+             </summary>
+             <param name="name">The resource name
+             </param>
+             <param name="def">The default value of the resource.
+             </param>
+             <returns>The value of the resource as an integer.
+            
+             </returns>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetInteger(System.String)">
+            <summary> Get a int associated with the given configuration key.
+            *
+            </summary>
+            <param name="key">The configuration key.
+            </param>
+            <returns>The associated int if key is found and has valid
+            format, <see cref="F:Commons.Collections.ExtendedProperties.DEFAULT_INT32"/> otherwise.
+            </returns>
+            <exception cref="T:System.Exception"> is thrown if the key doesn't
+            map to an existing object.
+            </exception>
+            <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+            object that is not a Integer.
+            </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetInteger(System.String,System.Int32)">
+            <summary> Get a int associated with the given configuration key.
+            *
+            </summary>
+            <param name="key">The configuration key.
+            </param>
+            <param name="defaultValue">The default value.
+            </param>
+            <returns>The associated int if key is found and has valid
+            format, <see cref="F:Commons.Collections.ExtendedProperties.DEFAULT_INT32"/> otherwise.
+            </returns>
+            <returns>The associated int if key is found and has valid
+            format, default value otherwise.
+            </returns>
+            <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+            object that is not a Integer.
+            </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetLong(System.String)">
+            <summary> Get a long associated with the given configuration key.
+            *
+            </summary>
+            <param name="key">The configuration key.
+            </param>
+            <returns>The associated long if key is found and has valid
+            format, <see cref="F:Commons.Collections.ExtendedProperties.DEFAULT_INT64"/> otherwise.
+            </returns>
+            <exception cref="T:System.Exception"> is thrown if the key doesn't
+            map to an existing object.
+            </exception>
+            <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+            object that is not a Long.
+            </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetLong(System.String,System.Int64)">
+            <summary> Get a long associated with the given configuration key.
+            *
+            </summary>
+            <param name="key">The configuration key.
+            </param>
+            <param name="defaultValue">The default value.
+            </param>
+            <returns>The associated long if key is found and has valid
+            format, <see cref="F:Commons.Collections.ExtendedProperties.DEFAULT_INT64"/> otherwise.
+            </returns>
+            <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+            object that is not a Long.
+            </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetFloat(System.String)">
+            <summary> Get a float associated with the given configuration key.
+            *
+            </summary>
+            <param name="key">The configuration key.
+            </param>
+            <returns>The associated float if key is found and has valid
+            format, <see cref="F:Commons.Collections.ExtendedProperties.DEFAULT_SINGLE"/> otherwise.
+            </returns>
+            <exception cref="T:System.Exception"> is thrown if the key doesn't
+            map to an existing object.
+            </exception>
+            <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+            object that is not a Float.
+            </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetFloat(System.String,System.Single)">
+            <summary> Get a float associated with the given configuration key.
+            *
+            </summary>
+            <param name="key">The configuration key.
+            </param>
+            <param name="defaultValue">The default value.
+            </param>
+            <returns>The associated float if key is found and has valid
+            format, <see cref="F:Commons.Collections.ExtendedProperties.DEFAULT_SINGLE"/> otherwise.
+            </returns>
+            <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+            object that is not a Float.
+            </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetDouble(System.String)">
+            <summary> Get a double associated with the given configuration key.
+            *
+            </summary>
+            <param name="key">The configuration key.
+            </param>
+            <returns>The associated double if key is found and has valid
+            format, <see cref="F:Commons.Collections.ExtendedProperties.DEFAULT_DOUBLE"/> otherwise.
+            </returns>
+            <exception cref="T:System.Exception"> is thrown if the key doesn't
+            map to an existing object.
+            </exception>
+            <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+            object that is not a Double.
+            </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.GetDouble(System.String,System.Double)">
+            <summary> Get a double associated with the given configuration key.
+            *
+            </summary>
+            <param name="key">The configuration key.
+            </param>
+            <param name="defaultValue">The default value.
+            </param>
+            <returns>The associated double if key is found and has valid
+            format, <see cref="F:Commons.Collections.ExtendedProperties.DEFAULT_DOUBLE"/> otherwise.
+            </returns>
+            <exception cref="T:System.InvalidCastException"> is thrown if the key maps to an
+            object that is not a Double.
+            </exception>
+        </member>
+        <member name="M:Commons.Collections.ExtendedProperties.ConvertProperties(Commons.Collections.ExtendedProperties)">
+            <summary>
+            Convert a standard properties class into a configuration class.
+            </summary>
+            <param name="p">properties object to convert into a ExtendedProperties object.</param>
+            <returns>ExtendedProperties configuration created from the properties object.</returns>
+        </member>
+        <member name="T:Commons.Collections.LRUMap">
+            <summary>
+            A keyed list with a fixed maximum size which removes
+            the least recently used entry if an entry is added when full.
+            </summary>
+        </member>
+        <member name="F:Commons.Collections.LRUMap.DEFAULT_MAX_SIZE">
+            <summary>
+            Default maximum size 
+            </summary>
+        </member>
+        <member name="F:Commons.Collections.LRUMap.maxSize">
+            <summary>
+            Maximum size 
+            </summary>
+        </member>
+        <member name="M:Commons.Collections.LRUMap.RemoveLRU">
+            <summary>
+            Remove the least recently used entry (the last one in the list)
+            </summary>
+        </member>
+        <member name="P:Commons.Collections.LRUMap.MaxSize">
+            <summary>
+            Gets the maximum size of the map (the bound).
+            </summary>
+        </member>
+        <member name="T:Commons.Collections.PropertiesReader">
+            <summary>
+            This class is used to read properties lines.  These lines do
+            not terminate with new-line chars but rather when there is no
+            backslash sign a the end of the line.  This is used to
+            concatenate multiple lines for readability.
+            </summary>
+        </member>
+        <member name="M:Commons.Collections.PropertiesReader.#ctor(System.IO.StreamReader)">
+            <summary>
+            Constructor.
+            </summary>
+            <param name="reader">A Reader.</param>
+        </member>
+        <member name="M:Commons.Collections.PropertiesReader.ReadProperty">
+            <summary>
+            Read a property.
+            </summary>
+            <returns>A String.</returns>
+        </member>
+        <member name="T:Commons.Collections.PropertiesTokenizer">
+            <summary>
+            This class divides into tokens a property value.  Token
+            separator is "," but commas into the property value are escaped
+            using the backslash in front.
+            </summary>
+        </member>
+        <member name="F:Commons.Collections.PropertiesTokenizer.DELIMITER">
+            <summary>
+            The property delimiter used while parsing (a comma).
+            </summary>
+        </member>
+        <member name="M:Commons.Collections.PropertiesTokenizer.#ctor(System.String)">
+            <summary>
+            Constructor.
+            </summary>
+            <param name="str">A String</param>
+        </member>
+        <member name="M:Commons.Collections.PropertiesTokenizer.NextToken">
+            <summary>
+            Get next token.
+            </summary>
+            <returns>A String</returns>
+        </member>
+        <member name="T:NVelocity.Context.AbstractContext">
+             <summary>  This class is the abstract base class for all conventional
+             Velocity Context  implementations.  Simply extend this class
+             and implement the abstract routines that access your preferred
+             storage method.
+             *
+             Takes care of context chaining.
+             *
+             Also handles / enforces policy on null keys and values :
+             *
+             <ul>
+             <li> Null keys and values are accepted and basically dropped.</li>
+             <li> If you place an object into the context with a null key, it
+             will be ignored and logged.</li>
+             <li> If you try to place a null into the context with any key, it
+             will be dropped and logged.</li>
+             </ul>
+             *
+             The default implementation of this for application use is
+             org.apache.velocity.VelocityContext.
+             *
+             All thanks to Fedor for the chaining idea.
+             *
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <author> <a href="mailto:fedor.karpelevitch@home.com">Fedor Karpelevitch</a>
+             </author>
+             <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
+             </author>
+             <version> $Id: AbstractContext.cs,v 1.4 2003/10/27 13:54:08 corts Exp $
+            
+             </version>
+        </member>
+        <member name="T:NVelocity.Context.InternalContextBase">
+             <summary>  class to encapsulate the 'stuff' for internal operation of velocity.
+             We use the context as a thread-safe storage : we take advantage of the
+             fact that it's a visitor  of sorts  to all nodes (that matter) of the
+             AST during init() and render().
+             Currently, it carries the template name for namespace
+             support, as well as node-local context data introspection caching.
+             *
+             Note that this is not a public class.  It is for package access only to
+             keep application code from accessing the internals, as AbstractContext
+             is derived from this.
+             *
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version> $Id: InternalContextBase.cs,v 1.4 2003/10/27 13:54:08 corts Exp $
+            
+             </version>
+        </member>
+        <member name="T:NVelocity.Context.IInternalHousekeepingContext">
+             <summary>
+             interface to encapsulate the 'stuff' for internal operation of velocity.
+             We use the context as a thread-safe storage : we take advantage of the
+             fact that it's a visitor  of sorts  to all nodes (that matter) of the
+             AST during init() and render().
+            
+             Currently, it carries the template name for namespace
+             support, as well as node-local context data introspection caching.
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a></author>
+             <author> <a href="mailto:Christoph.Reck@dlr.de">Christoph Reck</a></author>
+             <version> $Id: InternalHousekeepingContext.cs,v 1.4 2003/10/27 13:54:08 corts Exp $</version>
+        </member>
+        <member name="M:NVelocity.Context.IInternalHousekeepingContext.PushCurrentTemplateName(System.String)">
+            <summary>
+            set the current template name on top of stack
+            </summary>
+            <param name="s">current template name</param>
+        </member>
+        <member name="M:NVelocity.Context.IInternalHousekeepingContext.PopCurrentTemplateName">
+            <summary>
+            remove the current template name from stack
+            </summary>
+        </member>
+        <member name="M:NVelocity.Context.IInternalHousekeepingContext.ICacheGet(System.Object)">
+            <summary>
+            Gets the <see cref="T:NVelocity.Util.Introspection.IntrospectionCacheData"/> object if exists 
+            for the key
+            </summary>
+            <param name="key">key to find in cache</param>
+            <returns>cache object</returns>
+        </member>
+        <member name="M:NVelocity.Context.IInternalHousekeepingContext.ICachePut(System.Object,NVelocity.Util.Introspection.IntrospectionCacheData)">
+            <summary>
+            Sets the <see cref="T:NVelocity.Util.Introspection.IntrospectionCacheData"/> object 
+            for the key
+            </summary>
+            <param name="key"> key </param>
+            <param name="o"> IntrospectionCacheData object to place in cache</param>
+        </member>
+        <member name="P:NVelocity.Context.IInternalHousekeepingContext.CurrentTemplateName">
+            <summary>
+            get the current template name
+            </summary>
+            <returns>String current template name</returns>
+        </member>
+        <member name="P:NVelocity.Context.IInternalHousekeepingContext.TemplateNameStack">
+            <summary>
+            Returns the template name stack in form of an array.
+            </summary>
+            <returns>Object[] with the template name stack contents.</returns>
+        </member>
+        <member name="P:NVelocity.Context.IInternalHousekeepingContext.CurrentResource">
+            <summary>
+            temporary fix to enable #include() to figure out
+            current encoding.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Context.IInternalEventContext">
+            <summary>
+            Interface for event support.  Note that this is a public internal
+            interface, as it is something that will be accessed from outside
+            of the .context package.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Context.InternalContextBase.introspectionCache">
+            <summary>
+            cache for node/context specific introspection information
+            </summary>
+        </member>
+        <member name="F:NVelocity.Context.InternalContextBase.templateNameStack">
+            <summary>
+            Template name stack. The stack top contains the current template name.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Context.InternalContextBase.eventCartridge">
+            <summary>
+            EventCartridge we are to carry.  Set by application
+            </summary>
+        </member>
+        <member name="F:NVelocity.Context.InternalContextBase.currentResource">
+            <summary>
+            Current resource - used for carrying encoding and other
+            information down into the rendering process
+            </summary>
+        </member>
+        <member name="M:NVelocity.Context.InternalContextBase.PushCurrentTemplateName(System.String)">
+            <summary>
+            set the current template name on top of stack
+            </summary>
+            <param name="s">current template name</param>
+        </member>
+        <member name="M:NVelocity.Context.InternalContextBase.PopCurrentTemplateName">
+            <summary>remove the current template name from stack</summary>
+        </member>
+        <member name="T:NVelocity.Context.IContext">
+             <summary>
+             Interface describing the application data context.  This set of
+             routines is used by the application to set and remove 'named' data
+             object to pass them to the template engine to use when rendering
+             a template.
+            
+             This is the same set of methods supported by the original Context
+             class
+             </summary>
+             <seealso cref="T:NVelocity.Context.AbstractContext"/>
+             <seealso cref="T:NVelocity.VelocityContext"/>
+             <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a></author>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a></author>
+        </member>
+        <member name="M:NVelocity.Context.IContext.Put(System.String,System.Object)">
+            <summary>
+            Adds a name/value pair to the context.
+            </summary>
+            <param name="key">The name to key the provided value with.</param>
+            <param name="value">The corresponding value.</param>
+        </member>
+        <member name="M:NVelocity.Context.IContext.Get(System.String)">
+            <summary>
+            Gets the value corresponding to the provided key from the context.
+            </summary>
+            <param name="key">The name of the desired value.</param>
+            <returns>The value corresponding to the provided key.</returns>
+        </member>
+        <member name="M:NVelocity.Context.IContext.ContainsKey(System.Object)">
+            <summary>
+            Indicates whether the specified key is in the context.
+            </summary>
+            <param name="key">The key to look for.</param>
+            <returns>Whether the key is in the context.</returns>
+        </member>
+        <member name="M:NVelocity.Context.IContext.Remove(System.Object)">
+            <summary>
+            Removes the value associated with the specified key from the context.
+            </summary>
+            <param name="key">The name of the value to remove.</param>
+            <returns>The value that the key was mapped to, or <code>null</code> if unmapped.</returns>
+        </member>
+        <member name="P:NVelocity.Context.IContext.Count">
+            <summary>
+            Returns the number of elements in this context
+            </summary>
+            <value>The count.</value>
+        </member>
+        <member name="P:NVelocity.Context.IContext.Keys">
+            <summary>
+            Get all the keys for the values in the context
+            </summary>
+        </member>
+        <member name="F:NVelocity.Context.AbstractContext.innerContext">
+            <summary>  the chained Context if any
+            </summary>
+        </member>
+        <member name="M:NVelocity.Context.AbstractContext.#ctor">
+            <summary>  default CTOR
+            </summary>
+        </member>
+        <member name="M:NVelocity.Context.AbstractContext.#ctor(NVelocity.Context.IContext)">
+             <summary>  Chaining constructor accepts a Context argument.
+             It will relay get() operations into this Context
+             in the even the 'local' get() returns null.
+            
+             </summary>
+             <param name="inner">context to be chained
+            
+             </param>
+        </member>
+        <member name="M:NVelocity.Context.AbstractContext.InternalGet(System.String)">
+            
+             <summary>  Implement to return a value from the context storage.
+             <br/><br/>
+             The implementation of this method is required for proper
+             operation of a Context implementation in general
+             Velocity use.
+            
+             </summary>
+             <param name="key">key whose associated value is to be returned
+             </param>
+             <returns>object stored in the context
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Context.AbstractContext.InternalPut(System.String,System.Object)">
+            
+             <summary>  Implement to put a value into the context storage.
+             <br/><br/>
+             The implementation of this method is required for
+             proper operation of a Context implementation in
+             general Velocity use.
+             *
+             </summary>
+             <param name="key">key with which to associate the value
+             </param>
+             <param name="value">value to be associated with the key
+             </param>
+             <returns>previously stored value if exists, or null
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Context.AbstractContext.InternalContainsKey(System.Object)">
+            
+             <summary>  Implement to determine if a key is in the storage.
+             <br/><br/>
+             Currently, this method is not used internally by
+             the Velocity core.
+             *
+             </summary>
+             <param name="key">key to test for existance
+             </param>
+             <returns>true if found, false if not
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Context.AbstractContext.InternalGetKeys">
+            
+             <summary>  Implement to return an object array of key
+             strings from your storage.
+             <br/><br/>
+             Currently, this method is not used internally by
+             the Velocity core.
+             *
+             </summary>
+             <returns>array of keys
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Context.AbstractContext.InternalRemove(System.Object)">
+            
+             <summary>  Implement to remove an item from your storage.
+             <br/><br/>
+             Currently, this method is not used internally by
+             the Velocity core.
+             *
+             </summary>
+             <param name="key">key to remove
+             </param>
+             <returns>object removed if exists, else null
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Context.AbstractContext.Put(System.String,System.Object)">
+             <summary> Adds a name/value pair to the context.
+            
+             </summary>
+             <param name="key">  The name to key the provided value with.
+             </param>
+             <param name="value">The corresponding value.
+             </param>
+             <returns>Object that was replaced in the the Context if
+             applicable or null if not.
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Context.AbstractContext.Get(System.String)">
+             <summary>  Gets the value corresponding to the provided key from the context.
+             *
+             Supports the chaining context mechanism.  If the 'local' context
+             doesn't have the value, we try to get it from the chained context.
+             *
+             </summary>
+             <param name="key">The name of the desired value.
+             </param>
+             <returns>   The value corresponding to the provided key or null if
+             the key param is null.
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Context.AbstractContext.ContainsKey(System.Object)">
+             <summary>  Indicates whether the specified key is in the context.  Provided for
+             debugging purposes.
+             *
+             </summary>
+             <param name="key">The key to look for.
+             </param>
+             <returns>true if the key is in the context, false if not.
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Context.AbstractContext.Remove(System.Object)">
+             <summary>  Get all the keys for the values in the context
+             </summary>
+             <returns>Object[] of keys in the Context. Does not return
+             keys in chained context.
+            
+             </returns>
+             <summary> Removes the value associated with the specified key from the context.
+             *
+             </summary>
+             <param name="key">The name of the value to remove.
+             </param>
+             <returns>   The value that the key was mapped to, or <code>null</code>
+             if unmapped.
+            
+             </returns>
+        </member>
+        <member name="T:NVelocity.Context.IInternalContextAdapter">
+             <summary>  interface to bring all necessary internal and user contexts together.
+             this is what the AST expects to deal with.  If anything new comes
+             along, add it here.
+             *
+             I will rename soon :)
+             *
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version> $Id: InternalContextAdapter.cs,v 1.3 2003/10/27 13:54:08 corts Exp $
+            
+             </version>
+        </member>
+        <member name="T:NVelocity.Context.IInternalWrapperContext">
+            <summary>
+            interface for internal context wrapping functionality
+            </summary>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a></author>
+            <version> $Id: InternalWrapperContext.cs,v 1.4 2003/10/27 13:54:08 corts Exp $ </version>
+        </member>
+        <member name="P:NVelocity.Context.IInternalWrapperContext.InternalUserContext">
+            <summary>
+            returns the wrapped user context
+            </summary>
+        </member>
+        <member name="P:NVelocity.Context.IInternalWrapperContext.BaseContext">
+            <summary>
+            returns the base full context impl
+            </summary>
+        </member>
+        <member name="M:NVelocity.Context.IInternalContextAdapter.Remove(System.Object)">
+            <summary>
+            Need to define this method here otherwise since both <see cref="T:System.Collections.IDictionary"/> and <see cref="T:NVelocity.Context.IContext"/> 
+            contains a Remove(Object key) method we will need to cast the object to either interface
+            before calling this method, for backward compatibility we make the IContext.Remove the default
+            </summary>
+            <param name="key"></param>
+            <returns></returns>
+        </member>
+        <member name="T:NVelocity.Context.InternalContextAdapterImpl">
+             <summary>  This adapter class is the container for all context types for internal
+             use.  The AST now uses this class rather than the app-level Context
+             interface to allow flexibility in the future.
+             *
+             Currently, we have two context interfaces which must be supported :
+             <ul>
+             <li> Context : used for application/template data access</li>
+             <li> InternalHousekeepingContext : used for internal housekeeping and caching</li>
+             <li> InternalWrapperContext : used for getting root cache context and other
+             such.</li>
+             <li> InternalEventContext : for event handling.</li>
+             </ul>
+             *
+             This class implements the two interfaces to ensure that all methods are
+             supported.  When adding to the interfaces, or adding more context
+             functionality, the interface is the primary definition, so alter that first
+             and then all classes as necessary.  As of this writing, this would be
+             the only class affected by changes to InternalContext
+             *
+             This class ensures that an InternalContextBase is available for internal
+             use.  If an application constructs their own Context-implementing
+             object w/o sub-classing AbstractContext, it may be that support for
+             InternalContext is not available.  Therefore, InternalContextAdapter will
+             create an InternalContextBase if necessary for this support.  Note that
+             if this is necessary, internal information such as node-cache data will be
+             lost from use to use of the context.  This may or may not be important,
+             depending upon application.
+            
+             *
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version> $Id: InternalContextAdapterImpl.cs,v 1.4 2003/10/27 13:54:08 corts Exp $
+            
+             </version>
+        </member>
+        <member name="F:NVelocity.Context.InternalContextAdapterImpl.context">
+            
+             <summary>  the user data Context that we are wrapping
+             </summary>
+        </member>
+        <member name="F:NVelocity.Context.InternalContextAdapterImpl.internalHousekeepingContext">
+            
+             <summary>  the ICB we are wrapping.  We may need to make one
+             if the user data context implementation doesn't
+             support one.  The default AbstractContext-derived
+             VelocityContext does, and it's recommended that
+             people derive new contexts from AbstractContext
+             rather than piecing things together
+             </summary>
+        </member>
+        <member name="F:NVelocity.Context.InternalContextAdapterImpl.internalEventContext">
+            <summary>  The InternalEventContext that we are wrapping.  If
+            the context passed to us doesn't support it, no
+            biggie.  We don't make it for them - since its a
+            user context thing, nothing gained by making one
+            for them now
+            </summary>
+        </member>
+        <member name="M:NVelocity.Context.InternalContextAdapterImpl.#ctor(NVelocity.Context.IContext)">
+             <summary>  CTOR takes a Context and wraps it, delegating all 'data' calls
+             to it.
+            
+             For support of internal contexts, it will create an InternalContextBase
+             if need be.
+             </summary>
+        </member>
+        <member name="M:NVelocity.Context.InternalContextAdapterImpl.AttachEventCartridge(NVelocity.App.Events.EventCartridge)">
+            <summary>  returns the user data context that
+            we are wrapping
+            </summary>
+            <summary>  Returns the base context that we are
+            wrapping. Here, its this, but for other thing
+            like VM related context contortions, it can
+            be something else
+            </summary>
+        </member>
+        <member name="T:NVelocity.Context.VMContext">
+             <summary>  This is a special, internal-use-only context implementation to be
+             used for the new Velocimacro implementation.
+             *
+             The main distinguishing feature is the management of the VMProxyArg objects
+             in the put() and get() methods.
+             *
+             Further, this context also supports the 'VM local context' mode, where
+             any get() or put() of references that aren't args to the VM are considered
+             local to the vm, protecting the global context.
+            
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version> $Id: VMContext.cs,v 1.4 2003/10/27 13:54:08 corts Exp $
+            
+             </version>
+        </member>
+        <member name="F:NVelocity.Context.VMContext.vmProxyHash">
+            <summary>container for our VMProxy Objects
+            </summary>
+        </member>
+        <member name="F:NVelocity.Context.VMContext.localContext">
+            <summary>container for any local or constant VMProxy items
+            </summary>
+        </member>
+        <member name="F:NVelocity.Context.VMContext.innerContext">
+            <summary>the base context store.  This is the 'global' context
+            </summary>
+        </member>
+        <member name="F:NVelocity.Context.VMContext.wrappedContext">
+            <summary>context that we are wrapping
+            </summary>
+        </member>
+        <member name="F:NVelocity.Context.VMContext.localContextScope">
+            <summary>support for local context scope feature, where all references are local
+            </summary>
+        </member>
+        <member name="M:NVelocity.Context.VMContext.#ctor(NVelocity.Context.IInternalContextAdapter,NVelocity.Runtime.IRuntimeServices)">
+            <summary>  CTOR, wraps an ICA
+            </summary>
+        </member>
+        <member name="M:NVelocity.Context.VMContext.AddVMProxyArg(NVelocity.Runtime.Directive.VMProxyArg)">
+             <summary>  return the inner / user context
+             </summary>
+             <summary>  Used to put VMProxyArgs into this context.  It separates
+             the VMProxyArgs into constant and non-constant types
+             pulling out the value of the constant types so they can
+             be modified w/o damaging the VMProxyArg, and leaving the
+             dynamic ones, as they modify context rather than their own
+             state
+             </summary>
+             <param name="vmpa">VMProxyArg to add
+            
+             </param>
+        </member>
+        <member name="M:NVelocity.Context.VMContext.Put(System.String,System.Object)">
+             <summary>  Impl of the Context.put() method.
+             *
+             </summary>
+             <param name="key">name of item to set
+             </param>
+             <param name="value">object to set to key
+             </param>
+             <returns>old stored object
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Context.VMContext.Get(System.String)">
+             <summary>  Impl of the Context.gut() method.
+             *
+             </summary>
+             <param name="key">name of item to get
+             </param>
+             <returns> stored object or null
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Context.VMContext.ContainsKey(System.Object)">
+            <summary>  not yet impl
+            </summary>
+        </member>
+        <member name="M:NVelocity.Context.VMContext.Remove(System.Object)">
+            <summary>  impl badly
+            </summary>
+            <summary>  impl badly
+            </summary>
+        </member>
+        <member name="T:NVelocity.Exception.MethodInvocationException">
+            <summary>
+            Application-level exception thrown when a reference method is
+            invoked and an exception is thrown.
+            <br/>
+            When this exception is thrown, a best effort will be made to have
+            useful information in the exception's message.  For complete
+            information, consult the runtime log.
+            </summary>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a> </author>
+            <version> $Id: MethodInvocationException.cs,v 1.3 2003/10/27 13:54:08 corts Exp $ </version>
+        </member>
+        <member name="T:NVelocity.Exception.VelocityException">
+            <summary>  
+            Base class for Velocity exceptions thrown to the
+            application layer.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Exception.MethodInvocationException.#ctor(System.String,System.Exception,System.String)">
+            <summary>
+            Wraps the passed in exception for examination later
+            </summary>
+        </member>
+        <member name="T:NVelocity.Exception.ParseErrorException">
+             <summary>  Application-level exception thrown when a resource of any type
+             has a syntax or other error which prevents it from being parsed.
+             <br/>
+             When this resource is thrown, a best effort will be made to have
+             useful information in the exception's message.  For complete
+             information, consult the runtime log.
+             *
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version> $Id: ParseErrorException.cs,v 1.3 2003/10/27 13:54:08 corts Exp $
+            
+             </version>
+        </member>
+        <member name="T:NVelocity.Exception.ResourceNotFoundException">
+            <summary>  
+            Application-level exception thrown when a resource of any type
+            isn't found by the Velocity engine.
+            <br/>
+            When this exception is thrown, a best effort will be made to have
+            useful information in the exception's message.  For complete
+            information, consult the runtime log.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Directive.Directive">
+            <summary> Base class for all directives used in Velocity.</summary>
+            <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a> </author>
+            <version> $Id: Directive.cs,v 1.3 2003/10/27 13:54:10 corts Exp $ </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Directive.Init(NVelocity.Runtime.IRuntimeServices,NVelocity.Context.IInternalContextAdapter,NVelocity.Runtime.Parser.Node.INode)">
+            <summary>
+            How this directive is to be initialized.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Directive.SetLocation(System.Int32,System.Int32)">
+            <summary>
+            Allows the template location to be set
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Directive.Render(NVelocity.Context.IInternalContextAdapter,System.IO.TextWriter,NVelocity.Runtime.Parser.Node.INode)">
+            <summary>
+            How this directive is to be rendered
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.Directive.Name">
+            <summary>
+            Return the name of this directive
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.Directive.Type">
+            <summary>
+            Get the directive type BLOCK/LINE
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.Directive.Line">
+            <summary>
+            for log msg purposes
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.Directive.Column">
+            <summary>
+            for log msg purposes
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Directive.DirectiveType">
+            <summary>
+            Directive Types
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Directive.Foreach">
+            <summary>
+            Foreach directive used for moving through arrays,
+            or objects that provide an Iterator.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Directive.Foreach.counterName">
+            <summary>
+            The name of the variable to use when placing
+            the counter value into the context. Right
+            now the default is $velocityCount.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Directive.Foreach.counterInitialValue">
+            <summary>
+            What value to start the loop counter at.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Directive.Foreach.elementKey">
+             <summary>
+             The reference name used to access each
+             of the elements in the list object. It
+             is the $item in the following:
+            
+             #foreach ($item in $list)
+            
+             This can be used class wide because
+             it is immutable.
+             </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Foreach.Init(NVelocity.Runtime.IRuntimeServices,NVelocity.Context.IInternalContextAdapter,NVelocity.Runtime.Parser.Node.INode)">
+            <summary>  
+            simple init - init the tree and get the elementKey from
+            the AST
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Foreach.GetIterator(NVelocity.Context.IInternalContextAdapter,NVelocity.Runtime.Parser.Node.INode)">
+            <summary>
+            returns an Iterator to the collection in the #foreach()
+            </summary>
+            <param name="context"> current context </param>
+            <param name="node">  AST node </param>
+            <returns>Iterator to do the dataset </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Foreach.Render(NVelocity.Context.IInternalContextAdapter,System.IO.TextWriter,NVelocity.Runtime.Parser.Node.INode)">
+            <summary>
+            renders the #foreach() block
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.Foreach.Name">
+            <summary>
+            Return name of this directive.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.Foreach.Type">
+            <summary>
+            Return type of this directive.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Directive.Include">
+             <summary>
+             Pluggable directive that handles the #include() statement in VTL.
+             This #include() can take multiple arguments of either
+             StringLiteral or Reference.
+             
+             Notes:
+             -----
+             1) The included source material can only come from somewhere in
+             the TemplateRoot tree for security reasons. There is no way
+             around this.  If you want to include content from elsewhere on
+             your disk, use a link from somewhere under Template Root to that
+             content.
+             
+             2) By default, there is no output to the render stream in the event of
+             a problem.  You can override this behavior with two property values :
+             include.output.errormsg.start
+             include.output.errormsg.end
+             If both are defined in velocity.properties, they will be used to
+             in the render output to bracket the arg string that caused the
+             problem.
+             Ex. : if you are working in html then
+             include.output.errormsg.start=<!-- #include error :
+             include.output.errormsg.end= -->
+             might be an excellent way to start...
+             
+             3) As noted above, #include() can take multiple arguments.
+             Ex : #include( "foo.vm" "bar.vm" $foo )
+             will simply include all three if valid to output w/o any
+             special separator.
+             
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
+             </author>
+             <author> <a href="mailto:kav@kav.dk">Kasper Nielsen</a>
+             </author>
+             <version> $Id: Include.cs,v 1.3 2003/10/27 13:54:10 corts Exp $
+            
+             </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Include.Init(NVelocity.Runtime.IRuntimeServices,NVelocity.Context.IInternalContextAdapter,NVelocity.Runtime.Parser.Node.INode)">
+            <summary>
+            simple init - init the tree and get the elementKey from
+            the AST
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Include.Render(NVelocity.Context.IInternalContextAdapter,System.IO.TextWriter,NVelocity.Runtime.Parser.Node.INode)">
+            <summary>
+            iterates through the argument list and renders every
+            argument that is appropriate.  Any non appropriate
+            arguments are logged, but render() continues.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Include.RenderOutput(NVelocity.Runtime.Parser.Node.INode,NVelocity.Context.IInternalContextAdapter,System.IO.TextWriter)">
+            <summary>
+            does the actual rendering of the included file
+            </summary>
+            <param name="node">AST argument of type StringLiteral or Reference</param>
+            <param name="context">valid context so we can render References</param>
+            <param name="writer">output Writer</param>
+            <returns>boolean success or failure.  failures are logged</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Include.OutputErrorToStream(System.IO.TextWriter,System.String)">
+            <summary>
+            Puts a message to the render output stream if ERRORMSG_START / END
+            are valid property strings.  Mainly used for end-user template
+            debugging.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.Include.Name">
+            <summary>
+            Return name of this directive.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.Include.Type">
+            <summary> Return type of this directive.</summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Directive.Literal">
+            <summary>
+            A very simple directive that leverages the Node.literal()
+            to grab the literal rendition of a node. We basically
+            grab the literal value on init(), then repeatedly use
+            that during render().
+            </summary>
+            <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a> </author>
+            <version> $Id: Literal.cs,v 1.3 2003/10/27 13:54:10 corts Exp $ </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Literal.Init(NVelocity.Runtime.IRuntimeServices,NVelocity.Context.IInternalContextAdapter,NVelocity.Runtime.Parser.Node.INode)">
+            <summary>
+            Store the literal rendition of a node using
+            the Node.literal().
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Literal.Render(NVelocity.Context.IInternalContextAdapter,System.IO.TextWriter,NVelocity.Runtime.Parser.Node.INode)">
+            <summary> Throw the literal rendition of the block between
+            #literal()/#end into the writer.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.Literal.Name">
+            <summary>Return name of this directive.</summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.Literal.Type">
+            <summary> Return type of this directive. </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Directive.Macro">
+             <summary>
+             Macro implements the macro definition directive of VTL.
+            
+             example :
+            
+             #macro( isnull $i )
+             #if( $i )
+             $i
+             #end
+             #end
+            
+             This object is used at parse time to mainly process and register the
+             macro.  It is used inline in the parser when processing a directive.
+            
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a></author>
+             <version> $Id: Macro.cs,v 1.3 2003/10/27 13:54:10 corts Exp $</version>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Macro.Render(NVelocity.Context.IInternalContextAdapter,System.IO.TextWriter,NVelocity.Runtime.Parser.Node.INode)">
+            <summary> Return name of this directive.
+            </summary>
+            <summary> Return type of this directive.
+            </summary>
+            <summary>   render() doesn't do anything in the final output rendering.
+            There is no output from a #macro() directive.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Macro.processAndRegister(NVelocity.Runtime.IRuntimeServices,NVelocity.Runtime.Parser.Node.INode,System.String)">
+             <summary>
+             Used by Parser.java to process VMs within the parsing process
+            
+             processAndRegister() doesn't actually render the macro to the output
+             Processes the macro body into the internal representation used by the
+             VelocimacroProxy objects, and if not currently used, adds it
+             to the macro Factory
+             </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Macro.getArgArray(NVelocity.Runtime.Parser.Node.INode)">
+            <summary>  creates an array containing the literal
+            strings in the macro argument
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Macro.getASTAsStringArray(NVelocity.Runtime.Parser.Node.INode)">
+            <summary>  Returns an array of the literal rep of the AST
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Directive.Parse">
+            <summary>
+            Pluggable directive that handles the #parse() statement in VTL.
+            
+            Notes:
+            -----
+            1) The parsed source material can only come from somewhere in
+            the TemplateRoot tree for security reasons. There is no way
+            around this.  If you want to include content from elsewhere on
+            your disk, use a link from somewhere under Template Root to that
+            content.
+            
+            2) There is a limited parse depth.  It is set as a property
+            "parse_directive.maxdepth = 10"  for example.  There is a 20 iteration
+            safety in the event that the parameter isn't set.
+            
+            </summary>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a> </author>
+            <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a> </author>
+            <author> <a href="mailto:Christoph.Reck@dlr.de">Christoph Reck</a> </author>
+            <version> $Id: Parse.cs,v 1.4 2003/10/27 13:54:10 corts Exp $ </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Parse.Render(NVelocity.Context.IInternalContextAdapter,System.IO.TextWriter,NVelocity.Runtime.Parser.Node.INode)">
+            <summary>
+            iterates through the argument list and renders every
+            argument that is appropriate.  Any non appropriate
+            arguments are logged, but render() continues.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.Parse.AssertTemplateStack(NVelocity.Context.IInternalContextAdapter)">
+            <summary>
+            See if we have exceeded the configured depth.
+            If it isn't configured, put a stop at 20 just in case.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.Parse.Name">
+            <summary>
+            Return name of this directive.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.Parse.Type">
+            <summary> Return type of this directive. </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Directive.ParseDirectiveException">
+             <summary> Exception for #parse() problems
+             *
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version> $Id: ParseDirectiveException.cs,v 1.3 2003/10/27 13:54:10 corts Exp $
+            
+             </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.ParseDirectiveException.#ctor(System.String,System.Int32)">
+            <summary> Constructor
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.ParseDirectiveException.addFile(System.String)">
+            <summary> Get a message.
+            </summary>
+            <summary> Add a file to the filename stack
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Directive.VelocimacroProxy">
+            <summary>
+            VelocimacroProxy
+            a proxy Directive-derived object to fit with the current directive system
+            </summary>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a></author>
+            <version> $Id: VelocimacroProxy.cs,v 1.4 2003/10/27 13:54:10 corts Exp $ </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.VelocimacroProxy.Init(NVelocity.Runtime.IRuntimeServices,NVelocity.Context.IInternalContextAdapter,NVelocity.Runtime.Parser.Node.INode)">
+            <summary>
+            The major meat of VelocimacroProxy, init() checks the # of arguments, 
+            patches the macro body, renders the macro into an AST, and then initiates 
+            the AST, so it is ready for quick rendering.  Note that this is only 
+            AST dependant stuff. Not context.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.VelocimacroProxy.Render(NVelocity.Context.IInternalContextAdapter,System.IO.TextWriter,NVelocity.Runtime.Parser.Node.INode)">
+            <summary>
+            Renders the macro using the context
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.VelocimacroProxy.setupMacro(System.String[],System.Int32[])">
+            <summary>
+            basic VM setup.  Sets up the proxy args for this
+            use, and parses the tree
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.VelocimacroProxy.parseTree(System.String[])">
+            <summary>
+            parses the macro.  We need to do this here, at init time, or else
+            the local-scope template feature is hard to get to work :)
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.VelocimacroProxy.getArgArray(NVelocity.Runtime.Parser.Node.INode)">
+            <summary>
+            Gets the args to the VM from the instance-use AST
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.VelocimacroProxy.Name">
+            <summary>
+            The name of this Velocimacro.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.VelocimacroProxy.Type">
+            <summary>
+            Velocimacros are always LINE
+            type directives.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.VelocimacroProxy.ArgArray">
+            <summary>
+            Sets the array of arguments specified in the macro definition
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.VelocimacroProxy.NumArgs">
+            <summary>
+            Returns the number of arguments needed for this VM
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Directive.VelocimacroProxy.MacroBody">
+            <summary>
+            Sets the original macro body.  This is simply the cat of the 
+            macroArray, but the Macro object creates this once during parsing, 
+            and everyone shares it.
+            
+            Note : it must not be modified.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Directive.VMProxyArg">
+             <summary>  
+             The function of this class is to proxy for the calling parameter to the VM.
+             *
+             This class is designed to be used in conjunction with the VMContext class
+             which knows how to get and set values via it, rather than a simple get()
+             or put() from a hashtable-like object.
+             *
+             There is probably a lot of undocumented subtlety here, so step lightly.
+             *
+             We rely on the observation that an instance of this object has a constant
+             state throughout its lifetime as it's bound to the use-instance of a VM.
+             In other words, it's created by the VelocimacroProxy class, to represent
+             one of the arguments to a VM in a specific template.  Since the template
+             is fixed (it's a file...), we don't have to worry that the args to the VM
+             will change.  Yes, the VM will be called in other templates, or in other
+             places on the same template, bit those are different use-instances.
+             *
+             These arguments can be, in the lingo of
+             the parser, one of :
+             <ul>
+             <li> Reference() : anything that starts with '$'</li>
+             <li> StringLiteral() : something like "$foo" or "hello geir"</li>
+             <li> NumberLiteral() : 1, 2 etc</li>
+             <li> IntegerRange() : [ 1..2] or [$foo .. $bar]</li>
+             <li> ObjectArray() : [ "a", "b", "c"]</li>
+             <li> True() : true</li>
+             <li> False() : false</li>
+             <li>Word() : not likely - this is simply allowed by the parser so we can have
+             syntactical sugar like #foreach($a in $b)  where 'in' is the Word</li>
+             </ul>
+             Now, Reference(), StringLit, NumberLit, IntRange, ObjArr are all dynamic things, so
+             their value is gotten with the use of a context.  The others are constants.  The trick
+             we rely on is that the context rather than this class really represents the
+             state of the argument. We are simply proxying for the thing, returning the proper value
+             when asked, and storing the proper value in the appropriate context when asked.
+             *
+             So, the hope here, so an instance of this can be shared across threads, is to
+             keep any dynamic stuff out of it, relying on trick of having the appropriate
+             context handed to us, and when a constant argument, letting VMContext punch that
+             into a local context.
+            
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version> $Id: VMProxyArg.cs,v 1.4 2003/10/27 13:54:10 corts Exp $
+            
+             </version>
+        </member>
+        <member name="F:NVelocity.Runtime.Directive.VMProxyArg.GENERALSTATIC">
+            <summary>in the event our type is switched - we don't care really what it is
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Directive.VMProxyArg.type">
+            <summary>type of arg I will have
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Directive.VMProxyArg.nodeTree">
+            <summary>the AST if the type is such that it's dynamic (ex. JJTREFERENCE )
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Directive.VMProxyArg.staticObject">
+            <summary>reference for the object if we proxy for a static arg like an NumberLiteral
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Directive.VMProxyArg.userContext">
+            <summary>not used in this impl : carries the appropriate user context
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Directive.VMProxyArg.numTreeChildren">
+            <summary>number of children in our tree if a reference
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Directive.VMProxyArg.contextReference">
+            <summary>our identity in the current context
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Directive.VMProxyArg.callerReference">
+            <summary>the reference we are proxying for
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Directive.VMProxyArg.singleLevelRef">
+            <summary>the 'de-dollared' reference if we are a ref but don't have a method attached
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Directive.VMProxyArg.constant">
+            <summary>by default, we are dynamic.  safest
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.VMProxyArg.#ctor(NVelocity.Runtime.IRuntimeServices,System.String,System.String,System.Int32)">
+             <summary>  ctor for current impl
+             *
+             takes the reference literal we are proxying for, the literal
+             the VM we are for is called with...
+             *
+             </summary>
+             <param name="rs">
+             </param>
+             <param name="contextRef">reference arg in the definition of the VM, used in the VM
+             </param>
+             <param name="callerRef"> reference used by the caller as an arg to the VM
+             </param>
+             <param name="t"> type of arg : JJTREFERENCE, JJTTRUE, etc
+            
+             </param>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.VMProxyArg.isConstant">
+             <summary>  tells if arg we are proxying for is
+             dynamic or constant.
+             *
+             </summary>
+             <returns>true of constant, false otherwise
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.VMProxyArg.setObject(NVelocity.Context.IInternalContextAdapter,System.Object)">
+             <summary>  Invoked by VMContext when Context.put() is called for a proxied reference.
+             *
+             </summary>
+             <param name="context">context to modify via direct placement, or AST.setValue()
+             </param>
+             <param name="o"> new value of reference
+             </param>
+             <returns>Object currently null
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.VMProxyArg.getObject(NVelocity.Context.IInternalContextAdapter)">
+             <summary>  returns the value of the reference.  Generally, this is only
+             called for dynamic proxies, as the static ones should have
+             been stored in the VMContext's localContext store
+             *
+             </summary>
+             <param name="context">Context to use for getting current value
+             </param>
+             <returns>Object value
+             *
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.VMProxyArg.setup">
+            <summary>  does the housekeeping upon creating.  If a dynamic type
+            it needs to make an AST for further get()/set() operations
+            Anything else is constant.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Directive.VMProxyArg.#ctor(NVelocity.Runtime.Directive.VMProxyArg,NVelocity.Context.IInternalContextAdapter)">
+            <summary>  not used in current impl
+            *
+            Constructor for alternate impl where VelProxy class would make new
+            VMProxyArg objects, and use this constructor to avoid re-parsing the
+            reference args
+            *
+            that impl also had the VMProxyArg carry it's context
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Exception.ReferenceException">
+             <summary> Exception thrown when a bad reference is found.
+             *
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version> $Id: ReferenceException.cs,v 1.3 2003/10/27 13:54:10 corts Exp $
+            
+             </version>
+        </member>
+        <member name="F:NVelocity.Runtime.Log.LogLevel.Debug">
+            <summary>
+            Prefix for debug messages.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Log.LogLevel.Info">
+            <summary>
+            Prefix for info messages.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Log.LogLevel.Warn">
+            <summary>
+            Prefix for warning messages.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Log.LogLevel.Error">
+            <summary>
+            Prefix for error messages.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Log.ILogSystem">
+            <summary>
+            Base interface that Logging systems need to implement.
+            </summary>
+            <author> <a href="mailto:jon@latchkey.com">Jon S. Stevens</a></author>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a></author>
+        </member>
+        <member name="M:NVelocity.Runtime.Log.ILogSystem.Init(NVelocity.Runtime.IRuntimeServices)">
+            <summary>
+            init()
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Log.ILogSystem.LogVelocityMessage(NVelocity.Runtime.Log.LogLevel,System.String)">
+            <summary>
+            Send a log message from Velocity.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Log.LogManager">
+            <summary>
+            <p>
+            This class is responsible for instantiating the correct LoggingSystem
+            </p>
+            <p>
+            The approach is :
+            </p>
+            <ul>
+            <li>
+            First try to see if the user is passing in a living object
+            that is a LogSystem, allowing the app to give is living
+            custom loggers.
+            </li>
+            <li>
+            Next, run through the (possible) list of classes specified
+            specified as loggers, taking the first one that appears to
+            work.  This is how we support finding either log4j or
+            logkit, whichever is in the classpath, as both are
+            listed as defaults.
+            </li>
+            <li>
+            Finally, we turn to 'faith-based' logging, and hope that
+            logkit is in the classpath, and try for an AvalonLogSystem
+            as a final gasp.  After that, there is nothing we can do.
+            </li>
+            </ul>
+            </summary>
+            <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a></author>
+            <author> <a href="mailto:jon@latchkey.com">Jon S. Stevens</a></author>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a></author>
+        </member>
+        <member name="M:NVelocity.Runtime.Log.LogManager.CreateLogSystem(NVelocity.Runtime.IRuntimeServices)">
+            <summary>  Creates a new logging system or returns an existing one
+            specified by the application.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Log.NullLogSystem">
+             <summary>  Logger used in case of failure. Does nothing.
+             *
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version> $Id: NullLogSystem.cs,v 1.4 2003/10/27 13:54:10 corts Exp $
+            
+             </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Log.NullLogSystem.LogVelocityMessage(NVelocity.Runtime.Log.LogLevel,System.String)">
+            <summary>
+            logs messages to the great Garbage Collector in the sky
+            </summary>
+            <param name="level">severity level</param>
+            <param name="message">complete error message</param>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.AbstractExecutor">
+            <summary> Abstract class that is used to execute an arbitrary
+            method that is in introspected. This is the superclass
+            for the GetExecutor and PropertyExecutor.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.Node.AbstractExecutor.method">
+            <summary>
+            Method to be executed.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.AbstractExecutor.Execute(System.Object)">
+            <summary>
+            Execute method against context.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTAddNode">
+            <summary>
+            Handles integer addition of nodes
+            
+            Please look at the Parser.jjt file which is
+            what controls the generation of this class.
+            </summary>
+            <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a> </author>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a> </author>
+            <version> $Id: ASTAddNode.cs,v 1.3 2003/10/27 13:54:10 corts Exp $ </version>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.INode">
+            <summary>  All AST nodes must implement this interface.  It provides basic
+            machinery for constructing the parent and child relationships
+            between nodes.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.INode.Open">
+            <summary>
+            This method is called after the node has been made the current
+            node. It indicates that child nodes can now be added to it.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.INode.Close">
+            <summary>
+            This method is called after all the child nodes have been added.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.INode.AddChild(NVelocity.Runtime.Parser.Node.INode,System.Int32)">
+            <summary>
+            This method tells the node to add its argument to the node's
+            list of children.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.INode.GetChild(System.Int32)">
+            <summary>
+            This method returns a child node.  The children are numbered
+            from zero, left to right.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.INode.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.SimpleNode.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>Accept the visitor. *
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.SimpleNode.ChildrenAccept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>Accept the visitor. *
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTAddNode.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTAddNode.Value(NVelocity.Context.IInternalContextAdapter)">
+            <summary>
+            Computes the sum of the two nodes.
+            Currently only integer operations are supported.
+            </summary>
+            <returns>Integer object with value, or null</returns>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTAndNode">
+            <summary>
+            Please look at the Parser.jjt file which is
+            what controls the generation of this class.
+            </summary>
+            <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a> </author>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a> </author>
+            <version> $Id: ASTAndNode.cs,v 1.3 2003/10/27 13:54:10 corts Exp $ </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTAndNode.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTAndNode.Value(NVelocity.Context.IInternalContextAdapter)">
+            <summary>  Returns the value of the expression.
+            Since the value of the expression is simply the boolean
+            result of evaluate(), lets return that.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTAndNode.Evaluate(NVelocity.Context.IInternalContextAdapter)">
+            <summary>
+            logical and :
+            null &amp;&amp; right = false
+            left &amp;&amp; null = false
+            null &amp;&amp; null = false
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTAssignment.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTBlock.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTComment.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTDirective">
+             <summary>
+             This class is responsible for handling the pluggable
+             directives in VTL. ex.  #foreach()
+            
+             Please look at the Parser.jjt file which is
+             what controls the generation of this class.
+             </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTDirective.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Parser.Node.ASTDirective.DirectiveName">
+            <summary>
+            Gets or sets the directive name.
+            Used by the parser.  
+            This keeps us from having to
+            dig it out of the token stream and gives the parse 
+            the change to override.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTDivNode">
+            <summary>
+            Handles integer division of nodes
+            
+            Please look at the Parser.jjt file which is
+            what controls the generation of this class.
+            </summary>
+            <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a> </author>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a> </author>
+            <version> $Id: ASTDivNode.cs,v 1.3 2003/10/27 13:54:10 corts Exp $ </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTDivNode.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTDivNode.Value(NVelocity.Context.IInternalContextAdapter)">
+            <summary>
+            Computes the result of the division. Currently limited to Integers.
+            </summary>
+            <returns>Integer(value) or null</returns>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTElseIfStatement">
+             <summary> This class is responsible for handling the ElseIf VTL control statement.
+            
+             Please look at the Parser.jjt file which is
+             what controls the generation of this class.
+             *
+             </summary>
+             <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
+             </author>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version> $Id: ASTElseIfStatement.cs,v 1.3 2003/10/27 13:54:10 corts Exp $
+             </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTElseIfStatement.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTElseIfStatement.Evaluate(NVelocity.Context.IInternalContextAdapter)">
+            <summary>
+            An ASTElseStatement is true if the expression
+            it contains evaluates to true. Expressions know
+            how to evaluate themselves, so we do that
+            here and return the value back to ASTIfStatement
+            where this node was originally asked to evaluate
+            itself.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTElseIfStatement.Render(NVelocity.Context.IInternalContextAdapter,System.IO.TextWriter)">
+            <summary>
+            renders the block
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTElseStatement">
+             <summary>
+             This class is responsible for handling the Else VTL control statement.
+            
+             Please look at the Parser.jjt file which is
+             what controls the generation of this class.
+             </summary>
+             <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a> </author>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a> </author>
+             <version> $Id: ASTElseStatement.cs,v 1.3 2003/10/27 13:54:10 corts Exp $ </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTElseStatement.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTElseStatement.Evaluate(NVelocity.Context.IInternalContextAdapter)">
+            <summary>
+            An ASTElseStatement always evaluates to
+            true. Basically behaves like an #if(true).
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTEQNode">
+            <summary>
+            Handles the equivalence operator
+            
+            &lt;arg1&gt;  == &lt;arg2&gt;
+            
+            This operator requires that the LHS and RHS are both of the
+            same Class.
+            </summary>
+            <version> $Id: ASTEQNode.cs,v 1.3 2003/10/27 13:54:10 corts Exp $ </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTEQNode.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>Accept the visitor. *
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTEQNode.Evaluate(NVelocity.Context.IInternalContextAdapter)">
+            <summary>
+            Calculates the value of the logical expression
+            
+            arg1 == arg2
+            
+            All class types are supported.   Uses equals() to
+            determine equivalence.  This should work as we represent
+            with the types we already support, and anything else that
+            implements equals() to mean more than identical references.
+            </summary>
+            <param name="context"> internal context used to evaluate the LHS and RHS </param>
+            <returns>
+            true if equivalent, false if not equivalent,
+            false if not compatible arguments, or false
+            if either LHS or RHS is null
+            </returns>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTEscape">
+             <summary> This class is responsible for handling Escapes
+             in VTL.
+            
+             Please look at the Parser.jjt file which is
+             what controls the generation of this class.
+             *
+             </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTEscape.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>Accept the visitor. *
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTEscapedDirective">
+             <summary>
+             This class is responsible for handling EscapedDirectives
+             in VTL.
+            
+             Please look at the Parser.jjt file which is
+             what controls the generation of this class.
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a> </author>
+             <version> $Id: ASTEscapedDirective.cs,v 1.3 2003/10/27 13:54:10 corts Exp $ </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTEscapedDirective.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTExpression.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTFalse.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTGENode.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTGTNode.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTIdentifier">
+            <summary>
+            ASTIdentifier.java
+            
+            Method support for identifiers :  $foo
+            
+            mainly used by ASTReference
+            
+            Introspection is now moved to 'just in time' or at render / execution
+            time. There are many reasons why this has to be done, but the
+            primary two are   thread safety, to remove any context-derived
+            information from class member  variables.
+            </summary>
+            <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a> </author>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a> </author>
+            <version> $Id: ASTIdentifier.cs,v 1.5 2004/12/27 05:55:30 corts Exp $ </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTIdentifier.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTIdentifier.Init(NVelocity.Context.IInternalContextAdapter,System.Object)">
+            <summary>
+            simple init - don't do anything that is context specific.
+            just get what we need from the AST, which is static.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTIdentifier.Execute(System.Object,NVelocity.Context.IInternalContextAdapter)">
+            <summary>
+            invokes the method on the object passed in
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTIfStatement.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTIncludeStatement.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTIntegerRange.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTIntegerRange.Value(NVelocity.Context.IInternalContextAdapter)">
+            <summary>
+            does the real work.  Creates an Vector of Integers with the
+            right value range
+            </summary>
+            <param name="context">app context used if Left or Right of .. is a ref</param>
+            <returns>Object array of Integers</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTLENode.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>Accept the visitor. *
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTLTNode.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTMap">
+            <summary>
+            AST Node for creating a map / dictionary.
+            This class was originally generated from Parset.jjt.
+            </summary>
+            <version>$Id: ASTMap.cs,v 1.2 2004/12/27 05:50:11 corts Exp $</version>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTMap.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor. 
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTMap.Value(NVelocity.Context.IInternalContextAdapter)">
+            <summary>
+            Evaluate the node.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTMethod">
+             <summary>
+             Method support for references :  $foo.method()
+            
+             NOTE :
+            
+             introspection is now done at render time.
+            
+             Please look at the Parser.jjt file which is
+             what controls the generation of this class.
+             </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTMethod.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTMethod.Init(NVelocity.Context.IInternalContextAdapter,System.Object)">
+            <summary>
+            simple init - init our subtree and get what we can from
+            the AST
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTMethod.Execute(System.Object,NVelocity.Context.IInternalContextAdapter)">
+            <summary>
+            invokes the method.  Returns null if a problem, the
+            actual return if the method returns something, or
+            an empty string "" if the method returns void
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTMethod.PerformIntrospection(NVelocity.Context.IInternalContextAdapter,System.Type,System.Object[])">
+             <summary>
+             does the introspection of the class for the method needed.
+            
+             NOTE: this will try to flip the case of the first character for
+             convince (compatibility with Java version).  If there are no arguments,
+             it will also try to find a property with the same name (also flipping first character).
+             </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTModNode.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTMulNode">
+            <summary>
+            Handles integer multiplication
+            
+            Please look at the Parser.jjt file which is
+            what controls the generation of this class.
+            </summary>
+            <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a> </author>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a> </author>
+            <version> $Id: ASTMulNode.cs,v 1.3 2003/10/27 13:54:10 corts Exp $ </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTMulNode.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>Accept the visitor. *
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTMulNode.Value(NVelocity.Context.IInternalContextAdapter)">
+            <summary>
+            Computes the product of the two args.
+            Returns null if either arg is null
+            or if either arg is not an integer
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTNENode.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTNotNode.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTNumberLiteral.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>Accept the visitor. *
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTNumberLiteral.Init(NVelocity.Context.IInternalContextAdapter,System.Object)">
+            <summary>  Initialization method - doesn't do much but do the object
+            creation.  We only need to do it once.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTObjectArray.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTOrNode">
+            <summary>
+            Please look at the Parser.jjt file which is what controls 
+            the generation of this class.
+            </summary>
+            <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a> </author>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a> </author>
+            <version> $Id: ASTOrNode.cs,v 1.3 2003/10/27 13:54:10 corts Exp $ </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTOrNode.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>Accept the visitor. *
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTOrNode.Value(NVelocity.Context.IInternalContextAdapter)">
+            <summary>  Returns the value of the expression.
+            Since the value of the expression is simply the boolean
+            result of evaluate(), lets return that.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTOrNode.Evaluate(NVelocity.Context.IInternalContextAdapter)">
+            <summary>
+            the logical or :
+            the rule :
+            left || null -> left
+            null || right -> right
+            null || null -> false
+            left || right ->  left || right
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTParameters.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTprocess.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>Accept the visitor. *
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ReferenceType">
+            <summary>
+            Reference types
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTReference">
+             <summary>
+             This class is responsible for handling the references in
+             VTL ($foo).
+            
+             Please look at the Parser.jjt file which is
+             what controls the generation of this class.
+             </summary>
+             <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a></author>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a></author>
+             <author> <a href="mailto:Christoph.Reck@dlr.de">Christoph Reck</a></author>
+             <author> <a href="mailto:kjohnson@transparent.com">Kent Johnson</a></author>
+             <version> $Id: ASTReference.cs,v 1.4 2003/10/27 13:54:10 corts Exp $ </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTReference.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>Accept the visitor.</summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTReference.Execute(System.Object,NVelocity.Context.IInternalContextAdapter)">
+            <summary>
+            gets an Object that 'is' the value of the reference
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTReference.Render(NVelocity.Context.IInternalContextAdapter,System.IO.TextWriter)">
+            <summary>
+            gets the value of the reference and outputs it to the
+            writer.
+            </summary>
+            <param name="context"> context of data to use in getting value </param>
+            <param name="writer">  writer to render to </param>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTReference.Evaluate(NVelocity.Context.IInternalContextAdapter)">
+            <summary>   
+            Computes boolean value of this reference
+            Returns the actual value of reference return type
+            boolean, and 'true' if value is not null
+            </summary>
+            <param name="context">context to compute value with</param>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTReference.SetValue(NVelocity.Context.IInternalContextAdapter,System.Object)">
+            <summary>
+            Sets the value of a complex reference (something like $foo.bar)
+            Currently used by ASTSetReference()
+            </summary>
+            <seealso cref="T:NVelocity.Runtime.Parser.Node.ASTSetDirective"/>
+            <param name="context">context object containing this reference</param>
+            <param name="value">Object to set as value</param>
+            <returns>true if successful, false otherwise</returns>
+        </member>
+        <member name="P:NVelocity.Runtime.Parser.Node.ASTReference.RootString">
+            <summary>
+            Returns the 'root string', the reference key
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTSetDirective">
+            <summary> 
+            Node for the #set directive
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTSetDirective.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>Accept the visitor. *
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTSetDirective.Init(NVelocity.Context.IInternalContextAdapter,System.Object)">
+            <summary>  simple init.  We can get the RHS and LHS as the the tree structure is static
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTSetDirective.Render(NVelocity.Context.IInternalContextAdapter,System.IO.TextWriter)">
+            <summary>   puts the value of the RHS into the context under the key of the LHS
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTStringLiteral">
+            <summary> 
+            ASTStringLiteral support.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTStringLiteral.#ctor(System.Int32)">
+            <summary>
+            Initializes a new instance of the <see cref="T:NVelocity.Runtime.Parser.Node.ASTStringLiteral"/> class.
+            </summary>
+            <param name="id">The id.</param>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTStringLiteral.#ctor(NVelocity.Runtime.Parser.Parser,System.Int32)">
+            <summary>
+            Initializes a new instance of the <see cref="T:NVelocity.Runtime.Parser.Node.ASTStringLiteral"/> class.
+            </summary>
+            <param name="p">The p.</param>
+            <param name="id">The id.</param>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTStringLiteral.Init(NVelocity.Context.IInternalContextAdapter,System.Object)">
+            <summary>  init : we don't have to do much.  Init the tree (there
+            shouldn't be one) and then see if interpolation is turned on.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTStringLiteral.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>Accept the visitor. *
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTStringLiteral.Value(NVelocity.Context.IInternalContextAdapter)">
+            <summary>  renders the value of the string literal
+            If the properties allow, and the string literal contains a $ or a #
+            the literal is rendered against the context
+            Otherwise, the stringlit is returned.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTStringLiteral.InterpolateDictionaryString(System.String,NVelocity.Context.IInternalContextAdapter)">
+            <summary>
+            Interpolates the dictionary string.
+            dictionary string is any string in the format
+            "%{ key='value' [,key2='value2' }"		
+            "%{ key='value' [,key2='value2'] }"		
+            </summary>
+            <param name="str">If valid input a HybridDictionary with zero or more items,
+            otherwise the input string</param>
+            <param name="context">NVelocity runtime context</param>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ASTSubtractNode">
+            <summary>
+            Handles integer subtraction of nodes (in #set() )
+            
+            Please look at the Parser.jjt file which is
+            what controls the generation of this class.
+            </summary>
+            <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a> </author>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a> </author>
+            <version> $Id: ASTSubtractNode.cs,v 1.3 2003/10/27 13:54:10 corts Exp $ </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTSubtractNode.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTSubtractNode.Value(NVelocity.Context.IInternalContextAdapter)">
+            <summary>
+            Computes the value of the subtraction.
+            Currently limited to integers.
+            </summary>
+            <returns>Integer(value) or null</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTText.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTTrue.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTVariable.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ASTWord.Accept(NVelocity.Runtime.Parser.Node.IParserVisitor,System.Object)">
+            <summary>
+            Accept the visitor.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.BooleanPropertyExecutor">
+             <summary>  Handles discovery and valuation of a
+             boolean object property, of the
+             form public boolean is&lt;property&gt; when executed.
+            
+             We do this separately as to preserve the current
+             quasi-broken semantics of get&lt;as is property&gt;
+             get&lt; flip 1st char&gt; get("property") and now followed
+             by is&lt;Property&gt;
+             </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.PropertyExecutor">
+            <summary>
+            Returned the value of object property when executed.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.PropertyExecutor.Execute(System.Object)">
+            <summary>
+            Execute property against context.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.GetExecutor">
+            <summary>
+            Executor that simply tries to execute a get(key)
+            operation. This will try to find a get(key) method
+            for any type of object, not just objects that
+            implement the Map interface as was previously
+            the case.
+            </summary>
+            <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a></author>
+            <remarks>
+            Add discovery for .NET default property, using
+            <see cref="M:System.Type.GetDefaultMembers"/>.
+            </remarks>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.Node.GetExecutor.arguments">
+            <summary>
+            Container to hold the 'key' part of get(key).
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.GetExecutor.#ctor(NVelocity.Runtime.IRuntimeLogger,NVelocity.Util.Introspection.Introspector,System.Type,System.String)">
+            <summary>
+            Default constructor.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.GetExecutor.Execute(System.Object)">
+            <summary>
+            Execute method against context.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.NodeUtils">
+             <summary> Utilities for dealing with the AST node structure.
+             *
+             </summary>
+             <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
+             </author>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version> $Id: NodeUtils.cs,v 1.4 2003/10/27 13:54:10 corts Exp $
+            
+             </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.NodeUtils.specialText(NVelocity.Runtime.Parser.Token)">
+            <summary> Collect all the &lt;SPECIAL_TOKEN&gt;s that
+            are carried along with a token. Special
+            tokens do not participate in parsing but
+            can still trigger certain lexical actions.
+            In some cases you may want to retrieve these
+            special tokens, this is simply a way to
+            extract them.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.NodeUtils.tokenLiteral(NVelocity.Runtime.Parser.Token)">
+            <summary>  complete node literal
+            *
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.NodeUtils.interpolate(System.String,NVelocity.Context.IContext)">
+            <summary> Utility method to interpolate context variables
+            into string literals. So that the following will
+            work:
+            *
+            #set $name = "candy"
+            $image.getURI("${name}.jpg")
+            *
+            And the string literal argument will
+            be transformed into "candy.jpg" before
+            the method is executed.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Node.ObjectComparer">
+            <summary>
+            ObjectComparer allows you to compare primitive types and some others
+            using IComparable interface whenever possible, and performing type
+            conversions to get the best possible result.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Node.ObjectComparer.CompareObjects(System.Object,System.Object)">
+            <summary>
+            Tries to compare two random objects.  -1 is returned 
+            if x is smaller than y, 1 the other way around, or 0 
+            if they are equal.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.ICharStream">
+             <summary> 
+             This interface describes a character stream that maintains line and
+             column number positions of the characters.  It also has the capability
+             to backup the stream to some extent.  An implementation of this
+             interface is used in the TokenManager implementation generated by
+             JavaCCParser.
+            
+             All the methods except backup can be implemented in any fashion. backup
+             needs to be implemented correctly for the correct operation of the lexer.
+             Rest of the methods are all used to get information like line number,
+             column number and the String that constitutes a token and are not used
+             by the lexer. Hence their implementation won't affect the generated lexer's
+             operation.
+             </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ICharStream.ReadChar">
+            <summary> Returns the next character from the selected input.  The method
+            of selecting the input is the responsibility of the class
+            implementing this interface.  Can throw any java.io.IOException.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ICharStream.Backup(System.Int32)">
+            <summary> Backs up the input stream by amount steps. Lexer calls this method if it
+            had already read some characters, but could not use them to match a
+            (longer) token. So, they will be used again as the prefix of the next
+            token and it is the implemetation's responsibility to do this right.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ICharStream.BeginToken">
+            <summary> Returns the next character that marks the beginning of the next token.
+            All characters must remain in the buffer between two successive calls
+            to this method to implement backup correctly.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ICharStream.GetImage">
+            <summary> Returns a string made up of characters from the marked token beginning
+            to the current buffer position. Implementations have the choice of returning
+            anything that they want to. For example, for efficiency, one might decide
+            to just return null, which is a valid implementation.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ICharStream.GetSuffix(System.Int32)">
+             <summary> 
+             Returns an array of characters that make up the suffix of length 'len' for
+             the currently matched token. This is used to build up the matched string
+             for use in actions in the case of MORE. A simple and inefficient
+             implementation of this is as follows :
+            
+             {
+             String t = GetImage();
+             return t.substring(t.length() - len, t.length()).toCharArray();
+             }
+             </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ICharStream.Done">
+            <summary> The lexer calls this function to indicate that it is done with the stream
+            and hence implementations can free any resources held by this class.
+            Again, the body of this function can be just empty and it will not
+            affect the lexer's operation.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Parser.ICharStream.CurrentCharacter">
+            <summary>
+            The currenct character.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Parser.ICharStream.Column">
+            <summary>
+            Gets the column.
+            </summary>
+            <value>The column.</value>
+        </member>
+        <member name="P:NVelocity.Runtime.Parser.ICharStream.Line">
+            <summary>
+            Gets the line.
+            </summary>
+            <value>The line.</value>
+        </member>
+        <member name="P:NVelocity.Runtime.Parser.ICharStream.EndColumn">
+            <summary>
+            Gets the end column.
+            </summary>
+            <value>The end column.</value>
+        </member>
+        <member name="P:NVelocity.Runtime.Parser.ICharStream.EndLine">
+            <summary>
+            Gets the end line.
+            </summary>
+            <value>The end line.</value>
+        </member>
+        <member name="P:NVelocity.Runtime.Parser.ICharStream.BeginColumn">
+            <summary>
+            Gets the begin column.
+            </summary>
+            <value>The begin column.</value>
+        </member>
+        <member name="P:NVelocity.Runtime.Parser.ICharStream.BeginLine">
+            <summary>
+            Gets the begin line.
+            </summary>
+            <value>The begin line.</value>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.ParseException">
+            <summary> This exception is thrown when parse errors are encountered.
+            You can explicitly create objects of this exception type by
+            calling the method generateParseException in the generated
+            parser.
+            *
+            You can modify this class to customize your error reporting
+            mechanisms so long as you retain the public fields.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.ParseException.eol">
+            <summary> The end of line string for this machine.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ParseException.#ctor(NVelocity.Runtime.Parser.Token,System.Int32[][],System.String[])">
+            <summary> This constructor is used by the method "generateParseException"
+            in the generated parser.  Calling this constructor generates
+            a new object of this type with the fields "currentToken",
+            "expectedTokenSequences", and "tokenImage" set.  The boolean
+            flag "specialConstructor" is also set to true to indicate that
+            this constructor was used to create this object.
+            This constructor calls its super class with the empty string
+            to force the "toString" method of parent class "Throwable" to
+            print the error message in the form:
+            ParseException: &lt;result of getMessage&gt;
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ParseException.#ctor">
+            <summary> The following constructors are for use by you for whatever
+            purpose you can think of.  Constructing the exception in this
+            manner makes the exception behave in the normal way - i.e., as
+            documented in the class "Throwable".  The fields "errorToken",
+            "expectedTokenSequences", and "tokenImage" do not contain
+            relevant information.  The JavaCC generated code does not use
+            these constructors.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.ParseException.specialConstructor">
+            <summary> This variable determines which constructor was used to create
+            this object and thereby affects the semantics of the
+            "getMessage" method (see below).
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.ParseException.currentToken">
+            <summary> This is the last token that has been consumed successfully.  If
+            this object has been created due to a parse error, the token
+            following this token will (therefore) be the first error token.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.ParseException.expectedTokenSequences">
+            <summary> Each entry in this array is an array of integers.  Each array
+            of integers represents a sequence of tokens (by their ordinal
+            values) that is expected at this point of the parse.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.ParseException.tokenImage">
+            <summary> This is a reference to the "tokenImage" array of the generated
+            parser within which the parse error occurred.  This array is
+            defined in the generated ...Constants interface.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ParseException.AddEscapes(System.String)">
+            <summary> This method has the standard behavior when this object has been
+            created using the standard constructors.  Otherwise, it uses
+            "currentToken" and "expectedTokenSequences" to generate a parse
+            error message and returns it.  If this object has been created
+            due to a parse error, and you do not catch it (it gets thrown
+            from the parser), then this method is called during the printing
+            of the final stack trace, and hence the correct error message
+            gets displayed.
+            </summary>
+            <summary> Used to convert raw characters to their escaped version
+            when these raw version cannot be used as part of an ASCII
+            string literal.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Parser">
+             <summary> This class is responsible for parsing a Velocity
+             template. This class was generated by JavaCC using
+             the JJTree extension to produce an Abstract
+             Syntax Tree (AST) of the template.
+            
+             Please look at the Parser.jjt file which is
+             what controls the generation of this class.
+             </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.Parser.directives">
+            <summary>  This Hashtable contains a list of all of the dynamic directives.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.Parser.currentTemplateName">
+            <summary>  Name of current template we are parsing.  Passed to us in parse()
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.#ctor(NVelocity.Runtime.IRuntimeServices)">
+            <summary> 
+            This constructor was added to allow the re-use of parsers.
+            The normal constructor takes a single argument which
+            an InputStream. This simply creates a re-usable parser
+            object, we satisfy the requirement of an InputStream
+            by using a newline character as an input stream.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.Parse(System.IO.TextReader,System.String)">
+            
+             <summary> This was also added to allow parsers to be
+             re-usable. Normal JavaCC use entails passing an
+             input stream to the constructor and the parsing
+             process is carried out once. We want to be able
+             to re-use parsers: we do this by adding this
+             method and re-initializing the lexer with
+             the new stream that we want parsed.
+             </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.IsDirective(System.String)">
+            <summary>  This method finds out of the directive exists in the directives
+            Hashtable.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.EscapedDirective(System.String)">
+            <summary> Produces a processed output for an escaped control or
+            pluggable directive
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.Process">
+            <summary> This method is what starts the whole parsing
+            process. After the parsing is complete and
+            the template has been turned into an AST,
+            this method returns the root of AST which
+            can subsequently be traversed by a visitor
+            which implements the ParserVisitor interface
+            which is generated automatically by JavaCC
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.Statement">
+            <summary> These are the types of statements that
+            are acceptable in Velocity templates.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.EscapedDirective">
+            <summary>  used to separate the notion of a valid directive that has been
+            escaped, versus something that looks like a directive and
+            is just schmoo.  This is important to do as a separate production
+            that creates a node, because we want this, in either case, to stop
+            the further parsing of the Directive() tree.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.Escape">
+            <summary>  Used to catch and process escape sequences in grammatical constructs
+            as escapes outside of VTL are just characters.  Right now we have both
+            this and the EscapeDirective() construction because in the EscapeDirective()
+            case, we want to suck in the #&lt;directive&gt; and here we don't.  We just want
+            the escapes to render correctly
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.Identifier">
+            <summary> This method corresponds to variable
+            references in Velocity templates.
+            The following are examples of variable
+            references that may be found in a
+            template:
+            *
+            $foo
+            $bar
+            *
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.DirectiveArg">
+            <summary>   Supports the arguments for the Pluggable Directives
+            We add whitespace in here as a token so the VMs can
+            easily reconstruct a macro body from the token stream
+            See Directive()
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.Directive">
+            <summary>   Supports the Pluggable Directives
+            #foo( arg+ )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.IntegerRange">
+            <summary>  supports the [n..m] vector generator for use in
+            the #foreach() to generate measured ranges w/o
+            needing explicit support from the app/servlet
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.Parameter">
+            <summary> This method has yet to be fully implemented
+            but will allow arbitrarily nested method
+            calls
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.Method">
+            <summary> This method has yet to be fully implemented
+            but will allow arbitrarily nested method
+            calls
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.Text">
+            <summary> This method is responsible for allowing
+            all non-grammar text to pass through
+            unscathed.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.SetDirective">
+            <summary>  Currently support both types of set :
+            #set( expr )
+            #set expr
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Parser.StopStatement">
+            <summary> This method corresponds to the #stop
+            directive which just simulates and EOF
+            so that parsing stops. The #stop directive
+            is useful for end-user debugging
+            purposes.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ParserState.NodeCreated">
+            <summary>
+            Determines whether the current node was actually closed and
+            pushed.  This should only be called in the final user action of a
+            node scope.
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ParserState.Reset">
+            <summary>
+            Call this to reinitialize the node stack.  It is called automatically by the parser's ReInit() method.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ParserState.PushNode(NVelocity.Runtime.Parser.Node.INode)">
+            <summary>
+            Pushes a node on to the stack. 
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ParserState.PopNode">
+            <summary>
+            Returns the node on the top of the stack, and remove it from the	stack. 
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ParserState.PeekNode">
+            <summary>
+            Returns the node currently on the top of the stack.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ParserState.NodeArity">
+            <summary>
+            Returns the number of children on the stack in the current node scope.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ParserState.CloseNodeScope(NVelocity.Runtime.Parser.Node.INode,System.Int32)">
+            <summary>
+            A definite node is constructed from a specified number of
+            children.  That number of nodes are popped from the stack and
+            made the children of the definite node.  Then the definite node
+            is pushed on to the stack.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ParserState.CloseNodeScope(NVelocity.Runtime.Parser.Node.INode,System.Boolean)">
+            <summary>
+            A conditional node is constructed if its condition is true.  All
+            the nodes that have been pushed since the node was opened are
+            made children of the the conditional node, which is then pushed
+            on to the stack.  If the condition is false the node is not
+            constructed and they are left on the stack.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Parser.ParserState.RootNode">
+            <summary>
+            Returns the root node of the AST.  It only makes sense to call this after a successful parse.  
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ParserTokenManager.StateStackPop">
+              pushes the current state onto the 'state stack',
+              and maintains the parens counts
+              public because we need it in PD &amp; VM handling
+            
+              @return bool : success.  It can fail if the state machine
+                 gets messed up (do don't mess it up :)
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ParserTokenManager.StateStackPush">
+              pops a state off the stack, and restores paren counts
+            
+              @return bool : success of operation
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ParserTokenManager.ClearStateVars">
+            Clears all state variables, resets to
+            start values, clears stateStack.  Call
+            before parsing.
+            @return void
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ParserTokenManager.RPARENHandler">
+            handles the dropdown logic when encountering a RPAREN
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.ParserTreeConstants.#ctor">
+            <summary>
+            private constructor as class is meant to hold constants only.
+            Class was originally an interface in Java, but as C# does not support Fields in an interface and
+            the jjtNodeName field, I converted it to a class with no constructor.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.Token">
+            <summary>
+            Describes the input token stream.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.Token.Kind">
+            <summary>
+            An integer that describes the kind of this token.  This numbering
+            system is determined by JavaCCParser, and a table of these numbers is
+            stored in the file ...Constants.java.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.Token.BeginLine">
+            <summary>
+            beginLine and beginColumn describe the position of the first character
+            of this token; endLine and endColumn describe the position of the
+            last character of this token.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.Token.BeginColumn">
+            <summary>
+            beginLine and beginColumn describe the position of the first character
+            of this token; endLine and endColumn describe the position of the
+            last character of this token.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.Token.EndLine">
+            <summary>
+            beginLine and beginColumn describe the position of the first character
+            of this token; endLine and endColumn describe the position of the
+            last character of this token.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.Token.EndColumn">
+            <summary>
+            beginLine and beginColumn describe the position of the first character
+            of this token; endLine and endColumn describe the position of the
+            last character of this token.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.Token.Image">
+            <summary> The string image of the token. </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.Token.Next">
+            <summary>
+            A reference to the next regular (non-special) token from the input
+            stream.  If this is the last token from the input stream, or if the
+            token manager has not read tokens beyond this one, this field is
+            set to null.  This is true only if this token is also a regular
+            token.  Otherwise, see below for a description of the contents of
+            this field.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.Token.SpecialToken">
+            <summary>
+            This field is used to access special tokens that occur prior to this
+            token, but after the immediately preceding regular (non-special) token.
+            If there are no such special tokens, this field is set to null.
+            When there are more than one such special token, this field refers
+            to the last of these special tokens, which in turn refers to the next
+            previous special token through its specialToken field, and so on
+            until the first special token (whose specialToken field is null).
+            The next fields of special tokens refer to other special tokens that
+            immediately follow it (without an intervening regular token).  If there
+            is no such token, this field is null.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Token.ToString">
+            <summary>
+            Returns the image.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.Token.NewToken(System.Int32)">
+            <summary>
+            Returns a new Token object, by default. However, if you want, you
+            can create and return subclass objects based on the value of ofKind.
+            Simply add the cases to the switch for all those special cases.
+            For example, if you have a subclass of Token called IDToken that
+            you want to create if ofKind is ID, simply add something like :
+            
+            <c>case MyParserConstants.ID : return new IDToken();</c>
+            
+            to the following switch statement. Then you can cast matchedToken
+            variable to the appropriate type and use it in your lexical actions.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.TokenMgrError.LEXICAL_ERROR">
+            <summary> Lexical error occurred.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.TokenMgrError.STATIC_LEXER_ERROR">
+            <summary> An attempt was made to create a second instance of a static token manager.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.TokenMgrError.INVALID_LEXICAL_STATE">
+            <summary> Tried to change to an invalid lexical state.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.TokenMgrError.LOOP_DETECTED">
+            <summary> Detected (and bailed out of) an infinite loop in the token manager.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Parser.TokenMgrError.errorCode">
+            <summary> Indicates the reason why the exception is thrown. It will have
+            one of the above 4 values.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.TokenMgrError.AddEscapes(System.String)">
+            <summary> Replaces unprintable characters by their escaped (or unicode escaped)
+            equivalents in the given string
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.TokenMgrError.LexicalError(System.Boolean,System.Int32,System.Int32,System.String,System.Char)">
+            <summary> Returns a detailed message for the Error when it is thrown by the
+            token manager to indicate a lexical error.
+            Parameters :
+            EOFSeen     : indicates if EOF caused the lexical error
+            curLexState : lexical state in which this error occurred
+            errorLine   : line number when the error occurred
+            errorColumn : column number when the error occurred
+            errorAfter  : prefix that was seen before this error occurred
+            currentCharacter     : the offending character
+            Note: You can customize the lexical error message by modifying this method.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.TokenMgrError.#ctor">
+            <summary> You can also modify the body of this method to customize your error messages.
+            For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
+            of end-users concern, so you can return something like :
+            *
+            "Internal Error : Please file a bug report .... "
+            *
+            from this method for such cases in the release version of your parser.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Parser.VelocityCharStream">
+             <summary>  NOTE : This class was originally an ASCII_CharStream autogenerated
+             by Javacc.  It was then modified via changing class name with appropriate
+             fixes for CTORS, and mods to readChar().
+            
+             This is safe because we *always* use Reader with this class, and never a
+             InputStream.  This guarantees that we have a correct stream of 16-bit
+             chars - all encoding transformations have been done elsewhere, so we
+             believe that there is no risk in doing this.  Time will tell :)
+             </summary>
+             <summary> An implementation of interface CharStream, where the stream is assumed to
+             contain only ASCII characters (without unicode processing).
+             </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Parser.VelocityCharStream.AdjustBeginLineColumn(System.Int32,System.Int32)">
+            <summary> Method to adjust line and column numbers for the start of a token.<br/>
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Resource.Loader.ResourceLoader">
+            <summary>
+            This is abstract class the all text resource loaders should extend.
+            </summary>
+            <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a></author>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a></author>
+            <version> $Id: ResourceLoader.cs,v 1.3 2003/10/27 13:54:11 corts Exp $</version>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.Loader.ResourceLoader.isCachingOn">
+            <summary>
+            Does this loader want templates produced with it
+            cached in the Runtime.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.Loader.ResourceLoader.modificationCheckInterval">
+            <summary>
+            This property will be passed on to the templates
+            that are created with this loader.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.Loader.ResourceLoader.className">
+            <summary>
+            Class name for this loader, for logging/debugging
+            purposes.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.ResourceLoader.CommonInit(NVelocity.Runtime.IRuntimeServices,Commons.Collections.ExtendedProperties)">
+            <summary>
+            This initialization is used by all resource
+            loaders and must be called to set up common
+            properties shared by all resource loaders
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.ResourceLoader.Init(Commons.Collections.ExtendedProperties)">
+            <summary>
+            Initialize the template loader with a
+            a resources class.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.ResourceLoader.GetResourceStream(System.String)">
+            <summary>
+            Get the InputStream that the Runtime will parse
+            to create a template.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.ResourceLoader.IsSourceModified(NVelocity.Runtime.Resource.Resource)">
+            <summary>
+            Given a template, check to see if the source of InputStream
+            has been modified.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.ResourceLoader.GetLastModified(NVelocity.Runtime.Resource.Resource)">
+            <summary>
+            Get the last modified time of the InputStream source
+            that was used to create the template. We need the template
+            here because we have to extract the name of the template
+            in order to locate the InputStream source.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Resource.Loader.ResourceLoader.ClassName">
+            <summary>
+            Return the class name of this resource Loader
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Resource.Loader.ResourceLoader.CachingOn">
+            <summary>
+            Set the caching state. If true, then this loader
+            would like the Runtime to cache templates that
+            have been created with InputStreams provided
+            by this loader.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.AssemblyRelativeResourceLoader.Init(Commons.Collections.ExtendedProperties)">
+            <summary> 
+            Initialize the template loader with a
+            a resources class.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.AssemblyRelativeResourceLoader.GetResourceStream(System.String)">
+            
+             <summary> Get the InputStream that the Runtime will parse
+             to create a template.
+             </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.AssemblyRelativeResourceLoader.IsSourceModified(NVelocity.Runtime.Resource.Resource)">
+            <summary> Given a template, check to see if the source of InputStream
+            has been modified.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.AssemblyRelativeResourceLoader.GetLastModified(NVelocity.Runtime.Resource.Resource)">
+            <summary> Get the last modified time of the InputStream source
+            that was used to create the template. We need the template
+            here because we have to extract the name of the template
+            in order to locate the InputStream source.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.AssemblyResourceLoader.Init(Commons.Collections.ExtendedProperties)">
+            <summary> 
+            Initialize the template loader with a resources class.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.AssemblyResourceLoader.GetResourceStream(System.String)">
+            <summary> Get the InputStream that the Runtime will parse
+            to create a template.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.AssemblyResourceLoader.IsSourceModified(NVelocity.Runtime.Resource.Resource)">
+            <summary> Given a template, check to see if the source of InputStream
+            has been modified.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.AssemblyResourceLoader.GetLastModified(NVelocity.Runtime.Resource.Resource)">
+            <summary> Get the last modified time of the InputStream source
+            that was used to create the template. We need the template
+            here because we have to extract the name of the template
+            in order to locate the InputStream source.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Resource.Loader.FileResourceLoader">
+            <summary>
+            A loader for templates stored on the file system.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.Loader.FileResourceLoader.paths">
+            <summary>
+            The paths to search for templates.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.Loader.FileResourceLoader.templatePaths">
+            <summary>
+            Used to map the path that a template was found on
+            so that we can properly check the modification
+            times of the files.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.FileResourceLoader.GetResourceStream(System.String)">
+            <summary>
+            Get an InputStream so that the Runtime can build a
+            template with it.
+            </summary>
+            <param name="templateName">name of template to get</param>
+            <returns>InputStream containing the template
+            @throws ResourceNotFoundException if template not found
+            in the file template path.
+            </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.FileResourceLoader.FindTemplate(System.String,System.String)">
+            <summary>
+            Try to find a template given a normalized path.
+            </summary>
+            <param name="path">a normalized path</param>
+            <param name="template">filename of template to get</param>
+            <returns>InputStream input stream that will be parsed</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.FileResourceLoader.IsSourceModified(NVelocity.Runtime.Resource.Resource)">
+            <summary>
+            How to keep track of all the modified times
+            across the paths.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Resource.Loader.ResourceLoaderFactory">
+            <summary>
+            Factory to grab a template loader.
+            </summary>
+            <author><a href="mailto:jvanzyl@apache.org">Jason van Zyl</a></author>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Loader.ResourceLoaderFactory.getLoader(NVelocity.Runtime.IRuntimeServices,System.String)">
+            <summary>
+            Gets the loader specified in the configuration file.
+            </summary>
+            <returns>TemplateLoader</returns>
+        </member>
+        <member name="T:NVelocity.Runtime.Resource.ContentResource">
+             <summary> 
+             This class represent a general text resource that
+             may have been retrieved from any number of possible
+             sources.
+             
+             Also of interest is Velocity's {@link org.apache.velocity.Template}
+             <code>Resource</code>.
+             </summary>
+             <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
+             </author>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version> $Id: ContentResource.cs,v 1.5 2004/01/02 00:09:23 corts Exp $
+            
+             </version>
+        </member>
+        <member name="T:NVelocity.Runtime.Resource.Resource">
+            <summary>
+            This class represent a general text resource that
+            may have been retrieved from any number of possible
+            sources.
+            </summary>
+            <author><a href="mailto:jvanzyl@apache.org">Jason van Zyl</a></author>
+            <author><a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a></author>
+            <version> $Id: Resource.cs,v 1.5 2004/01/02 00:13:51 corts Exp $</version>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.Resource.MILLIS_PER_SECOND">
+            <summary>
+            The number of milliseconds in a minute, used to calculate the
+            check interval.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.Resource.data">
+            <summary>
+            Resource might require ancillary storage of some kind
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.Resource.encoding">
+            <summary>
+            Character encoding of this resource
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.Resource.lastModified">
+            <summary>
+            The file modification time (in milliseconds) for the cached template.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.Resource.modificationCheckInterval">
+            <summary>
+            How often the file modification time is checked (in milliseconds).
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.Resource.name">
+            <summary>
+            Name of the resource
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.Resource.nextCheck">
+            <summary>
+            The next time the file modification time will be checked (in milliseconds).
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.Resource.resourceLoader">
+            <summary>
+            The template loader that initially loaded the input
+            stream for this template, and knows how to check the
+            source of the input stream for modification.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Resource.Process">
+            <summary> 
+            Perform any subsequent processing that might need
+            to be done by a resource. In the case of a template
+            the actual parsing of the input stream needs to be
+            performed.
+            </summary>
+            <returns>
+            Whether the resource could be processed successfully.
+            For a {@link org.apache.velocity.Template} or {@link
+            org.apache.velocity.runtime.resource.ContentResource}, this
+            indicates whether the resource could be read.
+            @exception ResourceNotFoundException Similar in semantics as
+            returning <code>false</code>.
+            </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Resource.RequiresChecking">
+            <summary> Set the modification check interval.
+            </summary>
+            <summary> Is it time to check to see if the resource
+            source has been updated?
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.Resource.Touch">
+            <summary>
+            'Touch' this template and thereby resetting the nextCheck field.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Resource.Resource.Data">
+             <summary>
+             Set arbitrary data object that might be used
+             by the resource.
+            
+             Get arbitrary data object that might be used
+             by the resource.
+             </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Resource.Resource.Encoding">
+            <summary>
+            set the encoding of this resource
+            for example, "ISO-8859-1"
+            
+            get the encoding of this resource
+            for example, "ISO-8859-1"
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Resource.Resource.LastModified">
+            <summary>
+            Return the lastModified time of this
+            template.
+            
+            Set the last modified time for this
+            template.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Resource.Resource.Name">
+            <summary>
+            Set the name of this resource, for example test.vm.
+            
+            Get the name of this template.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Runtime.Resource.Resource.ResourceLoader">
+            <summary>
+            Return the template loader that pulled
+            in the template stream
+            
+            Set the template loader for this template. Set
+            when the Runtime determines where this template
+            came from the list of possible sources.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.ContentResource.#ctor">
+            <summary>Default empty constructor
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.ContentResource.Process">
+             <summary>
+             Pull in static content and store it.
+            
+             @exception ResourceNotFoundException Resource could not be
+             found.
+             </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Resource.ResourceCache">
+             <summary> Interface that defines the shape of a pluggable resource cache
+             for the included ResourceManager
+             *
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version> $Id: ResourceCache.cs,v 1.3 2003/10/27 13:54:11 corts Exp $
+            
+             </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.ResourceCache.initialize(NVelocity.Runtime.IRuntimeServices)">
+             <summary>  initializes the ResourceCache.  Will be
+             called before any utilization
+             *
+             </summary>
+             <param name="rs">RuntimeServices to use for logging, etc
+            
+             </param>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.ResourceCache.get(System.Object)">
+             <summary>  retrieves a Resource from the
+             cache
+             *
+             </summary>
+             <param name="resourceKey">key for Resource to be retrieved
+             </param>
+             <returns>Resource specified or null if not found
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.ResourceCache.put(System.Object,NVelocity.Runtime.Resource.Resource)">
+             <summary>  stores a Resource in the cache
+             *
+             </summary>
+             <param name="resourceKey">key to associate with the Resource
+             </param>
+             <param name="resource">Resource to be stored
+             </param>
+             <returns>existing Resource stored under this key, or null if none
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.ResourceCache.remove(System.Object)">
+            <summary>  removes a Resource from the cache
+            *
+            </summary>
+            <param name="resourceKey">resource to be removed
+            </param>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.ResourceCache.enumerateKeys">
+            <summary>  returns an Iterator of Keys in the cache
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Resource.ResourceCacheImpl">
+             <summary>
+             Default implementation of the resource cache for the default
+             ResourceManager.  The cache uses a <i>least recently used</i> (LRU)
+             algorithm, with a maximum size specified via the
+             <code>resource.manager.cache.size</code> property (identified by the
+             {@link
+             org.apache.velocity.runtime.RuntimeConstants#RESOURCE_MANAGER_CACHE_SIZE}
+             constant).  This property get be set to <code>0</code> or less for
+             a greedy, unbounded cache (the behavior from pre-v1.5).
+             *
+             </summary>
+             <author> <a href="mailto:geirm@apache.org">Geir Magnusson Jr.</a>
+             </author>
+             <author> <a href="mailto:dlr@finemaltcoding.com">Daniel Rall</a>
+             </author>
+             <version> $Id: ResourceCacheImpl.cs,v 1.5 2004/12/23 08:14:32 corts Exp $
+            
+             </version>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.ResourceCacheImpl.cache">
+            <summary>
+            Cache storage, assumed to be thread-safe.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.ResourceCacheImpl.runtimeServices">
+            <summary>
+            Runtime services, generally initialized by the
+            <code>initialize()</code> method.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Resource.ResourceFactory">
+            <summary>
+            Class responsible for instantiating <code>Resource</code> objects,
+            given name and type.
+            </summary>
+            <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a> </author>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a> </author>
+            <version> $Id: ResourceFactory.cs,v 1.3 2003/10/27 13:54:11 corts Exp $ </version>
+        </member>
+        <member name="T:NVelocity.Runtime.Resource.ResourceType">
+            <summary> 
+            Class to manage the text resource for the Velocity
+            Runtime.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.ResourceType.Template">
+            <summary>
+            A template resources.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.ResourceType.Content">
+            <summary>
+            A static content resource.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.IResourceManager.Initialize(NVelocity.Runtime.IRuntimeServices)">
+            <summary>
+            Initialize the ResourceManager.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.IResourceManager.GetResource(System.String,NVelocity.Runtime.Resource.ResourceType,System.String)">
+            <summary> 
+            Gets the named resource. Returned class type corresponds to specified type
+            (i.e. <c>Template</c> to <c>Template</c>).
+            </summary>
+            <param name="resourceName">The name of the resource to retrieve.</param>
+            <param name="resourceType">The type of resource (<code>Template</code>, <code>Content</code>, etc.).</param>
+            <param name="encoding">The character encoding to use.</param>
+            <returns>Resource with the template parsed and ready.</returns>
+            <exception cref="T:NVelocity.Exception.ResourceNotFoundException">
+            if template not found from any available source.
+            </exception>
+            <exception cref="T:NVelocity.Exception.ParseErrorException">
+            if template cannot be parsed due to syntax (or other) error.
+            </exception>
+            <exception cref="T:System.Exception">
+            if a problem in parse
+            </exception>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.IResourceManager.GetLoaderNameForResource(System.String)">
+            <summary> 
+            Determines is a template exists, and returns name of the loader that
+            provides it.  This is a slightly less hokey way to support
+            the Velocity.templateExists() utility method, which was broken
+            when per-template encoding was introduced.  We can revisit this.
+            </summary>
+            <param name="resourceName">Name of template or content resource</param>
+            <returns>class name of loader than can provide it</returns>
+        </member>
+        <member name="T:NVelocity.Runtime.Resource.ResourceManagerImpl">
+            <summary> 
+            Class to manage the text resource for the Velocity Runtime.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.ResourceManagerImpl.RESOURCE_LOADER_IDENTIFIER">
+            <summary>
+            token used to identify the loader internally
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.ResourceManagerImpl.globalCache">
+            <summary>
+            Object implementing ResourceCache to
+            be our resource manager's Resource cache.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.ResourceManagerImpl.resourceLoaders">
+            <summary> 
+            The List of templateLoaders that the Runtime will
+            use to locate the InputStream source of a template.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.ResourceManagerImpl.sourceInitializerList">
+            <summary>
+            This is a list of the template input stream source
+            initializers, basically properties for a particular
+            template stream source. The order in this list
+            reflects numbering of the properties i.e.
+            &lt;loader-id&gt;.resource.loader.&lt;property&gt; = &lt;value&gt;
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.ResourceManagerImpl.resourceLoaderInitializersActive">
+            <summary>
+            Each loader needs a configuration object for
+            its initialization, this flags keeps track of whether
+            or not the configuration objects have been created
+            for the resource loaders.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Resource.ResourceManagerImpl.logWhenFound">
+            <summary>
+            switch to turn off log notice when a resource is found for
+            the first time.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.ResourceManagerImpl.Initialize(NVelocity.Runtime.IRuntimeServices)">
+            <summary>
+            Initialize the ResourceManager.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.ResourceManagerImpl.AssembleResourceLoaderInitializers">
+            <summary>
+            This will produce a List of Hashtables, each
+            hashtable contains the initialization info for
+            a particular resource loader. This Hashtable
+            will be passed in when initializing the
+            the template loader.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.ResourceManagerImpl.GetResource(System.String,NVelocity.Runtime.Resource.ResourceType,System.String)">
+             <summary> Gets the named resource.  Returned class type corresponds to specified type
+             (i.e. <code>Template</code> to <code>Template</code>).
+             *
+             </summary>
+             <param name="resourceName">The name of the resource to retrieve.
+             </param>
+             <param name="resourceType">The type of resource (<code>Template</code>,
+             <code>Content</code>, etc.).
+             </param>
+             <param name="encoding"> The character encoding to use.
+             </param>
+             <returns>Resource with the template parsed and ready.
+             @throws ResourceNotFoundException if template not found
+             from any available source.
+             @throws ParseErrorException if template cannot be parsed due
+             to syntax (or other) error.
+             @throws Exception if a problem in parse
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.ResourceManagerImpl.LoadResource(System.String,NVelocity.Runtime.Resource.ResourceType,System.String)">
+            <summary>
+            Loads a resource from the current set of resource loaders
+            </summary>
+            <param name="resourceName">The name of the resource to retrieve.</param>
+            <param name="resourceType">The type of resource (<code>Template</code>,
+            <code>Content</code>, etc.).
+            </param>
+            <param name="encoding"> The character encoding to use.</param>
+            <returns>Resource with the template parsed and ready.
+            @throws ResourceNotFoundException if template not found
+            from any available source.
+            @throws ParseErrorException if template cannot be parsed due
+            to syntax (or other) error.
+            @throws Exception if a problem in parse
+            </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.ResourceManagerImpl.RefreshResource(NVelocity.Runtime.Resource.Resource,System.String)">
+             <summary>  Takes an existing resource, and 'refreshes' it.  This
+             generally means that the source of the resource is checked
+             for changes according to some cache/check algorithm
+             and if the resource changed, then the resource data is
+             reloaded and re-parsed.
+             *
+             </summary>
+             <param name="resource">resource to refresh
+             *
+             @throws ResourceNotFoundException if template not found
+             from current source for this Resource
+             @throws ParseErrorException if template cannot be parsed due
+             to syntax (or other) error.
+             @throws Exception if a problem in parse
+            
+             </param>
+             <param name="encoding"></param>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.ResourceManagerImpl.GetResource(System.String,NVelocity.Runtime.Resource.ResourceType)">
+             <summary> Gets the named resource.  Returned class type corresponds to specified type
+             (i.e. <code>Template</code> to <code>Template</code>).
+             *
+             </summary>
+             <param name="resourceName">The name of the resource to retrieve.
+             </param>
+             <param name="resourceType">The type of resource (<code>Template</code>,
+             <code>Content</code>, etc.).
+             </param>
+             <returns>Resource with the template parsed and ready.
+             @throws ResourceNotFoundException if template not found
+             from any available source.
+             @throws ParseErrorException if template cannot be parsed due
+             to syntax (or other) error.
+             @throws Exception if a problem in parse
+             *
+             </returns>
+             <deprecated>Use
+             {@link #GetResource(String resourceName, int resourceType,
+             String encoding )}
+            
+             </deprecated>
+        </member>
+        <member name="M:NVelocity.Runtime.Resource.ResourceManagerImpl.GetLoaderNameForResource(System.String)">
+             <summary>  Determines is a template exists, and returns name of the loader that
+             provides it.  This is a slightly less hokey way to support
+             the Velocity.templateExists() utility method, which was broken
+             when per-template encoding was introduced.  We can revisit this.
+             </summary>
+             <param name="resourceName">Name of template or content resource
+             </param>
+             <returns>class name of loader than can provide it
+            
+             </returns>
+        </member>
+        <member name="T:NVelocity.Runtime.Visitor.BaseVisitor">
+             <summary> This is the base class for all visitors.
+             For each AST node, this class will provide
+             a bare-bones method for traversal.
+             *
+             </summary>
+             <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
+             </author>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version> $Id: BaseVisitor.cs,v 1.3 2003/10/27 13:54:11 corts Exp $
+            
+             </version>
+        </member>
+        <member name="F:NVelocity.Runtime.Visitor.BaseVisitor.context">
+            <summary>
+            Context used during traversal
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.Visitor.BaseVisitor.writer">
+            <summary>
+            Writer used as the output sink
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Visitor.NodeViewMode">
+             <summary> This class is simply a visitor implementation
+             that traverses the AST, produced by the Velocity
+             parsing process, and creates a visual structure
+             of the AST. This is primarily used for
+             debugging, but it useful for documentation
+             as well.
+             *
+             </summary>
+             <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
+             </author>
+             <version> $Id: NodeViewMode.cs,v 1.3 2003/10/27 13:54:11 corts Exp $
+            
+             </version>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.IndentString">
+            <summary>Indent child nodes to help visually identify
+            the structure of the AST.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.ShowNode(NVelocity.Runtime.Parser.Node.INode,System.Object)">
+            <summary> Display the type of nodes and optionally the
+            first token.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.SimpleNode,System.Object)">
+            <summary>Display a SimpleNode
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTprocess,System.Object)">
+            <summary>Display an ASTprocess node
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTExpression,System.Object)">
+            <summary>Display an ASTExpression node
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTAssignment,System.Object)">
+            <summary>Display an ASTAssignment node ( = )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTOrNode,System.Object)">
+            <summary>Display an ASTOrNode ( || )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTAndNode,System.Object)">
+            <summary>Display an ASTAndNode ( &amp;&amp; )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTEQNode,System.Object)">
+            <summary>Display an ASTEQNode ( == )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTNENode,System.Object)">
+            <summary>Display an ASTNENode ( != )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTLTNode,System.Object)">
+            <summary>Display an ASTLTNode ( &lt; )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTGTNode,System.Object)">
+            <summary>Display an ASTGTNode ( &gt; )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTLENode,System.Object)">
+            <summary>Display an ASTLENode ( &lt;= )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTGENode,System.Object)">
+            <summary>Display an ASTGENode ( &gt;= )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTAddNode,System.Object)">
+            <summary>Display an ASTAddNode ( + )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTSubtractNode,System.Object)">
+            <summary>Display an ASTSubtractNode ( - )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTMulNode,System.Object)">
+            <summary>Display an ASTMulNode ( * )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTDivNode,System.Object)">
+            <summary>Display an ASTDivNode ( / )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTModNode,System.Object)">
+            <summary>Display an ASTModNode ( % )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTNotNode,System.Object)">
+            <summary>Display an ASTNotNode ( ! )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTNumberLiteral,System.Object)">
+            <summary>Display an ASTNumberLiteral node
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTStringLiteral,System.Object)">
+            <summary>Display an ASTStringLiteral node
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTIdentifier,System.Object)">
+            <summary>Display an ASTIdentifier node
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTMethod,System.Object)">
+            <summary>Display an ASTMethod node
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTReference,System.Object)">
+            <summary>Display an ASTReference node
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTTrue,System.Object)">
+            <summary>Display an ASTTrue node
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTFalse,System.Object)">
+            <summary>Display an ASTFalse node
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTBlock,System.Object)">
+            <summary>Display an ASTBlock node
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTText,System.Object)">
+            <summary>Display an ASTText node
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTIfStatement,System.Object)">
+            <summary>Display an ASTIfStatement node
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTElseStatement,System.Object)">
+            <summary>Display an ASTElseStatement node
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.NodeViewMode.Visit(NVelocity.Runtime.Parser.Node.ASTElseIfStatement,System.Object)">
+            <summary>Display an ASTElseIfStatement node
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.Visitor.VMReferenceMungeVisitor">
+            <summary>
+            This class is a visitor used by the VM proxy to change the
+            literal representation of a reference in a VM.  The reason is
+            to preserve the 'render literal if null' behavior w/o making
+            the VMProxy stuff more complicated than it is already.
+            </summary>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a></author>
+            <version> $Id: VMReferenceMungeVisitor.cs,v 1.3 2003/10/27 13:54:11 corts Exp $</version>
+        </member>
+        <member name="F:NVelocity.Runtime.Visitor.VMReferenceMungeVisitor.argumentMap">
+            <summary>
+            Map containing VM arg to instance-use reference
+            Passed in with CTOR
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.VMReferenceMungeVisitor.#ctor(System.Collections.Hashtable)">
+            <summary>
+            CTOR - takes a map of args to reference
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.Visitor.VMReferenceMungeVisitor.Visit(NVelocity.Runtime.Parser.Node.ASTReference,System.Object)">
+            <summary>
+            Visitor method - if the literal is right, will
+            set the literal in the ASTReference node
+            </summary>
+            <param name="node">ASTReference to work on</param>
+            <param name="data">Object to pass down from caller</param>
+        </member>
+        <member name="T:NVelocity.Runtime.IRuntimeLogger">
+            <summary>
+            Interface for internal runtime logging services that are needed by the
+            </summary>
+            <author><a href="mailto:geirm@apache.org">Geir Magusson Jr.</a></author>
+            <version>$Id: RuntimeLogger.cs,v 1.1 2004/01/02 00:04:50 corts Exp $</version>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeLogger.Warn(System.Object)">
+            <summary>
+            Log a warning message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeLogger.Info(System.Object)">
+            <summary>
+            Log an info message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeLogger.Error(System.Object)">
+            <summary>
+            Log an error message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeLogger.Debug(System.Object)">
+            <summary>
+            Log a debug message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="T:NVelocity.Runtime.IRuntimeServices">
+             <summary> Interface for internal runtime services that are needed by the
+             various components w/in Velocity.  This was taken from the old
+             Runtime singleton, and anything not necessary was removed.
+            
+             Currently implemented by RuntimeInstance.
+             </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.SetProperty(System.String,System.Object)">
+            <summary>
+            Allows an external system to set a property in
+            the Velocity Runtime.
+            </summary>
+            <param name="key">property key</param>
+            <param name="value">property value</param>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.AddProperty(System.String,System.Object)">
+            <summary> Add a property to the configuration. If it already
+            exists then the value stated here will be added
+            to the configuration entry. For example, if
+            *
+            resource.loader = file
+            *
+            is already present in the configuration and you
+            *
+            addProperty("resource.loader", "classpath")
+            *
+            Then you will end up with a Vector like the
+            following:
+            *
+            ["file", "classpath"]
+            *
+            </summary>
+            <param name="key">key</param>
+            <param name="value">value</param>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.ClearProperty(System.String)">
+            <summary>
+            Clear the values pertaining to a particular property.
+            </summary>
+            <param name="key">key of property to clear</param>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.GetProperty(System.String)">
+             <summary>  Allows an external caller to get a property.  The calling
+             routine is required to know the type, as this routine
+             will return an Object, as that is what properties can be.
+             *
+             </summary>
+             <param name="key">property to return
+            
+             </param>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.Init(System.String)">
+            <summary>
+            Initialize the Velocity Runtime with the name of
+            ExtendedProperties object.
+            </summary>
+            <param name="configurationFile">Properties</param>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.Parse(System.IO.TextReader,System.String)">
+            <summary>
+            Parse the input and return the root of
+            AST node structure.
+            </summary>
+            <remarks>
+            In the event that it runs out of parsers in the
+            pool, it will create and let them be GC'd
+            dynamically, logging that it has to do that.  This
+            is considered an exceptional condition.  It is
+            expected that the user will set the
+            PARSER_POOL_SIZE property appropriately for their
+            application.  We will revisit this.
+            </remarks>
+            <param name="reader">inputStream retrieved by a resource loader</param>
+            <param name="templateName">name of the template being parsed</param>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.Parse(System.IO.TextReader,System.String,System.Boolean)">
+            <summary>
+            Parse the input and return the root of the AST node structure.
+            </summary>
+            <param name="reader">inputStream retrieved by a resource loader</param>
+            <param name="templateName">name of the template being parsed</param>
+            <param name="dumpNamespace">flag to dump the Velocimacro namespace for this template</param>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.GetTemplate(System.String)">
+             <summary> Returns a <code>Template</code> from the resource manager.
+             This method assumes that the character encoding of the
+             template is set by the <code>input.encoding</code>
+             property.  The default is "ISO-8859-1"
+             *
+             </summary>
+             <param name="name">The file name of the desired template.
+             </param>
+             <returns>    The template.
+             @throws ResourceNotFoundException if template not found
+             from any available source.
+             @throws ParseErrorException if template cannot be parsed due
+             to syntax (or other) error.
+             @throws Exception if an error occurs in template initialization
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.GetTemplate(System.String,System.String)">
+             <summary> Returns a <code>Template</code> from the resource manager
+             *
+             </summary>
+             <param name="name">The  name of the desired template.
+             </param>
+             <param name="encoding">Character encoding of the template
+             </param>
+             <returns>    The template.
+             @throws ResourceNotFoundException if template not found
+             from any available source.
+             @throws ParseErrorException if template cannot be parsed due
+             to syntax (or other) error.
+             @throws Exception if an error occurs in template initialization
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.GetContent(System.String)">
+             <summary> Returns a static content resource from the
+             resource manager.  Uses the current value
+             if INPUT_ENCODING as the character encoding.
+             *
+             </summary>
+             <param name="name">Name of content resource to get
+             </param>
+             <returns>parsed ContentResource object ready for use
+             @throws ResourceNotFoundException if template not found
+             from any available source.
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.GetContent(System.String,System.String)">
+             <summary> Returns a static content resource from the
+             resource manager.
+             *
+             </summary>
+             <param name="name">Name of content resource to get
+             </param>
+             <param name="encoding">Character encoding to use
+             </param>
+             <returns>parsed ContentResource object ready for use
+             @throws ResourceNotFoundException if template not found
+             from any available source.
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.GetLoaderNameForResource(System.String)">
+             <summary>  Determines is a template exists, and returns name of the loader that
+             provides it.  This is a slightly less hokey way to support
+             the Velocity.templateExists() utility method, which was broken
+             when per-template encoding was introduced.  We can revisit this.
+             *
+             </summary>
+             <param name="resourceName">Name of template or content resource
+             </param>
+             <returns>class name of loader than can provide it
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.GetString(System.String,System.String)">
+            <summary>
+            String property accessor method with default to hide the
+            configuration implementation.
+            </summary>
+            <param name="key">key property key</param>
+            <param name="defaultValue">default value to return if key not
+            found in resource manager.
+            </param>
+            <returns>value of key or default</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.GetVelocimacro(System.String,System.String)">
+            <summary>
+            Returns the appropriate VelocimacroProxy object if vmName
+            is a valid current Velocimacro.
+            </summary>
+            <param name="vmName">Name of velocimacro requested</param>
+            <param name="templateName">Template Name</param>
+            <returns>VelocimacroProxy</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.AddVelocimacro(System.String,System.String,System.String[],System.String)">
+            <summary>
+            Adds a new Velocimacro. Usually called by Macro only while parsing.
+            </summary>
+            <param name="name">name  Name of velocimacro</param>
+            <param name="macro">macro  String form of macro body</param>
+            <param name="argArray">argArray  Array of strings, containing the
+            <c>#macro()</c> arguments.  the 0th is the name.</param>
+            <param name="sourceTemplate">Source Template</param>
+            <returns>
+            True if added, false if rejected for some
+            reason (either parameters or permission settings)
+            </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.IsVelocimacro(System.String,System.String)">
+            <summary>
+            Checks to see if a VM exists
+            </summary>
+            <param name="vmName">Name of velocimacro</param>
+            <param name="templateName">Template Name</param>
+            <returns>True if VM by that name exists, false if not</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.DumpVMNamespace(System.String)">
+            <summary>  tells the vmFactory to dump the specified namespace.  This is to support
+            clearing the VM list when in inline-VM-local-scope mode
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.GetString(System.String)">
+            <summary>
+            String property accessor method to hide the configuration implementation.
+            </summary>
+            <param name="key">property key</param>
+            <returns>value</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.GetInt(System.String)">
+            <summary>
+            Int property accessor method to hide the configuration implementation.
+            </summary>
+            <param name="key">property key</param>
+            <returns>value</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.GetInt(System.String,System.Int32)">
+            <summary>
+            Int property accessor method to hide the configuration implementation.
+            </summary>
+            <param name="key">property key</param>
+            <param name="defaultValue">default value</param>
+            <returns>value</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.GetBoolean(System.String,System.Boolean)">
+            <summary>
+            Boolean property accessor method to hide the configuration implementation.
+            </summary>
+            <param name="key">property key</param>
+            <param name="def">default value</param>
+            <returns>value</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.GetApplicationAttribute(System.Object)">
+            <summary>
+            Return the specified application attribute
+            </summary>
+            <param name="key"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NVelocity.Runtime.IRuntimeServices.SetApplicationAttribute(System.Object,System.Object)">
+            <summary>
+            Sets the specified application attribute.
+            </summary>
+            <param name="key"></param>
+            <param name="value"></param>
+        </member>
+        <member name="P:NVelocity.Runtime.IRuntimeServices.Configuration">
+             Return the velocity runtime configuration object.
+            
+             @return ExtendedProperties configuration object which houses
+                                   the velocity runtime properties.
+        </member>
+        <member name="P:NVelocity.Runtime.IRuntimeServices.Uberspect">
+            Returns the configured class introspection/reflection
+            implementation.
+        </member>
+        <member name="P:NVelocity.Runtime.IRuntimeServices.Introspector">
+            Returns the configured method introspection/reflection
+            implementation.
+        </member>
+        <member name="T:NVelocity.Runtime.RuntimeConstants">
+            <summary>
+            This class defines the keys that are used in the
+            velocity.properties file so that they can be referenced as a constant
+            within Java code.
+            </summary>
+            <author> <a href="mailto:jon@latchkey.com">Jon S. Stevens</a></author>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a></author>
+            <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a></author>
+        </member>
+        <member name="F:NVelocity.Runtime.RuntimeConstants.RESOURCE_MANAGER_CACHE_CLASS">
+            <summary>
+            The <code>resource.manager.cache.class</code> property 
+            specifies the name of the <see cref="T:NVelocity.Runtime.Resource.ResourceCache"/> implementation to use.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.RuntimeConstants.RESOURCE_MANAGER_DEFAULTCACHE_SIZE">
+            <summary>
+            The <code>resource.manager.cache.size</code> property 
+            specifies the cache upper bound (if relevant).
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.RuntimeConstants.NUMBER_OF_PARSERS">
+            <summary>
+            The default number of parser instances to create.
+            Configurable via the parameter named by the <see cref="F:NVelocity.Runtime.RuntimeConstants.PARSER_POOL_SIZE"/> constant.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.RuntimeConstants.PARSER_POOL_SIZE">
+            <summary>
+            <see cref="F:NVelocity.Runtime.RuntimeConstants.NUMBER_OF_PARSERS"/>
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.RuntimeConstants.UBERSPECT_CLASSNAME">
+            <summary>
+            key name for uberspector
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.RuntimeInstance">
+             <summary> 
+             This is the Runtime system for Velocity. It is the
+             single access point for all functionality in Velocity.
+             It adheres to the mediator pattern and is the only
+             structure that developers need to be familiar with
+             in order to get Velocity to perform.
+             
+             The Runtime will also cooperate with external
+             systems like Turbine. Runtime properties can
+             set and then the Runtime is initialized.
+             
+             Turbine for example knows where the templates
+             are to be loaded from, and where the velocity
+             log file should be placed.
+             
+             So in the case of Velocity cooperating with Turbine
+             the code might look something like the following:
+             
+             <code>
+             Runtime.setProperty(Runtime.FILE_RESOURCE_LOADER_PATH, templatePath);
+             Runtime.setProperty(Runtime.RUNTIME_LOG, pathToVelocityLog);
+             Runtime.init();
+             </code>
+             
+             <pre>
+             -----------------------------------------------------------------------
+             N O T E S  O N  R U N T I M E  I N I T I A L I Z A T I O N
+             -----------------------------------------------------------------------
+             Runtime.init()
+            
+             If Runtime.init() is called by itself the Runtime will
+             initialize with a set of default values.
+             -----------------------------------------------------------------------
+             Runtime.init(String/Properties)
+             
+             In this case the default velocity properties are layed down
+             first to provide a solid base, then any properties provided
+             in the given properties object will override the corresponding
+             default property.
+             -----------------------------------------------------------------------
+             </pre>
+             
+             </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.RuntimeInstance.vmFactory">
+            <summary>
+            VelocimacroFactory object to manage VMs
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.RuntimeInstance.parserPool">
+            <summary>
+            The Runtime parser pool
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.RuntimeInstance.initialized">
+            <summary>
+            Indicate whether the Runtime has been fully initialized.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.RuntimeInstance.overridingProperties">
+            <summary>
+            These are the properties that are laid down over top
+            of the default properties when requested.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.RuntimeInstance.configuration">
+            <summary>
+            Object that houses the configuration options for
+            the velocity runtime. The ExtendedProperties object allows
+            the convenient retrieval of a subset of properties.
+            For example all the properties for a resource loader
+            can be retrieved from the main ExtendedProperties object
+            using something like the following:
+            
+            <code>
+            ExtendedProperties loaderConfiguration =
+            configuration.subset(loaderID);
+            </code>
+            
+            And a configuration is a lot more convenient to deal
+            with then conventional properties objects, or Maps.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.RuntimeInstance.introspector">
+            <summary>
+            Each runtime instance has it's own introspector
+            to ensure that each instance is completely separate.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.RuntimeInstance.applicationAttributes">
+            <summary>
+            Opaque reference to something specified by the 
+            application for use in application supplied/specified
+            pluggable components.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.initializeIntrospection">
+            <summary>
+            Gets the classname for the Uberspect introspection package and
+            instantiates an instance.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.setDefaultProperties">
+            <summary>
+            Initializes the Velocity Runtime with properties file.
+            The properties file may be in the file system proper,
+            or the properties file may be in the classpath.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.SetProperty(System.String,System.Object)">
+            <summary>
+            Allows an external system to set a property in
+            the Velocity Runtime.
+            </summary>
+            <param name="key">property key </param>
+            <param name="value">property value</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.AddProperty(System.String,System.Object)">
+            <summary>
+            Add a property to the configuration. If it already
+            exists then the value stated here will be added
+            to the configuration entry.
+            <remarks>
+            For example, if
+            <c>resource.loader = file</c>
+            is already present in the configuration and you
+            <c>addProperty("resource.loader", "classpath")</c>
+            
+            Then you will end up with a <see cref="T:System.Collections.IList"/> like the
+            following:
+            
+            <c>["file", "classpath"]</c>
+            </remarks>
+            </summary>
+            <param name="key">key</param>
+            <param name="value">value</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.ClearProperty(System.String)">
+            <summary>
+            Clear the values pertaining to a particular
+            property.
+            </summary>
+            <param name="key">key of property to clear</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.GetProperty(System.String)">
+            <summary>
+            Allows an external caller to get a property.
+            <remarks>
+            The calling routine is required to know the type, as this routine
+            will return an Object, as that is what properties can be.
+            </remarks>
+            </summary>
+            <param name="key">property to return</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.initializeProperties">
+            <summary>
+            Initialize Velocity properties, if the default
+            properties have not been laid down first then
+            do so. Then proceed to process any overriding
+            properties. Laying down the default properties
+            gives a much greater chance of having a
+            working system.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.Init(Commons.Collections.ExtendedProperties)">
+            <summary>
+            Initialize the Velocity Runtime with a Properties
+            object.
+            </summary>
+            <param name="p">Properties</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.Init(System.String)">
+            <summary>
+            Initialize the Velocity Runtime with the name of
+            ExtendedProperties object.
+            </summary>
+            <param name="configurationFile">Properties</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.initializeLogger">
+            <summary> Initialize the Velocity logging system.
+            *
+            @throws Exception
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.initializeDirectives">
+             <summary> This methods initializes all the directives
+             that are used by the Velocity Runtime. The
+             directives to be initialized are listed in
+             the RUNTIME_DEFAULT_DIRECTIVES properties
+             file.
+            
+             @throws Exception
+             </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.initializeParserPool">
+            <summary> Initializes the Velocity parser pool.
+            This still needs to be implemented.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.CreateNewParser">
+            <summary> Returns a JavaCC generated Parser.
+            </summary>
+            <returns>Parser javacc generated parser
+            </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.Parse(System.IO.TextReader,System.String)">
+            <summary>
+            Parse the input and return the root of
+            AST node structure.
+            <remarks>
+            In the event that it runs out of parsers in the
+            pool, it will create and let them be GC'd
+            dynamically, logging that it has to do that.  This
+            is considered an exceptional condition.  It is
+            expected that the user will set the
+            <c>PARSER_POOL_SIZE</c> property appropriately for their
+            application.  We will revisit this.
+            </remarks>
+            </summary>
+            <param name="reader">inputstream retrieved by a resource loader</param>
+            <param name="templateName">name of the template being parsed</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.Parse(System.IO.TextReader,System.String,System.Boolean)">
+            <summary>
+            Parse the input and return the root of the AST node structure.
+            </summary>
+            <param name="reader">inputstream retrieved by a resource loader</param>
+            <param name="templateName">name of the template being parsed</param>
+            <param name="dumpNamespace">flag to dump the Velocimacro namespace for this template</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.GetTemplate(System.String)">
+            <summary>
+            Returns a <code>Template</code> from the resource manager.
+            This method assumes that the character encoding of the
+            template is set by the <code>input.encoding</code>
+            property.  The default is "ISO-8859-1"
+            </summary>
+            <param name="name">The file name of the desired template.
+            </param>
+            <returns>The template.</returns>
+            <exception cref="T:NVelocity.Exception.ResourceNotFoundException">
+            if template not found from any available source
+            </exception>
+            <exception cref="T:NVelocity.Exception.ParseErrorException">
+            if template cannot be parsed due to syntax (or other) error.
+            </exception>
+            <exception cref="N:NVelocity.Runtime.Exception">
+            if an error occurs in template initialization
+            </exception>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.GetTemplate(System.String,System.String)">
+            <summary>
+            Returns a <code>Template</code> from the resource manager
+            </summary>
+            <param name="name">The name of the desired template.</param>
+            <param name="encoding">Character encoding of the template</param>
+            <returns>The template.</returns>
+            <exception cref="T:NVelocity.Exception.ResourceNotFoundException">
+            if template not found from any available source.
+            </exception>
+            <exception cref="T:NVelocity.Exception.ParseErrorException">
+            if template cannot be parsed due to syntax (or other) error.
+            </exception>
+            <exception cref="N:NVelocity.Runtime.Exception">
+            if an error occurs in template initialization
+            </exception>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.GetContent(System.String)">
+            <summary>
+            Returns a static content resource from the
+            resource manager.  Uses the current value
+            if <c>INPUT_ENCODING</c> as the character encoding.
+            </summary>
+            <param name="name">Name of content resource to get</param>
+            <returns>ContentResource object ready for use</returns>
+            <exception cref="T:NVelocity.Exception.ResourceNotFoundException">
+            if template not found from any available source.
+            </exception>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.GetContent(System.String,System.String)">
+            <summary>
+            Returns a static content resource from the
+            resource manager.
+            </summary>
+            <param name="name">Name of content resource to get</param>
+            <param name="encoding">Character encoding to use</param>
+            <returns>ContentResource object ready for use</returns>
+            <exception cref="T:NVelocity.Exception.ResourceNotFoundException">
+            if template not found from any available source.
+            </exception>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.GetLoaderNameForResource(System.String)">
+            <summary>
+            Determines is a template exists, and returns name of the loader that
+            provides it.  This is a slightly less hokey way to support
+            the <c>Velocity.templateExists()</c> utility method, which was broken
+            when per-template encoding was introduced.  We can revisit this.
+            </summary>
+            <param name="resourceName">Name of template or content resource</param>
+            <returns>class name of loader than can provide it</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.showStackTrace">
+            <summary>
+            Added this to check and make sure that the configuration
+            is initialized before trying to get properties from it.
+            This occurs when there are errors during initialization
+            and the default properties have yet to be layed down.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.Log(NVelocity.Runtime.Log.LogLevel,System.Object)">
+            <summary>
+            Handle logging.
+            </summary>
+            <param name="level">log level</param>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.Warn(System.Object)">
+            <summary>
+            Log a warning message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.Info(System.Object)">
+            <summary>
+            Log an info message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.Error(System.Object)">
+            <summary>
+            Log an error message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.Debug(System.Object)">
+            <summary>
+            Log a debug message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.GetString(System.String,System.String)">
+            <summary>
+            String property accessor method with default to hide the
+            configuration implementation.
+            </summary>
+            <param name="key">key property key</param>
+            <param name="defaultValue">default value to return if key not found in resource manager.</param>
+            <returns>String  value of key or default</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.GetVelocimacro(System.String,System.String)">
+            <summary>
+            Returns the appropriate VelocimacroProxy object if strVMname
+            is a valid current Velocimacro.
+            </summary>
+            <param name="vmName">Name of velocimacro requested</param>
+            <param name="templateName">Name of template</param>
+            <returns>VelocimacroProxy</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.AddVelocimacro(System.String,System.String,System.String[],System.String)">
+            <summary>
+            Adds a new Velocimacro. Usually called by Macro only while parsing.
+            </summary>
+            <param name="name">Name of velocimacro</param>
+            <param name="macro">String form of macro body</param>
+            <param name="argArray">Array of strings, containing the #macro() arguments.  the 0th is the name.</param>
+            <param name="sourceTemplate">Name of template</param>
+            <returns>
+            True if added, false if rejected for some
+            reason (either parameters or permission settings)
+            </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.IsVelocimacro(System.String,System.String)">
+            <summary>
+            Checks to see if a VM exists
+            </summary>
+            <param name="vmName">Name of velocimacro</param>
+            <param name="templateName">Name of template</param>
+            <returns>
+            True if VM by that name exists, false if not
+            </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.DumpVMNamespace(System.String)">
+            <summary>
+            Tells the vmFactory to dump the specified namespace.
+            This is to support clearing the VM list when in 
+            <c>inline-VM-local-scope</c> mode.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.GetString(System.String)">
+            <summary>
+            String property accessor method to hide the configuration implementation
+            </summary>
+            <param name="key">property key</param>
+            <returns>value of key or null</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.GetInt(System.String)">
+            <summary>
+            Int property accessor method to hide the configuration implementation.
+            </summary>
+            <param name="key">property key</param>
+            <returns>value</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.GetInt(System.String,System.Int32)">
+            <summary>
+            Int property accessor method to hide the configuration implementation.
+            </summary>
+            <param name="key">property key</param>
+            <param name="defaultValue">default value</param>
+            <returns>value</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.GetBoolean(System.String,System.Boolean)">
+            <summary>
+            Boolean property accessor method to hide the configuration implementation.
+            </summary>
+            <param name="key">property key</param>
+            <param name="def">default value if property not found</param>
+            <returns>boolean  value of key or default value</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeInstance.GetApplicationAttribute(System.Object)">
+            <summary>
+            Return the velocity runtime configuration object.
+            </summary>
+            <returns>
+            ExtendedProperties configuration object which houses
+            the velocity runtime properties.
+            </returns>
+        </member>
+        <member name="P:NVelocity.Runtime.RuntimeInstance.Uberspect">
+            <summary>
+            Return the Introspector for this instance
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.RuntimeSingleton">
+             <summary>
+             This is the Runtime system for Velocity. It is the
+             single access point for all functionality in Velocity.
+             It adheres to the mediator pattern and is the only
+             structure that developers need to be familiar with
+             in order to get Velocity to perform.
+             
+             The Runtime will also cooperate with external
+             systems like Turbine. Runtime properties can
+             set and then the Runtime is initialized.
+             
+             Turbine for example knows where the templates
+             are to be loaded from, and where the velocity
+             log file should be placed.
+             
+             So in the case of Velocity cooperating with Turbine
+             the code might look something like the following:
+             
+             <pre>
+             RuntimeSingleton.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, templatePath);
+             RuntimeSingleton.setProperty(RuntimeConstants.RUNTIME_LOG, pathToVelocityLog);
+             RuntimeSingleton.init();
+             </pre>
+             <pre>
+             -----------------------------------------------------------------------
+             N O T E S  O N  R U N T I M E  I N I T I A L I Z A T I O N
+             -----------------------------------------------------------------------
+             RuntimeSingleton.init()
+            
+             If Runtime.init() is called by itself the Runtime will
+             initialize with a set of default values.
+             -----------------------------------------------------------------------
+             RuntimeSingleton.init(String/Properties)
+             
+             In this case the default velocity properties are layed down
+             first to provide a solid base, then any properties provided
+             in the given properties object will override the corresponding
+             default property.
+             -----------------------------------------------------------------------
+             </pre>
+             </summary>
+             <author><a href="mailto:jvanzyl@apache.org">Jason van Zyl</a></author>
+             <author><a href="mailto:jlb@houseofdistraction.com">Jeff Bowden</a></author>
+             <author><a href="mailto:geirm@optonline.net">Geir Magusson Jr.</a></author>
+             <author><a href="mailto:dlr@finemaltcoding.com">Daniel Rall</a></author>
+             <version> $Id: RuntimeSingleton.cs,v 1.5 2004/12/27 05:59:46 corts Exp $
+            
+             </version>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.Init">
+            <summary>
+            This is the primary initialization method in the Velocity
+            Runtime. The systems that are setup/initialized here are
+            as follows:
+            <list type="">
+            	<item>Logging System</item>
+            	<item>ResourceManager</item>
+            	<item>Parser Pool</item>
+            	<item>Global Cache</item>
+            	<item>Static Content Include System</item>
+            	<item>Velocimacro System</item>
+            </list>
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.SetProperty(System.String,System.Object)">
+            <summary>
+            Allows an external system to set a property in
+            the Velocity Runtime.
+            </summary>
+            <param name="key">property key</param>
+            <param name="value">property value</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.AddProperty(System.String,System.Object)">
+            <summary> Add a property to the configuration. If it already
+            exists then the value stated here will be added
+            to the configuration entry. For example, if
+            
+            <code>resource.loader = file</code>
+            
+            is already present in the configuration and you
+            
+            <code>addProperty("resource.loader", "classpath")</code>
+            
+            Then you will end up with an ArrayList like the
+            following:
+            
+            ["file", "classpath"]
+            </summary>
+            <param name="key">key</param>
+            <param name="value">value</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.ClearProperty(System.String)">
+            <summary>
+            Clear the values pertaining to a particular property.
+            </summary>
+            <param name="key">key of property to clear</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.GetProperty(System.String)">
+            <summary>
+            Allows an external caller to get a property.  The calling
+            routine is required to know the type, as this routine
+            will return an Object, as that is what properties can be.
+            </summary>
+            <param name="key">property to return</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.Init(Commons.Collections.ExtendedProperties)">
+            <summary>
+            Initialize the Velocity Runtime with an ExtendedProperties object.
+            </summary>
+            <param name="p">Properties</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.Init(System.String)">
+            <summary> Initialize the Velocity Runtime with a configuration file.</summary>
+            <param name="configurationFile">configuration file</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.CreateNewParser">
+            <summary>
+            Returns a JavaCC generated Parser.
+            </summary>
+            <returns>Parser javacc generated parser</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.Parse(System.IO.TextReader,System.String)">
+            <summary> Parse the input and return the root of
+            AST node structure.
+            </summary>
+            <remarks>
+            In the event that it runs out of parsers in the
+            pool, it will create and let them be GC'd
+            dynamically, logging that it has to do that.  This
+            is considered an exceptional condition.  It is
+            expected that the user will set the
+            PARSER_POOL_SIZE property appropriately for their
+            application.  We will revisit this.
+            </remarks>
+            <param name="reader">TextReader retrieved by a resource loader</param>
+            <param name="templateName">name of the template being parsed</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.Parse(System.IO.TextReader,System.String,System.Boolean)">
+            <summary>
+            Parse the input and return the root of the AST node structure.
+            </summary>
+            <param name="reader">TextReader retrieved by a resource loader</param>
+            <param name="templateName">name of the template being parsed</param>
+            <param name="dumpNamespace">flag to dump the Velocimacro namespace for this template</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.GetTemplate(System.String)">
+             <summary> Returns a <code>Template</code> from the resource manager.
+             This method assumes that the character encoding of the
+             template is set by the <code>input.encoding</code>
+             property.  The default is "ISO-8859-1"
+             *
+             </summary>
+             <param name="name">The file name of the desired template.
+             </param>
+             <returns>    The template.
+             @throws ResourceNotFoundException if template not found
+             from any available source.
+             @throws ParseErrorException if template cannot be parsed due
+             to syntax (or other) error.
+             @throws Exception if an error occurs in template initialization
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.GetTemplate(System.String,System.String)">
+             <summary> Returns a <code>Template</code> from the resource manager
+             *
+             </summary>
+             <param name="name">The  name of the desired template.
+             </param>
+             <param name="encoding">Character encoding of the template
+             </param>
+             <returns>    The template.
+             @throws ResourceNotFoundException if template not found
+             from any available source.
+             @throws ParseErrorException if template cannot be parsed due
+             to syntax (or other) error.
+             @throws Exception if an error occurs in template initialization
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.GetContent(System.String)">
+             <summary> Returns a static content resource from the
+             resource manager.  Uses the current value
+             if INPUT_ENCODING as the character encoding.
+             *
+             </summary>
+             <param name="name">Name of content resource to get
+             </param>
+             <returns>parsed ContentResource object ready for use
+             @throws ResourceNotFoundException if template not found
+             from any available source.
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.GetContent(System.String,System.String)">
+             <summary> Returns a static content resource from the
+             resource manager.
+             *
+             </summary>
+             <param name="name">Name of content resource to get
+             </param>
+             <param name="encoding">Character encoding to use
+             </param>
+             <returns>parsed ContentResource object ready for use
+             @throws ResourceNotFoundException if template not found
+             from any available source.
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.GetLoaderNameForResource(System.String)">
+             <summary>  Determines is a template exists, and returns name of the loader that
+             provides it.  This is a slightly less hokey way to support
+             the Velocity.templateExists() utility method, which was broken
+             when per-template encoding was introduced.  We can revisit this.
+             *
+             </summary>
+             <param name="resourceName">Name of template or content resource
+             </param>
+             <returns>class name of loader than can provide it
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.Warn(System.Object)">
+            <summary>
+            Log a warning message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.Info(System.Object)">
+            
+             <summary>
+             Log an info message.
+             </summary>
+             <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.Error(System.Object)">
+            <summary>
+            Log an error message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.Debug(System.Object)">
+            <summary>
+            Log a debug message.
+            </summary>
+            <param name="message">message to log</param>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.getString(System.String,System.String)">
+             <summary> String property accessor method with default to hide the
+             configuration implementation.
+            
+             </summary>
+             <param name="key">property key
+             </param>
+             <param name="defaultValue">default value to return if key not
+             found in resource manager.
+             </param>
+             <returns>String  value of key or default
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.GetVelocimacro(System.String,System.String)">
+            <summary>
+            Returns the appropriate VelocimacroProxy object if vmName
+            is a valid current Velocimacro.
+            </summary>
+            <param name="vmName">Name of velocimacro requested</param>
+            <param name="templateName">Template Name</param>
+            <returns>VelocimacroProxy</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.AddVelocimacro(System.String,System.String,System.String[],System.String)">
+            <summary>
+            Adds a new Velocimacro. Usually called by Macro only while parsing.
+            </summary>
+            <param name="name">Name of velocimacro</param>
+            <param name="macro">String form of macro body</param>
+            <param name="argArray">Array of strings, containing the 
+            <code>#macro()</code> arguments. The 0th is the name.
+            </param>
+            <param name="sourceTemplate">Source template</param>
+            <returns>True if added, false if rejected for some
+            reason (either parameters or permission settings)
+            </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.IsVelocimacro(System.String,System.String)">
+            <summary>
+            Checks to see if a VM exists
+            </summary>
+            <param name="vmName">Name of velocimacro</param>
+            <param name="templateName">Template Name</param>
+            <returns>True if VM by that name exists, false if not</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.DumpVMNamespace(System.String)">
+            <summary>
+            Tells the vmFactory to dump the specified namespace.
+            This is to support clearing the VM list when in 
+            inline-VM-local-scope mode
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.GetString(System.String)">
+            <summary>
+            String property accessor method to hide the configuration implementation.
+            </summary>
+            <param name="key">property key</param>
+            <returns>Value of key or <c>null</c></returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.GetInt(System.String)">
+            <summary>
+            Int property accessor method to hide the configuration implementation.
+            </summary>
+            <param name="key">property key</param>
+            <returns>value</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.GetInt(System.String,System.Int32)">
+            <summary>
+            Int property accessor method to hide the configuration implementation.
+            </summary>
+            <param name="key">property key</param>
+            <param name="defaultValue">default value</param>
+            <returns>value</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.GetBoolean(System.String,System.Boolean)">
+            <summary>
+            Boolean property accessor method to hide the configuration implementation.
+            </summary>
+            <param name="key">property key</param>
+            <param name="def">default value if property not found</param>
+            <returns>value of key or default value</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.RuntimeSingleton.GetApplicationAttribute(System.Object)">
+            <summary>
+            <seealso cref="M:NVelocity.Runtime.IRuntimeServices.GetApplicationAttribute(System.Object)"/>
+            </summary>
+            <param name="key">key</param>
+            <returns>value</returns>
+        </member>
+        <member name="P:NVelocity.Runtime.RuntimeSingleton.Configuration">
+            <summary>
+            Return the velocity runtime configuration object.
+            </summary>
+            <returns>
+            ExtendedProperties configuration object which houses
+            the velocity runtime properties.
+            </returns>
+        </member>
+        <member name="P:NVelocity.Runtime.RuntimeSingleton.Introspector">
+            <summary>
+            Return the Introspector for this RuntimeInstance
+            </summary>
+            <returns>
+            Introspector object for this runtime instance
+            </returns>
+        </member>
+        <member name="P:NVelocity.Runtime.RuntimeSingleton.RuntimeInstance">
+            <summary>
+            Returns the RuntimeInstance object for this singleton.
+            For internal use only.
+            </summary>
+            <returns>
+            The <see cref="P:NVelocity.Runtime.RuntimeSingleton.RuntimeInstance"/> used by this Singleton instance.
+            </returns>
+        </member>
+        <member name="T:NVelocity.Runtime.VelocimacroFactory">
+             <summary>  VelocimacroFactory.java
+             *
+             manages the set of VMs in a running Velocity engine.
+             *
+             </summary>
+             <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+             </author>
+             <version> $Id: VelocimacroFactory.cs,v 1.5 2003/10/27 15:37:24 corts Exp $
+            
+             </version>
+        </member>
+        <member name="F:NVelocity.Runtime.VelocimacroFactory.runtimeServices">
+            <summary>  runtime services for this instance
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.VelocimacroFactory.velocimacroManager">
+            <summary>  VMManager : deal with namespace management
+            and actually keeps all the VM definitions
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.VelocimacroFactory.replaceAllowed">
+            <summary>  determines if replacement of global VMs are allowed
+            controlled by  VM_PERM_ALLOW_INLINE_REPLACE_GLOBAL
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.VelocimacroFactory.addNewAllowed">
+            <summary>  controls if new VMs can be added.  Set by
+            VM_PERM_ALLOW_INLINE  Note the assumption that only
+            through inline defs can this happen.
+            additions through auto-loaded VMs is allowed
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.VelocimacroFactory.templateLocal">
+            <summary>  sets if template-local namespace in used
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.VelocimacroFactory.blather">
+            <summary>  controls log output
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.VelocimacroFactory.autoReloadLibrary">
+            <summary>  determines if the libraries are auto-loaded
+            when they change
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.VelocimacroFactory.macroLibVec">
+            <summary>  vector of the library names
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.VelocimacroFactory.libModMap">
+            <summary>  map of the library Template objects
+            used for reload determination
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroFactory.#ctor(NVelocity.Runtime.IRuntimeServices)">
+            <summary>  CTOR : requires a runtime services from now
+            on
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroFactory.InitVelocimacro">
+            <summary>  initialize the factory - setup all permissions
+            load all global libraries.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroFactory.AddVelocimacro(System.String,System.String,System.String[],System.String)">
+            <summary>  adds a macro to the factory.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroFactory.CanAddVelocimacro(System.String,System.String)">
+             <summary>  determines if a given macro/namespace (name, source) combo is allowed
+             to be added
+             *
+             </summary>
+             <param name="name">Name of VM to add
+             </param>
+             <param name="sourceTemplate">Source template that contains the definition of the VM
+             </param>
+             <returns>true if it is allowed to be added, false otherwise
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroFactory.LogVMMessageInfo(System.String)">
+            <summary>  localization of the logging logic
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroFactory.LogVMMessageWarn(System.String)">
+            <summary>  localization of the logging logic
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroFactory.IsVelocimacro(System.String,System.String)">
+            <summary>  Tells the world if a given directive string is a Velocimacro
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroFactory.GetVelocimacro(System.String,System.String)">
+            <summary>  actual factory : creates a Directive that will
+            behave correctly wrt getting the framework to
+            dig out the correct # of args
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroFactory.DumpVMNamespace(System.String)">
+            <summary>  tells the velocimacroManager to dump the specified namespace
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.VelocimacroFactory.Twonk">
+            <summary>  sets permission to have VMs local in scope to their declaring template
+            note that this is really taken care of in the VMManager class, but
+            we need it here for gating purposes in addVM
+            eventually, I will slide this all into the manager, maybe.
+            </summary>
+            <summary>   sets the permission to add new macros
+            </summary>
+            <summary>    sets the permission for allowing addMacro() calls to
+            replace existing VM's
+            </summary>
+            <summary>  set output message mode
+            </summary>
+            <summary> get output message mode
+            </summary>
+            <summary>  set the switch for automatic reloading of
+            global library-based VMs
+            </summary>
+            <summary>  get the switch for automatic reloading of
+            global library-based VMs
+            </summary>
+            <summary> small container class to hold the duple
+            of a template and modification time.
+            We keep the modification time so we can
+            'override' it on a reload to prevent
+            recursive reload due to inter-calling
+            VMs in a library
+            </summary>
+        </member>
+        <member name="T:NVelocity.Runtime.VelocimacroManager">
+            <summary> 
+            Manages VMs in namespaces.  Currently, two namespace modes are
+            supported:
+            *
+            <ul>
+            <li>flat - all allowable VMs are in the global namespace</li>
+            <li>local - inline VMs are added to it's own template namespace</li>
+            </ul>
+            *
+            Thanks to <a href="mailto:JFernandez@viquity.com">Jose Alberto Fernandez</a>
+            for some ideas incorporated here.
+            *
+            </summary>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+            </author>
+            <author> <a href="mailto:JFernandez@viquity.com">Jose Alberto Fernandez</a>
+            </author>
+        </member>
+        <member name="F:NVelocity.Runtime.VelocimacroManager.namespaceHash">
+            <summary>Hash of namespace hashes.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Runtime.VelocimacroManager.libraryMap">
+            <summary>map of names of library templates/namespaces</summary>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroManager.#ctor(NVelocity.Runtime.IRuntimeServices)">
+            <summary> Adds the global namespace to the hash.</summary>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroManager.AddVM(System.String,System.String,System.String[],System.String)">
+             <summary> Adds a VM definition to the cache.
+             </summary>
+             <returns>Whether everything went okay.
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroManager.get(System.String,System.String)">
+            <summary> gets a new living VelocimacroProxy object by the
+            name / source template duple
+            </summary>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroManager.DumpNamespace(System.String)">
+             <summary> Removes the VMs and the namespace from the manager.
+             Used when a template is reloaded to avoid
+             accumulating drek
+             </summary>
+             <param name="ns">namespace to dump
+             </param>
+             <returns>boolean representing success
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroManager.GetNamespace(System.String)">
+            <summary>
+            public switch to let external user of manager to control namespace
+            usage indep of properties.  That way, for example, at startup the
+            library files are loaded into global namespace
+            
+            returns the hash for the specified namespace.  Will not create a new one
+            if it doesn't exist
+            </summary>
+            <param name="ns"> name of the namespace :) </param>
+            <returns>namespace Hashtable of VMs or null if doesn't exist </returns>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroManager.GetNamespace(System.String,System.Boolean)">
+            <summary>
+            returns the hash for the specified namespace, and if it doesn't exist
+            will create a new one and add it to the namespaces
+            </summary>
+            <param name="ns"> name of the namespace :)</param>
+            <param name="addIfNew"> flag to add a new namespace if it doesn't exist</param>
+            <returns>namespace Hashtable of VMs or null if doesn't exist</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroManager.AddNamespace(System.String)">
+            <summary>adds a namespace to the namespaces</summary>
+            <param name="ns">name of namespace to add</param>
+            <returns>Hash added to namespaces, ready for use</returns>
+        </member>
+        <member name="M:NVelocity.Runtime.VelocimacroManager.UsingNamespaces(System.String)">
+            <summary>determines if currently using namespaces.</summary>
+            <param name="ns">currently ignored</param>
+            <returns>true if using namespaces, false if not</returns>
+        </member>
+        <member name="T:NVelocity.Runtime.VelocimacroManager.MacroEntry">
+            <summary>  wrapper class for holding VM information
+            </summary>
+        </member>
+        <member name="T:NVelocity.Tool.DataInfo">
+             <summary> ToolInfo implementation to handle "primitive" data types.
+             It currently supports String, Number, and Boolean data.
+             *
+             </summary>
+             <author> <a href="mailto:nathan@esha.com">Nathan Bubna</a>
+             *
+             </author>
+             <version> $Id: DataInfo.cs,v 1.2 2003/10/27 13:54:12 corts Exp $
+            
+             </version>
+        </member>
+        <member name="T:NVelocity.Tool.IToolInfo">
+             <summary> Interface to simplify and abstract tool handling.
+             *
+             Implementations of this class should hold both the context
+             key for the tool and sufficient information to return
+             an instance of the tool.
+             *
+             </summary>
+             <author> <a href="mailto:nathan@esha.com">Nathan Bubna</a>
+             *
+             </author>
+             <version> $Id: IToolInfo.cs,v 1.2 2003/10/27 13:54:12 corts Exp $
+            
+             </version>
+        </member>
+        <member name="M:NVelocity.Tool.IToolInfo.getInstance(System.Object)">
+             <returns>the context key for the tool
+            
+             </returns>
+             <returns>the fully qualified classname for the tool
+            
+             </returns>
+             <summary> Returns an instance of the tool.
+             *
+             Instances returned may be new on each call, pooled, or
+             the be same instance every time depending on the
+             implementation.  The object passed to this method may
+             be used to initialize or create the tool that is returned,
+             or it may be null if no such data is required.
+             *
+             </summary>
+             <param name="initData">an object that may be used to initialize the instance
+             </param>
+             <returns>an instance of the tool
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Tool.DataInfo.#ctor(System.String,System.String,System.String)">
+             <summary> Parses the value string into a recognized type. If
+             the type specified is not supported, the data will
+             be held and returned as a string.
+             *
+             </summary>
+             <param name="key">the context key for the data
+             </param>
+             <param name="type">the data type
+             </param>
+             <param name="value">the data
+            
+             </param>
+        </member>
+        <member name="M:NVelocity.Tool.DataInfo.getInstance(System.Object)">
+            <summary> Returns the data. Always returns the same
+            object since the data is a constant. Initialization
+            data is ignored.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Tool.ToolLoader">
+            <summary>
+            <p>A view tool that allows template designers to load
+            an arbitrary object into the context. Any object
+            with a public constructor without parameters can be used
+            as a view tool.</p>
+            <p>THIS CLASS IS HERE AS A PROOF OF CONCEPT ONLY. IT IS NOT
+            INTENDED FOR USE IN PRODUCTION ENVIRONMENTS. USE AT YOUR OWN RISK.</p>
+            </summary>
+            <author><a href="mailto:sidler@teamup.com">Gabe Sidler</a></author>
+            <author><a href="mailto:geirm@apache.org">Geir Magnusson Jr.</a></author>
+        </member>
+        <member name="M:NVelocity.Tool.ToolLoader.Load(System.String)">
+            <summary>
+            Creates and returns an object of the specified classname.
+            The object must have a valid default constructor.
+            </summary>
+            <param name="className">the fully qualified class name of the object</param>
+            <returns>an instance of the specified class or null if the class
+            could not be instantiated.</returns>
+        </member>
+        <member name="T:NVelocity.Util.Introspection.AmbiguousException">
+            <summary>  
+            Simple distinguishable exception, used when
+            we run across ambiguous overloading
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.AmbiguousException.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:NVelocity.Util.Introspection.AmbiguousException"/> class.
+            </summary>
+            <param name="message">The message.</param>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.AmbiguousException.#ctor(System.String,System.Exception)">
+            <summary>
+            Initializes a new instance of the <see cref="T:NVelocity.Util.Introspection.AmbiguousException"/> class.
+            </summary>
+            <param name="message">The message.</param>
+            <param name="innerException">The inner exception.</param>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.AmbiguousException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+            <summary>
+            Initializes a new instance of the <see cref="T:NVelocity.Util.Introspection.AmbiguousException"/> class.
+            </summary>
+            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"></see> that holds the serialized object data about the exception being thrown.</param>
+            <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"></see> that contains contextual information about the source or destination.</param>
+            <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"></see> is zero (0). </exception>
+            <exception cref="T:System.ArgumentNullException">The info parameter is null. </exception>
+        </member>
+        <member name="T:NVelocity.Util.Introspection.ClassMap">
+            <summary>
+            A cache of introspection information for a specific class instance.
+            Keys <see cref="T:System.Reflection.MethodInfo"/> objects by a concatenation of the
+            method name and the names of classes that make up the parameters.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Util.Introspection.ClassMap.methodCache">
+            <summary> Cache of Methods, or CACHE_MISS, keyed by method
+            name and actual arguments used to find it.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.ClassMap.#ctor(System.Type)">
+            <summary> Standard constructor
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.ClassMap.FindMethod(System.String,System.Object[])">
+             <summary>
+             Find a Method using the methodKey provided.
+            
+             Look in the methodMap for an entry.  If found,
+             it'll either be a CACHE_MISS, in which case we
+             simply give up, or it'll be a Method, in which
+             case, we return it.
+            
+             If nothing is found, then we must actually go
+             and introspect the method from the MethodMap.
+             </summary>
+             <returns>
+             the class object whose methods are cached by this map.
+             </returns>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.ClassMap.FindProperty(System.String)">
+             <summary>
+             Find a Method using the methodKey
+             provided.
+            
+             Look in the methodMap for an entry.  If found,
+             it'll either be a CACHE_MISS, in which case we
+             simply give up, or it'll be a Method, in which
+             case, we return it.
+            
+             If nothing is found, then we must actually go
+             and introspect the method from the MethodMap.
+             </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.ClassMap.PopulateMethodCache">
+            <summary>
+            Populate the Map of direct hits. These
+            are taken from all the public methods
+            that our class provides.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.ClassMap.MakeMethodKey(System.Reflection.MethodInfo)">
+            <summary>
+            Make a methodKey for the given method using
+            the concatenation of the name and the
+            types of the method parameters.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.ClassMap.GetAccessibleMethods(System.Type)">
+            <summary>
+            Retrieves public methods for a class.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Util.Introspection.ClassMap.CachedClass">
+            <summary>
+            Class passed into the constructor used to as
+            the basis for the Method map.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Util.Introspection.Info">
+            <summary>  
+            Little class to carry in info such as template name, line and column
+            for information error reporting from the uberspector implementations
+            *
+            </summary>
+            <author>  <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+            </author>
+            <version>  $Id: Info.cs,v 1.1 2004/12/27 05:55:08 corts Exp $
+            
+            </version>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.Info.#ctor(System.String,System.Int32,System.Int32)">
+            <param name="source">Usually a template name.
+            </param>
+            <param name="line">The line number from <code>source</code>.
+            </param>
+            <param name="column">The column number from <code>source</code>.
+            
+            </param>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.Info.ToString">
+            <summary> Formats a textual representation of this object as <code>SOURCE
+            [line X, column Y]</code>.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Util.Introspection.IntrospectionCacheData">
+            <summary>
+            Holds information for node-local context data introspection
+            information.
+            </summary>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a> </author>
+            <version> $Id: IntrospectionCacheData.cs,v 1.3 2003/10/27 13:54:12 corts Exp $ </version>
+        </member>
+        <member name="F:NVelocity.Util.Introspection.IntrospectionCacheData.Thingy">
+            <summary>
+            Object to pair with class - currently either a Method or
+            AbstractExecutor. It can be used in any way the using node
+            wishes.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Util.Introspection.IntrospectionCacheData.ContextData">
+            <summary>
+            Class of context data object associated with the 
+            introspection information
+            </summary>
+        </member>
+        <member name="T:NVelocity.Util.Introspection.Introspector">
+             <summary>
+             This basic function of this class is to return a Method
+             object for a particular class given the name of a method
+             and the parameters to the method in the form of an Object[]
+            
+             The first time the Introspector sees a
+             class it creates a class method map for the
+             class in question. Basically the class method map
+             is a Hashtable where Method objects are keyed by a
+             concatenation of the method name and the names of
+             classes that make up the parameters.
+            
+             For example, a method with the following signature:
+            
+             public void method(String a, StringBuffer b)
+            
+             would be mapped by the key:
+            
+             "method" + "java.lang.String" + "java.lang.StringBuffer"
+            
+             This mapping is performed for all the methods in a class
+             and stored for
+             </summary>
+        </member>
+        <member name="T:NVelocity.Util.Introspection.IntrospectorBase">
+             <summary>
+             This basic function of this class is to return a Method
+             object for a particular class given the name of a method
+             and the parameters to the method in the form of an Object[]
+            
+             The first time the Introspector sees a
+             class it creates a class method map for the
+             class in question. Basically the class method map
+             is a Hashtable where Method objects are keyed by a
+             concatenation of the method name and the names of
+             classes that make up the parameters.
+            
+             For example, a method with the following signature:
+            
+             public void method(String a, StringBuffer b)
+            
+             would be mapped by the key:
+            
+             "method" + "java.lang.String" + "java.lang.StringBuffer"
+            
+             This mapping is performed for all the methods in a class
+             and stored for
+             </summary>
+             <version> $Id: IntrospectorBase.cs,v 1.3 2003/10/27 13:54:12 corts Exp $ </version>
+        </member>
+        <member name="F:NVelocity.Util.Introspection.IntrospectorBase.classMethodMaps">
+            <summary>
+            Holds the method maps for the classes we know about, keyed by
+            Class object.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Util.Introspection.IntrospectorBase.cachedClassNames">
+            <summary>
+            Holds the qualified class names for the classes
+            we hold in the classMethodMaps hash
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.IntrospectorBase.GetMethod(System.Type,System.String,System.Object[])">
+            <summary>
+            Gets the method defined by <code>name</code> and
+            <code>params</code> for the Class <code>c</code>.
+            </summary>
+            <param name="c">Class in which the method search is taking place</param>
+            <param name="name">Name of the method being searched for</param>
+            <param name="parameters">An array of Objects (not Classes) that describe the the parameters</param>
+            <returns>The desired <see cref="T:System.Reflection.MethodInfo"/> object.</returns>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.IntrospectorBase.GetProperty(System.Type,System.String)">
+            <summary>
+            Gets the method defined by <code>name</code>
+            for the Class <code>c</code>.
+            </summary>
+            <param name="c">Class in which the method search is taking place</param>
+            <param name="name">Name of the method being searched for</param>
+            <returns>The desired <see cref="T:System.Reflection.PropertyInfo"/> object.</returns>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.IntrospectorBase.CreateClassMap(System.Type)">
+            <summary>
+            Creates a class map for specific class and registers it in the
+            cache.  Also adds the qualified name to the name->class map
+            for later Classloader change detection.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Util.Introspection.Introspector.rlog">
+            <summary>  our engine runtime services
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.Introspector.#ctor(NVelocity.Runtime.IRuntimeLogger)">
+            <summary>  Receives our RuntimeServices object
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.Introspector.GetMethod(System.Type,System.String,System.Object[])">
+            <summary>
+            Gets the method defined by <code>name</code> and
+            <code>params</code> for the Class <code>c</code>.
+            </summary>
+            <param name="c">Class in which the method search is taking place</param>
+            <param name="name">Name of the method being searched for</param>
+            <param name="parameters">An array of Objects (not Classes) that describe the the parameters</param>
+            <returns>The desired Method object.</returns>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.Introspector.GetProperty(System.Type,System.String)">
+            <summary>
+            Gets the method defined by <code>name</code>
+            for the Class <code>c</code>.
+            </summary>
+            <param name="c">Class in which the method search is taking place</param>
+            <param name="name">Name of the method being searched for</param>
+            <returns>The desired <see cref="T:System.Reflection.PropertyInfo"/> object.</returns>
+        </member>
+        <member name="T:NVelocity.Util.Introspection.IUberspect">
+            <summary> 'Federated' introspection/reflection interface to allow the introspection
+            behavior in Velocity to be customized.
+            *
+            </summary>
+            <author>  <a href="mailto:geirm@apache.org">Geir Magusson Jr.</a>
+            </author>
+            <version>  $Id: Uberspect.cs,v 1.1 2004/12/27 05:55:08 corts Exp $
+            
+            </version>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.IUberspect.Init">
+            <summary>  Initializer - will be called before use
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.IUberspect.GetMethod(System.Object,System.String,System.Object[],NVelocity.Util.Introspection.Info)">
+            <summary>  Returns a general method, corresponding to $foo.bar( $woogie )
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.IUberspect.GetPropertyGet(System.Object,System.String,NVelocity.Util.Introspection.Info)">
+            <summary> Property getter - returns VelPropertyGet appropos for #set($foo = $bar.woogie)
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.IUberspect.GetPropertySet(System.Object,System.String,System.Object,NVelocity.Util.Introspection.Info)">
+            <summary> Property setter - returns VelPropertySet appropos for #set($foo.bar = "geir")
+            </summary>
+        </member>
+        <member name="T:NVelocity.Util.Introspection.IVelMethod">
+            <summary>  Method used for regular method invocation
+            *
+            $foo.bar()
+            *
+            *
+            </summary>
+            <author>  <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+            </author>
+            <version>  $Id: VelMethod.cs,v 1.1 2004/12/27 05:55:08 corts Exp $
+            
+            </version>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.IVelMethod.Invoke(System.Object,System.Object[])">
+            <summary>  invocation method - called when the method invocation should be
+            performed and a value returned
+            </summary>
+        </member>
+        <member name="P:NVelocity.Util.Introspection.IVelMethod.Cacheable">
+            <summary>  specifies if this VelMethod is cacheable and able to be
+            reused for this class of object it was returned for
+            *
+            </summary>
+            <returns> true if can be reused for this class, false if not
+            
+            </returns>
+        </member>
+        <member name="P:NVelocity.Util.Introspection.IVelMethod.MethodName">
+            <summary>  returns the method name used
+            </summary>
+        </member>
+        <member name="P:NVelocity.Util.Introspection.IVelMethod.ReturnType">
+            <summary>  returns the return type of the method invoked
+            </summary>
+        </member>
+        <member name="T:NVelocity.Util.Introspection.IVelPropertyGet">
+            <summary>
+            Interface defining a 'getter'.  For uses when looking for resolution of
+            property references
+            <code>
+            $foo.bar
+            </code>
+            </summary>
+            <author> <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a> </author>
+            <version> $Id: VelPropertyGet.cs,v 1.1 2004/12/27 05:55:08 corts Exp $ </version>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.IVelPropertyGet.Invoke(System.Object)">
+            <summary>
+            invocation method - called when the 'get action' should be
+            performed and a value returned
+            </summary>
+        </member>
+        <member name="P:NVelocity.Util.Introspection.IVelPropertyGet.Cacheable">
+            <summary>
+            specifies if this VelPropertyGet is cacheable and able to be
+            reused for this class of object it was returned for
+            </summary>
+            <returns>true if can be reused for this class, false if not</returns>
+        </member>
+        <member name="P:NVelocity.Util.Introspection.IVelPropertyGet.MethodName">
+            <summary>
+            returns the method name used to return this 'property'
+            </summary>
+        </member>
+        <member name="T:NVelocity.Util.Introspection.IVelPropertySet">
+            <summary>  Interface used for setting values that appear to be properties in
+            Velocity.  Ex.
+            *
+            #set($foo.bar = "hello")
+            *
+            </summary>
+            <author>  <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+            </author>
+            <version>  $Id: VelPropertySet.cs,v 1.1 2004/12/27 05:55:08 corts Exp $
+            
+            </version>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.IVelPropertySet.Invoke(System.Object,System.Object)">
+            <summary>  method used to set the value in the object
+            *
+            </summary>
+            <param name="o">Object on which the method will be called with the arg
+            </param>
+            <param name="arg">value to be set
+            </param>
+            <returns> the value returned from the set operation (impl specific)
+            
+            </returns>
+        </member>
+        <member name="P:NVelocity.Util.Introspection.IVelPropertySet.Cacheable">
+            <summary>  specifies if this VelPropertySet is cacheable and able to be
+            reused for this class of object it was returned for
+            *
+            </summary>
+            <returns> true if can be reused for this class, false if not
+            
+            </returns>
+        </member>
+        <member name="P:NVelocity.Util.Introspection.IVelPropertySet.MethodName">
+            <summary>  returns the method name used to set this 'property'
+            </summary>
+        </member>
+        <member name="F:NVelocity.Util.Introspection.MethodMap.methodByNameMap">
+            <summary> Keep track of all methods with the same name.</summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.MethodMap.Add(System.Reflection.MethodInfo)">
+            <summary> Add a method to a list of methods by name.
+            For a particular class we are keeping track
+            of all the methods with the same name.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.MethodMap.Get(System.String)">
+            <summary>
+            Return a list of methods with the same name.
+            </summary>
+            <param name="key">key</param>
+            <returns> List list of methods</returns>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.MethodMap.Find(System.String,System.Object[])">
+            <summary>
+            Find a method.  Attempts to find the
+            most specific applicable method using the
+            algorithm described in the JLS section
+            15.12.2 (with the exception that it can't
+            distinguish a primitive type argument from
+            an object type argument, since in reflection
+            primitive type arguments are represented by
+            their object counterparts, so for an argument of
+            type (say) java.lang.Integer, it will not be able
+            to decide between a method that takes int and a
+            method that takes java.lang.Integer as a parameter.
+            
+            <para>
+            This turns out to be a relatively rare case
+            where this is needed - however, functionality
+            like this is needed.
+            </para>
+            </summary>
+            <param name="methodName">name of method</param>
+            <param name="args">the actual arguments with which the method is called</param>
+            <returns> the most specific applicable method, or null if no method is applicable.</returns>
+            <exception cref="T:NVelocity.Util.Introspection.AmbiguousException">if there is more than one maximally specific applicable method</exception>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.MethodMap.IsMoreSpecific(System.Reflection.ParameterInfo[],System.Reflection.ParameterInfo[])">
+            <summary> Determines which method signature (represented by a class array) is more
+            specific. This defines a partial ordering on the method signatures.
+            </summary>
+            <param name="c1">first signature to compare
+            </param>
+            <param name="c2">second signature to compare
+            </param>
+            <returns> MORE_SPECIFIC if c1 is more specific than c2, LESS_SPECIFIC if
+            c1 is less specific than c2, INCOMPARABLE if they are incomparable.
+            
+            </returns>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.MethodMap.GetApplicables(System.Collections.IList,System.Type[])">
+            <summary>
+            Returns all methods that are applicable to actual argument types.
+            </summary>
+            <param name="methods">list of all candidate methods</param>
+            <param name="classes">the actual types of the arguments</param>
+            <returns> 
+            a list that contains only applicable methods (number of 
+            formal and actual arguments matches, and argument types are assignable
+            to formal types through a method invocation conversion).
+            </returns>
+            TODO: this used to return a LinkedList -- changed to an ArrayList for now until I can figure out what is really needed
+        </member>
+        <member name="M:NVelocity.Util.Introspection.MethodMap.IsApplicable(System.Reflection.MethodInfo,System.Type[])">
+            <summary>
+            Returns true if the supplied method is applicable to actual
+            argument types.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.MethodMap.IsMethodInvocationConvertible(System.Reflection.ParameterInfo,System.Type)">
+            <summary>
+            Determines whether a type represented by a class object is
+            convertible to another type represented by a class object using a
+            method invocation conversion, treating object types of primitive
+            types as if they were primitive types (that is, a Boolean actual
+            parameter type matches boolean primitive formal type). This behavior
+            is because this method is used to determine applicable methods for
+            an actual parameter list, and primitive types are represented by
+            their object duals in reflective method calls.
+            </summary>
+            <param name="formal">the formal parameter type to which the actual parameter type should be convertible</param>
+            <param name="actual">the actual parameter type.</param>
+            <returns>
+            true if either formal type is assignable from actual type,
+            or formal is a primitive type and actual is its corresponding object
+            type or an object type of a primitive type that can be converted to
+            the formal type.
+            </returns>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.MethodMap.IsStrictMethodInvocationConvertible(System.Reflection.ParameterInfo,System.Reflection.ParameterInfo)">
+            <summary>
+            Determines whether a type represented by a class object is
+            convertible to another type represented by a class object using a
+            method invocation conversion, without matching object and primitive
+            types. This method is used to determine the more specific type when
+            comparing signatures of methods.
+            </summary>
+            <param name="formal">the formal parameter type to which the actual parameter type should be convertible</param>
+            <param name="actual">the actual parameter type.</param>
+            <returns>
+            true if either formal type is assignable from actual type,
+            or formal and actual are both primitive types and actual can be
+            subject to widening conversion to formal.
+            </returns>
+        </member>
+        <member name="T:NVelocity.Util.Introspection.UberspectImpl">
+            <summary>  Implementation of Uberspect to provide the default introspective
+            functionality of Velocity
+            *
+            </summary>
+            <author>  <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+            </author>
+            <version>  $Id: UberspectImpl.cs,v 1.1 2004/12/27 05:55:08 corts Exp $
+            
+            </version>
+        </member>
+        <member name="T:NVelocity.Util.Introspection.UberspectLoggable">
+            <summary>  
+            Marker interface to let an uberspector indicate it can and wants to
+            log
+            *
+            Thanks to Paulo for the suggestion
+            *
+            </summary>
+            <author>  <a href="mailto:geirm@apache.org">Geir Magnusson Jr.</a>
+            </author>
+            <version>  $Id: UberspectLoggable.cs,v 1.1 2004/12/27 05:55:08 corts Exp $
+            *
+            
+            </version>
+        </member>
+        <member name="P:NVelocity.Util.Introspection.UberspectLoggable.RuntimeLogger">
+            <summary>  Sets the logger.  This will be called before any calls to the
+            uberspector
+            </summary>
+        </member>
+        <member name="F:NVelocity.Util.Introspection.UberspectImpl.runtimeLogger">
+            <summary>
+            Our runtime logger.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Util.Introspection.UberspectImpl.introspector">
+            <summary>
+            the default Velocity introspector
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.UberspectImpl.Init">
+            <summary>
+            init - does nothing - we need to have setRuntimeLogger
+            called before getting our introspector, as the default
+            vel introspector depends upon it.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.UberspectImpl.GetMethod(System.Object,System.String,System.Object[],NVelocity.Util.Introspection.Info)">
+            <summary>
+            Method
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.UberspectImpl.GetPropertyGet(System.Object,System.String,NVelocity.Util.Introspection.Info)">
+            <summary>
+            Property  getter
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.Introspection.UberspectImpl.GetPropertySet(System.Object,System.String,System.Object,NVelocity.Util.Introspection.Info)">
+            <summary> Property setter
+            </summary>
+        </member>
+        <member name="P:NVelocity.Util.Introspection.UberspectImpl.RuntimeLogger">
+            <summary>
+            Sets the runtime logger - this must be called before anything
+            else besides init() as to get the logger.  Makes the pull
+            model appealing...
+            </summary>
+        </member>
+        <member name="T:NVelocity.Util.Introspection.UberspectImpl.VelMethodImpl">
+            <summary>
+            Implementation of <see cref="T:NVelocity.Util.Introspection.IVelMethod"/>.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Util.Introspection.UberspectImpl.VelGetterImpl">
+            <summary>
+            Implementation of <see cref="T:NVelocity.Util.Introspection.IVelPropertyGet"/>.
+            </summary>
+        </member>
+        <member name="T:NVelocity.Util.SimplePool`1">
+            <summary>
+            Simple object pool. Based on ThreadPool and few other classes
+            The pool will ignore overflow and return null if empty.
+            </summary>
+        </member>
+        <member name="F:NVelocity.Util.SimplePool`1.maximum">
+            <summary>  max amount of objects to be managed
+            set via CTOR
+            </summary>
+        </member>
+        <member name="F:NVelocity.Util.SimplePool`1.current">
+            <summary>  index of previous to next
+            free slot
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.SimplePool`1.put(`0)">
+            <summary>
+            Add the object to the pool, silent nothing if the pool is full
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.SimplePool`1.get">
+            <summary>
+            Get an object from the pool, null if the pool is empty.
+            </summary>
+        </member>
+        <member name="P:NVelocity.Util.SimplePool`1.Maximum">
+            <summary>
+            Return the size of the pool
+            </summary>
+        </member>
+        <member name="T:NVelocity.Util.StringUtils">
+             <summary> This class provides some methods for dynamically
+             invoking methods in objects, and some string
+             manipulation methods used by torque. The string
+             methods will soon be moved into the turbine
+             string utilities class.
+             *
+             </summary>
+             <author> <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
+             </author>
+             <author> <a href="mailto:dlr@finemaltcoding.com">Daniel Rall</a>
+             </author>
+             <version> $Id: StringUtils.cs,v 1.3 2003/10/27 13:54:12 corts Exp $
+            
+             </version>
+        </member>
+        <member name="F:NVelocity.Util.StringUtils.EOL">
+            <summary> Line separator for the OS we are operating on.
+            </summary>
+        </member>
+        <member name="M:NVelocity.Util.StringUtils.FirstLetterCaps(System.String)">
+             <summary> <p>
+             Makes the first letter caps and the rest lowercase.
+             </p>
+             *
+             <p>
+             For example <code>fooBar</code> becomes <code>Foobar</code>.
+             </p>
+             *
+             </summary>
+             <param name="data">capitalize this
+             </param>
+             <returns>String
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Util.StringUtils.FileContentsToString(System.String)">
+             <summary> Read the contents of a file and place them in
+             a string object.
+             *
+             </summary>
+             <param name="file">path to file.
+             </param>
+             <returns>String contents of the file.
+            
+             </returns>
+        </member>
+        <member name="M:NVelocity.Util.StringUtils.NormalizePath(System.String)">
+             <summary> Return a context-relative path, beginning with a "/", that represents
+             the canonical version of the specified path after ".." and "." elements
+             are resolved out.  If the specified path attempts to go outside the
+             boundaries of the current context (i.e. too many ".." path elements
+             are present), return <code>null</code> instead.
+             *
+             </summary>
+             <param name="path">Path to be normalized
+             </param>
+             <returns>String normalized path
+            
+             </returns>
+        </member>
+        <member name="T:NVelocity.IDuck">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:NVelocity.IDuck.GetInvoke(System.String)">
+            <summary>
+            Defines the behavior when a property is read
+            </summary>
+            <param name="propName">Property name.</param>
+            <returns>value back to the template</returns>
+        </member>
+        <member name="M:NVelocity.IDuck.SetInvoke(System.String,System.Object)">
+            <summary>
+            Defines the behavior when a property is written
+            </summary>
+            <param name="propName">Property name.</param>
+            <param name="value">The value to assign.</param>
+        </member>
+        <member name="M:NVelocity.IDuck.Invoke(System.String,System.Object[])">
+            <summary>
+            Invokes the specified method.
+            </summary>
+            <param name="method">The method name.</param>
+            <param name="args">The method arguments.</param>
+            <returns>value back to the template</returns>
+        </member>
+        <member name="M:NVelocity.SupportClass.CreateNewInstance(System.Type)">
+            <summary>
+            Creates an instance of a received Type
+            </summary>
+            <param name="classType">The Type of the new class instance to return</param>
+            <returns>An Object containing the new instance</returns>
+        </member>
+        <member name="T:NVelocity.Template">
+            <summary>
+            This class is used for controlling all template
+            operations. This class uses a parser created
+            by JavaCC to create an AST that is subsequently
+            traversed by a Visitor.
+            
+            <code>
+            Template template = Velocity.getTemplate("test.wm");
+            IContext context = new VelocityContext();
+            
+            context.Put("foo", "bar");
+            context.Put("customer", new Customer());
+            
+            template.Merge(context, writer);
+            </code>
+            </summary>
+        </member>
+        <member name="M:NVelocity.Template.Process">
+            <summary>
+            Gets the named resource as a stream, parses and inits.
+            </summary>
+            <returns>true if successful</returns>
+            <exception cref="T:NVelocity.Exception.ResourceNotFoundException">
+            if template not found from any available source.
+            </exception>
+            <exception cref="T:NVelocity.Exception.ParseErrorException">
+            if template cannot be parsed due to syntax (or other) error.
+            </exception>
+            <exception cref="T:System.Exception">
+            some other problem, should only be from initialization of the template AST.
+            </exception>
+        </member>
+        <member name="M:NVelocity.Template.InitDocument">
+            <summary> 
+            initializes the document.  init() is not longer
+            dependant upon context, but we need to let the
+            init() carry the template name down through for VM
+            namespace features
+            </summary>
+        </member>
+        <member name="M:NVelocity.Template.Merge(NVelocity.Context.IContext,System.IO.TextWriter)">
+            <summary>
+            The AST node structure is merged with the
+            context to produce the final output.
+            
+            Throws IOException if failure is due to a file related
+            issue, and Exception otherwise
+            </summary>
+            <param name="context">Context with data elements accessed by template</param>
+            <param name="writer">writer for rendered template</param>
+            <exception cref="T:NVelocity.Exception.ResourceNotFoundException">
+            if template not found from any available source.
+            </exception>
+            <exception cref="T:NVelocity.Exception.ParseErrorException">
+            if template cannot be parsed due to syntax (or other) error.
+            </exception>
+            <exception cref="T:System.Exception">
+            anything else.
+            </exception>
+        </member>
+        <member name="T:NVelocity.VelocityContext">
+            <summary>
+            General purpose implementation of the application Context
+            interface for general application use.  This class should
+            be used in place of the original Context class.
+            This context implementation cannot be shared between threads
+            without those threads synchronizing access between them, as
+            the HashMap is not synchronized, nor are some of the fundamentals
+            of AbstractContext.  If you need to share a Context between
+            threads with simultaneous access for some reason, please create
+            your own and extend the interface Context
+            </summary>
+        </member>
+        <member name="F:NVelocity.VelocityContext.context">
+            <summary>
+            Storage for key/value pairs.
+            </summary>
+        </member>
+        <member name="M:NVelocity.VelocityContext.#ctor">
+            <summary>
+            Creates a new instance (with no inner context).
+            </summary>
+        </member>
+        <member name="M:NVelocity.VelocityContext.#ctor(System.Collections.Hashtable)">
+            
+             <summary>
+             Creates a new instance with the provided storage (and no inner context).
+             </summary>
+        </member>
+        <member name="M:NVelocity.VelocityContext.#ctor(NVelocity.Context.IContext)">
+            <summary>
+            Chaining constructor, used when you want to
+            wrap a context in another.  The inner context
+            will be 'read only' - put() calls to the
+            wrapping context will only effect the outermost
+            context
+            </summary>
+            <param name="innerContext">The <code>Context</code> implementation to wrap.</param>
+        </member>
+        <member name="M:NVelocity.VelocityContext.#ctor(System.Collections.Hashtable,NVelocity.Context.IContext)">
+             <summary>
+             Initializes internal storage (never to <code>null</code>), and
+             inner context.
+             </summary>
+             <param name="context">Internal storage, or <code>null</code> to
+             create default storage.
+             </param>
+             <param name="innerContext">Inner context.
+            
+             </param>
+        </member>
+        <member name="M:NVelocity.VelocityContext.InternalGet(System.String)">
+            <summary>
+            retrieves value for key from internal
+            storage
+            </summary>
+            <param name="key">name of value to get</param>
+            <returns>value as object</returns>
+        </member>
+        <member name="M:NVelocity.VelocityContext.InternalPut(System.String,System.Object)">
+            <summary>
+            stores the value for key to internal
+            storage
+            </summary>
+            <param name="key">name of value to store</param>
+            <param name="value">value to store</param>
+            <returns>previous value of key as Object</returns>
+        </member>
+        <member name="M:NVelocity.VelocityContext.InternalContainsKey(System.Object)">
+            <summary>
+            determines if there is a value for the
+            given key
+            </summary>
+            <param name="key">name of value to check</param>
+            <returns>true if non-null value in store</returns>
+        </member>
+        <member name="M:NVelocity.VelocityContext.InternalGetKeys">
+            <summary>
+            returns array of keys
+            </summary>
+            <returns>keys as []</returns>
+        </member>
+        <member name="M:NVelocity.VelocityContext.InternalRemove(System.Object)">
+            <summary>
+            remove a key/value pair from the
+            internal storage
+            </summary>
+            <param name="key">name of value to remove</param>
+            <returns>value removed</returns>
+        </member>
+    </members>
+</doc>
Added +0 -0
diff --git a/minisqlquery-master/src/Contrib/packages/NVelocity.1.0.3/NVelocity.1.0.3.nupkg b/minisqlquery-master/src/Contrib/packages/NVelocity.1.0.3/NVelocity.1.0.3.nupkg
new file mode 100644
index 0000000..12b1901
Binary files /dev/null and b/minisqlquery-master/src/Contrib/packages/NVelocity.1.0.3/NVelocity.1.0.3.nupkg differ
Added +0 -0
diff --git a/minisqlquery-master/src/Contrib/References/ExportSqlCE.exe b/minisqlquery-master/src/Contrib/References/ExportSqlCE.exe
new file mode 100644
index 0000000..ccdb5cc
Binary files /dev/null and b/minisqlquery-master/src/Contrib/References/ExportSqlCE.exe differ
Added +0 -0
diff --git a/minisqlquery-master/src/Contrib/References/ExportSqlCE40.exe b/minisqlquery-master/src/Contrib/References/ExportSqlCE40.exe
new file mode 100644
index 0000000..da6f29a
Binary files /dev/null and b/minisqlquery-master/src/Contrib/References/ExportSqlCE40.exe differ
Added +34 -0
diff --git a/minisqlquery-master/src/Docs/Adding a MSSQL Connection.md b/minisqlquery-master/src/Docs/Adding a MSSQL Connection.md
new file mode 100644
index 0000000..c642708
--- /dev/null
+++ b/minisqlquery-master/src/Docs/Adding a MSSQL Connection.md
@@ -0,0 +1,34 @@
+Adding a MSSQL Connection
+=========================
+
+Click *Add*.
+
+Select a Provider, in this example I am leaving it as “System.Data.SqlClient”.
+
+Enter a *Name* for the connection, e.g. “Adventure Works (local)”.
+
+Set the Connection Strings “Integrated Security” value to “True”.
+
+Set the Connection Strings “Data source” value to “localhost” (or “localhost\SQLEXPRESS” as required.)
+
+Set the Connection Strings “Initial Catalog” either by using the dropdown or typing name straight in. 
+
+***Note***
+
+The dropdown will only work if the connection details are sufficient to query the datasource at the time, e.g. Integrated Security=True will typically suffice depending on your environment.
+
+You can use the *"Test..."* button to confirm the connectivity.
+ 
+Press *OK* and you will return to the “Database Connection List Editor” and you will see the new item in the list. Press *OK* here to return to Mini SQL Query.
+ 
+Next select the new connection definition from the dropdown list on the toolbar. The application will pause while it loads the database schema information. Now you can explore the schema using the tree of database objects on the left. Keep in mind the “mini” in Mini SQL Query, the list of objects is by no means exhaustive! Currently the essentials such as tables, views and their associated column information are loaded. Depending on the provider foreign key information is also loaded.
+ 
+Note – Foreign Keys
+-------------------
+The core schema engine is generic for all ADO.NET providers. The only thing not discoverable by the generic engine is the foreign key relationships. To retrieve foreign key information from a database, a provider specific implementation is required; currently there are two, Microsoft SQL Server and Microsoft’s SQL Server Compact Edition. These are typically driven by demand. Patches accepted!
+
+Note – Tables and Views Only
+----------------------------
+Currently only table and view information is retrieved from the databases schema. Again, this is driven by demand. The number of times access to stored procedures has been too low to warrant implementation. Patches accepted!
+
+[Quickstart](https://github.com/paul-kohler-au/minisqlquery/blob/master/src/Docs/Quickstart.md)
Added +20 -0
diff --git a/minisqlquery-master/src/Docs/Adding an SQLite Connection.md b/minisqlquery-master/src/Docs/Adding an SQLite Connection.md
new file mode 100644
index 0000000..2481cbe
--- /dev/null
+++ b/minisqlquery-master/src/Docs/Adding an SQLite Connection.md
@@ -0,0 +1,20 @@
+Adding an SQLite Connection
+===========================
+
+Click *Add*.
+
+Select an SQLite Provider, in this example I am leaving it as "System.Data.SQLite" (http://sqlite.org/).
+
+Enter a *Name* for the connection, e.g. "SQLite Example".
+
+Set the “Data source” value to the SQLite filename, if it does not exist the SQLite provider will create it.
+
+![Add SQLite connection](https://github.com/paul-kohler-au/minisqlquery/blob/master/src/Docs/Mini-SQL-Query--Edit-Connection-Strings--Add-SQLite-connection.png)
+
+You can use the *"Test..."* button to confirm the connectivity.
+
+See the [http://system.data.sqlite.org/index.html/doc/trunk/www/faq.wiki](http://system.data.sqlite.org/index.html/doc/trunk/www/faq.wiki) site for more detailed information on this provider.
+ 
+Press *OK* and you will return to the “Database Connection List Editor” and you will see the new item in the list. Press *OK* here to return to Mini SQL Query.
+
+[Quickstart](https://github.com/paul-kohler-au/minisqlquery/blob/master/src/Docs/Quickstart.md)
Added +36 -0
diff --git a/minisqlquery-master/src/Docs/Basic Usage.md b/minisqlquery-master/src/Docs/Basic Usage.md
new file mode 100644
index 0000000..ae97a47
--- /dev/null
+++ b/minisqlquery-master/src/Docs/Basic Usage.md
@@ -0,0 +1,36 @@
+Basic Usage
+===========
+
+Below is a list of typical usage scenarios with Mini SQL Query. 
+
+Some Shortcuts
+--------------
+
+Mini SQL Query uses the typical editor key shortcuts for cut, copy, paste etc. 
+
+
+**ActionKey** / **Combination**
+
+**New window**	Control + N
+
+**New File** (then select type, txt, sql etc)	Control + Alt + N
+
+**Open**	Control + O
+
+**Save**	Control + S
+
+**Go to line**	Control + G
+
+**Execute**	F5
+
+**View table**	Control + T
+
+**Cut	Control** + X
+
+**Copy**	Control + C
+
+**Paste**	Control + V
+
+**Comment block (language specific)**	Control + /
+
+[Quickstart](https://github.com/paul-kohler-au/minisqlquery/blob/master/src/Docs/Quickstart.md)
Added +119 -0
diff --git a/minisqlquery-master/src/Docs/Context Menu Commands.md b/minisqlquery-master/src/Docs/Context Menu Commands.md
new file mode 100644
index 0000000..cd10ff2
--- /dev/null
+++ b/minisqlquery-master/src/Docs/Context Menu Commands.md
@@ -0,0 +1,119 @@
+Context Menu Commands
+=====================
+
+Following is a brief explanation of the commands available on the context menu of the DB Inspector.
+
+View Table Data
+---------------
+
+To view the contents of a table, either:
+
+- Right-click the name of the table in the DB Inspector and select *View table data*
+- From the *Plugins* menu, select *View table... (Ctrl+T)* and then choose a table name from the dropdown list or type it in. 
+
+Use *F5* to refresh or click the “Reload Table” link button.
+
+Below is an example of data loaded by the tool. The date format can be modified via the *Edit - Options* menu item.
+ 
+*NOTE – Exporting Data*
+
+An interesting addition here is the “Export Script...” link. It will convert the contents of the window into insert statements. By default it will observe _identity_ or _timestamp_ columns for example and not add those columns to the insert statements. If you want these values output the option can be changed. This can be very useful with setting up test data for example. With respect to MSSQL the “SET IDENTITY_INSERT <tablename> ON” command can be used to insert the data.
+
+Generate Select Statement
+-------------------------
+
+Make sure you have an active edit window in focus (Control+N) and right click a table and select “Generate Select Statement”. SQL code similar to below will be generated.
+
+    SELECT
+    	JobCandidateID,
+    	EmployeeID,
+    	Resume,
+    	ModifiedDate
+    FROM HumanResources.JobCandidate
+    
+Generate Select COUNT(*) Statement
+----------------------------------
+
+No prize for guessing what this does. Make sure you have an active edit window in focus (Control+N) and right click a table and select “Generate Select COUNT(*) Statement”. SQL code similar to below will be generated. 
+
+    SELECT COUNT(*) FROM HumanResources.EmployeeAddress
+
+Generate Insert Statement
+-------------------------
+
+Make sure you have an active edit window in focus (Control+N) and right click a table and select “Generate Insert Statement”. SQL code similar to below will be generated. 
+When an insert statement is generated the tables’ schema is used to ignore columns that are “read-only”. Examples are identity or timestamp columns. Also note the default values and comments to assist filling out the statement. The default for a GUID column is an empty GUID, if you need a new one generated use the “Insert GUID” menu item from the Plugins menu. Dates are a bit of a can of worms so I opted for a question mark (sorry!)
+
+	INSERT INTO HumanResources.Employee
+		(NationalIDNumber,
+		ContactID,
+		LoginID,
+		ManagerID,
+		Title,
+		BirthDate,
+		MaritalStatus,
+		Gender,
+		HireDate,
+		SalariedFlag,
+		VacationHours,
+		SickLeaveHours,
+		CurrentFlag,
+		rowguid,
+		ModifiedDate)
+	VALUES
+		(N'' /*NationalIDNumber,nvarchar(15)*/,
+		0 /*ContactID,int*/,
+		N'' /*LoginID,nvarchar(256)*/,
+		null /*ManagerID,int*/,
+		N'' /*Title,nvarchar(50)*/,
+		'?' /*BirthDate,datetime*/,
+		N'' /*MaritalStatus,nchar(1)*/,
+		N'' /*Gender,nchar(1)*/,
+		'?' /*HireDate,datetime*/,
+		0 /*SalariedFlag,bit*/,
+		0 /*VacationHours,smallint*/,
+		0 /*SickLeaveHours,smallint*/,
+		0 /*CurrentFlag,bit*/,
+		'00000000-0000-0000-0000-000000000000' /*rowguid,uniqueidentifier*/,
+		'?' /*ModifiedDate,datetime*/)
+
+Generate Update Statement
+-------------------------
+
+Make sure you have an active edit window in focus (Control+N) and right click a table and select “Generate Update Statement”. SQL code similar to below will be generated. 
+As with the insert statement generation, the tables’ schema is used to ignore columns that are “read-only”. Also, the primary key columns go into the where clause with comments to assist.
+
+	UPDATE HumanResources.EmployeeDepartmentHistory
+	SET
+		EndDate = null,
+		ModifiedDate = '?'
+	WHERE
+		EmployeeID =  /*value:EmployeeID,int*/ AND
+		DepartmentID =  /*value:DepartmentID,smallint*/ AND
+		ShiftID =  /*value:ShiftID,tinyint*/ AND
+		StartDate = /*value:StartDate,datetime*/
+
+Generate Delete Statement
+-------------------------
+
+Make sure you have an active edit window in focus (Control+N) and right click a table and select “Generate Delete Statement”. SQL code similar to below will be generated. 
+As with the update statement generation, the tables’ schema is used to create a where clause with the primary key columns.
+
+	DELETE FROM
+		HumanResources.Department
+	WHERE
+		DepartmentID = /*value:DepartmentID*/
+
+Copy Table Name
+---------------
+
+This command copies the fully qualified table name to the windows clipboard.
+
+Truncate Table
+--------------
+
+This command deletes all the rows from the selected table. The truncate statement is not actually used currently due to the requirements (no foreign keys) and cross database support so in essence the resulting command is just “DELETE FROM *table*”. Patches welcome!
+
+The truncate table command also sends an application level message so that if you are viewing a table with the view data command, the contents of that window is refreshed.
+
+[Quickstart](https://github.com/paul-kohler-au/minisqlquery/blob/master/src/Docs/Quickstart.md)
Added +0 -0
diff --git a/minisqlquery-master/src/Docs/Mini-SQL-Query.png b/minisqlquery-master/src/Docs/Mini-SQL-Query.png
new file mode 100644
index 0000000..415923f
Binary files /dev/null and b/minisqlquery-master/src/Docs/Mini-SQL-Query.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/Docs/Mini-SQL-Query--AdventureWorks.png b/minisqlquery-master/src/Docs/Mini-SQL-Query--AdventureWorks.png
new file mode 100644
index 0000000..0bc1d21
Binary files /dev/null and b/minisqlquery-master/src/Docs/Mini-SQL-Query--AdventureWorks.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/Docs/Mini-SQL-Query--Edit-Connection-Strings.png b/minisqlquery-master/src/Docs/Mini-SQL-Query--Edit-Connection-Strings.png
new file mode 100644
index 0000000..f09158b
Binary files /dev/null and b/minisqlquery-master/src/Docs/Mini-SQL-Query--Edit-Connection-Strings.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/Docs/Mini-SQL-Query--Edit-Connection-Strings--Add-SQLite-connection.png b/minisqlquery-master/src/Docs/Mini-SQL-Query--Edit-Connection-Strings--Add-SQLite-connection.png
new file mode 100644
index 0000000..76c7fab
Binary files /dev/null and b/minisqlquery-master/src/Docs/Mini-SQL-Query--Edit-Connection-Strings--Add-SQLite-connection.png differ
Added +37 -0
diff --git a/minisqlquery-master/src/Docs/Quickstart.md b/minisqlquery-master/src/Docs/Quickstart.md
new file mode 100644
index 0000000..13ea3cd
--- /dev/null
+++ b/minisqlquery-master/src/Docs/Quickstart.md
@@ -0,0 +1,37 @@
+Mini SQL Query Quick Start
+=================
+
+This document is a quick overview of how to use **Mini SQL Query**.
+
+**Mini SQL Query** from is a minimalist SQL query tool for multiple providers (MSSQL, Oracle, OLEDB, MS Access, SQLite etc). The goal of the Mini SQL Query tool is to allow a developer or trouble-shooter to quickly diagnose issues or make changes to a database using a tool with a small footprint, is portable, fast, flexible and easy to use.
+
+Mini SQL Query is "deliberately minimalist". Software too often becomes bloated and less usable while trying to satisfy the 99% of what every user wants. Mini SQL Query aims to satisfy the most common tasks what the average user seeks to achieve, in doing so it keeps the size and complexity of the application to a minimum. 
+
+The original application was developed almost entirely using Microsoft's Visual Studio C# Express IDE.
+
+
+The First Run
+--------------
+
+The very first time you run Mini SQL Query, the application will look similar to the image below:
+
+![Mini SQL Query on first run](https://github.com/paul-kohler-au/minisqlquery/blob/master/src/Docs/Mini-SQL-Query.png)
+ 
+The first thing you need to do is **configure some sort of connection**. From the menu, select ***Edit > Edit connection strings***. 
+ 
+There are some default connections present, they may not work on your system - they are simply examples. Each has a Name, a Provider and a Connection with optional comments. Selecting one of the items in the left list will display the details on the right.
+
+![](https://github.com/paul-kohler-au/minisqlquery/blob/master/src/Docs/Mini-SQL-Query--Edit-Connection-Strings.png)
+
+From this point add, modify or copy a connection. 
+
+More...
+-------
+
+See:
+
+- [Basic Usage](https://github.com/paul-kohler-au/minisqlquery/blob/master/src/Docs/Basic%20Usage.md)
+- [Context Menu Commands](https://github.com/paul-kohler-au/minisqlquery/blob/master/src/Docs/Context%20Menu%20Commands.md)
+- [Adding a MSSQL Connection](https://github.com/paul-kohler-au/minisqlquery/blob/master/src/Docs/Adding%20a%20MSSQL%20Connection.md)
+- [Adding an SQLite Connection](https://github.com/paul-kohler-au/minisqlquery/blob/master/src/Docs/Adding%20an%20SQLite%20Connection.md)
+- [Thank You](https://github.com/paul-kohler-au/minisqlquery/blob/master/src/Docs/Thank%20You.md)
Added +14 -0
diff --git a/minisqlquery-master/src/Docs/Thank You.md b/minisqlquery-master/src/Docs/Thank You.md
new file mode 100644
index 0000000..97dc0f8
--- /dev/null
+++ b/minisqlquery-master/src/Docs/Thank You.md
@@ -0,0 +1,14 @@
+Thank You
+=========
+
+*Mini SQL Query* is written by Paul Kohler (VIRIDIS Software - [http://viridissoftware.com.au/](http://viridissoftware.com.au/); email "paul (at) viridissoftware (dot) com (dot) au")
+
+Also, a special thanks to Kent Carlsle for his contributions “kdcarlisle (at) gmail (dot) com.”
+
+*Mini SQL Query* relies on several other 'free/open source' products to pull together a simple but useful SQL working environment. In no particular order, thank you... 
+
+- **Mark James**, for the Silk icon set [http://www.famfamfam.com/](http://www.famfamfam.com/)
+- **ic#code** for the SharpDevelopSharpDevelop project where I get the ICSharpCode.TextEditor from that removes the need for using an plain old textbox [http://www.icsharpcode.net/OpenSource/SD/](http://www.icsharpcode.net/OpenSource/SD/)
+- **Weifen Luo** for his extremely easy to use WinForms docking suite [http://sourceforge.net/projects/dockpanelsuite/](http://sourceforge.net/projects/dockpanelsuite/)
+- To the **Castle Project** [http://www.castleproject.org/](http://www.castleproject.org/) for the NVelocity text template engine port.
+- To the **Ninject** [http://www.ninject.org/](http://www.ninject.org/) for the dependency injection container
Added +36 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.4.5.resharper b/minisqlquery-master/src/MiniSqlQuery.4.5.resharper
new file mode 100644
index 0000000..81d4aee
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.4.5.resharper
@@ -0,0 +1,36 @@
+<Configuration>
+  <SharedSolutionTemplateManager>
+    <LiveTemplates>
+      <Template uid="c32292d7-27d5-4bbb-bb96-45d9d25ff58b" shortcut="propnotify" description="A get/set property that observes the notify changed style" text="private $TYPE$ _$cammelName$;&#xD;&#xA;&#xD;&#xA;//[Category(&quot;&quot;)]&#xD;&#xA;//[Description(&quot;&quot;)]&#xD;&#xA;public $TYPE$ $NAME$&#xD;&#xA;{&#xD;&#xA;	get { return _$cammelName$; }&#xD;&#xA;	set&#xD;&#xA;	{&#xD;&#xA;		if (_$cammelName$ != value)&#xD;&#xA;		{&#xD;&#xA;			_$cammelName$ = value;&#xD;&#xA;			OnPropertyChanged(&quot;$NAME$&quot;);&#xD;&#xA;		}&#xD;&#xA;	}&#xD;&#xA;}&#xD;&#xA;" reformat="True" shortenQualifiedReferences="True">
+        <Context>
+          <CSharpContext context="TypeMember" minimumLanguageVersion="2.0" />
+        </Context>
+        <Categories />
+        <Variables>
+          <Variable name="TYPE" expression="" initialRange="0" />
+          <Variable name="NAME" expression="suggestVariableName()" initialRange="0" />
+          <Variable name="cammelName" expression="decapitalize(NAME)" initialRange="-1" />
+        </Variables>
+        <CustomProperties />
+      </Template>
+    </LiveTemplates>
+    <FileTemplates>
+      <Template uid="de77ff5d-a3b0-4edc-a18f-f5ffbd29a07c" shortcut="" description="App Command" text="using System;&#xD;&#xA;using System.Windows.Forms;&#xD;&#xA;using MiniSqlQuery.Core;&#xD;&#xA;using MiniSqlQuery.Core.Commands;&#xD;&#xA;//using WeifenLuo.WinFormsUI.Docking;&#xD;&#xA;&#xD;&#xA;namespace $ns$&#xD;&#xA;{&#xD;&#xA;	public class $class_name$&#xD;&#xA;		: CommandBase&#xD;&#xA;	{&#xD;&#xA;		public $class_name$()&#xD;&#xA;			: base(&quot;$name$&quot;)&#xD;&#xA;		{&#xD;&#xA;			//ShortcutKeys = Keys.Control | Keys.Alt | Keys.?;&#xD;&#xA;			//SmallImage = ImageResource.?;&#xD;&#xA;		}&#xD;&#xA;&#xD;&#xA;		public override void Execute()&#xD;&#xA;		{&#xD;&#xA;			// todo - imp command&#xD;&#xA;		}&#xD;&#xA;		&#xD;&#xA;		//public override bool Enabled&#xD;&#xA;		//{&#xD;&#xA;		//	get { return HostWindow.ActiveChildForm != null; }&#xD;&#xA;		//}&#xD;&#xA;	}&#xD;&#xA;}" reformat="True" shortenQualifiedReferences="True">
+        <Context>
+          <ProjectLanguageContext language="CSharp" />
+        </Context>
+        <Categories />
+        <Variables>
+          <Variable name="ns" expression="fileDefaultNamespace()" initialRange="-1" />
+          <Variable name="class_name" expression="getFileNameWithoutExtension()" initialRange="0" />
+          <Variable name="name" expression="" initialRange="0" />
+        </Variables>
+        <CustomProperties>
+          <Property key="FileName" value="AppCommand" />
+          <Property key="Extension" value="cs" />
+          <Property key="ValidateFileName" value="False" />
+        </CustomProperties>
+      </Template>
+    </FileTemplates>
+  </SharedSolutionTemplateManager>
+</Configuration>
\ No newline at end of file
Added +517 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.5.0.resharper b/minisqlquery-master/src/MiniSqlQuery.5.0.resharper
new file mode 100644
index 0000000..523c755
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.5.0.resharper
@@ -0,0 +1,517 @@
+<Configuration>
+  <SharedSolutionTemplateManager>
+    <LiveTemplates>
+      <Template uid="c32292d7-27d5-4bbb-bb96-45d9d25ff58b" shortcut="propnotify" description="A get/set property that observes the notify changed style" text="private $TYPE$ _$cammelName$;&#xD;&#xA;&#xD;&#xA;//[Category(&quot;&quot;)]&#xD;&#xA;//[Description(&quot;&quot;)]&#xD;&#xA;public $TYPE$ $NAME$&#xD;&#xA;{&#xD;&#xA;	get { return _$cammelName$; }&#xD;&#xA;	set&#xD;&#xA;	{&#xD;&#xA;		if (_$cammelName$ != value)&#xD;&#xA;		{&#xD;&#xA;			_$cammelName$ = value;&#xD;&#xA;			OnPropertyChanged(&quot;$NAME$&quot;);&#xD;&#xA;		}&#xD;&#xA;	}&#xD;&#xA;}&#xD;&#xA;" reformat="True" shortenQualifiedReferences="True">
+        <Context>
+          <CSharpContext context="TypeMember" minimumLanguageVersion="2.0" />
+        </Context>
+        <Categories />
+        <Variables>
+          <Variable name="TYPE" expression="" initialRange="0" />
+          <Variable name="NAME" expression="suggestVariableName()" initialRange="0" />
+          <Variable name="cammelName" expression="decapitalize(NAME)" initialRange="-1" />
+        </Variables>
+        <CustomProperties />
+      </Template>
+    </LiveTemplates>
+    <FileTemplates>
+      <Template uid="de77ff5d-a3b0-4edc-a18f-f5ffbd29a07c" shortcut="" description="App Command" text="using System;&#xD;&#xA;using System.Windows.Forms;&#xD;&#xA;using MiniSqlQuery.Core;&#xD;&#xA;using MiniSqlQuery.Core.Commands;&#xD;&#xA;//using WeifenLuo.WinFormsUI.Docking;&#xD;&#xA;&#xD;&#xA;namespace $ns$&#xD;&#xA;{&#xD;&#xA;	public class $class_name$&#xD;&#xA;		: CommandBase&#xD;&#xA;	{&#xD;&#xA;		public $class_name$()&#xD;&#xA;			: base(&quot;$name$&quot;)&#xD;&#xA;		{&#xD;&#xA;			//ShortcutKeys = Keys.Control | Keys.Alt | Keys.?;&#xD;&#xA;			//SmallImage = ImageResource.?;&#xD;&#xA;		}&#xD;&#xA;&#xD;&#xA;		public override void Execute()&#xD;&#xA;		{&#xD;&#xA;			// todo - imp command&#xD;&#xA;		}&#xD;&#xA;		&#xD;&#xA;		//public override bool Enabled&#xD;&#xA;		//{&#xD;&#xA;		//	get { return HostWindow.ActiveChildForm != null; }&#xD;&#xA;		//}&#xD;&#xA;	}&#xD;&#xA;}" reformat="True" shortenQualifiedReferences="True">
+        <Context>
+          <ProjectLanguageContext language="CSharp" />
+        </Context>
+        <Categories />
+        <Variables>
+          <Variable name="ns" expression="fileDefaultNamespace()" initialRange="-1" />
+          <Variable name="class_name" expression="getFileNameWithoutExtension()" initialRange="0" />
+          <Variable name="name" expression="" initialRange="0" />
+        </Variables>
+        <CustomProperties>
+          <Property key="FileName" value="AppCommand" />
+          <Property key="Extension" value="cs" />
+          <Property key="ValidateFileName" value="False" />
+        </CustomProperties>
+      </Template>
+    </FileTemplates>
+  </SharedSolutionTemplateManager>
+  <CodeStyleSettings>
+    <ExternalPath IsNull="False">
+    </ExternalPath>
+    <Sharing>SOLUTION</Sharing>
+    <CSharp>
+      <FormatSettings>
+        <MODIFIERS_ORDER IsNull="False">
+          <Item>public</Item>
+          <Item>protected</Item>
+          <Item>internal</Item>
+          <Item>private</Item>
+          <Item>new</Item>
+          <Item>abstract</Item>
+          <Item>virtual</Item>
+          <Item>override</Item>
+          <Item>sealed</Item>
+          <Item>static</Item>
+          <Item>readonly</Item>
+          <Item>extern</Item>
+          <Item>unsafe</Item>
+          <Item>volatile</Item>
+        </MODIFIERS_ORDER>
+        <SPACE_AFTER_TYPECAST_PARENTHESES>False</SPACE_AFTER_TYPECAST_PARENTHESES>
+        <SPACE_BEFORE_SIZEOF_PARENTHESES>False</SPACE_BEFORE_SIZEOF_PARENTHESES>
+        <SPACE_BEFORE_TYPEOF_PARENTHESES>False</SPACE_BEFORE_TYPEOF_PARENTHESES>
+        <WRAP_LIMIT>200</WRAP_LIMIT>
+      </FormatSettings>
+      <UsingsSettings>
+        <KeepImports IsNull="False">
+          <Item>System</Item>
+        </KeepImports>
+        <MandatoryImports IsNull="False">
+          <Item>System</Item>
+        </MandatoryImports>
+      </UsingsSettings>
+      <Naming2>
+        <EventHandlerPatternLong>$object$_On$event$</EventHandlerPatternLong>
+        <EventHandlerPatternShort>$event$Handler</EventHandlerPatternShort>
+        <ExceptionName IsNull="False">
+        </ExceptionName>
+        <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="TypesAndNamespaces" />
+        <PredefinedRule Inspect="True" Prefix="I" Suffix="" Style="AaBb" ElementKind="Interfaces" />
+        <PredefinedRule Inspect="True" Prefix="T" Suffix="" Style="AaBb" ElementKind="TypeParameters" />
+        <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="MethodPropertyEvent" />
+        <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Locals" />
+        <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="LocalConstants" />
+        <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Parameters" />
+        <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PublicFields" />
+        <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="PrivateInstanceFields" />
+        <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="PrivateStaticFields" />
+        <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Constants" />
+        <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PrivateConstants" />
+        <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="StaticReadonly" />
+        <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PrivateStaticReadonly" />
+        <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="EnumMember" />
+        <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Other" />
+      </Naming2>
+      <CustomMemberReorderingPatterns><![CDATA[<?xml version="1.0" encoding="utf-8"?>
+<Patterns xmlns="urn:shemas-jetbrains-com:member-reordering-patterns">
+	<!--
+	I. Overall
+
+	I.1 Each pattern can have <Match>....</Match> element. For the given type declaration, the pattern with the match, evaluated to 'true' with the largest weight, will be used 
+	I.2 Each pattern consists of the sequence of <Entry>...</Entry> elements. Type member declarations are distributed between entries
+	I.3 If pattern has RemoveAllRegions="true" attribute, then all regions will be cleared prior to reordering. Otherwise, only auto-generated regions will be cleared
+	I.4 The contents of each entry is sorted by given keys (First key is primary,  next key is secondary, etc). Then the declarations are grouped and en-regioned by given property
+
+	II. Available match operands
+
+	Each operand may have Weight="..." attribute. This weight will be added to the match weight if the operand is evaluated to 'true'.
+	The default weight is 1
+
+	II.1 Boolean functions:
+	II.1.1 <And>....</And>
+	II.1.2 <Or>....</Or>
+	II.1.3 <Not>....</Not>
+
+	II.2 Operands
+	II.2.1 <Kind Is="..."/>. Kinds are: class, struct, interface, enum, delegate, type, constructor, destructor, property, indexer, method, operator, field, constant, event, member
+	II.2.2 <Name Is="..." [IgnoreCase="true/false"] />. The 'Is' attribute contains regular expression
+	II.2.3 <HasAttribute CLRName="..." [Inherit="true/false"] />. The 'CLRName' attribute contains regular expression
+	II.2.4 <Access Is="..."/>. The 'Is' values are: public, protected, internal, protected internal, private
+	II.2.5 <Static/>
+	II.2.6 <Abstract/>
+	II.2.7 <Virtual/>
+	II.2.8 <Override/>
+	II.2.9 <Sealed/>
+	II.2.10 <Readonly/>
+	II.2.11 <ImplementsInterface CLRName="..."/>. The 'CLRName' attribute contains regular expression
+	II.2.12 <HandlesEvent />
+	-->
+
+
+    <!-- Do not reorder COM interfaces -->
+    <Pattern>
+        <Match>
+            <And Weight="2000">
+                <Kind Is="interface"/>
+                <HasAttribute CLRName="System.Runtime.InteropServices.InterfaceTypeAttribute"
+                              Inherit="true"/>
+            </And>
+        </Match>
+    </Pattern>
+
+    <!-- Do not reorder P/Invoke structs -->
+    <Pattern>
+        <Match>
+            <And Weight="2000">
+                <Or>
+                    <Kind Is="struct"/>
+                    <Kind Is="class"/>
+                </Or>
+                <HasAttribute CLRName="System.Runtime.InteropServices.StructLayoutAttribute"
+                              Inherit="true"/>
+            </And>
+        </Match>
+    </Pattern>
+
+    <!-- Do not reorder P/Invoke classes (called xxxNativeMethods) -->
+    <Pattern>
+        <Match>
+            <And Weight="2000">
+                <Kind Is="class"/>
+                <Name Is=".*NativeMethods" />
+            </And>
+        </Match>
+    </Pattern>
+
+	  <!--Special formatting of NUnit test fixture-->
+	<Pattern RemoveAllRegions="true">
+		<Match>
+		  <And Weight="100">
+			<Kind Is="class"/>
+			<HasAttribute CLRName="NUnit.Framework.TestFixtureAttribute" Inherit="true"/>
+		  </And>
+		</Match>
+
+		<!--Setup/Teardow-->
+		<Entry>
+		  <Match>
+			<And>
+			  <Kind Is="method"/>
+			  <Or>
+				<HasAttribute CLRName="NUnit.Framework.SetUpAttribute" Inherit="true"/>
+				<HasAttribute CLRName="NUnit.Framework.TearDownAttribute" Inherit="true"/>
+				<HasAttribute CLRName="NUnit.Framework.FixtureSetUpAttribute" Inherit="true"/>
+				<HasAttribute CLRName="NUnit.Framework.FixtureTearDownAttribute" Inherit="true"/>
+			  </Or>
+			</And>
+		  </Match>
+		  <!--<Group Region="Setup/Teardown"/>-->
+		</Entry>
+
+		<!--All other members-->
+		<Entry/>
+
+		<!--Test methods-->
+		<Entry>
+		  <Match>
+			<And Weight="100">
+			  <Kind Is="method"/>
+			  <HasAttribute CLRName="NUnit.Framework.TestAttribute" Inherit="false"/>
+			</And>
+		  </Match>
+		  <Sort>
+			<Name/>
+		  </Sort>
+		</Entry>
+	</Pattern>
+
+    <!-- StyleCop pattern -->
+    <Pattern RemoveAllRegions="true">
+        <Match>
+            <Or Weight="1000" >
+                <Kind Is="class" />
+                <Kind Is="struct" />
+                <Kind Is="interface"/>
+            </Or>
+        </Match>
+
+        <!-- constants and fields -->
+        <Entry>
+            <Match>
+                <Or>
+                    <Kind Is="constant"/>
+                    <Kind Is="field"/>
+                </Or>
+            </Match>
+            <Sort>
+                <Access Order="public internal protected-internal protected private"/>
+                <Kind Order="constant field"/>
+                <Readonly/>
+                <Static/>
+                <Name/>
+            </Sort>
+            <!-- <Group Region="Constants and Fields"/>-->
+        </Entry>
+
+        <!-- constructors -->
+        <Entry>
+            <Match>
+                <Or Weight="200">
+                    <Kind Is="constructor"/>
+                    <Kind Is="destructor"/>
+                </Or>
+            </Match>
+            <Sort>
+                <Static/>
+                <Kind Order="constructor destructor"/>
+                <Access Order="public internal protected-internal protected private"/>
+            </Sort>
+            <!-- <Group Region="Constructors and Destructors"/>-->
+        </Entry>
+
+        <!-- delegates -->
+        <Entry>
+            <Match>
+                <Kind Is="delegate"/>
+            </Match>
+            <Sort>
+                <Access Order="public internal protected-internal protected private" />
+                <Static />
+                <Name/>
+            </Sort>
+            <!--<Group Region="Delegates"/>-->
+        </Entry>
+
+        <!-- events -->
+        <Entry>
+            <Match>
+                <Kind Is="event"/>
+            </Match>
+            <Sort>
+                <Access Order="public internal protected-internal protected private" />
+                <Static />
+                <Name/>
+            </Sort>
+            <!--<Group Region="Events"/>-->
+        </Entry>
+
+        <!-- enum -->
+        <Entry>
+            <Match>
+                <Kind Is="enum"/>
+            </Match>
+            <Sort>
+                <Access Order="public internal protected-internal protected private" />
+                <Name/>
+            </Sort>
+            <!--<Group Region="Enums"/>-->
+        </Entry>
+
+        <!-- interfaces -->
+        <Entry>
+            <Match>
+                <Kind Is="interface" />
+            </Match>
+            <Sort>
+                <Access Order="public internal protected-internal protected private" />
+                <Name/>
+            </Sort>
+            <!--<Group Region="Interfaces"/>-->
+        </Entry>
+
+        <!-- properties -->
+        <Entry>
+            <Match>
+                <Kind Is="property"/>
+            </Match>
+            <Sort>
+                <Access Order="public internal protected-internal protected private"/>
+                <Static/>
+                <Name/>
+            </Sort>
+            <!--<Group Region="Properties"/>-->
+        </Entry>
+
+        <!-- indexers -->
+        <Entry>
+            <Match>
+                <Kind Is="indexer"
+                      Weight="300" />
+            </Match>
+            <Sort>
+                <Access Order="public internal protected-internal protected private" />
+                <Static/>
+                <Name/>
+            </Sort>
+            <!--<Group Region="Indexers"/>-->
+        </Entry>
+
+        <!-- operator -->
+        <Entry>
+            <Match>
+                <Kind Is="operator"/>
+            </Match>
+            <Sort>
+                <Access Order="public internal protected-internal protected private" />
+                <Static/>
+                <Name/>
+            </Sort>
+            <!--<Group Region="Operators"/>-->
+        </Entry>
+
+        <!-- public methods -->
+        <Entry>
+            <Match>
+                <And>
+                    <Kind Is="method"/>
+                    <Access Is="public"/>
+                </And>
+            </Match>
+            <Sort>
+                <Access Order="public"/>
+                <Static/>
+                <Name/>
+            </Sort>
+            <!--<Group Region="Public Methods"/>-->
+        </Entry>
+
+        <!-- Implemented Interfaces -->
+        <Entry>
+            <Match>
+                <And Weight="500">
+                    <Kind Is="method"/>
+                    <ImplementsInterface CLRName=".*"/>
+                </And>
+            </Match>
+            <Sort>
+                <ImplementsInterface />
+                <Access Order="public internal protected-internal protected private"/>
+                <Static/>
+                <Name/>
+            </Sort>
+            <!--
+            <Group Region="Implemented Interfaces">
+                <ImplementsInterface Region="${ImplementsInterface}" />
+            </Group>
+            -->
+        </Entry>
+
+        <!-- other methods -->
+        <Entry>
+            <Match>
+                <Kind Is="method"/>
+            </Match>
+            <Sort>
+                <Access Order="public internal protected-internal protected private"/>
+                <Static/>
+                <Name/>
+            </Sort>
+            <!--<Group Region="Methods"/>-->
+        </Entry>
+
+        <!-- Nested structs -->
+        <Entry>
+            <Match>
+                <Kind Is="struct"
+                      Weight="600" />
+            </Match>
+            <Sort>
+                <Static />
+                <Access Order="public internal protected-internal protected private" />
+                <Name/>
+            </Sort>
+        </Entry>
+
+        <!-- Nested classes -->
+        <Entry>
+            <Match>
+                <Kind Is="class"
+                      Weight="700" />
+            </Match>
+            <Sort>
+                <Static />
+                <Access Order="public internal protected-internal protected private" />
+                <Name/>
+            </Sort>
+        </Entry>
+
+        <!-- all other members -->
+        <Entry/>
+
+    </Pattern>
+</Patterns>
+]]></CustomMemberReorderingPatterns>
+    </CSharp>
+    <VB>
+      <FormatSettings />
+      <ImportsSettings>
+        <KeepImports IsNull="False">
+          <Item>System</Item>
+        </KeepImports>
+        <MandatoryImports IsNull="False">
+          <Item>System</Item>
+        </MandatoryImports>
+      </ImportsSettings>
+      <Naming2>
+        <EventHandlerPatternLong>$object$_On$event$</EventHandlerPatternLong>
+        <EventHandlerPatternShort>$event$Handler</EventHandlerPatternShort>
+      </Naming2>
+    </VB>
+    <Web>
+      <Naming2>
+        <UserRule Name="ASP_TAG_NAME" Inspect="True" Prefix="" Suffix="" Style="AaBb" />
+        <UserRule Name="ASP_TAG_PREFIX" Inspect="True" Prefix="" Suffix="" Style="AaBb" />
+        <UserRule Name="ASP_FIELD" Inspect="True" Prefix="" Suffix="" Style="AaBb" />
+        <UserRule Name="ASP_HTML_CONTROL" Inspect="True" Prefix="" Suffix="" Style="AaBb" />
+      </Naming2>
+    </Web>
+    <Xaml>
+      <Naming2>
+        <UserRule Name="XAML_FIELD" Inspect="True" Prefix="_" Suffix="" Style="aaBb" />
+        <UserRule Name="NAMESPACE_ALIAS" Inspect="True" Prefix="" Suffix="" Style="AaBb" />
+        <UserRule Name="XAML_RESOURCE" Inspect="True" Prefix="" Suffix="" Style="AaBb" />
+      </Naming2>
+    </Xaml>
+    <XML>
+      <FormatSettings />
+    </XML>
+    <FileHeader Region="License"><![CDATA[
+Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+This source code is made available under the terms of the GNU Lesser General Public License v3.0
+https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+]]></FileHeader>
+    <GenerateMemberBody />
+    <Naming2>
+      <EventHandlerPatternLong>$object$_On$event$</EventHandlerPatternLong>
+      <EventHandlerPatternShort>$event$Handler</EventHandlerPatternShort>
+      <ExceptionName IsNull="False">
+      </ExceptionName>
+      <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="MethodPropertyEvent" />
+      <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="TypesAndNamespaces" />
+      <PredefinedRule Inspect="True" Prefix="I" Suffix="" Style="AaBb" ElementKind="Interfaces" />
+      <PredefinedRule Inspect="True" Prefix="T" Suffix="" Style="AaBb" ElementKind="TypeParameters" />
+      <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Locals" />
+      <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="LocalConstants" />
+      <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Parameters" />
+      <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PublicFields" />
+      <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="PrivateInstanceFields" />
+      <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="PrivateStaticFields" />
+      <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Constants" />
+      <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PrivateConstants" />
+      <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="StaticReadonly" />
+      <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PrivateStaticReadonly" />
+      <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="EnumMember" />
+      <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Other" />
+      <Abbreviation Text="BLC" />
+      <Abbreviation Text="DLC" />
+      <Abbreviation Text="CIS" />
+      <Abbreviation Text="SSO" />
+      <Abbreviation Text="DB" />
+      <Abbreviation Text="DDL" />
+      <Abbreviation Text="DTO" />
+      <Abbreviation Text="ID" />
+      <Abbreviation Text="IQ" />
+      <Abbreviation Text="SB" />
+      <Abbreviation Text="DT" />
+      <Abbreviation Text="DET" />
+      <Abbreviation Text="ATSI" />
+      <Abbreviation Text="PD" />
+      <Abbreviation Text="QCT" />
+      <Abbreviation Text="KLA" />
+      <Abbreviation Text="XML" />
+      <Abbreviation Text="DV" />
+      <Abbreviation Text="FK" />
+      <Abbreviation Text="OK" />
+      <Abbreviation Text="GNAF" />
+      <Abbreviation Text="PAF" />
+      <Abbreviation Text="PLI" />
+      <Abbreviation Text="LDAP" />
+      <Abbreviation Text="LOTE" />
+      <Abbreviation Text="SP" />
+      <Abbreviation Text="HR" />
+      <Abbreviation Text="URL" />
+      <Abbreviation Text="ICT" />
+      <Abbreviation Text="FTE" />
+      <Abbreviation Text="RAIS" />
+      <Abbreviation Text="AMP" />
+    </Naming2>
+  </CodeStyleSettings>
+</Configuration>
\ No newline at end of file
Added +123 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.build b/minisqlquery-master/src/MiniSqlQuery.build
new file mode 100644
index 0000000..9c4e1d1
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.build
@@ -0,0 +1,123 @@
+<?xml version="1.0"?>
+<!--
+Build file for Mini SQL Query.
+* To create a build (all binaries): "nant full-build"
+* To create a release distribution (all binaries, API docs, SDK etc ==> ZIP files - no PDBs): "nant distro"
+-->
+<project name="Mini SQL Query" default="build">
+  <description>Mini SQL Query build file.</description>
+  <property name="project.name" value="MiniSqlQuery"/>
+  <property name="project.friendly.name" value="Mini SQL Query"/>
+  <property name="project.version" value="1.0"/>
+  <property name="project.docs" value="false"/>
+
+  <!-- The release build is the 'public distribution', its should not incude test DLLs -->
+  <property name="project.release.type" value="Release - No Tests"/>
+  <property name="nant.settings.currentframework" value="net-4.0" />
+
+  <property name="project.description" value="Mini SQL Query by Paul Kohler is a minimalist SQL query tool for multiple providers (MSSQL, Oracle, OLEDB, MS Access files etc). The goal of the Mini SQL Query tool is to allow a developer or trouble-shooter to quickly diagnose issues or make changes to a database using a tool with a small footprint, that is fast and easy to use." />
+  <property name="create.assemblyinfo" value="true" />
+
+  <property name="release-base" value="${project::get-base-directory()}\"/>
+  <property name="release-build-dir" value="${release-base}ReleaseBuild\"/>
+  <property name="release-distro-dir" value="${release-base}DISTRO\"/>
+  <property name="release-contrib-dir" value="${release-base}Contrib\"/>
+
+  <target name="full-build" depends="create-common-assemblyinfo,build,copy-licences" description="" />
+  <target name="distro" depends="create-common-assemblyinfo,build,copy-licences,zip-release-build" description="" />
+
+  <target name="build" description="compiles the source code for a distribution.">
+    <delete dir="${release-build-dir}" />
+	<!-- Perform a restore before the build starts -->
+    <exec program="msbuild.exe" verbose="false">
+      <arg value="-m" />
+      <arg value="-property:Configuration=${project.release.type}" />
+      <arg value="-restore" />
+      <arg value="${project.name}.sln" />
+    </exec>
+	<!-- Build to specific directory -->
+    <exec program="msbuild.exe" verbose="false">
+      <arg value="-m" />
+      <arg value="-property:Configuration=${project.release.type}" />
+      <arg value="-property:OutDir=${release-build-dir}" />
+      <arg value="-target:Rebuild" />
+      <arg value="${project.name}.sln" />
+    </exec>
+    <call target="build-contrib-plugins" />
+    <delete>
+      <!-- Clean up some extras -->
+      <fileset>
+        <include name="${release-build-dir}*.pdb"/>
+        <include name="${release-build-dir}*.xml"/>
+      </fileset>
+    </delete>
+  </target>
+
+  <target name="build-contrib-plugins" depends="create-common-assemblyinfo" description="compiles the plugins under the CONTRIB directory source code for a release distribution.">
+    <exec workingdir="${release-contrib-dir}" program="msbuild.exe">
+      <arg value="-m" />
+      <arg value="-property:Configuration=${project.release.type}" />
+      <arg value="-property:OutDir=${release-build-dir}" />
+      <arg value="-target:Build" />
+    </exec>
+  </target>
+
+  <target name="clean-debug" description="">
+    <exec program="msbuild.exe">
+      <arg value="-property:Configuration=Debug" />
+      <arg value="-target:Clean" />
+    </exec>
+  </target>
+
+  <target name="clean-release" description="">
+    <exec program="msbuild.exe">
+      <arg value="-property:Configuration=${project.release.type}" />
+      <arg value="-target:Clean" />
+    </exec>
+  </target>
+
+  <target name="zip-release-build" description="Create ZIP file of the ReleaseBuild output, the SDK files and all source.">
+    <delete dir="${release-distro-dir}" />
+    <mkdir dir="${release-distro-dir}" />
+    <copy file="ChangeLog.txt" todir="${release-build-dir}" />
+    <copy file="ReadMe.htm" todir="${release-build-dir}" />
+    <!--<copy file="MiniSqlQueryQuickStart.docx" todir="${release-build-dir}" />-->
+    <zip zipfile="${release-distro-dir}${project.name}.zip" ziplevel="9">
+      <fileset basedir="${release-build-dir}" >
+        <exclude name="*.xml" />
+        <include name="*" />
+        <include name="Templates\*" />
+        <include name="x86\*" />
+        <include name="x64\*" />
+      </fileset>
+    </zip>
+  </target>
+
+  <target name="copy-licences" description="">
+    <copy todir="${release-build-dir}">
+      <fileset basedir="References">
+        <include name="License-*" />
+      </fileset>
+    </copy>
+  </target>
+
+  <target name="create-common-assemblyinfo" if="${create.assemblyinfo}">
+    <!-- ensure src/CommonAssemblyInfo.cs is writable if it already exists -->
+    <attrib file="CommonAssemblyInfo.cs" readonly="false" if="${file::exists('CommonAssemblyInfo.cs')}" />
+    <asminfo output="CommonAssemblyInfo.cs" language="CSharp">
+      <imports>
+        <import namespace="System" />
+        <import namespace="System.Reflection" />
+        <import namespace="System.Runtime.InteropServices" />
+      </imports>
+      <attributes>
+        <attribute type="ComVisibleAttribute" value="false" />
+        <attribute type="CLSCompliantAttribute" value="true" />
+        <attribute type="AssemblyConfigurationAttribute" value="${project.release.type}" />
+        <attribute type="AssemblyCompanyAttribute" value="Paul Kohler" />
+        <attribute type="AssemblyCopyrightAttribute" value="Copyright (C) 2005-${datetime::get-year(datetime::now())} Paul Kohler" />
+      </attributes>
+    </asminfo>
+  </target>
+
+</project>
Added +282 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/ApplicationServices.cs b/minisqlquery-master/src/MiniSqlQuery.Core/ApplicationServices.cs
new file mode 100644
index 0000000..4a26269
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/ApplicationServices.cs
@@ -0,0 +1,282 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+using Ninject;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	The core services of the application (singleton).
+    /// </summary>
+    public class ApplicationServices : IApplicationServices
+    {
+        /// <summary>
+        /// 	The _configuration objects.
+        /// </summary>
+        private static readonly List<Type> _configurationObjects = new List<Type>();
+
+        /// <summary>
+        /// 	The _container.
+        /// </summary>
+        private static readonly IKernel _container;
+
+        /// <summary>
+        /// 	The _plugins.
+        /// </summary>
+        private readonly Dictionary<Type, IPlugIn> _plugins = new Dictionary<Type, IPlugIn>();
+
+        /// <summary>
+        /// 	Initializes static members of the <see cref = "ApplicationServices" /> class.
+        /// </summary>
+        static ApplicationServices()
+        {
+            _container = new StandardKernel();
+
+            // add self
+            _container
+                .Bind<IApplicationServices>()
+                .To<ApplicationServices>()
+                .InSingletonScope()
+                .Named("ApplicationServices");
+        }
+
+        /// <summary>
+        /// 	Occurs when a system message is posted.
+        /// </summary>
+        public event EventHandler<SystemMessageEventArgs> SystemMessagePosted;
+
+        /// <summary>
+        /// 	Gets a reference to the singleton instance of the services for this application.
+        /// </summary>
+        /// <value>The singleton instance of <see cref = "IApplicationServices" />.</value>
+        public static IApplicationServices Instance
+        {
+            get { return _container.Get<IApplicationServices>(); }
+        }
+
+        /// <summary>
+        /// 	Gets the Dependency Injection container.
+        /// </summary>
+        /// <value>The container.</value>
+        public IKernel Container
+        {
+            get { return _container; }
+        }
+
+        /// <summary>
+        /// 	Gets the application host window.
+        /// </summary>
+        /// <value>The host window - a <see cref = "Form" />.</value>
+        public IHostWindow HostWindow
+        {
+            get { return _container.Get<IHostWindow>(); }
+        }
+
+        /// <summary>
+        /// 	Gets a dictionary of the current plugins for this application.
+        /// </summary>
+        /// <value>A reference to the plugin dictionary.</value>
+        public Dictionary<Type, IPlugIn> Plugins
+        {
+            get { return _plugins; }
+        }
+
+        /// <summary>
+        /// 	Gets the application settings instance.
+        /// </summary>
+        /// <value>A reference to the settings handler.</value>
+        public IApplicationSettings Settings
+        {
+            get { return _container.Get<IApplicationSettings>(); }
+        }
+
+        /// <summary>
+        /// 	The get configuration object types.
+        /// </summary>
+        /// <returns>An array of configuration objects.</returns>
+        public Type[] GetConfigurationObjectTypes()
+        {
+            return _configurationObjects.ToArray();
+        }
+
+        /// <summary>
+        /// 	Initializes the plugins that have been loaded during application startup.
+        /// </summary>
+        public void InitializePlugIns()
+        {
+            foreach (IPlugIn plugIn in _plugins.Values)
+            {
+                try
+                {
+                    if (HostWindow != null)
+                    {
+                        HostWindow.SetStatus(null, "Initializing " + plugIn.PluginName);
+                    }
+
+                    plugIn.InitializePlugIn();
+                }
+                catch (Exception exp)
+                {
+                    if (HostWindow == null)
+                    {
+                        throw;
+                    }
+
+                    HostWindow.DisplayMessageBox(
+                        null,
+                        string.Format("Error Initializing {0}:{1}{2}", plugIn.PluginName, Environment.NewLine, exp),
+                        "Plugin Error",
+                        MessageBoxButtons.OK,
+                        MessageBoxIcon.Warning,
+                        MessageBoxDefaultButton.Button1,
+                        0,
+                        null,
+                        null);
+                }
+            }
+        }
+
+        /// <summary>
+        /// 	Loads the <paramref name = "plugIn" /> (calling its <see cref = "IPlugIn.LoadPlugIn" /> method) and
+        /// 	adds it to the <see cref = "Plugins" /> dictionary for access by other services.
+        /// </summary>
+        /// <param name = "plugIn">The plugin to load.</param>
+        /// <exception cref = "ArgumentNullException">If <paramref name = "plugIn" /> is null.</exception>
+        public void LoadPlugIn(IPlugIn plugIn)
+        {
+            if (plugIn == null)
+            {
+                throw new ArgumentNullException("plugIn");
+            }
+
+            plugIn.LoadPlugIn(this);
+            var type = plugIn.GetType();
+            _plugins.Add(type, plugIn);
+            _container.Bind<IPlugIn>().To(type).InSingletonScope().Named(type.FullName);
+        }
+
+        /// <summary>
+        /// 	Posts a system message for listeners.
+        /// </summary>
+        /// <param name = "message">A system message type.</param>
+        /// <param name = "data">The asssociated data.</param>
+        public void PostMessage(SystemMessage message, object data)
+        {
+            OnSystemMessagePosted(new SystemMessageEventArgs(message, data));
+        }
+
+        /// <summary>
+        /// 	Registers the component service type <typeparamref name = "TService" /> with and implemetation of type <typeparamref name = "TImp" />.
+        /// </summary>
+        /// <typeparam name = "TService">The contract type.</typeparam>
+        /// <typeparam name = "TImp">The implementing type.</typeparam>
+        /// <param name = "key">The key or name of the service.</param>
+        public void RegisterComponent<TService, TImp>(string key)
+        {
+            _container.Bind<TService>().To(typeof(TImp)).InTransientScope().Named(key);
+        }
+
+        /// <summary>
+        /// 	Registers the component implemetation of type <typeparamref name = "TImp" />.
+        /// </summary>
+        /// <typeparam name = "TImp">The implementing type.</typeparam>
+        /// <param name = "key">The key or name of the service.</param>
+        public void RegisterComponent<TImp>(string key)
+        {
+            _container.Bind<TImp>().ToSelf().InTransientScope().Named(key);
+        }
+
+        /// <summary>
+        /// 	The register configuration object.
+        /// </summary>
+        /// <typeparam name = "TConfig">A configuration class.</typeparam>
+        public void RegisterConfigurationObject<TConfig>() where TConfig : IConfigurationObject
+        {
+            RegisterComponent<IConfigurationObject, TConfig>(typeof(TConfig).FullName);
+
+            // haven't successfully been able to query this into out of castle container (yet)
+            _configurationObjects.Add(typeof(TConfig));
+        }
+
+        /// <summary>
+        /// 	Registers the editor of type <typeparamref name = "TEditor" /> using the <see cref = "FileEditorDescriptor.EditorKeyName" />.
+        /// </summary>
+        /// <typeparam name = "TEditor">The editor type (e.g. "BasicXmlEditor").</typeparam>
+        /// <param name = "fileEditorDescriptor">The file extension descriiptor for this type.</param>
+        public void RegisterEditor<TEditor>(FileEditorDescriptor fileEditorDescriptor) where TEditor : IEditor
+        {
+            RegisterComponent<IEditor, TEditor>(fileEditorDescriptor.EditorKeyName);
+
+            // push the ext reg into the resolver....
+            IFileEditorResolver resolver = Resolve<IFileEditorResolver>();
+            resolver.Register(fileEditorDescriptor);
+        }
+
+        /// <summary>
+        /// 	Registers the component service type <typeparamref name = "TService" /> with and implemetation of type <typeparamref name = "TImp" /> as a singleton.
+        /// </summary>
+        /// <typeparam name = "TService">The contract type.</typeparam>
+        /// <typeparam name = "TImp">The implementing type.</typeparam>
+        /// <param name = "key">The key or name of the service.</param>
+        public void RegisterSingletonComponent<TService, TImp>(string key)
+        {
+            _container.Bind<TService>().To(typeof(TImp)).InSingletonScope().Named(key);
+        }
+
+        /// <summary>
+        /// Remove the component by name.
+        /// </summary>
+        /// <returns>True on success.</returns>
+        public void RemoveComponent<TImp>()
+        {
+            _container.Unbind<TImp>();
+        }
+
+        /// <summary>
+        /// 	Resolves an instance of <typeparamref name = "T" /> from the container.
+        /// </summary>
+        /// <typeparam name = "T">The type of object to resolve, can be an interface or class.</typeparam>
+        /// <param name = "key">The key (can be null if not applicable).</param>
+        /// <returns>An instance of the type depending on the containters configuration.</returns>
+        public T Resolve<T>(string key)
+        {
+            if (key == null)
+            {
+                return _container.Get<T>();
+            }
+
+            return _container.Get<T>(key);
+        }
+
+        /// <summary>
+        /// 	The resolve.
+        /// </summary>
+        /// <typeparam name = "T">The type of object to resolve, can be an interface or class.</typeparam>
+        /// <returns>An instance of the type depending on the containters configuration.</returns>
+        public T Resolve<T>()
+        {
+            return _container.Get<T>();
+        }
+
+        /// <summary>
+        /// 	The on system message posted.
+        /// </summary>
+        /// <param name = "eventArgs">The event args.</param>
+        protected void OnSystemMessagePosted(SystemMessageEventArgs eventArgs)
+        {
+            EventHandler<SystemMessageEventArgs> handler = SystemMessagePosted;
+            if (handler != null)
+            {
+                handler(this, eventArgs);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +73 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/BasicTextFindService.cs b/minisqlquery-master/src/MiniSqlQuery.Core/BasicTextFindService.cs
new file mode 100644
index 0000000..0eac8b7
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/BasicTextFindService.cs
@@ -0,0 +1,73 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	A simple text finding service. Currently supports forward only text matching.
+    /// </summary>
+    public class BasicTextFindService : ITextFindService
+    {
+        /// <summary>
+        /// 	The services reference.
+        /// </summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "BasicTextFindService" /> class. Creates a new text find service.
+        /// </summary>
+        /// <param name = "applicationServices">A reference to the application services.</param>
+        public BasicTextFindService(IApplicationServices applicationServices)
+        {
+            _services = applicationServices;
+        }
+
+        /// <summary>
+        /// 	Looks for the next match depending on the settings in the <paramref name = "request" />.
+        /// </summary>
+        /// <param name = "request">The text find request.</param>
+        /// <returns>An updated request with the relevent values adjusted (namely position).</returns>
+        public FindTextRequest FindNext(FindTextRequest request)
+        {
+            if (request == null)
+            {
+                throw new ArgumentNullException("request");
+            }
+
+            /*
+			if (request.SearchUp)
+			{
+			    // todo - I think its the TextProvider's job...?
+			}
+			else // search down.
+			{
+			int pos = request.TextProvider.FindString(request.SearchValue, request.Position, request.StringComparison);
+			    //pos = request.TextProvider.FindString(request);
+			}
+			*/
+            int pos = request.TextProvider.FindString(request.SearchValue, request.Position, request.StringComparison);
+
+            if (pos > -1)
+            {
+                // the editor will highlight the find
+                request.Position = pos + request.SearchValue.Length;
+            }
+            else
+            {
+                // todo - notify, beep etc
+
+                // reset to start of buffer.
+                request.Position = 0;
+            }
+
+            return request;
+        }
+    }
+}
\ No newline at end of file
Added +49 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/BatchProgressEventArgs.cs b/minisqlquery-master/src/MiniSqlQuery.Core/BatchProgressEventArgs.cs
new file mode 100644
index 0000000..92e68a6
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/BatchProgressEventArgs.cs
@@ -0,0 +1,49 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	The batch progress event args.
+    /// </summary>
+    public class BatchProgressEventArgs : EventArgs
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "BatchProgressEventArgs" /> class.
+        /// </summary>
+        /// <param name = "query">The query.</param>
+        /// <param name = "count">The count.</param>
+        /// <param name = "index">The index.</param>
+        public BatchProgressEventArgs(Query query, int count, int index)
+        {
+            Query = query;
+            Count = count;
+            Index = index;
+        }
+
+        /// <summary>
+        /// 	Gets Count.
+        /// </summary>
+        /// <value>The count.</value>
+        public int Count { get; private set; }
+
+        /// <summary>
+        /// 	Gets Index.
+        /// </summary>
+        /// <value>The index.</value>
+        public int Index { get; private set; }
+
+        /// <summary>
+        /// 	Gets Query.
+        /// </summary>
+        /// <value>The query.</value>
+        public Query Query { get; private set; }
+    }
+}
\ No newline at end of file
Added +215 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/CommandControlBuilder.cs b/minisqlquery-master/src/MiniSqlQuery.Core/CommandControlBuilder.cs
new file mode 100644
index 0000000..8486be7
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/CommandControlBuilder.cs
@@ -0,0 +1,215 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Diagnostics;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	Helper class for building controls out of <see cref = "ICommand" /> objects.
+    /// </summary>
+    public class CommandControlBuilder
+    {
+        /// <summary>
+        /// 	Handles the click event of a tool strip item, if the <see cref = "ToolStripItem.Tag" /> is 
+        /// 	an <see cref = "ICommand" /> instance the action is executed.
+        /// </summary>
+        /// <param name = "sender">The sender.</param>
+        /// <param name = "e">The <see cref = "System.EventArgs" /> instance containing the event data.</param>
+        [DebuggerNonUserCode]
+        public static void CommandItemClick(object sender, EventArgs e)
+        {
+            var item = sender as ToolStripItem;
+
+            if (item != null)
+            {
+                var cmd = item.Tag as ICommand;
+
+                if (cmd != null)
+                {
+                    cmd.Execute();
+                }
+            }
+        }
+
+        /// <summary>
+        /// 	Creates a link label given the <typeparamref name = "TCommand" /> definition.
+        /// </summary>
+        /// <typeparam name = "TCommand">The type of the command.</typeparam>
+        /// <returns>A link label wired to the commands <see cref = "ICommand.Execute" /> method.</returns>
+        public static LinkLabel CreateLinkLabel<TCommand>() where TCommand : ICommand, new()
+        {
+            var linkLabel = new LinkLabel();
+            var cmd = CommandManager.GetCommandInstance<TCommand>();
+
+            linkLabel.AutoSize = true;
+            linkLabel.Name = cmd.GetType().Name + "LinkLabel";
+            linkLabel.TabStop = true;
+            linkLabel.Text = cmd.Name.Replace("&", string.Empty);
+            linkLabel.Tag = cmd;
+            linkLabel.Padding = new Padding(4);
+            linkLabel.LinkClicked += LinkLabelLinkClicked;
+
+            return linkLabel;
+        }
+
+        /// <summary>
+        /// 	Creates a tool strip button given the <typeparamref name = "TCommand" /> definition.
+        /// </summary>
+        /// <typeparam name = "TCommand">The type of the command.</typeparam>
+        /// <returns>A tool strip button</returns>
+        public static ToolStripButton CreateToolStripButton<TCommand>() where TCommand : ICommand, new()
+        {
+            var button = new ToolStripButton();
+            var cmd = CommandManager.GetCommandInstance<TCommand>();
+
+            button.DisplayStyle = ToolStripItemDisplayStyle.Image;
+            button.Image = cmd.SmallImage;
+            button.ImageTransparentColor = Color.Magenta;
+            button.Name = cmd.GetType().Name + "ToolStripButton";
+            button.Tag = cmd;
+            button.Text = cmd.Name;
+            button.Click += CommandItemClick;
+
+            return button;
+        }
+
+        /// <summary>
+        /// 	Creates a tool strip menu item given the <typeparamref name = "TCommand" /> definition.
+        /// </summary>
+        /// <typeparam name = "TCommand">The type of the command.</typeparam>
+        /// <returns>A tool strip menu item wired to the commands <see cref = "ICommand.Execute" /> method.</returns>
+        public static ToolStripMenuItem CreateToolStripMenuItem<TCommand>() where TCommand : ICommand, new()
+        {
+            var menuItem = new ToolStripMenuItem();
+            var cmd = CommandManager.GetCommandInstance<TCommand>();
+
+            menuItem.Name = cmd.GetType().Name + "ToolStripMenuItem";
+            menuItem.Text = cmd.Name;
+            menuItem.Tag = cmd;
+            menuItem.ShortcutKeys = cmd.ShortcutKeys;
+            menuItem.Image = cmd.SmallImage;
+            menuItem.Click += CommandItemClick;
+
+            // store the host for callback
+            cmd.Host = menuItem;
+
+            // todo...
+            // if (!string.IsNullOrEmpty(cmd.ShortcutKeysText))
+            // {
+            // menuItem.ToolTipText = string.Format("{0} ({1})", cmd.Name, cmd.ShortcutKeysText);
+            // }
+
+            return menuItem;
+        }
+
+        /// <summary>
+        /// 	Creates a tool strip menu item seperator.
+        /// </summary>
+        /// <returns>A tool strip seperator.</returns>
+        public static ToolStripSeparator CreateToolStripMenuItemSeparator()
+        {
+            return new ToolStripSeparator();
+        }
+
+        /// <summary>
+        /// 	Assigns an event handler (<see cref = "TopLevelMenuDropDownOpening" />) to the opening event
+        /// 	for menu strip items which in turn hadles enableing and disabling.
+        /// </summary>
+        /// <param name = "menuStrip">The menu strip to monitor.</param>
+        public static void MonitorMenuItemsOpeningForEnabling(ToolStrip menuStrip)
+        {
+            if (menuStrip is ContextMenuStrip || menuStrip is MenuStrip)
+            {
+                foreach (ToolStripItem item in menuStrip.Items)
+                {
+                    var topLevelMenu = item as ToolStripMenuItem;
+                    if (topLevelMenu != null)
+                    {
+                        // Debug.WriteLine("MonitorMenuItemsOpeningForEnabling :: " + topLevelMenu.Text);
+                        topLevelMenu.DropDownOpening += TopLevelMenuDropDownOpening;
+                        topLevelMenu.DropDownClosed += TopLevelMenuDropDownClosed;
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 	Used when a menu is opening, handles enabling/disabling of items for display.
+        /// </summary>
+        /// <param name = "sender">The sender.</param>
+        /// <param name = "e">The <see cref = "System.EventArgs" /> instance containing the event data.</param>
+        [DebuggerNonUserCode]
+        public static void TopLevelMenuDropDownOpening(object sender, EventArgs e)
+        {
+            var menuItem = sender as ToolStripMenuItem;
+
+            if (menuItem != null)
+            {
+                foreach (ToolStripItem item in menuItem.DropDownItems)
+                {
+                    var cmd = item.Tag as ICommand;
+
+                    if (cmd != null)
+                    {
+                        item.Enabled = cmd.Enabled;
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 	The link label link clicked.
+        /// </summary>
+        /// <param name = "sender">The sender.</param>
+        /// <param name = "e">The <see cref = "System.Windows.Forms.LinkLabelLinkClickedEventArgs" /> instance containing the event data.</param>
+        private static void LinkLabelLinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+        {
+            var linkLabel = sender as Control;
+
+            if (linkLabel != null)
+            {
+                var cmd = linkLabel.Tag as ICommand;
+
+                if (cmd != null)
+                {
+                    cmd.Execute();
+                }
+            }
+        }
+
+        /// <summary>
+        /// 	We need to re-enable all the menu items so that the shortcut keys are available.
+        /// 	This is because the model uses a continuous check approach rather than individual events
+        /// 	for the enabling.
+        /// </summary>
+        /// <param name = "sender">The sender.</param>
+        /// <param name = "e">The <see cref = "System.EventArgs" /> instance containing the event data.</param>
+        [DebuggerNonUserCode]
+        private static void TopLevelMenuDropDownClosed(object sender, EventArgs e)
+        {
+            var menuItem = sender as ToolStripMenuItem;
+
+            if (menuItem != null)
+            {
+                foreach (ToolStripItem item in menuItem.DropDownItems)
+                {
+                    var cmd = item.Tag as ICommand;
+
+                    if (cmd != null)
+                    {
+                        item.Enabled = true;
+                    }
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
Added +86 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/CommandManager.cs b/minisqlquery-master/src/MiniSqlQuery.Core/CommandManager.cs
new file mode 100644
index 0000000..e887c4a
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/CommandManager.cs
@@ -0,0 +1,86 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	Stores instances of commands by type.
+    /// </summary>
+    public class CommandManager
+    {
+        /// <summary>
+        /// 	The command cache.
+        /// </summary>
+        private static readonly Dictionary<Type, ICommand> CommandCache = new Dictionary<Type, ICommand>();
+
+        /// <summary>
+        /// 	Gets the command instance by <paramref name = "commandTypeName" />.
+        /// </summary>
+        /// <param name = "commandTypeName">Name of the command, e.g. "OpenFileCommand".</param>
+        /// <returns>The first command by that name or null if not found.</returns>
+        public static ICommand GetCommandInstance(string commandTypeName)
+        {
+            foreach (Type cmdType in CommandCache.Keys)
+            {
+                if (cmdType.Name == commandTypeName)
+                {
+                    return CommandCache[cmdType];
+                }
+            }
+
+            return null;
+        }
+
+        /// <summary>
+        /// 	Gets or creates an instance of a command by type.
+        /// </summary>
+        /// <typeparam name = "TCommand">The type of command to get or create.</typeparam>
+        /// <returns>An instance of <typeparamref name = "TCommand" />.</returns>
+        public static ICommand GetCommandInstance<TCommand>() where TCommand : ICommand, new()
+        {
+            ICommand cmd;
+
+            if (CommandCache.ContainsKey(typeof(TCommand)))
+            {
+                cmd = CommandCache[typeof(TCommand)];
+            }
+            else
+            {
+                cmd = new TCommand();
+                cmd.Services = ApplicationServices.Instance;
+                cmd.Settings = ApplicationServices.Instance.Settings;
+                CommandCache[typeof(TCommand)] = cmd;
+            }
+
+            return cmd;
+        }
+
+        /// <summary>
+        /// 	Gets command instance by it's partial name, e.g. "OpenFile".
+        /// </summary>
+        /// <param name = "commandName">Name partial of the command.</param>
+        /// <returns>The first command by that name or null if not found.</returns>
+        public static ICommand GetCommandInstanceByPartialName(string commandName)
+        {
+            string cmdName = commandName + "Command";
+
+            foreach (Type cmdType in CommandCache.Keys)
+            {
+                if (cmdType.Name.EndsWith(commandName) || cmdType.Name.EndsWith(cmdName))
+                {
+                    return CommandCache[cmdType];
+                }
+            }
+
+            return null;
+        }
+    }
+}
\ No newline at end of file
Added +56 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CancelTaskCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CancelTaskCommand.cs
new file mode 100644
index 0000000..b6eac44
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CancelTaskCommand.cs
@@ -0,0 +1,56 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The cancel task command.
+    /// </summary>
+    public class CancelTaskCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "CancelTaskCommand" /> class.
+        /// </summary>
+        public CancelTaskCommand()
+            : base("&Cancel")
+        {
+            SmallImage = ImageResource.stop;
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether Enabled.
+        /// </summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get
+            {
+                var editor = HostWindow.ActiveChildForm as IPerformTask;
+                return editor != null && editor.IsBusy;
+            }
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            if (!Enabled)
+            {
+                return;
+            }
+
+            var editor = HostWindow.ActiveChildForm as IPerformTask;
+            if (editor != null)
+            {
+                editor.CancelTask();
+            }
+        }
+    }
+}
\ No newline at end of file
Added +46 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseActiveWindowCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseActiveWindowCommand.cs
new file mode 100644
index 0000000..964a25e
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseActiveWindowCommand.cs
@@ -0,0 +1,46 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The close active window command.
+    /// </summary>
+    public class CloseActiveWindowCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "CloseActiveWindowCommand" /> class.
+        /// </summary>
+        public CloseActiveWindowCommand()
+            : base("&Close")
+        {
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether Enabled.
+        /// </summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get { return HostWindow.ActiveChildForm != null; }
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var frm = HostWindow.ActiveChildForm;
+            if (frm != null)
+            {
+                frm.Close();
+            }
+        }
+    }
+}
\ No newline at end of file
Added +48 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseAllWindowsCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseAllWindowsCommand.cs
new file mode 100644
index 0000000..cbfa429
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseAllWindowsCommand.cs
@@ -0,0 +1,48 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The close all windows command.
+    /// </summary>
+    public class CloseAllWindowsCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "CloseAllWindowsCommand" /> class.
+        /// </summary>
+        public CloseAllWindowsCommand()
+            : base("Close &All Windows")
+        {
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether Enabled.
+        /// </summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get { return HostWindow.ActiveChildForm != null; }
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var forms = HostWindow.Instance.MdiChildren;
+            foreach (var frm in forms)
+            {
+                Application.DoEvents();
+                frm.Close();
+            }
+        }
+    }
+}
\ No newline at end of file
Added +45 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseDatabaseConnectionCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseDatabaseConnectionCommand.cs
new file mode 100644
index 0000000..bd5f90b
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseDatabaseConnectionCommand.cs
@@ -0,0 +1,45 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Data;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>The close database connection command.</summary>
+    public class CloseDatabaseConnectionCommand
+        : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="CloseDatabaseConnectionCommand"/> class.</summary>
+        public CloseDatabaseConnectionCommand()
+            : base("Close Current connection")
+        {
+        }
+
+        /// <summary>Gets a value indicating whether Enabled.</summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get
+            {
+                if (Settings.Connection == null ||
+                    (Settings.Connection.State == ConnectionState.Closed &&
+                    Settings.Connection.State == ConnectionState.Broken))
+                {
+                    return false;
+                }
+
+                return true;
+            }
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            Settings.CloseConnection();
+        }
+    }
+}
\ No newline at end of file
Added +147 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CommandBase.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CommandBase.cs
new file mode 100644
index 0000000..e56b9b2
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CommandBase.cs
@@ -0,0 +1,147 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	<para>A basic implementation of the <see cref="ICommand"/> interface.</para>
+    /// 	<para>Represents a "command", typically a user action such as saving a file or executing a query.</para>
+    /// 	<para>Inheritors must implement the abstract method <see cref="Execute"/>.</para>
+    /// </summary>
+    public abstract class CommandBase : ICommand
+    {
+        /// <summary>
+        /// 	The host window.
+        /// </summary>
+        private IHostWindow _hostWindow;
+
+        /// <summary>
+        /// 	The command name.
+        /// </summary>
+        private string _name;
+
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref="CommandBase"/> class.
+        /// 	The default value for <see cref="Enabled"/> is true, and <see cref="ShortcutKeys"/> is Keys.None.
+        /// </summary>
+        /// <param name="name">
+        /// 	The name of the command.
+        /// </param>
+        protected CommandBase(string name)
+        {
+            _name = name;
+            ShortcutKeys = Keys.None;
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether this <see cref = "ICommand" /> is enabled.
+        /// </summary>
+        /// <value><c>true</c> if enabled; otherwise, <c>false</c> (the default is true).</value>
+        public virtual bool Enabled
+        {
+            get { return true; }
+        }
+
+        public object Host { get; set; }
+
+        /// <summary>
+        /// 	The name of the command, used in menus and buttons.
+        /// </summary>
+        /// <value>The name of the command.</value>
+        public virtual string Name
+        {
+            get { return _name; }
+            protected set
+            {
+                if (_name == value)
+                {
+                    return;
+                }
+
+                _name = value;
+
+                // if the "host" of this command is a toolstring item, update its Text property.
+                var item = Host as ToolStripItem;
+                if (item != null)
+                {
+                    item.Text = _name;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 	A reference to the application services to allow access to the other components.
+        /// </summary>
+        /// <value>A reference to the <see cref = "IApplicationServices" /> instance.</value>
+        public IApplicationServices Services { get; set; }
+
+        /// <summary>
+        /// 	Gets a reference to the application settings.
+        /// </summary>
+        /// <value>The application settings.</value>
+        public IApplicationSettings Settings { get; set; }
+
+        /// <summary>
+        /// 	Gets the menu shortcut keys for this command (e.g. Keys.F5).
+        /// </summary>
+        /// <value>The shortcut keys for this command (the default is Keys.None).</value>
+        public virtual Keys ShortcutKeys { get; protected set; }
+
+        /// <summary>
+        /// 	Gets the shortcut key text to be displayed as help.
+        /// </summary>
+        /// <value>The shortcut keys text.</value>
+        public string ShortcutKeysText { get; protected set; }
+
+        /// <summary>
+        /// 	Gets the "small image" associated with this control (for use on buttons or menu items).
+        /// 	Use null (or Nothing in Visual Basic) if there is no image.
+        /// </summary>
+        /// <value>The small image representing this command (the default is null).</value>
+        public virtual Image SmallImage { get; protected set; }
+
+        /// <summary>
+        /// 	Attempts to convert the current host windows active form to <see cref = "IEditor" />.
+        /// </summary>
+        /// <value>A reference to the active base editor window, otherwise null.</value>
+        protected IEditor ActiveFormAsEditor
+        {
+            get { return Services.HostWindow.ActiveChildForm as IEditor; }
+        }
+
+        /// <summary>
+        /// 	Attempts to convert the current host windows active form to <see cref = "IQueryEditor" />.
+        /// </summary>
+        /// <value>A reference to the active query editor window, otherwise null.</value>
+        protected IQueryEditor ActiveFormAsSqlQueryEditor
+        {
+            get { return Services.HostWindow.ActiveChildForm as IQueryEditor; }
+        }
+
+        /// <summary>
+        /// 	Gets a reference to the host window.
+        /// </summary>
+        /// <value>The host window.</value>
+        protected IHostWindow HostWindow
+        {
+            get { return _hostWindow ?? (_hostWindow = Services.HostWindow); }
+        }
+
+        /// <summary>
+        /// 	Executes the command based on the current settings (abstract).
+        /// </summary>
+        /// <remarks>
+        /// 	If a commands <see cref="Enabled"/> value is false, a call to <see cref="Execute"/> should have no effect
+        /// 	(and not throw an exception).
+        /// </remarks>
+        public abstract void Execute();
+    }
+}
\ No newline at end of file
Added +40 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToLowerCaseCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToLowerCaseCommand.cs
new file mode 100644
index 0000000..a83ec9a
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToLowerCaseCommand.cs
@@ -0,0 +1,40 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>The convert text to lower case command.</summary>
+    public class ConvertTextToLowerCaseCommand
+        : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="ConvertTextToLowerCaseCommand"/> class.</summary>
+        public ConvertTextToLowerCaseCommand()
+            : base("Convert to 'lower case' text")
+        {
+            ShortcutKeys = Keys.Control | Keys.U;
+        }
+
+        /// <summary>Gets a value indicating whether Enabled.</summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get { return HostWindow.ActiveChildForm as IEditor != null; }
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            var editor = ActiveFormAsEditor;
+            if (Enabled && editor.SelectedText.Length > 0)
+            {
+                editor.InsertText(editor.SelectedText.ToLower());
+            }
+        }
+    }
+}
\ No newline at end of file
Added +49 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToTitleCaseCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToTitleCaseCommand.cs
new file mode 100644
index 0000000..bb4d313
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToTitleCaseCommand.cs
@@ -0,0 +1,49 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Globalization;
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The convert text to title case command.
+    /// </summary>
+    public class ConvertTextToTitleCaseCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "ConvertTextToTitleCaseCommand" /> class.
+        /// </summary>
+        public ConvertTextToTitleCaseCommand()
+            : base("Convert to 'Title Case' text")
+        {
+            ShortcutKeys = Keys.Control | Keys.Alt | Keys.U;
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether Enabled.
+        /// </summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get { return HostWindow.ActiveChildForm as IEditor != null; }
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var editor = ActiveFormAsEditor;
+            if (Enabled && editor.SelectedText.Length > 0)
+            {
+                editor.InsertText(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(editor.SelectedText));
+            }
+        }
+    }
+}
\ No newline at end of file
Added +48 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToUpperCaseCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToUpperCaseCommand.cs
new file mode 100644
index 0000000..c87b07d
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToUpperCaseCommand.cs
@@ -0,0 +1,48 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The convert text to upper case command.
+    /// </summary>
+    public class ConvertTextToUpperCaseCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "ConvertTextToUpperCaseCommand" /> class.
+        /// </summary>
+        public ConvertTextToUpperCaseCommand()
+            : base("Convert to 'UPPER CASE' text")
+        {
+            ShortcutKeys = Keys.Control | Keys.Shift | Keys.U;
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether Enabled.
+        /// </summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get { return HostWindow.ActiveChildForm as IEditor != null; }
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var editor = ActiveFormAsEditor;
+            if (Enabled && editor.SelectedText.Length > 0)
+            {
+                editor.InsertText(editor.SelectedText.ToUpper());
+            }
+        }
+    }
+}
\ No newline at end of file
Added +38 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CopyQueryEditorFileNameCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CopyQueryEditorFileNameCommand.cs
new file mode 100644
index 0000000..bd0924f
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CopyQueryEditorFileNameCommand.cs
@@ -0,0 +1,38 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The copy query editor file name command.
+    /// </summary>
+    public class CopyQueryEditorFileNameCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "CopyQueryEditorFileNameCommand" /> class.
+        /// </summary>
+        public CopyQueryEditorFileNameCommand()
+            : base("Copy Filename")
+        {
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var editor = HostWindow.Instance.ActiveMdiChild as IEditor;
+            if (editor != null && editor.FileName != null)
+            {
+                Clipboard.SetText(editor.FileName);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +66 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/DisplayDbModelDependenciesCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/DisplayDbModelDependenciesCommand.cs
new file mode 100644
index 0000000..10ec35c
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/DisplayDbModelDependenciesCommand.cs
@@ -0,0 +1,66 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Text;
+using MiniSqlQuery.Core.DbModel;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The display db model dependencies command.
+    /// </summary>
+    public class DisplayDbModelDependenciesCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "DisplayDbModelDependenciesCommand" /> class.
+        /// </summary>
+        public DisplayDbModelDependenciesCommand()
+            : base("Order Tables by FK Dependencies")
+        {
+            SmallImage = ImageResource.table_link;
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var editor = Services.Resolve<IEditor>("txt-editor");
+            editor.FileName = null;
+            HostWindow.DisplayDockedForm(editor as DockContent);
+
+            if (HostWindow.DatabaseInspector.DbSchema == null)
+            {
+                HostWindow.DatabaseInspector.LoadDatabaseDetails();
+            }
+
+            var dependencyWalker = new DbModelDependencyWalker(HostWindow.DatabaseInspector.DbSchema);
+            var tables = dependencyWalker.SortTablesByForeignKeyReferences();
+
+            var sb = new StringBuilder();
+            foreach (DbModelTable table in tables)
+            {
+                sb.AppendLine(table.FullName);
+            }
+
+            editor.AllText = sb.ToString();
+        }
+
+        /// <summary>
+        /// Gets a value indicating that the command can be executed (requires a connection).
+        /// </summary>
+        public override bool Enabled
+        {
+            get
+            {
+                return Services.Settings.ConnectionDefinition != null;
+            }
+        }
+    }
+}
\ No newline at end of file
Added +27 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/EmailAuthorCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/EmailAuthorCommand.cs
new file mode 100644
index 0000000..6cb6567
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/EmailAuthorCommand.cs
@@ -0,0 +1,27 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The email author command.
+    /// </summary>
+    public class EmailAuthorCommand
+        : ShowUrlCommand
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "EmailAuthorCommand" /> class.
+        /// </summary>
+        public EmailAuthorCommand()
+            : base("Email the Author", "mailto:mr.paul.kohler" +
+                  '@' + /* bla */
+                  "gmail.com?subject=Mini SQL Query Feedback", ImageResource.email)
+        {
+        }
+    }
+}
\ No newline at end of file
Added +64 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExecuteTaskCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExecuteTaskCommand.cs
new file mode 100644
index 0000000..43980da
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExecuteTaskCommand.cs
@@ -0,0 +1,64 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The execute task command.
+    /// </summary>
+    public class ExecuteTaskCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "ExecuteTaskCommand" /> class.
+        /// </summary>
+        public ExecuteTaskCommand()
+            : base("&Execute")
+        {
+            ShortcutKeys = Keys.F5;
+            ShortcutKeysText = "F5";
+            SmallImage = ImageResource.lightning;
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether Enabled.
+        /// </summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get
+            {
+                var editor = HostWindow.ActiveChildForm as IPerformTask;
+                if (editor != null)
+                {
+                    return !editor.IsBusy;
+                }
+
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            if (!Enabled)
+            {
+                return;
+            }
+
+            var editor = HostWindow.ActiveChildForm as IPerformTask;
+            if (editor != null)
+            {
+                editor.ExecuteTask();
+            }
+        }
+    }
+}
\ No newline at end of file
Added +33 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExitApplicationCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExitApplicationCommand.cs
new file mode 100644
index 0000000..4c557fb
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExitApplicationCommand.cs
@@ -0,0 +1,33 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The exit application command.
+    /// </summary>
+    public class ExitApplicationCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "ExitApplicationCommand" /> class.
+        /// </summary>
+        public ExitApplicationCommand()
+            : base("E&xit")
+        {
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            HostWindow.Instance.Close();
+        }
+    }
+}
\ No newline at end of file
Added +61 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/GenerateCommandCodeCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/GenerateCommandCodeCommand.cs
new file mode 100644
index 0000000..3df9662
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/GenerateCommandCodeCommand.cs
@@ -0,0 +1,61 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using Ninject;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The generate command code command.
+    /// </summary>
+    public class GenerateCommandCodeCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "GenerateCommandCodeCommand" /> class.
+        /// </summary>
+        public GenerateCommandCodeCommand()
+            : base("Generate Command Code")
+        {
+            SmallImage = ImageResource.cog;
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            string template =
+                @"    public class $name$Command
+        : CommandBase
+    {
+        public $name$Command()
+            : base(""$desc$"")
+        {
+            //ShortcutKeys = Keys.Control | Keys.?;
+			//SmallImage = ImageResource.?;
+		}
+
+        public override void Execute()
+        {
+			
+        }
+    }";
+
+            string code = template
+                .Replace("$name$", "OI")
+                .Replace("$desc$", "a thing");
+
+            var editor = Services.Container.Get<IQueryEditor>();
+            editor.AllText = code;
+            editor.SetSyntax("C#");
+
+            HostWindow.DisplayDockedForm(editor as DockContent);
+        }
+    }
+}
\ No newline at end of file
Added +47 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/InsertGuidCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/InsertGuidCommand.cs
new file mode 100644
index 0000000..1d91a82
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/InsertGuidCommand.cs
@@ -0,0 +1,47 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The insert guid command.
+    /// </summary>
+    public class InsertGuidCommand : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "InsertGuidCommand" /> class.
+        /// </summary>
+        public InsertGuidCommand()
+            : base("Insert GUID")
+        {
+            // todo SmallImage = ImageResource.;
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether Enabled.
+        /// </summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get { return ActiveFormAsEditor != null; }
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var editor = ActiveFormAsEditor;
+            if (editor != null)
+            {
+                editor.InsertText(Guid.NewGuid().ToString());
+            }
+        }
+    }
+}
\ No newline at end of file
Added +40 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/NewQueryFormCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/NewQueryFormCommand.cs
new file mode 100644
index 0000000..61d72e3
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/NewQueryFormCommand.cs
@@ -0,0 +1,40 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+using Ninject;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The new query form command.
+    /// </summary>
+    public class NewQueryFormCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "NewQueryFormCommand" /> class.
+        /// </summary>
+        public NewQueryFormCommand()
+            : base("New &Query Window")
+        {
+            ShortcutKeys = Keys.Control | Keys.N;
+            SmallImage = ImageResource.page_white;
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var editor = Services.Container.Get<IQueryEditor>();
+            editor.FileName = null;
+            HostWindow.DisplayDockedForm(editor as DockContent);
+        }
+    }
+}
\ No newline at end of file
Added +38 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/OpenConnectionFileCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/OpenConnectionFileCommand.cs
new file mode 100644
index 0000000..7c58716
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/OpenConnectionFileCommand.cs
@@ -0,0 +1,38 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The open connection file command.
+    /// </summary>
+    public class OpenConnectionFileCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "OpenConnectionFileCommand" /> class.
+        /// </summary>
+        public OpenConnectionFileCommand()
+            : base("Open the connections file")
+        {
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            string xmlFile = Utility.GetConnectionStringFilename();
+            IEditor editor = Services.Resolve<IFileEditorResolver>().ResolveEditorInstance(xmlFile);
+            editor.FileName = xmlFile;
+            editor.LoadFile();
+            HostWindow.DisplayDockedForm(editor as DockContent);
+        }
+    }
+}
\ No newline at end of file
Added +52 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PasteAroundSelectionCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PasteAroundSelectionCommand.cs
new file mode 100644
index 0000000..d132f55
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PasteAroundSelectionCommand.cs
@@ -0,0 +1,52 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	Description of PasteAroundSelectionCommand.
+    /// </summary>
+    public class PasteAroundSelectionCommand : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "PasteAroundSelectionCommand" /> class.
+        /// </summary>
+        public PasteAroundSelectionCommand()
+          : base("Paste &Around Selection")
+        {
+            ShortcutKeys = Keys.Alt | Keys.A;
+            SmallImage = ImageResource.around_text;
+        }
+
+        /// <summary>
+        /// Gets or sets the "left text".
+        /// </summary>
+        /// <value>The "left text".</value>
+        public static string LeftText { get; set; }
+
+        /// <summary>
+        /// Gets or sets the "right text".
+        /// </summary>
+        /// <value>The "right text".</value>
+        public static string RightText { get; set; }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var queryForm = HostWindow.Instance.ActiveMdiChild as IQueryEditor;
+            if (queryForm != null)
+            {
+                string newText = string.Concat(LeftText, queryForm.SelectedText, RightText);
+                queryForm.InsertText(newText);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +78 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PrintCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PrintCommand.cs
new file mode 100644
index 0000000..c2b2890
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PrintCommand.cs
@@ -0,0 +1,78 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The print command.
+    /// </summary>
+    public class PrintCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "PrintCommand" /> class.
+        /// </summary>
+        public PrintCommand()
+            : base("Print...")
+        {
+            SmallImage = ImageResource.printer;
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether Enabled.
+        /// </summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get
+            {
+                var printable = HostWindow.ActiveChildForm as IPrintableContent;
+                if (printable != null)
+                {
+                    var doc = printable.PrintDocument;
+
+                    if (doc != null)
+                    {
+                        return true;
+                    }
+                }
+
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var printable = HostWindow.ActiveChildForm as IPrintableContent;
+            if (printable != null)
+            {
+                var doc = printable.PrintDocument;
+
+                if (doc != null)
+                {
+                    using (var ppd = new PrintDialog())
+                    {
+                        ppd.Document = doc;
+                        ppd.AllowSomePages = true;
+                        // https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k(System.Windows.Forms.PrintDialog.UseEXDialog);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv3.5);k(DevLang-csharp)&rd=true#Anchor_1
+                        ppd.UseEXDialog = true;
+
+                        if (ppd.ShowDialog(HostWindow.Instance) == DialogResult.OK)
+                        {
+                            doc.Print();
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
Added +44 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/RefreshDatabaseConnectionCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/RefreshDatabaseConnectionCommand.cs
new file mode 100644
index 0000000..73ec1a8
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/RefreshDatabaseConnectionCommand.cs
@@ -0,0 +1,44 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The refresh database connection command.
+    /// </summary>
+    public class RefreshDatabaseConnectionCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "RefreshDatabaseConnectionCommand" /> class.
+        /// </summary>
+        public RefreshDatabaseConnectionCommand()
+            : base("&Refresh Database Connection")
+        {
+            SmallImage = ImageResource.database_refresh;
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            try
+            {
+                HostWindow.SetPointerState(Cursors.WaitCursor);
+                Settings.ResetConnection();
+                HostWindow.SetStatus(null, "Connection reset");
+            }
+            finally
+            {
+                HostWindow.SetPointerState(Cursors.Default);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +38 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetLeftPasteAroundSelectionCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetLeftPasteAroundSelectionCommand.cs
new file mode 100644
index 0000000..31d5faf
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetLeftPasteAroundSelectionCommand.cs
@@ -0,0 +1,38 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The set left paste around selection command.
+    /// </summary>
+    public class SetLeftPasteAroundSelectionCommand : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "SetLeftPasteAroundSelectionCommand" /> class.
+        /// </summary>
+        public SetLeftPasteAroundSelectionCommand()
+            : base("Set Left Paste Around Selection text")
+        {
+            ShortcutKeys = Keys.Alt | Keys.F1;
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var queryForm = HostWindow.Instance.ActiveMdiChild as IQueryEditor;
+            if (queryForm != null)
+            {
+                PasteAroundSelectionCommand.LeftText = queryForm.SelectedText;
+            }
+        }
+    }
+}
\ No newline at end of file
Added +38 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetRightPasteAroundSelectionCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetRightPasteAroundSelectionCommand.cs
new file mode 100644
index 0000000..e7947ff
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetRightPasteAroundSelectionCommand.cs
@@ -0,0 +1,38 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The set right paste around selection command.
+    /// </summary>
+    public class SetRightPasteAroundSelectionCommand : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "SetRightPasteAroundSelectionCommand" /> class.
+        /// </summary>
+        public SetRightPasteAroundSelectionCommand()
+            : base("Set Right Paste Around Selection text")
+        {
+            ShortcutKeys = Keys.Alt | Keys.F2;
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var queryForm = HostWindow.Instance.ActiveMdiChild as IQueryEditor;
+            if (queryForm != null)
+            {
+                PasteAroundSelectionCommand.RightText = queryForm.SelectedText;
+            }
+        }
+    }
+}
\ No newline at end of file
Added +25 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowHelpCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowHelpCommand.cs
new file mode 100644
index 0000000..4addead
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowHelpCommand.cs
@@ -0,0 +1,25 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The show help command.
+    /// </summary>
+    public class ShowHelpCommand
+        : ShowUrlCommand
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "ShowHelpCommand" /> class.
+        /// </summary>
+        public ShowHelpCommand()
+            : base("&Index (github.com ... Quickstart.md)", "https://github.com/paulkohler/minisqlquery/blob/master/src/Docs/Quickstart.md", ImageResource.help)
+        {
+        }
+    }
+}
\ No newline at end of file
Added +51 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowUrlCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowUrlCommand.cs
new file mode 100644
index 0000000..9507141
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowUrlCommand.cs
@@ -0,0 +1,51 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Drawing;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The show url command.
+    /// </summary>
+    public class ShowUrlCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref="ShowUrlCommand"/> class.
+        /// </summary>
+        /// <param name="name">
+        /// The name of the command.
+        /// </param>
+        /// <param name="url">
+        /// The url of the link to display in a browser.
+        /// </param>
+        /// <param name="image">
+        /// The image to use from the resources.
+        /// </param>
+        public ShowUrlCommand(string name, string url, Image image)
+            : base(name)
+        {
+            Url = url;
+            SmallImage = image;
+        }
+
+        /// <summary>
+        /// 	Gets or sets Url.
+        /// </summary>
+        /// <value>The url.</value>
+        public string Url { get; protected set; }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            Utility.ShowUrl(Url);
+        }
+    }
+}
\ No newline at end of file
Added +25 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowWebPageCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowWebPageCommand.cs
new file mode 100644
index 0000000..9fb5322
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowWebPageCommand.cs
@@ -0,0 +1,25 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The show web page command.
+    /// </summary>
+    public class ShowWebPageCommand
+        : ShowUrlCommand
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "ShowWebPageCommand" /> class.
+        /// </summary>
+        public ShowWebPageCommand()
+            : base("Mini SQL Query on GitHub", "https://github.com/paulkohler/minisqlquery", ImageResource.house)
+        {
+        }
+    }
+}
\ No newline at end of file
Added +148 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/ConnectionDefinition.cs b/minisqlquery-master/src/MiniSqlQuery.Core/ConnectionDefinition.cs
new file mode 100644
index 0000000..4c001d9
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/ConnectionDefinition.cs
@@ -0,0 +1,148 @@
+#region License
+// Copyright 2005-2009 Paul Kohler (http://pksoftware.net/MiniSqlQuery/). All rights reserved.
+// This source code is made available under the terms of the Microsoft Public License (Ms-PL)
+// http://minisqlquery.codeplex.com/license
+#endregion
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+
+namespace MiniSqlQuery.Core
+{
+	/// <summary>
+	/// Provides a defition of database connections by provider and name.
+	/// </summary>
+	[Obsolete]
+	public class ConnectionDefinition
+	{
+		/// <summary>
+		/// The character used to "split" the definition text into its components.
+		/// </summary>
+		public const char SplitChar = '^';
+
+		/// <summary>
+		/// The prefix character for comments in the definition text.
+		/// </summary>
+		public const string CommentPrefix = "#";
+
+		/// <summary>
+		/// Gets or sets the name.
+		/// </summary>
+		/// <value>The name.</value>
+		public string Name { get; set; }
+
+		/// <summary>
+		/// Gets or sets the name of the provider.
+		/// </summary>
+		/// <value>The name of the provider.</value>
+		public string ProviderName { get; set; }
+
+		/// <summary>
+		/// Gets or sets the connection string.
+		/// </summary>
+		/// <value>The connection string.</value>
+		public string ConnectionString { get; set; }
+
+		/// <summary>
+		/// A default connection, an MSSQL db on localhost connecting to "master".
+		/// </summary>
+		public static readonly ConnectionDefinition Default;
+
+		/// <summary>
+		/// Initializes the <see cref="ConnectionDefinition"/> class.
+		/// </summary>
+		static ConnectionDefinition()
+		{
+			Default = new ConnectionDefinition()
+			{
+				Name = "Default - MSSQL Master@localhost",
+				ProviderName = "System.Data.SqlClient",
+				ConnectionString = @"Server=.; Database=Master; Integrated Security=SSPI"
+			};
+		}
+
+		/// <summary>
+		/// Initializes a new instance of the <see cref="ConnectionDefinition"/> class.
+		/// </summary>
+		public ConnectionDefinition()
+		{
+		}
+
+		/// <summary>
+		/// Parses the specified <paramref name="definition"/> string.
+		/// </summary>
+		/// <param name="definition">The definition string, e.g. "Default - MSSQL Master@localhost ^ System.Data.SqlClient ^ Server=.; Database=master; Integrated Security=SSPI".</param>
+		/// <returns>A new <see cref="ConnectionDefinition"/> object or null.</returns>
+		public static ConnectionDefinition Parse(string definition)
+		{
+			ConnectionDefinition connDef = null;
+
+			if (string.IsNullOrEmpty(definition) == false)
+			{
+				if (definition.StartsWith(CommentPrefix) == false)
+				{
+					string[] parts = definition.Split(new char[] { SplitChar }, StringSplitOptions.RemoveEmptyEntries);
+					if (parts != null)
+					{
+						if (parts.Length == 3)
+						{
+							connDef = new ConnectionDefinition()
+							{
+								Name = parts[0].Trim(),
+								ProviderName = parts[1].Trim(),
+								ConnectionString = parts[2].Trim()
+							};
+						}
+					}
+				}
+			}
+
+			return connDef;
+		}
+
+		/// <summary>
+		/// Parses the specified definitions.
+		/// </summary>
+		/// <param name="definitions">The definitions.</param>
+		/// <returns>An array of <see cref="ConnectionDefinition"/> objects.</returns>
+		public static ConnectionDefinition[] Parse(string[] definitions)
+		{
+			List<ConnectionDefinition> conDefs = new List<ConnectionDefinition>();
+
+			if (definitions != null)
+			{
+				foreach (string definition in definitions)
+				{
+					ConnectionDefinition conDef = ConnectionDefinition.Parse(definition);
+					if (conDef != null)
+					{
+						conDefs.Add(conDef);
+					}
+				}
+			}
+
+			return conDefs.ToArray();
+		}
+
+		/// <summary>
+		/// Converts the data to a parsable format.
+		/// </summary>
+		/// <returns></returns>
+		public string ToParsableFormat()
+		{
+			return string.Concat(Name, SplitChar, ProviderName, SplitChar, ConnectionString);
+		}
+
+		/// <summary>
+		/// Returns a <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
+		/// </summary>
+		/// <returns>
+		/// A <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
+		/// </returns>
+		public override string ToString()
+		{
+			return Name ?? GetType().FullName;
+		}
+	}
+}
Added +72 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Controls/BatchQuerySelectControl.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/BatchQuerySelectControl.cs
new file mode 100644
index 0000000..2211260
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/BatchQuerySelectControl.cs
@@ -0,0 +1,72 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Controls
+{
+    /// <summary>A batch query selection control is used for displaying multiple result sets and allows
+    /// the user to select one (e.g. for exports etc).</summary>
+    public partial class BatchQuerySelectControl : UserControl
+    {
+        /// <summary>The _batch.</summary>
+        private QueryBatch _batch;
+
+        /// <summary>The _selected query.</summary>
+        private Query _selectedQuery;
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="BatchQuerySelectControl"/> class.
+        /// </summary>
+        public BatchQuerySelectControl()
+        {
+            InitializeComponent();
+        }
+
+        /// <summary>
+        /// Gets the selected query.
+        /// </summary>
+        /// <value>The selected query.</value>
+        public Query SelectedQuery
+        {
+            get { return _selectedQuery; }
+        }
+
+        /// <summary>Fills the list with the batch result sets.</summary>
+        /// <param name="batch">The query batch.</param>
+        public void Fill(QueryBatch batch)
+        {
+            _batch = batch;
+            lstBatches.Items.Clear();
+            if (batch == null)
+            {
+                return;
+            }
+
+            for (int setIndex = 0; setIndex < batch.Queries.Count; setIndex++)
+            {
+                var query = batch.Queries[setIndex];
+                if (query.Result != null && query.Result.Tables.Count > 0)
+                {
+                    string setName = string.Format("Result Set {0} ({1} tables)", setIndex, query.Result.Tables.Count);
+                    lstBatches.Items.Add(setName);
+                }
+            }
+
+            lstBatches.SelectedIndex = 0;
+        }
+
+        /// <summary>The lst batches_ selected index changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void lstBatches_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            _selectedQuery = _batch.Queries[lstBatches.SelectedIndex];
+        }
+    }
+}
\ No newline at end of file
Added +59 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Controls/BatchQuerySelectControl.Designer.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/BatchQuerySelectControl.Designer.cs
new file mode 100644
index 0000000..65790b3
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/BatchQuerySelectControl.Designer.cs
@@ -0,0 +1,59 @@
+namespace MiniSqlQuery.Core.Controls
+{
+	partial class BatchQuerySelectControl
+	{
+		/// <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 Component 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.lstBatches = new System.Windows.Forms.ListBox();
+			this.SuspendLayout();
+			// 
+			// lstBatches
+			// 
+			this.lstBatches.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.lstBatches.FormattingEnabled = true;
+			this.lstBatches.Location = new System.Drawing.Point(0, 0);
+			this.lstBatches.Name = "lstBatches";
+			this.lstBatches.Size = new System.Drawing.Size(293, 160);
+			this.lstBatches.TabIndex = 0;
+			this.lstBatches.SelectedIndexChanged += new System.EventHandler(this.lstBatches_SelectedIndexChanged);
+			// 
+			// BatchQuerySelectControl
+			// 
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.Controls.Add(this.lstBatches);
+			this.Name = "BatchQuerySelectControl";
+			this.Size = new System.Drawing.Size(293, 163);
+			this.ResumeLayout(false);
+
+		}
+
+		#endregion
+
+		private System.Windows.Forms.ListBox lstBatches;
+	}
+}
Added +120 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Controls/BatchQuerySelectControl.resx b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/BatchQuerySelectControl.resx
new file mode 100644
index 0000000..19dc0dd
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/BatchQuerySelectControl.resx
@@ -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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
Added +51 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Controls/ExceptionControl.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/ExceptionControl.cs
new file mode 100644
index 0000000..be6a39b
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/ExceptionControl.cs
@@ -0,0 +1,51 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Controls
+{
+    /// <summary>A basic control for displaying an unhandled exception.</summary>
+    public partial class ExceptionControl : UserControl
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="ExceptionControl"/> class.
+        /// </summary>
+        public ExceptionControl()
+        {
+            InitializeComponent();
+        }
+
+        /// <summary>Sets the exception to display.</summary>
+        /// <param name="exp">The exception object.</param>
+        public void SetException(Exception exp)
+        {
+            if (exp != null)
+            {
+                lblError.Text = exp.GetType().FullName;
+                txtMessage.Text = exp.Message;
+                txtDetails.Text = exp.ToString();
+            }
+        }
+
+        /// <summary>The exception control_ load.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void ExceptionControl_Load(object sender, EventArgs e)
+        {
+        }
+
+        /// <summary>The lnk copy_ link clicked.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void lnkCopy_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+        {
+            Clipboard.SetText(txtDetails.Text);
+        }
+    }
+}
\ No newline at end of file
Added +119 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Controls/ExceptionControl.Designer.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/ExceptionControl.Designer.cs
new file mode 100644
index 0000000..51a3d8d
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/ExceptionControl.Designer.cs
@@ -0,0 +1,119 @@
+namespace MiniSqlQuery.Core.Controls
+{
+	partial class ExceptionControl
+	{
+		/// <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 Component 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.lblError = new System.Windows.Forms.Label();
+			this.txtMessage = new System.Windows.Forms.TextBox();
+			this.txtDetails = new System.Windows.Forms.TextBox();
+			this.label2 = new System.Windows.Forms.Label();
+			this.lnkCopy = new System.Windows.Forms.LinkLabel();
+			this.SuspendLayout();
+			// 
+			// lblError
+			// 
+			this.lblError.AutoSize = true;
+			this.lblError.Location = new System.Drawing.Point(3, 0);
+			this.lblError.Name = "lblError";
+			this.lblError.Size = new System.Drawing.Size(29, 13);
+			this.lblError.TabIndex = 0;
+			this.lblError.Text = "Error";
+			// 
+			// txtMessage
+			// 
+			this.txtMessage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+						| System.Windows.Forms.AnchorStyles.Right)));
+			this.txtMessage.Location = new System.Drawing.Point(6, 16);
+			this.txtMessage.Multiline = true;
+			this.txtMessage.Name = "txtMessage";
+			this.txtMessage.ReadOnly = true;
+			this.txtMessage.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+			this.txtMessage.Size = new System.Drawing.Size(428, 54);
+			this.txtMessage.TabIndex = 1;
+			// 
+			// txtDetails
+			// 
+			this.txtDetails.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.txtDetails.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+			this.txtDetails.Location = new System.Drawing.Point(6, 94);
+			this.txtDetails.Multiline = true;
+			this.txtDetails.Name = "txtDetails";
+			this.txtDetails.ReadOnly = true;
+			this.txtDetails.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+			this.txtDetails.Size = new System.Drawing.Size(428, 142);
+			this.txtDetails.TabIndex = 3;
+			// 
+			// label2
+			// 
+			this.label2.AutoSize = true;
+			this.label2.Location = new System.Drawing.Point(3, 78);
+			this.label2.Name = "label2";
+			this.label2.Size = new System.Drawing.Size(39, 13);
+			this.label2.TabIndex = 2;
+			this.label2.Text = "Details";
+			// 
+			// lnkCopy
+			// 
+			this.lnkCopy.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+			this.lnkCopy.AutoSize = true;
+			this.lnkCopy.Location = new System.Drawing.Point(344, 239);
+			this.lnkCopy.Name = "lnkCopy";
+			this.lnkCopy.Size = new System.Drawing.Size(90, 13);
+			this.lnkCopy.TabIndex = 4;
+			this.lnkCopy.TabStop = true;
+			this.lnkCopy.Text = "Copy to Clipboard";
+			this.lnkCopy.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkCopy_LinkClicked);
+			// 
+			// ExceptionControl
+			// 
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.Controls.Add(this.lnkCopy);
+			this.Controls.Add(this.txtDetails);
+			this.Controls.Add(this.label2);
+			this.Controls.Add(this.txtMessage);
+			this.Controls.Add(this.lblError);
+			this.Name = "ExceptionControl";
+			this.Size = new System.Drawing.Size(437, 256);
+			this.Load += new System.EventHandler(this.ExceptionControl_Load);
+			this.ResumeLayout(false);
+			this.PerformLayout();
+
+		}
+
+		#endregion
+
+		private System.Windows.Forms.Label lblError;
+		private System.Windows.Forms.TextBox txtMessage;
+		private System.Windows.Forms.TextBox txtDetails;
+		private System.Windows.Forms.Label label2;
+		private System.Windows.Forms.LinkLabel lnkCopy;
+	}
+}
Added +120 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Controls/ExceptionControl.resx b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/ExceptionControl.resx
new file mode 100644
index 0000000..19dc0dd
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/ExceptionControl.resx
@@ -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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
Added +37 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Controls/PluginListControl.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/PluginListControl.cs
new file mode 100644
index 0000000..28e2ff7
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/PluginListControl.cs
@@ -0,0 +1,37 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Controls
+{
+    /// <summary>A simple control to display plugin details.</summary>
+    public partial class PluginListControl : UserControl
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="PluginListControl"/> class.
+        /// </summary>
+        public PluginListControl()
+        {
+            InitializeComponent();
+        }
+
+        /// <summary>Sets the data source to the <paramref name="plugins"/>.</summary>
+        /// <param name="plugins">The plugins to display.</param>
+        public void SetDataSource(IPlugIn[] plugins)
+        {
+            foreach (IPlugIn plugin in plugins)
+            {
+                ListViewItem item = new ListViewItem(new[]
+                                                         {
+                                                             plugin.PluginName, plugin.PluginDescription, plugin.GetType().Assembly.FullName
+                                                         });
+                listView1.Items.Add(item);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +84 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Controls/PluginListControl.Designer.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/PluginListControl.Designer.cs
new file mode 100644
index 0000000..7dd82b8
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/PluginListControl.Designer.cs
@@ -0,0 +1,84 @@
+namespace MiniSqlQuery.Core.Controls
+{
+	partial class PluginListControl
+	{
+		/// <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 Component 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.listView1 = new System.Windows.Forms.ListView();
+			this.columnHeaderName = new System.Windows.Forms.ColumnHeader();
+			this.columnHeaderDescription = new System.Windows.Forms.ColumnHeader();
+			this.columnHeaderAssembly = new System.Windows.Forms.ColumnHeader();
+			this.SuspendLayout();
+			// 
+			// listView1
+			// 
+			this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+            this.columnHeaderName,
+            this.columnHeaderDescription,
+            this.columnHeaderAssembly});
+			this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.listView1.Location = new System.Drawing.Point(0, 0);
+			this.listView1.Name = "listView1";
+			this.listView1.Size = new System.Drawing.Size(361, 146);
+			this.listView1.TabIndex = 0;
+			this.listView1.UseCompatibleStateImageBehavior = false;
+			this.listView1.View = System.Windows.Forms.View.Details;
+			// 
+			// columnHeaderName
+			// 
+			this.columnHeaderName.Text = "Name";
+			this.columnHeaderName.Width = 150;
+			// 
+			// columnHeaderDescription
+			// 
+			this.columnHeaderDescription.Text = "Description";
+			this.columnHeaderDescription.Width = 200;
+			// 
+			// columnHeaderAssembly
+			// 
+			this.columnHeaderAssembly.Text = "Assembly";
+			this.columnHeaderAssembly.Width = 200;
+			// 
+			// PluginListControl
+			// 
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.Controls.Add(this.listView1);
+			this.Name = "PluginListControl";
+			this.Size = new System.Drawing.Size(361, 146);
+			this.ResumeLayout(false);
+
+		}
+
+		#endregion
+
+		private System.Windows.Forms.ListView listView1;
+		private System.Windows.Forms.ColumnHeader columnHeaderName;
+		private System.Windows.Forms.ColumnHeader columnHeaderDescription;
+		private System.Windows.Forms.ColumnHeader columnHeaderAssembly;
+	}
+}
Added +120 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Controls/PluginListControl.resx b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/PluginListControl.resx
new file mode 100644
index 0000000..19dc0dd
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Controls/PluginListControl.resx
@@ -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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
Added +50 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DatabaseMetaDataService.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DatabaseMetaDataService.cs
new file mode 100644
index 0000000..5ffe49b
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DatabaseMetaDataService.cs
@@ -0,0 +1,50 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using MiniSqlQuery.Core.DbModel;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	Creates <see cref="IDatabaseSchemaService"/> instance to provide a simplified view of the database schema.
+    /// </summary>
+    public class DatabaseMetaDataService
+    {
+        /// <summary>
+        /// 	Creates a schema service for a database depending on the <paramref name = "providerName" />.
+        /// 	Currently has specific providers for MSSQL, MSSQL CE and OLE DB.
+        /// 	The <see cref="GenericSchemaService"/> is the fallback option.
+        /// </summary>
+        /// <param name = "providerName">The provider name, e.g. "System.Data.SqlClient".</param>
+        /// <returns>
+        /// A schema serivce for the based on the <paramref name = "providerName" />. 
+        /// The default is <see cref = "GenericSchemaService" />.
+        /// </returns>
+        public static IDatabaseSchemaService Create(string providerName)
+        {
+            switch (providerName)
+            {
+                case "System.Data.OleDb":
+                    return new OleDbSchemaService { ProviderName = providerName };
+
+                case "System.Data.SqlClient":
+                    return new SqlClientSchemaService { ProviderName = providerName };
+                case "Oracle.DataAccess.Client":
+                    return new OracleSchemaService { ProviderName = providerName };
+                default:
+                    // The SQL CE types tend to include the version number within the provider name, hence "StartsWith"
+                    if (providerName.StartsWith("System.Data.SqlServerCe."))
+                    {
+                        return new SqlCeSchemaService { ProviderName = providerName };
+                    }
+
+                    return new GenericSchemaService { ProviderName = providerName };
+            }
+        }
+    }
+}
\ No newline at end of file
Added +99 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DBConnectionDefinition.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DBConnectionDefinition.cs
new file mode 100644
index 0000000..39fed27
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DBConnectionDefinition.cs
@@ -0,0 +1,99 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.IO;
+using System.Xml.Serialization;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	Provides a defition of database connection by provider and name.
+    /// </summary>
+    [Serializable]
+    public class DbConnectionDefinition
+    {
+        /// <summary>
+        /// 	A default connection, an MSSQL db on localhost connecting to the "master" database using integrated authentication.
+        /// </summary>
+        [XmlIgnore] public static readonly DbConnectionDefinition Default;
+
+        /// <summary>
+        /// 	Initializes static members of the <see cref = "DbConnectionDefinition" /> class.
+        /// </summary>
+        static DbConnectionDefinition()
+        {
+            Default = new DbConnectionDefinition
+            {
+                Name = "Default - MSSQL Master@localhost",
+                ProviderName = "System.Data.SqlClient",
+                ConnectionString = @"Server=.; Database=Master; Integrated Security=SSPI"
+            };
+        }
+
+        /// <summary>
+        /// 	Gets or sets a comment in relation to this connection, e.g. "development..."
+        /// </summary>
+        /// <value>A comment.</value>
+        [XmlElement(IsNullable = true)]
+        public string Comment { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets the connection string.
+        /// </summary>
+        /// <value>The connection string.</value>
+        [XmlElement(IsNullable = false)]
+        public string ConnectionString { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets the name.
+        /// </summary>
+        /// <value>The name of the definition.</value>
+        [XmlElement(IsNullable = false)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets the name of the provider.
+        /// </summary>
+        /// <value>The name of the provider.</value>
+        [XmlElement(IsNullable = false)]
+        public string ProviderName { get; set; }
+
+        /// <summary>
+        /// 	Converts the definition from an XML string.
+        /// </summary>
+        /// <param name = "xml">The XML to hydrate from.</param>
+        /// <returns>A <see cref="DbConnectionDefinition"/> instance.</returns>
+        public static DbConnectionDefinition FromXml(string xml)
+        {
+            using (var sr = new StringReader(xml))
+            {
+                var serializer = new XmlSerializer(typeof(DbConnectionDefinition));
+                return (DbConnectionDefinition)serializer.Deserialize(sr);
+            }
+        }
+
+        /// <summary>
+        /// 	Returns a <see cref = "T:System.String" /> that represents the current <see cref = "T:System.Object" />.
+        /// </summary>
+        /// <returns>A <see cref = "T:System.String" /> that represents the current <see cref = "T:System.Object" />.</returns>
+        public override string ToString()
+        {
+            return Name ?? GetType().FullName;
+        }
+
+        /// <summary>
+        /// 	Serialize the object to XML.
+        /// </summary>
+        /// <returns>An XML string.</returns>
+        public string ToXml()
+        {
+            return Utility.ToXml(this);
+        }
+    }
+}
\ No newline at end of file
Added +101 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DBConnectionDefinitionList.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DBConnectionDefinitionList.cs
new file mode 100644
index 0000000..135f98a
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DBConnectionDefinitionList.cs
@@ -0,0 +1,101 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Xml.Serialization;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	Manages a list of database connections.
+    /// </summary>
+    [Serializable]
+    public class DbConnectionDefinitionList
+    {
+        // store internally as a list
+        /// <summary>
+        /// 	An class refernece to the database definitions.
+        /// </summary>
+        private readonly List<DbConnectionDefinition> _definitions;
+
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "DbConnectionDefinitionList" /> class.
+        /// </summary>
+        public DbConnectionDefinitionList()
+        {
+            _definitions = new List<DbConnectionDefinition>();
+        }
+
+        /// <summary>
+        /// 	Gets or sets the default name of a connection definition from the list of <see cref = "Definitions" />.
+        /// </summary>
+        /// <value>The default name.</value>
+        public string DefaultName { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets the connection definitions.
+        /// </summary>
+        /// <value>The definitions.</value>
+        public DbConnectionDefinition[] Definitions
+        {
+            get
+            {
+                return _definitions.ToArray();
+            }
+            set
+            {
+                _definitions.Clear();
+                _definitions.AddRange(value);
+            }
+        }
+
+        /// <summary>
+        /// 	Creates a <see cref = "DbConnectionDefinitionList" /> from a string of <paramref name = "xml" />.
+        /// </summary>
+        /// <param name = "xml">The XML to hydrate from.</param>
+        /// <returns>An instance of <see cref = "DbConnectionDefinitionList" />.</returns>
+        public static DbConnectionDefinitionList FromXml(string xml)
+        {
+            using (var sr = new StringReader(xml))
+            {
+                var serializer = new XmlSerializer(typeof(DbConnectionDefinitionList));
+                return (DbConnectionDefinitionList)serializer.Deserialize(sr);
+            }
+        }
+
+        /// <summary>
+        /// 	Adds the definition from the list.
+        /// </summary>
+        /// <param name = "connectionDefinition">The connection definition.</param>
+        public void AddDefinition(DbConnectionDefinition connectionDefinition)
+        {
+            _definitions.Add(connectionDefinition);
+        }
+
+        /// <summary>
+        /// 	Removes the definition from the list.
+        /// </summary>
+        /// <param name = "connectionDefinition">The connection definition.</param>
+        /// <returns>True if the item was removed.</returns>
+        public bool RemoveDefinition(DbConnectionDefinition connectionDefinition)
+        {
+            return _definitions.Remove(connectionDefinition);
+        }
+
+        /// <summary>
+        /// 	Serialize the list to XML.
+        /// </summary>
+        /// <returns>An XML string.</returns>
+        public string ToXml()
+        {
+            return Utility.ToXml(this);
+        }
+    }
+}
\ No newline at end of file
Added +89 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelColumn.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelColumn.cs
new file mode 100644
index 0000000..843a2a0
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelColumn.cs
@@ -0,0 +1,89 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Diagnostics;
+
+namespace MiniSqlQuery.Core.DbModel
+{
+    /// <summary>The db model column.</summary>
+    [DebuggerDisplay("DbModelColumn: {Name} (DbModelType.Summary: {DbModelType.Summary}, Nullable: {Nullable}, IsKey: {IsKey})")]
+    public class DbModelColumn : DbModelObjectBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="DbModelColumn"/> class.</summary>
+        public DbModelColumn()
+        {
+            Nullable = true;
+            DbType = new DbModelType("varchar", 50);
+            ObjectType = ObjectTypes.Column;
+        }
+
+        /// <summary>Gets or sets DbType.</summary>
+        /// <value>The db type.</value>
+        public virtual DbModelType DbType { get; set; }
+
+        /// <summary>Gets or sets ForeignKeyReference.</summary>
+        /// <value>The foreign key reference.</value>
+        public virtual DbModelForeignKeyReference ForeignKeyReference { get; set; }
+
+        /// <summary>Gets FullName.</summary>
+        /// <value>The full name.</value>
+        public override string FullName
+        {
+            get { return Name; }
+        }
+
+        /// <summary>Gets a value indicating whether HasFK.</summary>
+        /// <value>The has fk.</value>
+        public virtual bool HasFK
+        {
+            get { return ForeignKeyReference != null; }
+        }
+
+        /// <summary>Gets or sets a value indicating whether IsAutoIncrement.</summary>
+        /// <value>The is auto increment.</value>
+        public virtual bool IsAutoIncrement { get; set; }
+
+        /// <summary>Gets or sets a value indicating whether IsIdentity.</summary>
+        /// <value>The is identity.</value>
+        public virtual bool IsIdentity { get; set; }
+
+        /// <summary>Gets or sets a value indicating whether IsKey.</summary>
+        /// <value>The is key.</value>
+        public virtual bool IsKey { get; set; }
+
+        /// <summary>Gets or sets a value indicating whether IsReadOnly.</summary>
+        /// <value>The is read only.</value>
+        public virtual bool IsReadOnly { get; set; }
+
+        /// <summary>
+        /// Gets or sets a value indicating whether this column is a concurrency field, such as a timestamp.
+        /// </summary>
+        /// <value>
+        /// 	<c>true</c> if this instance is row version, or concurrency field; otherwise, <c>false</c>.
+        /// </value>
+        public virtual bool IsRowVersion { get; set; }
+
+        /// <summary>Gets or sets a value indicating whether IsUnique.</summary>
+        /// <value>The is unique.</value>
+        public virtual bool IsUnique { get; set; }
+
+        /// <summary>Gets a value indicating whether IsWritable.</summary>
+        /// <value>The is writable.</value>
+        public virtual bool IsWritable
+        {
+            get { return !IsReadOnly; }
+        }
+
+        /// <summary>Gets or sets a value indicating whether Nullable.</summary>
+        /// <value>The nullable.</value>
+        public virtual bool Nullable { get; set; }
+
+        /// <summary>Gets the parent table of the column.</summary>
+        /// <value>The parent table instance.</value>
+        public virtual DbModelTable ParentTable { get; internal set; }
+    }
+}
\ No newline at end of file
Added +15 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelColumnCollection.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelColumnCollection.cs
new file mode 100644
index 0000000..dc8eebc
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelColumnCollection.cs
@@ -0,0 +1,15 @@
+#region License
+// Copyright 2005-2009 Paul Kohler (http://pksoftware.net/MiniSqlQuery/). All rights reserved.
+// This source code is made available under the terms of the Microsoft Public License (Ms-PL)
+// http://minisqlquery.codeplex.com/license
+#endregion
+using System;
+using System.Collections.Generic;
+
+namespace MiniSqlQuery.Core.DbModel
+{
+	[Obsolete("Just use List - easier for filtering etc")]
+	public class DbModelColumnCollection : List<DbModelColumn>
+	{
+	}
+}
\ No newline at end of file
Added +54 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelConstraint.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelConstraint.cs
new file mode 100644
index 0000000..ad2f12a
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelConstraint.cs
@@ -0,0 +1,54 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.Core.DbModel
+{
+    /// <summary>The db model constraint.</summary>
+    public class DbModelConstraint
+    {
+        /// <summary>Gets or sets ColumnName.</summary>
+        /// <value>The column name.</value>
+        public string ColumnName { get; set; }
+
+        /// <summary>Gets or sets ConstraintName.</summary>
+        /// <value>The constraint name.</value>
+        public string ConstraintName { get; set; }
+
+        /// <summary>Gets or sets ConstraintTableName.</summary>
+        /// <value>The constraint table name.</value>
+        public string ConstraintTableName { get; set; }
+
+        /// <summary>Gets or sets ConstraintTableSchema.</summary>
+        /// <value>The constraint table schema.</value>
+        public string ConstraintTableSchema { get; set; }
+
+        /// <summary>Gets or sets DeleteRule.</summary>
+        /// <value>The delete rule.</value>
+        public string DeleteRule { get; set; }
+
+        /// <summary>Gets or sets UniqueColumnName.</summary>
+        /// <value>The unique column name.</value>
+        public string UniqueColumnName { get; set; }
+
+        /// <summary>Gets or sets UniqueConstraintName.</summary>
+        /// <value>The unique constraint name.</value>
+        public string UniqueConstraintName { get; set; }
+
+        /// <summary>Gets or sets UniqueConstraintTableName.</summary>
+        /// <value>The unique constraint table name.</value>
+        public string UniqueConstraintTableName { get; set; }
+
+        /// <summary>Gets or sets UniqueConstraintTableSchema.</summary>
+        /// <value>The unique constraint table schema.</value>
+        public string UniqueConstraintTableSchema { get; set; }
+
+        /// <summary>Gets or sets UpdateRule.</summary>
+        /// <value>The update rule.</value>
+        public string UpdateRule { get; set; }
+    }
+}
\ No newline at end of file
Added +94 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelDependencyWalker.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelDependencyWalker.cs
new file mode 100644
index 0000000..7851f1e
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelDependencyWalker.cs
@@ -0,0 +1,94 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace MiniSqlQuery.Core.DbModel
+{
+    /// <summary>Examins a <see cref="DbModelInstance"/> providing sort methods.</summary>
+    public class DbModelDependencyWalker
+    {
+        /// <summary>The _model.</summary>
+        private readonly DbModelInstance _model;
+
+        /// <summary>Initializes a new instance of the <see cref="DbModelDependencyWalker"/> class.</summary>
+        /// <param name="model">The database model instance.</param>
+        public DbModelDependencyWalker(DbModelInstance model)
+        {
+            if (model == null)
+            {
+                throw new ArgumentNullException("model");
+            }
+
+            _model = model;
+        }
+
+        /// <summary>Sorts the tables by checking the foreign key references recursivly building a list of tables in order.</summary>
+        /// <returns>An array of tables in dependency order.</returns>
+        public DbModelTable[] SortTablesByForeignKeyReferences()
+        {
+            List<DbModelTable> tables = new List<DbModelTable>();
+
+            // add tables with no FKs
+            foreach (DbModelTable table in _model.Tables)
+            {
+                if (table.ForeignKeyColumns.Count == 0)
+                {
+                    tables.Add(table);
+                }
+            }
+
+            foreach (DbModelTable table in _model.Tables)
+            {
+                ProcessForeignKeyReferences(1, tables, table);
+            }
+
+            return tables.ToArray();
+        }
+
+        /// <summary>The process foreign key references.</summary>
+        /// <param name="level">The level.</param>
+        /// <param name="tablesList">The tables list.</param>
+        /// <param name="table">The table.</param>
+        /// <exception cref="InvalidOperationException"></exception>
+        private void ProcessForeignKeyReferences(int level, List<DbModelTable> tablesList, DbModelTable table)
+        {
+            if (tablesList.Contains(table))
+            {
+                return;
+            }
+
+            // recursive insurance ;-)
+            level++;
+            if (level > 1000)
+            {
+                throw new InvalidOperationException(string.Format("FK processor exceeded recursive level of 1000 at '{0}'.", table.Name));
+            }
+
+            // if there are FK refs, add the refered tables first
+            if (table.ForeignKeyColumns.Count > 0)
+            {
+                // if the table is not already in the list....
+                foreach (DbModelColumn fkColumn in table.ForeignKeyColumns)
+                {
+                    // ensure its not a self referencing table
+                    if (fkColumn.ForeignKeyReference.ReferenceTable != table)
+                    {
+                        ProcessForeignKeyReferences(++level, tablesList, fkColumn.ForeignKeyReference.ReferenceTable);
+                    }
+                }
+
+                // now add the table if not in the list yet
+                if (!tablesList.Contains(table))
+                {
+                    tablesList.Add(table);
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
Added +54 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelForeignKeyReference.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelForeignKeyReference.cs
new file mode 100644
index 0000000..ad6c910
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelForeignKeyReference.cs
@@ -0,0 +1,54 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.Core.DbModel
+{
+    /// <summary>The db model foreign key reference.</summary>
+    public class DbModelForeignKeyReference
+    {
+        /// <summary>Initializes a new instance of the <see cref="DbModelForeignKeyReference"/> class.</summary>
+        public DbModelForeignKeyReference()
+        {
+        }
+
+        /// <summary>Initializes a new instance of the <see cref="DbModelForeignKeyReference"/> class.</summary>
+        /// <param name="owningColumn">The owning column.</param>
+        /// <param name="fkTable">The fk table.</param>
+        /// <param name="fkColumn">The fk column.</param>
+        public DbModelForeignKeyReference(DbModelColumn owningColumn, DbModelTable fkTable, DbModelColumn fkColumn)
+        {
+            OwningColumn = owningColumn;
+            ReferenceTable = fkTable;
+            ReferenceColumn = fkColumn;
+        }
+
+        /// <summary>Gets or sets ConstraintName.</summary>
+        /// <value>The constraint name.</value>
+        public virtual string ConstraintName { get; set; }
+
+        /// <summary>Gets or sets DeleteRule.</summary>
+        /// <value>The delete rule.</value>
+        public string DeleteRule { get; set; }
+
+        /// <summary>Gets or sets OwningColumn.</summary>
+        /// <value>The owning column.</value>
+        public DbModelColumn OwningColumn { get; set; }
+
+        /// <summary>Gets or sets ReferenceColumn.</summary>
+        /// <value>The reference column.</value>
+        public DbModelColumn ReferenceColumn { get; set; }
+
+        /// <summary>Gets or sets ReferenceTable.</summary>
+        /// <value>The reference table.</value>
+        public DbModelTable ReferenceTable { get; set; }
+
+        /// <summary>Gets or sets UpdateRule.</summary>
+        /// <value>The update rule.</value>
+        public string UpdateRule { get; set; }
+    }
+}
\ No newline at end of file
Added +101 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelInstance.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelInstance.cs
new file mode 100644
index 0000000..5776f44
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelInstance.cs
@@ -0,0 +1,101 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace MiniSqlQuery.Core.DbModel
+{
+    /// <summary>The db model instance.</summary>
+    public class DbModelInstance
+    {
+        /// <summary>The _tables.</summary>
+        private readonly List<DbModelTable> _tables;
+
+        /// <summary>The _views.</summary>
+        private readonly List<DbModelView> _views;
+
+        /// <summary>Initializes a new instance of the <see cref="DbModelInstance"/> class.</summary>
+        public DbModelInstance()
+        {
+            _tables = new List<DbModelTable>();
+            _views = new List<DbModelView>();
+        }
+
+        /// <summary>Gets or sets ConnectionString.</summary>
+        /// <value>The connection string.</value>
+        public string ConnectionString { get; set; }
+
+        /// <summary>Gets or sets ProviderName.</summary>
+        /// <value>The provider name.</value>
+        public string ProviderName { get; set; }
+
+        /// <summary>Gets Tables.</summary>
+        /// <value>The tables.</value>
+        public virtual ICollection<DbModelTable> Tables
+        {
+            get { return _tables; }
+        }
+
+        /// <summary>Gets or sets Types.</summary>
+        /// <value>The types.</value>
+        public Dictionary<string, DbModelType> Types { get; set; }
+
+        /// <summary>Gets Views.</summary>
+        /// <value>The views.</value>
+        public virtual ICollection<DbModelView> Views
+        {
+            get { return _views; }
+        }
+
+        /// <summary>The add.</summary>
+        /// <param name="table">The table.</param>
+        public virtual void Add(DbModelTable table)
+        {
+            table.ParentDb = this;
+            _tables.Add(table);
+        }
+
+        /// <summary>The add.</summary>
+        /// <param name="view">The view.</param>
+        public virtual void Add(DbModelView view)
+        {
+            view.ParentDb = this;
+            _views.Add(view);
+        }
+
+        /// <summary>The find table.</summary>
+        /// <param name="tableName">The table name.</param>
+        /// <returns></returns>
+        public virtual DbModelTable FindTable(string tableName)
+        {
+            return _tables.Find(table => table.FullName.Equals(tableName, StringComparison.InvariantCultureIgnoreCase));
+        }
+
+        /// <summary>The find table or view.</summary>
+        /// <param name="name">The name.</param>
+        /// <returns></returns>
+        public virtual DbModelTable FindTableOrView(string name)
+        {
+            var obj = _tables.Find(table => table.FullName.Equals(name, StringComparison.InvariantCultureIgnoreCase));
+            if (obj == null)
+            {
+                obj = _views.Find(view => view.FullName.Equals(name, StringComparison.InvariantCultureIgnoreCase));
+            }
+
+            return obj;
+        }
+
+        /// <summary>The find view.</summary>
+        /// <param name="viewName">The view name.</param>
+        /// <returns></returns>
+        public virtual DbModelTable FindView(string viewName)
+        {
+            return _views.Find(view => view.FullName.Equals(viewName, StringComparison.InvariantCultureIgnoreCase));
+        }
+    }
+}
\ No newline at end of file
Added +46 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelObjectBase.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelObjectBase.cs
new file mode 100644
index 0000000..348fd8f
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelObjectBase.cs
@@ -0,0 +1,46 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+
+namespace MiniSqlQuery.Core.DbModel
+{
+    /// <summary>The db model object base.</summary>
+    public class DbModelObjectBase : IDbModelNamedObject
+    {
+        private string _fullName;
+
+        /// <summary>
+        /// Gets the full name of the object which may include the <see cref="IDbModelNamedObject.Schema"/> for example.
+        /// </summary>
+        /// <value>The full name.</value>
+        public virtual string FullName
+        {
+            get
+            {
+                if (_fullName == null)
+                {
+                    _fullName = Utility.RenderSafeSchemaObjectName(Schema, Name);
+                }
+
+                return _fullName;
+            }
+        }
+
+        /// <summary>Gets or sets name of the database object.</summary>
+        /// <value>The name of the object.</value>
+        public virtual string Name { get; set; }
+
+        /// <summary>Gets or sets ObjectType.</summary>
+        /// <value>The object type.</value>
+        public virtual string ObjectType { get; set; }
+
+        /// <summary>Gets or sets Schema.</summary>
+        /// <value>The schema.</value>
+        public virtual string Schema { get; set; }
+    }
+}
\ No newline at end of file
Added +66 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelTable.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelTable.cs
new file mode 100644
index 0000000..c5e7820
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelTable.cs
@@ -0,0 +1,66 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Collections.Generic;
+using System.Diagnostics;
+
+namespace MiniSqlQuery.Core.DbModel
+{
+    /// <summary>The db model table.</summary>
+    [DebuggerDisplay("DbModelTable: {FullName} (Columns: {Columns.Count}, PKs: {PrimaryKeyColumns.Count}, FKs: {ForeignKeyColumns.Count})")]
+    public class DbModelTable : DbModelObjectBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="DbModelTable"/> class.</summary>
+        public DbModelTable()
+        {
+            Columns = new List<DbModelColumn>();
+            Constraints = new List<DbModelConstraint>();
+            ObjectType = ObjectTypes.Table;
+        }
+
+        /// <summary>Gets the Columns for this table.</summary>
+        /// <value>The columns.</value>
+        public virtual List<DbModelColumn> Columns { get; internal set; }
+
+        /// <summary>Gets Constraints.</summary>
+        /// <value>The constraints.</value>
+        public virtual List<DbModelConstraint> Constraints { get; private set; }
+
+        /// <summary>Gets ForeignKeyColumns.</summary>
+        /// <value>The foreign key columns.</value>
+        public virtual List<DbModelColumn> ForeignKeyColumns
+        {
+            get { return Columns.FindAll(c => c.ForeignKeyReference != null); }
+        }
+
+        /// <summary>Gets NonKeyColumns.</summary>
+        /// <value>The non key columns.</value>
+        public virtual List<DbModelColumn> NonKeyColumns
+        {
+            get { return Columns.FindAll(c => !c.IsKey && c.ForeignKeyReference == null); }
+        }
+
+        /// <summary>Gets a reference to the parent database instance.</summary>
+        /// <value>The parent model instance object.</value>
+        public virtual DbModelInstance ParentDb { get; internal set; }
+
+        /// <summary>Gets PrimaryKeyColumns.</summary>
+        /// <value>The primary key columns.</value>
+        public virtual List<DbModelColumn> PrimaryKeyColumns
+        {
+            get { return Columns.FindAll(c => c.IsKey); }
+        }
+
+        /// <summary>Adds the <paramref name="column"/> to the list of <see cref="Columns"/> assigning the <see cref="DbModelColumn.ParentTable"/>.</summary>
+        /// <param name="column">The new column.</param>
+        public virtual void Add(DbModelColumn column)
+        {
+            column.ParentTable = this;
+            Columns.Add(column);
+        }
+    }
+}
\ No newline at end of file
Added +212 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelType.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelType.cs
new file mode 100644
index 0000000..261c15b
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelType.cs
@@ -0,0 +1,212 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+
+namespace MiniSqlQuery.Core.DbModel
+{
+    /// <summary>Describes a database type.</summary>
+    [DebuggerDisplay("DbModelType: {Name} [{Summary,nq}]")]
+    public class DbModelType : DbModelObjectBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="DbModelType"/> class.</summary>
+        /// <param name="name">The name of the type, e.g. "varchar".</param>
+        /// <param name="length">The length of the type, e.g. 10.</param>
+        public DbModelType(string name, int length)
+        {
+            Name = name;
+            Length = length;
+        }
+
+        /// <summary>Gets or sets CreateFormat.</summary>
+        /// <value>The create format.</value>
+        public virtual string CreateFormat { get; set; }
+
+        /// <summary>Gets or sets CreateParameters.</summary>
+        /// <value>The create parameters.</value>
+        public virtual string CreateParameters { get; set; }
+
+        /// <summary>Gets or sets Length.</summary>
+        /// <value>The length.</value>
+        public virtual int Length { get; set; }
+
+        /// <summary>Gets or sets LiteralPrefix.</summary>
+        /// <value>The literal prefix.</value>
+        public virtual string LiteralPrefix { get; set; }
+
+        /// <summary>Gets or sets LiteralSuffix.</summary>
+        /// <value>The literal suffix.</value>
+        public virtual string LiteralSuffix { get; set; }
+
+        /// <summary>Gets or sets Precision.</summary>
+        /// <value>The precision.</value>
+        public virtual int Precision { get; set; }
+
+        /// <summary>Gets or sets ProviderDbType.</summary>
+        /// <value>The provider db type.</value>
+        public virtual string ProviderDbType { get; set; }
+
+        /// <summary>Gets or sets Scale.</summary>
+        /// <value>The scale.</value>
+        public virtual int Scale { get; set; }
+
+        /// <summary>
+        /// Gets the summary of the SQL type using the <see cref="CreateFormat"/> if applicable.
+        /// </summary>
+        /// <value>The summary.</value>
+        public virtual string Summary
+        {
+            get
+            {
+                if (!string.IsNullOrEmpty(CreateFormat))
+                {
+                    if (CreateFormat.Contains("{1}") && (Precision != -1 && Scale != -1))
+                    {
+                        return string.Format(CreateFormat, Precision, Scale);
+                    }
+
+                    if (CreateFormat.Contains("{0}") && !CreateFormat.Contains("{1}") && (Length != -1))
+                    {
+                        return string.Format(CreateFormat, Length);
+                    }
+
+                    if (CreateFormat.Contains("{0}"))
+                    {
+                        // err...
+                        return Name;
+                    }
+
+                    return CreateFormat;
+                }
+
+                return Name;
+            }
+        }
+
+        /// <summary>Gets or sets SystemType.</summary>
+        /// <value>The system type.</value>
+        public virtual Type SystemType { get; set; }
+
+        /// <summary>Gets or sets Value.</summary>
+        /// <value>The value.</value>
+        public virtual object Value { get; set; }
+
+        // public static DbModelType Create(string name, int length, int precision, int scale, string systemTypeName)
+        // {
+        // return Create(null, name, length, precision, scale, systemTypeName);
+        // }
+
+        /// <summary>Creates an instance of <see cref="DbModelType"/> defined by the parameers.</summary>
+        /// <param name="dbTypes">The db types list, if the <paramref name="name"/> is in the list it is used as a base copy of the type.</param>
+        /// <param name="name">The name of the type, e.g. "int", "nvarchar" etc.</param>
+        /// <param name="length">The length of the type.</param>
+        /// <param name="precision">The precision.</param>
+        /// <param name="scale">The scale.</param>
+        /// <param name="systemTypeName">Name of the system type, e.g. "System.String".</param>
+        /// <returns>An instance of <see cref="DbModelType"/> defined by the parameers</returns>
+        public static DbModelType Create(Dictionary<string, DbModelType> dbTypes, string name, int length, int precision, int scale, string systemTypeName)
+        {
+            DbModelType baseType;
+
+            string key = name.ToLower();
+            if (dbTypes != null && dbTypes.ContainsKey(key))
+            {
+                // the type should be here, this is used as a baseline for new instances
+                baseType = dbTypes[key].Copy();
+                baseType.Length = length;
+            }
+            else
+            {
+                baseType = new DbModelType(name, length);
+                baseType.SystemType = Type.GetType(systemTypeName);
+            }
+
+            baseType.Precision = precision;
+            baseType.Scale = scale;
+
+            return baseType;
+        }
+
+        /// <summary>Copies this instance.</summary>
+        /// <returns>A copy of this instance.</returns>
+        public DbModelType Copy()
+        {
+            DbModelType copy = new DbModelType(Name, Length)
+            {
+                CreateFormat = CreateFormat,
+                CreateParameters = CreateParameters,
+                LiteralPrefix = LiteralPrefix,
+                LiteralSuffix = LiteralSuffix,
+                Precision = Precision,
+                Scale = Scale,
+                SystemType = SystemType,
+            };
+            return copy;
+        }
+
+        /// <summary>Renders this <see cref="DbModelType"/> as basic DDL base on the contents of <see cref="Value"/> (assumes nullable).</summary>
+        /// <returns>An SQL string representing the <see cref="Value"/> acording to the database type (assumes nullable).</returns>
+        public string ToDDLValue()
+        {
+            return ToDDLValue(true);
+        }
+
+        /// <summary>Renders this <see cref="DbModelType"/> as basic DDL base on the contents of <see cref="Value"/>.</summary>
+        /// <param name="nullable">A boolean value indicating the nullability of the column.</param>
+        /// <returns>An SQL string representing the <see cref="Value"/> acording to the database type.</returns>
+        /// <remarks>If a column is "not null" and the <see cref="Value"/> is null, in the furure this method will attampt to return a default value
+        /// rather than throwing an exception etc.</remarks>
+        public string ToDDLValue(bool nullable)
+        {
+            if (Value == null || Value == DBNull.Value)
+            {
+                if (nullable)
+                {
+                    return "null";
+                }
+
+                // not supposed to be nullable but the Value is. render a default
+                switch (SystemType.FullName)
+                {
+                    case "System.String":
+                        return string.Concat(LiteralPrefix, LiteralSuffix);
+                    case "System.DateTime":
+                        return "'?'";
+                    case "System.Guid":
+                        return string.Concat("'", Guid.Empty, "'");
+                    default:
+                        return "0"; // take a punt
+                }
+            }
+
+            if (SystemType == typeof(string))
+            {
+                return string.Concat(LiteralPrefix, ((string)Value).Replace("'", "''"), LiteralSuffix);
+            }
+
+            if (SystemType == typeof(DateTime))
+            {
+                return string.Format("{0}{1:yyyy-MM-dd HH:mm:ss}{2}", LiteralPrefix, Value, LiteralSuffix);
+            }
+
+            if (SystemType == typeof(bool) && Name.Equals("bit", StringComparison.InvariantCultureIgnoreCase))
+            {
+                return ((bool)Value) ? "1" : "0";
+            }
+
+            if (SystemType == typeof(byte[]))
+            {
+                return "null /* not supported yet */ ";
+            }
+
+            return string.Concat(LiteralPrefix, Value, LiteralSuffix);
+        }
+    }
+}
\ No newline at end of file
Added +20 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelView.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelView.cs
new file mode 100644
index 0000000..8438833
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/DbModelView.cs
@@ -0,0 +1,20 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.Core.DbModel
+{
+    /// <summary>The db model view.</summary>
+    public class DbModelView : DbModelTable
+    {
+        /// <summary>Initializes a new instance of the <see cref="DbModelView"/> class.</summary>
+        public DbModelView()
+        {
+            ObjectType = ObjectTypes.View;
+        }
+    }
+}
\ No newline at end of file
Added +359 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/GenericSchemaService.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/GenericSchemaService.cs
new file mode 100644
index 0000000..a8a374a
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/GenericSchemaService.cs
@@ -0,0 +1,359 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.Common;
+using System.Diagnostics;
+
+namespace MiniSqlQuery.Core.DbModel
+{
+    /// <summary>
+    /// The generic schema service.
+    /// </summary>
+    public class GenericSchemaService : IDatabaseSchemaService
+    {
+        /// <summary>The _connection.</summary>
+        private string _connection;
+
+        /// <summary>Gets or sets a value indicating whether ForeignKeyInformationAvailable.</summary>
+        /// <value>The foreign key information available.</value>
+        public bool ForeignKeyInformationAvailable { get; set; }
+
+        /// <summary>Gets or sets ProviderName.</summary>
+        /// <value>The provider name.</value>
+        public string ProviderName { get; set; }
+
+        /// <summary>Gets a database object model that represents the items defined by the <paramref name="connection"/>.</summary>
+        /// <param name="connection">The connection string.</param>
+        /// <returns>An instance of <see cref="DbModelInstance"/> describing the database.</returns>
+        public virtual DbModelInstance GetDbObjectModel(string connection)
+        {
+
+            _connection = connection;
+
+            DbModelInstance model = new DbModelInstance();
+            DbProviderFactory factory = DbProviderFactories.GetFactory(ProviderName);
+
+            try
+            {
+                using (DbConnection dbConn = factory.CreateConnection())
+                {
+                    dbConn.ConnectionString = connection;
+                    dbConn.Open();
+
+                    DataTable tables = dbConn.GetSchema("Tables");
+                    Dictionary<string, DbModelType> dbTypes = GetDbTypes(dbConn);
+                    model.Types = dbTypes;
+                    model.ProviderName = ProviderName;
+                    model.ConnectionString = _connection;
+
+                    if (tables == null)
+                    {
+                        return model;
+                    }
+
+                    DataView tablesDV = new DataView(tables, "TABLE_TYPE='TABLE' OR TABLE_TYPE='BASE TABLE'", "TABLE_SCHEMA, TABLE_NAME", DataViewRowState.CurrentRows);
+
+                    foreach (DataRowView row in tablesDV)
+                    {
+                        string schemaName = SafeGetString(row.Row, "TABLE_SCHEMA");
+                        string tableName = SafeGetString(row.Row, "TABLE_NAME");
+
+                        DbModelTable dbTable = new DbModelTable { Schema = schemaName, Name = tableName };
+                        model.Add(dbTable);
+
+                        DataTable schemaTableKeyInfo = GetTableKeyInfo(dbConn, schemaName, tableName);
+                        GetColumnsForTable(dbTable, schemaTableKeyInfo, dbTypes);
+                    }
+
+                    DataView viewsDV = new DataView(tables, "TABLE_TYPE='VIEW'", "TABLE_SCHEMA, TABLE_NAME", DataViewRowState.CurrentRows);
+                    foreach (DataRowView row in viewsDV)
+                    {
+                        string schemaName = SafeGetString(row.Row, "TABLE_SCHEMA");
+                        string tableName = SafeGetString(row.Row, "TABLE_NAME");
+
+                        DbModelView dbTable = new DbModelView { Schema = schemaName, Name = tableName };
+                        model.Add(dbTable);
+
+                        DataTable schemaTableKeyInfo = GetTableKeyInfo(dbConn, schemaName, tableName);
+                        GetColumnsForTable(dbTable, schemaTableKeyInfo, dbTypes);
+                    }
+
+                    // build FK relationships 
+                    if (model.Tables != null)
+                    {
+                        foreach (DbModelTable table in model.Tables)
+                        {
+                            GetForeignKeyReferencesForTable(dbConn, table);
+                            ProcessForeignKeyReferencesForTable(dbConn, table);
+                        }
+                    }
+
+                    // build FK relationships
+                    if (model.Views != null)
+                    {
+                        foreach (DbModelView view in model.Views)
+                        {
+                            GetForeignKeyReferencesForTable(dbConn, view);
+                            ProcessForeignKeyReferencesForTable(dbConn, view);
+                        }
+                    }
+                }
+            }
+            catch (Exception)
+            {
+                // catch all for providers that are not implementing the schema info.
+                return model;
+            }
+
+            return model;
+        }
+
+        /// <summary>The get db types.</summary>
+        /// <param name="connection">The connection.</param>
+        /// <returns>A dictionary of named <see cref="DbModelType"/> objects supported by the database.</returns>
+        /// <exception cref="ArgumentNullException">If the <paramref name="connection"/> is null.</exception>
+        public virtual Dictionary<string, DbModelType> GetDbTypes(DbConnection connection)
+        {
+            if (connection == null)
+            {
+                throw new ArgumentNullException("connection");
+            }
+
+            Dictionary<string, DbModelType> dbTypes = new Dictionary<string, DbModelType>();
+
+            DataTable dataTypes = connection.GetSchema("DataTypes");
+
+            foreach (DataRow row in dataTypes.Rows)
+            {
+                string typeName = SafeGetString(row, "TypeName");
+                int columnSize = SafeGetInt(row, "ColumnSize");
+                DbModelType dbType = new DbModelType(typeName, columnSize);
+
+                // Some providers may double up on schema info, check first:
+                if (!dbTypes.ContainsKey(typeName.ToLower()))
+                {
+                    dbTypes.Add(typeName.ToLower(), dbType);
+
+                    dbType.CreateFormat = SafeGetString(row, "CreateFormat");
+                    dbType.CreateParameters = SafeGetString(row, "CreateParameters");
+                    dbType.LiteralPrefix = SafeGetString(row, "LiteralPrefix");
+                    dbType.LiteralSuffix = SafeGetString(row, "LiteralSuffix");
+                    dbType.SystemType = Type.GetType(SafeGetString(row, "DataType"));
+                    dbType.ProviderDbType = SafeGetString(row, "ProviderDbType");
+                }
+            }
+
+            return dbTypes;
+        }
+
+        /// <returns>The get description of the database.</returns>
+        public string GetDescription()
+        {
+            return "todo";
+        }
+
+        /// <summary>The get columns for table.</summary>
+        /// <param name="dbTable">The db table.</param>
+        /// <param name="schemaTableKeyInfo">The schema table key info.</param>
+        /// <param name="dbTypes">The db types.</param>
+        protected virtual void GetColumnsForTable(DbModelTable dbTable, DataTable schemaTableKeyInfo, Dictionary<string, DbModelType> dbTypes)
+        {
+            if (schemaTableKeyInfo == null)
+            {
+                return;
+            }
+
+            foreach (DataRow columnRow in schemaTableKeyInfo.Rows)
+            {
+                if (SafeGetBool(columnRow, "IsHidden"))
+                {
+                    continue;
+                }
+
+                string columnName = SafeGetString(columnRow, "ColumnName");
+                string dataType = GetDataTypeNameForColumn(dbTable, schemaTableKeyInfo, columnRow);
+
+                // note - need a better work around for columns missing the data type info (e.g. access)
+                if (string.IsNullOrEmpty(dataType))
+                {
+                    // try using the "ProviderDbType" to match
+                    string providerDbType = SafeGetString(columnRow, "ProviderType");
+                    foreach (var type in dbTypes.Values)
+                    {
+                        if (type.ProviderDbType == providerDbType)
+                        {
+                            dataType = type.Name;
+                            break;
+                        }
+                    }
+                }
+
+                DbModelType dbType = DbModelType.Create(
+                    dbTypes,
+                    dataType,
+                    SafeGetInt(columnRow, "ColumnSize"),
+                    SafeGetInt(columnRow, "Precision"),
+                    SafeGetInt(columnRow, "Scale"),
+                    SafeGetString(columnRow, "DataType"));
+
+                // todo - FK info
+                DbModelColumn dbColumn = new DbModelColumn
+                {
+                    Name = columnName,
+                    // Name = MakeSqlFriendly(columnName),
+                    Nullable = SafeGetBool(columnRow, "AllowDBNull"),
+                    IsKey = SafeGetBool(columnRow, "IsKey"),
+                    IsUnique = SafeGetBool(columnRow, "IsUnique"),
+                    IsRowVersion = SafeGetBool(columnRow, "IsRowVersion"),
+                    IsIdentity = SafeGetBool(columnRow, "IsIdentity"),
+                    IsAutoIncrement = SafeGetBool(columnRow, "IsAutoIncrement"),
+                    IsReadOnly = SafeGetBool(columnRow, "IsReadOnly"),
+                    DbType = dbType,
+                };
+                dbTable.Add(dbColumn);
+            }
+        }
+
+        /// <summary>The get data type name for column.</summary>
+        /// <param name="dbTable">The db table.</param>
+        /// <param name="schemaTableKeyInfo">The schema table key info.</param>
+        /// <param name="columnRow">The column row.</param>
+        /// <returns>The get data type name for column.</returns>
+        protected virtual string GetDataTypeNameForColumn(DbModelTable dbTable, DataTable schemaTableKeyInfo, DataRow columnRow)
+        {
+            return SafeGetString(columnRow, "DataTypeName");
+        }
+
+        /// <summary>The get foreign key references for table.</summary>
+        /// <param name="dbConn">The db conn.</param>
+        /// <param name="dbTable">The db table.</param>
+        protected virtual void GetForeignKeyReferencesForTable(DbConnection dbConn, DbModelTable dbTable)
+        {
+            // foreach (DbModelColumn column in dbTable.Columns)
+            // {
+            // // KF info for DB's varies widley, needs to be implemented by derived class
+            // column.ForeignKeyReference = DbModelForeignKeyReference.NullForeignKeyReference;
+            // }
+        }
+
+        /// <summary>The get table key information.</summary>
+        /// <param name="dbConn">The database connection.</param>
+        /// <param name="schema">The schema.</param>
+        /// <param name="name">The name of the table.</param>
+        /// <returns>A <see cref="DataTable"/> describing the tables columns and key information.</returns>
+        protected virtual DataTable GetTableKeyInfo(DbConnection dbConn, string schema, string name)
+        {
+            DataTable schemaTableKeyInfo = null;
+            try
+            {
+                using (DbCommand command = dbConn.CreateCommand())
+                {
+                    string tableName = Utility.RenderSafeSchemaObjectName(schema, name);
+                    command.CommandText = "SELECT * FROM " + MakeSqlFriendly(tableName);
+                    using (DbDataReader reader = command.ExecuteReader(CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo))
+                    {
+                        schemaTableKeyInfo = reader.GetSchemaTable();
+                    }
+                }
+            }
+            catch (Exception exp)
+            {
+                // Generic catch all - not all provoders stick to the DbException base:
+                Debug.WriteLine(GetType().FullName + " ERROR: " + exp.Message);
+            }
+
+            return schemaTableKeyInfo;
+        }
+
+        /// <summary>The make sql friendly.</summary>
+        /// <param name="name">The name.</param>
+        /// <returns>The make sql friendly.</returns>
+        protected virtual string MakeSqlFriendly(string name)
+        {
+            return Utility.MakeSqlFriendly(name);
+        }
+
+        /// <summary>The process foreign key references for table.</summary>
+        /// <param name="dbConn">The db conn.</param>
+        /// <param name="dbTable">The db table.</param>
+        protected virtual void ProcessForeignKeyReferencesForTable(DbConnection dbConn, DbModelTable dbTable)
+        {
+        }
+
+
+        /// <summary>The safe get bool.</summary>
+        /// <param name="row">The row.</param>
+        /// <param name="columnName">The column name.</param>
+        /// <returns>The safe get bool.</returns>
+        protected bool SafeGetBool(DataRow row, string columnName)
+        {
+            if (row.Table.Columns.Contains(columnName) && !row.IsNull(columnName))
+            {
+                string value = row[columnName].ToString();
+                switch (value.ToLower())
+                {
+                    case "no":
+                    case "false":
+                        return false;
+
+                    case "yes":
+                    case "true":
+                        return true;
+                }
+            }
+
+            return false;
+        }
+
+        /// <summary>The safe get int.</summary>
+        /// <param name="row">The row.</param>
+        /// <param name="columnName">The column name.</param>
+        /// <returns>The safe get int.</returns>
+        protected virtual int SafeGetInt(DataRow row, string columnName)
+        {
+            try
+            {
+                int result = -1;
+
+                if (row.Table.Columns.Contains(columnName) && !row.IsNull(columnName))
+                {
+                    result = Convert.ToInt32(row[columnName]);
+                }
+
+                return result;
+            }
+            catch (OverflowException)
+            {
+                // In Oracle Maximum size for column is larger than Max Int32, instead of changing return value, just coerce on Max.Int32.
+
+                return Int32.MaxValue;
+
+            }
+
+        }
+
+        /// <summary>The safe get string.</summary>
+        /// <param name="row">The row.</param>
+        /// <param name="columnName">The column name.</param>
+        /// <returns>The safe get string.</returns>
+        protected string SafeGetString(DataRow row, string columnName)
+        {
+            string result = string.Empty;
+
+            if (row.Table.Columns.Contains(columnName) && !row.IsNull(columnName))
+            {
+                result = row[columnName].ToString();
+            }
+
+            return result;
+        }
+    }
+}
\ No newline at end of file
Added +67 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/ISqlWriter.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/ISqlWriter.cs
new file mode 100644
index 0000000..fcb11da
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/ISqlWriter.cs
@@ -0,0 +1,67 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System.IO;
+
+namespace MiniSqlQuery.Core.DbModel
+{
+    /// <summary>An SQL Writer interface.</summary>
+    public interface ISqlWriter
+    {
+        /// <summary>Gets or sets a value indicating whether IncludeComments.</summary>
+        /// <value>The include comments.</value>
+        bool IncludeComments { get; set; }
+
+        /// <summary>
+        /// Gets or sets a value indicating whether to include read-only columns in the export SQL.
+        /// </summary>
+        /// <value>
+        /// 	<c>true</c> if including read-only columns in the export; otherwise, <c>false</c>.
+        /// </value>
+        bool IncludeReadOnlyColumnsInExport { get; set; }
+
+        /// <summary>Gets or sets a value indicating whether InsertLineBreaksBetweenColumns.</summary>
+        /// <value>The insert line breaks between columns.</value>
+        bool InsertLineBreaksBetweenColumns { get; set; }
+
+        /// <summary>The write create.</summary>
+        /// <param name="writer">The writer.</param>
+        /// <param name="column">The column.</param>
+        void WriteCreate(TextWriter writer, DbModelColumn column);
+
+        /// <summary>The write delete.</summary>
+        /// <param name="writer">The writer.</param>
+        /// <param name="tableOrView">The table or view.</param>
+        void WriteDelete(TextWriter writer, DbModelTable tableOrView);
+
+        /// <summary>The write insert.</summary>
+        /// <param name="writer">The writer.</param>
+        /// <param name="tableOrView">The table or view.</param>
+        void WriteInsert(TextWriter writer, DbModelTable tableOrView);
+
+        /// <summary>The write select.</summary>
+        /// <param name="writer">The writer.</param>
+        /// <param name="tableOrView">The table or view.</param>
+        void WriteSelect(TextWriter writer, DbModelTable tableOrView);
+
+        /// <summary>The write select count.</summary>
+        /// <param name="writer">The writer.</param>
+        /// <param name="tableOrView">The table or view.</param>
+        void WriteSelectCount(TextWriter writer, DbModelTable tableOrView);
+
+        /// <summary>The write summary.</summary>
+        /// <param name="writer">The writer.</param>
+        /// <param name="column">The column.</param>
+        void WriteSummary(TextWriter writer, DbModelColumn column);
+
+        /// <summary>The write update.</summary>
+        /// <param name="writer">The writer.</param>
+        /// <param name="tableOrView">The table or view.</param>
+        void WriteUpdate(TextWriter writer, DbModelTable tableOrView);
+    }
+}
\ No newline at end of file
Added +43 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/OleDbSchemaService.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/OleDbSchemaService.cs
new file mode 100644
index 0000000..9054018
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/OleDbSchemaService.cs
@@ -0,0 +1,43 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Collections.Generic;
+using System.Data.Common;
+
+namespace MiniSqlQuery.Core.DbModel
+{
+    /// <summary>The ole db schema service.</summary>
+    public class OleDbSchemaService : GenericSchemaService
+    {
+        /// <summary>The get db types.</summary>
+        /// <param name="connection">The connection.</param>
+        /// <returns></returns>
+        public override Dictionary<string, DbModelType> GetDbTypes(DbConnection connection)
+        {
+            var types = base.GetDbTypes(connection);
+
+            foreach (var dbType in types.Values)
+            {
+                if (dbType.CreateFormat.Length == 0)
+                {
+                    // probably MS Access
+                    switch (dbType.Name)
+                    {
+                        case "VarChar":
+                            dbType.CreateFormat = "VarChar({0})";
+                            break;
+                        case "VarBinary":
+                            dbType.CreateFormat = "VarBinary({0})";
+                            break;
+                    }
+                }
+            }
+
+            return types;
+        }
+    }
+}
\ No newline at end of file
Added +101 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/OracleSchemaService.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/OracleSchemaService.cs
new file mode 100644
index 0000000..74f9472
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/OracleSchemaService.cs
@@ -0,0 +1,101 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.Common;
+
+namespace MiniSqlQuery.Core.DbModel
+{
+    public class OracleSchemaService : GenericSchemaService
+    {
+
+        protected override int SafeGetInt(DataRow row, string columnName)
+        {
+            try
+            {
+                return base.SafeGetInt(row, columnName);
+            }
+            catch (OverflowException)
+            {
+                // Coerce to Max.Int32
+                return Int32.MaxValue;
+            }
+        }
+
+        public override DbModelInstance GetDbObjectModel(string connection)
+        {
+
+            //_connection = connection;
+
+            DbModelInstance model = new DbModelInstance();
+            DbProviderFactory factory = DbProviderFactories.GetFactory(ProviderName);
+
+            using (DbConnection dbConn = factory.CreateConnection())
+            {
+                dbConn.ConnectionString = connection;
+                dbConn.Open();
+
+                DataTable tables = dbConn.GetSchema("Tables");
+                Dictionary<string, DbModelType> dbTypes = GetDbTypes(dbConn);
+                model.Types = dbTypes;
+                model.ProviderName = ProviderName;
+                model.ConnectionString = connection;
+
+                if (tables == null)
+                {
+                    return model;
+                }
+
+                DataView tablesDV = new DataView(tables, "", "OWNER, TABLE_NAME", DataViewRowState.CurrentRows);
+
+                foreach (DataRowView row in tablesDV)
+                {
+                    string schemaName = SafeGetString(row.Row, "OWNER");
+                    string tableName = SafeGetString(row.Row, "TABLE_NAME");
+
+                    DbModelTable dbTable = new DbModelTable { Schema = schemaName, Name = tableName };
+                    model.Add(dbTable);
+
+                    DataTable schemaTableKeyInfo = GetTableKeyInfo(dbConn, schemaName, tableName);
+                    GetColumnsForTable(dbTable, schemaTableKeyInfo, dbTypes);
+                }
+
+                DataTable views = dbConn.GetSchema("Views");
+                DataView viewsDV = new DataView(views, "", "OWNER, VIEW_NAME", DataViewRowState.CurrentRows);
+                foreach (DataRowView row in viewsDV)
+                {
+                    string schemaName = SafeGetString(row.Row, "OWNER");
+                    string tableName = SafeGetString(row.Row, "VIEW_NAME");
+
+                    DbModelView dbTable = new DbModelView { Schema = schemaName, Name = tableName };
+                    model.Add(dbTable);
+
+                    DataTable schemaTableKeyInfo = GetTableKeyInfo(dbConn, schemaName, tableName);
+                    GetColumnsForTable(dbTable, schemaTableKeyInfo, dbTypes);
+                }
+
+                // build FK relationships 
+                if (model.Tables != null)
+                {
+                    foreach (DbModelTable table in model.Tables)
+                    {
+                        GetForeignKeyReferencesForTable(dbConn, table);
+                        ProcessForeignKeyReferencesForTable(dbConn, table);
+                    }
+                }
+
+                // build FK relationships
+                if (model.Views != null)
+                {
+                    foreach (DbModelView view in model.Views)
+                    {
+                        GetForeignKeyReferencesForTable(dbConn, view);
+                        ProcessForeignKeyReferencesForTable(dbConn, view);
+                    }
+                }
+            }
+
+            return model;
+        }
+
+    }
+}
Added +323 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/SqlCeSchemaService.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/SqlCeSchemaService.cs
new file mode 100644
index 0000000..65fec8a
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/SqlCeSchemaService.cs
@@ -0,0 +1,323 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.Common;
+
+namespace MiniSqlQuery.Core.DbModel
+{
+    /// <summary>SQL Compact Edition schema service.
+    /// Made possible with contributions form ExportSQLCE project.
+    /// http://exportsqlce.codeplex.com/
+    /// http://erikej.blogspot.com/</summary>
+    public class SqlCeSchemaService : GenericSchemaService
+    {
+        /// <summary>The ma x_ binar y_ colum n_ size.</summary>
+        internal static readonly int MAX_BINARY_COLUMN_SIZE = 8000;
+
+        /// <summary>The ma x_ imag e_ colum n_ size.</summary>
+        internal static readonly int MAX_IMAGE_COLUMN_SIZE = 1073741823;
+
+        /// <summary>The ma x_ ncha r_ colum n_ size.</summary>
+        internal static readonly int MAX_NCHAR_COLUMN_SIZE = 4000;
+
+        /// <summary>The ma x_ ntex t_ colum n_ size.</summary>
+        internal static readonly int MAX_NTEXT_COLUMN_SIZE = 536870911;
+
+        /// <summary>The _connection.</summary>
+        private string _connection;
+
+        /// <summary>The get db object model.</summary>
+        /// <param name="connection">The connection.</param>
+        /// <returns></returns>
+        public override DbModelInstance GetDbObjectModel(string connection)
+        {
+            _connection = connection;
+
+            DbModelInstance model = new DbModelInstance();
+            DbProviderFactory factory = DbProviderFactories.GetFactory(ProviderName);
+
+            using (DbConnection dbConn = factory.CreateConnection())
+            {
+                dbConn.ConnectionString = connection;
+                dbConn.Open();
+
+                QueryTableNames(dbConn, model);
+                Dictionary<string, DbModelType> dbTypes = GetDbTypes(dbConn);
+                model.Types = dbTypes;
+                model.ProviderName = ProviderName;
+                model.ConnectionString = _connection;
+
+                // build all table info
+                foreach (DbModelTable table in model.Tables)
+                {
+                    DataTable schemaTableKeyInfo = GetTableKeyInfo(dbConn, null, table.Name);
+                    GetColumnsForTable(table, schemaTableKeyInfo, dbTypes);
+                }
+
+                // build FK relationships
+                foreach (DbModelTable table in model.Tables)
+                {
+                    GetForeignKeyReferencesForTable(dbConn, table);
+                    ProcessForeignKeyReferencesForTable(dbConn, table);
+                }
+
+                return model;
+            }
+        }
+
+        /// <summary>Gets the db types for the SQL CE provider.</summary>
+        /// <param name="connection">The connection (not required).</param>
+        /// <returns></returns>
+        public override Dictionary<string, DbModelType> GetDbTypes(DbConnection connection)
+        {
+            Dictionary<string, DbModelType> dbTypes = new Dictionary<string, DbModelType>();
+            string dataTypesSql = "SELECT * FROM information_schema.provider_types";
+            using (var cmd = connection.CreateCommand())
+            {
+                cmd.CommandText = dataTypesSql;
+                cmd.CommandType = CommandType.Text;
+                using (var reader = cmd.ExecuteReader())
+                {
+                    while (reader.Read())
+                    {
+                        string typeName = (string)reader["TYPE_NAME"];
+                        int columnSize = Convert.ToInt32(reader["COLUMN_SIZE"]);
+                        DbModelType dbType = new DbModelType(typeName, columnSize);
+
+                        dbType.CreateParameters = Convert.ToString(reader["CREATE_PARAMS"]);
+                        dbType.LiteralPrefix = Convert.ToString(reader["LITERAL_PREFIX"]);
+                        dbType.LiteralSuffix = Convert.ToString(reader["LITERAL_SUFFIX"]);
+                        dbType.ProviderDbType = Convert.ToString(reader["DATA_TYPE"]);
+
+                        FixCreateFormat(dbType);
+                        FixMaxLengths(dbType);
+                        AssignSystemTypes(dbType);
+
+                        dbTypes.Add(typeName, dbType);
+                    }
+                }
+            }
+
+            return dbTypes;
+        }
+
+        /// <summary>The get data type name for column.</summary>
+        /// <param name="dbTable">The db table.</param>
+        /// <param name="schemaTableKeyInfo">The schema table key info.</param>
+        /// <param name="columnRow">The column row.</param>
+        /// <returns>The get data type name for column.</returns>
+        protected override string GetDataTypeNameForColumn(DbModelTable dbTable, DataTable schemaTableKeyInfo, DataRow columnRow)
+        {
+            return SafeGetString(columnRow, "ProviderType");
+        }
+
+        /// <summary>The get foreign key references for table.</summary>
+        /// <param name="dbConn">The db conn.</param>
+        /// <param name="dbTable">The db table.</param>
+        protected override void GetForeignKeyReferencesForTable(DbConnection dbConn, DbModelTable dbTable)
+        {
+            ForeignKeyInformationAvailable = true;
+            try
+            {
+                using (var cmd = dbConn.CreateCommand())
+                {
+                    cmd.CommandText =
+                        string.Format(
+                            @"SELECT 
+	KCU1.TABLE_NAME AS FK_TABLE_NAME,  
+	KCU1.CONSTRAINT_NAME AS FK_CONSTRAINT_NAME, 
+	KCU1.COLUMN_NAME AS FK_COLUMN_NAME,
+	KCU2.TABLE_NAME AS UQ_TABLE_NAME, 
+	KCU2.CONSTRAINT_NAME AS UQ_CONSTRAINT_NAME, 
+	KCU2.COLUMN_NAME AS UQ_COLUMN_NAME, 
+	RC.UPDATE_RULE, 
+	RC.DELETE_RULE, 
+	KCU2.ORDINAL_POSITION AS UQ_ORDINAL_POSITION, 
+	KCU1.ORDINAL_POSITION AS FK_ORDINAL_POSITION
+FROM 
+	INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC 
+		JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU1 ON KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME 
+			JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2 ON  KCU2.CONSTRAINT_NAME =  RC.UNIQUE_CONSTRAINT_NAME AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION AND KCU2.TABLE_NAME = RC.UNIQUE_CONSTRAINT_TABLE_NAME 
+WHERE KCU1.TABLE_NAME = '{0}'
+ORDER BY 
+	FK_TABLE_NAME, 
+	FK_CONSTRAINT_NAME, 
+	FK_ORDINAL_POSITION
+",
+                            dbTable.Name);
+                    cmd.CommandType = CommandType.Text;
+                    using (var dr = cmd.ExecuteReader())
+                    {
+                        while (dr.Read())
+                        {
+                            dbTable.Constraints.Add(new DbModelConstraint
+                            {
+                                ConstraintTableName = dr.GetString(0),
+                                ConstraintName = dr.GetString(1),
+                                ColumnName = dr.GetString(2),
+                                UniqueConstraintTableName = dr.GetString(3),
+                                UniqueConstraintName = dr.GetString(4),
+                                UniqueColumnName = dr.GetString(5),
+                                UpdateRule = dr.GetString(6),
+                                DeleteRule = dr.GetString(7)
+                            });
+                        }
+                    }
+                }
+            }
+            catch (DbException)
+            {
+                ForeignKeyInformationAvailable = false;
+            }
+        }
+
+        /// <summary>The process foreign key references for table.</summary>
+        /// <param name="dbConn">The db conn.</param>
+        /// <param name="dbTable">The db table.</param>
+        protected override void ProcessForeignKeyReferencesForTable(DbConnection dbConn, DbModelTable dbTable)
+        {
+            // todo - check GetGroupForeingKeys
+            foreach (DbModelConstraint constraint in dbTable.Constraints)
+            {
+                var column = dbTable.Columns.Find(c => c.Name == constraint.ColumnName);
+                var refTable = dbTable.ParentDb.FindTable(
+                    Utility.RenderSafeSchemaObjectName(constraint.UniqueConstraintTableSchema, constraint.UniqueConstraintTableName));
+                var refColumn = refTable.Columns.Find(c => c.Name == constraint.UniqueColumnName);
+                DbModelForeignKeyReference fk = new DbModelForeignKeyReference(column, refTable, refColumn);
+                fk.UpdateRule = constraint.UpdateRule;
+                fk.DeleteRule = constraint.DeleteRule;
+                column.ForeignKeyReference = fk;
+            }
+        }
+
+        /// <summary>The assign system types.</summary>
+        /// <param name="dbType">The db type.</param>
+        private void AssignSystemTypes(DbModelType dbType)
+        {
+            switch (dbType.Name.ToLower())
+            {
+                case "smallint":
+                    dbType.SystemType = typeof(byte);
+                    break;
+
+                case "int":
+                    dbType.SystemType = typeof(int);
+                    break;
+
+                case "tinyint":
+                    dbType.SystemType = typeof(byte);
+                    break;
+
+                case "bigint":
+                    dbType.SystemType = typeof(long);
+                    break;
+
+                case "float":
+                    dbType.SystemType = typeof(double); // yes, float is double ;-)
+                    break;
+
+                case "numeric":
+                case "money":
+                case "real":
+                    dbType.SystemType = typeof(decimal);
+                    break;
+
+                case "bit":
+                    dbType.SystemType = typeof(bool);
+                    break;
+
+                case "uniqueidentifier":
+                    dbType.SystemType = typeof(Guid);
+                    break;
+
+                case "nvarchar":
+                case "nchar":
+                case "ntext":
+                    dbType.SystemType = typeof(string);
+                    break;
+
+                case "datetime":
+                    dbType.SystemType = typeof(DateTime);
+                    break;
+
+                case "varbinary":
+                case "binary":
+                case "image":
+                case "rowversion":
+                    dbType.SystemType = typeof(byte[]);
+                    break;
+            }
+        }
+
+        /// <summary>The fix create format.</summary>
+        /// <param name="dbType">The db type.</param>
+        private void FixCreateFormat(DbModelType dbType)
+        {
+            switch (dbType.Name.ToLower())
+            {
+                case "nchar":
+                case "nvarchar":
+                case "binary":
+                case "varbinary":
+                    dbType.CreateFormat = dbType.Name.ToLower() + "({0})";
+                    break;
+
+                case "decimal":
+                case "numeric":
+                    dbType.CreateFormat = dbType.Name.ToLower() + "({0}, {1})";
+                    break;
+            }
+        }
+
+        /// <summary>The fix max lengths.</summary>
+        /// <param name="dbType">The db type.</param>
+        private void FixMaxLengths(DbModelType dbType)
+        {
+            switch (dbType.Name.ToLower())
+            {
+                case "nchar":
+                case "nvarchar":
+                    dbType.Length = MAX_NCHAR_COLUMN_SIZE;
+                    break;
+                case "ntext":
+                    dbType.Length = MAX_NTEXT_COLUMN_SIZE;
+                    break;
+                case "binary":
+                case "varbinary":
+                    dbType.Length = MAX_BINARY_COLUMN_SIZE;
+                    break;
+                case "image":
+                    dbType.Length = MAX_IMAGE_COLUMN_SIZE;
+                    break;
+            }
+        }
+
+        /// <summary>The query table names.</summary>
+        /// <param name="dbConn">The db conn.</param>
+        /// <param name="model">The model.</param>
+        private void QueryTableNames(DbConnection dbConn, DbModelInstance model)
+        {
+            using (var cmd = dbConn.CreateCommand())
+            {
+                cmd.CommandText = "SELECT table_name FROM information_schema.tables WHERE TABLE_TYPE = N'TABLE'";
+                cmd.CommandType = CommandType.Text;
+                using (var reader = cmd.ExecuteReader())
+                {
+                    while (reader.Read())
+                    {
+                        DbModelTable table = new DbModelTable();
+                        table.Name = (string)reader["table_name"];
+                        model.Add(table);
+                    }
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
Added +105 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/SqlClientSchemaService.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/SqlClientSchemaService.cs
new file mode 100644
index 0000000..13a98ac
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/SqlClientSchemaService.cs
@@ -0,0 +1,105 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Collections.Generic;
+using System.Data;
+using System.Data.Common;
+using System.Data.SqlClient;
+
+namespace MiniSqlQuery.Core.DbModel
+{
+    /// <summary>The sql client schema service.</summary>
+    public class SqlClientSchemaService : GenericSchemaService
+    {
+        /// <summary>The get db types.</summary>
+        /// <param name="connection">The connection.</param>
+        /// <returns></returns>
+        public override Dictionary<string, DbModelType> GetDbTypes(DbConnection connection)
+        {
+            var types = base.GetDbTypes(connection);
+
+            var date = types["datetime"];
+            date.LiteralPrefix = "'";
+            date.LiteralSuffix = "'";
+
+            return types;
+        }
+
+        /// <summary>The get foreign key references for table.</summary>
+        /// <param name="dbConn">The db conn.</param>
+        /// <param name="dbTable">The db table.</param>
+        protected override void GetForeignKeyReferencesForTable(DbConnection dbConn, DbModelTable dbTable)
+        {
+            ForeignKeyInformationAvailable = true;
+            try
+            {
+                using (var cmd = dbConn.CreateCommand())
+                {
+                    cmd.CommandText = string.Format(
+                        @"SELECT 
+	OBJECT_SCHEMA_NAME(f.parent_object_id) AS TableSchemaName,
+	OBJECT_NAME(f.parent_object_id) AS TableName,
+	COL_NAME(fc.parent_object_id, fc.parent_column_id) AS ColumnName,
+	f.name AS ForeignKeyName,
+	OBJECT_SCHEMA_NAME(f.referenced_object_id) AS ReferenceTableSchemaName,
+	OBJECT_NAME(f.referenced_object_id) AS ReferenceTableName,
+	COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS ReferenceColumnName,
+	f.update_referential_action_desc,
+	f.delete_referential_action_desc
+FROM 
+	sys.foreign_keys AS f INNER JOIN sys.foreign_key_columns AS fc
+		ON f.OBJECT_ID = fc.constraint_object_id
+WHERE OBJECT_SCHEMA_NAME(f.parent_object_id) = '{0}' AND OBJECT_NAME(f.parent_object_id) = '{1}'
+",
+                        dbTable.Schema, dbTable.Name);
+                    cmd.CommandType = CommandType.Text;
+                    using (var dr = cmd.ExecuteReader())
+                    {
+                        while (dr.Read())
+                        {
+                            dbTable.Constraints.Add(new DbModelConstraint
+                            {
+                                ConstraintTableSchema = (string)dr["TableSchemaName"],
+                                ConstraintTableName = (string)dr["TableName"],
+                                ColumnName = (string)dr["ColumnName"],
+                                ConstraintName = (string)dr["ForeignKeyName"],
+                                UniqueConstraintTableSchema = (string)dr["ReferenceTableSchemaName"],
+                                UniqueConstraintTableName = (string)dr["ReferenceTableName"],
+                                UniqueColumnName = (string)dr["ReferenceColumnName"],
+                                UpdateRule = (string)dr["update_referential_action_desc"],
+                                DeleteRule = (string)dr["delete_referential_action_desc"],
+                            });
+                        }
+                    }
+                }
+            }
+            catch (SqlException)
+            {
+                ForeignKeyInformationAvailable = false;
+            }
+        }
+
+        /// <summary>The process foreign key references for table.</summary>
+        /// <param name="dbConn">The db conn.</param>
+        /// <param name="dbTable">The db table.</param>
+        protected override void ProcessForeignKeyReferencesForTable(DbConnection dbConn, DbModelTable dbTable)
+        {
+            // todo - check GetGroupForeingKeys
+            foreach (DbModelConstraint constraint in dbTable.Constraints)
+            {
+                var column = dbTable.Columns.Find(c => c.Name == constraint.ColumnName);
+                var refTable = dbTable.ParentDb.FindTable(
+                    Utility.RenderSafeSchemaObjectName(constraint.UniqueConstraintTableSchema, constraint.UniqueConstraintTableName));
+                var refColumn = refTable.Columns.Find(c => c.Name == constraint.UniqueColumnName);
+                DbModelForeignKeyReference fk = new DbModelForeignKeyReference(column, refTable, refColumn);
+                fk.UpdateRule = constraint.UpdateRule;
+                fk.DeleteRule = constraint.DeleteRule;
+                column.ForeignKeyReference = fk;
+            }
+        }
+    }
+}
\ No newline at end of file
Added +261 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/SqlWriter.cs b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/SqlWriter.cs
new file mode 100644
index 0000000..9b2be5f
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DbModel/SqlWriter.cs
@@ -0,0 +1,261 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Collections.Generic;
+using System.IO;
+
+namespace MiniSqlQuery.Core.DbModel
+{
+    /// <summary>The sql writer.</summary>
+    public class SqlWriter : ISqlWriter
+    {
+        /// <summary>Initializes a new instance of the <see cref="SqlWriter"/> class.</summary>
+        public SqlWriter()
+        {
+            // todo - format options?
+            IncludeComments = true;
+            InsertLineBreaksBetweenColumns = true;
+        }
+
+        /// <summary>Gets or sets a value indicating whether IncludeComments.</summary>
+        /// <value>The include comments.</value>
+        public bool IncludeComments { get; set; }
+
+        /// <summary>Gets or sets a value indicating whether InsertLineBreaksBetweenColumns.</summary>
+        /// <value>The insert line breaks between columns.</value>
+        public bool InsertLineBreaksBetweenColumns { get; set; }
+
+        /// <summary>
+        /// Gets or sets a value indicating whether to include read-only columns in the export SQL.
+        /// </summary>
+        /// <value>
+        /// 	<c>true</c> if including read-only columns in the export; otherwise, <c>false</c>.
+        /// </value>
+		public bool IncludeReadOnlyColumnsInExport { get; set; }
+
+        /// <summary>The write create.</summary>
+        /// <param name="writer">The writer.</param>
+        /// <param name="column">The column.</param>
+        public virtual void WriteCreate(TextWriter writer, DbModelColumn column)
+        {
+            writer.Write("{0} {1} ", MakeSqlFriendly(column.Name), column.DbType.Summary);
+
+            if (!column.Nullable)
+            {
+                writer.Write("not ");
+            }
+
+            writer.Write("null");
+        }
+
+        /// <summary>The write delete.</summary>
+        /// <param name="writer">The writer.</param>
+        /// <param name="tableOrView">The table or view.</param>
+        public virtual void WriteDelete(TextWriter writer, DbModelTable tableOrView)
+        {
+            writer.WriteLine("DELETE FROM");
+            writer.Write("\t");
+            writer.WriteLine(MakeSqlFriendly(tableOrView.FullName));
+            writer.WriteLine("WHERE");
+
+            for (int i = 0; i < tableOrView.PrimaryKeyColumns.Count; i++)
+            {
+                var column = tableOrView.PrimaryKeyColumns[i];
+                writer.Write("\t{0} = ", MakeSqlFriendly(column.Name));
+                if (i < tableOrView.PrimaryKeyColumns.Count - 1)
+                {
+                    writer.Write(" /*value:{0}*/ AND", column.Name);
+                    writer.WriteLine();
+                }
+                else
+                {
+                    writer.Write("/*value:{0}*/", column.Name);
+                }
+            }
+
+            writer.WriteLine();
+        }
+
+        /// <summary>The write insert.</summary>
+        /// <param name="writer">The writer.</param>
+        /// <param name="tableOrView">The table or view.</param>
+        public virtual void WriteInsert(TextWriter writer, DbModelTable tableOrView)
+        {
+            writer.Write("INSERT INTO ");
+            writer.Write(MakeSqlFriendly(tableOrView.FullName));
+            if (InsertLineBreaksBetweenColumns)
+            {
+                writer.WriteLine();
+                writer.Write("\t");
+            }
+
+            writer.Write("(");
+
+            // get all columns that are "writable" including PKs that are not auto generated (unless specified)
+            List<DbModelColumn> writableColumns = null;
+            if (IncludeReadOnlyColumnsInExport)
+            {
+                writableColumns = tableOrView.Columns;
+            }
+            else
+            {
+                writableColumns = tableOrView.Columns.FindAll(c => c.IsWritable);
+            }
+
+            for (int i = 0; i < writableColumns.Count; i++)
+            {
+                var column = writableColumns[i];
+                writer.Write(MakeSqlFriendly(column.Name));
+                if (i < writableColumns.Count - 1)
+                {
+                    if (InsertLineBreaksBetweenColumns)
+                    {
+                        writer.WriteLine(",");
+                        writer.Write("\t");
+                    }
+                    else
+                    {
+                        writer.Write(", ");
+                    }
+                }
+            }
+
+            writer.WriteLine(")");
+            writer.Write("VALUES");
+            if (InsertLineBreaksBetweenColumns)
+            {
+                writer.WriteLine();
+                writer.Write("\t");
+            }
+
+            writer.Write("(");
+
+            for (int i = 0; i < writableColumns.Count; i++)
+            {
+                var column = writableColumns[i];
+                writer.Write(column.DbType.ToDDLValue(column.Nullable));
+                if (IncludeComments)
+                {
+                    writer.Write(" /*{0},{1}*/", column.Name, column.DbType.Summary);
+                }
+
+                if (i < writableColumns.Count - 1)
+                {
+                    if (InsertLineBreaksBetweenColumns)
+                    {
+                        writer.WriteLine(",");
+                        writer.Write("\t");
+                    }
+                    else
+                    {
+                        writer.Write(", ");
+                    }
+                }
+            }
+
+            writer.WriteLine(")");
+        }
+
+        /// <summary>The write select.</summary>
+        /// <param name="writer">The writer.</param>
+        /// <param name="tableOrView">The table or view.</param>
+        public virtual void WriteSelect(TextWriter writer, DbModelTable tableOrView)
+        {
+            writer.Write("SELECT");
+            writer.WriteLine();
+            for (int i = 0; i < tableOrView.Columns.Count; i++)
+            {
+                writer.Write("\t");
+                writer.Write(MakeSqlFriendly(tableOrView.Columns[i].Name));
+                if (i < tableOrView.Columns.Count - 1)
+                {
+                    writer.Write(",");
+                    writer.WriteLine();
+                }
+            }
+
+            writer.WriteLine();
+            writer.Write("FROM {0}", MakeSqlFriendly(tableOrView.FullName));
+            writer.WriteLine();
+        }
+
+        /// <summary>The write select count.</summary>
+        /// <param name="writer">The writer.</param>
+        /// <param name="tableOrView">The table or view.</param>
+        public virtual void WriteSelectCount(TextWriter writer, DbModelTable tableOrView)
+        {
+            writer.Write("SELECT COUNT(*) FROM {0}", MakeSqlFriendly(tableOrView.FullName));
+            writer.WriteLine();
+        }
+
+        /// <summary>The write summary.</summary>
+        /// <param name="writer">The writer.</param>
+        /// <param name="column">The column.</param>
+        public void WriteSummary(TextWriter writer, DbModelColumn column)
+        {
+            writer.Write("{0} ({1} ", MakeSqlFriendly(column.Name), column.DbType.Summary);
+
+            if (!column.Nullable)
+            {
+                writer.Write("not ");
+            }
+
+            writer.Write("null)");
+        }
+
+        /// <summary>The write update.</summary>
+        /// <param name="writer">The writer.</param>
+        /// <param name="tableOrView">The table or view.</param>
+        public virtual void WriteUpdate(TextWriter writer, DbModelTable tableOrView)
+        {
+            writer.Write("UPDATE ");
+            writer.WriteLine(MakeSqlFriendly(tableOrView.FullName));
+            writer.WriteLine("SET");
+
+            // get all columns that are "writable" excluding keys that are not auto generated
+            var writableColumns = tableOrView.Columns.FindAll(c => c.IsWritable && !c.IsKey);
+            for (int i = 0; i < writableColumns.Count; i++)
+            {
+                var column = writableColumns[i];
+                writer.Write("\t{0} = {1}", MakeSqlFriendly(column.Name), column.DbType.ToDDLValue(column.Nullable));
+                if (i < writableColumns.Count - 1)
+                {
+                    writer.Write(",");
+                    writer.WriteLine();
+                }
+            }
+
+            writer.WriteLine();
+            writer.WriteLine("WHERE");
+
+            for (int i = 0; i < tableOrView.PrimaryKeyColumns.Count; i++)
+            {
+                var column = tableOrView.PrimaryKeyColumns[i];
+                writer.Write("\t{0} = ", MakeSqlFriendly(column.Name));
+                if (i < tableOrView.PrimaryKeyColumns.Count - 1)
+                {
+                    writer.Write(" /*value:{0},{1}*/ AND", column.Name, column.DbType.Summary);
+                    writer.WriteLine();
+                }
+                else
+                {
+                    writer.Write("/*value:{0},{1}*/", column.Name, column.DbType.Summary);
+                }
+            }
+
+            writer.WriteLine();
+        }
+
+        /// <summary>The make the sql friendly, e.g. "[TableName]".</summary>
+        /// <param name="name">The name of the object.</param>
+        /// <returns>The make sql friendly name.</returns>
+        protected string MakeSqlFriendly(string name)
+        {
+            return Utility.MakeSqlFriendly(name);
+        }
+    }
+}
\ No newline at end of file
Added +22 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/DefaultConnectionDefinitionFile.xml b/minisqlquery-master/src/MiniSqlQuery.Core/DefaultConnectionDefinitionFile.xml
new file mode 100644
index 0000000..a9019f0
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/DefaultConnectionDefinitionFile.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<DbConnectionDefinitionList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+	<Definitions>
+		<DbConnectionDefinition>
+			<Name>Default - MSSQL Master@localhost</Name>
+			<ProviderName>System.Data.SqlClient</ProviderName>
+			<ConnectionString>Server=.; Database=master; Integrated Security=SSPI</ConnectionString>
+		</DbConnectionDefinition>
+		<DbConnectionDefinition>
+			<Name>Sample MSSQL Northwind SQL Express</Name>
+			<ProviderName>System.Data.SqlClient</ProviderName>
+			<ConnectionString>Server=.\sqlexpress; Database=Northwind; Integrated Security=SSPI</ConnectionString>
+		</DbConnectionDefinition>
+		<DbConnectionDefinition>
+			<Name>Sample Access DB Connection</Name>
+			<ProviderName>System.Data.OleDb</ProviderName>
+			<ConnectionString>Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\SomeDirectory\access.mdb</ConnectionString>
+		</DbConnectionDefinition>
+	</Definitions>
+	<DefaultName>Default - MSSQL Master@localhost</DefaultName>
+</DbConnectionDefinitionList>
\ No newline at end of file
Added +57 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/FileEditorDescriptor.cs b/minisqlquery-master/src/MiniSqlQuery.Core/FileEditorDescriptor.cs
new file mode 100644
index 0000000..97c66be
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/FileEditorDescriptor.cs
@@ -0,0 +1,57 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// <para>The file editor descriptor.</para>
+    /// <para>Creates a relationship between file extensions and a type of editor that supports for example XML syntax highlighting.</para>
+    /// </summary>
+    public class FileEditorDescriptor
+    {
+        /// <summary>Initializes a new instance of the <see cref="FileEditorDescriptor"/> class.</summary>
+        public FileEditorDescriptor()
+        {
+        }
+
+        /// <summary>Initializes a new instance of the <see cref="FileEditorDescriptor"/> class.</summary>
+        /// <param name="name">The name for display purposes, e.g. "HTML Editor".</param>
+        /// <param name="editorKeyName">The editor key name, can be used by the application to resolve an editor by name.</param>
+        /// <param name="extensions">The file extensions to support for this editor (e.g. "txt").</param>
+        /// <remarks>
+        /// <example>
+        /// <code>var fd = new FileEditorDescriptor("HTML Editor", "htm-editor", "htm", "html");</code>
+        /// </example>
+        /// </remarks>
+        public FileEditorDescriptor(string name, string editorKeyName, params string[] extensions)
+        {
+            Name = name;
+            EditorKeyName = editorKeyName;
+            Extensions = extensions;
+        }
+
+        /// <summary>Gets or sets EditorKeyName.</summary>
+        /// <value>The editor key name.</value>
+        public string EditorKeyName { get; set; }
+
+        /// <summary>Gets or sets Extensions.</summary>
+        /// <value>The extensions.</value>
+        public string[] Extensions { get; set; }
+
+        /// <summary>Gets or sets Name.</summary>
+        /// <value>The display name of the descriptor.</value>
+        public string Name { get; set; }
+
+        /// <summary>Converts the descriptor to a string.</summary>
+        /// <returns>A string represntation of the descriptor.</returns>
+        public override string ToString()
+        {
+            return string.Format("{0} ({1})", Name, string.Join("; ", Extensions));
+        }
+    }
+}
\ No newline at end of file
Added +126 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/FileEditorResolverService.cs b/minisqlquery-master/src/MiniSqlQuery.Core/FileEditorResolverService.cs
new file mode 100644
index 0000000..c176954
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/FileEditorResolverService.cs
@@ -0,0 +1,126 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System.Collections.Generic;
+using System.IO;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	Given a file name or extention the service will work out the most appropriate editor to use.
+    /// </summary>
+    /// <remarks>
+    /// 	The editors need to be registered using the <see cref = "Register" /> method.
+    /// 	<example>
+    /// 		<code>
+    /// 			IEditor editor = resolver.ResolveEditorInstance("c:\data.sql");
+    /// 			// will resolve to the SQL editor
+    /// 
+    /// 			IEditor editor = resolver.ResolveEditorInstance("c:\foo.txt");
+    /// 			// will resolve to the basic text editor</code>
+    /// 	</example>
+    /// </remarks>
+    public class FileEditorResolverService : IFileEditorResolver
+    {
+        /// <summary>
+        /// 	The extention map of files types to descriptors.
+        /// </summary>
+        private readonly Dictionary<string, FileEditorDescriptor> _extentionMap;
+
+        /// <summary>
+        /// 	The file editor descriptors.
+        /// </summary>
+        private readonly List<FileEditorDescriptor> _fileEditorDescriptors;
+
+        /// <summary>
+        /// 	The application services.
+        /// </summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "FileEditorResolverService" /> class.
+        /// </summary>
+        /// <param name = "services">The application services.</param>
+        public FileEditorResolverService(IApplicationServices services)
+        {
+            _services = services;
+            _extentionMap = new Dictionary<string, FileEditorDescriptor>();
+            _fileEditorDescriptors = new List<FileEditorDescriptor>();
+        }
+
+        /// <summary>
+        /// 	Gets an array of the file descriptiors.
+        /// </summary>
+        /// <returns>An array of <see cref = "FileEditorDescriptor" /> objects.</returns>
+        public FileEditorDescriptor[] GetFileTypes()
+        {
+            return _fileEditorDescriptors.ToArray();
+        }
+
+        /// <summary>
+        /// 	Registers the specified file editor descriptor.
+        /// 	It is recommended to use the <see cref = "IApplicationServices.RegisterEditor{TEditor}" /> method to
+        /// 	set up the container correctly.
+        /// </summary>
+        /// <param name = "fileEditorDescriptor">The file editor descriptor.</param>
+        public void Register(FileEditorDescriptor fileEditorDescriptor)
+        {
+            _fileEditorDescriptors.Add(fileEditorDescriptor);
+            if (fileEditorDescriptor.Extensions == null || fileEditorDescriptor.Extensions.Length == 0)
+            {
+                _extentionMap.Add("*", fileEditorDescriptor);
+            }
+            else
+            {
+                // create a map of all ext to editors
+                foreach (string extention in fileEditorDescriptor.Extensions)
+                {
+                    _extentionMap.Add(extention, fileEditorDescriptor);
+                }
+            }
+        }
+
+        /// <summary>
+        /// 	Resolves the editor instance from the container based on the filename.
+        /// </summary>
+        /// <param name = "filename">The filename.</param>
+        /// <returns>An editor.</returns>
+        public IEditor ResolveEditorInstance(string filename)
+        {
+            string ext = Path.GetExtension(filename);
+            string editorName = ResolveEditorNameByExtension(ext);
+            return _services.Resolve<IEditor>(editorName);
+        }
+
+        /// <summary>
+        /// 	Works out the "name" of the editor to use based on the <paramref name = "extension" />.
+        /// </summary>
+        /// <param name = "extension">The extention ("sql", "txt"/".txt" etc).</param>
+        /// <returns>The name of an editor in the container.</returns>
+        public string ResolveEditorNameByExtension(string extension)
+        {
+            string editorName = _extentionMap["*"].EditorKeyName;
+
+            if (extension != null)
+            {
+                if (extension.StartsWith("."))
+                {
+                    extension = extension.Substring(1);
+                }
+
+                // is there a specific editor for this file type
+                if (_extentionMap.ContainsKey(extension))
+                {
+                    editorName = _extentionMap[extension].EditorKeyName;
+                }
+            }
+
+            return editorName;
+        }
+    }
+}
\ No newline at end of file
Added +101 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/FindReplaceTextRequest.cs b/minisqlquery-master/src/MiniSqlQuery.Core/FindReplaceTextRequest.cs
new file mode 100644
index 0000000..8aed6fe
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/FindReplaceTextRequest.cs
@@ -0,0 +1,101 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	A class that encapsulates a "find text" request, storing the position
+    /// </summary>
+    public class FindTextRequest
+    {
+        /// <summary>
+        /// 	The _replace value.
+        /// </summary>
+        private static string _replaceValue;
+
+        /// <summary>
+        /// 	The _search value.
+        /// </summary>
+        private static string _searchValue;
+
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "FindTextRequest" /> class. Creates a new request using the specified <paramref name = "textProvider" /> for searching.
+        /// </summary>
+        /// <param name = "textProvider">The search provider for this request,</param>
+        public FindTextRequest(IFindReplaceProvider textProvider)
+            : this(textProvider, null)
+        {
+        }
+
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "FindTextRequest" /> class. Creates a new request using the specified <paramref name = "textProvider" /> for searching.
+        /// </summary>
+        /// <param name = "textProvider">The search provider for this request,</param>
+        /// <param name = "searchValue">The text to be searched on.</param>
+        public FindTextRequest(IFindReplaceProvider textProvider, string searchValue)
+        {
+            TextProvider = textProvider;
+            if (searchValue != null)
+            {
+                SearchValue = searchValue;
+            }
+
+            Position = 0;
+            StringComparison = StringComparison.CurrentCultureIgnoreCase;
+        }
+
+        /// <summary>
+        /// 	Gets or sets the position of the currently "found" text (or the starting position of the search).
+        /// </summary>
+        /// <value>The position.</value>
+        public int Position { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets the text replace value (shared value).
+        /// </summary>
+        /// <value>The replace value.</value>
+        public string ReplaceValue
+        {
+            get { return _replaceValue; }
+            set { _replaceValue = value; }
+        }
+
+        /// <summary>
+        /// 	Gets or sets the search text (shared value).
+        /// </summary>
+        /// <value>The search value.</value>
+        public string SearchValue
+        {
+            get { return _searchValue; }
+            set { _searchValue = value; }
+        }
+
+        /*
+		/// <summary>
+		/// If true, signals the <see cref="TextProvider"/> to search "up", otherwise "down".
+		/// </summary>
+		/// <value>True to search up, false for down (the default).</value>
+		public bool SearchUp { get; set; }
+		*/
+
+        /// <summary>
+        /// 	Gets or sets the string comparison settings, e.g. case insensitive.
+        /// </summary>
+        /// <value>The string comparison.</value>
+        public StringComparison StringComparison { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets the search provider. A search request is conducted by the provider, different providers
+        /// 	can yield different results, for example plain text or a regular expression searcher.
+        /// </summary>
+        /// <value>The text provider.</value>
+        public IFindReplaceProvider TextProvider { get; set; }
+    }
+}
\ No newline at end of file
Added +50 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Forms/BatchQuerySelectForm.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Forms/BatchQuerySelectForm.cs
new file mode 100644
index 0000000..3d3cffa
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Forms/BatchQuerySelectForm.cs
@@ -0,0 +1,50 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Forms
+{
+    /// <summary>Used as a modal dialog, a <see cref="QueryBatch"/> is supplied and the used can 
+    /// select one of the result sets. <see cref="DialogResult"/> is set to <see cref="DialogResult.OK"/> on an OK exit.</summary>
+    public partial class BatchQuerySelectForm : Form
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="BatchQuerySelectForm"/> class.
+        /// </summary>
+        public BatchQuerySelectForm()
+        {
+            InitializeComponent();
+        }
+
+        /// <summary>
+        /// Gets a refernce to the selected query.
+        /// </summary>
+        /// <value>The selected query.</value>
+        public Query SelectedQuery
+        {
+            get { return batchQuerySelectControl1.SelectedQuery; }
+        }
+
+        /// <summary>Fills the list with the named batch results.</summary>
+        /// <param name="batch">The batch.</param>
+        public void Fill(QueryBatch batch)
+        {
+            batchQuerySelectControl1.Fill(batch);
+        }
+
+        /// <summary>The btn ok_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void btnOk_Click(object sender, EventArgs e)
+        {
+            DialogResult = DialogResult.OK;
+            Close();
+        }
+    }
+}
\ No newline at end of file
Added +107 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Forms/BatchQuerySelectForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Forms/BatchQuerySelectForm.Designer.cs
new file mode 100644
index 0000000..4fac25e
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Forms/BatchQuerySelectForm.Designer.cs
@@ -0,0 +1,107 @@
+namespace MiniSqlQuery.Core.Forms
+{
+	partial class BatchQuerySelectForm
+	{
+		/// <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.batchQuerySelectControl1 = new MiniSqlQuery.Core.Controls.BatchQuerySelectControl();
+			this.label1 = new System.Windows.Forms.Label();
+			this.btnOk = new System.Windows.Forms.Button();
+			this.btnCancel = new System.Windows.Forms.Button();
+			this.SuspendLayout();
+			// 
+			// batchQuerySelectControl1
+			// 
+			this.batchQuerySelectControl1.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.batchQuerySelectControl1.Location = new System.Drawing.Point(12, 25);
+			this.batchQuerySelectControl1.Name = "batchQuerySelectControl1";
+			this.batchQuerySelectControl1.Size = new System.Drawing.Size(322, 180);
+			this.batchQuerySelectControl1.TabIndex = 0;
+			// 
+			// label1
+			// 
+			this.label1.AutoSize = true;
+			this.label1.Location = new System.Drawing.Point(9, 9);
+			this.label1.Name = "label1";
+			this.label1.Size = new System.Drawing.Size(138, 13);
+			this.label1.TabIndex = 1;
+			this.label1.Text = "Select a result set to export:";
+			// 
+			// btnOk
+			// 
+			this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+			this.btnOk.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+			this.btnOk.Location = new System.Drawing.Point(178, 211);
+			this.btnOk.Name = "btnOk";
+			this.btnOk.Size = new System.Drawing.Size(75, 23);
+			this.btnOk.TabIndex = 2;
+			this.btnOk.Text = "&OK";
+			this.btnOk.UseVisualStyleBackColor = true;
+			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(259, 211);
+			this.btnCancel.Name = "btnCancel";
+			this.btnCancel.Size = new System.Drawing.Size(75, 23);
+			this.btnCancel.TabIndex = 3;
+			this.btnCancel.Text = "&Cancel";
+			this.btnCancel.UseVisualStyleBackColor = true;
+			// 
+			// BatchQuerySelectForm
+			// 
+			this.AcceptButton = this.btnOk;
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.CancelButton = this.btnCancel;
+			this.ClientSize = new System.Drawing.Size(346, 246);
+			this.Controls.Add(this.btnCancel);
+			this.Controls.Add(this.btnOk);
+			this.Controls.Add(this.label1);
+			this.Controls.Add(this.batchQuerySelectControl1);
+			this.MaximizeBox = false;
+			this.MinimizeBox = false;
+			this.Name = "BatchQuerySelectForm";
+			this.ShowIcon = false;
+			this.Text = "Batch Query Selection";
+			this.ResumeLayout(false);
+			this.PerformLayout();
+
+		}
+
+		#endregion
+
+		private MiniSqlQuery.Core.Controls.BatchQuerySelectControl batchQuerySelectControl1;
+		private System.Windows.Forms.Label label1;
+		private System.Windows.Forms.Button btnOk;
+		private System.Windows.Forms.Button btnCancel;
+	}
+}
\ No newline at end of file
Added +120 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Forms/BatchQuerySelectForm.resx b/minisqlquery-master/src/MiniSqlQuery.Core/Forms/BatchQuerySelectForm.resx
new file mode 100644
index 0000000..19dc0dd
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Forms/BatchQuerySelectForm.resx
@@ -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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
Added +134 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IApplicationServices.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IApplicationServices.cs
new file mode 100644
index 0000000..7fae43c
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IApplicationServices.cs
@@ -0,0 +1,134 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using Ninject;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	The core services of the application.
+    /// </summary>
+    public interface IApplicationServices
+    {
+        /// <summary>
+        /// 	Occurs when a system message is posted.
+        /// </summary>
+        event EventHandler<SystemMessageEventArgs> SystemMessagePosted;
+
+        /// <summary>
+        /// 	Gets the Dependency Injection container.
+        /// 	This container holds all major application components and plugins.
+        /// 	See the "Configuration.xml" file in the main application for settings.
+        /// </summary>
+        /// <value>The container.</value>
+        IKernel Container { get; }
+
+        /// <summary>
+        /// 	Gets the application host window.
+        /// </summary>
+        /// <value>The application host window - a <see cref = "System.Windows.Forms.Form" />.</value>
+        IHostWindow HostWindow { get; }
+
+        /// <summary>
+        /// 	Gets a dictionary of the current plugins for this application.
+        /// </summary>
+        /// <value>A reference to the plugin dictionary.</value>
+        Dictionary<Type, IPlugIn> Plugins { get; }
+
+        /// <summary>
+        /// 	Gets the application settings instance.
+        /// </summary>
+        /// <value>A reference to the settings handler.</value>
+        IApplicationSettings Settings { get; }
+
+        /// <summary>
+        /// 	The get configuration object types.
+        /// </summary>
+        /// <returns>An array of configuration objects.</returns>
+        Type[] GetConfigurationObjectTypes();
+
+        /// <summary>
+        /// 	Initializes the plugins that have been loaded during application startup.
+        /// </summary>
+        void InitializePlugIns();
+
+        /// <summary>
+        /// 	Loads the <paramref name = "plugIn" /> (calling its <see cref = "IPlugIn.LoadPlugIn" /> method) and
+        /// 	adds it to the <see cref = "Plugins" /> dictionary for access by other services.
+        /// </summary>
+        /// <param name = "plugIn">The plugin to load.</param>
+        /// <exception cref = "ArgumentNullException">If <paramref name = "plugIn" /> is null.</exception>
+        void LoadPlugIn(IPlugIn plugIn);
+
+        /// <summary>
+        /// 	Posts a system message for listeners.
+        /// </summary>
+        /// <param name = "message">A system message type.</param>
+        /// <param name = "data">The asssociated data.</param>
+        void PostMessage(SystemMessage message, object data);
+
+        /// <summary>
+        /// 	Registers the component service type <typeparamref name = "TService" /> with and implemetation of type <typeparamref name = "TImp" />.
+        /// </summary>
+        /// <typeparam name = "TService">The contract type.</typeparam>
+        /// <typeparam name = "TImp">The implementing type.</typeparam>
+        /// <param name = "key">The key or name of the service.</param>
+        void RegisterComponent<TService, TImp>(string key);
+
+        /// <summary>
+        /// 	Registers the component implemetation of type <typeparamref name = "TImp" />.
+        /// </summary>
+        /// <typeparam name = "TImp">The implementing type.</typeparam>
+        /// <param name = "key">The key or name of the service.</param>
+        void RegisterComponent<TImp>(string key);
+
+        /// <summary>
+        /// 	The register configuration object.
+        /// </summary>
+        /// <typeparam name = "TConfig">A configuration class.</typeparam>
+        void RegisterConfigurationObject<TConfig>() where TConfig : IConfigurationObject;
+
+        /// <summary>
+        /// 	Registers the editor of type <typeparamref name = "TEditor" /> using the <see cref = "FileEditorDescriptor.EditorKeyName" />.
+        /// </summary>
+        /// <typeparam name = "TEditor">The editor type.</typeparam>
+        /// <param name = "fileEditorDescriptor">The file editor descriptor.</param>
+        void RegisterEditor<TEditor>(FileEditorDescriptor fileEditorDescriptor) where TEditor : IEditor;
+
+        /// <summary>
+        /// 	Registers the component service type <typeparamref name = "TService" /> with and implemetation of type <typeparamref name = "TImp" /> as a singleton.
+        /// </summary>
+        /// <typeparam name = "TService">The contract type.</typeparam>
+        /// <typeparam name = "TImp">The implementing type.</typeparam>
+        /// <param name = "key">The key or name of the service.</param>
+        void RegisterSingletonComponent<TService, TImp>(string key);
+
+        /// <summary>
+        /// 	Resolves an instance of <typeparamref name = "T" /> from the container.
+        /// </summary>
+        /// <typeparam name = "T">The type to find in the container.</typeparam>
+        /// <param name = "key">The key (can be null if not applicable).</param>
+        /// <returns>An instance of the type depending on the containters configuration.</returns>
+        T Resolve<T>(string key);
+
+        /// <summary>
+        /// 	The resolve.
+        /// </summary>
+        /// <typeparam name = "T">The type to find in the container.</typeparam>
+        /// <returns>An instance of the type depending on the containters configuration.</returns>
+        T Resolve<T>();
+
+        /// <summary>
+        /// Remove the component by name.
+        /// </summary>
+        /// <returns>True on success.</returns>
+	    void RemoveComponent<TImp>();
+    }
+}
\ No newline at end of file
Added +149 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IApplicationSettings.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IApplicationSettings.cs
new file mode 100644
index 0000000..a11ae12
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IApplicationSettings.cs
@@ -0,0 +1,149 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Collections.Specialized;
+using System.Data.Common;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	An interface for the application settings.
+    /// </summary>
+    public interface IApplicationSettings
+    {
+        /// <summary>
+        /// 	Fired when the list of connection definitions is modified.
+        /// </summary>
+        /// <seealso cref = "SetConnectionDefinitions" />
+        /// <seealso cref = "GetConnectionDefinitions" />
+        event EventHandler ConnectionDefinitionsChanged;
+
+        /// <summary>
+        /// 	Fired when the database connection (provider and/or connection string) are modified.
+        /// </summary>
+        /// <seealso cref = "ResetConnection" />
+        event EventHandler DatabaseConnectionReset;
+
+        /// <summary>
+        /// 	Gets an instance of <see cref = "DbConnection" /> depending on the value of <see cref = "ConnectionDefinition" />.
+        /// </summary>
+        /// <value>The connection.</value>
+        DbConnection Connection { get; }
+
+        /// <summary>
+        /// 	Gets or sets a reference to the current connection definiton class.
+        /// </summary>
+        /// <value>The connection definition.</value>
+        DbConnectionDefinition ConnectionDefinition { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets the date time format for grid item results (e.g. "yyyy-MM-dd HH:mm:ss.fff").
+        /// </summary>
+        /// <value>The date time format.</value>
+        string DateTimeFormat { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets the default connection definition filename. I blank the default is the users profile area.
+        /// </summary>
+        /// <value>The default connection definition filename.</value>
+        string DefaultConnectionDefinitionFilename { get; set; }
+
+        /// <summary>
+        /// 	Gets the default filter string for dialog boxes.
+        /// </summary>
+        /// <value>The default file filter.</value>
+        string DefaultFileFilter { get; }
+
+        /// <summary>
+        /// 	Gets or sets a value indicating whether to enable query batching using the "GO" keyword.
+        /// </summary>
+        /// <value><c>true</c> if query batching is enabled; otherwise, <c>false</c>.</value>
+        bool EnableQueryBatching { get; set; }
+
+        /// <summary>
+        ///		Gets or sets a value indicating the command timeout.
+        /// </summary>
+        /// <value>The command timeout.</value>
+        int CommandTimeout { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets a value indicating whether to include read-only columns in the export SQL.
+        /// </summary>
+        /// <value>
+        /// 	<c>true</c> if including read-only columns in the export; otherwise, <c>false</c>.
+        /// </value>
+        bool IncludeReadOnlyColumnsInExport { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets a value indicating whether to load plugins or not.
+        /// </summary>
+        /// <value><c>true</c> if [load plugins]; otherwise, <c>false</c>. The default is <c>true</c>.</value>
+        bool LoadExternalPlugins { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets the null text of a result (e.g. "&lt;NULL&gt;").
+        /// </summary>
+        /// <value>The null text.</value>
+        string NullText { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets the plug in file filter for finding the external plugins (e.g. "*.plugin.dll").
+        /// </summary>
+        /// <value>The plug in file filter.</value>
+        string PlugInFileFilter { get; set; }
+
+        /// <summary>
+        /// Gets or sets the most recent files.
+        /// </summary>
+        /// <value>The most recent files.</value>
+        StringCollection MostRecentFiles { get; set; }
+
+        /// <summary>
+        /// 	Gets an instance of <see cref = "DbProviderFactory" /> depending on the value of <see cref = "ConnectionDefinition" />.
+        /// </summary>
+        /// <value>The provider factory.</value>
+        DbProviderFactory ProviderFactory { get; }
+
+        /// <summary>
+        /// 	Closes the current connection (if any).
+        /// </summary>
+        void CloseConnection();
+
+        /// <summary>
+        /// 	Gets the current connection definitions for this user.
+        /// </summary>
+        /// <returns>Connection definitions.</returns>
+        DbConnectionDefinitionList GetConnectionDefinitions();
+
+        /// <summary>
+        /// 	Helper method to get an open connection.
+        /// </summary>
+        /// <returns>A <see cref = "DbConnection" /> object.</returns>
+        DbConnection GetOpenConnection();
+
+        /// <summary>
+        /// 	Gets, and increments, the "untitled document counter" starting at 1 for the "session".
+        /// </summary>
+        /// <value>The untitled document value.</value>
+        /// <returns>The get untitled document counter.</returns>
+        int GetUntitledDocumentCounter();
+
+        /// <summary>
+        /// 	Resets the connection details firing the <see cref = "DatabaseConnectionReset" /> event.
+        /// </summary>
+        /// <seealso cref = "DatabaseConnectionReset" />
+        void ResetConnection();
+
+        /// <summary>
+        /// 	Resets the list of connection definitions that are stored in the user profile.
+        /// </summary>
+        /// <param name = "definitionList">The definition List.</param>
+        void SetConnectionDefinitions(DbConnectionDefinitionList definitionList);
+    }
+}
\ No newline at end of file
Added +77 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/ICommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/ICommand.cs
new file mode 100644
index 0000000..a8cdfab
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/ICommand.cs
@@ -0,0 +1,77 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	Represents a "command", typically a user action such as saving a file or executing a query.
+    /// </summary>
+    public interface ICommand
+    {
+        /// <summary>
+        /// 	Gets a value indicating whether this <see cref = "ICommand" /> is enabled.
+        /// </summary>
+        /// <value><c>true</c> if enabled; otherwise, <c>false</c>.</value>
+        bool Enabled { get; }
+
+        /// <summary>
+        /// Gets or sets the host, typically the button holding the command.
+        /// </summary>
+        /// <value>The host control.</value>
+        object Host { get; set; }
+
+        /// <summary>
+        /// 	Gets the name of the command, used in menus and buttons.
+        /// </summary>
+        /// <value>The name of the command.</value>
+        string Name { get; }
+
+        /// <summary>
+        /// 	Gets or sets a reference to the application services to allow access to the other components.
+        /// </summary>
+        /// <value>A reference to the <see cref = "IApplicationServices" /> instance.</value>
+        IApplicationServices Services { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets a reference to the application settings.
+        /// </summary>
+        /// <value>The application settings.</value>
+        IApplicationSettings Settings { get; set; }
+
+        /// <summary>
+        /// 	Gets the menu shortcut keys for this command (e.g. Keys.F5).
+        /// </summary>
+        /// <value>The shortcut keys for this command.</value>
+        Keys ShortcutKeys { get; }
+
+        /// <summary>
+        /// 	Gets the shortcut key text to be displayed as help.
+        /// </summary>
+        /// <value>The shortcut keys text.</value>
+        string ShortcutKeysText { get; }
+
+        /// <summary>
+        /// 	Gets the "small image" associated with this control (for use on buttons or menu items).
+        /// 	Use null (or Nothing in Visual Basic) if there is no image.
+        /// </summary>
+        /// <value>The small image representing this command (or null for none).</value>
+        Image SmallImage { get; }
+
+        /// <summary>
+        /// 	Executes the command based on the current settings.
+        /// </summary>
+        /// <remarks>
+        /// 	If a commands <see cref = "Enabled" /> value is false, a call to <see cref = "Execute" /> should have no effect
+        /// 	(and not throw an exception).
+        /// </remarks>
+        void Execute();
+    }
+}
\ No newline at end of file
Added +29 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/ICompletionProvider.cs b/minisqlquery-master/src/MiniSqlQuery.Core/ICompletionProvider.cs
new file mode 100644
index 0000000..584d39f
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/ICompletionProvider.cs
@@ -0,0 +1,29 @@
+namespace MiniSqlQuery.Core
+{
+    public interface ICompletionProvider
+    {
+        bool Enabled { get; set; }
+        bool KeyEventHandlerFired(char ch);
+    }
+
+    public class NullCompletionProvider : ICompletionProvider
+    {
+        private readonly bool _enabled;
+
+        public NullCompletionProvider()
+        {
+            _enabled = false;
+        }
+
+        public bool Enabled
+        {
+            get { return _enabled; }
+            set { }
+        }
+
+        public bool KeyEventHandlerFired(char ch)
+        {
+            return false;
+        }
+    }
+}
\ No newline at end of file
Added +41 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IConfigurationObject.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IConfigurationObject.cs
new file mode 100644
index 0000000..6a56d20
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IConfigurationObject.cs
@@ -0,0 +1,41 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System.ComponentModel;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	A configuration object for use with the options form.
+    /// </summary>
+    public interface IConfigurationObject : INotifyPropertyChanged
+    {
+        /// <summary>
+        /// 	Gets a value indicating whether the settings are dirty.
+        /// </summary>
+        /// <value>The is dirty.</value>
+        bool IsDirty { get; }
+
+        /// <summary>
+        /// 	Gets the Name of the settings.
+        /// </summary>
+        /// <value>The name of the settings.</value>
+        string Name { get; }
+
+        /// <summary>
+        /// 	Gets a Settings object.
+        /// </summary>
+        /// <value>The settings.</value>
+        object Settings { get; }
+
+        /// <summary>
+        /// 	Saves the settings.
+        /// </summary>
+        void Save();
+    }
+}
\ No newline at end of file
Added +65 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IDatabaseInspector.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IDatabaseInspector.cs
new file mode 100644
index 0000000..941a8e3
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IDatabaseInspector.cs
@@ -0,0 +1,65 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System.Windows.Forms;
+using MiniSqlQuery.Core.DbModel;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	An interface to the query windows database inspector.
+    /// </summary>
+    public interface IDatabaseInspector
+    {
+        /// <summary>
+        /// 	Gets ColumnMenu.
+        /// </summary>
+        /// <value>The column menu.</value>
+        ContextMenuStrip ColumnMenu { get; }
+
+        /// <summary>
+        /// 	Gets the current database schema info (if any).
+        /// </summary>
+        /// <value>The db schema.</value>
+        DbModelInstance DbSchema { get; }
+
+        /// <summary>
+        /// 	Gets RightClickedModelObject.
+        /// </summary>
+        /// <value>The right clicked model object.</value>
+        IDbModelNamedObject RightClickedModelObject { get; }
+
+        /// <summary>
+        /// 	Gets the name of the curent table (or view) with schema if applicable in the tree view that is being clicked.
+        /// </summary>
+        /// <value>The table or view name or null if none selected.</value>
+        string RightClickedTableName { get; }
+
+        /// <summary>
+        /// 	Gets the Table context menu strip. Alows an easy method to add menu items.
+        /// </summary>
+        /// <value>The table menu.</value>
+        ContextMenuStrip TableMenu { get; }
+
+        /// <summary>
+        /// 	Close the window.
+        /// </summary>
+        void Close();
+
+        /// <summary>
+        /// 	Reloads the meta-data and re-builds the tree.
+        /// </summary>
+        void LoadDatabaseDetails();
+
+        /// <summary>
+        /// 	The navigate to.
+        /// </summary>
+        /// <param name = "modelObject">The model object.</param>
+        void NavigateTo(IDbModelNamedObject modelObject);
+    }
+}
\ No newline at end of file
Added +46 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IDatabaseSchemaService.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IDatabaseSchemaService.cs
new file mode 100644
index 0000000..9af188e
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IDatabaseSchemaService.cs
@@ -0,0 +1,46 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System.Collections.Generic;
+using System.Data.Common;
+using MiniSqlQuery.Core.DbModel;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	The database schema service interface.
+    /// </summary>
+    public interface IDatabaseSchemaService
+    {
+        /// <summary>
+        /// 	Gets or sets ProviderName.
+        /// </summary>
+        /// <value>The provider name.</value>
+        string ProviderName { get; set; }
+
+        /// <summary>
+        /// 	Gets a database object model that represents the items defined by the <paramref name = "connection" />.
+        /// </summary>
+        /// <param name = "connection">The connection string.</param>
+        /// <returns>A database model instance object describing the database.</returns>
+        DbModelInstance GetDbObjectModel(string connection);
+
+        /// <summary>
+        /// 	Gets database types by querying the schema.
+        /// </summary>
+        /// <param name = "connection">The database connection.</param>
+        /// <returns>A dictionary of database types, the key is the SQL type and the value is the full detail of the type.</returns>
+        Dictionary<string, DbModelType> GetDbTypes(DbConnection connection);
+
+        /// <summary>
+        /// 	Get the description of the database.
+        /// </summary>
+        /// <returns>The database description.</returns>
+        string GetDescription();
+    }
+}
\ No newline at end of file
Added +41 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IDbModelNamedObject.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IDbModelNamedObject.cs
new file mode 100644
index 0000000..7c44767
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IDbModelNamedObject.cs
@@ -0,0 +1,41 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	A database model object, e.g. a column, table etc can implement this interface.
+    /// </summary>
+    public interface IDbModelNamedObject
+    {
+        /// <summary>
+        /// Gets the full name of the object, e.g. "dbo.FistName".
+        /// </summary>
+        /// <value>The full name.</value>
+        string FullName { get; }
+
+        /// <summary>
+        /// Gets the name of the object, e.g. "FistName".
+        /// </summary>
+        /// <value>The object name.</value>
+        string Name { get; }
+
+        /// <summary>
+        /// Gets the type of the object, e.g. "VARCHAR".
+        /// </summary>
+        /// <value>The type of the object.</value>
+        string ObjectType { get; }
+
+        /// <summary>
+        /// Gets the schema name, e.g. "dbo".
+        /// </summary>
+        /// <value>The schema name if any.</value>
+        string Schema { get; }
+    }
+}
\ No newline at end of file
Added +81 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IEditor.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IEditor.cs
new file mode 100644
index 0000000..62c9281
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IEditor.cs
@@ -0,0 +1,81 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	The editor interface. Defines the core behaviours for interacting with the core application.
+    /// </summary>
+    public interface IEditor
+    {
+        /// <summary>
+        /// 	Gets or sets the contetnts of the editor.
+        /// </summary>
+        /// <value>All the text in the window.</value>
+        string AllText { get; set; }
+
+        /// <summary>
+        /// 	Gets the file filter for this editor (e.g. "SQL Files (*.sql)|*.sql|All Files (*.*)|*.*").
+        /// </summary>
+        /// <value>The file filter.</value>
+        string FileFilter { get; }
+
+        /// <summary>
+        /// 	Gets or sets the filename of the docuemnt being edited (can be null, as in not saved yet).
+        /// </summary>
+        /// <value>The file name.</value>
+        string FileName { get; set; }
+
+        /// <summary>
+        /// 	Gets a value indicating whether this instance is dirty or not.
+        /// </summary>
+        /// <value>The value of <c>true</c> if this instance is dirty; otherwise, <c>false</c>.</value>
+        bool IsDirty { get; }
+
+        /// <summary>
+        /// 	Gets the currently selected text (if any) in the editor.
+        /// </summary>
+        /// <value>The selected text.</value>
+        string SelectedText { get; }
+
+        /// <summary>
+        /// 	Clears the selection (deletes selected text if any).
+        /// </summary>
+        void ClearSelection();
+
+        /// <summary>
+        /// 	Highlights the string starting at <paramref name = "offset" /> for <paramref name = "length" /> characters.
+        /// </summary>
+        /// <param name = "offset">The offset to start at.</param>
+        /// <param name = "length">The length.</param>
+        void HighlightString(int offset, int length);
+
+        /// <summary>
+        /// 	Inserts <paramref name = "text" /> at the current cursor position (selected text is overwritten).
+        /// </summary>
+        /// <param name = "text">The text to insert at the current position.</param>
+        void InsertText(string text);
+
+        /// <summary>
+        /// 	Loads the file by the path in <see cref = "FileName" />.
+        /// </summary>
+        void LoadFile();
+
+        /// <summary>
+        /// 	Saves the file by the path in <see cref = "FileName" />.
+        /// </summary>
+        void SaveFile();
+
+        /// <summary>
+        /// 	Sets the syntax mode off the editor.
+        /// </summary>
+        /// <param name = "syntaxName">The mode, e.g. "sql", "cs", "txt" etc.</param>
+        void SetSyntax(string syntaxName);
+    }
+}
\ No newline at end of file
Added +44 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IFileEditorResolver.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IFileEditorResolver.cs
new file mode 100644
index 0000000..ef5383f
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IFileEditorResolver.cs
@@ -0,0 +1,44 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	The file editor resolver interface.
+    ///		Given a file name or extention the service will work out the most appropriate editor to use.
+    /// </summary>
+    public interface IFileEditorResolver
+    {
+        /// <summary>
+        /// 	Gets an array of the file descriptiors.
+        /// </summary>
+        /// <returns>An array of <see cref = "FileEditorDescriptor" /> objects.</returns>
+        FileEditorDescriptor[] GetFileTypes();
+
+        /// <summary>
+        /// 	Registers the specified file editor descriptor.
+        /// </summary>
+        /// <param name = "fileEditorDescriptor">The file editor descriptor.</param>
+        void Register(FileEditorDescriptor fileEditorDescriptor);
+
+        /// <summary>
+        /// 	Resolves the editor instance from the container based on the filename.
+        /// </summary>
+        /// <param name = "filename">The filename.</param>
+        /// <returns>An editor.</returns>
+        IEditor ResolveEditorInstance(string filename);
+
+        /// <summary>
+        /// 	Works out the "name" of the editor to use based on the <paramref name = "extension" />.
+        /// </summary>
+        /// <param name = "extension">The extention ("sql", "txt"/".txt" etc).</param>
+        /// <returns>The name of an editor in the container.</returns>
+        string ResolveEditorNameByExtension(string extension);
+    }
+}
\ No newline at end of file
Added +59 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IFindReplaceProvider.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IFindReplaceProvider.cs
new file mode 100644
index 0000000..bd241c6
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IFindReplaceProvider.cs
@@ -0,0 +1,59 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	A control that allows its text to be "found" and optionally "replaced".
+    /// 	The query editor is an obvious provider but other windows can also provide
+    /// 	find/replace functionality by implementing this interface (tools, output windows etc).
+    /// </summary>
+    public interface IFindReplaceProvider : ISupportCursorOffset
+    {
+        /// <summary>
+        /// 	Gets a value indicating whether the text can be replaced, otherwise false.
+        /// </summary>
+        /// <value>The can replace text.</value>
+        bool CanReplaceText { get; }
+
+        /// <summary>
+        /// 	Gets a reference to the text finding service.
+        /// </summary>
+        /// <seealso cref = "SetTextFindService" />
+        /// <value>The text find service.</value>
+        ITextFindService TextFindService { get; }
+
+        /// <summary>
+        /// 	Attemps to find <paramref name = "value" /> in the controls text.
+        /// </summary>
+        /// <param name = "value">The string to search for.</param>
+        /// <param name = "startIndex">The starting position within the buffer.</param>
+        /// <param name = "comparisonType">The string comparison type to use, e.g. <see cref="StringComparison.InvariantCultureIgnoreCase"/></param>
+        /// <returns>The find string.</returns>
+        int FindString(string value, int startIndex, StringComparison comparisonType);
+
+        /// <summary>
+        /// 	Replaces the text from <paramref name = "startIndex" /> for <paramref name = "length" /> characters 
+        /// 	with <paramref name = "value" />.
+        /// </summary>
+        /// <param name = "value">The new string.</param>
+        /// <param name = "startIndex">the starting position.</param>
+        /// <param name = "length">The length (0 implies an insert).</param>
+        /// <returns>True if successful, otherwise false.</returns>
+        /// <seealso cref = "CanReplaceText" />
+        bool ReplaceString(string value, int startIndex, int length);
+
+        /// <summary>
+        /// 	Overrides the default text find service with <paramref name = "textFindService" /> (e.g. a RegEx service).
+        /// </summary>
+        /// <param name = "textFindService">The service to use.</param>
+        void SetTextFindService(ITextFindService textFindService);
+    }
+}
\ No newline at end of file
Added +56 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IFindReplaceWindow.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IFindReplaceWindow.cs
new file mode 100644
index 0000000..6b67bd1
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IFindReplaceWindow.cs
@@ -0,0 +1,56 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	An interface for the form that provides the find replace functionality.
+    /// </summary>
+    public interface IFindReplaceWindow
+    {
+        /// <summary>
+        /// 	Gets or sets the "find string".
+        /// </summary>
+        /// <value>The find string.</value>
+        string FindString { get; set; }
+
+        /// <summary>
+        /// 	Gets a value indicating whether this instance is disposed.
+        /// </summary>
+        /// <value>
+        /// 	<c>true</c> if this instance is disposed; otherwise, <c>false</c>.
+        /// </value>
+        bool IsDisposed { get; }
+
+        /// <summary>
+        /// 	Gets or sets the "replace string".
+        /// </summary>
+        /// <value>The replace string.</value>
+        string ReplaceString { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets a value indicating whether the form is "top most" in the window stack.
+        /// </summary>
+        /// <value><c>true</c> if it's top most; otherwise, <c>false</c>.</value>
+        bool TopMost { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets a value indicating whether this form is visible.
+        /// </summary>
+        /// <value><c>true</c> if visible; otherwise, <c>false</c>.</value>
+        bool Visible { get; set; }
+
+        /// <summary>
+        /// 	Shows the window.
+        /// </summary>
+        /// <param name = "owner">The owner form.</param>
+        void Show(IWin32Window owner);
+    }
+}
\ No newline at end of file
Added +148 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IHostWindow.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IHostWindow.cs
new file mode 100644
index 0000000..bc880d1
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IHostWindow.cs
@@ -0,0 +1,148 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System.Windows.Forms;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	Core functions of the main MDI application host Form.
+    /// </summary>
+    public interface IHostWindow
+    {
+        /// <summary>
+        /// 	Gets a reference to the active child form.
+        /// </summary>
+        /// <value>The active form or null.</value>
+        Form ActiveChildForm { get; }
+
+        /// <summary>
+        /// 	Gets a reference to the database inspector window if open.
+        /// </summary>
+        /// <value>A <see cref = "IDatabaseInspector" /> object or null.</value>
+        IDatabaseInspector DatabaseInspector { get; }
+
+        /// <summary>
+        /// 	Gets the instance of the hosting form.
+        /// </summary>
+        /// <value>The host instance.</value>
+        Form Instance { get; }
+
+        /// <summary>
+        /// 	Gets a reference to the host windows tool strip control.
+        /// </summary>
+        /// <value>The window tool strip.</value>
+        ToolStrip ToolStrip { get; }
+
+        /// <summary>
+        /// 	Adds an <see cref = "ICommand" /> to the plugins menu.
+        /// </summary>
+        /// <typeparam name = "TCommand">The command implementation to direct the name, image etc of the new menu item.</typeparam>
+        void AddPluginCommand<TCommand>() where TCommand : ICommand, new();
+
+        /// <summary>
+        /// 	Adds a command based button to the tool strip by <paramref name = "index" />.
+        /// </summary>
+        /// <typeparam name = "TCommand">The command implementation to direct the name, image etc of the new tool strip item.</typeparam>
+        /// <param name = "index">The position for the tool strip button, if null the item is appended to the end.</param>
+        void AddToolStripCommand<TCommand>(int? index) where TCommand : ICommand, new();
+
+        /// <summary>
+        /// 	Adds a seperator to the tool strip by <paramref name = "index" />.
+        /// </summary>
+        /// <param name = "index">The position for the seperator, if null the item is appended to the end.</param>
+        void AddToolStripSeperator(int? index);
+
+        /// <summary>
+        /// 	Displays the <paramref name = "frm" /> in the host window.
+        /// </summary>
+        /// <param name = "frm">The child form to dock.</param>
+        void DisplayDockedForm(DockContent frm);
+
+        /// <summary>
+        /// 	Displays a message box with the specified text, caption, buttons, icon, default button, options, and Help button, using the specified Help file and Help keyword.
+        /// </summary>
+        /// <param name = "source">The source form of the message.</param>
+        /// <param name = "text">The text to display in the message box. </param>
+        /// <param name = "caption">The text to display in the title bar of the message box. </param>
+        /// <param name = "buttons">One of the <see cref = "T:System.Windows.Forms.MessageBoxButtons" /> values that specifies which buttons to display in the message box. </param>
+        /// <param name = "icon">One of the <see cref = "T:System.Windows.Forms.MessageBoxIcon" /> values that specifies which icon to display in the message box. </param>
+        /// <param name = "defaultButton">One of the <see cref = "T:System.Windows.Forms.MessageBoxDefaultButton" /> values that specifies the default button for the message box. </param>
+        /// <param name = "options">One of the <see cref = "T:System.Windows.Forms.MessageBoxOptions" /> values that specifies which display and association options will be used for the message box. You may pass in 0 if you wish to use the defaults.</param>
+        /// <param name = "helpFilePath">The path and name of the Help file to display when the user clicks the Help button. </param>
+        /// <param name = "keyword">The Help keyword to display when the user clicks the Help button. </param>
+        /// <returns>One of the <see cref = "T:System.Windows.Forms.DialogResult" /> values.</returns>
+        /// <exception cref = "T:System.ComponentModel.InvalidEnumArgumentException"><paramref name = "buttons" /> is not a member of <see cref = "T:System.Windows.Forms.MessageBoxButtons" />.-or- <paramref name = "icon" /> is not a member of <see cref = "T:System.Windows.Forms.MessageBoxIcon" />.-or- The <paramref name = "defaultButton" /> specified is not a member of <see cref = "T:System.Windows.Forms.MessageBoxDefaultButton" />. </exception>
+        /// <exception cref = "T:System.InvalidOperationException">An attempt was made to display the <see cref = "T:System.Windows.Forms.MessageBox" /> in a process that is not running in User Interactive mode. This is specified by the <see cref = "P:System.Windows.Forms.SystemInformation.UserInteractive" /> property. </exception>
+        /// <exception cref = "T:System.ArgumentException"><paramref name = "options" /> specified both <see cref = "F:System.Windows.Forms.MessageBoxOptions.DefaultDesktopOnly" /> and <see cref = "F:System.Windows.Forms.MessageBoxOptions.ServiceNotification" />.-or- <paramref name = "buttons" /> specified an invalid combination of <see cref = "T:System.Windows.Forms.MessageBoxButtons" />. </exception>
+        DialogResult DisplayMessageBox(
+            Form source, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, string helpFilePath, string keyword);
+
+        /// <summary>
+        /// 	Displays an "OK" message box with the specified text and caption.
+        /// </summary>
+        /// <param name = "source">The source form of the message.</param>
+        /// <param name = "text">The text to display in the message box. </param>
+        /// <param name = "caption">The text to display in the title bar of the message box. </param>
+        /// <returns>One of the <see cref = "T:System.Windows.Forms.DialogResult" /> values.</returns>
+        DialogResult DisplaySimpleMessageBox(Form source, string text, string caption);
+
+        /// <summary>
+        /// 	Gets the relevent menu item by name.
+        /// </summary>
+        /// <param name = "name">The name of the menu to get, e.g. "Plugins" or "File" (no amphersand required).</param>
+        /// <returns>The menu item object by <paramref name = "name" />.</returns>
+        ToolStripMenuItem GetMenuItem(string name);
+
+        ///// <summary>
+        ///// Plays the system beep.
+        ///// </summary>
+        // void Beep();
+
+        /// <summary>
+        /// 	A testable way to pass command line arguements to the application.
+        /// </summary>
+        /// <param name = "args">An array of command line arguements.</param>
+        void SetArguments(string[] args);
+
+        /// <summary>
+        /// 	Sets the application cursor to <paramref name = "cursor" />.
+        /// </summary>
+        /// <param name = "cursor">The new cursor mode.</param>
+        void SetPointerState(Cursor cursor);
+
+        /// <summary>
+        /// 	Sets the status text of the host.
+        /// </summary>
+        /// <param name = "source">The source form, for tracking MDI children.</param>
+        /// <param name = "text">The text to set.</param>
+        void SetStatus(Form source, string text);
+
+        /// <summary>
+        /// Sets the result count.
+        /// </summary>
+        /// <param name="source">The source.</param>
+        /// <param name="count">The count.</param>
+        void SetResultCount(Form source, int? count);
+
+        /// <summary>
+        /// 	Displays (and replaces if required) the database inspactor window.
+        /// </summary>
+        /// <param name = "databaseInspector">The window to display.</param>
+        /// <param name = "dockState">The state for the window.</param>
+        void ShowDatabaseInspector(IDatabaseInspector databaseInspector, DockState dockState);
+
+        /// <summary>
+        /// 	Displays a "tool" window, like the database inspector etc.
+        /// </summary>
+        /// <param name = "form">The window to display, it must be a <see cref = "DockContent" /> form.</param>
+        /// <param name = "dockState">The initial docking state of the window, e.g. <see cref = "DockState.DockLeftAutoHide" />.</param>
+        void ShowToolWindow(DockContent form, DockState dockState);
+    }
+}
\ No newline at end of file
Added +833 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/ImageResource.Designer.cs b/minisqlquery-master/src/MiniSqlQuery.Core/ImageResource.Designer.cs
new file mode 100644
index 0000000..7b24ade
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/ImageResource.Designer.cs
@@ -0,0 +1,833 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace MiniSqlQuery.Core {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    public class ImageResource {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal ImageResource() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MiniSqlQuery.Core.ImageResource", typeof(ImageResource).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap accept {
+            get {
+                object obj = ResourceManager.GetObject("accept", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap add {
+            get {
+                object obj = ResourceManager.GetObject("add", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+        /// </summary>
+        public static System.Drawing.Icon App {
+            get {
+                object obj = ResourceManager.GetObject("App", resourceCulture);
+                return ((System.Drawing.Icon)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap ApplicationIcon {
+            get {
+                object obj = ResourceManager.GetObject("ApplicationIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap around_text {
+            get {
+                object obj = ResourceManager.GetObject("around_text", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap cancel {
+            get {
+                object obj = ResourceManager.GetObject("cancel", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap cog {
+            get {
+                object obj = ResourceManager.GetObject("cog", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap column {
+            get {
+                object obj = ResourceManager.GetObject("column", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap column_row_version {
+            get {
+                object obj = ResourceManager.GetObject("column_row_version", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap comments {
+            get {
+                object obj = ResourceManager.GetObject("comments", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap cross {
+            get {
+                object obj = ResourceManager.GetObject("cross", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap database {
+            get {
+                object obj = ResourceManager.GetObject("database", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap database_add {
+            get {
+                object obj = ResourceManager.GetObject("database_add", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap database_delete {
+            get {
+                object obj = ResourceManager.GetObject("database_delete", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap database_edit {
+            get {
+                object obj = ResourceManager.GetObject("database_edit", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+        /// </summary>
+        public static System.Drawing.Icon database_edit_icon {
+            get {
+                object obj = ResourceManager.GetObject("database_edit_icon", resourceCulture);
+                return ((System.Drawing.Icon)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap database_error {
+            get {
+                object obj = ResourceManager.GetObject("database_error", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap database_refresh {
+            get {
+                object obj = ResourceManager.GetObject("database_refresh", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+        /// </summary>
+        public static System.Drawing.Icon disconnect_icon {
+            get {
+                object obj = ResourceManager.GetObject("disconnect_icon", resourceCulture);
+                return ((System.Drawing.Icon)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap disk {
+            get {
+                object obj = ResourceManager.GetObject("disk", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap disk_multiple {
+            get {
+                object obj = ResourceManager.GetObject("disk_multiple", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap email {
+            get {
+                object obj = ResourceManager.GetObject("email", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap email_go {
+            get {
+                object obj = ResourceManager.GetObject("email_go", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap error {
+            get {
+                object obj = ResourceManager.GetObject("error", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap exclamation {
+            get {
+                object obj = ResourceManager.GetObject("exclamation", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap feed {
+            get {
+                object obj = ResourceManager.GetObject("feed", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap find {
+            get {
+                object obj = ResourceManager.GetObject("find", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap folder_bug {
+            get {
+                object obj = ResourceManager.GetObject("folder_bug", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap folder_page {
+            get {
+                object obj = ResourceManager.GetObject("folder_page", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap help {
+            get {
+                object obj = ResourceManager.GetObject("help", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap house {
+            get {
+                object obj = ResourceManager.GetObject("house", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap information {
+            get {
+                object obj = ResourceManager.GetObject("information", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap key {
+            get {
+                object obj = ResourceManager.GetObject("key", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap key_disabled {
+            get {
+                object obj = ResourceManager.GetObject("key_disabled", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap key_go {
+            get {
+                object obj = ResourceManager.GetObject("key_go", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap key_go_disabled {
+            get {
+                object obj = ResourceManager.GetObject("key_go_disabled", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap lightning {
+            get {
+                object obj = ResourceManager.GetObject("lightning", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap page {
+            get {
+                object obj = ResourceManager.GetObject("page", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap page_white {
+            get {
+                object obj = ResourceManager.GetObject("page_white", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap page_white_csharp {
+            get {
+                object obj = ResourceManager.GetObject("page_white_csharp", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap plugin {
+            get {
+                object obj = ResourceManager.GetObject("plugin", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap plugin_go {
+            get {
+                object obj = ResourceManager.GetObject("plugin_go", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap plugin_link {
+            get {
+                object obj = ResourceManager.GetObject("plugin_link", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap printer {
+            get {
+                object obj = ResourceManager.GetObject("printer", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap script {
+            get {
+                object obj = ResourceManager.GetObject("script", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap script_code {
+            get {
+                object obj = ResourceManager.GetObject("script_code", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap server {
+            get {
+                object obj = ResourceManager.GetObject("server", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap server_add {
+            get {
+                object obj = ResourceManager.GetObject("server_add", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap server_connect {
+            get {
+                object obj = ResourceManager.GetObject("server_connect", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap server_database {
+            get {
+                object obj = ResourceManager.GetObject("server_database", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap server_delete {
+            get {
+                object obj = ResourceManager.GetObject("server_delete", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap server_edit {
+            get {
+                object obj = ResourceManager.GetObject("server_edit", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap server_error {
+            get {
+                object obj = ResourceManager.GetObject("server_error", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap stop {
+            get {
+                object obj = ResourceManager.GetObject("stop", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table {
+            get {
+                object obj = ResourceManager.GetObject("table", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table_add {
+            get {
+                object obj = ResourceManager.GetObject("table_add", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table_delete {
+            get {
+                object obj = ResourceManager.GetObject("table_delete", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table_edit {
+            get {
+                object obj = ResourceManager.GetObject("table_edit", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table_error {
+            get {
+                object obj = ResourceManager.GetObject("table_error", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table_gear {
+            get {
+                object obj = ResourceManager.GetObject("table_gear", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table_go {
+            get {
+                object obj = ResourceManager.GetObject("table_go", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table_key {
+            get {
+                object obj = ResourceManager.GetObject("table_key", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table_lightning {
+            get {
+                object obj = ResourceManager.GetObject("table_lightning", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table_link {
+            get {
+                object obj = ResourceManager.GetObject("table_link", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table_multiple {
+            get {
+                object obj = ResourceManager.GetObject("table_multiple", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table_refresh {
+            get {
+                object obj = ResourceManager.GetObject("table_refresh", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table_relationship {
+            get {
+                object obj = ResourceManager.GetObject("table_relationship", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table_row_delete {
+            get {
+                object obj = ResourceManager.GetObject("table_row_delete", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table_row_insert {
+            get {
+                object obj = ResourceManager.GetObject("table_row_insert", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table_save {
+            get {
+                object obj = ResourceManager.GetObject("table_save", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap table_sort {
+            get {
+                object obj = ResourceManager.GetObject("table_sort", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap tick {
+            get {
+                object obj = ResourceManager.GetObject("tick", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap view {
+            get {
+                object obj = ResourceManager.GetObject("view", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap view_multiple {
+            get {
+                object obj = ResourceManager.GetObject("view_multiple", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap world_link {
+            get {
+                object obj = ResourceManager.GetObject("world_link", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap wrench {
+            get {
+                object obj = ResourceManager.GetObject("wrench", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        public static System.Drawing.Bitmap wrench_orange {
+            get {
+                object obj = ResourceManager.GetObject("wrench_orange", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+    }
+}
Added +352 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/ImageResource.resx b/minisqlquery-master/src/MiniSqlQuery.Core/ImageResource.resx
new file mode 100644
index 0000000..98a82f3
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/ImageResource.resx
@@ -0,0 +1,352 @@
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="accept" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\accept.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="add" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="App" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\app.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ApplicationIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\applicationicon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="around_text" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\around_text.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="cancel" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\cancel.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="cog" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\cog.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="column" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\column.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="comments" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\comments.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="cross" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\cross.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="database" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\database.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="database_add" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\database_add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="database_delete" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\database_delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="database_edit" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\database_edit.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="database_error" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\database_error.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="database_refresh" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\database_refresh.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="disk" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\disk.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="disk_multiple" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\disk_multiple.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="email" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\email.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="email_go" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\email_go.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="error" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\error.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="exclamation" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\exclamation.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="feed" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\feed.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="find" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\find.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="folder_bug" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\folder_bug.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="folder_page" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\folder_page.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="help" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="house" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\house.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="information" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\information.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="key" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\key.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="lightning" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\lightning.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="page" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\page.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="page_white" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\page_white.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="page_white_csharp" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\page_white_csharp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="plugin" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\plugin.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="plugin_go" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\plugin_go.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="plugin_link" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\plugin_link.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="printer" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\printer.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="script" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\script.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="script_code" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\script_code.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="server" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\server.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="server_add" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\server_add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="server_connect" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\server_connect.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="server_database" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\server_database.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="server_delete" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\server_delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="server_edit" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\server_edit.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="server_error" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\server_error.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="stop" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\stop.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\table.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table_add" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\table_add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table_delete" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\table_delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table_edit" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\table_edit.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table_error" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\table_error.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table_gear" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\table_gear.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table_go" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\table_go.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table_key" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\table_key.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table_lightning" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\table_lightning.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table_link" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\table_link.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table_multiple" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\table_multiple.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table_refresh" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\table_refresh.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table_relationship" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\table_relationship.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table_row_delete" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\table_row_delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table_row_insert" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\table_row_insert.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table_save" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\table_save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="table_sort" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\table_sort.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="tick" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\tick.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="view" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\view.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="view_multiple" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\view_multiple.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="world_link" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\world_link.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="wrench" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\wrench.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="wrench_orange" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\wrench_orange.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="database_edit_icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\database_edit.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="disconnect_icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\disconnect.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="key_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\key_disabled.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="key_go_disabled" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\key_go_disabled.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="column_row_version" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\column_row_version.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="key_go" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>images\key_go.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+</root>
\ No newline at end of file
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/accept.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/accept.png
new file mode 100644
index 0000000..89c8129
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/accept.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/add.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/add.png
new file mode 100644
index 0000000..6332fef
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/add.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/App.ico b/minisqlquery-master/src/MiniSqlQuery.Core/Images/App.ico
new file mode 100644
index 0000000..50d3b41
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/App.ico differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/ApplicationIcon.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/ApplicationIcon.png
new file mode 100644
index 0000000..6c1c6ce
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/ApplicationIcon.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/around_text.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/around_text.png
new file mode 100644
index 0000000..c47ddd8
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/around_text.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/cancel.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/cancel.png
new file mode 100644
index 0000000..c149c2b
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/cancel.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/cog.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/cog.png
new file mode 100644
index 0000000..67de2c6
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/cog.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/column.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/column.png
new file mode 100644
index 0000000..5ab5189
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/column.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/column_row_version.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/column_row_version.png
new file mode 100644
index 0000000..4c23b22
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/column_row_version.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/comments.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/comments.png
new file mode 100644
index 0000000..39433cf
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/comments.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/cross.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/cross.png
new file mode 100644
index 0000000..1514d51
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/cross.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/database.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/database.png
new file mode 100644
index 0000000..3d09261
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/database.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_add.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_add.png
new file mode 100644
index 0000000..802bd6c
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_add.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_delete.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_delete.png
new file mode 100644
index 0000000..cce652e
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_delete.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_edit.ico b/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_edit.ico
new file mode 100644
index 0000000..12101a1
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_edit.ico differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_edit.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_edit.png
new file mode 100644
index 0000000..e501b66
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_edit.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_error.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_error.png
new file mode 100644
index 0000000..578221a
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_error.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_refresh.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_refresh.png
new file mode 100644
index 0000000..ff803be
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/database_refresh.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/disconnect.ico b/minisqlquery-master/src/MiniSqlQuery.Core/Images/disconnect.ico
new file mode 100644
index 0000000..9e5d4c2
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/disconnect.ico differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/disconnect.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/disconnect.png
new file mode 100644
index 0000000..b335cb1
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/disconnect.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/disk.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/disk.png
new file mode 100644
index 0000000..99d532e
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/disk.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/disk_multiple.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/disk_multiple.png
new file mode 100644
index 0000000..fc5a52f
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/disk_multiple.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/email.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/email.png
new file mode 100644
index 0000000..7348aed
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/email.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/email_go.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/email_go.png
new file mode 100644
index 0000000..4a6c5d3
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/email_go.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/error.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/error.png
new file mode 100644
index 0000000..628cf2d
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/error.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/exclamation.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/exclamation.png
new file mode 100644
index 0000000..c37bd06
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/exclamation.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/feed.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/feed.png
new file mode 100644
index 0000000..315c4f4
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/feed.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/find.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/find.png
new file mode 100644
index 0000000..1547479
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/find.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/folder_bug.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/folder_bug.png
new file mode 100644
index 0000000..4f791b6
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/folder_bug.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/folder_page.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/folder_page.png
new file mode 100644
index 0000000..1ef6e11
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/folder_page.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/help.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/help.png
new file mode 100644
index 0000000..5c87017
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/help.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/house.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/house.png
new file mode 100644
index 0000000..fed6221
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/house.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/information.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/information.png
new file mode 100644
index 0000000..12cd1ae
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/information.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/key.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/key.png
new file mode 100644
index 0000000..4ec1a92
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/key.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/key_disabled.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/key_disabled.png
new file mode 100644
index 0000000..c6b3cff
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/key_disabled.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/key_go.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/key_go.png
new file mode 100644
index 0000000..30b0dc3
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/key_go.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/key_go_disabled.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/key_go_disabled.png
new file mode 100644
index 0000000..2274d93
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/key_go_disabled.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/lightning.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/lightning.png
new file mode 100644
index 0000000..9680afd
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/lightning.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/page.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/page.png
new file mode 100644
index 0000000..03ddd79
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/page.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/page_white.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/page_white.png
new file mode 100644
index 0000000..8b8b1ca
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/page_white.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/page_white_csharp.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/page_white_csharp.png
new file mode 100644
index 0000000..ffb8fc9
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/page_white_csharp.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/plugin.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/plugin.png
new file mode 100644
index 0000000..6187b15
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/plugin.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/plugin_go.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/plugin_go.png
new file mode 100644
index 0000000..41da991
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/plugin_go.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/plugin_link.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/plugin_link.png
new file mode 100644
index 0000000..445c188
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/plugin_link.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/printer.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/printer.png
new file mode 100644
index 0000000..a350d18
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/printer.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/script.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/script.png
new file mode 100644
index 0000000..0f9ed4d
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/script.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/script_code.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/script_code.png
new file mode 100644
index 0000000..63fe6ce
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/script_code.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/server.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/server.png
new file mode 100644
index 0000000..720a237
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/server.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_add.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_add.png
new file mode 100644
index 0000000..3f10a3a
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_add.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_connect.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_connect.png
new file mode 100644
index 0000000..49b2691
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_connect.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_database.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_database.png
new file mode 100644
index 0000000..b24e826
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_database.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_delete.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_delete.png
new file mode 100644
index 0000000..61e740f
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_delete.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_edit.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_edit.png
new file mode 100644
index 0000000..dc76253
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_edit.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_error.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_error.png
new file mode 100644
index 0000000..f640256
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/server_error.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/stop.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/stop.png
new file mode 100644
index 0000000..0cfd585
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/stop.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table.png
new file mode 100644
index 0000000..abcd936
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_add.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_add.png
new file mode 100644
index 0000000..2a3e5c4
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_add.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_delete.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_delete.png
new file mode 100644
index 0000000..b85916d
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_delete.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_edit.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_edit.png
new file mode 100644
index 0000000..bfcb024
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_edit.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_error.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_error.png
new file mode 100644
index 0000000..589e92b
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_error.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_gear.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_gear.png
new file mode 100644
index 0000000..cfc2702
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_gear.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_go.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_go.png
new file mode 100644
index 0000000..0528dfa
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_go.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_key.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_key.png
new file mode 100644
index 0000000..34e23e2
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_key.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_lightning.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_lightning.png
new file mode 100644
index 0000000..612612b
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_lightning.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_link.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_link.png
new file mode 100644
index 0000000..decac8a
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_link.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_multiple.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_multiple.png
new file mode 100644
index 0000000..d76448e
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_multiple.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_refresh.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_refresh.png
new file mode 100644
index 0000000..ab92010
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_refresh.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_relationship.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_relationship.png
new file mode 100644
index 0000000..28b8505
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_relationship.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_row_delete.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_row_delete.png
new file mode 100644
index 0000000..54c6969
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_row_delete.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_row_insert.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_row_insert.png
new file mode 100644
index 0000000..ff5925e
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_row_insert.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_save.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_save.png
new file mode 100644
index 0000000..25b74d1
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_save.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_sort.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_sort.png
new file mode 100644
index 0000000..ed6785a
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/table_sort.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/Thumbs.db b/minisqlquery-master/src/MiniSqlQuery.Core/Images/Thumbs.db
new file mode 100644
index 0000000..9684838
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/Thumbs.db differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/tick.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/tick.png
new file mode 100644
index 0000000..a9925a0
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/tick.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/view.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/view.png
new file mode 100644
index 0000000..b14f218
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/view.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/view_multiple.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/view_multiple.png
new file mode 100644
index 0000000..3d36321
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/view_multiple.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/world_link.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/world_link.png
new file mode 100644
index 0000000..b8edc12
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/world_link.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/wrench.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/wrench.png
new file mode 100644
index 0000000..5c8213f
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/wrench.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Images/wrench_orange.png b/minisqlquery-master/src/MiniSqlQuery.Core/Images/wrench_orange.png
new file mode 100644
index 0000000..565a933
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/Images/wrench_orange.png differ
Added +48 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IMostRecentFilesService.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IMostRecentFilesService.cs
new file mode 100644
index 0000000..5ac1cfe
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IMostRecentFilesService.cs
@@ -0,0 +1,48 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	Tracks a list of filenames with promotion etc.
+    /// </summary>
+    public interface IMostRecentFilesService
+    {
+        /// <summary>
+        /// Occurs when a change to the most recent files list is made.
+        /// </summary>
+        event EventHandler<MostRecentFilesChangedEventArgs> MostRecentFilesChanged;
+
+        /// <summary>
+        /// Gets the filenames on the MRU list.
+        /// </summary>
+        /// <value>The filenames.</value>
+        IList<string> Filenames { get; }
+
+        /// <summary>
+        /// Gets the maximum number of MRU commands.
+        /// </summary>
+        /// <value>The maximum number of MRU commands.</value>
+        int MaxCommands { get; }
+
+        /// <summary>
+        /// Registers the specified <paramref name="filename"/>.
+        /// </summary>
+        /// <param name="filename">The <paramref name="filename"/> to register.</param>
+        void Register(string filename);
+
+        /// <summary>
+        /// Removes the specified <paramref name="filename"/> from the list.
+        /// </summary>
+        /// <param name="filename">The <paramref name="filename"/> to remove.</param>
+        void Remove(string filename);
+    }
+}
\ No newline at end of file
Added +9 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/INamedObject.cs b/minisqlquery-master/src/MiniSqlQuery.Core/INamedObject.cs
new file mode 100644
index 0000000..e0ca98d
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/INamedObject.cs
@@ -0,0 +1,9 @@
+using System;
+
+namespace MiniSqlQuery.Core
+{
+	public interface INamedObject
+	{
+		string Name { get; }
+	}
+}
\ No newline at end of file
Added +50 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/INavigatableDocument.cs b/minisqlquery-master/src/MiniSqlQuery.Core/INavigatableDocument.cs
new file mode 100644
index 0000000..d5cb377
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/INavigatableDocument.cs
@@ -0,0 +1,50 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	An interface for a "document" that can be navigated with a cursor, e.g. position at line 1, column 4 etc.
+    /// </summary>
+    public interface INavigatableDocument : ISupportCursorOffset
+    {
+        /// <summary>
+        /// 	Gets the current column the cursor is in.
+        /// </summary>
+        /// <value>The cursor column.</value>
+        int CursorColumn { get; }
+
+        /// <summary>
+        /// 	Gets the current line the cursor is on.
+        /// </summary>
+        /// <value>The cursor line.</value>
+        int CursorLine { get; }
+
+        /// <summary>
+        /// 	Gets the the total number of lines in the editor.
+        /// </summary>
+        /// <value>The total lines.</value>
+        int TotalLines { get; }
+
+        /// <summary>
+        /// 	Sets the cursor by <paramref name = "line" /> and <paramref name = "column" />.
+        /// </summary>
+        /// <param name = "line">The line number.</param>
+        /// <param name = "column">The column number.</param>
+        /// <returns>The set cursor by location.</returns>
+        bool SetCursorByLocation(int line, int column);
+
+        /// <summary>
+        /// 	Sets the cursor position by offset.
+        /// </summary>
+        /// <param name = "offset">The offset for the cursor.</param>
+        /// <returns>The set cursor by offset.</returns>
+        bool SetCursorByOffset(int offset);
+    }
+}
\ No newline at end of file
Added +33 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IPerformTask.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IPerformTask.cs
new file mode 100644
index 0000000..bcf4beb
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IPerformTask.cs
@@ -0,0 +1,33 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	Intended as a window level task such as executing a query (like applying ICommand to a window).
+    /// </summary>
+    public interface IPerformTask
+    {
+        /// <summary>
+        /// 	Gets a value indicating whether this instance is busy.
+        /// </summary>
+        /// <value>True if busy.</value>
+        bool IsBusy { get; }
+
+        /// <summary>
+        /// 	Cancels the current task.
+        /// </summary>
+        void CancelTask();
+
+        /// <summary>
+        /// 	Executes the current task.
+        /// </summary>
+        void ExecuteTask();
+    }
+}
\ No newline at end of file
Added +65 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IPlugIn.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IPlugIn.cs
new file mode 100644
index 0000000..86215b6
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IPlugIn.cs
@@ -0,0 +1,65 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	An interface for simple plugins for use in extending Mini SQL Query.
+    /// 	Plugins are loaded from DLL's in the working directory matching the pattern "*.PlugIn.dll"
+    /// </summary>
+    /// <remarks>
+    /// 	<para>Plugins are created during the load process.
+    /// 		After all plugins are loaded they are sorted by the <see cref = "RequestedLoadOrder" /> property.
+    /// 		Next the <see cref = "LoadPlugIn" /> method is called on each in turn supplying a reference to<see cref = "IApplicationServices" />. 
+    /// 		Next the main application form is displayed and after all control creation is complete (i.e. after the Form
+    /// 		Shown event) a call to <see cref = "InitializePlugIn" /> is made for each loaded plugin.
+    /// 		This is where <see cref = "ICommand" /> instances should be created and assigned to buttons, menus etc.
+    /// 		These services provide access to the rest of the editor.
+    /// 		As the main form is closing down, each plugins <see cref = "UnloadPlugIn" /> method is called.</para>
+    /// 	<para>The <see cref = "PluginLoaderBase" /> class can be used to handle the basics of a plugin class to speed development.</para>
+    /// </remarks>
+    public interface IPlugIn
+    {
+        /// <summary>
+        /// 	Gets a brief description of the plugin.
+        /// </summary>
+        /// <value>The plugin description.</value>
+        string PluginDescription { get; }
+
+        /// <summary>
+        /// 	Gets the descriptive name of the plugin.
+        /// </summary>
+        /// <value>The plugin name.</value>
+        string PluginName { get; }
+
+        /// <summary>
+        /// 	Gets the plugin load order. For external plugins start with values over 1000. 
+        /// 	This is a simple way of handling dependencies of other services etc.
+        /// </summary>
+        /// <value>The requested load order.</value>
+        int RequestedLoadOrder { get; }
+
+        /// <summary>
+        /// 	Initializes the plug in, called after the main form is displayed.
+        /// </summary>
+        void InitializePlugIn();
+
+        /// <summary>
+        /// 	Loads the plugin and stores a reference to the service container.
+        /// 	Called at application startup time.
+        /// </summary>
+        /// <param name = "services">The service container, allows access to other serivces in the application.</param>
+        void LoadPlugIn(IApplicationServices services);
+
+        /// <summary>
+        /// 	Called when the plugin is unloading (typically application shutdown).
+        /// </summary>
+        void UnloadPlugIn();
+    }
+}
\ No newline at end of file
Added +24 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IPrintableContent.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IPrintableContent.cs
new file mode 100644
index 0000000..f6d8373
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IPrintableContent.cs
@@ -0,0 +1,24 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System.Drawing.Printing;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	If implemented it signals that the class supports printing of the "contents" of the object.
+    /// </summary>
+    public interface IPrintableContent
+    {
+        /// <summary>
+        /// 	Gets the "document" to print (or null if not supported in the current context).
+        /// </summary>
+        /// <value>The print document.</value>
+        PrintDocument PrintDocument { get; }
+    }
+}
\ No newline at end of file
Added +24 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IQueryBatchProvider.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IQueryBatchProvider.cs
new file mode 100644
index 0000000..8bf6000
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IQueryBatchProvider.cs
@@ -0,0 +1,24 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	A query batch provider is a class (typically a window) that manages a 
+    /// 	batch query and therefore has a data result etc.
+    /// </summary>
+    public interface IQueryBatchProvider
+    {
+        /// <summary>
+        /// 	Gets a reference to the batch.
+        /// </summary>
+        /// <value>The query batch.</value>
+        QueryBatch Batch { get; }
+    }
+}
\ No newline at end of file
Added +36 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IQueryEditor.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IQueryEditor.cs
new file mode 100644
index 0000000..559c483
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IQueryEditor.cs
@@ -0,0 +1,36 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System.Windows.Forms;
+using ICSharpCode.TextEditor.Gui.CompletionWindow;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	The functions of the editing window.
+    /// </summary>
+    public interface IQueryEditor : IPerformTask, IFindReplaceProvider, INavigatableDocument, IQueryBatchProvider, IEditor
+    {
+        /// <summary>
+        /// 	Gets a reference to the actual editor control.
+        /// </summary>
+        /// <value>The editor control.</value>
+        Control EditorControl { get; }
+
+        /// <summary>
+        /// 	Sets the "status" text for the form.
+        /// </summary>
+        /// <param name = "text">The message to appear in the status bar.</param>
+        void SetStatus(string text);
+
+        /// <summary>
+        /// Access to the code completion window.
+        /// </summary>
+        CodeCompletionWindow CodeCompletionWindow { get; set; }
+    }
+}
\ No newline at end of file
Added +23 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/ISupportCursorOffset.cs b/minisqlquery-master/src/MiniSqlQuery.Core/ISupportCursorOffset.cs
new file mode 100644
index 0000000..0bb899e
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/ISupportCursorOffset.cs
@@ -0,0 +1,23 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	A "document" that supports reporting the position of it's cursor.
+    /// </summary>
+    public interface ISupportCursorOffset
+    {
+        /// <summary>
+        /// 	Gets the cursor offset.
+        /// </summary>
+        /// <value>The cursor offset.</value>
+        int CursorOffset { get; }
+    }
+}
\ No newline at end of file
Added +24 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/ITextFindService.cs b/minisqlquery-master/src/MiniSqlQuery.Core/ITextFindService.cs
new file mode 100644
index 0000000..b02cb69
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/ITextFindService.cs
@@ -0,0 +1,24 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	A text finding serice interface. A window can implement this interface and sit will allow searching of its text.
+    /// </summary>
+    public interface ITextFindService
+    {
+        /// <summary>
+        /// 	Finds the next string of text depending on the contrnts of the <paramref name = "request" />.
+        /// </summary>
+        /// <param name = "request">The request.</param>
+        /// <returns>A find request with position updated.</returns>
+        FindTextRequest FindNext(FindTextRequest request);
+    }
+}
\ No newline at end of file
Added +35 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/IViewTable.cs b/minisqlquery-master/src/MiniSqlQuery.Core/IViewTable.cs
new file mode 100644
index 0000000..9d17cd6
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/IViewTable.cs
@@ -0,0 +1,35 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	Interface for viewing table and view data.
+    /// </summary>
+    public interface IViewTable : IPerformTask, IQueryBatchProvider, INavigatableDocument
+    {
+        /// <summary>
+        /// 	Gets a value indicating whether AutoReload.
+        /// </summary>
+        /// <value>The auto reload.</value>
+        bool AutoReload { get; }
+
+        /// <summary>
+        /// 	Gets or sets TableName.
+        /// </summary>
+        /// <value>The table name.</value>
+        string TableName { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets Text of the window, i.e. the table name.
+        /// </summary>
+        /// <value>The text of the window.</value>
+        string Text { get; set; }
+    }
+}
\ No newline at end of file
Added +7 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Migrated rules for MiniSqlQuery.Core (2).ruleset b/minisqlquery-master/src/MiniSqlQuery.Core/Migrated rules for MiniSqlQuery.Core (2).ruleset
new file mode 100644
index 0000000..c90c35b
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Migrated rules for MiniSqlQuery.Core (2).ruleset
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RuleSet Name="Migrated rules for MiniSqlQuery.Core (2).ruleset" Description="This rule set was created from the CodeAnalysisRules property for the &quot;Debug (Any CPU)&quot; configuration in project &quot;C:\Projects\MiniSqlQuery\trunk\MiniSqlQuery.Core\MiniSqlQuery.Core.csproj&quot;." ToolsVersion="10.0">
+  <IncludeAll Action="Warning" />
+  <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
+    <Rule Id="CA1004" Action="None" />
+  </Rules>
+</RuleSet>
\ No newline at end of file
Added +376 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/MiniSqlQuery.Core.csproj b/minisqlquery-master/src/MiniSqlQuery.Core/MiniSqlQuery.Core.csproj
new file mode 100644
index 0000000..dee3305
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/MiniSqlQuery.Core.csproj
@@ -0,0 +1,376 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{B819CF6A-B5FD-4E85-842D-FD855F856A5A}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>MiniSqlQuery.Core</RootNamespace>
+    <AssemblyName>MiniSqlQuery.Core</AssemblyName>
+    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>MiniSqlQuery.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\Build\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>..\Build\Debug\MiniSqlQuery.Core.XML</DocumentationFile>
+    <RunCodeAnalysis>false</RunCodeAnalysis>
+    <NoWarn>1591</NoWarn>
+    <CodeAnalysisRules>
+    </CodeAnalysisRules>
+    <CodeAnalysisRuleSet>Migrated rules for MiniSqlQuery.Core (2).ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </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>
+    <DocumentationFile>bin\Release\MiniSqlQuery.Core.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <NoWarn>1591</NoWarn>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release - No Tests|AnyCPU' ">
+    <OutputPath>bin\Release - No Tests\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <DocumentationFile>bin\Release\MiniSqlQuery.Core.xml</DocumentationFile>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+    <NoWarn>1591</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Web" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\CommonAssemblyInfo.cs">
+      <Link>CommonAssemblyInfo.cs</Link>
+    </Compile>
+    <Compile Include="BasicTextFindService.cs" />
+    <Compile Include="BatchProgressEventArgs.cs" />
+    <Compile Include="CommandManager.cs" />
+    <Compile Include="Commands\CancelTaskCommand.cs" />
+    <Compile Include="Commands\CloseActiveWindowCommand.cs" />
+    <Compile Include="Commands\CloseAllWindowsCommand.cs" />
+    <Compile Include="Commands\CommandBase.cs" />
+    <Compile Include="ApplicationServices.cs" />
+    <Compile Include="Commands\CloseDatabaseConnectionCommand.cs" />
+    <Compile Include="Commands\ConvertTextToLowerCaseCommand.cs" />
+    <Compile Include="Commands\ConvertTextToTitleCaseCommand.cs" />
+    <Compile Include="Commands\ConvertTextToUpperCaseCommand.cs" />
+    <Compile Include="Commands\CopyQueryEditorFileNameCommand.cs" />
+    <Compile Include="Commands\DisplayDbModelDependenciesCommand.cs" />
+    <Compile Include="Commands\EmailAuthorCommand.cs" />
+    <Compile Include="Commands\ExecuteTaskCommand.cs" />
+    <Compile Include="Commands\ExitApplicationCommand.cs" />
+    <Compile Include="Commands\GenerateCommandCodeCommand.cs" />
+    <Compile Include="Commands\InsertGuidCommand.cs" />
+    <Compile Include="Commands\NewQueryFormCommand.cs" />
+    <Compile Include="Commands\OpenConnectionFileCommand.cs" />
+    <Compile Include="Commands\PasteAroundSelectionCommand.cs" />
+    <Compile Include="Commands\PrintCommand.cs" />
+    <Compile Include="Commands\RefreshDatabaseConnectionCommand.cs" />
+    <Compile Include="Commands\SetLeftPasteAroundSelectionCommand.cs" />
+    <Compile Include="Commands\SetRightPasteAroundSelectionCommand.cs" />
+    <Compile Include="Commands\ShowHelpCommand.cs" />
+    <Compile Include="Commands\ShowUrlCommand.cs" />
+    <Compile Include="Commands\ShowWebPageCommand.cs" />
+    <Compile Include="Controls\BatchQuerySelectControl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Controls\BatchQuerySelectControl.Designer.cs">
+      <DependentUpon>BatchQuerySelectControl.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Controls\ExceptionControl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Controls\ExceptionControl.Designer.cs">
+      <DependentUpon>ExceptionControl.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Controls\PluginListControl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Controls\PluginListControl.Designer.cs">
+      <DependentUpon>PluginListControl.cs</DependentUpon>
+    </Compile>
+    <Compile Include="DatabaseMetaDataService.cs" />
+    <Compile Include="DbModel\DbModelConstraint.cs" />
+    <Compile Include="DbModel\DbModelDependencyWalker.cs" />
+    <Compile Include="DbModel\DbModelForeignKeyReference.cs" />
+    <Compile Include="DbModel\DbModelObjectBase.cs" />
+    <Compile Include="DbModel\DbModelInstance.cs" />
+    <Compile Include="DbModel\DbModelColumn.cs" />
+    <Compile Include="DbConnectionDefinition.cs" />
+    <Compile Include="DbConnectionDefinitionList.cs" />
+    <Compile Include="DbModel\DbModelTable.cs" />
+    <Compile Include="DbModel\DbModelType.cs" />
+    <Compile Include="DbModel\DbModelView.cs" />
+    <Compile Include="DbModel\GenericSchemaService.cs" />
+    <Compile Include="DbModel\ISqlWriter.cs" />
+    <Compile Include="DbModel\OleDbSchemaService.cs" />
+    <Compile Include="DbModel\OracleSchemaService.cs" />
+    <Compile Include="DbModel\SqlCeSchemaService.cs" />
+    <Compile Include="DbModel\SqlClientSchemaService.cs" />
+    <Compile Include="DbModel\SqlWriter.cs" />
+    <Compile Include="FileEditorDescriptor.cs" />
+    <Compile Include="FileEditorResolverService.cs" />
+    <Compile Include="Forms\BatchQuerySelectForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Forms\BatchQuerySelectForm.Designer.cs">
+      <DependentUpon>BatchQuerySelectForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="IApplicationServices.cs" />
+    <Compile Include="ICompletionProvider.cs" />
+    <Compile Include="IDatabaseSchemaService.cs" />
+    <Compile Include="IEditor.cs" />
+    <Compile Include="IFileEditorResolver.cs" />
+    <Compile Include="IFindReplaceProvider.cs" />
+    <Compile Include="FindReplaceTextRequest.cs" />
+    <Compile Include="IApplicationSettings.cs" />
+    <Compile Include="ICommand.cs" />
+    <Compile Include="IDatabaseInspector.cs" />
+    <Compile Include="IFindReplaceWindow.cs" />
+    <Compile Include="IHostWindow.cs" />
+    <Compile Include="ImageResource.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>ImageResource.resx</DependentUpon>
+    </Compile>
+    <Compile Include="IDbModelNamedObject.cs" />
+    <Compile Include="IMostRecentFilesService.cs" />
+    <Compile Include="INavigatableDocument.cs" />
+    <Compile Include="IPerformTask.cs" />
+    <Compile Include="IPlugIn.cs" />
+    <Compile Include="IPrintableContent.cs" />
+    <Compile Include="IQueryBatchProvider.cs" />
+    <Compile Include="IQueryEditor.cs" />
+    <Compile Include="CommandControlBuilder.cs" />
+    <Compile Include="IConfigurationObject.cs" />
+    <Compile Include="ISupportCursorOffset.cs" />
+    <Compile Include="ITextFindService.cs" />
+    <Compile Include="IViewTable.cs" />
+    <Compile Include="MostRecentFilesChangedEventArgs.cs" />
+    <Compile Include="MostRecentFilesService.cs" />
+    <Compile Include="NotifyPropertyChangedBase.cs" />
+    <Compile Include="ObjectTypes.cs" />
+    <Compile Include="PlugInComparer.cs" />
+    <Compile Include="PluginLoaderBase.cs" />
+    <Compile Include="PlugInUtility.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="Query.cs" />
+    <Compile Include="QueryBatch.cs" />
+    <Compile Include="QueryRunner.cs" />
+    <Compile Include="SqlQueryRunner.cs" />
+    <Compile Include="StringWriterWithEncoding.cs" />
+    <Compile Include="SystemMessage.cs" />
+    <Compile Include="SystemMessageEventArgs.cs" />
+    <Compile Include="Template\NVelocityWrapper.cs" />
+    <Compile Include="Template\TemplateException.cs" />
+    <Compile Include="Template\TextFormatter.cs" />
+    <Compile Include="Utility.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="DefaultConnectionDefinitionFile.xml" />
+    <Content Include="Images\accept.png" />
+    <None Include="Images\add.png" />
+    <Content Include="Images\App.ico" />
+    <Content Include="Images\ApplicationIcon.png" />
+    <Content Include="Images\around_text.png" />
+    <Content Include="Images\cancel.png" />
+    <Content Include="Images\cog.png" />
+    <None Include="Images\column.png" />
+    <None Include="Images\comments.png" />
+    <None Include="Images\key_disabled.png" />
+    <None Include="Images\key_go_disabled.png" />
+    <Content Include="Images\column_row_version.png" />
+    <Content Include="Images\cross.png" />
+    <Content Include="Images\database.png" />
+    <Content Include="Images\database_add.png" />
+    <Content Include="Images\database_delete.png" />
+    <Content Include="Images\database_edit.ico" />
+    <Content Include="Images\database_edit.png" />
+    <Content Include="Images\database_error.png" />
+    <Content Include="Images\database_refresh.png" />
+    <Content Include="Images\disconnect.ico" />
+    <Content Include="Images\disconnect.png" />
+    <Content Include="Images\disk.png" />
+    <Content Include="Images\disk_multiple.png" />
+    <Content Include="Images\email.png" />
+    <Content Include="Images\email_go.png" />
+    <None Include="Images\feed.png" />
+    <None Include="Images\exclamation.png" />
+    <None Include="Images\error.png" />
+    <Content Include="Images\find.png" />
+    <None Include="Images\folder_bug.png" />
+    <Content Include="Images\folder_page.png" />
+    <None Include="Images\help.png" />
+    <None Include="Images\house.png" />
+    <None Include="Images\information.png" />
+    <None Include="Images\key.png" />
+    <Content Include="Images\key_go.png" />
+    <Content Include="Images\lightning.png" />
+    <Content Include="Images\page.png" />
+    <Content Include="Images\page_white.png" />
+    <None Include="Images\page_white_csharp.png" />
+    <Content Include="Images\plugin.png" />
+    <Content Include="Images\plugin_go.png" />
+    <Content Include="Images\plugin_link.png" />
+    <None Include="Images\printer.png" />
+    <Content Include="Images\script.png" />
+    <Content Include="Images\script_code.png" />
+    <None Include="Images\stop.png" />
+    <None Include="Images\server.png" />
+    <None Include="Images\server_add.png" />
+    <None Include="Images\server_connect.png" />
+    <None Include="Images\server_database.png" />
+    <None Include="Images\server_delete.png" />
+    <None Include="Images\server_edit.png" />
+    <None Include="Images\server_error.png" />
+    <Content Include="Images\table.png" />
+    <None Include="Images\table_add.png" />
+    <Content Include="Images\table_delete.png" />
+    <None Include="Images\table_edit.png" />
+    <None Include="Images\table_error.png" />
+    <None Include="Images\table_gear.png" />
+    <Content Include="Images\table_go.png" />
+    <None Include="Images\table_key.png" />
+    <None Include="Images\table_row_insert.png" />
+    <None Include="Images\table_row_delete.png" />
+    <None Include="Images\table_relationship.png" />
+    <None Include="Images\table_refresh.png" />
+    <None Include="Images\table_multiple.png" />
+    <None Include="Images\table_link.png" />
+    <None Include="Images\table_lightning.png" />
+    <Content Include="Images\table_save.png" />
+    <None Include="Images\wrench.png" />
+    <None Include="Images\world_link.png" />
+    <None Include="Images\view_multiple.png" />
+    <None Include="Images\tick.png" />
+    <None Include="Images\wrench_orange.png" />
+    <None Include="Images\view.png" />
+    <None Include="Images\table_sort.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Controls\BatchQuerySelectControl.resx">
+      <DependentUpon>BatchQuerySelectControl.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Controls\ExceptionControl.resx">
+      <DependentUpon>ExceptionControl.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Controls\PluginListControl.resx">
+      <DependentUpon>PluginListControl.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Forms\BatchQuerySelectForm.resx">
+      <DependentUpon>BatchQuerySelectForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="ImageResource.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+      <LastGenOutput>ImageResource.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Migrated rules for MiniSqlQuery.Core %282%29.ruleset" />
+    <None Include="MiniSqlQuery.snk" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="DockPanelSuite">
+      <Version>2.9.0</Version>
+    </PackageReference>
+    <PackageReference Include="ICSharpCode.TextEditor">
+      <Version>3.2.1.6466</Version>
+    </PackageReference>
+    <PackageReference Include="Ninject">
+      <Version>3.3.4</Version>
+    </PackageReference>
+    <PackageReference Include="NVelocity">
+      <Version>1.2.0</Version>
+    </PackageReference>
+  </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>
+  -->
+</Project>
\ No newline at end of file
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/MiniSqlQuery.snk b/minisqlquery-master/src/MiniSqlQuery.Core/MiniSqlQuery.snk
new file mode 100644
index 0000000..9b2560f
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Core/MiniSqlQuery.snk differ
Added +18 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/MostRecentFilesChangedEventArgs.cs b/minisqlquery-master/src/MiniSqlQuery.Core/MostRecentFilesChangedEventArgs.cs
new file mode 100644
index 0000000..d06d30c
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/MostRecentFilesChangedEventArgs.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	A system wide message event.
+    /// </summary>
+    public class MostRecentFilesChangedEventArgs : EventArgs
+    {
+        public MostRecentFilesChangedEventArgs(ICollection<string> filenames)
+        {
+            Filenames = filenames;
+        }
+
+        public ICollection<string> Filenames { get; private set; }
+    }
+}
\ No newline at end of file
Added +83 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/MostRecentFilesService.cs b/minisqlquery-master/src/MiniSqlQuery.Core/MostRecentFilesService.cs
new file mode 100644
index 0000000..dedcddb
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/MostRecentFilesService.cs
@@ -0,0 +1,83 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace MiniSqlQuery.Core
+{
+    public class MostRecentFilesService : IMostRecentFilesService
+    {
+        private readonly List<string> _filenames;
+
+        public MostRecentFilesService()
+        {
+            _filenames = new List<string>();
+        }
+
+        public event EventHandler<MostRecentFilesChangedEventArgs> MostRecentFilesChanged;
+
+        public IList<string> Filenames
+        {
+            get { return _filenames; }
+        }
+
+        public void OnMostRecentFilesChanged(MostRecentFilesChangedEventArgs e)
+        {
+            var handler = MostRecentFilesChanged;
+            if (handler != null)
+            {
+                handler(this, e);
+            }
+        }
+
+        public void Register(string filename)
+        {
+            if (!_filenames.Contains(filename))
+            {
+                _filenames.Insert(0, filename);
+            }
+            else
+            {
+                // move to top of list
+                if (_filenames.Count > 1)
+                {
+                    _filenames.Remove(filename);
+                    _filenames.Insert(0, filename);
+                }
+            }
+
+            // enure the list is capped
+            while (_filenames.Count > MaxCommands)
+            {
+                _filenames.RemoveAt(_filenames.Count - 1);
+            }
+
+            NotifyListenersOfChange();
+        }
+
+        public void Remove(string filename)
+        {
+            if (_filenames.Contains(filename))
+            {
+                _filenames.Remove(filename);
+            }
+            NotifyListenersOfChange();
+        }
+
+        public int MaxCommands
+        {
+            get { return 10; }
+        }
+
+        protected void NotifyListenersOfChange()
+        {
+            OnMostRecentFilesChanged(new MostRecentFilesChangedEventArgs(_filenames));
+        }
+    }
+}
\ No newline at end of file
Added +49 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/NotifyPropertyChangedBase.cs b/minisqlquery-master/src/MiniSqlQuery.Core/NotifyPropertyChangedBase.cs
new file mode 100644
index 0000000..a23bd5b
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/NotifyPropertyChangedBase.cs
@@ -0,0 +1,49 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System.ComponentModel;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	The notify property changed base class.
+    /// </summary>
+    public abstract class NotifyPropertyChangedBase : INotifyPropertyChanged
+    {
+        /// <summary>
+        /// 	The property changed event, fired when a propety is modified.
+        /// </summary>
+        public virtual event PropertyChangedEventHandler PropertyChanged;
+
+        /// <summary>
+        /// 	The on property changed method (by property name).
+        /// </summary>
+        /// <param name = "propertyName">The property name that has been modified.</param>
+        protected void OnPropertyChanged(string propertyName)
+        {
+            PropertyChangedEventHandler changed = PropertyChanged;
+            if (changed != null)
+            {
+                changed(this, new PropertyChangedEventArgs(propertyName));
+            }
+        }
+
+        /// <summary>
+        /// 	The on property changed method.
+        /// </summary>
+        /// <param name = "e">The events.</param>
+        protected void OnPropertyChanged(PropertyChangedEventArgs e)
+        {
+            PropertyChangedEventHandler changed = PropertyChanged;
+            if (changed != null)
+            {
+                changed(this, e);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +32 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/ObjectTypes.cs b/minisqlquery-master/src/MiniSqlQuery.Core/ObjectTypes.cs
new file mode 100644
index 0000000..4762dbc
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/ObjectTypes.cs
@@ -0,0 +1,32 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	The object types.
+    /// </summary>
+    public class ObjectTypes
+    {
+        /// <summary>
+        /// 	A column type.
+        /// </summary>
+        public const string Column = "Column";
+
+        /// <summary>
+        /// 	A table type.
+        /// </summary>
+        public const string Table = "Table";
+
+        /// <summary>
+        /// 	A view type.
+        /// </summary>
+        public const string View = "View";
+    }
+}
\ No newline at end of file
Added +51 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/PlugInComparer.cs b/minisqlquery-master/src/MiniSqlQuery.Core/PlugInComparer.cs
new file mode 100644
index 0000000..f06e796
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/PlugInComparer.cs
@@ -0,0 +1,51 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System.Collections.Generic;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	Used for sorting plugins at load time, a very simple ordering system for the plugins.
+    /// </summary>
+    public class PlugInComparer : IComparer<IPlugIn>
+    {
+        /// <summary>
+        /// 	Orders two plugin classes.
+        /// </summary>
+        /// <param name = "x">The left side object.</param>
+        /// <param name = "y">The right side object.</param>
+        /// <returns>The compare result.</returns>
+        public int Compare(IPlugIn x, IPlugIn y)
+        {
+            int result;
+
+            if (x == null && y == null)
+            {
+                result = 0;
+            }
+            else if (y == null)
+            {
+                result = -1;
+            }
+            else if (x == null)
+            {
+                result = 1;
+            }
+            else
+            {
+                int numX = x.RequestedLoadOrder;
+                int numY = y.RequestedLoadOrder;
+
+                result = numX - numY;
+            }
+
+            return result;
+        }
+    }
+}
\ No newline at end of file
Added +96 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/PluginLoaderBase.cs b/minisqlquery-master/src/MiniSqlQuery.Core/PluginLoaderBase.cs
new file mode 100644
index 0000000..79edeca
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/PluginLoaderBase.cs
@@ -0,0 +1,96 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	A simple base class to use for implementing the <see cref = "IPlugIn" /> interface.
+    /// </summary>
+    public abstract class PluginLoaderBase : IPlugIn
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "PluginLoaderBase" /> class. Creates a new instance of a plugin loader class.
+        /// </summary>
+        /// <param name = "name">The descriptive name of the plugin</param>
+        /// <param name = "description">A brief description of the plugin.</param>
+        /// <remarks>
+        /// 	The <see cref = "RequestedLoadOrder" /> defaults to 1000.
+        /// </remarks>
+        protected PluginLoaderBase(string name, string description)
+            : this(name, description, 1000)
+        {
+        }
+
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "PluginLoaderBase" /> class. Creates a new instance of a plugin loader class.
+        /// </summary>
+        /// <param name = "name">The descriptive name of the plugin</param>
+        /// <param name = "description">A brief description of the plugin.</param>
+        /// <param name = "requestedLoadOrder">The requested load order. See <see cref = "IPlugIn.RequestedLoadOrder" />.</param>
+        protected PluginLoaderBase(string name, string description, int requestedLoadOrder)
+        {
+            PluginName = name;
+            PluginDescription = description;
+            RequestedLoadOrder = requestedLoadOrder;
+        }
+
+        /// <summary>
+        /// 	Gets a brief description of the plugin.
+        /// </summary>
+        /// <value>The plugin description.</value>
+        public string PluginDescription { get; private set; }
+
+        /// <summary>
+        /// 	Gets the descriptive name of the plugin.
+        /// </summary>
+        /// <value>The plugin name.</value>
+        public string PluginName { get; private set; }
+
+        /// <summary>
+        /// 	Gets the "order" value for a lame ordering system. 
+        ///		TODO: needs to be replaced with Windsor containter etc.
+        /// </summary>
+        /// <value>The requested load order.</value>
+        public int RequestedLoadOrder { get; private set; }
+
+        /// <summary>
+        /// 	Gets a reference to the applications service manager.
+        /// </summary>
+        /// <value>The services.</value>
+        public IApplicationServices Services { get; private set; }
+
+        /// <summary>
+        /// 	Must be implemented by the inheriting class. 
+        /// 	Called after the application has started.
+        /// </summary>
+        public abstract void InitializePlugIn();
+
+        /// <summary>
+        /// 	Called when the plugins are loading during application startup. 
+        /// 	Stores the reference to <paramref name = "services" />.
+        /// </summary>
+        /// <param name = "services">The application services intance.</param>
+        public void LoadPlugIn(IApplicationServices services)
+        {
+            Services = services;
+        }
+
+        /// <summary>
+        /// 	Called as the application is shutting down.
+        /// </summary>
+        /// <remarks>
+        /// 	In most cases there is probably no need to do anything here, all controls etc created
+        /// 	will be disposed of implicitly. It would only be unmanaged references created explicitly
+        /// 	by the plugin that would need removal or cleanup.
+        /// </remarks>
+        public virtual void UnloadPlugIn()
+        {
+        }
+    }
+}
\ No newline at end of file
Added +68 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/PlugInUtility.cs b/minisqlquery-master/src/MiniSqlQuery.Core/PlugInUtility.cs
new file mode 100644
index 0000000..413821c
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/PlugInUtility.cs
@@ -0,0 +1,68 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Reflection;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	Helper class for loading external plugins.
+    /// </summary>
+    public class PlugInUtility
+    {
+        /// <summary>
+        /// 	Search <paramref name = "baseDir" /> for files that match the pattern <paramref name = "searchPattern" />
+        /// 	and return an array of instances.
+        /// </summary>
+        /// <returns>An array of instances of the plugins found.</returns>
+        /// <typeparam name = "T">The type (interface or class) to find instances of.</typeparam>
+        /// <param name = "baseDir">The search base.</param>
+        /// <param name = "searchPattern">Search pattern, e.g. "*.dll".</param>
+        public static T[] GetInstances<T>(string baseDir, string searchPattern)
+        {
+            var tmpInstances = new List<T>();
+            Assembly pluginAssembly;
+
+            try
+            {
+                // perform the file search
+                string[] files = Directory.GetFiles(baseDir, searchPattern, SearchOption.TopDirectoryOnly);
+
+                // load each asembly and inspect for instances of T
+                foreach (string file in files)
+                {
+                    pluginAssembly = Assembly.LoadFrom(file);
+                    Type[] assemblyTypes = pluginAssembly.GetTypes();
+
+                    // check each assembly to se it it implements the interface T
+                    foreach (Type assemblyType in assemblyTypes)
+                    {
+                        Type instanceType = assemblyType.GetInterface(typeof(T).FullName);
+                        if (instanceType != null)
+                        {
+                            // this instance type matches T, create an instance of the class and add it to the list
+                            tmpInstances.Add((T)Activator.CreateInstance(assemblyType));
+                        }
+                    }
+                }
+            }
+            catch (TargetInvocationException exp)
+            {
+                if (exp.InnerException != null)
+                {
+                    throw exp.InnerException;
+                }
+            }
+
+            return tmpInstances.ToArray();
+        }
+    }
+}
\ No newline at end of file
Added +16 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Properties/AssemblyInfo.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..56152c5
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Properties/AssemblyInfo.cs
@@ -0,0 +1,16 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Reflection;
+
+[assembly: AssemblyTitle("Mini SQL Query Core Services and Interfaces")]
+[assembly: AssemblyDescription("A Mini SQL Query Core interfaces and classes.")]
+[assembly: AssemblyProduct("MiniSqlQuery.Core")]
+[assembly: AssemblyVersion("1.19.11.03")]
+[assembly: AssemblyFileVersion("1.19.11.03")]
+
+// see also CommonAssemblyInfo.cs 
Added +100 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Properties/Resources.Designer.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..2c0445b
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Properties/Resources.Designer.cs
@@ -0,0 +1,100 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace MiniSqlQuery.Core.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    public 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>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MiniSqlQuery.Core.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+        ///
+        ///&lt;DbConnectionDefinitionList xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;
+        ///	&lt;Definitions&gt;
+        ///		&lt;DbConnectionDefinition&gt;
+        ///			&lt;Name&gt;Default - MSSQL Master@localhost&lt;/Name&gt;
+        ///			&lt;ProviderName&gt;System.Data.SqlClient&lt;/ProviderName&gt;
+        ///			&lt;ConnectionString&gt;Server=.; Database=master; Integrated Security=SSPI&lt;/ConnectionString&gt;
+        ///		&lt;/DbConnectionDefinition&gt;
+        ///		&lt;DbConnectionDefinition&gt;
+        ///			&lt;Name&gt;Sample MSSQL Northwind SQL Expres [rest of string was truncated]&quot;;.
+        /// </summary>
+        public static string DefaultConnectionDefinitionFile {
+            get {
+                return ResourceManager.GetString("DefaultConnectionDefinitionFile", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Mini SQLQuery.
+        /// </summary>
+        public static string FriendlyAppTitle {
+            get {
+                return ResourceManager.GetString("FriendlyAppTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to MiniSqlQuery.
+        /// </summary>
+        public static string ShortAppTitle {
+            get {
+                return ResourceManager.GetString("ShortAppTitle", resourceCulture);
+            }
+        }
+    }
+}
Added +130 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Properties/Resources.resx b/minisqlquery-master/src/MiniSqlQuery.Core/Properties/Resources.resx
new file mode 100644
index 0000000..6089ada
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Properties/Resources.resx
@@ -0,0 +1,130 @@
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="DefaultConnectionDefinitionFile" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\defaultconnectiondefinitionfile.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
+  </data>
+  <data name="FriendlyAppTitle" xml:space="preserve">
+    <value>Mini SQLQuery</value>
+  </data>
+  <data name="ShortAppTitle" xml:space="preserve">
+    <value>MiniSqlQuery</value>
+  </data>
+</root>
\ No newline at end of file
Added +52 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Query.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Query.cs
new file mode 100644
index 0000000..b4c10fb
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Query.cs
@@ -0,0 +1,52 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Data;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	Represents an SQL query, some timings and the result (if executed).
+    /// </summary>
+    public class Query
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "Query" /> class.
+        /// </summary>
+        /// <param name = "sql">The SQL for the query.</param>
+        public Query(string sql)
+        {
+            Sql = sql;
+        }
+
+        /// <summary>
+        /// 	Gets or sets the end time.
+        /// </summary>
+        /// <value>The end time.</value>
+        public DateTime EndTime { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets the result.
+        /// </summary>
+        /// <value>The result.</value>
+        public DataSet Result { get; set; }
+
+        /// <summary>
+        /// 	Gets the SQL query text.
+        /// </summary>
+        /// <value>The SQL query text.</value>
+        public string Sql { get; private set; }
+
+        /// <summary>
+        /// 	Gets or sets the start time.
+        /// </summary>
+        /// <value>The start time.</value>
+        public DateTime StartTime { get; set; }
+    }
+}
\ No newline at end of file
Added +125 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/QueryBatch.cs b/minisqlquery-master/src/MiniSqlQuery.Core/QueryBatch.cs
new file mode 100644
index 0000000..9c46bba
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/QueryBatch.cs
@@ -0,0 +1,125 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text.RegularExpressions;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	The query batch class represents a series of SQL statements to execute against a database.
+    /// </summary>
+    public class QueryBatch
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "QueryBatch" /> class.
+        /// 	A singular batch query.
+        /// </summary>
+        /// <param name = "sql">The SQL to create a single query from.</param>
+        /// <seealso cref="Parse"/>
+        public QueryBatch(string sql)
+            : this()
+        {
+            // OriginalSql = sql;
+            Add(new Query(sql));
+        }
+
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "QueryBatch" /> class.
+        /// </summary>
+        public QueryBatch()
+        {
+            Queries = new List<Query>();
+        }
+
+        /// <summary>
+        /// 	Gets or sets the end time of the batch.
+        /// </summary>
+        /// <value>The end time.</value>
+        public DateTime EndTime { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets Messages.
+        /// </summary>
+        /// <value>The messages.</value>
+        public string Messages { get; set; }
+
+        /// <summary>
+        /// 	Gets the query list for this batch.
+        /// </summary>
+        /// <value>The queries.</value>
+        public List<Query> Queries { get; private set; }
+
+        /// <summary>
+        /// 	Gets or sets the start time of the batch.
+        /// </summary>
+        /// <value>The start time.</value>
+        public DateTime StartTime { get; set; }
+
+        /// <summary>
+        /// 	Parses an <paramref name="sql"/> string creating a <see cref="QueryBatch"/> as a result.
+        ///		If query batching is enabled, the <paramref name="sql"/> string is split into multiple <see cref="Query"/> objects.
+        /// </summary>
+        /// <param name = "sql">The SQL string.</param>
+        /// <returns>A <see cref="QueryBatch"/> object with 0, 1 or many <see cref="Query"/> objects.</returns>
+        public static QueryBatch Parse(string sql)
+        {
+            var batch = new QueryBatch();
+
+            // exit if nothing to do
+            if (sql == null || sql.Trim().Length == 0)
+            {
+                return batch;
+            }
+
+            foreach (string sqlPart in SplitByBatchIndecator(sql, "GO").Where(sqlPart => !string.IsNullOrEmpty(sqlPart)))
+            {
+                batch.Add(new Query(sqlPart));
+            }
+
+            return batch;
+        }
+
+        /// <summary>
+        /// 	Adds a query to this batch.
+        /// </summary>
+        /// <param name = "query">The query.</param>
+        public void Add(Query query)
+        {
+            Queries.Add(query);
+        }
+
+        /// <summary>
+        /// 	Clears all queries in this batch.
+        /// </summary>
+        public void Clear()
+        {
+            Queries.Clear();
+        }
+
+        /// <summary>
+        /// 	Splits a <paramref name="script"/> by the <paramref name="batchIndicator"/>, typically "GO".
+        ///		The batch indicator needs to be on a line by itself.
+        /// </summary>
+        /// <param name = "script">The SQL script.</param>
+        /// <param name = "batchIndicator">The batch indicator, e.g. "GO".</param>
+        /// <returns>An enumerable list of stings.</returns>
+        private static IEnumerable<string> SplitByBatchIndecator(string script, string batchIndicator)
+        {
+            string pattern = string.Concat("^\\s*", batchIndicator, "\\s*$");
+            RegexOptions options = RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline;
+
+            foreach (string batch in Regex.Split(script, pattern, options))
+            {
+                yield return batch.Trim();
+            }
+        }
+    }
+}
\ No newline at end of file
Added +321 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/QueryRunner.cs b/minisqlquery-master/src/MiniSqlQuery.Core/QueryRunner.cs
new file mode 100644
index 0000000..b7c5438
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/QueryRunner.cs
@@ -0,0 +1,321 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Data;
+using System.Data.Common;
+using System.Data.SqlClient;
+using System.Diagnostics;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	Helper class to encapsulate query execution
+    /// </summary>
+    public class QueryRunner
+    {
+        /// <summary>
+        /// 	The connection string value.
+        /// </summary>
+        private readonly string _connectionString;
+
+        /// <summary>
+        /// 	The enable query batching value.
+        /// </summary>
+        private readonly bool _enableQueryBatching;
+
+        private readonly int _commandTimeout;
+
+        /// <summary>
+        /// 	The provider factory.
+        /// </summary>
+        private readonly DbProviderFactory _factory;
+
+        private DbCommand _command;
+
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "QueryRunner" /> class.
+        /// </summary>
+        /// <param name = "factory">The factory.</param>
+        /// <param name = "connectionString">The connection string.</param>
+        /// <param name = "enableQueryBatching">The enable query batching.</param>
+        /// <param name="commandTimeout"></param>
+        public QueryRunner(DbProviderFactory factory, string connectionString, bool enableQueryBatching, int commandTimeout)
+        {
+            _factory = factory;
+            _connectionString = connectionString;
+            _enableQueryBatching = enableQueryBatching;
+            _commandTimeout = commandTimeout;
+            Messages = string.Empty;
+        }
+
+        /// <summary>
+        /// 	The batch progress.
+        /// </summary>
+        public event EventHandler<BatchProgressEventArgs> BatchProgress;
+
+        /// <summary>
+        /// 	Gets or sets the <see cref="QueryBatch"/> for this query.
+        /// </summary>
+        /// <value>The query batch.</value>
+        public QueryBatch Batch { get; protected set; }
+
+        /// <summary>
+        /// 	Gets or sets Exception if any.
+        /// </summary>
+        /// <value>The exception.</value>
+        public DbException Exception { get; protected set; }
+
+        /// <summary>
+        /// 	Gets or sets a value indicating whether the query runner is busy.
+        /// </summary>
+        /// <value>The is busy value.</value>
+        public bool IsBusy { get; set; }
+
+        /// <summary>
+        /// 	Gets or sets the messages if any.
+        /// </summary>
+        /// <value>The messages.</value>
+        public string Messages { get; protected set; }
+
+        /// <summary>
+        /// Creates an instance of a query runner for the specified database.
+        /// </summary>
+        /// <param name="factory">The factory.</param>
+        /// <param name="connectionString">The connection string.</param>
+        /// <param name="enableQueryBatching">The enable query batching.</param>
+        /// <param name="commandTimeout">The command timeout.</param>
+        /// <returns>
+        /// A <see cref="QueryRunner"/> instance acording to the parameters.
+        /// </returns>
+        /// <remarks>
+        /// 	<example>
+        /// var runner = QueryRunner.Create(DbProviderFactories.GetFactory("System.Data.SqlClient"), connStr, true);
+        /// runner.ExecuteQuery("select * from Employees\r\nGO\r\nSelect * from Products");
+        /// // runner.Batch.Queries.Count == 2 //
+        /// </example>
+        /// </remarks>
+        public static QueryRunner Create(DbProviderFactory factory, string connectionString, bool enableQueryBatching, int commandTimeout)
+        {
+            if (factory.GetType().Name == "SqlClientFactory")
+            {
+                return new SqlQueryRunner(factory, connectionString, enableQueryBatching, commandTimeout);
+            }
+
+            // otherwise ise the default
+            return new QueryRunner(factory, connectionString, enableQueryBatching, commandTimeout);
+        }
+
+        /// <summary>
+        /// 	Tests the database connection using the specified provider.
+        /// </summary>
+        /// <param name = "providerName">Name of the provider.</param>
+        /// <param name = "connectionString">The connection string.</param>
+        /// <returns>If the connection was successful, null; otherwise the exception object.</returns>
+        public static Exception TestDbConnection(string providerName, string connectionString)
+        {
+            try
+            {
+                DbProviderFactory factory = DbProviderFactories.GetFactory(providerName);
+                using (DbConnection connection = factory.CreateConnection())
+                {
+                    connection.ConnectionString = connectionString;
+                    connection.Open();
+                    if (connection.State == ConnectionState.Open)
+                    {
+                        return null;
+                    }
+                }
+            }
+            catch (Exception e)
+            {
+                return e;
+            }
+
+            throw new InvalidOperationException("Connection test failed");
+        }
+
+        /// <summary>
+        /// 	Executes the <paramref name = "sql" /> query.
+        /// </summary>
+        /// <param name = "sql">The SQL to execute.</param>
+        public void ExecuteQuery(string sql)
+        {
+            ValidateState();
+
+            DbConnection dbConnection = null;
+            DbDataAdapter adapter = null;
+            _command = null;
+            Query query;
+
+            // In the case of connection errors the error messages were getting lost, provide a default batch object:
+            Batch = new QueryBatch(sql);
+
+            try
+            {
+                IsBusy = true;
+
+                dbConnection = _factory.CreateConnection();
+                dbConnection.ConnectionString = _connectionString;
+                dbConnection.Open();
+
+                Messages = string.Empty;
+                SubscribeToMessages(dbConnection);
+
+                if (_enableQueryBatching)
+                {
+                    Batch = QueryBatch.Parse(sql);
+                }
+                else
+                {
+                    Batch = new QueryBatch(sql);
+                }
+
+                Batch.StartTime = DateTime.Now;
+                adapter = _factory.CreateDataAdapter();
+                _command = dbConnection.CreateCommand();
+                _command.CommandType = CommandType.Text;
+                SetCommandTimeout(_command, _commandTimeout);
+                adapter.SelectCommand = _command;
+
+                int queryCount = Batch.Queries.Count;
+                for (int i = 0; i < queryCount; i++)
+                {
+                    query = Batch.Queries[i];
+                    _command.CommandText = query.Sql;
+                    query.Result = new DataSet("Batch " + (i + 1));
+                    query.StartTime = DateTime.Now;
+                    adapter.Fill(query.Result);
+                    query.EndTime = DateTime.Now;
+                    OnBatchProgress(new BatchProgressEventArgs(query, queryCount, i + 1));
+                }
+            }
+            catch (DbException dbException)
+            {
+                HandleBatchException(dbException);
+            }
+            finally
+            {
+                if (Batch != null)
+                {
+                    Batch.EndTime = DateTime.Now;
+                }
+
+                if (adapter != null)
+                {
+                    adapter.Dispose();
+                }
+
+                if (_command != null)
+                {
+                    _command.Dispose();
+                }
+
+                IsBusy = false;
+                UnsubscribeFromMessages(dbConnection);
+            }
+
+            if (Batch != null)
+            {
+                Batch.Messages = Messages;
+            }
+        }
+
+        /// <summary>
+        /// Cancel the executing command (if busy).
+        /// </summary>
+        /// <remarks>
+        /// Note that this relies on the implementation of the DbCommand.Cancel operation.
+        /// </remarks>
+	    public void Cancel()
+        {
+            if (IsBusy && _command != null)
+            {
+                _command.Cancel();
+            }
+        }
+
+        /// <summary>
+        /// Sets the command timeout, currently only tested against MSSQL.
+        /// </summary>
+        /// <param name="cmd">The command.</param>
+        /// <param name="commandTimeout">The command timeout.</param>
+        private void SetCommandTimeout(IDbCommand cmd, int commandTimeout)
+        {
+            if (_factory is SqlClientFactory)
+            {
+                if (cmd == null)
+                {
+                    throw new ArgumentNullException("cmd");
+                }
+                cmd.CommandTimeout = commandTimeout;
+            }
+            else
+            {
+                Trace.WriteLine("Command Timeout only supported by SQL Client (so far)");
+            }
+        }
+
+        /// <summary>
+        /// 	The handle batch exception.
+        /// </summary>
+        /// <param name = "dbException">The db exception.</param>
+        protected virtual void HandleBatchException(DbException dbException)
+        {
+            Exception = dbException;
+            Messages += dbException.Message + Environment.NewLine;
+        }
+
+        /// <summary>
+        /// 	The on batch progress.
+        /// </summary>
+        /// <param name = "e">The events.</param>
+        protected void OnBatchProgress(BatchProgressEventArgs e)
+        {
+            EventHandler<BatchProgressEventArgs> progress = BatchProgress;
+            if (progress != null)
+            {
+                progress(this, e);
+            }
+        }
+
+        /// <summary>
+        /// 	The subscribe to messages.
+        /// </summary>
+        /// <param name = "connection">The connection.</param>
+        protected virtual void SubscribeToMessages(DbConnection connection)
+        {
+        }
+
+        /// <summary>
+        /// 	The unsubscribe from messages.
+        /// </summary>
+        /// <param name = "connection">The connection.</param>
+        protected virtual void UnsubscribeFromMessages(DbConnection connection)
+        {
+        }
+
+        /// <summary>
+        /// 	Ensures that there is enough information available to the class to execute a query.
+        /// </summary>
+        /// <exception cref = "InvalidOperationException">If there is no connection, "Supply a connection."</exception>
+        /// <exception cref = "InvalidOperationException">If there is no connection, "Supply a provider."</exception>
+        private void ValidateState()
+        {
+            if (string.IsNullOrEmpty(_connectionString))
+            {
+                throw new InvalidOperationException("Supply a connection.");
+            }
+
+            if (_factory == null)
+            {
+                throw new InvalidOperationException("Supply a provider.");
+            }
+        }
+    }
+}
Added +85 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/SqlQueryRunner.cs b/minisqlquery-master/src/MiniSqlQuery.Core/SqlQueryRunner.cs
new file mode 100644
index 0000000..ade2447
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/SqlQueryRunner.cs
@@ -0,0 +1,85 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Data.Common;
+using System.Data.SqlClient;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	The sql query runner.
+    /// </summary>
+    public class SqlQueryRunner : QueryRunner
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="SqlQueryRunner"/> class.
+        /// </summary>
+        /// <param name="factory">The provider factory.</param>
+        /// <param name="connectionString">The connection string.</param>
+        /// <param name="enableQueryBatching">The enable query batching.</param>
+        /// <param name="commandTimeout"></param>
+        public SqlQueryRunner(DbProviderFactory factory, string connectionString, bool enableQueryBatching, int commandTimeout)
+            : base(factory, connectionString, enableQueryBatching, commandTimeout)
+        {
+        }
+
+        /// <summary>
+        /// 	The handle batch exception.
+        /// </summary>
+        /// <param name = "dbException">The db exception.</param>
+        protected override void HandleBatchException(DbException dbException)
+        {
+            Exception = dbException;
+            var exp = dbException as SqlException;
+            if (exp != null)
+            {
+                foreach (SqlError error in exp.Errors)
+                {
+                    Messages += string.Format("Error line {0}: {1}.{2}", error.LineNumber, error.Message, Environment.NewLine);
+                }
+            }
+        }
+
+        /// <summary>
+        /// 	The subscribe to messages.
+        /// </summary>
+        /// <param name = "connection">The connection.</param>
+        protected override void SubscribeToMessages(DbConnection connection)
+        {
+            var conn = connection as SqlConnection;
+            if (conn != null)
+            {
+                conn.InfoMessage += ConnectionInfoMessage;
+            }
+        }
+
+        /// <summary>
+        /// 	The unsubscribe from messages.
+        /// </summary>
+        /// <param name = "connection">The connection.</param>
+        protected override void UnsubscribeFromMessages(DbConnection connection)
+        {
+            var conn = connection as SqlConnection;
+            if (conn != null)
+            {
+                conn.InfoMessage -= ConnectionInfoMessage;
+            }
+        }
+
+        /// <summary>
+        /// 	The connection information message collection method.
+        /// </summary>
+        /// <param name = "sender">The sender.</param>
+        /// <param name = "e">The events for the message.</param>
+        private void ConnectionInfoMessage(object sender, SqlInfoMessageEventArgs e)
+        {
+            Messages += e.Message + Environment.NewLine;
+        }
+    }
+}
\ No newline at end of file
Added +45 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/StringWriterWithEncoding.cs b/minisqlquery-master/src/MiniSqlQuery.Core/StringWriterWithEncoding.cs
new file mode 100644
index 0000000..b59534b
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/StringWriterWithEncoding.cs
@@ -0,0 +1,45 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System.IO;
+using System.Text;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	A <see cref = "StringWriter" /> that allows the setting of the <see cref = "Encoding" />.
+    /// </summary>
+    public class StringWriterWithEncoding : StringWriter
+    {
+        /// <summary>
+        /// 	The _encoding.
+        /// </summary>
+        private readonly Encoding _encoding;
+
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "StringWriterWithEncoding" /> class.
+        /// </summary>
+        /// <param name = "encoding">The encoding to use, e.g. Encoding.UTF8.</param>
+        public StringWriterWithEncoding(Encoding encoding)
+        {
+            _encoding = encoding;
+        }
+
+        /// <summary>
+        /// 	Gets the <see cref = "T:System.Text.Encoding" /> in which the output is written.
+        /// </summary>
+        /// <value>The encoding type.</value>
+        /// <returns>
+        /// 	The Encoding in which the output is written.
+        /// </returns>
+        public override Encoding Encoding
+        {
+            get { return _encoding; }
+        }
+    }
+}
\ No newline at end of file
Added +22 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/SystemMessage.cs b/minisqlquery-master/src/MiniSqlQuery.Core/SystemMessage.cs
new file mode 100644
index 0000000..c737bc6
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/SystemMessage.cs
@@ -0,0 +1,22 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	System messages posted by Mini SQL Query itself or other plugins.
+    /// </summary>
+    public enum SystemMessage
+    {
+        /// <summary>
+        /// 	A table was truncated.
+        /// </summary>
+        TableTruncated
+    }
+}
\ No newline at end of file
Added +41 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/SystemMessageEventArgs.cs b/minisqlquery-master/src/MiniSqlQuery.Core/SystemMessageEventArgs.cs
new file mode 100644
index 0000000..4982b00
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/SystemMessageEventArgs.cs
@@ -0,0 +1,41 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	A system wide message event.
+    /// </summary>
+    public class SystemMessageEventArgs : EventArgs
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "SystemMessageEventArgs" /> class.
+        /// </summary>
+        /// <param name = "message">The system message.</param>
+        /// <param name = "data">The associated data.</param>
+        public SystemMessageEventArgs(SystemMessage message, object data)
+        {
+            Message = message;
+            Data = data;
+        }
+
+        /// <summary>
+        /// 	Gets the data for the event.
+        /// </summary>
+        /// <value>The event data.</value>
+        public object Data { get; private set; }
+
+        /// <summary>
+        /// 	Gets the system message type.
+        /// </summary>
+        /// <value>The system message type.</value>
+        public SystemMessage Message { get; private set; }
+    }
+}
\ No newline at end of file
Added +148 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Template/HenriFormatter.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Template/HenriFormatter.cs
new file mode 100644
index 0000000..87c3027
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Template/HenriFormatter.cs
@@ -0,0 +1,148 @@
+using System;
+using System.IO;
+using System.Text;
+using System.Web;
+using System.Web.UI;
+
+namespace MiniSqlQuery.Core.Template
+{
+	/// <summary>
+	/// From an online debate on parsing, original author todo....
+	/// </summary>
+	public class HenriFormatter : ITextFormatter
+	{
+		#region ITextFormatter Members
+
+		public string Format(string text, object dataSource)
+		{
+			if (text == null)
+			{
+				throw new ArgumentNullException("text");
+			}
+
+			StringBuilder result = new StringBuilder(text.Length*2);
+
+			using (var reader = new StringReader(text))
+			{
+				StringBuilder expression = new StringBuilder();
+				int @char = -1;
+
+				TemplateParseState templateParseState = TemplateParseState.OutsideExpression;
+				do
+				{
+					switch (templateParseState)
+					{
+						case TemplateParseState.OutsideExpression:
+							@char = reader.Read();
+							switch (@char)
+							{
+								case -1:
+									templateParseState = TemplateParseState.End;
+									break;
+								case '{':
+									templateParseState = TemplateParseState.OnOpenBracket;
+									break;
+								case '}':
+									templateParseState = TemplateParseState.OnCloseBracket;
+									break;
+								default:
+									result.Append((char) @char);
+									break;
+							}
+							break;
+						case TemplateParseState.OnOpenBracket:
+							@char = reader.Read();
+							switch (@char)
+							{
+								case -1:
+									throw new FormatException();
+								case '{':
+									result.Append('{');
+									templateParseState = TemplateParseState.OutsideExpression;
+									break;
+								default:
+									expression.Append((char) @char);
+									templateParseState = TemplateParseState.InsideExpression;
+									break;
+							}
+							break;
+						case TemplateParseState.InsideExpression:
+							@char = reader.Read();
+							switch (@char)
+							{
+								case -1:
+									throw new FormatException();
+								case '}':
+									result.Append(ResolveExpression(dataSource, expression.ToString()));
+									expression.Length = 0;
+									templateParseState = TemplateParseState.OutsideExpression;
+									break;
+								default:
+									expression.Append((char) @char);
+									break;
+							}
+							break;
+						case TemplateParseState.OnCloseBracket:
+							@char = reader.Read();
+							switch (@char)
+							{
+								case '}':
+									result.Append('}');
+									templateParseState = TemplateParseState.OutsideExpression;
+									break;
+								default:
+									throw new FormatException();
+							}
+							break;
+						default:
+							throw new InvalidOperationException("Invalid state.");
+					}
+				}
+				while (templateParseState != TemplateParseState.End);
+			}
+
+			return result.ToString();
+		}
+
+		#endregion
+
+		private string ResolveExpression(object source, string expression)
+		{
+			string format = "";
+
+			int colonIndex = expression.IndexOf(':');
+			if (colonIndex > 0)
+			{
+				format = expression.Substring(colonIndex + 1);
+				expression = expression.Substring(0, colonIndex);
+			}
+
+			try
+			{
+				// yes, it uses the databinder
+				if (String.IsNullOrEmpty(format))
+				{
+					return (DataBinder.Eval(source, expression) ?? "").ToString();
+				}
+				return DataBinder.Eval(source, expression, "{0:" + format + "}") ?? "";
+			}
+			catch (HttpException exp)
+			{
+				throw new FormatException(exp.Message);
+			}
+		}
+
+		#region Nested type: TemplateParseState
+
+		private enum TemplateParseState
+		{
+			OutsideExpression,
+			OnOpenBracket,
+			InsideExpression,
+			OnCloseBracket,
+			End
+		}
+
+		#endregion
+	}
+}
\ No newline at end of file
Added +57 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Template/NVelocityWrapper.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Template/NVelocityWrapper.cs
new file mode 100644
index 0000000..bce56d2
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Template/NVelocityWrapper.cs
@@ -0,0 +1,57 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Collections.Generic;
+using System.IO;
+using NVelocity;
+using NVelocity.App;
+using NVelocity.Exception;
+
+namespace MiniSqlQuery.Core.Template
+{
+    /// <summary>The n velocity wrapper.</summary>
+    public class NVelocityWrapper : ITextFormatter
+    {
+        /// <summary>The format.</summary>
+        /// <param name="text">The text.</param>
+        /// <param name="items">The items.</param>
+        /// <returns>The format.</returns>
+        /// <exception cref="TemplateException"></exception>
+        public string Format(string text, Dictionary<string, object> items)
+        {
+            try
+            {
+                VelocityContext velocityContext = new VelocityContext();
+
+                if (items != null)
+                {
+                    foreach (var pair in items)
+                    {
+                        velocityContext.Put(pair.Key, pair.Value);
+                    }
+                }
+
+                StringWriter sw = new StringWriter();
+                VelocityEngine velocityEngine = new VelocityEngine();
+                velocityEngine.Init();
+
+                bool ok = velocityEngine.Evaluate(velocityContext, sw, "ContextTest.CaseInsensitive", text);
+
+                if (!ok)
+                {
+                    throw new TemplateException("Template run error (try adding an extra newline at the end of the file)");
+                }
+
+                return sw.ToString();
+            }
+            catch (ParseErrorException parseErrorException)
+            {
+                throw new TemplateException(parseErrorException.Message, parseErrorException);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +44 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Template/TemplateException.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Template/TemplateException.cs
new file mode 100644
index 0000000..db25dce
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Template/TemplateException.cs
@@ -0,0 +1,44 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Runtime.Serialization;
+
+namespace MiniSqlQuery.Core.Template
+{
+    /// <summary>The template exception.</summary>
+    [Serializable]
+    public class TemplateException : Exception
+    {
+        /// <summary>Initializes a new instance of the <see cref="TemplateException"/> class.</summary>
+        public TemplateException()
+        {
+        }
+
+        /// <summary>Initializes a new instance of the <see cref="TemplateException"/> class.</summary>
+        /// <param name="message">The message.</param>
+        public TemplateException(string message) : base(message)
+        {
+        }
+
+        /// <summary>Initializes a new instance of the <see cref="TemplateException"/> class.</summary>
+        /// <param name="message">The message.</param>
+        /// <param name="inner">The inner.</param>
+        public TemplateException(string message, Exception inner) : base(message, inner)
+        {
+        }
+
+        /// <summary>Initializes a new instance of the <see cref="TemplateException"/> class.</summary>
+        /// <param name="info">The info.</param>
+        /// <param name="context">The context.</param>
+        protected TemplateException(
+            SerializationInfo info,
+            StreamingContext context) : base(info, context)
+        {
+        }
+    }
+}
\ No newline at end of file
Added +21 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Template/TextFormatter.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Template/TextFormatter.cs
new file mode 100644
index 0000000..0afec69
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Template/TextFormatter.cs
@@ -0,0 +1,21 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Collections.Generic;
+
+namespace MiniSqlQuery.Core.Template
+{
+    /// <summary>The i text formatter.</summary>
+    public interface ITextFormatter
+    {
+        /// <summary>The format.</summary>
+        /// <param name="text">The text.</param>
+        /// <param name="items">The items.</param>
+        /// <returns>The format.</returns>
+        string Format(string text, Dictionary<string, object> items);
+    }
+}
\ No newline at end of file
Added +197 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Utility.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Utility.cs
new file mode 100644
index 0000000..67d89a2
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Utility.cs
@@ -0,0 +1,197 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.Common;
+using System.Diagnostics;
+using System.IO;
+using System.Text;
+using System.Xml.Serialization;
+using MiniSqlQuery.Core.Properties;
+
+namespace MiniSqlQuery.Core
+{
+    /// <summary>
+    /// 	Some basic helper functions.
+    /// </summary>
+    public static class Utility
+    {
+        /// <summary>
+        /// 	Writes a default file if none present.
+        /// </summary>
+        public static void CreateConnectionStringsIfRequired()
+        {
+            string filename = GetConnectionStringFilename();
+            if (!File.Exists(filename))
+            {
+                File.WriteAllText(filename, Resources.DefaultConnectionDefinitionFile);
+            }
+        }
+
+        /// <summary>
+        /// 	Resolves the full filename of the connection string file, by default in the application data folder
+        /// 	for "MiniSqlQuery", e.g. "C:\Users\(username)\AppData\Roaming\MiniSqlQuery\connections.xml".
+        /// 	Allows for the override vis the "MiniSqlQuery.Core.dll.config" file "DefaultConnectionDefinitionFilename" 
+        /// 	setting.
+        /// </summary>
+        /// <returns>A filename.</returns>
+        public static string GetConnectionStringFilename()
+        {
+            string filename = ApplicationServices.Instance.Settings.DefaultConnectionDefinitionFilename;
+
+            if (!string.IsNullOrEmpty(filename) && File.Exists(filename))
+            {
+                return filename;
+            }
+
+            string folder = GetAppFolderPath();
+            filename = Path.Combine(folder, "connections.xml");
+
+            return filename;
+        }
+
+        /// <summary>
+        /// 	Returns an array of SQL provider types supported by the current platform.
+        /// </summary>
+        /// <returns>An array of SQL provider types.</returns>
+        public static string[] GetSqlProviderNames()
+        {
+            DataTable providers = DbProviderFactories.GetFactoryClasses();
+            var providerNames = new List<string>();
+
+            foreach (DataRow row in providers.Rows)
+            {
+                providerNames.Add(row["InvariantName"].ToString());
+            }
+
+            return providerNames.ToArray();
+        }
+
+        /// <summary>
+        /// 	Loads the connection string data from the file.
+        /// </summary>
+        /// <returns>The text file contents as a single string.</returns>
+        /// <seealso cref = "GetConnectionStringFilename" />
+        public static string LoadConnections()
+        {
+            string filename = GetConnectionStringFilename();
+            string data = File.ReadAllText(filename);
+            return data;
+        }
+
+        /// <summary>
+        /// 	Loads the db connection definitions from an XML file.
+        /// </summary>
+        /// <returns>A <see cref = "DbConnectionDefinitionList" /> instance or null if the file does not exist.</returns>
+        public static DbConnectionDefinitionList LoadDbConnectionDefinitions()
+        {
+            string filename = GetConnectionStringFilename();
+            DbConnectionDefinitionList definitionList = null;
+
+            if (File.Exists(filename))
+            {
+                definitionList = DbConnectionDefinitionList.FromXml(File.ReadAllText(filename));
+            }
+
+            return definitionList;
+        }
+
+        /// <summary>
+        /// 	Attempts to convert a database object name to it's "bracketed for", e.g. "Name" -> "[Name]".
+        /// </summary>
+        /// <param name = "name">The name of the object.</param>
+        /// <returns>The SQL friendly conversion.</returns>
+        public static string MakeSqlFriendly(string name)
+        {
+            if (name == null)
+            {
+                return string.Empty;
+            }
+
+            if (!name.StartsWith("[") && (name.Contains(" ") || name.Contains("$")))
+            {
+                // TODO - reserved wods?
+                return string.Concat("[", name, "]");
+            }
+
+            return name;
+        }
+
+        /// <summary>
+        /// 	The render safe schema object name.
+        /// </summary>
+        /// <param name = "schema">The schema.</param>
+        /// <param name = "objectName">The object name.</param>
+        /// <returns>The render safe schema object name.</returns>
+        public static string RenderSafeSchemaObjectName(string schema, string objectName)
+        {
+            if (string.IsNullOrEmpty(schema))
+            {
+                return string.Format("[{0}]", objectName);
+            }
+
+            return string.Format("[{0}].[{1}]", schema, objectName);
+        }
+
+        /// <summary>
+        /// 	Saves the <paramref name = "definitionList" /> to the connection string file.
+        /// </summary>
+        /// <param name = "definitionList">The contents of the file.</param>
+        /// <seealso cref = "GetConnectionStringFilename" />
+        public static void SaveConnections(DbConnectionDefinitionList definitionList)
+        {
+            string filename = GetConnectionStringFilename();
+            string newXml = definitionList.ToXml();
+            File.WriteAllText(filename, newXml);
+        }
+
+        /// <summary>
+        /// 	Shows the URL in the defaut browser.
+        /// </summary>
+        /// <param name = "url">The URL to display.</param>
+        public static void ShowUrl(string url)
+        {
+            Process.Start(url);
+        }
+
+        /// <summary>
+        /// 	Serializes the <paramref name = "obj" />.
+        /// </summary>
+        /// <typeparam name = "T">The type.</typeparam>
+        /// <param name = "obj">The object to serialize.</param>
+        /// <returns>A UTF8 XML string representing <paramref name = "obj" />.</returns>
+        public static string ToXml<T>(T obj)
+        {
+            using (StringWriter sw = new StringWriterWithEncoding(Encoding.UTF8))
+            {
+                var serializer = new XmlSerializer(typeof(T));
+                serializer.Serialize(sw, obj);
+                return sw.ToString();
+            }
+        }
+
+        /// <summary>
+        /// 	Resolves the "(application data path)\MiniSqlQuery" for this user.
+        /// </summary>
+        /// <returns>A folder path.</returns>
+        private static string GetAppFolderPath()
+        {
+            string folder = Path.Combine(
+                Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
+                Resources.ShortAppTitle);
+            if (Directory.Exists(folder) == false)
+            {
+                Directory.CreateDirectory(folder);
+            }
+
+            return folder;
+        }
+    }
+}
\ No newline at end of file
Added +93 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.sln b/minisqlquery-master/src/MiniSqlQuery.sln
new file mode 100644
index 0000000..5b06c3e
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.sln
@@ -0,0 +1,93 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29418.71
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F336B398-B12B-4F79-BD52-3E00BBEDDF5B}"
+	ProjectSection(SolutionItems) = preProject
+		Build-DISTRO.cmd = Build-DISTRO.cmd
+		ChangeLog.txt = ChangeLog.txt
+		CommonAssemblyInfo.cs = CommonAssemblyInfo.cs
+		MiniSqlQuery.5.0.resharper = MiniSqlQuery.5.0.resharper
+		MiniSqlQuery.build = MiniSqlQuery.build
+		MiniSqlQueryQuickStart.docx = MiniSqlQueryQuickStart.docx
+		ReadMe.htm = ReadMe.htm
+		..\README.md = ..\README.md
+		Settings.StyleCop = Settings.StyleCop
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniSqlQuery", "MiniSqlQuery\MiniSqlQuery.csproj", "{0164E1CD-8EC2-4C9E-8D67-2575221D8707}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniSqlQuery.Core", "MiniSqlQuery.Core\MiniSqlQuery.Core.csproj", "{B819CF6A-B5FD-4E85-842D-FD855F856A5A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniSqlQuery.Tests", "MiniSqlQuery.Tests\MiniSqlQuery.Tests.csproj", "{14805F53-5C87-4E8D-B88C-690C35C4CE8D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "contrib", "contrib", "{0FDFA66E-D95A-4DDA-98AC-ADFD7D7502ED}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniSqlQuery.Exports.Plugin", "Contrib\MiniSqlQuery.Exports.Plugin\MiniSqlQuery.Exports.Plugin.csproj", "{BADDFE58-B855-4A88-A131-BE4066F080E8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniSqlQuery.ExternalTools.Plugin", "Contrib\MiniSqlQuery.ExternalTools.Plugin\MiniSqlQuery.ExternalTools.Plugin.csproj", "{803B1BA0-361A-47B9-A8EE-B790CD05B827}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release - No Tests|Any CPU = Release - No Tests|Any CPU
+		Release|Any CPU = Release|Any CPU
+		ReleaseWithTests|Any CPU = ReleaseWithTests|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{0164E1CD-8EC2-4C9E-8D67-2575221D8707}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0164E1CD-8EC2-4C9E-8D67-2575221D8707}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0164E1CD-8EC2-4C9E-8D67-2575221D8707}.Release - No Tests|Any CPU.ActiveCfg = Release - No Tests|Any CPU
+		{0164E1CD-8EC2-4C9E-8D67-2575221D8707}.Release - No Tests|Any CPU.Build.0 = Release - No Tests|Any CPU
+		{0164E1CD-8EC2-4C9E-8D67-2575221D8707}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0164E1CD-8EC2-4C9E-8D67-2575221D8707}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0164E1CD-8EC2-4C9E-8D67-2575221D8707}.ReleaseWithTests|Any CPU.ActiveCfg = Release - No Tests|Any CPU
+		{0164E1CD-8EC2-4C9E-8D67-2575221D8707}.ReleaseWithTests|Any CPU.Build.0 = Release - No Tests|Any CPU
+		{B819CF6A-B5FD-4E85-842D-FD855F856A5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B819CF6A-B5FD-4E85-842D-FD855F856A5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B819CF6A-B5FD-4E85-842D-FD855F856A5A}.Release - No Tests|Any CPU.ActiveCfg = Release - No Tests|Any CPU
+		{B819CF6A-B5FD-4E85-842D-FD855F856A5A}.Release - No Tests|Any CPU.Build.0 = Release - No Tests|Any CPU
+		{B819CF6A-B5FD-4E85-842D-FD855F856A5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B819CF6A-B5FD-4E85-842D-FD855F856A5A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B819CF6A-B5FD-4E85-842D-FD855F856A5A}.ReleaseWithTests|Any CPU.ActiveCfg = Release - No Tests|Any CPU
+		{B819CF6A-B5FD-4E85-842D-FD855F856A5A}.ReleaseWithTests|Any CPU.Build.0 = Release - No Tests|Any CPU
+		{14805F53-5C87-4E8D-B88C-690C35C4CE8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{14805F53-5C87-4E8D-B88C-690C35C4CE8D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{14805F53-5C87-4E8D-B88C-690C35C4CE8D}.Release - No Tests|Any CPU.ActiveCfg = Release - No Tests|Any CPU
+		{14805F53-5C87-4E8D-B88C-690C35C4CE8D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{14805F53-5C87-4E8D-B88C-690C35C4CE8D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{14805F53-5C87-4E8D-B88C-690C35C4CE8D}.ReleaseWithTests|Any CPU.ActiveCfg = Release - No Tests|Any CPU
+		{14805F53-5C87-4E8D-B88C-690C35C4CE8D}.ReleaseWithTests|Any CPU.Build.0 = Release - No Tests|Any CPU
+		{BADDFE58-B855-4A88-A131-BE4066F080E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{BADDFE58-B855-4A88-A131-BE4066F080E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{BADDFE58-B855-4A88-A131-BE4066F080E8}.Release - No Tests|Any CPU.ActiveCfg = Release|Any CPU
+		{BADDFE58-B855-4A88-A131-BE4066F080E8}.Release - No Tests|Any CPU.Build.0 = Release|Any CPU
+		{BADDFE58-B855-4A88-A131-BE4066F080E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{BADDFE58-B855-4A88-A131-BE4066F080E8}.Release|Any CPU.Build.0 = Release|Any CPU
+		{BADDFE58-B855-4A88-A131-BE4066F080E8}.ReleaseWithTests|Any CPU.ActiveCfg = Release|Any CPU
+		{BADDFE58-B855-4A88-A131-BE4066F080E8}.ReleaseWithTests|Any CPU.Build.0 = Release|Any CPU
+		{803B1BA0-361A-47B9-A8EE-B790CD05B827}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{803B1BA0-361A-47B9-A8EE-B790CD05B827}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{803B1BA0-361A-47B9-A8EE-B790CD05B827}.Release - No Tests|Any CPU.ActiveCfg = Release|Any CPU
+		{803B1BA0-361A-47B9-A8EE-B790CD05B827}.Release - No Tests|Any CPU.Build.0 = Release|Any CPU
+		{803B1BA0-361A-47B9-A8EE-B790CD05B827}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{803B1BA0-361A-47B9-A8EE-B790CD05B827}.Release|Any CPU.Build.0 = Release|Any CPU
+		{803B1BA0-361A-47B9-A8EE-B790CD05B827}.ReleaseWithTests|Any CPU.ActiveCfg = Release|Any CPU
+		{803B1BA0-361A-47B9-A8EE-B790CD05B827}.ReleaseWithTests|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(NestedProjects) = preSolution
+		{BADDFE58-B855-4A88-A131-BE4066F080E8} = {0FDFA66E-D95A-4DDA-98AC-ADFD7D7502ED}
+		{803B1BA0-361A-47B9-A8EE-B790CD05B827} = {0FDFA66E-D95A-4DDA-98AC-ADFD7D7502ED}
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {1BE5151B-BE10-4139-9AC3-0E1188A44B04}
+	EndGlobalSection
+	GlobalSection(SubversionScc) = preSolution
+		Svn-Managed = True
+		Manager = AnkhSVN - Subversion Support for Visual Studio
+	EndGlobalSection
+EndGlobal
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.snk b/minisqlquery-master/src/MiniSqlQuery.snk
new file mode 100644
index 0000000..9b2560f
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.snk differ
Added +19 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/App.config b/minisqlquery-master/src/MiniSqlQuery.Tests/App.config
new file mode 100644
index 0000000..266febf
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/App.config
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+  <configSections>
+    <sectionGroup name="NUnit">
+      <section name="TestRunner" type="System.Configuration.NameValueSectionHandler"/>
+    </sectionGroup>
+  </configSections>
+  <NUnit>
+    <TestRunner>
+      <!-- Valid values are STA,MTA. Others ignored. -->
+      <add key="ApartmentState" value="STA" />
+      <!-- See ThreadPriority enum for other valid values -->
+      <add key="ThreadPriority" value="Normal" />
+    </TestRunner>
+  </NUnit>
+  <startup>
+    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
+  </startup>
+</configuration>
Added +86 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/ConnectionDefinitionTests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/ConnectionDefinitionTests.cs
new file mode 100644
index 0000000..34f48fc
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/ConnectionDefinitionTests.cs
@@ -0,0 +1,86 @@
+#region License
+// Copyright 2005-2009 Paul Kohler (http://pksoftware.net/MiniSqlQuery/). All rights reserved.
+// This source code is made available under the terms of the Microsoft Public License (Ms-PL)
+// http://minisqlquery.codeplex.com/license
+#endregion
+using MiniSqlQuery.Core;
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+
+namespace MiniSqlQuery.Tests
+{
+	[TestFixture]
+	public class ConnectionDefinitionTests
+	{
+		string sampleConnectionDefinition = "Connection Name^Provider.Namespace^Server=.; Database=master; Integrated Security=SSPI";
+		ConnectionDefinition connDef;
+
+		[SetUp]
+		public void TestSetUp()
+		{
+			connDef = ConnectionDefinition.Parse(sampleConnectionDefinition);
+		}
+
+		[Test]
+		public void Check_that_connection_strings_parse()
+		{
+			Assert.That(connDef.Name, Is.EqualTo("Connection Name"));
+			Assert.That(connDef.ProviderName, Is.EqualTo("Provider.Namespace"));
+			Assert.That(connDef.ConnectionString, Is.EqualTo("Server=.; Database=master; Integrated Security=SSPI"));
+		}
+
+		[Test]
+		public void Parsing_a_hashed_connection_string_yields_null()
+		{
+			ConnectionDefinition connDef = ConnectionDefinition.Parse("#" + sampleConnectionDefinition);
+			Assert.That(connDef, Is.Null);
+		}
+
+		[Test]
+		public void Parsing_empty_and_null_strings_yield_null()
+		{
+			string nullString = null;
+			Assert.That(ConnectionDefinition.Parse(nullString), Is.Null);
+			Assert.That(ConnectionDefinition.Parse(""), Is.Null);
+		}
+
+		[Test]
+		public void Calling_ToString_yields_the_connection_name()
+		{
+			Assert.That(connDef.ToString(), Is.EqualTo("Connection Name"));
+		}
+
+		[Test]
+		public void Can_parse_an_array_of_connection_definitions()
+		{
+			string[] lines = new string[]
+			{
+				"Connection1^sql^Server=.; Database=master; Integrated Security=SSPI",
+				"Connection2^oracle^Server=.; Database=fred; user=bob; password=p"
+			};
+
+			ConnectionDefinition[] connDefs = ConnectionDefinition.Parse(lines);
+
+			Assert.That(connDefs.Length, Is.EqualTo(2));
+			Assert.That(connDefs[0].Name, Is.EqualTo("Connection1"));
+			Assert.That(connDefs[1].Name, Is.EqualTo("Connection2"));
+		}
+
+
+		[Test]
+		public void Calling_ToParsableFormat_creates_a_parsable_string()
+		{
+			connDef.Name = "the name";
+			connDef.ProviderName = "the provider";
+			connDef.ConnectionString = "the connection string";
+
+			string connDefStr = connDef.ToParsableFormat();
+			Assert.That(connDefStr, Is.EqualTo("the name^the provider^the connection string"));
+
+			ConnectionDefinition newConnDef = ConnectionDefinition.Parse(connDefStr);
+			Assert.That(connDef.Name, Is.EqualTo("the name"));
+			Assert.That(connDef.ProviderName, Is.EqualTo("the provider"));
+			Assert.That(connDef.ConnectionString, Is.EqualTo("the connection string"));
+		}
+	}
+}
Added +95 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/DBConnectionDefinitionListTests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/DBConnectionDefinitionListTests.cs
new file mode 100644
index 0000000..d19d21b
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/DBConnectionDefinitionListTests.cs
@@ -0,0 +1,95 @@
+#region License
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+using FluentAssertions;
+using MiniSqlQuery.Core;
+using NUnit.Framework;
+
+namespace MiniSqlQuery.Tests
+{
+    [TestFixture]
+    public class DbConnectionDefinitionListTests
+    {
+        [Test]
+        public void Can_add_DbConnectionDefinition_object()
+        {
+            DbConnectionDefinitionList definitionList = new DbConnectionDefinitionList();
+            definitionList.DefaultName = "def";
+            definitionList.Definitions = new[]
+                                         {
+                                             new DbConnectionDefinition {ConnectionString = "cs1", Name = "nm1", ProviderName = "p1"},
+                                             new DbConnectionDefinition {ConnectionString = "cs2", Name = "nm2", ProviderName = "p2"}
+                                         };
+            Assert.That(definitionList.Definitions.Length, Is.EqualTo(2));
+            definitionList.AddDefinition(new DbConnectionDefinition { ConnectionString = "cs3", Name = "nm3", ProviderName = "p3" });
+            Assert.That(definitionList.Definitions.Length, Is.EqualTo(3));
+        }
+
+        [Test]
+        public void Can_Deserialize_a_DbConnectionDefinitionList_from_XML_string()
+        {
+            string xml =
+                @"<DbConnectionDefinitionList xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
+  <DefaultName>default</DefaultName>
+  <Definitions>
+    <DbConnectionDefinition>
+      <Name>nm1</Name>
+      <ConnectionString>cs1</ConnectionString>
+    </DbConnectionDefinition>
+    <DbConnectionDefinition>
+      <Name>nm2</Name>
+      <ConnectionString>cs2</ConnectionString>
+    </DbConnectionDefinition>
+  </Definitions>
+</DbConnectionDefinitionList>";
+
+            DbConnectionDefinitionList definitionList = DbConnectionDefinitionList.FromXml(xml);
+            Assert.That(definitionList.DefaultName, Is.EqualTo("default"));
+            Assert.That(definitionList.Definitions[0].Name, Is.EqualTo("nm1"));
+            Assert.That(definitionList.Definitions[0].ConnectionString, Is.EqualTo("cs1"));
+            Assert.That(definitionList.Definitions[1].Name, Is.EqualTo("nm2"));
+        }
+
+        [Test]
+        public void Can_remove_a_DbConnectionDefinition_object()
+        {
+            DbConnectionDefinitionList definitionList = new DbConnectionDefinitionList();
+            definitionList.DefaultName = "def";
+            var conn1 = new DbConnectionDefinition { ConnectionString = "cs1", Name = "nm1", ProviderName = "p1" };
+            var conn2 = new DbConnectionDefinition { ConnectionString = "cs2", Name = "nm2", ProviderName = "p2" };
+            var conn3unused = new DbConnectionDefinition { ConnectionString = "cs3", Name = "nm3", ProviderName = "p3" };
+            definitionList.Definitions = new[] { conn1, conn2 };
+            Assert.That(definitionList.Definitions.Length, Is.EqualTo(2));
+            bool remove1 = definitionList.RemoveDefinition(conn2);
+            Assert.That(remove1, Is.EqualTo(true));
+            Assert.That(definitionList.Definitions.Length, Is.EqualTo(1));
+            Assert.That(definitionList.Definitions[0].Name, Is.EqualTo("nm1"));
+            bool remove2 = definitionList.RemoveDefinition(conn3unused);
+            Assert.That(remove2, Is.EqualTo(false));
+            Assert.That(definitionList.Definitions.Length, Is.EqualTo(1));
+        }
+
+        [Test]
+        public void Can_serialize_a_DbConnectionDefinitionList()
+        {
+            DbConnectionDefinitionList definitionList = new DbConnectionDefinitionList();
+            definitionList.DefaultName = "def";
+            definitionList.Definitions = new[]
+                                         {
+                                             new DbConnectionDefinition {ConnectionString = "cs1", Name = "nm1", ProviderName = "p1"},
+                                             new DbConnectionDefinition {ConnectionString = "cs2", Name = "nm2", ProviderName = "p2"}
+                                         };
+            string xml = definitionList.ToXml();
+            //Console.WriteLine(xml);
+            xml.Should().Contain("<DefaultName>def</DefaultName>");
+            xml.Should().Contain("<Name>nm1</Name>");
+            xml.Should().Contain("<ConnectionString>cs1</ConnectionString>");
+            xml.Should().Contain("<ProviderName>p1</ProviderName>");
+            xml.Should().Contain("<Name>nm2</Name>");
+            xml.Should().Contain("<ConnectionString>cs2</ConnectionString>");
+            xml.Should().Contain("<ProviderName>p2</ProviderName>");
+        }
+    }
+}
\ No newline at end of file
Added +55 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/DbModelTable_tests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/DbModelTable_tests.cs
new file mode 100644
index 0000000..679b8ad
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/DbModelTable_tests.cs
@@ -0,0 +1,55 @@
+#region License
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+using MiniSqlQuery.Core.DbModel;
+using NUnit.Framework;
+
+
+// ReSharper disable InconsistentNaming
+
+namespace MiniSqlQuery.Tests.DbModel
+{
+    /// <summary>
+    /// Microsoft SQL Server Compact 4.0 tests.
+    /// 
+    /// To run this fixture you will need SQLCE installed, see:
+    ///   https://www.microsoft.com/en-us/download/details.aspx?id=17876
+    /// </summary>
+	[TestFixture(Description = "Requires SQLCE DB")]
+    [Category("Functional")] // todo - build db model manually for unit test to remove db dependency
+    public class DbModelTable_tests
+    {
+        #region Setup/Teardown
+
+        [SetUp]
+        public void TestSetup()
+        {
+            _service = new SqlCeSchemaService { ProviderName = _providerName };
+            _model = _service.GetDbObjectModel(_connStr);
+        }
+
+        #endregion
+
+        private SqlCeSchemaService _service;
+        private string _connStr = @"data source=|DataDirectory|\sqlce-test.v4.sdf";
+        private string _providerName = "System.Data.SqlServerCe.4.0";
+
+        private DbModelInstance _model;
+
+        [Test]
+        public void Can_find_tables_by_name()
+        {
+            var table = _model.FindTable("[StaffUnit]");
+            Assert.That(table, Is.Not.Null);
+        }
+
+        [Test]
+        public void Returns_null_if_cant_find_table_by_name()
+        {
+            var table = _model.FindTable("[foo]");
+            Assert.That(table, Is.Null);
+        }
+    }
+}
\ No newline at end of file
Added +64 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/DbTypeTests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/DbTypeTests.cs
new file mode 100644
index 0000000..6c05782
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/DbTypeTests.cs
@@ -0,0 +1,64 @@
+#region License
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core.DbModel;
+using NUnit.Framework;
+
+// ReSharper disable InconsistentNaming
+
+namespace MiniSqlQuery.Tests.DbModel
+{
+    [TestFixture]
+    public class DbTypeTests
+    {
+        [Test]
+        public void Summary_renders_an_int()
+        {
+            DbModelType dbType = new DbModelType("int", 4) { CreateFormat = "int" };
+            Assert.That(dbType.Summary, Is.EqualTo("int"));
+        }
+
+        [Test]
+        public void Summary_renders_a_varchar_10()
+        {
+            DbModelType dbType = new DbModelType("varchar", 10) { CreateFormat = "varchar({0})" };
+            Assert.That(dbType.Summary, Is.EqualTo("varchar(10)"));
+        }
+
+        [Test]
+        public void Summary_renders_a_decimal_8_6()
+        {
+            DbModelType dbType = new DbModelType("decimal", 8 + 6) { Precision = 8, Scale = 6, CreateFormat = "decimal({0}, {1})" };
+            Assert.That(dbType.Summary, Is.EqualTo("decimal(8, 6)"));
+        }
+
+        [Test]
+        public void Summary_renders_a_decimal_as_default()
+        {
+            DbModelType dbType = new DbModelType("decimal", 26) { Precision = -1, Scale = -1, CreateFormat = "decimal({0}, {1})" };
+            Assert.That(dbType.Summary, Is.EqualTo("decimal"));
+        }
+
+        [Test]
+        public void Summary_renders_uses_CreateFormat_over_name_if_present()
+        {
+            DbModelType dbType = new DbModelType("mytype", 100) { CreateFormat = "MyType" };
+            Assert.That(dbType.Summary, Is.EqualTo("MyType"));
+        }
+
+        [Test]
+        public void Summary_renders_a_the_type_name_if_there_is_no_CreateFormat()
+        {
+            DbModelType dbType = new DbModelType("decimal", 26);
+            Assert.That(dbType.Summary, Is.EqualTo("decimal"));
+        }
+
+        /*
+		 * consider nvarchar(MAX) for sql?
+		 * 
+		 * */
+    }
+}
\ No newline at end of file
Added +116 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/MSAccess_DataType_Tests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/MSAccess_DataType_Tests.cs
new file mode 100644
index 0000000..d62266c
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/MSAccess_DataType_Tests.cs
@@ -0,0 +1,116 @@
+#region License
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data.Common;
+using MiniSqlQuery.Core.DbModel;
+using NUnit.Framework;
+
+namespace MiniSqlQuery.Tests.DbModel
+{
+    [TestFixture(Description = "Requires MS Access DB")]
+    [Category("Functional")]
+    [Ignore("Run this functional test manually after setup")]
+    public class MSAccess_DataType_Tests
+    {
+        #region Setup/Teardown
+
+        [SetUp]
+        public void TestSetup()
+        {
+            _service = new OleDbSchemaService();
+            DbConnection conn = DbProviderFactories.GetFactory(_providerName).CreateConnection();
+            conn.ConnectionString = _connStr;
+            conn.Open();
+            _dbTypes = _service.GetDbTypes(conn);
+        }
+
+        #endregion
+
+        private OleDbSchemaService _service;
+        private string _connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Projects\minisqlquery\trunk\TestDatabases\NorthWindDemo.mdb";
+        private string _providerName = "System.Data.OleDb";
+        Dictionary<string, DbModelType> _dbTypes;
+
+        [Test]
+        public void There_are_at_least_15_types_for_access()
+        {
+            Assert.That(_dbTypes.Count, Is.GreaterThanOrEqualTo(15));
+            /*
+Short  (System.Int16)
+Long  (System.Int32)
+Single  (System.Single)
+Double  (System.Double)
+Currency  (System.Decimal)
+DateTime  (System.DateTime)
+Bit  (System.Boolean)
+Byte  (System.Byte)
+GUID  (System.Guid)
+BigBinary  (System.Byte[])
+LongBinary  (System.Byte[])
+VarBinary  (System.Byte[])
+LongText  (System.String)
+VarChar  (System.String)
+Decimal  (System.Decimal)
+			 */
+        }
+
+        [Test]
+        public void VarChar_type()
+        {
+            DbModelType dbType = _dbTypes["varchar"];
+            Assert.That(dbType.Name, Is.EqualTo("VarChar").IgnoreCase);
+            Assert.That(dbType.Length, Is.EqualTo(255));
+            Assert.That(dbType.CreateFormat, Is.EqualTo("VarChar({0})"));
+            Assert.That(dbType.LiteralPrefix, Is.EqualTo("'"));
+            Assert.That(dbType.LiteralSuffix, Is.EqualTo("'"));
+        }
+
+        [Test]
+        public void VarBinary_type()
+        {
+            DbModelType dbType = _dbTypes["varbinary"];
+            Assert.That(dbType.Name, Is.EqualTo("VarBinary").IgnoreCase);
+            Assert.That(dbType.CreateFormat, Is.EqualTo("VarBinary({0})"));
+            Assert.That(dbType.LiteralPrefix, Is.EqualTo("0x"));
+            Assert.That(dbType.LiteralSuffix, Is.Empty);
+        }
+
+        [Test]
+        public void LongText_type()
+        {
+            DbModelType dbType = _dbTypes["longtext"];
+            Assert.That(dbType.Name, Is.EqualTo("LongText").IgnoreCase);
+            Assert.That(dbType.Summary, Is.EqualTo("LongText"));
+            Assert.That(dbType.LiteralPrefix, Is.EqualTo("'"));
+            Assert.That(dbType.LiteralSuffix, Is.EqualTo("'"));
+        }
+
+        [Test]
+        public void DateTime_type()
+        {
+            DbModelType dbType = _dbTypes["datetime"];
+            Assert.That(dbType.Name, Is.EqualTo("DateTime").IgnoreCase);
+            Assert.That(dbType.Summary, Is.EqualTo("DateTime"));
+            Assert.That(dbType.LiteralPrefix, Is.EqualTo("#"));
+            Assert.That(dbType.LiteralSuffix, Is.EqualTo("#"));
+            var copy = dbType.Copy();
+            copy.Value = new DateTime(2000, 12, 17);
+            Assert.That(copy.ToDDLValue(), Is.EqualTo("#17/12/2000 12:00:00 AM#"));
+        }
+
+        [Test]
+        [Ignore("run this manually")]
+        public void Show_all()
+        {
+            List<DbModelType> ary = new List<DbModelType>(_dbTypes.Values);
+            foreach (var dbModelType in ary)
+            {
+                Console.WriteLine("{0}  ({1})", dbModelType.Summary, dbModelType.SystemType);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +84 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/SqlCeSchemaService_DataType_Tests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/SqlCeSchemaService_DataType_Tests.cs
new file mode 100644
index 0000000..84ec461
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/SqlCeSchemaService_DataType_Tests.cs
@@ -0,0 +1,84 @@
+#region License
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data.Common;
+using MiniSqlQuery.Core.DbModel;
+using NUnit.Framework;
+
+namespace MiniSqlQuery.Tests.DbModel
+{
+    [TestFixture(Description = "Requires SQLCE DB")]
+    [Category("Functional")]
+    public class SqlCeSchemaService_DataType_Tests
+    {
+        #region Setup/Teardown
+
+        [SetUp]
+        public void TestSetup()
+        {
+            _service = new SqlCeSchemaService();
+            DbConnection conn = DbProviderFactories.GetFactory(_providerName).CreateConnection();
+            conn.ConnectionString = _connStr;
+            conn.Open();
+            _dbTypes = _service.GetDbTypes(conn);
+        }
+
+        #endregion
+
+        private SqlCeSchemaService _service;
+        private string _connStr = @"data source=|DataDirectory|\sqlce-test.v4.sdf";
+        private string _providerName = "System.Data.SqlServerCe.4.0";
+        Dictionary<string, DbModelType> _dbTypes;
+
+        [Test]
+        public void There_are_at_least_18_types()
+        {
+            Assert.That(_dbTypes.Count, Is.GreaterThanOrEqualTo(18));
+        }
+
+        [Test]
+        public void NVarchar_type()
+        {
+            DbModelType dbType = _dbTypes["nvarchar"];
+            Assert.That(dbType.Name, Is.EqualTo("nvarchar").IgnoreCase);
+            Assert.That(dbType.Length, Is.EqualTo(4000));
+            Assert.That(dbType.CreateFormat, Is.EqualTo("nvarchar({0})"));
+            Assert.That(dbType.LiteralPrefix, Is.EqualTo("N'"));
+            Assert.That(dbType.LiteralSuffix, Is.EqualTo("'"));
+            Assert.That(dbType.SystemType, Is.EqualTo(typeof(string)));
+        }
+
+        [Test]
+        public void Money_type()
+        {
+            DbModelType dbType = _dbTypes["money"];
+            Assert.That(dbType.Name, Is.EqualTo("money").IgnoreCase);
+            Assert.That(dbType.Summary, Is.EqualTo("money"));
+            Assert.That(dbType.SystemType, Is.EqualTo(typeof(decimal)));
+        }
+
+        [Test]
+        public void Float_type()
+        {
+            DbModelType dbType = _dbTypes["float"];
+            Assert.That(dbType.Name, Is.EqualTo("float").IgnoreCase);
+            Assert.That(dbType.Summary, Is.EqualTo("float"));
+            Assert.That(dbType.SystemType, Is.EqualTo(typeof(double)));
+        }
+
+        [Test]
+        [Ignore("run this manually if needed, just a helper")]
+        public void Show_all()
+        {
+            List<DbModelType> ary = new List<DbModelType>(_dbTypes.Values);
+            foreach (var dbModelType in ary)
+            {
+                Console.WriteLine("{0}  ({1})", dbModelType.Summary, dbModelType.SystemType);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +103 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/SqlCeSchemaService_DataType_ToDDL_Tests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/SqlCeSchemaService_DataType_ToDDL_Tests.cs
new file mode 100644
index 0000000..2f84c55
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/SqlCeSchemaService_DataType_ToDDL_Tests.cs
@@ -0,0 +1,103 @@
+#region License
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+using System.Collections.Generic;
+using System.Data.Common;
+using MiniSqlQuery.Core.DbModel;
+using NUnit.Framework;
+
+
+// ReSharper disable InconsistentNaming
+
+namespace MiniSqlQuery.Tests.DbModel
+{
+    [TestFixture(Description = "Requires SQLCE DB")]
+    [Category("Functional")]
+    public class SqlCeSchemaService_DataType_ToDDL_Tests
+    {
+        #region Setup/Teardown
+
+        [SetUp]
+        public void TestSetup()
+        {
+            _service = new SqlCeSchemaService();
+            DbConnection conn = DbProviderFactories.GetFactory(_providerName).CreateConnection();
+            conn.ConnectionString = _connStr;
+            conn.Open();
+            _dbTypes = _service.GetDbTypes(conn);
+        }
+
+        #endregion
+
+        private SqlCeSchemaService _service;
+        private string _connStr = @"data source=|DataDirectory|\sqlce-test.v4.sdf";
+        private string _providerName = "System.Data.SqlServerCe.4.0";
+        Dictionary<string, DbModelType> _dbTypes;
+
+        [Test]
+        public void nvarchar_with_value()
+        {
+            DbModelType str = _dbTypes["nvarchar"].Copy();
+            str.Value = "the quick brown fox...";
+            Assert.That(str.ToDDLValue(), Is.EqualTo("N'the quick brown fox...'"), "Should take the literals into account");
+        }
+
+        [Test]
+        public void int_with_value()
+        {
+            DbModelType num = _dbTypes["int"].Copy();
+            num.Value = 55;
+            Assert.That(num.ToDDLValue(), Is.EqualTo("55"));
+        }
+
+        [Test]
+        public void datetime_as_null()
+        {
+            DbModelType nullDate = _dbTypes["datetime"].Copy();
+            nullDate.Value = null;
+            Assert.That(nullDate.ToDDLValue(), Is.EqualTo("null"));
+        }
+
+        [Test]
+        public void nou_null_int_defaults_to_0()
+        {
+            DbModelType notNullNum = _dbTypes["int"].Copy();
+            notNullNum.Value = null;
+            Assert.That(notNullNum.ToDDLValue(false), Is.EqualTo("0"));
+        }
+
+        [Test]
+        public void not_null_nvarchar_defaults_to_empty_quotes()
+        {
+            DbModelType notNullNvarchar = _dbTypes["nvarchar"].Copy();
+            notNullNvarchar.Value = null;
+            Assert.That(notNullNvarchar.ToDDLValue(false), Is.EqualTo("N''"));
+        }
+
+        [Test]
+        public void nou_null_guid_defaults_to_empty_guid()
+        {
+            DbModelType uniqueidentifier = _dbTypes["uniqueidentifier"].Copy();
+            uniqueidentifier.Value = null;
+            Assert.That(uniqueidentifier.ToDDLValue(false), Is.EqualTo("'00000000-0000-0000-0000-000000000000'"));
+        }
+
+        [Test]
+        public void nou_null_VARBINARY_defaults_to_0()
+        {
+            DbModelType notNullVarbinary = _dbTypes["varbinary"].Copy();
+            notNullVarbinary.Value = null;
+            Assert.That(notNullVarbinary.ToDDLValue(false), Is.EqualTo("0"));
+        }
+
+        [Test]
+        public void nou_null_BIT_defaults_to_0()
+        {
+            DbModelType notNullBit = _dbTypes["bit"].Copy();
+            notNullBit.Value = null;
+            Assert.That(notNullBit.ToDDLValue(false), Is.EqualTo("0"));
+        }
+    }
+}
\ No newline at end of file
Added +144 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/SqlCeSchemaService_Tests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/SqlCeSchemaService_Tests.cs
new file mode 100644
index 0000000..4373388
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/SqlCeSchemaService_Tests.cs
@@ -0,0 +1,144 @@
+#region License
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+using System;
+using MiniSqlQuery.Core.DbModel;
+using NUnit.Framework;
+
+
+// ReSharper disable InconsistentNaming
+
+namespace MiniSqlQuery.Tests.DbModel
+{
+    [TestFixture(Description = "Requires SQLCE DB")]
+    [Category("Functional")]
+    public class SqlCeSchemaService_Tests
+    {
+        #region Setup/Teardown
+
+        [SetUp]
+        public void TestSetup()
+        {
+            _service = new SqlCeSchemaService { ProviderName = _providerName };
+            _model = _service.GetDbObjectModel(_connStr);
+        }
+
+        #endregion
+
+        private SqlCeSchemaService _service;
+        private string _connStr = @"data source=|DataDirectory|\Northwind.v4.sdf";
+        private string _providerName = "System.Data.SqlServerCe.4.0";
+        private DbModelInstance _model;
+
+        [Test]
+        public void Has_Customers_table()
+        {
+            Assert.That(_model.FindTable("[Customers]"), Is.Not.Null);
+        }
+
+        [Test]
+        public void Has_Categories_table()
+        {
+            Assert.That(_model.FindTable("[Categories]"), Is.Not.Null);
+        }
+
+        [Test]
+        public void Customers_table_has_columns()
+        {
+            var table = _model.FindTable("[Customers]");
+            Assert.That(table.Columns[0].Name, Is.EqualTo("Customer ID"));
+            Assert.That(table.Columns[0].DbType.Name, Is.EqualTo("nvarchar"));
+            Assert.That(table.Columns[0].DbType.Length, Is.EqualTo(5));
+
+            Assert.That(table.PrimaryKeyColumns.Count, Is.EqualTo(1));
+        }
+
+        [Test]
+        public void Check_FK_refs_for_Products()
+        {
+            var table = _model.FindTable("[Products]");
+            var supplierIdColumn = table.Columns[1];
+            var categoryIdColumn = table.Columns[2];
+            var productNameColumn = table.Columns[3];
+
+            Assert.That(table.Columns.Count, Is.EqualTo(11));
+            Assert.That(table.PrimaryKeyColumns.Count, Is.EqualTo(1));
+            Assert.That(table.ForeignKeyColumns.Count, Is.EqualTo(2));
+            Assert.That(table.NonKeyColumns.Count, Is.EqualTo(8));
+
+            Assert.That(supplierIdColumn.ForeignKeyReference, Is.Not.Null);
+            Assert.That(categoryIdColumn.ForeignKeyReference, Is.Not.Null);
+
+            Assert.That(supplierIdColumn.ForeignKeyReference.OwningColumn.Name, Is.EqualTo("Supplier ID"));
+            Assert.That(supplierIdColumn.ForeignKeyReference.ReferenceTable.Name, Is.EqualTo("Suppliers"));
+            Assert.That(supplierIdColumn.ForeignKeyReference.ReferenceColumn.Name, Is.EqualTo("Supplier ID"));
+            Assert.That(supplierIdColumn.ForeignKeyReference.UpdateRule, Is.EqualTo("CASCADE"));
+            Assert.That(supplierIdColumn.ForeignKeyReference.DeleteRule, Is.EqualTo("NO ACTION"));
+            Assert.That(supplierIdColumn.HasFK, Is.True);
+
+            Assert.That(categoryIdColumn.ForeignKeyReference.OwningColumn.Name, Is.EqualTo("Category ID"));
+            Assert.That(categoryIdColumn.ForeignKeyReference.ReferenceTable.Name, Is.EqualTo("Categories"));
+            Assert.That(categoryIdColumn.ForeignKeyReference.ReferenceColumn.Name, Is.EqualTo("Category ID"));
+            Assert.That(categoryIdColumn.ForeignKeyReference.UpdateRule, Is.EqualTo("CASCADE"));
+            Assert.That(categoryIdColumn.ForeignKeyReference.DeleteRule, Is.EqualTo("NO ACTION"));
+
+            Assert.That(productNameColumn.HasFK, Is.False);
+            Assert.That(productNameColumn.Name, Is.EqualTo("Product Name"));
+        }
+
+
+        [Test]
+        public void Build_dependency_tree_from_model()
+        {
+            DbModelDependencyWalker dependencyWalker = new DbModelDependencyWalker(_model);
+            var tables = dependencyWalker.SortTablesByForeignKeyReferences();
+
+            DisplayTableDetails(tables);
+            /*
+                Categories (fks:0)
+                Customers (fks:0)
+                Employees (fks:0)
+                Order Details_New (fks:0)
+                Shippers (fks:0)
+                Suppliers (fks:0)
+                Orders (fks:3)
+                  (FK --> Customers.Customer ID)
+                  (FK --> Employees.Employee ID)
+                  (FK --> Shippers.Shipper ID)
+                Products (fks:2)
+                  (FK --> Suppliers.Supplier ID)
+                  (FK --> Categories.Category ID)
+                Order Details (fks:2)
+                  (FK --> Orders.Order ID)
+                  (FK --> Products.Product ID)
+             */
+
+            Assert.That(tables[0].Name, Is.EqualTo("Categories"));
+            Assert.That(tables[1].Name, Is.EqualTo("Customers"));
+            Assert.That(tables[2].Name, Is.EqualTo("Employees"));
+            Assert.That(tables[4].Name, Is.EqualTo("Shippers"));
+            Assert.That(tables[5].Name, Is.EqualTo("Suppliers"));
+            Assert.That(tables[6].Name, Is.EqualTo("Orders"), "Order is dependent on Customers, Employees, Shippers");
+            Assert.That(tables[7].Name, Is.EqualTo("Products"), "Products is dependent on Suppliers, Categories");
+            Assert.That(tables[8].Name, Is.EqualTo("Order Details"), "Order Details is dependent on Orders, Products");
+        }
+
+        private void DisplayTableDetails(DbModelTable[] tablesList)
+        {
+            foreach (DbModelTable table in tablesList)
+            {
+                Console.WriteLine(string.Format("{0} (fks:{1})", table.Name, table.ForeignKeyColumns.Count));
+                if (table.ForeignKeyColumns.Count > 0)
+                {
+                    foreach (DbModelColumn fk in table.ForeignKeyColumns)
+                    {
+                        Console.WriteLine("  (FK --> {0}.{1})", fk.ForeignKeyReference.ReferenceTable.Name, fk.ForeignKeyReference.ReferenceColumn.Name);
+
+                    }
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
Added +156 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/SqlWriterTests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/SqlWriterTests.cs
new file mode 100644
index 0000000..446fb00
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/DbModel/SqlWriterTests.cs
@@ -0,0 +1,156 @@
+#region License
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+using System;
+using System.IO;
+using MiniSqlQuery.Core.DbModel;
+using NUnit.Framework;
+
+
+// ReSharper disable InconsistentNaming
+
+namespace MiniSqlQuery.Tests.DbModel
+{
+    [TestFixture(Description = "Requires SQLCE DB")]
+    [Category("Functional")] // todo - build db model manually for unit test to remove db dependency
+    public class SqlWriterTests
+    {
+        #region Setup/Teardown
+
+        [SetUp]
+        public void TestSetup()
+        {
+            _service = new SqlCeSchemaService { ProviderName = _providerName };
+            _model = _service.GetDbObjectModel(_connStr);
+            _sqlSW = new StringWriter();
+            _sqlWriter = new SqlWriter();
+        }
+
+        #endregion
+
+        private SqlCeSchemaService _service;
+        private string _connStr = @"data source=|DataDirectory|\sqlce-test.v4.sdf";
+        private string _providerName = "System.Data.SqlServerCe.4.0";
+        private DbModelInstance _model;
+        ISqlWriter _sqlWriter;
+        StringWriter _sqlSW;
+
+        [Test]
+        public void will_render_sql_with_types_and_nullability()
+        {
+            var table = _model.FindTable("[Person]");
+            // build sql sample...
+            _sqlWriter.WriteCreate(_sqlSW, table.Columns[0]);
+            _sqlSW.WriteLine(",");
+            _sqlWriter.WriteCreate(_sqlSW, table.Columns[2]);
+
+            Assert.That(_sqlSW.ToString(), Is.EqualTo("ID int not null,\r\nName nvarchar(100) not null"));
+        }
+
+        [Test]
+        public void will_render_sql_WriteSummary()
+        {
+            var table = _model.FindTable("[Person]");
+
+            _sqlWriter.WriteSummary(_sqlSW, table.Columns[0]);
+            Assert.That(_sqlSW.ToString(), Is.EqualTo("ID (int not null)"));
+
+            _sqlSW = new StringWriter();
+            _sqlWriter.WriteSummary(_sqlSW, table.Columns[2]);
+            Assert.That(_sqlSW.ToString(), Is.EqualTo("Name (nvarchar(100) not null)"));
+        }
+
+        [Test]
+        public void will_render_sql_select_for_Person()
+        {
+            var table = _model.FindTable("[Person]");
+            _sqlWriter.WriteSelect(_sqlSW, table);
+            Assert.That(_sqlSW.ToString(), Is.EqualTo(@"SELECT
+	ID,
+	StaffUnitID,
+	Name,
+	DOB
+FROM [Person]
+"));
+        }
+
+        [Test]
+        public void will_render_sql_select_COUNT_for_Person()
+        {
+            var table = _model.FindTable("[Person]");
+            _sqlWriter.WriteSelectCount(_sqlSW, table);
+            Assert.That(_sqlSW.ToString().Replace(Environment.NewLine, ""), Is.EqualTo(@"SELECT COUNT(*) FROM [Person]"));
+        }
+
+        [Test]
+        public void will_render_insert_sql_for_StaffUnit()
+        {
+            var table = _model.FindTable("[StaffUnit]");
+            _sqlWriter.WriteInsert(_sqlSW, table);
+
+            Console.WriteLine(_sqlSW.ToString());
+            Assert.That(_sqlSW.ToString(), Is.EqualTo(@"INSERT INTO [StaffUnit]
+	(Name,
+	Description)
+VALUES
+	(N'' /*Name,nvarchar(100)*/,
+	null /*Description,nvarchar(500)*/)
+"));
+        }
+
+
+        [Test]
+        public void will_render_insert_sql_for_StaffUnit_including_PK()
+        {
+            _sqlWriter.IncludeReadOnlyColumnsInExport = true;
+
+            var table = _model.FindTable("[StaffUnit]");
+            _sqlWriter.WriteInsert(_sqlSW, table);
+
+            Console.WriteLine(_sqlSW.ToString());
+            Assert.That(_sqlSW.ToString(), Is.EqualTo(@"INSERT INTO [StaffUnit]
+	(ID,
+	Name,
+	Description)
+VALUES
+	(0 /*ID,int*/,
+	N'' /*Name,nvarchar(100)*/,
+	null /*Description,nvarchar(500)*/)
+"));
+        }
+
+
+        [Test]
+        public void will_render_update_sql_for_StaffUnit()
+        {
+            var table = _model.FindTable("[StaffUnit]");
+            _sqlWriter.WriteUpdate(_sqlSW, table);
+
+            Console.WriteLine(_sqlSW.ToString());
+            Assert.That(_sqlSW.ToString(), Is.EqualTo(@"UPDATE [StaffUnit]
+SET
+	Name = N'',
+	Description = null
+WHERE
+	ID = /*value:ID,int*/
+"));
+        }
+
+        [Test]
+        public void will_render_delete_sql_for_StaffUnit()
+        {
+            var table = _model.FindTable("[StaffUnit]");
+            _sqlSW = new StringWriter();
+            _sqlWriter.WriteDelete(_sqlSW, table);
+            //Console.WriteLine(sql.ToString());
+            Assert.That(_sqlSW.ToString(), Is.EqualTo(@"DELETE FROM
+	[StaffUnit]
+WHERE
+	ID = /*value:ID*/
+"));
+
+        }
+    }
+}
\ No newline at end of file
Added +41 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/Gui/Basic_GUI_tests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/Gui/Basic_GUI_tests.cs
new file mode 100644
index 0000000..8853416
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/Gui/Basic_GUI_tests.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+
+namespace MiniSqlQuery.Tests.Gui
+{
+	[TestFixture]
+	public class Basic_GUI_tests : QueryFormTester
+	{
+		[Test]
+		public void Check_all_new_query_from_defaults()
+		{
+			ShowBasicForm();
+
+			Assert.That(QueryEditor.AllText, Is.Empty);
+			Assert.That(QueryEditor.FileName, Is.Null);
+			Assert.That(QueryEditor.Batch, Is.Null);
+			Assert.That(QueryEditor.IsDirty, Is.False);
+			Assert.That(QueryEditor.SelectedText, Is.Empty);
+			Assert.That(QueryEditor.CursorOffset, Is.EqualTo(0));
+			Assert.That(QueryEditor.TotalLines, Is.EqualTo(1));
+		}
+	}
+
+	//static class App
+	//{
+	//    /// <summary>
+	//    /// The main entry point for the application.
+	//    /// </summary>
+	//    [STAThread]
+	//    static void Main(string[] args)
+	//    {
+	//        Basic_GUI_tests t = new Basic_GUI_tests();
+	//        t.Setup();
+	//        t.t1();
+	//    }
+	//}
+}
\ No newline at end of file
Added +19 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/Gui/mssql-aw-select-from-employee.sql b/minisqlquery-master/src/MiniSqlQuery.Tests/Gui/mssql-aw-select-from-employee.sql
new file mode 100644
index 0000000..fc0706e
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/Gui/mssql-aw-select-from-employee.sql
@@ -0,0 +1,19 @@
+SELECT
+	EmployeeID,
+	NationalIDNumber,
+	ContactID,
+	LoginID,
+	ManagerID,
+	Title,
+	BirthDate,
+	MaritalStatus,
+	Gender,
+	HireDate,
+	SalariedFlag,
+	VacationHours,
+	SickLeaveHours,
+	CurrentFlag,
+	rowguid,
+	ModifiedDate
+FROM HumanResources.Employee
+
Added +5252 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/Gui/mssql-aw-select-from-employee.xml b/minisqlquery-master/src/MiniSqlQuery.Tests/Gui/mssql-aw-select-from-employee.xml
new file mode 100644
index 0000000..bb42d0c
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/Gui/mssql-aw-select-from-employee.xml
@@ -0,0 +1,5252 @@
+<?xml version="1.0" standalone="yes"?>
+<NewDataSet>
+  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
+      <xs:complexType>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element name="Table">
+            <xs:complexType>
+              <xs:sequence>
+                <xs:element name="EmployeeID" type="xs:int" minOccurs="0" />
+                <xs:element name="NationalIDNumber" type="xs:string" minOccurs="0" />
+                <xs:element name="ContactID" type="xs:int" minOccurs="0" />
+                <xs:element name="LoginID" type="xs:string" minOccurs="0" />
+                <xs:element name="ManagerID" type="xs:int" minOccurs="0" />
+                <xs:element name="Title" type="xs:string" minOccurs="0" />
+                <xs:element name="BirthDate" type="xs:dateTime" minOccurs="0" />
+                <xs:element name="MaritalStatus" type="xs:string" minOccurs="0" />
+                <xs:element name="Gender" type="xs:string" minOccurs="0" />
+                <xs:element name="HireDate" type="xs:dateTime" minOccurs="0" />
+                <xs:element name="SalariedFlag" type="xs:boolean" minOccurs="0" />
+                <xs:element name="VacationHours" type="xs:short" minOccurs="0" />
+                <xs:element name="SickLeaveHours" type="xs:short" minOccurs="0" />
+                <xs:element name="CurrentFlag" type="xs:boolean" minOccurs="0" />
+                <xs:element name="rowguid" msdata:DataType="System.Guid, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
+                <xs:element name="ModifiedDate" type="xs:dateTime" minOccurs="0" />
+              </xs:sequence>
+            </xs:complexType>
+          </xs:element>
+        </xs:choice>
+      </xs:complexType>
+    </xs:element>
+  </xs:schema>
+  <Table>
+    <EmployeeID>1</EmployeeID>
+    <NationalIDNumber>14417807</NationalIDNumber>
+    <ContactID>1209</ContactID>
+    <LoginID>adventure-works\guy1</LoginID>
+    <ManagerID>16</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1972-05-15T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1996-07-31T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>21</VacationHours>
+    <SickLeaveHours>30</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>aae1d04a-c237-4974-b4d5-935247737718</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>2</EmployeeID>
+    <NationalIDNumber>253022876</NationalIDNumber>
+    <ContactID>1030</ContactID>
+    <LoginID>adventure-works\kevin0</LoginID>
+    <ManagerID>6</ManagerID>
+    <Title>Marketing Assistant</Title>
+    <BirthDate>1977-06-03T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1997-02-26T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>42</VacationHours>
+    <SickLeaveHours>41</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>1b480240-95c0-410f-a717-eb29943c8886</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>3</EmployeeID>
+    <NationalIDNumber>509647174</NationalIDNumber>
+    <ContactID>1002</ContactID>
+    <LoginID>adventure-works\roberto0</LoginID>
+    <ManagerID>12</ManagerID>
+    <Title>Engineering Manager</Title>
+    <BirthDate>1964-12-13T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1997-12-12T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>2</VacationHours>
+    <SickLeaveHours>21</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>9bbbfb2c-efbb-4217-9ab7-f97689328841</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>4</EmployeeID>
+    <NationalIDNumber>112457891</NationalIDNumber>
+    <ContactID>1290</ContactID>
+    <LoginID>adventure-works\rob0</LoginID>
+    <ManagerID>3</ManagerID>
+    <Title>Senior Tool Designer</Title>
+    <BirthDate>1965-01-23T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1998-01-05T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>48</VacationHours>
+    <SickLeaveHours>80</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>59747955-87b8-443f-8ed4-f8ad3afdf3a9</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>5</EmployeeID>
+    <NationalIDNumber>480168528</NationalIDNumber>
+    <ContactID>1009</ContactID>
+    <LoginID>adventure-works\thierry0</LoginID>
+    <ManagerID>263</ManagerID>
+    <Title>Tool Designer</Title>
+    <BirthDate>1949-08-29T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1998-01-11T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>9</VacationHours>
+    <SickLeaveHours>24</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>1d955171-e773-4fad-8382-40fd898d5d4d</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>6</EmployeeID>
+    <NationalIDNumber>24756624</NationalIDNumber>
+    <ContactID>1028</ContactID>
+    <LoginID>adventure-works\david0</LoginID>
+    <ManagerID>109</ManagerID>
+    <Title>Marketing Manager</Title>
+    <BirthDate>1965-04-19T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1998-01-20T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>40</VacationHours>
+    <SickLeaveHours>40</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>e87029aa-2cba-4c03-b948-d83af0313e28</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>7</EmployeeID>
+    <NationalIDNumber>309738752</NationalIDNumber>
+    <ContactID>1070</ContactID>
+    <LoginID>adventure-works\jolynn0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC60</Title>
+    <BirthDate>1946-02-16T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1998-01-26T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>82</VacationHours>
+    <SickLeaveHours>61</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>2cc71b96-f421-485e-9832-8723337749bb</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>8</EmployeeID>
+    <NationalIDNumber>690627818</NationalIDNumber>
+    <ContactID>1071</ContactID>
+    <LoginID>adventure-works\ruth0</LoginID>
+    <ManagerID>185</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1946-07-06T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1998-02-06T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>83</VacationHours>
+    <SickLeaveHours>61</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>3e3b6905-209e-442e-b8a8-9a0980241c6a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>9</EmployeeID>
+    <NationalIDNumber>695256908</NationalIDNumber>
+    <ContactID>1005</ContactID>
+    <LoginID>adventure-works\gail0</LoginID>
+    <ManagerID>3</ManagerID>
+    <Title>Design Engineer</Title>
+    <BirthDate>1942-10-29T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1998-02-06T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>5</VacationHours>
+    <SickLeaveHours>22</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>ec84ae09-f9b8-4a15-b4a9-6ccbab919b08</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>10</EmployeeID>
+    <NationalIDNumber>912265825</NationalIDNumber>
+    <ContactID>1076</ContactID>
+    <LoginID>adventure-works\barry0</LoginID>
+    <ManagerID>185</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1946-04-27T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1998-02-07T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>88</VacationHours>
+    <SickLeaveHours>64</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>756a60ae-378f-43d8-9f93-1e821d1eaf52</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>11</EmployeeID>
+    <NationalIDNumber>998320692</NationalIDNumber>
+    <ContactID>1006</ContactID>
+    <LoginID>adventure-works\jossef0</LoginID>
+    <ManagerID>3</ManagerID>
+    <Title>Design Engineer</Title>
+    <BirthDate>1949-04-11T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1998-02-24T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>6</VacationHours>
+    <SickLeaveHours>23</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>e39056f1-9cd5-478d-8945-14aca7fbdcdd</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>12</EmployeeID>
+    <NationalIDNumber>245797967</NationalIDNumber>
+    <ContactID>1001</ContactID>
+    <LoginID>adventure-works\terri0</LoginID>
+    <ManagerID>109</ManagerID>
+    <Title>Vice President of Engineering</Title>
+    <BirthDate>1961-09-01T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1998-03-03T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>1</VacationHours>
+    <SickLeaveHours>20</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>45e8f437-670d-4409-93cb-f9424a40d6ee</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>13</EmployeeID>
+    <NationalIDNumber>844973625</NationalIDNumber>
+    <ContactID>1072</ContactID>
+    <LoginID>adventure-works\sidney0</LoginID>
+    <ManagerID>185</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1946-10-01T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1998-03-05T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>84</VacationHours>
+    <SickLeaveHours>62</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>40d603d9-7f99-48b7-a580-b17cf429bed2</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>14</EmployeeID>
+    <NationalIDNumber>233069302</NationalIDNumber>
+    <ContactID>1067</ContactID>
+    <LoginID>adventure-works\taylor0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC50</Title>
+    <BirthDate>1946-05-03T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1998-03-11T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>79</VacationHours>
+    <SickLeaveHours>59</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>28f7ef89-2793-4989-b67d-25046543c1e3</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>15</EmployeeID>
+    <NationalIDNumber>132674823</NationalIDNumber>
+    <ContactID>1073</ContactID>
+    <LoginID>adventure-works\jeffrey0</LoginID>
+    <ManagerID>185</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1946-08-12T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1998-03-23T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>85</VacationHours>
+    <SickLeaveHours>62</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>6e086f41-b81d-4bdc-9f13-0eec488dc43e</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>16</EmployeeID>
+    <NationalIDNumber>446466105</NationalIDNumber>
+    <ContactID>1068</ContactID>
+    <LoginID>adventure-works\jo0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC60</Title>
+    <BirthDate>1946-11-09T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1998-03-30T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>80</VacationHours>
+    <SickLeaveHours>60</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>83ffaac6-b895-481f-b897-14f965d4da47</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>17</EmployeeID>
+    <NationalIDNumber>565090917</NationalIDNumber>
+    <ContactID>1074</ContactID>
+    <LoginID>adventure-works\doris0</LoginID>
+    <ManagerID>185</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1946-05-06T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1998-04-11T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>86</VacationHours>
+    <SickLeaveHours>63</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>692b8826-03b4-4c3b-82fc-1fc6f1409689</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>18</EmployeeID>
+    <NationalIDNumber>494170342</NationalIDNumber>
+    <ContactID>1069</ContactID>
+    <LoginID>adventure-works\john0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC60</Title>
+    <BirthDate>1946-09-08T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1998-04-18T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>81</VacationHours>
+    <SickLeaveHours>60</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>d4ed1f78-7c28-479b-bfef-a73228ba2aaa</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>19</EmployeeID>
+    <NationalIDNumber>9659517</NationalIDNumber>
+    <ContactID>1075</ContactID>
+    <LoginID>adventure-works\diane0</LoginID>
+    <ManagerID>185</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1946-04-30T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1998-04-29T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>87</VacationHours>
+    <SickLeaveHours>63</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>c334b2d2-0c56-4906-9095-f1d07a98cbec</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>20</EmployeeID>
+    <NationalIDNumber>443968955</NationalIDNumber>
+    <ContactID>1129</ContactID>
+    <LoginID>adventure-works\steven0</LoginID>
+    <ManagerID>173</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1967-06-15T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-02T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>41</VacationHours>
+    <SickLeaveHours>40</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>0a8937c9-68aa-4d48-ba4e-b40493d764aa</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>21</EmployeeID>
+    <NationalIDNumber>277173473</NationalIDNumber>
+    <ContactID>1231</ContactID>
+    <LoginID>adventure-works\peter0</LoginID>
+    <ManagerID>148</ManagerID>
+    <Title>Production Control Manager</Title>
+    <BirthDate>1972-12-04T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-02T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>43</VacationHours>
+    <SickLeaveHours>41</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>69d5d162-e817-45e7-9dec-5d9b8310e7b1</rowguid>
+    <ModifiedDate>2005-01-26T09:17:08.637+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>22</EmployeeID>
+    <NationalIDNumber>835460180</NationalIDNumber>
+    <ContactID>1172</ContactID>
+    <LoginID>adventure-works\stuart0</LoginID>
+    <ManagerID>197</ManagerID>
+    <Title>Production Technician - WC45</Title>
+    <BirthDate>1952-10-14T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-03T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>84</VacationHours>
+    <SickLeaveHours>62</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>4f361b4f-7920-4037-9a0a-46d616f9b9c7</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>23</EmployeeID>
+    <NationalIDNumber>687685941</NationalIDNumber>
+    <ContactID>1173</ContactID>
+    <LoginID>adventure-works\greg0</LoginID>
+    <ManagerID>197</ManagerID>
+    <Title>Production Technician - WC45</Title>
+    <BirthDate>1960-11-18T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-03T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>85</VacationHours>
+    <SickLeaveHours>62</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>a36b5d6b-72a5-47f8-9f6b-5d922130e760</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>24</EmployeeID>
+    <NationalIDNumber>498138869</NationalIDNumber>
+    <ContactID>1113</ContactID>
+    <LoginID>adventure-works\david1</LoginID>
+    <ManagerID>184</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1969-12-03T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-03T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>25</VacationHours>
+    <SickLeaveHours>32</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>ed7ee92e-a9d0-4e3a-8dee-4b143e459f7e</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>25</EmployeeID>
+    <NationalIDNumber>360868122</NationalIDNumber>
+    <ContactID>1054</ContactID>
+    <LoginID>adventure-works\zheng0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC10</Title>
+    <BirthDate>1973-11-26T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-04T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>66</VacationHours>
+    <SickLeaveHours>53</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>c75f2740-ace3-4ebf-91c5-7ab352e1095f</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>26</EmployeeID>
+    <NationalIDNumber>964089218</NationalIDNumber>
+    <ContactID>1097</ContactID>
+    <LoginID>adventure-works\ivo0</LoginID>
+    <ManagerID>108</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1972-02-04T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-05T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>9</VacationHours>
+    <SickLeaveHours>24</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>d83a26f3-7ea7-477b-a5bb-7eaadfc13a09</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>27</EmployeeID>
+    <NationalIDNumber>384162788</NationalIDNumber>
+    <ContactID>1156</ContactID>
+    <LoginID>adventure-works\paul0</LoginID>
+    <ManagerID>87</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1970-12-15T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-05T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>68</VacationHours>
+    <SickLeaveHours>54</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>0217049e-1566-42b6-8027-41b751e2b00b</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>28</EmployeeID>
+    <NationalIDNumber>749389530</NationalIDNumber>
+    <ContactID>1258</ContactID>
+    <LoginID>adventure-works\ashvini0</LoginID>
+    <ManagerID>150</ManagerID>
+    <Title>Network Administrator</Title>
+    <BirthDate>1967-04-28T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-05T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>70</VacationHours>
+    <SickLeaveHours>55</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>2e680c1c-7c02-4343-9626-6f97273414c0</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>29</EmployeeID>
+    <NationalIDNumber>571658797</NationalIDNumber>
+    <ContactID>1199</ContactID>
+    <LoginID>adventure-works\kendall0</LoginID>
+    <ManagerID>14</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1976-06-30T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-06T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>11</VacationHours>
+    <SickLeaveHours>25</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>65207627-5521-4a8e-ad3c-b2f1b5226b85</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>30</EmployeeID>
+    <NationalIDNumber>535145551</NationalIDNumber>
+    <ContactID>1242</ContactID>
+    <LoginID>adventure-works\paula0</LoginID>
+    <ManagerID>140</ManagerID>
+    <Title>Human Resources Manager</Title>
+    <BirthDate>1966-03-14T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-01-07T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>54</VacationHours>
+    <SickLeaveHours>47</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>65028f15-4149-4de5-b203-9d7ec86baf87</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>31</EmployeeID>
+    <NationalIDNumber>761597760</NationalIDNumber>
+    <ContactID>1140</ContactID>
+    <LoginID>adventure-works\alejandro0</LoginID>
+    <ManagerID>210</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1979-01-06T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-07T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>52</VacationHours>
+    <SickLeaveHours>46</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>8c7321d2-2c64-4902-9d64-8f5c1eb7f747</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>32</EmployeeID>
+    <NationalIDNumber>271438431</NationalIDNumber>
+    <ContactID>1122</ContactID>
+    <LoginID>adventure-works\garrett0</LoginID>
+    <ManagerID>184</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1974-09-26T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-08T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>34</VacationHours>
+    <SickLeaveHours>37</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>a6f5f72f-aa03-41b7-8b6e-b123bd360753</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>33</EmployeeID>
+    <NationalIDNumber>160739235</NationalIDNumber>
+    <ContactID>1124</ContactID>
+    <LoginID>adventure-works\jianshuo0</LoginID>
+    <ManagerID>135</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1973-08-27T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-08T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>36</VacationHours>
+    <SickLeaveHours>38</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>6fff136a-9664-4eb9-9243-fac76e21b9dd</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>34</EmployeeID>
+    <NationalIDNumber>586486572</NationalIDNumber>
+    <ContactID>1285</ContactID>
+    <LoginID>adventure-works\susan0</LoginID>
+    <ManagerID>85</ManagerID>
+    <Title>Stocker</Title>
+    <BirthDate>1968-03-20T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-01-08T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>97</VacationHours>
+    <SickLeaveHours>68</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>923ecfd6-e202-429a-9141-6cb183531439</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>35</EmployeeID>
+    <NationalIDNumber>337752649</NationalIDNumber>
+    <ContactID>1283</ContactID>
+    <LoginID>adventure-works\vamsi0</LoginID>
+    <ManagerID>85</ManagerID>
+    <Title>Shipping and Receiving Clerk</Title>
+    <BirthDate>1967-04-19T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-08T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>95</VacationHours>
+    <SickLeaveHours>67</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>a8838ab2-99de-415c-8675-d82ebf1c4752</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>36</EmployeeID>
+    <NationalIDNumber>113695504</NationalIDNumber>
+    <ContactID>1183</ContactID>
+    <LoginID>adventure-works\alice0</LoginID>
+    <ManagerID>38</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1968-02-27T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-01-08T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>95</VacationHours>
+    <SickLeaveHours>67</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>7e632b21-0d11-4bba-8a68-8cae14c20ae6</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>37</EmployeeID>
+    <NationalIDNumber>276751903</NationalIDNumber>
+    <ContactID>1226</ContactID>
+    <LoginID>adventure-works\simon0</LoginID>
+    <ManagerID>7</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1980-06-17T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-09T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>38</VacationHours>
+    <SickLeaveHours>39</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>f734d38a-56b5-471e-8ded-a682e958a9b3</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>38</EmployeeID>
+    <NationalIDNumber>630184120</NationalIDNumber>
+    <ContactID>1065</ContactID>
+    <LoginID>adventure-works\jinghao0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC50</Title>
+    <BirthDate>1979-03-09T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-09T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>77</VacationHours>
+    <SickLeaveHours>58</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>2bca07d3-f2ac-4406-904f-e09156f3eb3e</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>39</EmployeeID>
+    <NationalIDNumber>545337468</NationalIDNumber>
+    <ContactID>1108</ContactID>
+    <LoginID>adventure-works\michael0</LoginID>
+    <ManagerID>182</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1974-12-19T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-10T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>20</VacationHours>
+    <SickLeaveHours>30</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>4fd6fe82-535a-4dd1-beb1-154a8b5e42f0</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>40</EmployeeID>
+    <NationalIDNumber>713403643</NationalIDNumber>
+    <ContactID>1167</ContactID>
+    <LoginID>adventure-works\yvonne0</LoginID>
+    <ManagerID>159</ManagerID>
+    <Title>Production Technician - WC45</Title>
+    <BirthDate>1979-05-17T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-01-10T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>79</VacationHours>
+    <SickLeaveHours>59</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>83c6dabf-fd7d-4f5b-bb22-eb7eebb9a772</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>41</EmployeeID>
+    <NationalIDNumber>885055826</NationalIDNumber>
+    <ContactID>1269</ContactID>
+    <LoginID>adventure-works\peng0</LoginID>
+    <ManagerID>200</ManagerID>
+    <Title>Quality Assurance Supervisor</Title>
+    <BirthDate>1966-04-19T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-10T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>81</VacationHours>
+    <SickLeaveHours>60</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>e249d613-36c9-4544-9b6f-6ce50e5e0da5</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>42</EmployeeID>
+    <NationalIDNumber>441044382</NationalIDNumber>
+    <ContactID>1253</ContactID>
+    <LoginID>adventure-works\jean0</LoginID>
+    <ManagerID>109</ManagerID>
+    <Title>Information Services Manager</Title>
+    <BirthDate>1966-01-13T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-01-12T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>65</VacationHours>
+    <SickLeaveHours>52</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>794a0b1f-c46a-401c-984d-008996fc7092</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>43</EmployeeID>
+    <NationalIDNumber>718299860</NationalIDNumber>
+    <ContactID>1194</ContactID>
+    <LoginID>adventure-works\russell0</LoginID>
+    <ManagerID>74</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1962-12-27T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-13T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>6</VacationHours>
+    <SickLeaveHours>23</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>6b10192f-d570-47c4-82c9-3d979b1efdc1</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>44</EmployeeID>
+    <NationalIDNumber>685233686</NationalIDNumber>
+    <ContactID>1232</ContactID>
+    <LoginID>adventure-works\ascott0</LoginID>
+    <ManagerID>148</ManagerID>
+    <Title>Master Scheduler</Title>
+    <BirthDate>1958-10-19T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-13T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>44</VacationHours>
+    <SickLeaveHours>42</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>13909262-4136-492f-bca3-0b0e3773b03e</rowguid>
+    <ModifiedDate>2005-01-26T09:17:08.637+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>45</EmployeeID>
+    <NationalIDNumber>295971920</NationalIDNumber>
+    <ContactID>1135</ContactID>
+    <LoginID>adventure-works\fred0</LoginID>
+    <ManagerID>210</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1979-07-27T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-13T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>47</VacationHours>
+    <SickLeaveHours>43</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>45358ae8-0b0e-4c11-90bb-dac3ec0d5c82</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>46</EmployeeID>
+    <NationalIDNumber>95958330</NationalIDNumber>
+    <ContactID>1033</ContactID>
+    <LoginID>adventure-works\sariya0</LoginID>
+    <ManagerID>6</ManagerID>
+    <Title>Marketing Specialist</Title>
+    <BirthDate>1977-06-21T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-13T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>45</VacationHours>
+    <SickLeaveHours>42</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>af21f1b7-0691-48ad-b325-b8f2d7b2268a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>47</EmployeeID>
+    <NationalIDNumber>332040978</NationalIDNumber>
+    <ContactID>1237</ContactID>
+    <LoginID>adventure-works\willis0</LoginID>
+    <ManagerID>30</ManagerID>
+    <Title>Recruiter</Title>
+    <BirthDate>1968-08-18T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-14T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>49</VacationHours>
+    <SickLeaveHours>44</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>a1d86ecc-ea17-4b1b-8369-f1d07ab0a469</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>48</EmployeeID>
+    <NationalIDNumber>857651804</NationalIDNumber>
+    <ContactID>1178</ContactID>
+    <LoginID>adventure-works\jun0</LoginID>
+    <ManagerID>38</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1969-08-06T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-15T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>90</VacationHours>
+    <SickLeaveHours>65</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>9c5f84d1-fb96-4d82-92a1-f932903deaad</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>49</EmployeeID>
+    <NationalIDNumber>553069203</NationalIDNumber>
+    <ContactID>1280</ContactID>
+    <LoginID>adventure-works\christian0</LoginID>
+    <ManagerID>218</ManagerID>
+    <Title>Maintenance Supervisor</Title>
+    <BirthDate>1966-02-18T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-15T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>92</VacationHours>
+    <SickLeaveHours>66</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>4611c7c5-90a0-407f-b054-93bd51533609</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>50</EmployeeID>
+    <NationalIDNumber>351069889</NationalIDNumber>
+    <ContactID>1119</ContactID>
+    <LoginID>adventure-works\susan1</LoginID>
+    <ManagerID>184</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1973-05-03T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-01-15T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>31</VacationHours>
+    <SickLeaveHours>35</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>f73d75d5-b47b-46ee-ad11-7bf13dd6c55d</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>51</EmployeeID>
+    <NationalIDNumber>370989364</NationalIDNumber>
+    <ContactID>1060</ContactID>
+    <LoginID>adventure-works\reuben0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC40</Title>
+    <BirthDate>1977-09-27T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-16T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>72</VacationHours>
+    <SickLeaveHours>56</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>71eee2a6-b9b3-4bf4-8949-01239df7c901</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>52</EmployeeID>
+    <NationalIDNumber>275962311</NationalIDNumber>
+    <ContactID>1162</ContactID>
+    <LoginID>adventure-works\kirk0</LoginID>
+    <ManagerID>123</ManagerID>
+    <Title>Production Technician - WC45</Title>
+    <BirthDate>1975-03-10T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-16T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>74</VacationHours>
+    <SickLeaveHours>57</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>08d25baa-167b-499c-8b51-31dcc856a8cf</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>53</EmployeeID>
+    <NationalIDNumber>36151748</NationalIDNumber>
+    <ContactID>1221</ContactID>
+    <LoginID>adventure-works\david2</LoginID>
+    <ManagerID>18</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1975-01-30T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-16T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>33</VacationHours>
+    <SickLeaveHours>36</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>fc617bb8-d2a3-4374-873c-8ef38d80127d</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>54</EmployeeID>
+    <NationalIDNumber>540688287</NationalIDNumber>
+    <ContactID>1264</ContactID>
+    <LoginID>adventure-works\tengiz0</LoginID>
+    <ManagerID>90</ManagerID>
+    <Title>Control Specialist</Title>
+    <BirthDate>1980-05-29T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-17T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>76</VacationHours>
+    <SickLeaveHours>58</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>c609b3b2-7969-410c-934c-62c34b63c4ee</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>55</EmployeeID>
+    <NationalIDNumber>568596888</NationalIDNumber>
+    <ContactID>1103</ContactID>
+    <LoginID>adventure-works\hanying0</LoginID>
+    <ManagerID>143</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1964-11-16T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-17T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>15</VacationHours>
+    <SickLeaveHours>27</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>618b71bc-6e8c-492d-8862-b9efb7a4e06a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>56</EmployeeID>
+    <NationalIDNumber>918737118</NationalIDNumber>
+    <ContactID>1146</ContactID>
+    <LoginID>adventure-works\kevin1</LoginID>
+    <ManagerID>210</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1976-01-26T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-18T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>58</VacationHours>
+    <SickLeaveHours>49</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>dc7e95ff-275e-41c2-8ed3-686864f0540a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>57</EmployeeID>
+    <NationalIDNumber>801758002</NationalIDNumber>
+    <ContactID>1205</ContactID>
+    <LoginID>adventure-works\annik0</LoginID>
+    <ManagerID>16</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1967-01-27T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-18T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>17</VacationHours>
+    <SickLeaveHours>28</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>51fde6ac-bd50-467c-90e5-10ca7310455c</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>58</EmployeeID>
+    <NationalIDNumber>415823523</NationalIDNumber>
+    <ContactID>1181</ContactID>
+    <LoginID>adventure-works\suroor0</LoginID>
+    <ManagerID>38</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1968-03-28T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-18T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>93</VacationHours>
+    <SickLeaveHours>66</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>14010b0e-c101-4e41-b788-21923399e512</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>59</EmployeeID>
+    <NationalIDNumber>363923697</NationalIDNumber>
+    <ContactID>1248</ContactID>
+    <LoginID>adventure-works\deborah0</LoginID>
+    <ManagerID>139</ManagerID>
+    <Title>Accounts Receivable Specialist</Title>
+    <BirthDate>1966-04-07T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-01-19T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>60</VacationHours>
+    <SickLeaveHours>50</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>09f75454-028c-46ca-bc08-0147bd0220d7</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>60</EmployeeID>
+    <NationalIDNumber>674171828</NationalIDNumber>
+    <ContactID>1189</ContactID>
+    <LoginID>adventure-works\jim0</LoginID>
+    <ManagerID>74</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1976-10-09T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-20T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>1</VacationHours>
+    <SickLeaveHours>20</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>6175876e-8fcc-4917-be06-fc358515e6df</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>61</EmployeeID>
+    <NationalIDNumber>138280935</NationalIDNumber>
+    <ContactID>1130</ContactID>
+    <LoginID>adventure-works\carole0</LoginID>
+    <ManagerID>173</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1973-11-19T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-01-20T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>42</VacationHours>
+    <SickLeaveHours>41</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>c76a41f1-a390-4ae4-a82a-2a87764c6391</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>62</EmployeeID>
+    <NationalIDNumber>476115505</NationalIDNumber>
+    <ContactID>1114</ContactID>
+    <LoginID>adventure-works\george0</LoginID>
+    <ManagerID>184</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1967-05-18T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-22T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>26</VacationHours>
+    <SickLeaveHours>33</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>01b119a2-2af3-4775-818e-b421fecb07a7</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>63</EmployeeID>
+    <NationalIDNumber>502058701</NationalIDNumber>
+    <ContactID>1157</ContactID>
+    <LoginID>adventure-works\gary0</LoginID>
+    <ManagerID>87</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1978-06-17T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-23T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>69</VacationHours>
+    <SickLeaveHours>54</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>a03d6052-1f85-4ebe-aac9-b67cfdcd91a6</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>64</EmployeeID>
+    <NationalIDNumber>7201901</NationalIDNumber>
+    <ContactID>1055</ContactID>
+    <LoginID>adventure-works\cristian0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC10</Title>
+    <BirthDate>1974-05-13T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-23T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>67</VacationHours>
+    <SickLeaveHours>53</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>5be16416-8570-417d-9e54-047db468b5e9</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>65</EmployeeID>
+    <NationalIDNumber>97728960</NationalIDNumber>
+    <ContactID>1098</ContactID>
+    <LoginID>adventure-works\raymond0</LoginID>
+    <ManagerID>143</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1957-04-02T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-24T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>10</VacationHours>
+    <SickLeaveHours>25</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>9f01e1fb-b893-40cc-9f5c-aaf89f9b7af5</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>66</EmployeeID>
+    <NationalIDNumber>525932996</NationalIDNumber>
+    <ContactID>1259</ContactID>
+    <LoginID>adventure-works\janaina0</LoginID>
+    <ManagerID>42</ManagerID>
+    <Title>Application Specialist</Title>
+    <BirthDate>1975-03-03T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-01-24T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>71</VacationHours>
+    <SickLeaveHours>55</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>241535c7-7a31-4a6a-9e0d-a83c30c2edda</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>67</EmployeeID>
+    <NationalIDNumber>843479922</NationalIDNumber>
+    <ContactID>1200</ContactID>
+    <LoginID>adventure-works\bob0</LoginID>
+    <ManagerID>14</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1969-09-16T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-25T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>12</VacationHours>
+    <SickLeaveHours>26</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>68616aea-81e5-4940-a7e4-6fba882bccf6</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>68</EmployeeID>
+    <NationalIDNumber>370487086</NationalIDNumber>
+    <ContactID>1141</ContactID>
+    <LoginID>adventure-works\shammi0</LoginID>
+    <ManagerID>210</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1970-11-05T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-25T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>53</VacationHours>
+    <SickLeaveHours>46</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>9bef0c94-7969-4905-9a42-ce469c754800</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>69</EmployeeID>
+    <NationalIDNumber>54759846</NationalIDNumber>
+    <ContactID>1184</ContactID>
+    <LoginID>adventure-works\linda0</LoginID>
+    <ManagerID>38</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1977-08-17T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-01-26T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>96</VacationHours>
+    <SickLeaveHours>68</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>fb84759c-b687-43b2-8727-125efe0f5e13</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>70</EmployeeID>
+    <NationalIDNumber>619308550</NationalIDNumber>
+    <ContactID>1239</ContactID>
+    <LoginID>adventure-works\mindy0</LoginID>
+    <ManagerID>30</ManagerID>
+    <Title>Benefits Specialist</Title>
+    <BirthDate>1974-12-22T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-01-26T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>51</VacationHours>
+    <SickLeaveHours>45</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>834d7ab6-06e6-4944-b42f-028cd4bd388e</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>71</EmployeeID>
+    <NationalIDNumber>121491555</NationalIDNumber>
+    <ContactID>1243</ContactID>
+    <LoginID>adventure-works\wendy0</LoginID>
+    <ManagerID>140</ManagerID>
+    <Title>Finance Manager</Title>
+    <BirthDate>1974-11-12T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-01-26T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>55</VacationHours>
+    <SickLeaveHours>47</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>8f410408-4aa8-4d67-886d-530bfe4ebe3b</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>72</EmployeeID>
+    <NationalIDNumber>420776180</NationalIDNumber>
+    <ContactID>1286</ContactID>
+    <LoginID>adventure-works\kim0</LoginID>
+    <ManagerID>85</ManagerID>
+    <Title>Stocker</Title>
+    <BirthDate>1974-06-01T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-01-27T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>98</VacationHours>
+    <SickLeaveHours>69</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>6150f197-7923-40d4-84f2-936207d468ab</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>73</EmployeeID>
+    <NationalIDNumber>604664374</NationalIDNumber>
+    <ContactID>1125</ContactID>
+    <LoginID>adventure-works\sandra0</LoginID>
+    <ManagerID>135</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1965-12-06T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-01-27T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>37</VacationHours>
+    <SickLeaveHours>38</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>f69f3ff9-e1e0-4419-a6bf-f705e1556160</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>74</EmployeeID>
+    <NationalIDNumber>778552911</NationalIDNumber>
+    <ContactID>1066</ContactID>
+    <LoginID>adventure-works\kok-ho0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC50</Title>
+    <BirthDate>1970-05-30T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-28T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>78</VacationHours>
+    <SickLeaveHours>59</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>57fb2c0f-b105-49f0-967a-88f3d743cb3f</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>75</EmployeeID>
+    <NationalIDNumber>435234965</NationalIDNumber>
+    <ContactID>1168</ContactID>
+    <LoginID>adventure-works\douglas0</LoginID>
+    <ManagerID>159</ManagerID>
+    <Title>Production Technician - WC45</Title>
+    <BirthDate>1975-12-26T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-28T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>80</VacationHours>
+    <SickLeaveHours>60</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>1ab0edeb-7558-4734-8423-5a11b44dca35</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>76</EmployeeID>
+    <NationalIDNumber>339712426</NationalIDNumber>
+    <ContactID>1227</ContactID>
+    <LoginID>adventure-works\james0</LoginID>
+    <ManagerID>7</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1974-08-26T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-28T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>39</VacationHours>
+    <SickLeaveHours>39</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>82e52d5a-165b-4c6d-9773-c3a6b6332ecd</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>77</EmployeeID>
+    <NationalIDNumber>403414852</NationalIDNumber>
+    <ContactID>1270</ContactID>
+    <LoginID>adventure-works\sean0</LoginID>
+    <ManagerID>41</ManagerID>
+    <Title>Quality Assurance Technician</Title>
+    <BirthDate>1966-04-07T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-29T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>82</VacationHours>
+    <SickLeaveHours>61</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>34e128cf-d904-4327-8014-9df0d5de7d08</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>78</EmployeeID>
+    <NationalIDNumber>368920189</NationalIDNumber>
+    <ContactID>1109</ContactID>
+    <LoginID>adventure-works\nitin0</LoginID>
+    <ManagerID>182</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1977-01-01T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-01-29T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>21</VacationHours>
+    <SickLeaveHours>30</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>ebbc6787-3f2d-4f6b-9ea3-4def02ef382e</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>79</EmployeeID>
+    <NationalIDNumber>811994146</NationalIDNumber>
+    <ContactID>1050</ContactID>
+    <LoginID>adventure-works\diane1</LoginID>
+    <ManagerID>158</ManagerID>
+    <Title>Research and Development Engineer</Title>
+    <BirthDate>1976-07-06T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-01-30T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>62</VacationHours>
+    <SickLeaveHours>51</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>31112635-663b-4018-b4a2-a685c0bf48a4</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>80</EmployeeID>
+    <NationalIDNumber>330211482</NationalIDNumber>
+    <ContactID>1211</ContactID>
+    <LoginID>adventure-works\rebecca0</LoginID>
+    <ManagerID>16</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1967-08-11T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-01-30T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>23</VacationHours>
+    <SickLeaveHours>31</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>bdadeb5c-a596-4da1-88ba-842c7a0cc10f</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>81</EmployeeID>
+    <NationalIDNumber>632092621</NationalIDNumber>
+    <ContactID>1136</ContactID>
+    <LoginID>adventure-works\rajesh0</LoginID>
+    <ManagerID>210</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1967-11-05T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>48</VacationHours>
+    <SickLeaveHours>44</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>aca7b40c-7ac0-4daa-b4c7-1051d850d7d9</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>82</EmployeeID>
+    <NationalIDNumber>264306399</NationalIDNumber>
+    <ContactID>1238</ContactID>
+    <LoginID>adventure-works\vidur0</LoginID>
+    <ManagerID>30</ManagerID>
+    <Title>Recruiter</Title>
+    <BirthDate>1974-09-02T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-02T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>50</VacationHours>
+    <SickLeaveHours>45</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>47e76b59-b137-4572-ad55-6b3e68c13bd3</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>83</EmployeeID>
+    <NationalIDNumber>981597097</NationalIDNumber>
+    <ContactID>1179</ContactID>
+    <LoginID>adventure-works\john1</LoginID>
+    <ManagerID>38</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1968-07-01T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-02T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>91</VacationHours>
+    <SickLeaveHours>65</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>b6998410-ee0f-4307-9e6e-fe348f11012d</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>84</EmployeeID>
+    <NationalIDNumber>693325305</NationalIDNumber>
+    <ContactID>1222</ContactID>
+    <LoginID>adventure-works\nancy0</LoginID>
+    <ManagerID>7</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1978-12-21T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-02-03T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>34</VacationHours>
+    <SickLeaveHours>37</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>6b7eb306-9a00-496a-98a9-4e94fe72f77c</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>85</EmployeeID>
+    <NationalIDNumber>521265716</NationalIDNumber>
+    <ContactID>1281</ContactID>
+    <LoginID>adventure-works\pilar0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Shipping and Receiving Supervisor</Title>
+    <BirthDate>1962-10-11T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-03T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>93</VacationHours>
+    <SickLeaveHours>66</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>01bcce22-d63a-4c3f-9ba8-d3d5a4c3bd52</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>86</EmployeeID>
+    <NationalIDNumber>746373306</NationalIDNumber>
+    <ContactID>1120</ContactID>
+    <LoginID>adventure-works\david3</LoginID>
+    <ManagerID>184</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1971-09-04T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-03T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>32</VacationHours>
+    <SickLeaveHours>36</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>84c358d4-2493-452c-b7d6-b212c893a009</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>87</EmployeeID>
+    <NationalIDNumber>750905084</NationalIDNumber>
+    <ContactID>1061</ContactID>
+    <LoginID>adventure-works\david4</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC40</Title>
+    <BirthDate>1973-08-02T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-04T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>73</VacationHours>
+    <SickLeaveHours>56</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>516538e8-115b-44f4-aa7b-e6c1d9f8adfc</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>88</EmployeeID>
+    <NationalIDNumber>514829225</NationalIDNumber>
+    <ContactID>1163</ContactID>
+    <LoginID>adventure-works\laura0</LoginID>
+    <ManagerID>123</ManagerID>
+    <Title>Production Technician - WC45</Title>
+    <BirthDate>1971-01-26T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-02-04T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>75</VacationHours>
+    <SickLeaveHours>57</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>fccd65ba-2702-4409-ae56-75af1710ac78</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>89</EmployeeID>
+    <NationalIDNumber>750246141</NationalIDNumber>
+    <ContactID>1206</ContactID>
+    <LoginID>adventure-works\margie0</LoginID>
+    <ManagerID>16</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1976-06-20T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-02-05T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>18</VacationHours>
+    <SickLeaveHours>29</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>352d6e2f-655b-49a2-9fec-efd7d8cd0d30</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>90</EmployeeID>
+    <NationalIDNumber>345106466</NationalIDNumber>
+    <ContactID>1265</ContactID>
+    <LoginID>adventure-works\zainal0</LoginID>
+    <ManagerID>200</ManagerID>
+    <Title>Document Control Manager</Title>
+    <BirthDate>1966-03-02T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-05T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>77</VacationHours>
+    <SickLeaveHours>58</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>dc60eeed-9f9f-4435-8666-4de4fafde9c3</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>91</EmployeeID>
+    <NationalIDNumber>19312190</NationalIDNumber>
+    <ContactID>1137</ContactID>
+    <LoginID>adventure-works\lorraine0</LoginID>
+    <ManagerID>210</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1978-12-28T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-02-05T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>49</VacationHours>
+    <SickLeaveHours>44</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>a63966b6-9ad6-40bc-afd4-a83745879f4d</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>92</EmployeeID>
+    <NationalIDNumber>212801092</NationalIDNumber>
+    <ContactID>1104</ContactID>
+    <LoginID>adventure-works\fadi0</LoginID>
+    <ManagerID>143</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1979-03-19T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-05T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>16</VacationHours>
+    <SickLeaveHours>28</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>9923376f-26d0-4845-9d99-cc3d696caeb8</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>93</EmployeeID>
+    <NationalIDNumber>769680433</NationalIDNumber>
+    <ContactID>1147</ContactID>
+    <LoginID>adventure-works\ryan0</LoginID>
+    <ManagerID>51</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1962-07-15T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-06T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>59</VacationHours>
+    <SickLeaveHours>49</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>10e5bd6f-2b9c-4192-a94d-6a2d50ea1adb</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>94</EmployeeID>
+    <NationalIDNumber>60517918</NationalIDNumber>
+    <ContactID>1249</ContactID>
+    <LoginID>adventure-works\candy0</LoginID>
+    <ManagerID>139</ManagerID>
+    <Title>Accounts Receivable Specialist</Title>
+    <BirthDate>1966-03-26T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-02-07T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>61</VacationHours>
+    <SickLeaveHours>50</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>9e9f713b-707c-4f7e-9504-de188052a045</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>95</EmployeeID>
+    <NationalIDNumber>431859843</NationalIDNumber>
+    <ContactID>1190</ContactID>
+    <LoginID>adventure-works\nuan0</LoginID>
+    <ManagerID>74</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1969-04-29T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-07T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>2</VacationHours>
+    <SickLeaveHours>21</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>a6089357-2f2f-48cc-ab3c-d9b75a3c09d7</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>96</EmployeeID>
+    <NationalIDNumber>621209647</NationalIDNumber>
+    <ContactID>1233</ContactID>
+    <LoginID>adventure-works\william0</LoginID>
+    <ManagerID>44</ManagerID>
+    <Title>Scheduling Assistant</Title>
+    <BirthDate>1971-12-08T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-08T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>45</VacationHours>
+    <SickLeaveHours>42</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>1a68cd62-6fe9-4613-90d4-2cd178e4e54a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>97</EmployeeID>
+    <NationalIDNumber>420023788</NationalIDNumber>
+    <ContactID>1131</ContactID>
+    <LoginID>adventure-works\bjorn0</LoginID>
+    <ManagerID>173</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1979-12-08T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-08T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>43</VacationHours>
+    <SickLeaveHours>41</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>a942e1e0-2d5e-4858-97c0-947020e96860</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>98</EmployeeID>
+    <NationalIDNumber>199546871</NationalIDNumber>
+    <ContactID>1174</ContactID>
+    <LoginID>adventure-works\scott0</LoginID>
+    <ManagerID>197</ManagerID>
+    <Title>Production Technician - WC45</Title>
+    <BirthDate>1977-03-13T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-09T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>86</VacationHours>
+    <SickLeaveHours>63</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>e35da50a-bb51-4e08-8b8d-87ef4650247a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>99</EmployeeID>
+    <NationalIDNumber>830150469</NationalIDNumber>
+    <ContactID>1158</ContactID>
+    <LoginID>adventure-works\michael1</LoginID>
+    <ManagerID>87</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1981-02-04T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-11T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>70</VacationHours>
+    <SickLeaveHours>55</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>416bf905-7d6c-4692-8fd6-40f6c4f9ecc4</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>100</EmployeeID>
+    <NationalIDNumber>322160340</NationalIDNumber>
+    <ContactID>1099</ContactID>
+    <LoginID>adventure-works\lane0</LoginID>
+    <ManagerID>143</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1964-10-24T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-12T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>11</VacationHours>
+    <SickLeaveHours>25</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>042427b8-3883-4a87-a6a3-724ee1690f49</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>101</EmployeeID>
+    <NationalIDNumber>827686041</NationalIDNumber>
+    <ContactID>1201</ContactID>
+    <LoginID>adventure-works\pete0</LoginID>
+    <ManagerID>14</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1967-03-07T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-12T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>13</VacationHours>
+    <SickLeaveHours>26</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>1f1d813d-3edc-4274-8e9b-4519d71685b6</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>102</EmployeeID>
+    <NationalIDNumber>671089628</NationalIDNumber>
+    <ContactID>1260</ContactID>
+    <LoginID>adventure-works\dan0</LoginID>
+    <ManagerID>42</ManagerID>
+    <Title>Application Specialist</Title>
+    <BirthDate>1971-07-28T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-12T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>72</VacationHours>
+    <SickLeaveHours>56</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>71b0d010-5ac5-4e91-8efa-c311c1372a73</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>103</EmployeeID>
+    <NationalIDNumber>231203233</NationalIDNumber>
+    <ContactID>1244</ContactID>
+    <LoginID>adventure-works\david5</LoginID>
+    <ManagerID>140</ManagerID>
+    <Title>Assistant to the Chief Financial Officer</Title>
+    <BirthDate>1954-07-23T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-13T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>56</VacationHours>
+    <SickLeaveHours>48</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>be81fd77-428c-449f-ab79-48b1cdf53d6a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>104</EmployeeID>
+    <NationalIDNumber>204035155</NationalIDNumber>
+    <ContactID>1195</ContactID>
+    <LoginID>adventure-works\lolan0</LoginID>
+    <ManagerID>74</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1963-02-25T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-13T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>7</VacationHours>
+    <SickLeaveHours>23</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>9b9b768d-7cc1-4dce-87cb-765ab73a6aff</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>105</EmployeeID>
+    <NationalIDNumber>992874797</NationalIDNumber>
+    <ContactID>1142</ContactID>
+    <LoginID>adventure-works\paula1</LoginID>
+    <ManagerID>210</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1977-03-13T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-02-13T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>54</VacationHours>
+    <SickLeaveHours>47</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>5dd2be46-204f-4af3-91f5-5ef082f6d6a6</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>106</EmployeeID>
+    <NationalIDNumber>767955365</NationalIDNumber>
+    <ContactID>1034</ContactID>
+    <LoginID>adventure-works\mary0</LoginID>
+    <ManagerID>6</ManagerID>
+    <Title>Marketing Specialist</Title>
+    <BirthDate>1952-10-14T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-02-13T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>46</VacationHours>
+    <SickLeaveHours>43</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>90899830-127e-4876-85ca-7f6e03025281</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>107</EmployeeID>
+    <NationalIDNumber>342607223</NationalIDNumber>
+    <ContactID>1185</ContactID>
+    <LoginID>adventure-works\mindaugas0</LoginID>
+    <ManagerID>38</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1968-06-07T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-14T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>97</VacationHours>
+    <SickLeaveHours>68</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>1d784088-dacb-4185-9f60-3d2db4925ba5</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>108</EmployeeID>
+    <NationalIDNumber>45615666</NationalIDNumber>
+    <ContactID>1228</ContactID>
+    <LoginID>adventure-works\eric0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC20</Title>
+    <BirthDate>1975-02-20T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-15T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>40</VacationHours>
+    <SickLeaveHours>40</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>2abcf39b-88d7-49fa-820a-83d223322ba5</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>109</EmployeeID>
+    <NationalIDNumber>295847284</NationalIDNumber>
+    <ContactID>1287</ContactID>
+    <LoginID>adventure-works\ken0</LoginID>
+    <Title>Chief Executive Officer</Title>
+    <BirthDate>1959-03-02T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-15T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>99</VacationHours>
+    <SickLeaveHours>69</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>f01251e5-96a3-448d-981e-0f99d789110d</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>110</EmployeeID>
+    <NationalIDNumber>733022683</NationalIDNumber>
+    <ContactID>1126</ContactID>
+    <LoginID>adventure-works\jason0</LoginID>
+    <ManagerID>135</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1979-01-08T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-15T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>38</VacationHours>
+    <SickLeaveHours>39</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>c16c501d-942d-4eb0-b5c4-ef8119fbeba2</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>111</EmployeeID>
+    <NationalIDNumber>381772114</NationalIDNumber>
+    <ContactID>1271</ContactID>
+    <LoginID>adventure-works\mark0</LoginID>
+    <ManagerID>41</ManagerID>
+    <Title>Quality Assurance Technician</Title>
+    <BirthDate>1976-05-31T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-16T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>83</VacationHours>
+    <SickLeaveHours>61</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>6b63ef27-2c55-4f4c-be29-fce8b694dc4a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>112</EmployeeID>
+    <NationalIDNumber>187369436</NationalIDNumber>
+    <ContactID>1169</ContactID>
+    <LoginID>adventure-works\janeth0</LoginID>
+    <ManagerID>159</ManagerID>
+    <Title>Production Technician - WC45</Title>
+    <BirthDate>1962-08-25T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-02-16T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>81</VacationHours>
+    <SickLeaveHours>60</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>8261b8cb-bc3f-4bce-b364-86035d870263</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>113</EmployeeID>
+    <NationalIDNumber>364818297</NationalIDNumber>
+    <ContactID>1110</ContactID>
+    <LoginID>adventure-works\marc0</LoginID>
+    <ManagerID>184</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1976-11-24T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-17T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>22</VacationHours>
+    <SickLeaveHours>31</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>1f151abc-db4a-431a-8a5d-15f46c5b8ffc</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>114</EmployeeID>
+    <NationalIDNumber>658797903</NationalIDNumber>
+    <ContactID>1051</ContactID>
+    <LoginID>adventure-works\gigi0</LoginID>
+    <ManagerID>158</ManagerID>
+    <Title>Research and Development Engineer</Title>
+    <BirthDate>1969-02-21T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-02-17T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>63</VacationHours>
+    <SickLeaveHours>51</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>50b6cdc6-7570-47ef-9570-48a64b5f2ecf</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>115</EmployeeID>
+    <NationalIDNumber>886023130</NationalIDNumber>
+    <ContactID>1094</ContactID>
+    <LoginID>adventure-works\paul1</LoginID>
+    <ManagerID>108</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1980-12-05T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-18T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>6</VacationHours>
+    <SickLeaveHours>23</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>dc5ba622-b860-41ee-af92-5feb4779b589</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>116</EmployeeID>
+    <NationalIDNumber>749211824</NationalIDNumber>
+    <ContactID>1144</ContactID>
+    <LoginID>adventure-works\frank0</LoginID>
+    <ManagerID>210</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1977-10-07T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-18T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>56</VacationHours>
+    <SickLeaveHours>48</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>dd9ad278-ed17-40cf-8619-baf1bb9d1cf2</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>117</EmployeeID>
+    <NationalIDNumber>643805155</NationalIDNumber>
+    <ContactID>1255</ContactID>
+    <LoginID>adventure-works\françois0</LoginID>
+    <ManagerID>42</ManagerID>
+    <Title>Database Administrator</Title>
+    <BirthDate>1965-06-17T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-18T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>67</VacationHours>
+    <SickLeaveHours>53</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>0c7f025d-8d56-48ef-86c0-f09db63d0182</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>118</EmployeeID>
+    <NationalIDNumber>92096924</NationalIDNumber>
+    <ContactID>1196</ContactID>
+    <LoginID>adventure-works\diane2</LoginID>
+    <ManagerID>14</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1979-09-10T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-02-19T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>8</VacationHours>
+    <SickLeaveHours>24</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>721a2921-c415-46de-9111-13f25f428b8b</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>119</EmployeeID>
+    <NationalIDNumber>72636981</NationalIDNumber>
+    <ContactID>1035</ContactID>
+    <LoginID>adventure-works\jill0</LoginID>
+    <ManagerID>6</ManagerID>
+    <Title>Marketing Specialist</Title>
+    <BirthDate>1969-07-19T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-02-19T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>47</VacationHours>
+    <SickLeaveHours>43</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>53575c58-fba1-4c1a-b8ff-95e050b44393</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>120</EmployeeID>
+    <NationalIDNumber>563680513</NationalIDNumber>
+    <ContactID>1180</ContactID>
+    <LoginID>adventure-works\angela0</LoginID>
+    <ManagerID>38</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1981-07-01T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-02-21T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>92</VacationHours>
+    <SickLeaveHours>66</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>4958e1c3-c872-4222-954e-09d2060ea7ef</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>121</EmployeeID>
+    <NationalIDNumber>584205124</NationalIDNumber>
+    <ContactID>1282</ContactID>
+    <LoginID>adventure-works\matthias0</LoginID>
+    <ManagerID>85</ManagerID>
+    <Title>Shipping and Receiving Clerk</Title>
+    <BirthDate>1963-12-13T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-21T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>94</VacationHours>
+    <SickLeaveHours>67</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>54ed63dc-c62c-4cc7-89c2-015df49c49a5</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>122</EmployeeID>
+    <NationalIDNumber>458159238</NationalIDNumber>
+    <ContactID>1223</ContactID>
+    <LoginID>adventure-works\bryan0</LoginID>
+    <ManagerID>7</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1963-09-28T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-22T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>35</VacationHours>
+    <SickLeaveHours>37</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>4652d4e4-6a27-47ed-9f51-c377e293da28</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>123</EmployeeID>
+    <NationalIDNumber>712885347</NationalIDNumber>
+    <ContactID>1062</ContactID>
+    <LoginID>adventure-works\jeff0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC45</Title>
+    <BirthDate>1967-02-16T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-22T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>74</VacationHours>
+    <SickLeaveHours>57</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>7c7d459e-1f49-427d-9bd5-de31880c85dc</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>124</EmployeeID>
+    <NationalIDNumber>87268837</NationalIDNumber>
+    <ContactID>1121</ContactID>
+    <LoginID>adventure-works\eugene0</LoginID>
+    <ManagerID>184</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1977-08-15T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-22T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>33</VacationHours>
+    <SickLeaveHours>36</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>1ba1d374-18ae-48ed-938f-6f5d2eec4d4d</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>125</EmployeeID>
+    <NationalIDNumber>969985265</NationalIDNumber>
+    <ContactID>1105</ContactID>
+    <LoginID>adventure-works\barbara0</LoginID>
+    <ManagerID>182</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1969-08-02T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-02-23T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>17</VacationHours>
+    <SickLeaveHours>28</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>045c9cbb-3448-4599-9fa9-6c7a9f82f832</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>126</EmployeeID>
+    <NationalIDNumber>539490372</NationalIDNumber>
+    <ContactID>1164</ContactID>
+    <LoginID>adventure-works\chris0</LoginID>
+    <ManagerID>123</ManagerID>
+    <Title>Production Technician - WC45</Title>
+    <BirthDate>1979-01-17T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-23T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>76</VacationHours>
+    <SickLeaveHours>58</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>300223f3-5587-4230-909b-d9c4afd6d683</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>127</EmployeeID>
+    <NationalIDNumber>242381745</NationalIDNumber>
+    <ContactID>1266</ContactID>
+    <LoginID>adventure-works\sean1</LoginID>
+    <ManagerID>90</ManagerID>
+    <Title>Document Control Assistant</Title>
+    <BirthDate>1977-04-12T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-23T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>78</VacationHours>
+    <SickLeaveHours>59</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>f78657a9-83ef-4b4d-9809-3c4c6d1a7bb4</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>128</EmployeeID>
+    <NationalIDNumber>929666391</NationalIDNumber>
+    <ContactID>1254</ContactID>
+    <LoginID>adventure-works\dan1</LoginID>
+    <ManagerID>42</ManagerID>
+    <Title>Database Administrator</Title>
+    <BirthDate>1966-02-06T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-23T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>66</VacationHours>
+    <SickLeaveHours>53</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>2474e1a9-902d-466c-b0b2-6dcac927f753</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>129</EmployeeID>
+    <NationalIDNumber>948320468</NationalIDNumber>
+    <ContactID>1207</ContactID>
+    <LoginID>adventure-works\mark1</LoginID>
+    <ManagerID>16</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1969-10-26T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-24T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>19</VacationHours>
+    <SickLeaveHours>29</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>cdb2c6df-93e5-4558-91c8-424d5e7c658b</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>130</EmployeeID>
+    <NationalIDNumber>931190412</NationalIDNumber>
+    <ContactID>1250</ContactID>
+    <LoginID>adventure-works\bryan1</LoginID>
+    <ManagerID>139</ManagerID>
+    <Title>Accounts Receivable Specialist</Title>
+    <BirthDate>1974-10-22T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-25T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>62</VacationHours>
+    <SickLeaveHours>51</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>cb3e71ec-a381-4716-87df-d3841ab9795a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>131</EmployeeID>
+    <NationalIDNumber>153288994</NationalIDNumber>
+    <ContactID>1191</ContactID>
+    <LoginID>adventure-works\houman0</LoginID>
+    <ManagerID>74</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1961-09-30T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-26T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>3</VacationHours>
+    <SickLeaveHours>21</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>9ce8b2e8-9944-4ba5-97de-441d8314f161</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>132</EmployeeID>
+    <NationalIDNumber>981495526</NationalIDNumber>
+    <ContactID>1234</ContactID>
+    <LoginID>adventure-works\sairaj0</LoginID>
+    <ManagerID>44</ManagerID>
+    <Title>Scheduling Assistant</Title>
+    <BirthDate>1978-01-22T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-27T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>46</VacationHours>
+    <SickLeaveHours>43</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>4d36a720-ce32-4c47-866a-db7844449309</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>133</EmployeeID>
+    <NationalIDNumber>363996959</NationalIDNumber>
+    <ContactID>1132</ContactID>
+    <LoginID>adventure-works\michiko0</LoginID>
+    <ManagerID>173</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1972-07-28T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-27T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>44</VacationHours>
+    <SickLeaveHours>42</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>f359f5b6-5e18-4c62-8531-14d951911ce5</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>134</EmployeeID>
+    <NationalIDNumber>585408256</NationalIDNumber>
+    <ContactID>1116</ContactID>
+    <LoginID>adventure-works\benjamin0</LoginID>
+    <ManagerID>184</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1976-02-06T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-02-28T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>28</VacationHours>
+    <SickLeaveHours>34</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>f1a6f824-895b-4a0f-af1b-05fba703e69f</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>135</EmployeeID>
+    <NationalIDNumber>386315192</NationalIDNumber>
+    <ContactID>1057</ContactID>
+    <LoginID>adventure-works\cynthia0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC30</Title>
+    <BirthDate>1971-09-19T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-02-28T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>69</VacationHours>
+    <SickLeaveHours>54</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>f9e1dc46-0d03-4a8a-b693-1a964bc13e6c</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>136</EmployeeID>
+    <NationalIDNumber>167554340</NationalIDNumber>
+    <ContactID>1175</ContactID>
+    <LoginID>adventure-works\kathie0</LoginID>
+    <ManagerID>197</ManagerID>
+    <Title>Production Technician - WC45</Title>
+    <BirthDate>1980-12-02T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-02-28T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>87</VacationHours>
+    <SickLeaveHours>63</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>25fc84d7-e013-44b8-82cd-63cd4723af81</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>137</EmployeeID>
+    <NationalIDNumber>410742000</NationalIDNumber>
+    <ContactID>1202</ContactID>
+    <LoginID>adventure-works\britta0</LoginID>
+    <ManagerID>16</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1979-10-30T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-03-02T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>14</VacationHours>
+    <SickLeaveHours>27</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>fc12677f-42f8-4790-ad69-685088ed7e5f</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>138</EmployeeID>
+    <NationalIDNumber>746201340</NationalIDNumber>
+    <ContactID>1143</ContactID>
+    <LoginID>adventure-works\brian0</LoginID>
+    <ManagerID>210</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1967-03-14T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-02T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>55</VacationHours>
+    <SickLeaveHours>47</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>18d594a8-b4ed-43c0-9c43-6033feaadf4e</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>139</EmployeeID>
+    <NationalIDNumber>30845</NationalIDNumber>
+    <ContactID>1245</ContactID>
+    <LoginID>adventure-works\david6</LoginID>
+    <ManagerID>140</ManagerID>
+    <Title>Accounts Manager</Title>
+    <BirthDate>1973-08-08T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-03T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>57</VacationHours>
+    <SickLeaveHours>48</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>2dc9d534-f5d1-4a14-8282-0a2a0eb6fd4d</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>140</EmployeeID>
+    <NationalIDNumber>184188301</NationalIDNumber>
+    <ContactID>1288</ContactID>
+    <LoginID>adventure-works\laura1</LoginID>
+    <ManagerID>109</ManagerID>
+    <Title>Chief Financial Officer</Title>
+    <BirthDate>1966-02-06T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-03-04T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>0</VacationHours>
+    <SickLeaveHours>20</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>d5e315a6-bd65-4d67-9d5f-81ef5c4ef8a6</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>141</EmployeeID>
+    <NationalIDNumber>398737566</NationalIDNumber>
+    <ContactID>1186</ContactID>
+    <LoginID>adventure-works\michael2</LoginID>
+    <ManagerID>38</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1964-06-03T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-04T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>98</VacationHours>
+    <SickLeaveHours>69</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>c6eb2566-cf28-4602-9a25-5b91c8728838</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>142</EmployeeID>
+    <NationalIDNumber>764853868</NationalIDNumber>
+    <ContactID>1127</ContactID>
+    <LoginID>adventure-works\andy0</LoginID>
+    <ManagerID>135</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1973-11-20T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-04T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>39</VacationHours>
+    <SickLeaveHours>39</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>615a6bfe-3046-4037-9764-238535f725be</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>143</EmployeeID>
+    <NationalIDNumber>319472946</NationalIDNumber>
+    <ContactID>1229</ContactID>
+    <LoginID>adventure-works\yuhong0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC20</Title>
+    <BirthDate>1967-05-08T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-05T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>41</VacationHours>
+    <SickLeaveHours>40</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>f1a684f4-02db-4b22-8977-6d8d3a21100e</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>144</EmployeeID>
+    <NationalIDNumber>456839592</NationalIDNumber>
+    <ContactID>1170</ContactID>
+    <LoginID>adventure-works\robert0</LoginID>
+    <ManagerID>159</ManagerID>
+    <Title>Production Technician - WC45</Title>
+    <BirthDate>1975-04-01T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-06T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>82</VacationHours>
+    <SickLeaveHours>61</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>2203154e-5ebd-4aca-99be-d835a3309d03</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>145</EmployeeID>
+    <NationalIDNumber>131471224</NationalIDNumber>
+    <ContactID>1272</ContactID>
+    <LoginID>adventure-works\andreas0</LoginID>
+    <ManagerID>41</ManagerID>
+    <Title>Quality Assurance Technician</Title>
+    <BirthDate>1979-04-29T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-06T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>84</VacationHours>
+    <SickLeaveHours>62</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>f4ddd64f-dffe-4df3-aa17-d6bea1924818</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>146</EmployeeID>
+    <NationalIDNumber>259388196</NationalIDNumber>
+    <ContactID>1111</ContactID>
+    <LoginID>adventure-works\reed0</LoginID>
+    <ManagerID>184</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1979-02-09T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-06T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>23</VacationHours>
+    <SickLeaveHours>31</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>b3967c00-7014-4960-af15-b1a6d3094f6f</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>147</EmployeeID>
+    <NationalIDNumber>812797414</NationalIDNumber>
+    <ContactID>1100</ContactID>
+    <LoginID>adventure-works\linda1</LoginID>
+    <ManagerID>143</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1967-11-06T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-03-07T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>12</VacationHours>
+    <SickLeaveHours>26</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>f963f913-449e-4ebb-bfda-fc0c3010db65</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>148</EmployeeID>
+    <NationalIDNumber>519899904</NationalIDNumber>
+    <ContactID>1052</ContactID>
+    <LoginID>adventure-works\james1</LoginID>
+    <ManagerID>109</ManagerID>
+    <Title>Vice President of Production</Title>
+    <BirthDate>1973-02-07T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-07T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>64</VacationHours>
+    <SickLeaveHours>52</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>d7314f24-2af1-429c-9bbb-4038f45f3e6c</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>149</EmployeeID>
+    <NationalIDNumber>314747499</NationalIDNumber>
+    <ContactID>1261</ContactID>
+    <LoginID>adventure-works\ramesh0</LoginID>
+    <ManagerID>42</ManagerID>
+    <Title>Application Specialist</Title>
+    <BirthDate>1978-04-14T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-07T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>73</VacationHours>
+    <SickLeaveHours>56</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>be190269-4003-4d7f-809e-7b3fdc235da8</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>150</EmployeeID>
+    <NationalIDNumber>858323870</NationalIDNumber>
+    <ContactID>1256</ContactID>
+    <LoginID>adventure-works\stephanie0</LoginID>
+    <ManagerID>42</ManagerID>
+    <Title>Network Manager</Title>
+    <BirthDate>1974-04-26T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-03-08T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>68</VacationHours>
+    <SickLeaveHours>54</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>221cbb7b-8bae-452b-a16f-a67ebb3873c8</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>151</EmployeeID>
+    <NationalIDNumber>25011600</NationalIDNumber>
+    <ContactID>1095</ContactID>
+    <LoginID>adventure-works\samantha0</LoginID>
+    <ManagerID>108</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1977-12-23T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-03-08T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>7</VacationHours>
+    <SickLeaveHours>23</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>1629eddd-d0ae-4cb9-a59c-3a175f7027e5</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>152</EmployeeID>
+    <NationalIDNumber>436757988</NationalIDNumber>
+    <ContactID>1138</ContactID>
+    <LoginID>adventure-works\tawana0</LoginID>
+    <ManagerID>210</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1979-12-12T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-09T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>50</VacationHours>
+    <SickLeaveHours>45</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>bb4a3e50-232e-4212-9faf-e67429febc7d</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>153</EmployeeID>
+    <NationalIDNumber>652535724</NationalIDNumber>
+    <ContactID>1197</ContactID>
+    <LoginID>adventure-works\denise0</LoginID>
+    <ManagerID>14</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1978-08-07T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-03-09T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>9</VacationHours>
+    <SickLeaveHours>24</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>77878c43-f16e-437d-892f-3cfcc0715a0a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>154</EmployeeID>
+    <NationalIDNumber>416679555</NationalIDNumber>
+    <ContactID>1240</ContactID>
+    <LoginID>adventure-works\hao0</LoginID>
+    <ManagerID>30</ManagerID>
+    <Title>Human Resources Administrative Assistant</Title>
+    <BirthDate>1967-05-19T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-10T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>52</VacationHours>
+    <SickLeaveHours>46</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>fd53c4c8-b34e-460f-9ee5-747b07fe98b3</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>155</EmployeeID>
+    <NationalIDNumber>377784364</NationalIDNumber>
+    <ContactID>1165</ContactID>
+    <LoginID>adventure-works\alex0</LoginID>
+    <ManagerID>123</ManagerID>
+    <Title>Production Technician - WC45</Title>
+    <BirthDate>1980-05-14T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-12T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>77</VacationHours>
+    <SickLeaveHours>58</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>b96bc9c2-5a25-4a9b-887a-c7c10e47b80c</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>156</EmployeeID>
+    <NationalIDNumber>66073987</NationalIDNumber>
+    <ContactID>1224</ContactID>
+    <LoginID>adventure-works\eugene1</LoginID>
+    <ManagerID>7</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1966-03-13T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-12T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>36</VacationHours>
+    <SickLeaveHours>38</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>33543b35-77da-4600-a41b-1eafea0ad643</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>157</EmployeeID>
+    <NationalIDNumber>999440576</NationalIDNumber>
+    <ContactID>1210</ContactID>
+    <LoginID>adventure-works\brandon0</LoginID>
+    <ManagerID>16</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1967-02-11T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-12T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>22</VacationHours>
+    <SickLeaveHours>31</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>ca5d1935-44e2-4c45-93bb-809e59f56796</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>158</EmployeeID>
+    <NationalIDNumber>134969118</NationalIDNumber>
+    <ContactID>1049</ContactID>
+    <LoginID>adventure-works\dylan0</LoginID>
+    <ManagerID>3</ManagerID>
+    <Title>Research and Development Manager</Title>
+    <BirthDate>1977-03-27T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-12T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>61</VacationHours>
+    <SickLeaveHours>50</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>4f46deca-ef01-41fd-9829-0adab368e431</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>159</EmployeeID>
+    <NationalIDNumber>551834634</NationalIDNumber>
+    <ContactID>1063</ContactID>
+    <LoginID>adventure-works\shane0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC45</Title>
+    <BirthDate>1980-06-24T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-12T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>75</VacationHours>
+    <SickLeaveHours>57</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>2625c358-672a-4000-ad67-b8cd3f318285</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>160</EmployeeID>
+    <NationalIDNumber>305522471</NationalIDNumber>
+    <ContactID>1106</ContactID>
+    <LoginID>adventure-works\john2</LoginID>
+    <ManagerID>182</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1976-05-06T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-13T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>18</VacationHours>
+    <SickLeaveHours>29</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>bab69951-28ad-4bca-b5ac-032746d0cc6f</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>161</EmployeeID>
+    <NationalIDNumber>260770918</NationalIDNumber>
+    <ContactID>1267</ContactID>
+    <LoginID>adventure-works\karen0</LoginID>
+    <ManagerID>90</ManagerID>
+    <Title>Document Control Assistant</Title>
+    <BirthDate>1966-01-25T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-03-13T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>79</VacationHours>
+    <SickLeaveHours>59</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>8a41ed23-7ae2-4c15-aa5d-9496e721f848</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>162</EmployeeID>
+    <NationalIDNumber>788456780</NationalIDNumber>
+    <ContactID>1208</ContactID>
+    <LoginID>adventure-works\jose0</LoginID>
+    <ManagerID>16</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1974-09-01T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-14T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>20</VacationHours>
+    <SickLeaveHours>30</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>9e912556-88ba-41ee-b946-cb84ab4c1102</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>163</EmployeeID>
+    <NationalIDNumber>370581729</NationalIDNumber>
+    <ContactID>1188</ContactID>
+    <LoginID>adventure-works\mandar0</LoginID>
+    <ManagerID>74</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1976-04-21T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-14T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>0</VacationHours>
+    <SickLeaveHours>20</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>1f0e068a-48c5-40bf-8190-565150efdadd</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>164</EmployeeID>
+    <NationalIDNumber>603686790</NationalIDNumber>
+    <ContactID>1047</ContactID>
+    <LoginID>adventure-works\mikael0</LoginID>
+    <ManagerID>274</ManagerID>
+    <Title>Buyer</Title>
+    <BirthDate>1974-09-18T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-14T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>59</VacationHours>
+    <SickLeaveHours>49</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>d0fd55ff-42fa-491e-8b3b-ab3316018909</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>165</EmployeeID>
+    <NationalIDNumber>152085091</NationalIDNumber>
+    <ContactID>1192</ContactID>
+    <LoginID>adventure-works\sameer0</LoginID>
+    <ManagerID>74</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1968-07-27T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-15T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>4</VacationHours>
+    <SickLeaveHours>22</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>a703169f-1563-488e-914d-d784fd07f29a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>166</EmployeeID>
+    <NationalIDNumber>663843431</NationalIDNumber>
+    <ContactID>1251</ContactID>
+    <LoginID>adventure-works\dragan0</LoginID>
+    <ManagerID>139</ManagerID>
+    <Title>Accounts Payable Specialist</Title>
+    <BirthDate>1967-03-18T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-15T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>63</VacationHours>
+    <SickLeaveHours>51</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>51c54d34-064b-44f7-a6b1-7702bd491980</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>167</EmployeeID>
+    <NationalIDNumber>227319668</NationalIDNumber>
+    <ContactID>1133</ContactID>
+    <LoginID>adventure-works\carol0</LoginID>
+    <ManagerID>173</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1978-11-18T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-03-16T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>45</VacationHours>
+    <SickLeaveHours>42</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>8d0182a3-5b59-4eea-9b3c-c7f05da9a2ce</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>168</EmployeeID>
+    <NationalIDNumber>578953538</NationalIDNumber>
+    <ContactID>1159</ContactID>
+    <LoginID>adventure-works\rob1</LoginID>
+    <ManagerID>87</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1963-09-05T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-17T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>71</VacationHours>
+    <SickLeaveHours>55</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>54fda597-6822-42b4-b128-63eca03071f2</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>169</EmployeeID>
+    <NationalIDNumber>222400012</NationalIDNumber>
+    <ContactID>1176</ContactID>
+    <LoginID>adventure-works\don0</LoginID>
+    <ManagerID>38</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1961-07-14T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-17T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>88</VacationHours>
+    <SickLeaveHours>64</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>e720053d-922e-4c91-b81a-a1ca4ef8bb0e</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>170</EmployeeID>
+    <NationalIDNumber>470689086</NationalIDNumber>
+    <ContactID>1235</ContactID>
+    <LoginID>adventure-works\alan0</LoginID>
+    <ManagerID>44</ManagerID>
+    <Title>Scheduling Assistant</Title>
+    <BirthDate>1974-04-30T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-17T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>47</VacationHours>
+    <SickLeaveHours>43</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>de321854-b076-4d59-bb7b-42152031b108</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>171</EmployeeID>
+    <NationalIDNumber>860123571</NationalIDNumber>
+    <ContactID>1117</ContactID>
+    <LoginID>adventure-works\david7</LoginID>
+    <ManagerID>184</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1975-10-25T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-18T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>29</VacationHours>
+    <SickLeaveHours>34</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>85afb689-7eab-41a8-b154-9446195d5bde</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>172</EmployeeID>
+    <NationalIDNumber>273260055</NationalIDNumber>
+    <ContactID>1160</ContactID>
+    <LoginID>adventure-works\baris0</LoginID>
+    <ManagerID>87</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1980-11-07T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-19T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>72</VacationHours>
+    <SickLeaveHours>56</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>232d68bf-df58-48f9-9235-53bd4b009b4b</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>173</EmployeeID>
+    <NationalIDNumber>578935259</NationalIDNumber>
+    <ContactID>1058</ContactID>
+    <LoginID>adventure-works\michael3</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC30</Title>
+    <BirthDate>1979-03-02T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-19T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>70</VacationHours>
+    <SickLeaveHours>55</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>1ad772d7-7b4a-4a7b-8676-49dd7608cb94</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>174</EmployeeID>
+    <NationalIDNumber>752513276</NationalIDNumber>
+    <ContactID>1219</ContactID>
+    <LoginID>adventure-works\steve0</LoginID>
+    <ManagerID>18</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1981-05-07T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-19T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>31</VacationHours>
+    <SickLeaveHours>35</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>12f678d7-ead3-4cf4-8518-a19aacf2a6d4</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>175</EmployeeID>
+    <NationalIDNumber>754372876</NationalIDNumber>
+    <ContactID>1203</ContactID>
+    <LoginID>adventure-works\suchitra0</LoginID>
+    <ManagerID>16</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1977-07-11T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-03-20T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>15</VacationHours>
+    <SickLeaveHours>27</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>6adbd932-0da5-4f5c-af67-8e3a53630896</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>176</EmployeeID>
+    <NationalIDNumber>58317344</NationalIDNumber>
+    <ContactID>1262</ContactID>
+    <LoginID>adventure-works\karen1</LoginID>
+    <ManagerID>42</ManagerID>
+    <Title>Application Specialist</Title>
+    <BirthDate>1968-06-19T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-03-20T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>74</VacationHours>
+    <SickLeaveHours>57</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>45c3d0f5-3332-419d-ad40-a98996bb5531</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>177</EmployeeID>
+    <NationalIDNumber>404159499</NationalIDNumber>
+    <ContactID>1101</ContactID>
+    <LoginID>adventure-works\terrence0</LoginID>
+    <ManagerID>143</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1975-01-09T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-20T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>13</VacationHours>
+    <SickLeaveHours>26</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>4da76442-5eef-41fb-ae19-16c55714f9ad</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>178</EmployeeID>
+    <NationalIDNumber>363910111</NationalIDNumber>
+    <ContactID>1246</ContactID>
+    <LoginID>adventure-works\barbara1</LoginID>
+    <ManagerID>139</ManagerID>
+    <Title>Accountant</Title>
+    <BirthDate>1966-02-04T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-03-22T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>58</VacationHours>
+    <SickLeaveHours>49</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>3ffba84e-8e97-4649-a5e1-859649d83aae</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>179</EmployeeID>
+    <NationalIDNumber>599942664</NationalIDNumber>
+    <ContactID>1187</ContactID>
+    <LoginID>adventure-works\chad0</LoginID>
+    <ManagerID>38</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1980-09-04T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-22T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>99</VacationHours>
+    <SickLeaveHours>69</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>83a32d4c-4725-478f-9997-91739bb957ba</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>180</EmployeeID>
+    <NationalIDNumber>993310268</NationalIDNumber>
+    <ContactID>1128</ContactID>
+    <LoginID>adventure-works\rostislav0</LoginID>
+    <ManagerID>135</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1967-10-15T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-23T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>40</VacationHours>
+    <SickLeaveHours>40</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>00027a8c-c2f8-4a31-aba8-8a203638b8f1</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>181</EmployeeID>
+    <NationalIDNumber>20244403</NationalIDNumber>
+    <ContactID>1171</ContactID>
+    <LoginID>adventure-works\belinda0</LoginID>
+    <ManagerID>197</ManagerID>
+    <Title>Production Technician - WC45</Title>
+    <BirthDate>1959-10-19T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-03-24T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>83</VacationHours>
+    <SickLeaveHours>61</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>f714b5ec-ca7c-4e6e-a812-2c5a119f4c30</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>182</EmployeeID>
+    <NationalIDNumber>862951447</NationalIDNumber>
+    <ContactID>1230</ContactID>
+    <LoginID>adventure-works\katie0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC20</Title>
+    <BirthDate>1974-12-20T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-03-24T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>42</VacationHours>
+    <SickLeaveHours>41</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>5be8b211-cbe5-45d8-84fd-23f36a881473</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>183</EmployeeID>
+    <NationalIDNumber>551346974</NationalIDNumber>
+    <ContactID>1112</ContactID>
+    <LoginID>adventure-works\russell1</LoginID>
+    <ManagerID>184</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1972-03-14T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-25T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>24</VacationHours>
+    <SickLeaveHours>32</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>d54c7989-2675-4ef3-b392-370a8d264b2b</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>184</EmployeeID>
+    <NationalIDNumber>60114406</NationalIDNumber>
+    <ContactID>1056</ContactID>
+    <LoginID>adventure-works\jack0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC30</Title>
+    <BirthDate>1973-07-23T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-25T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>68</VacationHours>
+    <SickLeaveHours>54</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>69a47230-70ee-48fd-ac15-c39f3712ff14</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>185</EmployeeID>
+    <NationalIDNumber>33237992</NationalIDNumber>
+    <ContactID>1053</ContactID>
+    <LoginID>adventure-works\andrew0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC10</Title>
+    <BirthDate>1978-10-08T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-26T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>65</VacationHours>
+    <SickLeaveHours>52</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>08365b05-c143-4260-a93c-6b69418b1946</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>186</EmployeeID>
+    <NationalIDNumber>1300049</NationalIDNumber>
+    <ContactID>1155</ContactID>
+    <LoginID>adventure-works\nicole0</LoginID>
+    <ManagerID>87</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1976-05-10T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-03-26T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>67</VacationHours>
+    <SickLeaveHours>53</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>15671e3b-016f-41fd-840b-5a9f7d776d9a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>187</EmployeeID>
+    <NationalIDNumber>10708100</NationalIDNumber>
+    <ContactID>1198</ContactID>
+    <LoginID>adventure-works\frank1</LoginID>
+    <ManagerID>14</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1961-08-24T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-27T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>10</VacationHours>
+    <SickLeaveHours>25</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>b395cd84-77ba-4d3c-a49d-d9e8d6cf100b</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>188</EmployeeID>
+    <NationalIDNumber>672243793</NationalIDNumber>
+    <ContactID>1257</ContactID>
+    <LoginID>adventure-works\peter1</LoginID>
+    <ManagerID>150</ManagerID>
+    <Title>Network Administrator</Title>
+    <BirthDate>1970-06-29T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-27T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>69</VacationHours>
+    <SickLeaveHours>54</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>86601e6a-6955-40fc-bb4a-1053a843ce99</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>189</EmployeeID>
+    <NationalIDNumber>63761469</NationalIDNumber>
+    <ContactID>1096</ContactID>
+    <LoginID>adventure-works\anibal0</LoginID>
+    <ManagerID>108</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1964-10-06T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-03-27T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>8</VacationHours>
+    <SickLeaveHours>24</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>bc18a829-f0ce-4eaf-9785-2d84c86f925a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>190</EmployeeID>
+    <NationalIDNumber>693168613</NationalIDNumber>
+    <ContactID>1139</ContactID>
+    <LoginID>adventure-works\ken1</LoginID>
+    <ManagerID>210</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1971-06-29T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-28T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>51</VacationHours>
+    <SickLeaveHours>45</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>699c00d8-c4ab-4cd2-a48f-37cbcb5bfcca</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>191</EmployeeID>
+    <NationalIDNumber>476980013</NationalIDNumber>
+    <ContactID>1241</ContactID>
+    <LoginID>adventure-works\grant0</LoginID>
+    <ManagerID>30</ManagerID>
+    <Title>Human Resources Administrative Assistant</Title>
+    <BirthDate>1966-05-18T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-29T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>53</VacationHours>
+    <SickLeaveHours>46</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>4511abba-7f34-400e-907b-a663c20e1a41</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>192</EmployeeID>
+    <NationalIDNumber>334834274</NationalIDNumber>
+    <ContactID>1182</ContactID>
+    <LoginID>adventure-works\michael4</LoginID>
+    <ManagerID>38</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1979-07-17T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-29T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>94</VacationHours>
+    <SickLeaveHours>67</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>eb27c026-9470-4450-8d5e-1f38a41793b5</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>193</EmployeeID>
+    <NationalIDNumber>399658727</NationalIDNumber>
+    <ContactID>1166</ContactID>
+    <LoginID>adventure-works\lionel0</LoginID>
+    <ManagerID>159</ManagerID>
+    <Title>Production Technician - WC45</Title>
+    <BirthDate>1978-04-15T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-30T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>78</VacationHours>
+    <SickLeaveHours>59</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>231b1798-f67b-45c1-9688-265180f93d28</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>194</EmployeeID>
+    <NationalIDNumber>500412746</NationalIDNumber>
+    <ContactID>1225</ContactID>
+    <LoginID>adventure-works\thomas0</LoginID>
+    <ManagerID>7</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1976-02-11T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-30T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>37</VacationHours>
+    <SickLeaveHours>38</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>8ff3af67-32f2-4a08-98c3-a40f842d41a3</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>195</EmployeeID>
+    <NationalIDNumber>652779496</NationalIDNumber>
+    <ContactID>1284</ContactID>
+    <LoginID>adventure-works\jimmy0</LoginID>
+    <ManagerID>85</ManagerID>
+    <Title>Stocker</Title>
+    <BirthDate>1975-06-05T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-30T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>96</VacationHours>
+    <SickLeaveHours>68</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>96442787-9520-4955-a457-38afddb6ff13</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>196</EmployeeID>
+    <NationalIDNumber>878395493</NationalIDNumber>
+    <ContactID>1123</ContactID>
+    <LoginID>adventure-works\michael5</LoginID>
+    <ManagerID>135</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1972-10-19T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-03-30T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>35</VacationHours>
+    <SickLeaveHours>37</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>2b0876d4-8996-4e71-a613-be2e98e7accf</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>197</EmployeeID>
+    <NationalIDNumber>332349500</NationalIDNumber>
+    <ContactID>1064</ContactID>
+    <LoginID>adventure-works\lori0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC45</Title>
+    <BirthDate>1970-08-19T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-03-30T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>76</VacationHours>
+    <SickLeaveHours>58</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>23d436fc-08f7-4988-8b4d-490aa4e8b7e7</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>198</EmployeeID>
+    <NationalIDNumber>792847334</NationalIDNumber>
+    <ContactID>1048</ContactID>
+    <LoginID>adventure-works\arvind0</LoginID>
+    <ManagerID>274</ManagerID>
+    <Title>Buyer</Title>
+    <BirthDate>1964-09-21T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-04-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>60</VacationHours>
+    <SickLeaveHours>50</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>51de26f0-6ed9-4a70-b689-88eb882674b6</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>199</EmployeeID>
+    <NationalIDNumber>621932914</NationalIDNumber>
+    <ContactID>1107</ContactID>
+    <LoginID>adventure-works\stefen0</LoginID>
+    <ManagerID>182</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1966-01-21T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-04-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>19</VacationHours>
+    <SickLeaveHours>29</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>b9eebf9f-f694-4bc2-98ec-9b4fb0379edf</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>200</EmployeeID>
+    <NationalIDNumber>398223854</NationalIDNumber>
+    <ContactID>1268</ContactID>
+    <LoginID>adventure-works\hazem0</LoginID>
+    <ManagerID>148</ManagerID>
+    <Title>Quality Assurance Manager</Title>
+    <BirthDate>1967-11-27T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-04-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>80</VacationHours>
+    <SickLeaveHours>60</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>05c84608-f445-4f9d-bb5c-0828c309c29d</rowguid>
+    <ModifiedDate>2005-01-26T09:17:08.637+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>201</EmployeeID>
+    <NationalIDNumber>519756660</NationalIDNumber>
+    <ContactID>1252</ContactID>
+    <LoginID>adventure-works\janet0</LoginID>
+    <ManagerID>139</ManagerID>
+    <Title>Accounts Payable Specialist</Title>
+    <BirthDate>1969-04-09T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-04-02T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>64</VacationHours>
+    <SickLeaveHours>52</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>0c641d77-8675-493f-9947-8c65136559cd</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>202</EmployeeID>
+    <NationalIDNumber>912141525</NationalIDNumber>
+    <ContactID>1193</ContactID>
+    <LoginID>adventure-works\elizabeth0</LoginID>
+    <ManagerID>74</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1980-02-26T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-04-03T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>5</VacationHours>
+    <SickLeaveHours>22</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>62a9f73f-6443-4f2f-b864-18186614bfb6</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>203</EmployeeID>
+    <NationalIDNumber>243322160</NationalIDNumber>
+    <ContactID>1032</ContactID>
+    <LoginID>adventure-works\terry0</LoginID>
+    <ManagerID>6</ManagerID>
+    <Title>Marketing Specialist</Title>
+    <BirthDate>1976-03-07T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-04-03T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>44</VacationHours>
+    <SickLeaveHours>42</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>ad0d7626-4506-45c4-898f-9d7a0e13aabd</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>204</EmployeeID>
+    <NationalIDNumber>568626529</NationalIDNumber>
+    <ContactID>1115</ContactID>
+    <LoginID>adventure-works\john3</LoginID>
+    <ManagerID>184</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1972-04-24T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-04-04T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>27</VacationHours>
+    <SickLeaveHours>33</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>96c7eab1-6dea-4c59-afd8-923f0e8de1f6</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>205</EmployeeID>
+    <NationalIDNumber>301435199</NationalIDNumber>
+    <ContactID>1134</ContactID>
+    <LoginID>adventure-works\merav0</LoginID>
+    <ManagerID>173</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1973-06-13T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-04-04T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>46</VacationHours>
+    <SickLeaveHours>43</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>2ee7914a-62d3-473b-a0e1-e4e55341ec4e</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>206</EmployeeID>
+    <NationalIDNumber>368691270</NationalIDNumber>
+    <ContactID>1236</ContactID>
+    <LoginID>adventure-works\brian1</LoginID>
+    <ManagerID>44</ManagerID>
+    <Title>Scheduling Assistant</Title>
+    <BirthDate>1974-09-12T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-04-04T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>48</VacationHours>
+    <SickLeaveHours>44</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>dfa02733-c26e-4e31-99d8-9167e4e5131d</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>207</EmployeeID>
+    <NationalIDNumber>211789056</NationalIDNumber>
+    <ContactID>1177</ContactID>
+    <LoginID>adventure-works\kitti0</LoginID>
+    <ManagerID>38</ManagerID>
+    <Title>Production Technician - WC50</Title>
+    <BirthDate>1977-07-07T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-04-05T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>89</VacationHours>
+    <SickLeaveHours>64</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>49a05524-fa34-45b1-95bc-489901dc5b50</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>208</EmployeeID>
+    <NationalIDNumber>63179277</NationalIDNumber>
+    <ContactID>1220</ContactID>
+    <LoginID>adventure-works\jay0</LoginID>
+    <ManagerID>18</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1966-03-14T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-04-06T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>32</VacationHours>
+    <SickLeaveHours>36</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>18187809-5294-474f-85a1-d5be6bd518d6</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>209</EmployeeID>
+    <NationalIDNumber>587567941</NationalIDNumber>
+    <ContactID>1118</ContactID>
+    <LoginID>adventure-works\jan0</LoginID>
+    <ManagerID>184</ManagerID>
+    <Title>Production Technician - WC30</Title>
+    <BirthDate>1964-12-16T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-04-06T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>30</VacationHours>
+    <SickLeaveHours>35</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>975f827d-be71-4eb1-8dbf-e6c451d1fad5</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>210</EmployeeID>
+    <NationalIDNumber>634335025</NationalIDNumber>
+    <ContactID>1059</ContactID>
+    <LoginID>adventure-works\brenda0</LoginID>
+    <ManagerID>21</ManagerID>
+    <Title>Production Supervisor - WC40</Title>
+    <BirthDate>1973-03-31T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-04-06T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>71</VacationHours>
+    <SickLeaveHours>55</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>714d519b-375e-4c5a-8491-c758d00cf95f</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>211</EmployeeID>
+    <NationalIDNumber>65848458</NationalIDNumber>
+    <ContactID>1161</ContactID>
+    <LoginID>adventure-works\andrew1</LoginID>
+    <ManagerID>123</ManagerID>
+    <Title>Production Technician - WC45</Title>
+    <BirthDate>1978-10-26T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-04-07T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>73</VacationHours>
+    <SickLeaveHours>56</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>a2a2cf20-4e5c-45f7-a7bd-1b94f0c3a43a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>212</EmployeeID>
+    <NationalIDNumber>260805477</NationalIDNumber>
+    <ContactID>1263</ContactID>
+    <LoginID>adventure-works\chris1</LoginID>
+    <ManagerID>90</ManagerID>
+    <Title>Control Specialist</Title>
+    <BirthDate>1977-06-26T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-04-07T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>75</VacationHours>
+    <SickLeaveHours>57</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>45c358fb-9c7f-4d36-8ec7-3d89e9fd07f4</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>213</EmployeeID>
+    <NationalIDNumber>442121106</NationalIDNumber>
+    <ContactID>1204</ContactID>
+    <LoginID>adventure-works\chris2</LoginID>
+    <ManagerID>16</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1976-09-07T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-04-08T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>16</VacationHours>
+    <SickLeaveHours>28</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>77b384c7-affb-4816-992b-f5b3034ee4ff</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>214</EmployeeID>
+    <NationalIDNumber>300946911</NationalIDNumber>
+    <ContactID>1102</ContactID>
+    <LoginID>adventure-works\shelley0</LoginID>
+    <ManagerID>143</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1977-01-08T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>1999-04-08T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>14</VacationHours>
+    <SickLeaveHours>27</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>13942056-2930-4490-83ce-af2386d5a5e7</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>215</EmployeeID>
+    <NationalIDNumber>440379437</NationalIDNumber>
+    <ContactID>1145</ContactID>
+    <LoginID>adventure-works\gabe0</LoginID>
+    <ManagerID>210</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1978-06-11T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-04-09T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>57</VacationHours>
+    <SickLeaveHours>48</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>790c9a7c-264c-4d48-a9d3-e2571a8011d8</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>216</EmployeeID>
+    <NationalIDNumber>480951955</NationalIDNumber>
+    <ContactID>1247</ContactID>
+    <LoginID>adventure-works\mike0</LoginID>
+    <ManagerID>139</ManagerID>
+    <Title>Accountant</Title>
+    <BirthDate>1969-08-01T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-04-09T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>59</VacationHours>
+    <SickLeaveHours>49</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>ac35337d-7c75-4dee-bb11-6564f257fe18</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>217</EmployeeID>
+    <NationalIDNumber>879342154</NationalIDNumber>
+    <ContactID>1289</ContactID>
+    <LoginID>adventure-works\michael6</LoginID>
+    <ManagerID>158</ManagerID>
+    <Title>Research and Development Manager</Title>
+    <BirthDate>1975-01-01T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>1999-06-04T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>16</VacationHours>
+    <SickLeaveHours>64</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>eaa43680-5571-40cb-ab1a-3bf68f04459e</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>218</EmployeeID>
+    <NationalIDNumber>141165819</NationalIDNumber>
+    <ContactID>1274</ContactID>
+    <LoginID>adventure-works\gary1</LoginID>
+    <ManagerID>148</ManagerID>
+    <Title>Facilities Manager</Title>
+    <BirthDate>1961-03-21T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-01-03T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>86</VacationHours>
+    <SickLeaveHours>63</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>62f6ec59-5635-44f3-9cc1-2d8eeaf90a05</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>219</EmployeeID>
+    <NationalIDNumber>537092325</NationalIDNumber>
+    <ContactID>1215</ContactID>
+    <LoginID>adventure-works\charles0</LoginID>
+    <ManagerID>18</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1961-10-03T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-01-04T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>27</VacationHours>
+    <SickLeaveHours>33</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>cdc11292-df74-4fb0-8676-5b2aa4687142</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>220</EmployeeID>
+    <NationalIDNumber>455563743</NationalIDNumber>
+    <ContactID>1081</ContactID>
+    <LoginID>adventure-works\ebru0</LoginID>
+    <ManagerID>25</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1976-10-23T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-01-07T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>93</VacationHours>
+    <SickLeaveHours>66</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>6c25a32b-88b5-4f84-a129-f7f688dfa588</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>221</EmployeeID>
+    <NationalIDNumber>701156975</NationalIDNumber>
+    <ContactID>1092</ContactID>
+    <LoginID>adventure-works\sylvester0</LoginID>
+    <ManagerID>108</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1960-12-13T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-01-12T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>4</VacationHours>
+    <SickLeaveHours>22</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>d9c43d08-3882-4e5c-bdf0-f6bd7004cd04</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>222</EmployeeID>
+    <NationalIDNumber>1662732</NationalIDNumber>
+    <ContactID>1151</ContactID>
+    <LoginID>adventure-works\brian2</LoginID>
+    <ManagerID>51</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1961-01-23T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-01-12T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>63</VacationHours>
+    <SickLeaveHours>51</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>c294f676-caaf-4924-9730-bc81ae408be1</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>223</EmployeeID>
+    <NationalIDNumber>407505660</NationalIDNumber>
+    <ContactID>1044</ContactID>
+    <LoginID>adventure-works\linda2</LoginID>
+    <ManagerID>274</ManagerID>
+    <Title>Buyer</Title>
+    <BirthDate>1960-12-31T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2000-01-18T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>56</VacationHours>
+    <SickLeaveHours>48</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>ed06f9f4-2123-4c44-89d7-e43e1e1abc2f</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>224</EmployeeID>
+    <NationalIDNumber>294148271</NationalIDNumber>
+    <ContactID>1087</ContactID>
+    <LoginID>adventure-works\betsy0</LoginID>
+    <ManagerID>64</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1957-01-17T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2000-01-19T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>99</VacationHours>
+    <SickLeaveHours>69</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>ebcdba1c-6c1d-4d36-90f7-1893755c85e3</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>225</EmployeeID>
+    <NationalIDNumber>552560652</NationalIDNumber>
+    <ContactID>1275</ContactID>
+    <LoginID>adventure-works\magnus0</LoginID>
+    <ManagerID>218</ManagerID>
+    <Title>Facilities Administrative Assistant</Title>
+    <BirthDate>1961-09-27T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-01-22T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>87</VacationHours>
+    <SickLeaveHours>63</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>0a4bcc09-ace5-4481-9067-8b9ed70eca18</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>226</EmployeeID>
+    <NationalIDNumber>834186596</NationalIDNumber>
+    <ContactID>1216</ContactID>
+    <LoginID>adventure-works\karan0</LoginID>
+    <ManagerID>18</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1960-04-07T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-01-23T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>28</VacationHours>
+    <SickLeaveHours>34</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>08b1ba74-dd80-4fda-8327-93268b84977b</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>227</EmployeeID>
+    <NationalIDNumber>717889520</NationalIDNumber>
+    <ContactID>1082</ContactID>
+    <LoginID>adventure-works\mary1</LoginID>
+    <ManagerID>25</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1976-10-20T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2000-01-26T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>94</VacationHours>
+    <SickLeaveHours>67</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>6dc9f7d0-5664-4e4a-90f5-7ab85ebb02e6</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>228</EmployeeID>
+    <NationalIDNumber>801365500</NationalIDNumber>
+    <ContactID>1078</ContactID>
+    <LoginID>adventure-works\kevin2</LoginID>
+    <ManagerID>25</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1976-10-20T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-01-26T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>90</VacationHours>
+    <SickLeaveHours>65</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>8b21e53d-e705-479a-b32e-6e63ac2f4bcd</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>229</EmployeeID>
+    <NationalIDNumber>413787783</NationalIDNumber>
+    <ContactID>1152</ContactID>
+    <LoginID>adventure-works\mihail0</LoginID>
+    <ManagerID>51</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1961-04-09T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-01-30T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>64</VacationHours>
+    <SickLeaveHours>52</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>03a9ba14-0d5b-4671-b851-2c1721efbf01</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>230</EmployeeID>
+    <NationalIDNumber>109272464</NationalIDNumber>
+    <ContactID>1077</ContactID>
+    <LoginID>adventure-works\bonnie0</LoginID>
+    <ManagerID>185</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1976-10-11T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2000-02-02T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>89</VacationHours>
+    <SickLeaveHours>64</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>e950a52a-df61-4fec-9063-545664d65b89</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>231</EmployeeID>
+    <NationalIDNumber>482810518</NationalIDNumber>
+    <ContactID>1045</ContactID>
+    <LoginID>adventure-works\fukiko0</LoginID>
+    <ManagerID>274</ManagerID>
+    <Title>Buyer</Title>
+    <BirthDate>1960-12-25T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-02-05T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>57</VacationHours>
+    <SickLeaveHours>48</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>36cd6636-c657-4fc7-9bfa-cc1bfa9102a2</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>232</EmployeeID>
+    <NationalIDNumber>113393530</NationalIDNumber>
+    <ContactID>1088</ContactID>
+    <LoginID>adventure-works\hung-fu0</LoginID>
+    <ManagerID>108</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1961-11-23T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-02-07T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>0</VacationHours>
+    <SickLeaveHours>20</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>065d8d5f-9504-4ffe-98dc-e69677f19f15</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>233</EmployeeID>
+    <NationalIDNumber>466142721</NationalIDNumber>
+    <ContactID>1040</ContactID>
+    <LoginID>adventure-works\gordon0</LoginID>
+    <ManagerID>274</ManagerID>
+    <Title>Buyer</Title>
+    <BirthDate>1956-12-30T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-02-12T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>52</VacationHours>
+    <SickLeaveHours>46</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>2cb2d5c3-c437-49b1-9ffd-faa096f6126f</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>234</EmployeeID>
+    <NationalIDNumber>390124815</NationalIDNumber>
+    <ContactID>1083</ContactID>
+    <LoginID>adventure-works\kimberly0</LoginID>
+    <ManagerID>64</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1976-10-14T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2000-02-13T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>95</VacationHours>
+    <SickLeaveHours>67</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>ce256b6c-1eee-43ed-9969-7cac480ff4d7</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>235</EmployeeID>
+    <NationalIDNumber>6298838</NationalIDNumber>
+    <ContactID>1212</ContactID>
+    <LoginID>adventure-works\kim1</LoginID>
+    <ManagerID>16</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1957-01-14T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2000-02-17T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>24</VacationHours>
+    <SickLeaveHours>32</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>891c27f4-28cc-44bb-bea3-da5ea7fbe957</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>236</EmployeeID>
+    <NationalIDNumber>943170460</NationalIDNumber>
+    <ContactID>1153</ContactID>
+    <LoginID>adventure-works\sandeep0</LoginID>
+    <ManagerID>51</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1961-01-03T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-02-18T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>65</VacationHours>
+    <SickLeaveHours>52</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>606c21e2-3ec0-48a6-a9fe-6bc8123ac786</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>237</EmployeeID>
+    <NationalIDNumber>339233463</NationalIDNumber>
+    <ContactID>1093</ContactID>
+    <LoginID>adventure-works\prasanna0</LoginID>
+    <ManagerID>108</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1943-06-01T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-02-23T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>5</VacationHours>
+    <SickLeaveHours>22</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>72ed240a-0fd8-4423-8a49-9078ba6bcf6c</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>238</EmployeeID>
+    <NationalIDNumber>367453993</NationalIDNumber>
+    <ContactID>1046</ContactID>
+    <LoginID>adventure-works\frank2</LoginID>
+    <ManagerID>274</ManagerID>
+    <Title>Buyer</Title>
+    <BirthDate>1942-06-13T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-02-24T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>58</VacationHours>
+    <SickLeaveHours>49</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>0423d8d0-1b14-4718-8c17-85e2f98d222f</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>239</EmployeeID>
+    <NationalIDNumber>872923042</NationalIDNumber>
+    <ContactID>1089</ContactID>
+    <LoginID>adventure-works\min0</LoginID>
+    <ManagerID>108</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1964-10-11T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-02-25T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>1</VacationHours>
+    <SickLeaveHours>20</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>cc75c35d-1566-43fa-b2e9-d1e508efdcd1</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>240</EmployeeID>
+    <NationalIDNumber>697712387</NationalIDNumber>
+    <ContactID>1148</ContactID>
+    <LoginID>adventure-works\eric1</LoginID>
+    <ManagerID>51</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1957-01-08T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-02-25T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>60</VacationHours>
+    <SickLeaveHours>50</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>55f62e38-9457-46c8-a824-e46a3117a935</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>241</EmployeeID>
+    <NationalIDNumber>381073001</NationalIDNumber>
+    <ContactID>1042</ContactID>
+    <LoginID>adventure-works\eric2</LoginID>
+    <ManagerID>274</ManagerID>
+    <Title>Buyer</Title>
+    <BirthDate>1962-10-19T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-02-28T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>54</VacationHours>
+    <SickLeaveHours>47</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>a28ab377-06f5-417a-a5e2-59f459088699</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>242</EmployeeID>
+    <NationalIDNumber>646304055</NationalIDNumber>
+    <ContactID>1277</ContactID>
+    <LoginID>adventure-works\pat0</LoginID>
+    <ManagerID>49</ManagerID>
+    <Title>Janitor</Title>
+    <BirthDate>1961-01-03T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-02-28T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>89</VacationHours>
+    <SickLeaveHours>64</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>49238447-30ee-4009-993f-0b6c756ab436</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>243</EmployeeID>
+    <NationalIDNumber>414476027</NationalIDNumber>
+    <ContactID>1218</ContactID>
+    <LoginID>adventure-works\maciej0</LoginID>
+    <ManagerID>18</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1945-03-02T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-03-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>30</VacationHours>
+    <SickLeaveHours>35</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>3229d93f-6a14-4bac-abc5-a91b9ecfb4d3</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>244</EmployeeID>
+    <NationalIDNumber>785853949</NationalIDNumber>
+    <ContactID>1041</ContactID>
+    <LoginID>adventure-works\erin0</LoginID>
+    <ManagerID>274</ManagerID>
+    <Title>Buyer</Title>
+    <BirthDate>1961-02-04T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2000-03-03T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>53</VacationHours>
+    <SickLeaveHours>46</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>b60712a9-50a5-4296-b892-69c4701834b0</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>245</EmployeeID>
+    <NationalIDNumber>90888098</NationalIDNumber>
+    <ContactID>1084</ContactID>
+    <LoginID>adventure-works\patrick0</LoginID>
+    <ManagerID>64</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1976-10-11T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-03-04T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>96</VacationHours>
+    <SickLeaveHours>68</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>d5fbe9e6-b8c5-484c-b4b8-48059e0ef267</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>246</EmployeeID>
+    <NationalIDNumber>947029962</NationalIDNumber>
+    <ContactID>1154</ContactID>
+    <LoginID>adventure-works\frank3</LoginID>
+    <ManagerID>51</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1942-04-03T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-03-08T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>66</VacationHours>
+    <SickLeaveHours>53</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>9af24acc-ea3e-4efe-b5e3-4762c496d57c</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>247</EmployeeID>
+    <NationalIDNumber>461786517</NationalIDNumber>
+    <ContactID>1213</ContactID>
+    <LoginID>adventure-works\ed0</LoginID>
+    <ManagerID>16</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1961-10-12T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-03-08T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>25</VacationHours>
+    <SickLeaveHours>32</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>8ef22fb3-af37-4b44-8862-d60a7cb09d82</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>248</EmployeeID>
+    <NationalIDNumber>393421437</NationalIDNumber>
+    <ContactID>1079</ContactID>
+    <LoginID>adventure-works\christopher0</LoginID>
+    <ManagerID>25</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1976-11-01T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-03-11T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>91</VacationHours>
+    <SickLeaveHours>65</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>f71c6055-557b-4660-86ff-8c0fa14b24e6</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>249</EmployeeID>
+    <NationalIDNumber>988315686</NationalIDNumber>
+    <ContactID>1149</ContactID>
+    <LoginID>adventure-works\patrick1</LoginID>
+    <ManagerID>51</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1964-01-24T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-03-15T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>61</VacationHours>
+    <SickLeaveHours>50</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>296c52ae-169f-4292-975d-c508476dcecf</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>250</EmployeeID>
+    <NationalIDNumber>56772045</NationalIDNumber>
+    <ContactID>1090</ContactID>
+    <LoginID>adventure-works\krishna0</LoginID>
+    <ManagerID>108</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1961-10-06T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-03-16T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>2</VacationHours>
+    <SickLeaveHours>21</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>42a506a5-0ac0-4148-b702-bb7b804ef98c</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>251</EmployeeID>
+    <NationalIDNumber>879334904</NationalIDNumber>
+    <ContactID>1278</ContactID>
+    <LoginID>adventure-works\lori1</LoginID>
+    <ManagerID>49</ManagerID>
+    <Title>Janitor</Title>
+    <BirthDate>1960-08-31T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2000-03-19T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>90</VacationHours>
+    <SickLeaveHours>65</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>929fe187-ee24-4f5f-af2a-f96324f09423</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>252</EmployeeID>
+    <NationalIDNumber>82638150</NationalIDNumber>
+    <ContactID>1085</ContactID>
+    <LoginID>adventure-works\danielle0</LoginID>
+    <ManagerID>64</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1976-10-08T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2000-03-23T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>97</VacationHours>
+    <SickLeaveHours>68</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>bb886159-1400-4264-b7c9-a3769beb1274</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>253</EmployeeID>
+    <NationalIDNumber>343861179</NationalIDNumber>
+    <ContactID>1273</ContactID>
+    <LoginID>adventure-works\sootha0</LoginID>
+    <ManagerID>41</ManagerID>
+    <Title>Quality Assurance Technician</Title>
+    <BirthDate>1957-01-05T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-03-26T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>85</VacationHours>
+    <SickLeaveHours>62</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>a3dadf19-27f0-460a-9888-ce6caa9e3583</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>254</EmployeeID>
+    <NationalIDNumber>582347317</NationalIDNumber>
+    <ContactID>1214</ContactID>
+    <LoginID>adventure-works\michael7</LoginID>
+    <ManagerID>18</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1963-10-07T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-03-26T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>26</VacationHours>
+    <SickLeaveHours>33</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>492b24bd-bde9-4371-b96e-ccd72264b91f</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>255</EmployeeID>
+    <NationalIDNumber>8066363</NationalIDNumber>
+    <ContactID>1217</ContactID>
+    <LoginID>adventure-works\randy0</LoginID>
+    <ManagerID>18</ManagerID>
+    <Title>Production Technician - WC60</Title>
+    <BirthDate>1960-05-29T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-03-26T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>29</VacationHours>
+    <SickLeaveHours>34</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>9a08108d-e039-4862-8f93-55f18017ad72</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>256</EmployeeID>
+    <NationalIDNumber>561196580</NationalIDNumber>
+    <ContactID>1080</ContactID>
+    <LoginID>adventure-works\john4</LoginID>
+    <ManagerID>25</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1976-10-29T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-03-30T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>92</VacationHours>
+    <SickLeaveHours>66</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>d4cf23d9-21b6-45e4-827c-22890df0373b</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>257</EmployeeID>
+    <NationalIDNumber>58791499</NationalIDNumber>
+    <ContactID>1150</ContactID>
+    <LoginID>adventure-works\jack1</LoginID>
+    <ManagerID>51</ManagerID>
+    <Title>Production Technician - WC40</Title>
+    <BirthDate>1963-09-30T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-04-03T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>62</VacationHours>
+    <SickLeaveHours>51</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>d308d387-f7f3-4b5f-abda-faf5574245cd</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>258</EmployeeID>
+    <NationalIDNumber>163347032</NationalIDNumber>
+    <ContactID>1091</ContactID>
+    <LoginID>adventure-works\olinda0</LoginID>
+    <ManagerID>108</ManagerID>
+    <Title>Production Technician - WC20</Title>
+    <BirthDate>1960-05-05T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2000-04-04T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>3</VacationHours>
+    <SickLeaveHours>21</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>6456cec3-9b1e-4ebc-9fd8-732b93363f65</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>259</EmployeeID>
+    <NationalIDNumber>28414965</NationalIDNumber>
+    <ContactID>1276</ContactID>
+    <LoginID>adventure-works\stuart1</LoginID>
+    <ManagerID>49</ManagerID>
+    <Title>Janitor</Title>
+    <BirthDate>1962-01-17T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-04-05T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>88</VacationHours>
+    <SickLeaveHours>64</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>cc2791e6-7629-49c5-922a-81445afdf033</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>260</EmployeeID>
+    <NationalIDNumber>153479919</NationalIDNumber>
+    <ContactID>1279</ContactID>
+    <LoginID>adventure-works\jo1</LoginID>
+    <ManagerID>49</ManagerID>
+    <Title>Janitor</Title>
+    <BirthDate>1944-05-25T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2000-04-07T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>91</VacationHours>
+    <SickLeaveHours>65</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>39af5cca-9b52-41e5-b510-72901d2578f6</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>261</EmployeeID>
+    <NationalIDNumber>20269531</NationalIDNumber>
+    <ContactID>1043</ContactID>
+    <LoginID>adventure-works\ben0</LoginID>
+    <ManagerID>274</ManagerID>
+    <Title>Buyer</Title>
+    <BirthDate>1963-07-05T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-04-09T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>55</VacationHours>
+    <SickLeaveHours>47</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>b9641cae-765c-4662-b760-c167a1f2b8b5</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>262</EmployeeID>
+    <NationalIDNumber>826454897</NationalIDNumber>
+    <ContactID>1086</ContactID>
+    <LoginID>adventure-works\tom0</LoginID>
+    <ManagerID>64</ManagerID>
+    <Title>Production Technician - WC10</Title>
+    <BirthDate>1976-11-01T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2000-04-10T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>98</VacationHours>
+    <SickLeaveHours>69</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>b3bf7fc5-2014-48ce-b7bb-76124fa8446c</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>263</EmployeeID>
+    <NationalIDNumber>974026903</NationalIDNumber>
+    <ContactID>1007</ContactID>
+    <LoginID>adventure-works\ovidiu0</LoginID>
+    <ManagerID>3</ManagerID>
+    <Title>Senior Tool Designer</Title>
+    <BirthDate>1968-02-18T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2001-01-05T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>7</VacationHours>
+    <SickLeaveHours>23</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>f68c7c19-fac1-438c-9bb7-ac33fcc341c3</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>264</EmployeeID>
+    <NationalIDNumber>437296311</NationalIDNumber>
+    <ContactID>1038</ContactID>
+    <LoginID>adventure-works\annette0</LoginID>
+    <ManagerID>274</ManagerID>
+    <Title>Purchasing Assistant</Title>
+    <BirthDate>1968-03-01T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2001-01-06T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>50</VacationHours>
+    <SickLeaveHours>45</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>9e03395f-4d5d-4a53-880e-174bd8c1db59</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>265</EmployeeID>
+    <NationalIDNumber>486228782</NationalIDNumber>
+    <ContactID>1008</ContactID>
+    <LoginID>adventure-works\janice0</LoginID>
+    <ManagerID>263</ManagerID>
+    <Title>Tool Designer</Title>
+    <BirthDate>1979-06-29T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2001-01-23T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>8</VacationHours>
+    <SickLeaveHours>24</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>954b91b6-5aa7-48c2-8685-6e11c6e5c49a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>266</EmployeeID>
+    <NationalIDNumber>280633567</NationalIDNumber>
+    <ContactID>1039</ContactID>
+    <LoginID>adventure-works\reinout0</LoginID>
+    <ManagerID>274</ManagerID>
+    <Title>Purchasing Assistant</Title>
+    <BirthDate>1968-02-18T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2001-01-25T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>51</VacationHours>
+    <SickLeaveHours>45</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>9825eb00-8e36-4506-93a2-6ddcdc0b13c3</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>267</EmployeeID>
+    <NationalIDNumber>42487730</NationalIDNumber>
+    <ContactID>1003</ContactID>
+    <LoginID>adventure-works\michael8</LoginID>
+    <ManagerID>3</ManagerID>
+    <Title>Senior Design Engineer</Title>
+    <BirthDate>1969-07-17T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2001-01-30T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>3</VacationHours>
+    <SickLeaveHours>21</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>46286ca4-46dd-4ddb-9128-85b67e98d1a9</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>268</EmployeeID>
+    <NationalIDNumber>502097814</NationalIDNumber>
+    <ContactID>1011</ContactID>
+    <LoginID>adventure-works\stephen0</LoginID>
+    <ManagerID>273</ManagerID>
+    <Title>North American Sales Manager</Title>
+    <BirthDate>1941-11-17T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2001-02-04T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>14</VacationHours>
+    <SickLeaveHours>27</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>86d5fa9e-4bc0-48c8-91dc-1ec467418d11</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>269</EmployeeID>
+    <NationalIDNumber>323403273</NationalIDNumber>
+    <ContactID>1029</ContactID>
+    <LoginID>adventure-works\wanida0</LoginID>
+    <ManagerID>6</ManagerID>
+    <Title>Marketing Assistant</Title>
+    <BirthDate>1965-04-17T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2001-02-07T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>41</VacationHours>
+    <SickLeaveHours>40</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>43cca446-da1c-454c-8530-873ad2923e1b</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>270</EmployeeID>
+    <NationalIDNumber>56920285</NationalIDNumber>
+    <ContactID>1004</ContactID>
+    <LoginID>adventure-works\sharon0</LoginID>
+    <ManagerID>3</ManagerID>
+    <Title>Design Engineer</Title>
+    <BirthDate>1951-06-03T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2001-02-18T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>4</VacationHours>
+    <SickLeaveHours>22</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>54f2fdc0-87c4-4065-a7a8-9ac8ea624235</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>271</EmployeeID>
+    <NationalIDNumber>222969461</NationalIDNumber>
+    <ContactID>1036</ContactID>
+    <LoginID>adventure-works\john5</LoginID>
+    <ManagerID>6</ManagerID>
+    <Title>Marketing Specialist</Title>
+    <BirthDate>1968-04-06T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2001-03-10T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>48</VacationHours>
+    <SickLeaveHours>44</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>64730415-1f58-4e5b-8fa8-5e4daeba53b4</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>272</EmployeeID>
+    <NationalIDNumber>52541318</NationalIDNumber>
+    <ContactID>1031</ContactID>
+    <LoginID>adventure-works\mary2</LoginID>
+    <ManagerID>6</ManagerID>
+    <Title>Marketing Assistant</Title>
+    <BirthDate>1968-03-01T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2001-03-17T00:00:00+10:00</HireDate>
+    <SalariedFlag>false</SalariedFlag>
+    <VacationHours>43</VacationHours>
+    <SickLeaveHours>41</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>1f6da901-c7f7-48a8-8eef-d81868d72b52</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>273</EmployeeID>
+    <NationalIDNumber>112432117</NationalIDNumber>
+    <ContactID>1010</ContactID>
+    <LoginID>adventure-works\brian3</LoginID>
+    <ManagerID>109</ManagerID>
+    <Title>Vice President of Sales</Title>
+    <BirthDate>1967-07-08T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2001-03-18T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>10</VacationHours>
+    <SickLeaveHours>25</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>f3ec557c-8b41-4ee6-bb0c-e3b93aff81e5</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>274</EmployeeID>
+    <NationalIDNumber>895209680</NationalIDNumber>
+    <ContactID>1037</ContactID>
+    <LoginID>adventure-works\sheela0</LoginID>
+    <ManagerID>71</ManagerID>
+    <Title>Purchasing Manager</Title>
+    <BirthDate>1968-03-13T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2001-03-28T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>49</VacationHours>
+    <SickLeaveHours>44</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>7d6b0155-0191-4599-8394-378ebde63c9a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>275</EmployeeID>
+    <NationalIDNumber>841560125</NationalIDNumber>
+    <ContactID>1026</ContactID>
+    <LoginID>adventure-works\michael9</LoginID>
+    <ManagerID>268</ManagerID>
+    <Title>Sales Representative</Title>
+    <BirthDate>1959-01-26T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2001-07-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>38</VacationHours>
+    <SickLeaveHours>39</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>e19f8de2-0f40-418c-84a2-db48b98dc6a2</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>276</EmployeeID>
+    <NationalIDNumber>191644724</NationalIDNumber>
+    <ContactID>1018</ContactID>
+    <LoginID>adventure-works\linda3</LoginID>
+    <ManagerID>268</ManagerID>
+    <Title>Sales Representative</Title>
+    <BirthDate>1970-03-30T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2001-07-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>27</VacationHours>
+    <SickLeaveHours>33</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>4509f387-d73a-43dc-a502-b1c27aa1dc9e</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>277</EmployeeID>
+    <NationalIDNumber>615389812</NationalIDNumber>
+    <ContactID>1016</ContactID>
+    <LoginID>adventure-works\jillian0</LoginID>
+    <ManagerID>268</ManagerID>
+    <Title>Sales Representative</Title>
+    <BirthDate>1952-09-29T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2001-07-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>24</VacationHours>
+    <SickLeaveHours>32</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>a011c97b-081c-4739-996f-c1cac4532f8d</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>278</EmployeeID>
+    <NationalIDNumber>234474252</NationalIDNumber>
+    <ContactID>1021</ContactID>
+    <LoginID>adventure-works\garrett1</LoginID>
+    <ManagerID>268</ManagerID>
+    <Title>Sales Representative</Title>
+    <BirthDate>1965-03-07T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2001-07-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>33</VacationHours>
+    <SickLeaveHours>36</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>50eecc16-0d0d-43a9-9649-016c06de8d78</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>279</EmployeeID>
+    <NationalIDNumber>716374314</NationalIDNumber>
+    <ContactID>1019</ContactID>
+    <LoginID>adventure-works\tsvi0</LoginID>
+    <ManagerID>268</ManagerID>
+    <Title>Sales Representative</Title>
+    <BirthDate>1964-02-19T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2001-07-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>29</VacationHours>
+    <SickLeaveHours>34</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>bb510fce-0105-4306-b591-6450d9ebf401</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>280</EmployeeID>
+    <NationalIDNumber>61161660</NationalIDNumber>
+    <ContactID>1014</ContactID>
+    <LoginID>adventure-works\pamela0</LoginID>
+    <ManagerID>268</ManagerID>
+    <Title>Sales Representative</Title>
+    <BirthDate>1965-01-06T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2001-07-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>22</VacationHours>
+    <SickLeaveHours>31</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>7627b9d6-0707-4706-9ad9-0d37506b08ae</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>281</EmployeeID>
+    <NationalIDNumber>139397894</NationalIDNumber>
+    <ContactID>1017</ContactID>
+    <LoginID>adventure-works\shu0</LoginID>
+    <ManagerID>268</ManagerID>
+    <Title>Sales Representative</Title>
+    <BirthDate>1958-04-10T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2001-07-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>26</VacationHours>
+    <SickLeaveHours>33</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>4103c891-37e8-4dfc-aeac-b55e2bc1be1c</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>282</EmployeeID>
+    <NationalIDNumber>399771412</NationalIDNumber>
+    <ContactID>1020</ContactID>
+    <LoginID>adventure-works\josé1</LoginID>
+    <ManagerID>268</ManagerID>
+    <Title>Sales Representative</Title>
+    <BirthDate>1954-01-11T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2001-07-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>31</VacationHours>
+    <SickLeaveHours>35</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>fd3992fb-3067-451d-a09d-73bd53c0feca</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>283</EmployeeID>
+    <NationalIDNumber>987554265</NationalIDNumber>
+    <ContactID>1015</ContactID>
+    <LoginID>adventure-works\david8</LoginID>
+    <ManagerID>268</ManagerID>
+    <Title>Sales Representative</Title>
+    <BirthDate>1964-03-14T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2001-07-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>23</VacationHours>
+    <SickLeaveHours>31</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>1e8f9e91-508f-4d49-acd2-775c836030ed</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>284</EmployeeID>
+    <NationalIDNumber>982310417</NationalIDNumber>
+    <ContactID>1013</ContactID>
+    <LoginID>adventure-works\amy0</LoginID>
+    <ManagerID>273</ManagerID>
+    <Title>European Sales Manager</Title>
+    <BirthDate>1947-10-22T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2002-05-18T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>21</VacationHours>
+    <SickLeaveHours>30</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>66d66445-ee78-4676-9e66-0e22d6109a92</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>285</EmployeeID>
+    <NationalIDNumber>668991357</NationalIDNumber>
+    <ContactID>1025</ContactID>
+    <LoginID>adventure-works\jae0</LoginID>
+    <ManagerID>284</ManagerID>
+    <Title>Sales Representative</Title>
+    <BirthDate>1958-04-18T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2002-07-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>37</VacationHours>
+    <SickLeaveHours>38</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>723a5921-d8a1-4659-9bc4-13c4cf7c9c91</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>286</EmployeeID>
+    <NationalIDNumber>134219713</NationalIDNumber>
+    <ContactID>1022</ContactID>
+    <LoginID>adventure-works\ranjit0</LoginID>
+    <ManagerID>284</ManagerID>
+    <Title>Sales Representative</Title>
+    <BirthDate>1965-10-31T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2002-07-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>34</VacationHours>
+    <SickLeaveHours>37</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>604213f9-dd0f-43b4-bdd2-c96e93d3f4bf</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>287</EmployeeID>
+    <NationalIDNumber>90836195</NationalIDNumber>
+    <ContactID>1027</ContactID>
+    <LoginID>adventure-works\tete0</LoginID>
+    <ManagerID>268</ManagerID>
+    <Title>Sales Representative</Title>
+    <BirthDate>1968-02-06T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2002-11-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>39</VacationHours>
+    <SickLeaveHours>39</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>0c67ce00-de78-4712-908f-06939a2c58d5</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>288</EmployeeID>
+    <NationalIDNumber>481044938</NationalIDNumber>
+    <ContactID>1012</ContactID>
+    <LoginID>adventure-works\syed0</LoginID>
+    <ManagerID>273</ManagerID>
+    <Title>Pacific Sales Manager</Title>
+    <BirthDate>1965-02-11T00:00:00+10:00</BirthDate>
+    <MaritalStatus>M</MaritalStatus>
+    <Gender>M</Gender>
+    <HireDate>2003-04-15T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>20</VacationHours>
+    <SickLeaveHours>30</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>86f292db-b73c-429d-9912-800994d809fb</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>289</EmployeeID>
+    <NationalIDNumber>954276278</NationalIDNumber>
+    <ContactID>1023</ContactID>
+    <LoginID>adventure-works\rachel0</LoginID>
+    <ManagerID>284</ManagerID>
+    <Title>Sales Representative</Title>
+    <BirthDate>1965-08-09T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2003-07-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>35</VacationHours>
+    <SickLeaveHours>37</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>b9bf7741-e0ca-4f37-acde-a4f78c6d03e9</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+  <Table>
+    <EmployeeID>290</EmployeeID>
+    <NationalIDNumber>758596752</NationalIDNumber>
+    <ContactID>1024</ContactID>
+    <LoginID>adventure-works\lynn0</LoginID>
+    <ManagerID>288</ManagerID>
+    <Title>Sales Representative</Title>
+    <BirthDate>1961-04-18T00:00:00+10:00</BirthDate>
+    <MaritalStatus>S</MaritalStatus>
+    <Gender>F</Gender>
+    <HireDate>2003-07-01T00:00:00+10:00</HireDate>
+    <SalariedFlag>true</SalariedFlag>
+    <VacationHours>36</VacationHours>
+    <SickLeaveHours>38</SickLeaveHours>
+    <CurrentFlag>true</CurrentFlag>
+    <rowguid>4a9a8407-a680-4a6b-8d03-511cb58f9a8a</rowguid>
+    <ModifiedDate>2004-07-31T00:00:00+10:00</ModifiedDate>
+  </Table>
+</NewDataSet>
\ No newline at end of file
Added +79 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/Gui/QueryFormTester.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/Gui/QueryFormTester.cs
new file mode 100644
index 0000000..ca32e56
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/Gui/QueryFormTester.cs
@@ -0,0 +1,79 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using NUnit.Extensions.Forms;
+using Rhino.Mocks;
+
+namespace MiniSqlQuery.Tests.Gui
+{
+	/// <summary>
+	/// Query Form Tester class for use with NUnitForms.
+	/// Inherit from this class in standard unit tests.
+	/// </summary>
+	public class QueryFormTester : NUnitFormTest
+	{
+		protected IApplicationServices StubAppServices;
+		protected IApplicationSettings StubAppSettings;
+		protected IHostWindow StubHostWindow;
+		protected IQueryEditor QueryEditor;
+		protected QueryForm QueryForm;
+
+		public QueryFormTester()
+		{
+		}
+
+		/// <summary>
+		/// Sets up various mock object required for the form to run (does not cover query execution).
+		/// </summary>
+		public override void Setup()
+		{
+			SetUpApplicationServicesMock();
+			SetUpApplicationSettingsMock();
+			SetUpHostWindowMock();
+			base.Setup();
+		}
+
+		/// <summary>
+		/// Sets up an empty <see cref="IApplicationServices"/> mock object.
+		/// </summary>
+		public virtual void SetUpApplicationServicesMock()
+		{
+			StubAppServices = MockRepository.GenerateStub<IApplicationServices>();
+		}
+
+		/// <summary>
+		/// Sets up an empty <see cref="IApplicationSettings"/> mock object.
+		/// </summary>
+		public virtual void SetUpApplicationSettingsMock()
+		{
+			StubAppSettings = MockRepository.GenerateStub<IApplicationSettings>();
+		}
+
+		/// <summary>
+		/// Sets up a basic <see cref="IHostWindow"/> mock assigning it to <see cref="ApplicationServices"/>.
+		/// </summary>
+		/// <remarks>
+		/// The SetStaus method just takes any parameters.
+		/// </remarks>
+		public virtual void SetUpHostWindowMock()
+		{
+			StubHostWindow = MockRepository.GenerateStub<IHostWindow>();
+			StubAppServices.Expect(services => services.HostWindow).Return(StubHostWindow).Repeat.Any();
+		}
+
+		/// <summary>
+		/// Displays an basic query editor form with the relevent dependency injection applied.
+		/// </summary>
+		public virtual void ShowBasicForm()
+		{
+			QueryForm = new QueryForm(StubAppServices, StubAppSettings);
+			QueryEditor = QueryForm; // for reference by interface 
+
+			QueryForm.Show();
+			Application.DoEvents(); // ensure fully displayed
+		}
+	}
+}
\ No newline at end of file
Added +215 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/MiniSqlQuery.Tests.csproj b/minisqlquery-master/src/MiniSqlQuery.Tests/MiniSqlQuery.Tests.csproj
new file mode 100644
index 0000000..6e4a68b
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/MiniSqlQuery.Tests.csproj
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{14805F53-5C87-4E8D-B88C-690C35C4CE8D}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>MiniSqlQuery.Tests</RootNamespace>
+    <AssemblyName>MiniSqlQuery.Tests</AssemblyName>
+    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <StartupObject>
+    </StartupObject>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <TargetFrameworkProfile />
+    <NuGetPackageImportStamp>
+    </NuGetPackageImportStamp>
+  </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>
+    <NoWarn>0612</NoWarn>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </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>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release - No Tests|AnyCPU' ">
+    <OutputPath>bin\Release - No Tests\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="DbConnectionDefinitionListTests.cs" />
+    <Compile Include="DbModel\DbModelTable_tests.cs" />
+    <Compile Include="DbModel\MSAccess_DataType_Tests.cs" />
+    <Compile Include="DbModel\DbTypeTests.cs" />
+    <Compile Include="DbModel\SqlCeSchemaService_DataType_ToDDL_Tests.cs" />
+    <Compile Include="DbModel\SqlCeSchemaService_Tests.cs" />
+    <Compile Include="DbModel\SqlCeSchemaService_DataType_Tests.cs" />
+    <Compile Include="DbModel\SqlWriterTests.cs" />
+    <Compile Include="MRU\MostRecentFilesService_Tests.cs" />
+    <Compile Include="MRU\OpenRecentFileCommand_Tests.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="QueryRunnerTests.cs" />
+    <Compile Include="Query_wrapper_tests.cs" />
+    <Compile Include="Templates\TemplateHost_tests.cs" />
+    <Compile Include="Templates\TemplateModel_tests.cs" />
+    <Compile Include="Templates\TextFormater_tests.cs" />
+    <Compile Include="TextGeneratorService_Tests.cs" />
+    <Compile Include="Utility_Tests.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\MiniSqlQuery.Core\MiniSqlQuery.Core.csproj">
+      <Project>{B819CF6A-B5FD-4E85-842D-FD855F856A5A}</Project>
+      <Name>MiniSqlQuery.Core</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\MiniSqlQuery\MiniSqlQuery.csproj">
+      <Project>{0164E1CD-8EC2-4C9E-8D67-2575221D8707}</Project>
+      <Name>MiniSqlQuery</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config">
+      <SubType>Designer</SubType>
+    </None>
+    <None Include="Templates\bar.mt">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="Templates\foo.cs.mt">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="..\TestDatabases\sqlce-test.v4.sdf">
+      <Link>sqlce-test.v4.sdf</Link>
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+    <Content Include="..\TestDatabases\Northwind.v4.sdf">
+      <Link>Northwind.v4.sdf</Link>
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.SQL.Server.Compact.3.5">
+      <Visible>False</Visible>
+      <ProductName>SQL Server Compact 3.5</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="DockPanelSuite">
+      <Version>2.9.0</Version>
+    </PackageReference>
+    <PackageReference Include="FluentAssertions">
+      <Version>5.9.0</Version>
+    </PackageReference>
+    <PackageReference Include="ICSharpCode.TextEditor">
+      <Version>3.2.1.6466</Version>
+    </PackageReference>
+    <PackageReference Include="NUnit">
+      <Version>3.12.0</Version>
+    </PackageReference>
+    <PackageReference Include="NUnit3TestAdapter">
+      <Version>3.15.1</Version>
+    </PackageReference>
+    <PackageReference Include="RhinoMocks">
+      <Version>3.6.1</Version>
+    </PackageReference>
+  </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>
+  -->
+</Project>
\ No newline at end of file
Added +80 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/MRU/MostRecentFilesService_Tests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/MRU/MostRecentFilesService_Tests.cs
new file mode 100644
index 0000000..0849ab6
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/MRU/MostRecentFilesService_Tests.cs
@@ -0,0 +1,80 @@
+#region License
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core;
+using NUnit.Framework;
+
+// ReSharper disable InconsistentNaming
+
+namespace MiniSqlQuery.Tests.MRU
+{
+    [TestFixture]
+    public class MostRecentFilesService_Tests
+    {
+        private MostRecentFilesService _service;
+
+        [Test]
+        public void List_does_not_exceed_maximum_entries()
+        {
+            // set up the max entries
+            int i = 1;
+            for (; i <= _service.MaxCommands; i++)
+            {
+                _service.Register(i.ToString());
+            }
+
+            // add 1 extra
+            i++;
+            _service.Register(i.ToString());
+
+            Assert.That(_service.Filenames.Count, Is.EqualTo(_service.MaxCommands));
+        }
+
+        [Test]
+        public void No_filenames_at_start()
+        {
+            Assert.That(_service.Filenames.Count, Is.EqualTo(0));
+        }
+
+        [Test]
+        public void Register_adds_new_files()
+        {
+            _service.Register("1");
+            _service.Register("2");
+            Assert.That(_service.Filenames.Count, Is.EqualTo(2));
+        }
+
+        [Test]
+        public void Register_adds_only_new_files()
+        {
+            _service.Register("1");
+            _service.Register("2");
+            _service.Register("2");
+            _service.Register("2");
+            Assert.That(_service.Filenames.Count, Is.EqualTo(2));
+        }
+
+        [Test]
+        public void Register_takes_off_relevent_file()
+        {
+            _service.Register("1");
+            _service.Register("2");
+            _service.Register("3");
+            Assert.That(_service.Filenames.Count, Is.EqualTo(3));
+
+            _service.Remove("2");
+            Assert.That(_service.Filenames.Count, Is.EqualTo(2));
+            Assert.That(_service.Filenames[0], Is.EqualTo("3"));
+            Assert.That(_service.Filenames[1], Is.EqualTo("1"));
+        }
+
+        [SetUp]
+        public void TestSetUp()
+        {
+            _service = new MostRecentFilesService();
+        }
+    }
+}
\ No newline at end of file
Added +54 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/MRU/OpenRecentFileCommand_Tests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/MRU/OpenRecentFileCommand_Tests.cs
new file mode 100644
index 0000000..56ead9a
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/MRU/OpenRecentFileCommand_Tests.cs
@@ -0,0 +1,54 @@
+using System.Collections.Generic;
+using MiniSqlQuery.Commands;
+using MiniSqlQuery.Core;
+using NUnit.Framework;
+using Rhino.Mocks;
+
+// ReSharper disable InconsistentNaming
+
+namespace MiniSqlQuery.Tests.MRU
+{
+    [TestFixture]
+    public class OpenRecentFileCommand_Tests
+    {
+        private IMostRecentFilesService _service;
+
+        [Test]
+        public void If_File_in_slot_1_the_command_is_enabled()
+        {
+            _service.Expect(s => s.Filenames).Return(new List<string> { "File1" });
+
+            var cmd = new OpenRecentFileCommand(_service, 1);
+
+            Assert.That(cmd.Enabled, Is.True);
+            _service.VerifyAllExpectations();
+        }
+
+        [Test]
+        public void If_no_Files_the_command_is_disabled()
+        {
+            _service.Expect(s => s.Filenames).Return(new List<string>());
+
+            var cmd = new OpenRecentFileCommand(_service, 1);
+
+            Assert.That(cmd.Enabled, Is.False);
+        }
+
+        [SetUp]
+        public void TestSetUp()
+        {
+            _service = MockRepository.GenerateMock<IMostRecentFilesService>();
+        }
+
+        [Test]
+        public void The_name_is_updated()
+        {
+            _service.Expect(s => s.Filenames).Return(new List<string> { "File1", "File2" });
+
+            var cmd = new OpenRecentFileCommand(_service, 1);
+            cmd.UpdateName();
+
+            Assert.That(cmd.Name, Is.EqualTo("&1 - File1"));
+        }
+    }
+}
\ No newline at end of file
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/Northwind.sdf b/minisqlquery-master/src/MiniSqlQuery.Tests/Northwind.sdf
new file mode 100644
index 0000000..ec68ab1
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery.Tests/Northwind.sdf differ
Added +35 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/Properties/AssemblyInfo.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..5ca8173
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("MiniSqlQuery.Tests")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Paul Kohler")]
+[assembly: AssemblyProduct("MiniSqlQuery.Tests")]
+[assembly: AssemblyCopyright("Copyright © Paul Kohler 2008-now")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("444a48c0-b28b-4d0b-bb3c-4ced33430de4")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Added +109 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/Properties/Resources.Designer.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..d05cf10
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/Properties/Resources.Designer.cs
@@ -0,0 +1,109 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace MiniSqlQuery.Tests.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.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>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </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("MiniSqlQuery.Tests.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;?xml version=&quot;1.0&quot; standalone=&quot;yes&quot;?&gt;
+        ///&lt;NewDataSet&gt;
+        ///  &lt;xs:schema id=&quot;NewDataSet&quot; xmlns=&quot;&quot; xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:msdata=&quot;urn:schemas-microsoft-com:xml-msdata&quot;&gt;
+        ///    &lt;xs:element name=&quot;NewDataSet&quot; msdata:IsDataSet=&quot;true&quot; msdata:UseCurrentLocale=&quot;true&quot;&gt;
+        ///      &lt;xs:complexType&gt;
+        ///        &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
+        ///          &lt;xs:element name=&quot;Table&quot;&gt;
+        ///            &lt;xs:complexType&gt;
+        ///              &lt;xs:sequence&gt;
+        ///                &lt;xs:element name=&quot;EmployeeID&quot; type=&quot;xs [rest of string was truncated]&quot;;.
+        /// </summary>
+        internal static string mssql_aw_select_from_employee {
+            get {
+                return ResourceManager.GetString("mssql_aw_select_from_employee", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to SELECT
+        ///	EmployeeID,
+        ///	NationalIDNumber,
+        ///	ContactID,
+        ///	LoginID,
+        ///	ManagerID,
+        ///	Title,
+        ///	BirthDate,
+        ///	MaritalStatus,
+        ///	Gender,
+        ///	HireDate,
+        ///	SalariedFlag,
+        ///	VacationHours,
+        ///	SickLeaveHours,
+        ///	CurrentFlag,
+        ///	rowguid,
+        ///	ModifiedDate
+        ///FROM HumanResources.Employee
+        ///
+        ///.
+        /// </summary>
+        internal static string mssql_aw_select_from_employee1 {
+            get {
+                return ResourceManager.GetString("mssql_aw_select_from_employee1", resourceCulture);
+            }
+        }
+    }
+}
Added +127 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/Properties/Resources.resx b/minisqlquery-master/src/MiniSqlQuery.Tests/Properties/Resources.resx
new file mode 100644
index 0000000..22a332f
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/Properties/Resources.resx
@@ -0,0 +1,127 @@
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="mssql_aw_select_from_employee" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\gui\mssql-aw-select-from-employee.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
+  </data>
+  <data name="mssql_aw_select_from_employee1" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\gui\mssql-aw-select-from-employee.sql;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
+  </data>
+</root>
\ No newline at end of file
Added +82 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/Query_wrapper_tests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/Query_wrapper_tests.cs
new file mode 100644
index 0000000..3a96a4a
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/Query_wrapper_tests.cs
@@ -0,0 +1,82 @@
+#region License
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+using MiniSqlQuery.Core;
+using NUnit.Framework;
+
+
+namespace MiniSqlQuery.Tests
+{
+    [TestFixture]
+    public class Query_wrapper_tests
+    {
+        [Test]
+        public void A_query_with_GOs_produces_multiple_Query_objects()
+        {
+            var batch = QueryBatch.Parse(@"-- test query...
+
+select 1
+
+
+GO 
+select foo
+from bar
+
+	go
+
+	insert into table 1 (name, desc)
+	values('a name like gogo', 'i want to GO now.')
+
+	GO
+
+select 3
+GO
+GO
+GO
+GO
+");
+            Assert.That(batch.Queries.Count, Is.EqualTo(4), "Empty queries should be ignored");
+            Assert.That(batch.Queries[0].Sql, Is.EqualTo(@"-- test query...
+
+select 1"));
+            Assert.That(batch.Queries[1].Sql, Is.EqualTo("select foo\r\nfrom bar"));
+            Assert.That(batch.Queries[2].Sql, Is.EqualTo(@"insert into table 1 (name, desc)
+	values('a name like gogo', 'i want to GO now.')"));
+            Assert.That(batch.Queries[3].Sql, Is.EqualTo("select 3"));
+        }
+
+        [Test]
+        public void No_single_query_produces_empty_batch()
+        {
+            var batch = QueryBatch.Parse("");
+            Assert.That(batch.Queries.Count, Is.EqualTo(0));
+        }
+
+        [Test]
+        [Ignore("Needs a fair bit of work to pass...")]
+        public void Batch_indicators_on_a_line_alone_cause_issues()
+        {
+            var batch = QueryBatch.Parse(@"-- issue...
+insert into table 1 (name, desc)
+values('foo', 'if the
+go
+is on a line by itself we have a problem...')");
+            Assert.That(batch.Queries.Count, Is.EqualTo(1), "This fails for now...");
+
+            // Basically there is no easy workaround short of writing an actual SQL 
+            // query parser... allow 'turn off batches' will do...
+
+            // A good comprimise would token parse taking string (and escaping) into account
+            // but even that would add up...
+        }
+
+        [Test]
+        public void A_single_query_produces_1_batch_with_1_Query()
+        {
+            var batch = QueryBatch.Parse("select 1");
+            Assert.That(batch.Queries.Count, Is.EqualTo(1));
+        }
+    }
+}
\ No newline at end of file
Added +14 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/QueryGeneration/Select_query_tests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/QueryGeneration/Select_query_tests.cs
new file mode 100644
index 0000000..ce48514
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/QueryGeneration/Select_query_tests.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+
+namespace MiniSqlQuery.Tests.QueryGeneration
+{
+	[TestFixture]
+	public class Select_query_tests
+	{
+		// todo: migrate with MOQ etc
+	}
+}
Added +140 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/QueryRunnerTests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/QueryRunnerTests.cs
new file mode 100644
index 0000000..c6fef02
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/QueryRunnerTests.cs
@@ -0,0 +1,140 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Data.Common;
+using FluentAssertions;
+using MiniSqlQuery.Core;
+using NUnit.Framework;
+
+// ReSharper disable InconsistentNaming
+
+namespace MiniSqlQuery.Tests
+{
+    /// <summary>
+    /// SQL Server tests against the "AdventureWorks" example DB.
+    /// 
+    /// You will need a copy of the databse installed to the local system for these tests to work.
+    /// </summary>
+	[TestFixture(Description = "Requires AdventureWorks DB")]
+    [Category("Functional")]
+    public class QueryRunnerTests
+    {
+        /// <summary>
+        /// See "AdventureWorks2017.bak" under the heading "AdventureWorks (OLTP) full database backups":
+        /// https://github.com/Microsoft/sql-server-samples/releases/tag/adventureworks
+        /// </summary>
+		private string _conn = @"Server=.; Database=AdventureWorks2017; Integrated Security=SSPI";
+        private QueryRunner _runner;
+
+        [Test]
+        public void Bad_SQL_expects_an_error()
+        {
+            _runner.ExecuteQuery("SELECT foo FROM bar ");
+            Console.WriteLine(_runner.Messages);
+            Assert.That(_runner.Messages, Is.Not.Empty);
+        }
+
+        [Test]
+        public void Can_PRINT_messages()
+        {
+            _runner.ExecuteQuery("PRINT 'test data'");
+            _runner.Messages.Should().StartWith("test data");
+        }
+
+        [Test]
+        public void Check_defaults()
+        {
+            Assert.That(_runner.Messages, Is.Empty);
+            Assert.That(_runner.Batch, Is.Null);
+            Assert.That(_runner.IsBusy, Is.EqualTo(false));
+        }
+
+        [Test]
+        public void Execute_a_comment_is_OK()
+        {
+            _runner.ExecuteQuery("-- should be OK");
+            _runner.ExecuteQuery("/* should be OK */");
+            _runner.ExecuteQuery(@"/*
+				should be OK 
+				*/");
+        }
+
+        [Test]
+        public void No_connection_expects_error_on_Execute()
+        {
+            _runner = new QueryRunner(DbProviderFactories.GetFactory("System.Data.SqlClient"), null, true, 30);
+            var exp = Assert.Throws<InvalidOperationException>(() => _runner.ExecuteQuery(" "));
+            Assert.That(exp.Message, Is.EqualTo("Supply a connection."));
+        }
+
+        [Test]
+        public void No_provider_expects_error_on_Execute()
+        {
+            _runner = new QueryRunner(null, _conn, true, 30);
+            var exp = Assert.Throws<InvalidOperationException>(() => _runner.ExecuteQuery(" "));
+            Assert.That(exp.Message, Is.EqualTo("Supply a provider."));
+        }
+
+        [Test]
+        public void Run_a_basic_query()
+        {
+            string sql = "SELECT BusinessEntityID, BirthDate FROM HumanResources.Employee";
+            _runner.ExecuteQuery(sql);
+
+            Assert.That(_runner.Batch, Is.Not.Null);
+            Assert.That(_runner.Batch.Queries.Count, Is.EqualTo(1));
+            Assert.That(_runner.Batch.Queries[0].Result, Is.Not.Null);
+            Assert.That(_runner.Batch.Queries[0].Result.Tables[0].Columns[0].ColumnName, Is.EqualTo("BusinessEntityID"));
+            Assert.That(_runner.Batch.Queries[0].Result.Tables[0].Columns[1].ColumnName, Is.EqualTo("BirthDate"));
+        }
+
+        [Test]
+        public void Run_a_batched_query()
+        {
+            string sql =
+                @"
+				-- batch 1, 2 queries
+				SELECT BusinessEntityID, BirthDate FROM HumanResources.Employee
+				SELECT ct.ContactTypeID, ct.Name   FROM Person.ContactType ct
+				GO
+
+				-- batch 2, 1 query
+				SELECT p.BusinessEntityID AS id, p.Title, p.FirstName, p.LastName, ea.EmailAddress, pp.PhoneNumber, e.BirthDate
+				FROM   Person.Person p
+				         INNER JOIN HumanResources.Employee e ON p.BusinessEntityID = e.BusinessEntityID
+				         INNER JOIN Person.EmailAddress ea ON p.BusinessEntityID = ea.BusinessEntityID
+				         INNER JOIN Person.PersonPhone pp ON p.BusinessEntityID = pp.BusinessEntityID
+				WHERE  e.BirthDate >= '1 jan 1975' ";
+            _runner.ExecuteQuery(sql);
+
+            Assert.That(_runner.Batch, Is.Not.Null);
+            Assert.That(_runner.Batch.Queries.Count, Is.EqualTo(2));
+            Assert.That(_runner.Batch.Queries[0].Result, Is.Not.Null);
+
+            Assert.That(_runner.Batch.Queries[0].Result.Tables.Count, Is.EqualTo(2));
+            Assert.That(_runner.Batch.Queries[0].Result.Tables[0].Columns[0].ColumnName, Is.EqualTo("BusinessEntityID"));
+            Assert.That(_runner.Batch.Queries[0].Result.Tables[0].Columns[1].ColumnName, Is.EqualTo("BirthDate"));
+
+            Assert.That(_runner.Batch.Queries[1].Result.Tables.Count, Is.EqualTo(1));
+            Assert.That(_runner.Batch.Queries[1].Result.Tables[0].Columns[0].ColumnName, Is.EqualTo("id"));
+            Assert.That(_runner.Batch.Queries[1].Result.Tables[0].Columns[1].ColumnName, Is.EqualTo("Title"));
+            Assert.That(_runner.Batch.Queries[1].Result.Tables[0].Columns[2].ColumnName, Is.EqualTo("FirstName"));
+            Assert.That(_runner.Batch.Queries[1].Result.Tables[0].Columns[3].ColumnName, Is.EqualTo("LastName"));
+            Assert.That(_runner.Batch.Queries[1].Result.Tables[0].Columns[4].ColumnName, Is.EqualTo("EmailAddress"));
+            Assert.That(_runner.Batch.Queries[1].Result.Tables[0].Columns[5].ColumnName, Is.EqualTo("PhoneNumber"));
+            Assert.That(_runner.Batch.Queries[1].Result.Tables[0].Columns[6].ColumnName, Is.EqualTo("BirthDate"));
+        }
+
+        [SetUp]
+        public void TestSetUp()
+        {
+            _runner = QueryRunner.Create(DbProviderFactories.GetFactory("System.Data.SqlClient"), _conn, true, 30);
+        }
+    }
+}
\ No newline at end of file
Added +2 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/Templates/bar.mt b/minisqlquery-master/src/MiniSqlQuery.Tests/Templates/bar.mt
new file mode 100644
index 0000000..672c4a4
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/Templates/bar.mt
@@ -0,0 +1,2 @@
+// gen at {$Host.Date("d/M/yy")}
+BAR
\ No newline at end of file
Added +8 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/Templates/foo.cs.mt b/minisqlquery-master/src/MiniSqlQuery.Tests/Templates/foo.cs.mt
new file mode 100644
index 0000000..420dad2
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/Templates/foo.cs.mt
@@ -0,0 +1,8 @@
+// gen at {$Host.Date("d/M/yy")}
+public class foo
+{
+	public string baa()
+	{
+		return "baa";
+	}
+}
\ No newline at end of file
Added +62 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/Templates/TemplateHost_tests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/Templates/TemplateHost_tests.cs
new file mode 100644
index 0000000..405b45b
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/Templates/TemplateHost_tests.cs
@@ -0,0 +1,62 @@
+#region License
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+using MiniSqlQuery.Core;
+using MiniSqlQuery.PlugIns.TemplateViewer;
+using NUnit.Framework;
+
+using Rhino.Mocks;
+
+namespace MiniSqlQuery.Tests.Templates
+{
+    [TestFixture]
+    public class TemplateHost_tests
+    {
+        private TemplateHost _host;
+        IApplicationServices _services;
+        IDatabaseInspector _databaseInspector;
+
+        [SetUp]
+        public void TestSetUp()
+        {
+            _services = MockRepository.GenerateStub<IApplicationServices>();
+            _databaseInspector = MockRepository.GenerateStub<IDatabaseInspector>();
+            _host = new TemplateHost(_services, _databaseInspector);
+        }
+
+        [Test]
+        public void UserName()
+        {
+            Assert.That(_host.UserName, Is.Not.Null);
+        }
+
+        [Test]
+        public void ToPascalCase()
+        {
+            Assert.That(_host.ToPascalCase(null), Is.EqualTo(""));
+            Assert.That(_host.ToPascalCase("name"), Is.EqualTo("Name"));
+            Assert.That(_host.ToPascalCase("foo baa"), Is.EqualTo("FooBaa"));
+            Assert.That(_host.ToPascalCase("user_id"), Is.EqualTo("UserId"));
+            Assert.That(_host.ToPascalCase("firstName"), Is.EqualTo("FirstName"));
+            Assert.That(_host.ToPascalCase("FirstName"), Is.EqualTo("FirstName"));
+            Assert.That(_host.ToPascalCase("id"), Is.EqualTo("Id"));
+            Assert.That(_host.ToPascalCase("ID"), Is.EqualTo("ID"));
+        }
+
+        [Test]
+        public void ToCamelCase()
+        {
+            Assert.That(_host.ToCamelCase(null), Is.EqualTo(""));
+            Assert.That(_host.ToCamelCase("name"), Is.EqualTo("name"));
+            Assert.That(_host.ToCamelCase("Foo"), Is.EqualTo("foo"));
+            Assert.That(_host.ToCamelCase("bat man"), Is.EqualTo("batMan"));
+            Assert.That(_host.ToCamelCase("bat_man"), Is.EqualTo("batMan"));
+            Assert.That(_host.ToCamelCase("XYZCodeThing"), Is.EqualTo("xyzCodeThing"));
+            Assert.That(_host.ToCamelCase("XYZ Code Thing"), Is.EqualTo("xyzCodeThing"));
+            Assert.That(_host.ToCamelCase("user_name"), Is.EqualTo("userName"));
+            Assert.That(_host.ToCamelCase("id"), Is.EqualTo("id"));
+        }
+    }
+}
\ No newline at end of file
Added +59 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/Templates/TemplateModel_tests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/Templates/TemplateModel_tests.cs
new file mode 100644
index 0000000..620c3c7
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/Templates/TemplateModel_tests.cs
@@ -0,0 +1,59 @@
+#region License
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+using System;
+using System.Collections.Generic;
+using System.IO;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Template;
+using MiniSqlQuery.PlugIns.TemplateViewer;
+using NUnit.Framework;
+using Rhino.Mocks;
+
+// ReSharper disable InconsistentNaming
+
+namespace MiniSqlQuery.Tests.Templates
+{
+    [TestFixture]
+    public class TemplateModel_tests
+    {
+        TemplateModel _model;
+        IApplicationServices _services;
+        IDatabaseInspector _databaseInspector;
+
+        [SetUp]
+        public void TestSetUp()
+        {
+            _services = MockRepository.GenerateStub<IApplicationServices>();
+            _databaseInspector = MockRepository.GenerateStub<IDatabaseInspector>();
+            _services.Expect(x => x.Resolve<TemplateHost>()).Return(new TemplateHost(_services, _databaseInspector));
+            _model = new TemplateModel(_services, new NVelocityWrapper());
+        }
+
+        [Test]
+        public void ModelData_parameters_are_precessed()
+        {
+            var items = new Dictionary<string, object>();
+            string processedtext = _model.ProcessTemplate("create new ${Host.Date(\"yyyy\")}", items).Text;
+            Assert.That(processedtext, Is.EqualTo("create new " + DateTime.Now.Year));
+        }
+
+        [Test]
+        public void If_a_file_extension_is_set_this_defaults_the_TemplateResult()
+        {
+            var filename = Path.Combine(TestContext.CurrentContext.TestDirectory, @"Templates\foo.cs.mt");
+            var result = _model.ProcessTemplateFile(filename, null);
+            Assert.That(result.Extension, Is.EqualTo("cs"));
+        }
+
+        [Test]
+        public void If_no_file_extension_is_set_this_defaults_the_TemplateResult_to_SQL()
+        {
+            var filename = Path.Combine(TestContext.CurrentContext.TestDirectory, @"Templates\bar.mt");
+            var result = _model.ProcessTemplateFile(filename, null);
+            Assert.That(result.Extension, Is.EqualTo("sql"));
+        }
+    }
+}
\ No newline at end of file
Added +114 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/Templates/TextFormater_tests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/Templates/TextFormater_tests.cs
new file mode 100644
index 0000000..9e6af7d
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/Templates/TextFormater_tests.cs
@@ -0,0 +1,114 @@
+#region License
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+using System;
+using System.Collections.Generic;
+using MiniSqlQuery.Core.DbModel;
+using MiniSqlQuery.Core.Template;
+using NUnit.Framework;
+
+
+namespace MiniSqlQuery.Tests.Templates
+{
+    [TestFixture]
+    public class TextFormater_tests
+    {
+        #region Setup/Teardown
+
+        [SetUp]
+        public void TestSetUp()
+        {
+            _formatter = new NVelocityWrapper();
+        }
+
+        #endregion
+
+        private class MyClass
+        {
+            public string Name { get; set; }
+            public DateTime Time { get; set; }
+            public int Age { get; set; }
+        }
+
+        private ITextFormatter _formatter;
+
+        public class Something
+        {
+            private string firstName = "hammett";
+            private string middleNameInitial = "V";
+
+            public string FirstName
+            {
+                get { return firstName; }
+                set { firstName = value; }
+            }
+
+            public string MiddleNameInitial
+            {
+                get { return middleNameInitial; }
+                set { middleNameInitial = value; }
+            }
+
+            public String Print(String arg)
+            {
+                return arg;
+            }
+
+            public String Contents(params String[] args)
+            {
+                return String.Join(",", args);
+            }
+        }
+
+        [Test]
+        public void Accepts_values()
+        {
+            MyClass o = new MyClass { Name = "Blue", Age = 32 };
+            Dictionary<string, object> items = new Dictionary<string, object>();
+            items.Add("data", o);
+            string text = _formatter.Format("Mr $data.Name arrived, aged $data.Age.", items);
+            Assert.That(text, Is.EqualTo("Mr Blue arrived, aged 32."));
+        }
+
+        [Test]
+        public void nvelocity_with_dbmodel2()
+        {
+            DbModelInstance model = new DbModelInstance();
+            model.ConnectionString = "conn str";
+            model.ProviderName = "sql.foo";
+            DbModelTable table = new DbModelTable { Name = "MyTable" };
+            model.Add(table);
+            table.Add(new DbModelColumn { Name = "ID" });
+            table.Add(new DbModelColumn { Name = "FirstName" });
+
+            Dictionary<string, object> items = new Dictionary<string, object>();
+            items.Add("model", model);
+
+            string template =
+                @"Template Test ($num):
+ConnectionString: ""$model.ConnectionString""
+ProviderName: ""$model.ProviderName""
+
+#foreach ($table in $model.Tables)
+$table.Name
+#foreach ($c in $table.Columns)
+  * $c.Name
+#end
+#end
+";
+            string s = _formatter.Format(template, items);
+
+            Console.WriteLine(s);
+            Assert.That(s.Length, Is.GreaterThan(0));
+        }
+
+        [Test]
+        public void Unchanged()
+        {
+            string text = _formatter.Format("nothing", null);
+            Assert.That(text, Is.EqualTo("nothing"));
+        }
+    }
+}
\ No newline at end of file
Added +41 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/TextFormater_tests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/TextFormater_tests.cs
new file mode 100644
index 0000000..199fff2
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/TextFormater_tests.cs
@@ -0,0 +1,41 @@
+using System;
+using MiniSqlQuery.Core.Template;
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+
+namespace MiniSqlQuery.Tests
+{
+	[TestFixture]
+	public class TextFormater_tests
+	{
+		private class MyClass
+		{
+			public string Name{get;set;}
+			public DateTime Time { get; set; }
+			public int Age { get; set; }
+		}
+
+		ITextFormatter _formatter;
+
+		[SetUp]
+		public void TestSetUp()
+		{
+			_formatter = new HenriFormatter();
+		}
+
+		[Test]
+		public void Unchanged()
+		{
+			string text = _formatter.Format("nothing", null);
+			Assert.That(text, Is.EqualTo("nothing"));
+		}
+
+		[Test]
+		public void Accepts_values()
+		{
+			MyClass o = new MyClass { Name = "Blue", Age = 32 };
+			string text = _formatter.Format("Mr {Name} arrived, aged {Age}.", o);
+			Assert.That(text, Is.EqualTo("Mr Blue arrived, aged 32."));
+		}
+	}
+}
\ No newline at end of file
Added +49 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/TextGeneratorService_Tests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/TextGeneratorService_Tests.cs
new file mode 100644
index 0000000..8120c4d
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/TextGeneratorService_Tests.cs
@@ -0,0 +1,49 @@
+using MiniSqlQuery.PlugIns.TextGenerator;
+using NUnit.Framework;
+
+
+// ReSharper disable InconsistentNaming
+
+namespace MiniSqlQuery.Tests
+{
+    [TestFixture]
+    public class TextGeneratorService_Tests
+    {
+        [Test]
+        public void Simple_text_gen()
+        {
+            var gen = new TextGeneratorService();
+            string result = gen.Process("ClassName\r\n Foo\r\n Bar");
+            Assert.That(result, Is.EqualTo(@"public class ClassName
+{
+public virtual string Foo { get; set; }
+public virtual string Bar { get; set; }
+}
+"));
+        }
+
+        [Test]
+        public void Simple_text_gen_converts_to_PascalCase()
+        {
+            var gen = new TextGeneratorService();
+            string result = gen.Process("Some other class\r\n Ba da bing");
+            Assert.That(result, Is.EqualTo(@"public class SomeOtherClass
+{
+public virtual string BaDaBing { get; set; }
+}
+"));
+        }
+
+        [Test]
+        public void if_a_property_ends_with_Id_its_an_int()
+        {
+            var gen = new TextGeneratorService();
+            string result = gen.Process("Some other class\r\n My Id");
+            Assert.That(result, Is.EqualTo(@"public class SomeOtherClass
+{
+public virtual int MyId { get; set; }
+}
+"));
+        }
+    }
+}
\ No newline at end of file
Added +21 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Tests/Utility_Tests.cs b/minisqlquery-master/src/MiniSqlQuery.Tests/Utility_Tests.cs
new file mode 100644
index 0000000..4450175
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Tests/Utility_Tests.cs
@@ -0,0 +1,21 @@
+using MiniSqlQuery.Core;
+using NUnit.Framework;
+
+
+namespace MiniSqlQuery.Tests
+{
+    [TestFixture]
+    public class Utility_Tests
+    {
+        [Test]
+        public void RenderSafeSchemaObjectName()
+        {
+            Assert.That(Utility.RenderSafeSchemaObjectName(null, "table"), Is.EqualTo("[table]"));
+            Assert.That(Utility.RenderSafeSchemaObjectName("", "table"), Is.EqualTo("[table]"));
+            Assert.That(Utility.RenderSafeSchemaObjectName("dbo", "table"), Is.EqualTo("[dbo].[table]"));
+            Assert.That(Utility.RenderSafeSchemaObjectName("dbo", "table name"), Is.EqualTo("[dbo].[table name]"));
+            Assert.That(Utility.RenderSafeSchemaObjectName("some schema", "table name"), Is.EqualTo("[some schema].[table name]"));
+            Assert.That(Utility.RenderSafeSchemaObjectName("rights", "Right"), Is.EqualTo("[rights].[Right]"));
+        }
+    }
+}
\ No newline at end of file
Added +156 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/AboutForm.cs b/minisqlquery-master/src/MiniSqlQuery/AboutForm.cs
new file mode 100644
index 0000000..233d777
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/AboutForm.cs
@@ -0,0 +1,156 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Reflection;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Properties;
+
+namespace MiniSqlQuery
+{
+    /// <summary>The about form.</summary>
+    internal partial class AboutForm : Form
+    {
+        /// <summary>The _services.</summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>Initializes a new instance of the <see cref="AboutForm"/> class.</summary>
+        /// <param name="services">The services.</param>
+        public AboutForm(IApplicationServices services) : this()
+        {
+            _services = services;
+        }
+
+        /// <summary>Initializes a new instance of the <see cref="AboutForm"/> class.</summary>
+        public AboutForm()
+        {
+            InitializeComponent();
+            pic.Image = ImageResource.ApplicationIcon;
+            Text = String.Format("About {0}", AssemblyTitle);
+            labelProductName.Text = AssemblyTitle;
+            labelVersion.Text = String.Format("Version {0}", AssemblyVersion);
+            labelCopyright.Text = AssemblyCopyright;
+            textBoxDescription.Text = AssemblyDescription;
+        }
+
+        /// <summary>Gets AssemblyCompany.</summary>
+        public string AssemblyCompany
+        {
+            get
+            {
+                object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
+                if (attributes.Length == 0)
+                {
+                    return string.Empty;
+                }
+
+                return ((AssemblyCompanyAttribute)attributes[0]).Company;
+            }
+        }
+
+        /// <summary>Gets AssemblyCopyright.</summary>
+        public string AssemblyCopyright
+        {
+            get
+            {
+                object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
+                if (attributes.Length == 0)
+                {
+                    return string.Empty;
+                }
+
+                return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
+            }
+        }
+
+        /// <summary>Gets AssemblyDescription.</summary>
+        public string AssemblyDescription
+        {
+            get
+            {
+                object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute),
+                                                                                          false);
+                if (attributes.Length == 0)
+                {
+                    return string.Empty;
+                }
+
+                return ((AssemblyDescriptionAttribute)attributes[0]).Description;
+            }
+        }
+
+        /// <summary>Gets AssemblyProduct.</summary>
+        public string AssemblyProduct
+        {
+            get
+            {
+                object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
+                if (attributes.Length == 0)
+                {
+                    return string.Empty;
+                }
+
+                return ((AssemblyProductAttribute)attributes[0]).Product;
+            }
+        }
+
+        /// <summary>Gets AssemblyTitle.</summary>
+        public string AssemblyTitle
+        {
+            get
+            {
+                object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
+                if (attributes.Length > 0)
+                {
+                    AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
+                    if (titleAttribute.Title != string.Empty)
+                    {
+                        return titleAttribute.Title;
+                    }
+                }
+
+                return Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
+            }
+        }
+
+        /// <summary>Gets AssemblyVersion.</summary>
+        public string AssemblyVersion
+        {
+            get { return Assembly.GetExecutingAssembly().GetName().Version.ToString(); }
+        }
+
+        /// <summary>The about form_ load.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void AboutForm_Load(object sender, EventArgs e)
+        {
+            List<IPlugIn> plugins = new List<IPlugIn>(_services.Plugins.Values);
+            pluginList.SetDataSource(plugins.ToArray());
+            webBrowser1.DocumentText = Resources.ReadMe;
+            txtChangeLog.Text = Resources.ChangeLog;
+            txtLicense.Text = Resources.LicenseMiniSqlQuery;
+        }
+
+        /// <summary>The label version_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void labelVersion_Click(object sender, EventArgs e)
+        {
+        }
+
+        /// <summary>The ok button_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void okButton_Click(object sender, EventArgs e)
+        {
+            Close();
+        }
+    }
+}
\ No newline at end of file
Added +280 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/AboutForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/AboutForm.Designer.cs
new file mode 100644
index 0000000..c0b6920
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/AboutForm.Designer.cs
@@ -0,0 +1,280 @@
+namespace MiniSqlQuery
+{
+	partial class AboutForm
+	{
+		/// <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()
+		{
+            this.textBoxDescription = new System.Windows.Forms.TextBox();
+            this.okButton = new System.Windows.Forms.Button();
+            this.pluginList = new MiniSqlQuery.Core.Controls.PluginListControl();
+            this.labelVersion = new System.Windows.Forms.Label();
+            this.labelProductName = new System.Windows.Forms.Label();
+            this.labelCopyright = new System.Windows.Forms.Label();
+            this.tabControl1 = new System.Windows.Forms.TabControl();
+            this.tabPageReadMe = new System.Windows.Forms.TabPage();
+            this.webBrowser1 = new System.Windows.Forms.WebBrowser();
+            this.tabPageLicense = new System.Windows.Forms.TabPage();
+            this.txtLicense = new System.Windows.Forms.TextBox();
+            this.tabPagePlugins = new System.Windows.Forms.TabPage();
+            this.pic = new System.Windows.Forms.PictureBox();
+            this.tabChangeLog = new System.Windows.Forms.TabPage();
+            this.txtChangeLog = new System.Windows.Forms.TextBox();
+            this.tabControl1.SuspendLayout();
+            this.tabPageReadMe.SuspendLayout();
+            this.tabPageLicense.SuspendLayout();
+            this.tabPagePlugins.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.pic)).BeginInit();
+            this.tabChangeLog.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // textBoxDescription
+            // 
+            this.textBoxDescription.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.textBoxDescription.BackColor = System.Drawing.SystemColors.Window;
+            this.textBoxDescription.Location = new System.Drawing.Point(12, 77);
+            this.textBoxDescription.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
+            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(615, 54);
+            this.textBoxDescription.TabIndex = 23;
+            this.textBoxDescription.TabStop = false;
+            this.textBoxDescription.Text = "Description";
+            // 
+            // 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(552, 437);
+            this.okButton.Name = "okButton";
+            this.okButton.Size = new System.Drawing.Size(75, 23);
+            this.okButton.TabIndex = 24;
+            this.okButton.Text = "&OK";
+            this.okButton.Click += new System.EventHandler(this.okButton_Click);
+            // 
+            // pluginList
+            // 
+            this.pluginList.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.pluginList.Location = new System.Drawing.Point(3, 3);
+            this.pluginList.Name = "pluginList";
+            this.pluginList.Size = new System.Drawing.Size(601, 262);
+            this.pluginList.TabIndex = 0;
+            // 
+            // labelVersion
+            // 
+            this.labelVersion.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.labelVersion.Location = new System.Drawing.Point(81, 35);
+            this.labelVersion.Margin = new System.Windows.Forms.Padding(0);
+            this.labelVersion.Name = "labelVersion";
+            this.labelVersion.Size = new System.Drawing.Size(546, 17);
+            this.labelVersion.TabIndex = 0;
+            this.labelVersion.Text = "Version";
+            this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            this.labelVersion.Click += new System.EventHandler(this.labelVersion_Click);
+            // 
+            // labelProductName
+            // 
+            this.labelProductName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.labelProductName.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.labelProductName.Location = new System.Drawing.Point(81, 9);
+            this.labelProductName.Margin = new System.Windows.Forms.Padding(0);
+            this.labelProductName.Name = "labelProductName";
+            this.labelProductName.Size = new System.Drawing.Size(546, 17);
+            this.labelProductName.TabIndex = 19;
+            this.labelProductName.Text = "Product Name";
+            this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            // 
+            // labelCopyright
+            // 
+            this.labelCopyright.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.labelCopyright.Location = new System.Drawing.Point(81, 52);
+            this.labelCopyright.Margin = new System.Windows.Forms.Padding(0);
+            this.labelCopyright.Name = "labelCopyright";
+            this.labelCopyright.Size = new System.Drawing.Size(546, 17);
+            this.labelCopyright.TabIndex = 22;
+            this.labelCopyright.Text = "Copyright";
+            this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            // 
+            // tabControl1
+            // 
+            this.tabControl1.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.tabControl1.Controls.Add(this.tabPageReadMe);
+            this.tabControl1.Controls.Add(this.tabChangeLog);
+            this.tabControl1.Controls.Add(this.tabPageLicense);
+            this.tabControl1.Controls.Add(this.tabPagePlugins);
+            this.tabControl1.Location = new System.Drawing.Point(12, 137);
+            this.tabControl1.Name = "tabControl1";
+            this.tabControl1.SelectedIndex = 0;
+            this.tabControl1.Size = new System.Drawing.Size(615, 294);
+            this.tabControl1.TabIndex = 25;
+            // 
+            // tabPageReadMe
+            // 
+            this.tabPageReadMe.Controls.Add(this.webBrowser1);
+            this.tabPageReadMe.Location = new System.Drawing.Point(4, 22);
+            this.tabPageReadMe.Name = "tabPageReadMe";
+            this.tabPageReadMe.Padding = new System.Windows.Forms.Padding(3);
+            this.tabPageReadMe.Size = new System.Drawing.Size(607, 268);
+            this.tabPageReadMe.TabIndex = 2;
+            this.tabPageReadMe.Text = "Read Me!";
+            this.tabPageReadMe.UseVisualStyleBackColor = true;
+            // 
+            // webBrowser1
+            // 
+            this.webBrowser1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.webBrowser1.Location = new System.Drawing.Point(3, 3);
+            this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20);
+            this.webBrowser1.Name = "webBrowser1";
+            this.webBrowser1.Size = new System.Drawing.Size(601, 262);
+            this.webBrowser1.TabIndex = 0;
+            // 
+            // tabPageLicense
+            // 
+            this.tabPageLicense.Controls.Add(this.txtLicense);
+            this.tabPageLicense.Location = new System.Drawing.Point(4, 22);
+            this.tabPageLicense.Name = "tabPageLicense";
+            this.tabPageLicense.Padding = new System.Windows.Forms.Padding(3);
+            this.tabPageLicense.Size = new System.Drawing.Size(607, 268);
+            this.tabPageLicense.TabIndex = 3;
+            this.tabPageLicense.Text = "License";
+            this.tabPageLicense.UseVisualStyleBackColor = true;
+            // 
+            // txtLicense
+            // 
+            this.txtLicense.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.txtLicense.Location = new System.Drawing.Point(3, 3);
+            this.txtLicense.Multiline = true;
+            this.txtLicense.Name = "txtLicense";
+            this.txtLicense.ReadOnly = true;
+            this.txtLicense.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+            this.txtLicense.Size = new System.Drawing.Size(601, 262);
+            this.txtLicense.TabIndex = 0;
+            // 
+            // tabPagePlugins
+            // 
+            this.tabPagePlugins.Controls.Add(this.pluginList);
+            this.tabPagePlugins.Location = new System.Drawing.Point(4, 22);
+            this.tabPagePlugins.Name = "tabPagePlugins";
+            this.tabPagePlugins.Padding = new System.Windows.Forms.Padding(3);
+            this.tabPagePlugins.Size = new System.Drawing.Size(607, 268);
+            this.tabPagePlugins.TabIndex = 1;
+            this.tabPagePlugins.Text = "Plugins";
+            this.tabPagePlugins.UseVisualStyleBackColor = true;
+            // 
+            // pic
+            // 
+            this.pic.Location = new System.Drawing.Point(26, 20);
+            this.pic.Name = "pic";
+            this.pic.Size = new System.Drawing.Size(32, 32);
+            this.pic.TabIndex = 26;
+            this.pic.TabStop = false;
+            // 
+            // tabChangeLog
+            // 
+            this.tabChangeLog.Controls.Add(this.txtChangeLog);
+            this.tabChangeLog.Location = new System.Drawing.Point(4, 22);
+            this.tabChangeLog.Name = "tabChangeLog";
+            this.tabChangeLog.Padding = new System.Windows.Forms.Padding(3);
+            this.tabChangeLog.Size = new System.Drawing.Size(607, 268);
+            this.tabChangeLog.TabIndex = 4;
+            this.tabChangeLog.Text = "Change Log";
+            this.tabChangeLog.UseVisualStyleBackColor = true;
+            // 
+            // txtChangeLog
+            // 
+            this.txtChangeLog.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.txtChangeLog.Location = new System.Drawing.Point(3, 3);
+            this.txtChangeLog.Multiline = true;
+            this.txtChangeLog.Name = "txtChangeLog";
+            this.txtChangeLog.ReadOnly = true;
+            this.txtChangeLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+            this.txtChangeLog.Size = new System.Drawing.Size(601, 262);
+            this.txtChangeLog.TabIndex = 1;
+            // 
+            // AboutForm
+            // 
+            this.AcceptButton = this.okButton;
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.BackColor = System.Drawing.SystemColors.Window;
+            this.CancelButton = this.okButton;
+            this.ClientSize = new System.Drawing.Size(639, 472);
+            this.Controls.Add(this.pic);
+            this.Controls.Add(this.tabControl1);
+            this.Controls.Add(this.okButton);
+            this.Controls.Add(this.textBoxDescription);
+            this.Controls.Add(this.labelCopyright);
+            this.Controls.Add(this.labelVersion);
+            this.Controls.Add(this.labelProductName);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.Name = "AboutForm";
+            this.Padding = new System.Windows.Forms.Padding(9);
+            this.ShowIcon = false;
+            this.ShowInTaskbar = false;
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "About";
+            this.Load += new System.EventHandler(this.AboutForm_Load);
+            this.tabControl1.ResumeLayout(false);
+            this.tabPageReadMe.ResumeLayout(false);
+            this.tabPageLicense.ResumeLayout(false);
+            this.tabPageLicense.PerformLayout();
+            this.tabPagePlugins.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.pic)).EndInit();
+            this.tabChangeLog.ResumeLayout(false);
+            this.tabChangeLog.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+		}
+
+		#endregion
+
+		private System.Windows.Forms.TextBox textBoxDescription;
+        private System.Windows.Forms.Button okButton;
+		private global::MiniSqlQuery.Core.Controls.PluginListControl pluginList;
+		private System.Windows.Forms.Label labelVersion;
+		private System.Windows.Forms.Label labelProductName;
+		private System.Windows.Forms.Label labelCopyright;
+		private System.Windows.Forms.TabControl tabControl1;
+		private System.Windows.Forms.TabPage tabPagePlugins;
+		private System.Windows.Forms.PictureBox pic;
+		private System.Windows.Forms.TabPage tabPageReadMe;
+		private System.Windows.Forms.WebBrowser webBrowser1;
+		private System.Windows.Forms.TabPage tabPageLicense;
+		private System.Windows.Forms.TextBox txtLicense;
+        private System.Windows.Forms.TabPage tabChangeLog;
+        private System.Windows.Forms.TextBox txtChangeLog;
+    }
+}
Added +120 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/AboutForm.resx b/minisqlquery-master/src/MiniSqlQuery/AboutForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/AboutForm.resx
@@ -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>
\ No newline at end of file
Added +75 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/app.config b/minisqlquery-master/src/MiniSqlQuery/app.config
new file mode 100644
index 0000000..00c8391
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/app.config
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <configSections>
+    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+      <section name="MiniSqlQuery.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
+    </sectionGroup>
+    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+      <section name="MiniSqlQuery.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
+    </sectionGroup>
+  </configSections>
+  <userSettings>
+    <MiniSqlQuery.Properties.Settings>
+      <setting name="DateTimeFormat" serializeAs="String">
+        <value>yyyy-MM-dd HH:mm:ss.fff</value>
+      </setting>
+      <setting name="DefaultConnectionDefinitionFilename" serializeAs="String">
+        <value />
+      </setting>
+      <setting name="EnableQueryBatching" serializeAs="String">
+        <value>True</value>
+      </setting>
+      <setting name="IncludeReadOnlyColumnsInExport" serializeAs="String">
+        <value>False</value>
+      </setting>
+      <setting name="LoadExternalPlugins" serializeAs="String">
+        <value>True</value>
+      </setting>
+      <setting name="NammedConnection" serializeAs="String">
+        <value>Default - MSSQL Master@localhost</value>
+      </setting>
+      <setting name="NullText" serializeAs="String">
+        <value>&lt;NULL&gt;</value>
+      </setting>
+      <setting name="PlugInFileFilter" serializeAs="String">
+        <value>*.PlugIn.dll</value>
+      </setting>
+      <setting name="CommandTimeout" serializeAs="String">
+        <value>30</value>
+      </setting>
+    </MiniSqlQuery.Properties.Settings>
+  </userSettings>
+  <!--<system.windows.forms jitDebugging="true"/>-->
+  <applicationSettings>
+    <MiniSqlQuery.Properties.Settings>
+      <setting name="FileDialogFilter" serializeAs="String">
+        <value>SQL Files (*.sql)|*.sql|Mini SQL Template Files (*.mt)|*.mt|ASPX Files (*.asp;*.aspx;*.asax;*.asmx)|*.asp;*.aspx;*.asax;*.asmx|Batch Files (*.bat;*.cmd)|*.bat;*.cmd|BOO Files (*.boo)|*.boo|Coco Files (*.atg)|*.atg|C++ Files (*.cpp;*.cc;*.c;*.h)|*.cpp;*.cc;*.c;*.h|C# Files (*.cs)|*.cs|HTML Files (*.htm*)|*.htm*|Java Files (*.java)|*.java|JavaScript Files (*.js)|*.js|Patch Files (*.patch;*.diff)|*.patch;*.diff|PHP Files (*.php*)|*.php*|TeX Files (*.tex)|*.tex|VB.NET Files (*.vb)|*.vb|XML Files (*.xml;*.resx)|*.xml;*.resx|All Files (*.*)|*.*</value>
+      </setting>
+      <setting name="SqlFileFilter" serializeAs="String">
+        <value>*.sql</value>
+      </setting>
+      <setting name="XmlFileDialogFilter" serializeAs="String">
+        <value>XML Files (*.xml)|*.xml|All Files (*.*)|*.*</value>
+      </setting>
+    </MiniSqlQuery.Properties.Settings>
+  </applicationSettings>
+  <runtime>
+    <!-- allow plugin loading after web downloads -->
+    <loadFromRemoteSources enabled="true"/>
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <dependentAssembly>
+        <assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-2.5.1.0" newVersion="2.5.1.0" />
+      </dependentAssembly>
+    </assemblyBinding>
+  </runtime>
+  <system.data>
+    <DbProviderFactories>
+      <remove invariant="System.Data.SQLite" />
+      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
+    </DbProviderFactories>
+  </system.data>
+  <startup>
+    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
+  </startup>
+</configuration>
Added +132 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/App.cs b/minisqlquery-master/src/MiniSqlQuery/App.cs
new file mode 100644
index 0000000..40d54ba
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/App.cs
@@ -0,0 +1,132 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Threading;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.DbModel;
+using MiniSqlQuery.Core.Forms;
+using MiniSqlQuery.Core.Template;
+using MiniSqlQuery.PlugIns;
+using MiniSqlQuery.PlugIns.ConnectionStringsManager;
+using MiniSqlQuery.PlugIns.DatabaseInspector;
+using MiniSqlQuery.PlugIns.SearchTools;
+using MiniSqlQuery.PlugIns.TemplateViewer;
+using MiniSqlQuery.PlugIns.TextGenerator;
+using MiniSqlQuery.PlugIns.ViewTable;
+using MiniSqlQuery.Properties;
+
+namespace MiniSqlQuery
+{
+    /// <summary>
+    /// 	The application entry point.
+    /// </summary>
+    internal static class App
+    {
+        /// <summary>
+        /// 	The configure container.
+        /// </summary>
+        /// <param name = "services">The services.</param>
+        public static void ConfigureContainer(IApplicationServices services)
+        {
+            // singletons
+            services.RegisterSingletonComponent<IApplicationSettings, ApplicationSettings>("ApplicationSettings");
+            services.RegisterSingletonComponent<IHostWindow, MainForm>("HostWindow");
+            services.RegisterSingletonComponent<IFileEditorResolver, FileEditorResolverService>("FileEditorResolver");
+
+            // components
+            services.RegisterComponent<AboutForm>("AboutForm");
+            services.RegisterComponent<ITextFindService, BasicTextFindService>("DefaultTextFindService");
+            services.RegisterComponent<IQueryEditor, QueryForm>("QueryForm");
+            services.RegisterComponent<ISqlWriter, SqlWriter>("DefaultSqlWriter");
+            services.RegisterComponent<ITextFormatter, NVelocityWrapper>("TextFormatter");
+            services.RegisterComponent<TemplateModel>("TemplateModel");
+            services.RegisterComponent<BatchQuerySelectForm>("BatchQuerySelectForm");
+        }
+
+        /// <summary>
+        /// 	The application thread exception.
+        /// </summary>
+        /// <param name = "sender">The sender.</param>
+        /// <param name = "e">The e.</param>
+        private static void ApplicationThreadException(object sender, ThreadExceptionEventArgs e)
+        {
+            if (!(e.Exception is ThreadAbortException))
+            {
+                HandleException(e.Exception);
+            }
+        }
+
+        /// <summary>
+        /// 	The current domain unhandled exception.
+        /// </summary>
+        /// <param name = "sender">The sender.</param>
+        /// <param name = "e">The e.</param>
+        private static void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
+        {
+            if (!(e.ExceptionObject is ThreadAbortException))
+            {
+                HandleException((Exception)e.ExceptionObject);
+            }
+        }
+
+        /// <summary>
+        /// 	The handle exception.
+        /// </summary>
+        /// <param name = "e">The e.</param>
+        private static void HandleException(Exception e)
+        {
+            ErrorForm errorForm = new ErrorForm();
+            errorForm.SetException(e);
+            errorForm.ShowDialog();
+            errorForm.Dispose();
+        }
+
+        /// <summary>
+        /// 	The main entry point for the application.
+        /// </summary>
+        /// <param name = "args">The args.</param>
+        [STAThread]
+        private static void Main(string[] args)
+        {
+#if !DEBUG
+			AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;
+			Application.ThreadException += ApplicationThreadException;
+#endif
+
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+
+            IApplicationServices services = ApplicationServices.Instance;
+
+            ConfigureContainer(services);
+
+            services.LoadPlugIn(new CoreApplicationPlugIn());
+            services.LoadPlugIn(new ConnectionStringsManagerLoader());
+            services.LoadPlugIn(new DatabaseInspectorLoader());
+            services.LoadPlugIn(new ViewTableLoader());
+            services.LoadPlugIn(new TemplateViewerLoader());
+            services.LoadPlugIn(new SearchToolsLoader());
+            services.LoadPlugIn(new TextGeneratorLoader());
+
+            if (services.Settings.LoadExternalPlugins)
+            {
+                var plugins = PlugInUtility.GetInstances<IPlugIn>(Environment.CurrentDirectory, Settings.Default.PlugInFileFilter);
+                Array.Sort(plugins, new PlugInComparer());
+                foreach (var plugin in plugins)
+                {
+                    services.LoadPlugIn(plugin);
+                }
+            }
+
+            services.HostWindow.SetArguments(args);
+            Application.Run(services.HostWindow.Instance);
+        }
+    }
+}
\ No newline at end of file
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/App.ico b/minisqlquery-master/src/MiniSqlQuery/App.ico
new file mode 100644
index 0000000..50d3b41
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/App.ico differ
Added +314 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/ApplicationSettings.cs b/minisqlquery-master/src/MiniSqlQuery/ApplicationSettings.cs
new file mode 100644
index 0000000..eb8594a
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/ApplicationSettings.cs
@@ -0,0 +1,314 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Collections.Specialized;
+using System.Data;
+using System.Data.Common;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Properties;
+
+namespace MiniSqlQuery
+{
+    /// <summary>The application settings.</summary>
+    public class ApplicationSettings : IApplicationSettings
+    {
+        /// <summary>The _connection definition.</summary>
+        private DbConnectionDefinition _connectionDefinition;
+
+        /// <summary>The _db connection.</summary>
+        private DbConnection _dbConnection;
+
+        /// <summary>The _db provider factory.</summary>
+        private DbProviderFactory _dbProviderFactory;
+
+        /// <summary>The _definition list.</summary>
+        private DbConnectionDefinitionList _definitionList;
+
+        /// <summary>The _untitled document counter.</summary>
+        private int _untitledDocumentCounter;
+
+        /// <summary>Initializes a new instance of the <see cref="ApplicationSettings"/> class.</summary>
+        public ApplicationSettings()
+        {
+            _definitionList = new DbConnectionDefinitionList();
+        }
+
+        /// <summary>The connection definitions changed.</summary>
+        public event EventHandler ConnectionDefinitionsChanged;
+
+        /// <summary>The database connection reset.</summary>
+        public event EventHandler DatabaseConnectionReset;
+
+        /// <summary>Gets Connection.</summary>
+        public DbConnection Connection
+        {
+            get
+            {
+                if (_dbConnection == null)
+                {
+                    if (ProviderFactory != null)
+                    {
+                        _dbConnection = ProviderFactory.CreateConnection();
+                    }
+
+                    if (_dbConnection != null)
+                    {
+                        _dbConnection.ConnectionString = _connectionDefinition.ConnectionString;
+                    }
+                }
+
+                return _dbConnection;
+            }
+        }
+
+        /// <summary>Gets or sets ConnectionDefinition.</summary>
+        public DbConnectionDefinition ConnectionDefinition
+        {
+            get { return _connectionDefinition; }
+            set
+            {
+                if (_connectionDefinition != value)
+                {
+                    _connectionDefinition = value;
+                    ResetConnection();
+                }
+            }
+        }
+
+        /// <summary>Gets or sets DateTimeFormat.</summary>
+        public string DateTimeFormat
+        {
+            get { return Settings.Default.DateTimeFormat; }
+            set
+            {
+                if (Settings.Default.DateTimeFormat != value)
+                {
+                    Settings.Default.DateTimeFormat = value;
+                    Settings.Default.Save();
+                }
+            }
+        }
+
+        /// <summary>Gets or sets DefaultConnectionDefinitionFilename.</summary>
+        public string DefaultConnectionDefinitionFilename
+        {
+            get { return Settings.Default.DefaultConnectionDefinitionFilename; }
+            set
+            {
+                if (Settings.Default.DefaultConnectionDefinitionFilename != value)
+                {
+                    Settings.Default.DefaultConnectionDefinitionFilename = value;
+                    Settings.Default.Save();
+                }
+            }
+        }
+
+        /// <summary>Gets DefaultFileFilter.</summary>
+        public string DefaultFileFilter
+        {
+            get { return Settings.Default.FileDialogFilter; }
+        }
+
+        /// <summary>Gets or sets a value indicating whether EnableQueryBatching.</summary>
+        public bool EnableQueryBatching
+        {
+            get { return Settings.Default.EnableQueryBatching; }
+            set
+            {
+                if (Settings.Default.EnableQueryBatching != value)
+                {
+                    Settings.Default.EnableQueryBatching = value;
+                    Settings.Default.Save();
+                }
+            }
+        }
+
+        /// <summary>
+        /// Gets or sets a value indicating the command timeout.
+        /// </summary>
+        /// <value>The command timeout.</value>
+        public int CommandTimeout
+        {
+            get { return Settings.Default.CommandTimeout; }
+            set
+            {
+                if (Settings.Default.CommandTimeout != value)
+                {
+                    Settings.Default.CommandTimeout = value;
+                    Settings.Default.Save();
+                }
+            }
+        }
+
+        /// <summary>Gets or sets a value indicating whether LoadExternalPlugins.</summary>
+        public bool LoadExternalPlugins
+        {
+            get { return Settings.Default.LoadExternalPlugins; }
+            set
+            {
+                if (Settings.Default.LoadExternalPlugins != value)
+                {
+                    Settings.Default.LoadExternalPlugins = value;
+                    Settings.Default.Save();
+                }
+            }
+        }
+
+        /// <summary>Gets or sets NullText.</summary>
+        public string NullText
+        {
+            get { return Settings.Default.NullText; }
+            set
+            {
+                if (Settings.Default.NullText != value)
+                {
+                    Settings.Default.NullText = value;
+                    Settings.Default.Save();
+                }
+            }
+        }
+
+        /// <summary>Gets or sets PlugInFileFilter.</summary>
+        public string PlugInFileFilter
+        {
+            get { return Settings.Default.PlugInFileFilter; }
+            set
+            {
+                if (Settings.Default.PlugInFileFilter != value)
+                {
+                    Settings.Default.PlugInFileFilter = value;
+                    Settings.Default.Save();
+                }
+            }
+        }
+
+        public StringCollection MostRecentFiles
+        {
+            get { return Settings.Default.MostRecentFiles; }
+            set
+            {
+                if (Settings.Default.MostRecentFiles != value)
+                {
+                    Settings.Default.MostRecentFiles = value;
+                    Settings.Default.Save();
+                }
+            }
+        }
+
+        public bool IncludeReadOnlyColumnsInExport
+        {
+            get { return Settings.Default.IncludeReadOnlyColumnsInExport; }
+            set
+            {
+                if (Settings.Default.IncludeReadOnlyColumnsInExport != value)
+                {
+                    Settings.Default.IncludeReadOnlyColumnsInExport = value;
+                    Settings.Default.Save();
+                }
+            }
+        }
+
+        /// <summary>Gets ProviderFactory.</summary>
+        public DbProviderFactory ProviderFactory
+        {
+            get
+            {
+                if (_dbProviderFactory == null && _connectionDefinition != null)
+                {
+                    _dbProviderFactory = DbProviderFactories.GetFactory(_connectionDefinition.ProviderName);
+                }
+
+                return _dbProviderFactory;
+            }
+        }
+
+        /// <summary>The close connection.</summary>
+        public void CloseConnection()
+        {
+            if (_dbConnection != null &&
+                (_dbConnection.State != ConnectionState.Closed && _dbConnection.State != ConnectionState.Broken))
+            {
+                _dbConnection.Close();
+            }
+        }
+
+        /// <summary>The get connection definitions.</summary>
+        /// <returns></returns>
+        public DbConnectionDefinitionList GetConnectionDefinitions()
+        {
+            return _definitionList;
+        }
+
+        /// <summary>The get open connection.</summary>
+        /// <returns></returns>
+        public DbConnection GetOpenConnection()
+        {
+            DbConnection conn = Connection;
+            if (conn.State != ConnectionState.Open)
+            {
+                if (_connectionDefinition != null && String.IsNullOrEmpty(conn.ConnectionString))
+                {
+                    conn.ConnectionString = _connectionDefinition.ConnectionString;
+                }
+                conn.Open();
+            }
+
+            return conn;
+        }
+
+        /// <summary>The get untitled document counter.</summary>
+        /// <returns>The get untitled document counter.</returns>
+        public int GetUntitledDocumentCounter()
+        {
+            return ++_untitledDocumentCounter;
+        }
+
+        /// <summary>The reset connection.</summary>
+        public void ResetConnection()
+        {
+            if (_dbConnection != null)
+            {
+                _dbConnection.Dispose();
+            }
+
+            _dbProviderFactory = null;
+            _dbConnection = null;
+
+            OnDatabaseConnectionReset(EventArgs.Empty);
+        }
+
+        /// <summary>The set connection definitions.</summary>
+        /// <param name="definitionList">The definition list.</param>
+        public void SetConnectionDefinitions(DbConnectionDefinitionList definitionList)
+        {
+            _definitionList = definitionList;
+
+            OnPastConnectionStringsChanged(EventArgs.Empty);
+        }
+
+        /// <summary>The on database connection reset.</summary>
+        /// <param name="e">The e.</param>
+        protected void OnDatabaseConnectionReset(EventArgs e)
+        {
+            if (DatabaseConnectionReset != null)
+            {
+                DatabaseConnectionReset(this, e);
+            }
+        }
+
+        /// <summary>The on past connection strings changed.</summary>
+        /// <param name="e">The e.</param>
+        protected void OnPastConnectionStringsChanged(EventArgs e)
+        {
+            if (ConnectionDefinitionsChanged != null)
+            {
+                ConnectionDefinitionsChanged(this, e);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +416 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/BasicEditor.cs b/minisqlquery-master/src/MiniSqlQuery/BasicEditor.cs
new file mode 100644
index 0000000..dd87e8d
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/BasicEditor.cs
@@ -0,0 +1,416 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.IO;
+using System.Windows.Forms;
+using ICSharpCode.TextEditor.Document;
+using Microsoft.VisualBasic;
+using MiniSqlQuery.Commands;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery
+{
+    /// <summary>The basic editor.</summary>
+    public partial class BasicEditor : DockContent, IEditor, IFindReplaceProvider, INavigatableDocument
+    {
+        /// <summary>The _services.</summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>The _settings.</summary>
+        private readonly IApplicationSettings _settings;
+
+        /// <summary>The _file name.</summary>
+        private string _fileName;
+
+        /// <summary>The _highlighting provider loaded.</summary>
+        private bool _highlightingProviderLoaded;
+
+        /// <summary>The _is dirty.</summary>
+        private bool _isDirty;
+
+        /// <summary>The _text find service.</summary>
+        private ITextFindService _textFindService;
+
+        /// <summary>Initializes a new instance of the <see cref="BasicEditor"/> class.</summary>
+        public BasicEditor()
+        {
+            InitializeComponent();
+            txtEdit.Document.DocumentChanged += DocumentDocumentChanged;
+        }
+
+        /// <summary>Initializes a new instance of the <see cref="BasicEditor"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public BasicEditor(IApplicationServices services, IApplicationSettings settings)
+            : this()
+        {
+            _services = services;
+            _settings = settings;
+
+            formContextMenuStrip.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<SaveFileCommand>());
+            formContextMenuStrip.Items.Add(CommandControlBuilder.CreateToolStripMenuItemSeparator());
+            formContextMenuStrip.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<CloseActiveWindowCommand>());
+            formContextMenuStrip.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<CloseAllWindowsCommand>());
+            formContextMenuStrip.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<CopyQueryEditorFileNameCommand>());
+
+            CommandControlBuilder.MonitorMenuItemsOpeningForEnabling(formContextMenuStrip);
+        }
+
+        /// <summary>Gets or sets AllText.</summary>
+        public string AllText
+        {
+            get { return txtEdit.Text; }
+            set { txtEdit.Text = value; }
+        }
+
+        /// <summary>Gets a value indicating whether CanReplaceText.</summary>
+        public bool CanReplaceText
+        {
+            get { return true; }
+        }
+
+        /// <summary>Gets or sets CursorColumn.</summary>
+        public int CursorColumn
+        {
+            get { return txtEdit.ActiveTextAreaControl.Caret.Column; }
+            set { txtEdit.ActiveTextAreaControl.Caret.Column = value; }
+        }
+
+        /// <summary>Gets or sets CursorLine.</summary>
+        public int CursorLine
+        {
+            get { return txtEdit.ActiveTextAreaControl.Caret.Line; }
+            set { txtEdit.ActiveTextAreaControl.Caret.Line = value; }
+        }
+
+        /// <summary>Gets CursorOffset.</summary>
+        public int CursorOffset
+        {
+            get { return txtEdit.ActiveTextAreaControl.Caret.Offset; }
+        }
+
+        /// <summary>Gets FileFilter.</summary>
+        public virtual string FileFilter
+        {
+            get { return "Text Files (*.txt)|*.txt|All Files (*.*)|*.*"; }
+        }
+
+        /// <summary>Gets or sets FileName.</summary>
+        public string FileName
+        {
+            get { return _fileName; }
+            set
+            {
+                _fileName = value;
+                Text = FileName;
+                TabText = FileName;
+            }
+        }
+
+        /// <summary>Gets or sets a value indicating whether IsDirty.</summary>
+        public bool IsDirty
+        {
+            get { return _isDirty; }
+            set
+            {
+                if (_isDirty != value)
+                {
+                    _isDirty = value;
+                    SetTabTextByFilename();
+                }
+            }
+        }
+
+        /// <summary>Gets SelectedText.</summary>
+        public string SelectedText
+        {
+            get { return txtEdit.ActiveTextAreaControl.SelectionManager.SelectedText; }
+        }
+
+        /// <summary>Gets TextFindService.</summary>
+        public ITextFindService TextFindService
+        {
+            get
+            {
+                if (_textFindService == null)
+                {
+                    _textFindService = _services.Resolve<ITextFindService>();
+                }
+
+                return _textFindService;
+            }
+        }
+
+        /// <summary>Gets TotalLines.</summary>
+        public int TotalLines
+        {
+            get { return txtEdit.Document.TotalNumberOfLines; }
+        }
+
+        /// <summary>The load highlighting provider.</summary>
+        public void LoadHighlightingProvider()
+        {
+            if (_highlightingProviderLoaded)
+            {
+                return;
+            }
+
+            // see: http://wiki.sharpdevelop.net/Syntax%20highlighting.ashx
+            string dir = Path.GetDirectoryName(GetType().Assembly.Location);
+            FileSyntaxModeProvider fsmProvider = new FileSyntaxModeProvider(dir);
+            HighlightingManager.Manager.AddSyntaxModeFileProvider(fsmProvider); // Attach to the text editor.
+            _highlightingProviderLoaded = true;
+        }
+
+        /// <summary>The clear selection.</summary>
+        public void ClearSelection()
+        {
+            txtEdit.ActiveTextAreaControl.SelectionManager.ClearSelection();
+        }
+
+        /// <summary>The highlight string.</summary>
+        /// <param name="offset">The offset.</param>
+        /// <param name="length">The length.</param>
+        public void HighlightString(int offset, int length)
+        {
+            if (offset < 0 || length < 1)
+            {
+                return;
+            }
+
+            int endPos = offset + length;
+            txtEdit.ActiveTextAreaControl.SelectionManager.SetSelection(
+                txtEdit.Document.OffsetToPosition(offset),
+                txtEdit.Document.OffsetToPosition(endPos));
+            SetCursorByOffset(endPos);
+        }
+
+        /// <summary>The insert text.</summary>
+        /// <param name="text">The text.</param>
+        public void InsertText(string text)
+        {
+            if (string.IsNullOrEmpty(text))
+            {
+                return;
+            }
+
+            int offset = txtEdit.ActiveTextAreaControl.Caret.Offset;
+
+            // if some text is selected we want to replace it
+            if (txtEdit.ActiveTextAreaControl.SelectionManager.IsSelected(offset))
+            {
+                offset = txtEdit.ActiveTextAreaControl.SelectionManager.SelectionCollection[0].Offset;
+                txtEdit.ActiveTextAreaControl.SelectionManager.RemoveSelectedText();
+            }
+
+            txtEdit.Document.Insert(offset, text);
+            int newOffset = offset + text.Length; // new offset at end of inserted text
+
+            // now reposition the caret if required to be after the inserted text
+            if (CursorOffset != newOffset)
+            {
+                SetCursorByOffset(newOffset);
+            }
+
+            txtEdit.Focus();
+        }
+
+
+        /// <summary>The load file.</summary>
+        public void LoadFile()
+        {
+            txtEdit.LoadFile(FileName);
+            IsDirty = false;
+        }
+
+        /// <summary>The save file.</summary>
+        public void SaveFile()
+        {
+            txtEdit.SaveFile(FileName);
+            IsDirty = false;
+        }
+
+        /// <summary>The set syntax.</summary>
+        /// <param name="name">The name.</param>
+        public void SetSyntax(string name)
+        {
+            LoadHighlightingProvider();
+            txtEdit.SetHighlighting(name);
+        }
+
+        /// <summary>The find string.</summary>
+        /// <param name="value">The value.</param>
+        /// <param name="startIndex">The start index.</param>
+        /// <param name="comparisonType">The comparison type.</param>
+        /// <returns>The find string.</returns>
+        public int FindString(string value, int startIndex, StringComparison comparisonType)
+        {
+            if (string.IsNullOrEmpty(value) || startIndex < 0)
+            {
+                return -1;
+            }
+
+            string text = AllText;
+            int pos = text.IndexOf(value, startIndex, comparisonType);
+            if (pos > -1)
+            {
+                ClearSelection();
+                HighlightString(pos, value.Length);
+            }
+
+            return pos;
+        }
+
+        /// <summary>The replace string.</summary>
+        /// <param name="value">The value.</param>
+        /// <param name="startIndex">The start index.</param>
+        /// <param name="length">The length.</param>
+        /// <returns>The replace string.</returns>
+        public bool ReplaceString(string value, int startIndex, int length)
+        {
+            if (value == null || startIndex < 0 || length < 0)
+            {
+                return false;
+            }
+
+            if ((startIndex + length) > AllText.Length)
+            {
+                return false;
+            }
+
+            txtEdit.Document.Replace(startIndex, length, value);
+
+            return true;
+        }
+
+        /// <summary>The set text find service.</summary>
+        /// <param name="textFindService">The text find service.</param>
+        public void SetTextFindService(ITextFindService textFindService)
+        {
+            // accept nulls infering a reset
+            _textFindService = textFindService;
+        }
+
+        /// <summary>The set cursor by location.</summary>
+        /// <param name="line">The line.</param>
+        /// <param name="column">The column.</param>
+        /// <returns>The set cursor by location.</returns>
+        public bool SetCursorByLocation(int line, int column)
+        {
+            if (line > TotalLines)
+            {
+                return false;
+            }
+
+            txtEdit.ActiveTextAreaControl.Caret.Line = line;
+            txtEdit.ActiveTextAreaControl.Caret.Column = column;
+
+            return true;
+        }
+
+        /// <summary>The set cursor by offset.</summary>
+        /// <param name="offset">The offset.</param>
+        /// <returns>The set cursor by offset.</returns>
+        public bool SetCursorByOffset(int offset)
+        {
+            if (offset >= 0)
+            {
+                txtEdit.ActiveTextAreaControl.Caret.Position = txtEdit.Document.OffsetToPosition(offset);
+                return true;
+            }
+
+            return false;
+        }
+
+        /// <summary>The basic editor_ form closing.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void BasicEditor_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            if (_isDirty)
+            {
+                DialogResult saveFile = _services.HostWindow.DisplayMessageBox(
+                    this,
+                    "Contents changed, do you want to save the file?\r\n" + TabText, "Save Changes?",
+                    MessageBoxButtons.YesNoCancel,
+                    MessageBoxIcon.Question,
+                    MessageBoxDefaultButton.Button1,
+                    0,
+                    null,
+                    null);
+
+                if (saveFile == DialogResult.Cancel)
+                {
+                    e.Cancel = true;
+                }
+                else if (saveFile == DialogResult.Yes)
+                {
+                    CommandManager.GetCommandInstance<SaveFileCommand>().Execute();
+                }
+            }
+        }
+
+        /// <summary>The basic editor_ load.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void BasicEditor_Load(object sender, EventArgs e)
+        {
+#if DEBUG
+            lblEditorInfo.Text = GetType().FullName;
+#else
+			panel1.Visible = false;
+#endif
+        }
+
+        /// <summary>The document document changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void DocumentDocumentChanged(object sender, DocumentEventArgs e)
+        {
+            IsDirty = true;
+        }
+
+        /// <summary>The get value.</summary>
+        /// <param name="name">The name.</param>
+        /// <returns>The get value.</returns>
+        private string GetValue(string name)
+        {
+            string val = Interaction.InputBox(string.Format("Value for '{0}'", name), "Supply a Value", name, -1, -1);
+            return val;
+        }
+
+        /// <summary>The set tab text by filename.</summary>
+        private void SetTabTextByFilename()
+        {
+            string dirty = string.Empty;
+            string text = "Untitled";
+            string tabtext;
+
+            if (_isDirty)
+            {
+                dirty = " *";
+            }
+
+            if (txtEdit.FileName != null)
+            {
+                text = FileName;
+                tabtext = Path.GetFileName(FileName);
+            }
+            else
+            {
+                text += _settings.GetUntitledDocumentCounter();
+                tabtext = text;
+            }
+
+            TabText = tabtext + dirty;
+            ToolTipText = text + dirty;
+        }
+    }
+}
\ No newline at end of file
Added +97 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/BasicEditor.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/BasicEditor.Designer.cs
new file mode 100644
index 0000000..6216032
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/BasicEditor.Designer.cs
@@ -0,0 +1,97 @@
+namespace MiniSqlQuery
+{
+	partial class BasicEditor
+	{
+		/// <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();
+			this.txtEdit = new ICSharpCode.TextEditor.TextEditorControl();
+			this.panel1 = new System.Windows.Forms.Panel();
+			this.lblEditorInfo = new System.Windows.Forms.Label();
+			this.formContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
+			this.panel1.SuspendLayout();
+			this.SuspendLayout();
+			// 
+			// txtEdit
+			// 
+			this.txtEdit.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.txtEdit.IsReadOnly = false;
+			this.txtEdit.Location = new System.Drawing.Point(0, 0);
+			this.txtEdit.Name = "txtEdit";
+			this.txtEdit.Size = new System.Drawing.Size(381, 325);
+			this.txtEdit.TabIndex = 0;
+			// 
+			// panel1
+			// 
+			this.panel1.Controls.Add(this.lblEditorInfo);
+			this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
+			this.panel1.Location = new System.Drawing.Point(0, 304);
+			this.panel1.Name = "panel1";
+			this.panel1.Size = new System.Drawing.Size(381, 21);
+			this.panel1.TabIndex = 1;
+			// 
+			// lblEditorInfo
+			// 
+			this.lblEditorInfo.AutoSize = true;
+			this.lblEditorInfo.Location = new System.Drawing.Point(3, 3);
+			this.lblEditorInfo.Name = "lblEditorInfo";
+			this.lblEditorInfo.Size = new System.Drawing.Size(62, 13);
+			this.lblEditorInfo.TabIndex = 0;
+			this.lblEditorInfo.Text = "lblEditorInfo";
+			// 
+			// formContextMenuStrip
+			// 
+			this.formContextMenuStrip.Name = "formContextMenuStrip";
+			this.formContextMenuStrip.Size = new System.Drawing.Size(153, 26);
+			// 
+			// BasicEditor
+			// 
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.ClientSize = new System.Drawing.Size(381, 325);
+			this.Controls.Add(this.panel1);
+			this.Controls.Add(this.txtEdit);
+			this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+			this.Name = "BasicEditor";
+			this.TabPageContextMenuStrip = this.formContextMenuStrip;
+			this.Text = "DefaultEditor";
+			this.Load += new System.EventHandler(this.BasicEditor_Load);
+			this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.BasicEditor_FormClosing);
+			this.panel1.ResumeLayout(false);
+			this.panel1.PerformLayout();
+			this.ResumeLayout(false);
+
+		}
+
+		#endregion
+
+		private ICSharpCode.TextEditor.TextEditorControl txtEdit;
+		private System.Windows.Forms.Panel panel1;
+		private System.Windows.Forms.Label lblEditorInfo;
+		private System.Windows.Forms.ContextMenuStrip formContextMenuStrip;
+	}
+}
\ No newline at end of file
Added +123 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/BasicEditor.resx b/minisqlquery-master/src/MiniSqlQuery/BasicEditor.resx
new file mode 100644
index 0000000..a4d9552
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/BasicEditor.resx
@@ -0,0 +1,123 @@
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="formContextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>
\ No newline at end of file
Added +263 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/BasicEditors.cs b/minisqlquery-master/src/MiniSqlQuery/BasicEditors.cs
new file mode 100644
index 0000000..89b0c0c
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/BasicEditors.cs
@@ -0,0 +1,263 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core;
+
+namespace MiniSqlQuery
+{
+    /// <summary>The basic aspx editor.</summary>
+    public class BasicAspxEditor : BasicEditor
+    {
+        /// <summary>Initializes a new instance of the <see cref="BasicAspxEditor"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public BasicAspxEditor(IApplicationServices services, IApplicationSettings settings) : base(services, settings)
+        {
+            SetSyntax("ASP/XHTML");
+        }
+
+        /// <summary>Gets FileFilter.</summary>
+        public override string FileFilter
+        {
+            get { return "ASPX Files (*.asp;*.aspx;*.asax;*.asmx)|*.asp;*.aspx;*.asax;*.asmx|All Files (*.*)|*.*"; }
+        }
+    }
+
+    /// <summary>The basic batch editor.</summary>
+    public class BasicBatchEditor : BasicEditor
+    {
+        /// <summary>Initializes a new instance of the <see cref="BasicBatchEditor"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public BasicBatchEditor(IApplicationServices services, IApplicationSettings settings) : base(services, settings)
+        {
+            SetSyntax("BAT");
+        }
+
+        /// <summary>Gets FileFilter.</summary>
+        public override string FileFilter
+        {
+            get { return "Batch Files (*.bat;*.cmd)|*.bat;*.cmd|All Files (*.*)|*.*"; }
+        }
+    }
+
+    /// <summary>The basic boo editor.</summary>
+    public class BasicBooEditor : BasicEditor
+    {
+        /// <summary>Initializes a new instance of the <see cref="BasicBooEditor"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public BasicBooEditor(IApplicationServices services, IApplicationSettings settings) : base(services, settings)
+        {
+            SetSyntax("Boo");
+        }
+
+        /// <summary>Gets FileFilter.</summary>
+        public override string FileFilter
+        {
+            get { return "BOO Files (*.boo)|*.boo|All Files (*.*)|*.*"; }
+        }
+    }
+
+    /// <summary>The basic coco editor.</summary>
+    public class BasicCocoEditor : BasicEditor
+    {
+        /// <summary>Initializes a new instance of the <see cref="BasicCocoEditor"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public BasicCocoEditor(IApplicationServices services, IApplicationSettings settings) : base(services, settings)
+        {
+            SetSyntax("Coco");
+        }
+
+        /// <summary>Gets FileFilter.</summary>
+        public override string FileFilter
+        {
+            get { return "Coco Files (*.atg)|*.atg|All Files (*.*)|*.*"; }
+        }
+    }
+
+    /// <summary>The basic c plus plus editor.</summary>
+    public class BasicCPlusPlusEditor : BasicEditor
+    {
+        /// <summary>Initializes a new instance of the <see cref="BasicCPlusPlusEditor"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public BasicCPlusPlusEditor(IApplicationServices services, IApplicationSettings settings) : base(services, settings)
+        {
+            SetSyntax("C++.NET");
+        }
+
+        /// <summary>Gets FileFilter.</summary>
+        public override string FileFilter
+        {
+            get { return "C++ Files (*.cpp;*.cc;*.c;*.h)|*.cpp;*.cc;*.c;*.h|All Files (*.*)|*.*"; }
+        }
+    }
+
+    /// <summary>The basic c sharp editor.</summary>
+    public class BasicCSharpEditor : BasicEditor
+    {
+        /// <summary>Initializes a new instance of the <see cref="BasicCSharpEditor"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public BasicCSharpEditor(IApplicationServices services, IApplicationSettings settings) : base(services, settings)
+        {
+            SetSyntax("C#");
+        }
+
+        /// <summary>Gets FileFilter.</summary>
+        public override string FileFilter
+        {
+            get { return "C# Files (*.cs)|*.cs|All Files (*.*)|*.*"; }
+        }
+    }
+
+    /// <summary>The basic html editor.</summary>
+    public class BasicHtmlEditor : BasicEditor
+    {
+        /// <summary>Initializes a new instance of the <see cref="BasicHtmlEditor"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public BasicHtmlEditor(IApplicationServices services, IApplicationSettings settings) : base(services, settings)
+        {
+            SetSyntax("HTML");
+        }
+
+        /// <summary>Gets FileFilter.</summary>
+        public override string FileFilter
+        {
+            get { return "HTML Files (*.htm*)|*.htm*|All Files (*.*)|*.*"; }
+        }
+    }
+
+    /// <summary>The basic java editor.</summary>
+    public class BasicJavaEditor : BasicEditor
+    {
+        /// <summary>Initializes a new instance of the <see cref="BasicJavaEditor"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public BasicJavaEditor(IApplicationServices services, IApplicationSettings settings) : base(services, settings)
+        {
+            SetSyntax("Java");
+        }
+
+        /// <summary>Gets FileFilter.</summary>
+        public override string FileFilter
+        {
+            get { return "Java Files (*.java)|*.java|All Files (*.*)|*.*"; }
+        }
+    }
+
+    /// <summary>The basic java script editor.</summary>
+    public class BasicJavaScriptEditor : BasicEditor
+    {
+        /// <summary>Initializes a new instance of the <see cref="BasicJavaScriptEditor"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public BasicJavaScriptEditor(IApplicationServices services, IApplicationSettings settings) : base(services, settings)
+        {
+            SetSyntax("JavaScript");
+        }
+
+        /// <summary>Gets FileFilter.</summary>
+        public override string FileFilter
+        {
+            get { return "JavaScript Files (*.js)|*.js|All Files (*.*)|*.*"; }
+        }
+    }
+
+    /// <summary>The basic patch editor.</summary>
+    public class BasicPatchEditor : BasicEditor
+    {
+        /// <summary>Initializes a new instance of the <see cref="BasicPatchEditor"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public BasicPatchEditor(IApplicationServices services, IApplicationSettings settings) : base(services, settings)
+        {
+            SetSyntax("Patch");
+        }
+
+        /// <summary>Gets FileFilter.</summary>
+        public override string FileFilter
+        {
+            get { return "Patch Files (*.patch;*.diff)|*.patch;*.diff|All Files (*.*)|*.*"; }
+        }
+    }
+
+    /// <summary>The basic php editor.</summary>
+    public class BasicPhpEditor : BasicEditor
+    {
+        /// <summary>Initializes a new instance of the <see cref="BasicPhpEditor"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public BasicPhpEditor(IApplicationServices services, IApplicationSettings settings) : base(services, settings)
+        {
+            SetSyntax("PHP");
+        }
+
+        /// <summary>Gets FileFilter.</summary>
+        public override string FileFilter
+        {
+            get { return "PHP Files (*.php*)|*.php*|All Files (*.*)|*.*"; }
+        }
+    }
+
+    /// <summary>The basic tex editor.</summary>
+    public class BasicTexEditor : BasicEditor
+    {
+        /// <summary>Initializes a new instance of the <see cref="BasicTexEditor"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public BasicTexEditor(IApplicationServices services, IApplicationSettings settings) : base(services, settings)
+        {
+            SetSyntax("TeX");
+        }
+
+        /// <summary>Gets FileFilter.</summary>
+        public override string FileFilter
+        {
+            get { return "TeX Files (*.tex)|*.tex|All Files (*.*)|*.*"; }
+        }
+    }
+
+    /// <summary>The basic vb net editor.</summary>
+    public class BasicVbNetEditor : BasicEditor
+    {
+        /// <summary>Initializes a new instance of the <see cref="BasicVbNetEditor"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public BasicVbNetEditor(IApplicationServices services, IApplicationSettings settings) : base(services, settings)
+        {
+            SetSyntax("VBNET");
+        }
+
+        /// <summary>Gets FileFilter.</summary>
+        public override string FileFilter
+        {
+            get { return "VB.NET Files (*.vb)|*.vb|All Files (*.*)|*.*"; }
+        }
+    }
+
+    /// <summary>The basic xml editor.</summary>
+    public class BasicXmlEditor : BasicEditor
+    {
+        /// <summary>Initializes a new instance of the <see cref="BasicXmlEditor"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public BasicXmlEditor(IApplicationServices services, IApplicationSettings settings) : base(services, settings)
+        {
+            SetSyntax("XML");
+        }
+
+        /// <summary>Gets FileFilter.</summary>
+        public override string FileFilter
+        {
+            get { return "XML Files (*.xml;*.resx)|*.xml;*.resx|All Files (*.*)|*.*"; }
+        }
+    }
+}
\ No newline at end of file
Added +75 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Commands/DuplicateLineCommand.cs b/minisqlquery-master/src/MiniSqlQuery/Commands/DuplicateLineCommand.cs
new file mode 100644
index 0000000..a71f955
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Commands/DuplicateLineCommand.cs
@@ -0,0 +1,75 @@
+#region License
+// Copyright 2005-2009 Paul Kohler (http://pksoftware.net/MiniSqlQuery/). All rights reserved.
+// This source code is made available under the terms of the Microsoft Public License (Ms-PL)
+// http://minisqlquery.codeplex.com/license
+#endregion
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.Commands
+{
+	/// <summary>
+	/// Whatever line the cursor is on this command will duplicate that line (its a resharper this that I use alot!)
+	/// </summary>
+	public class DuplicateLineCommand
+		: CommandBase
+	{
+		public DuplicateLineCommand()
+			: base("Duplicate Line")
+		{
+			ShortcutKeys = Keys.Control | Keys.D;
+			//todo SmallImage = ImageResource.?;
+		}
+
+		/// <summary>
+		/// Gets a value indicating whether this <see cref="ICommand"/> is enabled.
+		/// The window needs to implement the <see cref="IFindReplaceProvider"/> and 
+		/// support replacing text (<see cref="IFindReplaceProvider.CanReplaceText"/>).
+		/// </summary>
+		/// <value>
+		/// 	<c>true</c> if enabled; otherwise, <c>false</c>.
+		/// </value>
+		public override bool Enabled
+		{
+			get
+			{
+				IFindReplaceProvider findReplaceProvider = HostWindow.ActiveChildForm as IFindReplaceProvider;
+				if (findReplaceProvider == null || !findReplaceProvider.CanReplaceText)
+				{
+					return false;
+				}
+				return true;
+			}
+		}
+
+		/// <summary>
+		/// Finds the current line position and duplicates that line.
+		/// </summary>
+		public override void Execute()
+		{
+			IFindReplaceProvider findReplaceProvider = HostWindow.ActiveChildForm as IFindReplaceProvider;
+
+			if (findReplaceProvider == null || !findReplaceProvider.CanReplaceText)
+			{
+				return;
+			}
+
+			// todo!
+
+			int offset = findReplaceProvider.CursorOffset;
+			int originalLineStartOffset = 0;
+			int lineLength = 0;
+
+			string line = "?";
+			// find current text "line", back to start or \n and find next \n or eof
+
+			line = line + Environment.NewLine + line;
+
+			findReplaceProvider.ReplaceString(line, 0, 0);
+		}
+	}
+}
\ No newline at end of file
Added +42 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Commands/NewFileCommand.cs b/minisqlquery-master/src/MiniSqlQuery/Commands/NewFileCommand.cs
new file mode 100644
index 0000000..3fb143f
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Commands/NewFileCommand.cs
@@ -0,0 +1,42 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Commands
+{
+    /// <summary>The new file command.</summary>
+    public class NewFileCommand
+        : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="NewFileCommand"/> class.</summary>
+        public NewFileCommand()
+            : base("New &File")
+        {
+            ShortcutKeys = Keys.Control | Keys.Alt | Keys.N;
+            SmallImage = ImageResource.page;
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            NewFileForm newFileForm = Services.Resolve<NewFileForm>();
+
+            DialogResult result = newFileForm.ShowDialog();
+
+            if (result == DialogResult.OK)
+            {
+                var editor = Services.Resolve<IEditor>(newFileForm.FileEditorDescriptor.EditorKeyName);
+                editor.FileName = null;
+                HostWindow.DisplayDockedForm(editor as DockContent);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +49 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Commands/OpenFileCommand.cs b/minisqlquery-master/src/MiniSqlQuery/Commands/OpenFileCommand.cs
new file mode 100644
index 0000000..efe27ea
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Commands/OpenFileCommand.cs
@@ -0,0 +1,49 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Commands
+{
+    /// <summary>The open file command.</summary>
+    public class OpenFileCommand
+        : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="OpenFileCommand"/> class.</summary>
+        public OpenFileCommand()
+            : base("&Open File")
+        {
+            ShortcutKeys = Keys.Control | Keys.O;
+            SmallImage = ImageResource.folder_page;
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            OpenFileDialog openFileDialog = new OpenFileDialog();
+            openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
+            openFileDialog.Filter = Settings.DefaultFileFilter;
+            openFileDialog.CheckFileExists = true;
+            if (openFileDialog.ShowDialog(HostWindow.Instance) == DialogResult.OK)
+            {
+                // todo: check for file exist file in open windows;
+                IFileEditorResolver resolver = Services.Resolve<IFileEditorResolver>();
+                var fileName = openFileDialog.FileName;
+                IEditor editor = resolver.ResolveEditorInstance(fileName);
+                editor.FileName = fileName;
+                editor.LoadFile();
+                HostWindow.DisplayDockedForm(editor as DockContent);
+
+                Services.Resolve<IMostRecentFilesService>().Register(fileName);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +178 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Commands/OpenRecentFileCommand.cs b/minisqlquery-master/src/MiniSqlQuery/Commands/OpenRecentFileCommand.cs
new file mode 100644
index 0000000..85d5372
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Commands/OpenRecentFileCommand.cs
@@ -0,0 +1,178 @@
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Commands
+{
+    /// <summary>
+    /// 	Opens a recent file in a list by the <see cref = "Index" />.
+    /// 	Makes use of <see cref = "IMostRecentFilesService" /> to calculate the filename.
+    /// </summary>
+    public class OpenRecentFileCommand
+        : CommandBase
+    {
+        private readonly int _index;
+        private IMostRecentFilesService _mostRecentFilesService;
+
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "OpenRecentFileCommand" /> class.
+        /// </summary>
+        protected OpenRecentFileCommand(int index)
+            : base("MRU")
+        {
+            _index = index;
+        }
+
+        public OpenRecentFileCommand(IMostRecentFilesService mostRecentFilesService, int index)
+            : base("MRU")
+        {
+            _mostRecentFilesService = mostRecentFilesService;
+            _index = index;
+        }
+
+        public override bool Enabled
+        {
+            get
+            {
+                if (MostRecentFilesService.Filenames != null)
+                {
+                    return MostRecentFilesService.Filenames.Count >= Index;
+                }
+                return false;
+            }
+        }
+
+        public int Index
+        {
+            get { return _index; }
+        }
+
+        public IMostRecentFilesService MostRecentFilesService
+        {
+            get
+            {
+                if (_mostRecentFilesService == null)
+                {
+                    _mostRecentFilesService = Services.Resolve<IMostRecentFilesService>();
+                    _mostRecentFilesService.MostRecentFilesChanged += MostRecentFilesServiceFilesChanged;
+                }
+                return _mostRecentFilesService;
+            }
+        }
+
+        void MostRecentFilesServiceFilesChanged(object sender, MostRecentFilesChangedEventArgs e)
+        {
+            UpdateName();
+        }
+
+        public void UpdateName()
+        {
+            if (Enabled)
+            {
+                Name = string.Format("&{0} - {1}", Index, GetFilenameByIndex());
+            }
+        }
+
+        public override void Execute()
+        {
+            if (!Enabled)
+            {
+                return;
+            }
+
+            var fileEditorResolver = Services.Resolve<IFileEditorResolver>();
+            _mostRecentFilesService = Services.Resolve<IMostRecentFilesService>();
+            string fileName = GetFilenameByIndex();
+
+            var editor = fileEditorResolver.ResolveEditorInstance(fileName);
+            editor.FileName = fileName;
+            editor.LoadFile();
+            HostWindow.DisplayDockedForm(editor as DockContent);
+        }
+
+        private string GetFilenameByIndex()
+        {
+            return MostRecentFilesService.Filenames[Index - 1];
+        }
+    }
+
+    public class OpenRecentFile1Command : OpenRecentFileCommand
+    {
+        public OpenRecentFile1Command()
+            : base(1)
+        {
+        }
+    }
+
+    public class OpenRecentFile2Command : OpenRecentFileCommand
+    {
+        public OpenRecentFile2Command()
+            : base(2)
+        {
+        }
+    }
+
+    public class OpenRecentFile3Command : OpenRecentFileCommand
+    {
+        public OpenRecentFile3Command()
+            : base(3)
+        {
+        }
+    }
+
+    public class OpenRecentFile4Command : OpenRecentFileCommand
+    {
+        public OpenRecentFile4Command()
+            : base(4)
+        {
+        }
+    }
+
+    public class OpenRecentFile5Command : OpenRecentFileCommand
+    {
+        public OpenRecentFile5Command()
+            : base(5)
+        {
+        }
+    }
+
+    public class OpenRecentFile6Command : OpenRecentFileCommand
+    {
+        public OpenRecentFile6Command()
+            : base(6)
+        {
+        }
+    }
+
+    public class OpenRecentFile7Command : OpenRecentFileCommand
+    {
+        public OpenRecentFile7Command()
+            : base(7)
+        {
+        }
+    }
+
+    public class OpenRecentFile8Command : OpenRecentFileCommand
+    {
+        public OpenRecentFile8Command()
+            : base(8)
+        {
+        }
+    }
+
+    public class OpenRecentFile9Command : OpenRecentFileCommand
+    {
+        public OpenRecentFile9Command()
+            : base(9)
+        {
+        }
+    }
+
+    public class OpenRecentFile10Command : OpenRecentFileCommand
+    {
+        public OpenRecentFile10Command()
+            : base(10)
+        {
+        }
+    }
+}
\ No newline at end of file
Added +54 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Commands/SaveFileAsCommand.cs b/minisqlquery-master/src/MiniSqlQuery/Commands/SaveFileAsCommand.cs
new file mode 100644
index 0000000..a3e598e
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Commands/SaveFileAsCommand.cs
@@ -0,0 +1,54 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.Commands
+{
+    /// <summary>The save file as command.</summary>
+    public class SaveFileAsCommand
+        : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="SaveFileAsCommand"/> class.</summary>
+        public SaveFileAsCommand()
+            : base("Save File &As...")
+        {
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            IEditor editor = HostWindow.Instance.ActiveMdiChild as IEditor;
+            if (editor != null)
+            {
+                string oldFilename = editor.FileName;
+                SaveFileDialog saveFileDialog = new SaveFileDialog();
+                saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
+                saveFileDialog.Filter = editor.FileFilter;
+
+                if (saveFileDialog.ShowDialog(HostWindow.Instance) == DialogResult.OK)
+                {
+                    // what if this filename covers an existing open window?
+                    string newFilename = saveFileDialog.FileName;
+                    editor.FileName = newFilename;
+                    editor.SaveFile();
+
+                    // register the new file and remove old if applicable
+                    var mostRecentFilesService = Services.Resolve<IMostRecentFilesService>();
+                    mostRecentFilesService.Register(newFilename);
+                    if (oldFilename != null && oldFilename.Equals(newFilename, StringComparison.InvariantCultureIgnoreCase))
+                    {
+                        mostRecentFilesService.Remove(oldFilename);
+                    }
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
Added +58 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Commands/SaveFileCommand.cs b/minisqlquery-master/src/MiniSqlQuery/Commands/SaveFileCommand.cs
new file mode 100644
index 0000000..bd41f52
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Commands/SaveFileCommand.cs
@@ -0,0 +1,58 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.Commands
+{
+    /// <summary>The save file command.</summary>
+    public class SaveFileCommand
+        : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="SaveFileCommand"/> class.</summary>
+        public SaveFileCommand()
+            : base("&Save File")
+        {
+            ShortcutKeys = Keys.Control | Keys.S;
+            SmallImage = ImageResource.disk;
+        }
+
+        /// <summary>Gets a value indicating whether Enabled.</summary>
+        public override bool Enabled
+        {
+            get
+            {
+                IEditor editor = HostWindow.Instance.ActiveMdiChild as IEditor;
+                if (editor != null)
+                {
+                    return editor.IsDirty;
+                }
+
+                return false;
+            }
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            IEditor editor = HostWindow.Instance.ActiveMdiChild as IEditor;
+            if (editor != null)
+            {
+                if (editor.FileName == null)
+                {
+                    CommandManager.GetCommandInstance<SaveFileAsCommand>().Execute();
+                }
+                else
+                {
+                    editor.SaveFile();
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
Added +80 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Commands/SaveResultsAsDataSetCommand.cs b/minisqlquery-master/src/MiniSqlQuery/Commands/SaveResultsAsDataSetCommand.cs
new file mode 100644
index 0000000..cea455c
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Commands/SaveResultsAsDataSetCommand.cs
@@ -0,0 +1,80 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Data;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+using MiniSqlQuery.Core.Forms;
+
+namespace MiniSqlQuery.Commands
+{
+    /// <summary>The save results as data set command.</summary>
+    public class SaveResultsAsDataSetCommand
+        : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="SaveResultsAsDataSetCommand"/> class.</summary>
+        public SaveResultsAsDataSetCommand()
+            : base("Save Results as DataSet XML...")
+        {
+            SmallImage = ImageResource.table_save;
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            IQueryBatchProvider batchProvider = HostWindow.ActiveChildForm as IQueryBatchProvider;
+
+            if (batchProvider == null)
+            {
+                HostWindow.DisplaySimpleMessageBox(null, "No results to save as a 'DataSet'.", "Save Results as DataSet XML Error");
+            }
+            else
+            {
+                DataSet ds = null;
+
+                if (batchProvider.Batch != null)
+                {
+                    if (batchProvider.Batch.Queries.Count > 1)
+                    {
+                        BatchQuerySelectForm querySelectForm = Services.Resolve<BatchQuerySelectForm>();
+                        querySelectForm.Fill(batchProvider.Batch);
+                        querySelectForm.ShowDialog();
+                        if (querySelectForm.DialogResult == DialogResult.OK)
+                        {
+                            ds = querySelectForm.SelectedQuery.Result;
+                        }
+                    }
+                    else if (batchProvider.Batch.Queries.Count == 1)
+                    {
+                        ds = batchProvider.Batch.Queries[0].Result;
+                    }
+                }
+
+                if (ds == null)
+                {
+                    return;
+                }
+
+                using (SaveFileDialog saveFileDialog = new SaveFileDialog())
+                {
+                    saveFileDialog.Title = "Save Results as DataSet XML";
+                    saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
+                    saveFileDialog.Filter = Properties.Settings.Default.XmlFileDialogFilter;
+
+                    if (saveFileDialog.ShowDialog(HostWindow.Instance) == DialogResult.OK)
+                    {
+                        ds.WriteXml(saveFileDialog.FileName, XmlWriteMode.WriteSchema);
+                        string msg = string.Format("Saved results to file: '{0}'", saveFileDialog.FileName);
+                        HostWindow.SetStatus(HostWindow.ActiveChildForm, msg);
+                    }
+                }
+            }
+        }
+    }
+}
Added +32 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Commands/ShowAboutCommand.cs b/minisqlquery-master/src/MiniSqlQuery/Commands/ShowAboutCommand.cs
new file mode 100644
index 0000000..1b960eb
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Commands/ShowAboutCommand.cs
@@ -0,0 +1,32 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.Commands
+{
+    /// <summary>The show about command.</summary>
+    public class ShowAboutCommand
+        : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="ShowAboutCommand"/> class.</summary>
+        public ShowAboutCommand()
+            : base("&About...")
+        {
+            SmallImage = ImageResource.ApplicationIcon;
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            Form frm = Services.Resolve<AboutForm>();
+            frm.Show(HostWindow.Instance);
+        }
+    }
+}
\ No newline at end of file
Added +34 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Commands/ShowOptionsFormCommand.cs b/minisqlquery-master/src/MiniSqlQuery/Commands/ShowOptionsFormCommand.cs
new file mode 100644
index 0000000..5b1ce09
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Commands/ShowOptionsFormCommand.cs
@@ -0,0 +1,34 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.Commands
+{
+    /// <summary>The show options form command.</summary>
+    public class ShowOptionsFormCommand
+        : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="ShowOptionsFormCommand"/> class.</summary>
+        public ShowOptionsFormCommand()
+            : base("Options")
+        {
+            // ShortcutKeys = ?;
+            SmallImage = ImageResource.cog;
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            using (OptionsForm optionsForm = Services.Resolve<OptionsForm>())
+            {
+                optionsForm.ShowDialog(HostWindow.Instance);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +56 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/CopyForm.cs b/minisqlquery-master/src/MiniSqlQuery/CopyForm.cs
new file mode 100644
index 0000000..f698bb5
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/CopyForm.cs
@@ -0,0 +1,56 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Windows.Forms;
+
+namespace MiniSqlQuery
+{
+    /// <summary>The copy form.</summary>
+    public partial class CopyForm : Form
+    {
+        /// <summary>Initializes a new instance of the <see cref="CopyForm"/> class.</summary>
+        public CopyForm()
+        {
+            InitializeComponent();
+            rbTAB.Checked = true;
+        }
+
+        /// <summary>Gets Delimiter.</summary>
+        public string Delimiter
+        {
+            get
+            {
+                if (rbCSV.Checked) return ",";
+                if (rbTAB.Checked) return "\t";
+                return txtOther.Text;
+            }
+        }
+
+        /// <summary>Gets a value indicating whether IncludeHeaders.</summary>
+        public bool IncludeHeaders
+        {
+            get { return xbIncludeHeaders.Checked; }
+        }
+
+        /// <summary>The cancel button_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void cancelButton_Click(object sender, EventArgs e)
+        {
+            Close();
+        }
+
+        /// <summary>The ok button_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void okButton_Click(object sender, EventArgs e)
+        {
+            Close();
+        }
+    }
+}
\ No newline at end of file
Added +159 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/CopyForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/CopyForm.Designer.cs
new file mode 100644
index 0000000..0c308c0
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/CopyForm.Designer.cs
@@ -0,0 +1,159 @@
+namespace MiniSqlQuery {
+    partial class CopyForm {
+        /// <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.rbCSV = new System.Windows.Forms.RadioButton();
+            this.rbTAB = new System.Windows.Forms.RadioButton();
+            this.rbOther = new System.Windows.Forms.RadioButton();
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.txtOther = new System.Windows.Forms.TextBox();
+            this.xbIncludeHeaders = new System.Windows.Forms.CheckBox();
+            this.cancelButton = new System.Windows.Forms.Button();
+            this.okButton = new System.Windows.Forms.Button();
+            this.groupBox1.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // rbCSV
+            // 
+            this.rbCSV.AutoSize = true;
+            this.rbCSV.Location = new System.Drawing.Point(6, 19);
+            this.rbCSV.Name = "rbCSV";
+            this.rbCSV.Size = new System.Drawing.Size(60, 17);
+            this.rbCSV.TabIndex = 3;
+            this.rbCSV.TabStop = true;
+            this.rbCSV.Text = "Comma";
+            this.rbCSV.UseVisualStyleBackColor = true;
+            // 
+            // rbTAB
+            // 
+            this.rbTAB.AutoSize = true;
+            this.rbTAB.Checked = true;
+            this.rbTAB.Location = new System.Drawing.Point(6, 42);
+            this.rbTAB.Name = "rbTAB";
+            this.rbTAB.Size = new System.Drawing.Size(46, 17);
+            this.rbTAB.TabIndex = 4;
+            this.rbTAB.TabStop = true;
+            this.rbTAB.Text = "TAB";
+            this.rbTAB.UseVisualStyleBackColor = true;
+            // 
+            // rbOther
+            // 
+            this.rbOther.AutoSize = true;
+            this.rbOther.Location = new System.Drawing.Point(6, 65);
+            this.rbOther.Name = "rbOther";
+            this.rbOther.Size = new System.Drawing.Size(51, 17);
+            this.rbOther.TabIndex = 5;
+            this.rbOther.TabStop = true;
+            this.rbOther.Text = "Other";
+            this.rbOther.UseVisualStyleBackColor = true;
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Controls.Add(this.txtOther);
+            this.groupBox1.Controls.Add(this.rbCSV);
+            this.groupBox1.Controls.Add(this.rbOther);
+            this.groupBox1.Controls.Add(this.rbTAB);
+            this.groupBox1.Location = new System.Drawing.Point(12, 35);
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.Size = new System.Drawing.Size(142, 91);
+            this.groupBox1.TabIndex = 2;
+            this.groupBox1.TabStop = false;
+            this.groupBox1.Text = "Delimiter";
+            // 
+            // txtOther
+            // 
+            this.txtOther.Location = new System.Drawing.Point(63, 62);
+            this.txtOther.Name = "txtOther";
+            this.txtOther.Size = new System.Drawing.Size(59, 20);
+            this.txtOther.TabIndex = 6;
+            this.txtOther.Text = "|";
+            // 
+            // xbIncludeHeaders
+            // 
+            this.xbIncludeHeaders.AutoSize = true;
+            this.xbIncludeHeaders.Location = new System.Drawing.Point(12, 12);
+            this.xbIncludeHeaders.Name = "xbIncludeHeaders";
+            this.xbIncludeHeaders.Size = new System.Drawing.Size(142, 17);
+            this.xbIncludeHeaders.TabIndex = 1;
+            this.xbIncludeHeaders.Text = "Include Column Headers";
+            this.xbIncludeHeaders.UseVisualStyleBackColor = true;
+            // 
+            // cancelButton
+            // 
+            this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+            this.cancelButton.Location = new System.Drawing.Point(89, 143);
+            this.cancelButton.Name = "cancelButton";
+            this.cancelButton.Size = new System.Drawing.Size(65, 23);
+            this.cancelButton.TabIndex = 9;
+            this.cancelButton.Text = "&Cancel";
+            this.cancelButton.UseVisualStyleBackColor = true;
+            this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
+            // 
+            // okButton
+            // 
+            this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
+            this.okButton.Location = new System.Drawing.Point(12, 143);
+            this.okButton.Name = "okButton";
+            this.okButton.Size = new System.Drawing.Size(65, 23);
+            this.okButton.TabIndex = 8;
+            this.okButton.Text = "&OK";
+            this.okButton.Click += new System.EventHandler(this.okButton_Click);
+            // 
+            // CopyForm
+            // 
+            this.AcceptButton = this.okButton;
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(163, 174);
+            this.Controls.Add(this.okButton);
+            this.Controls.Add(this.cancelButton);
+            this.Controls.Add(this.xbIncludeHeaders);
+            this.Controls.Add(this.groupBox1);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.Name = "CopyForm";
+            this.ShowIcon = false;
+            this.ShowInTaskbar = false;
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "Copy";
+            this.groupBox1.ResumeLayout(false);
+            this.groupBox1.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.RadioButton rbCSV;
+        private System.Windows.Forms.RadioButton rbTAB;
+        private System.Windows.Forms.RadioButton rbOther;
+        private System.Windows.Forms.GroupBox groupBox1;
+        private System.Windows.Forms.TextBox txtOther;
+        private System.Windows.Forms.CheckBox xbIncludeHeaders;
+        private System.Windows.Forms.Button cancelButton;
+        private System.Windows.Forms.Button okButton;
+    }
+}
Added +120 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/CopyForm.resx b/minisqlquery-master/src/MiniSqlQuery/CopyForm.resx
new file mode 100644
index 0000000..194da1e
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/CopyForm.resx
@@ -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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Added +37 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/ErrorForm.cs b/minisqlquery-master/src/MiniSqlQuery/ErrorForm.cs
new file mode 100644
index 0000000..efd1f23
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/ErrorForm.cs
@@ -0,0 +1,37 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Windows.Forms;
+
+namespace MiniSqlQuery
+{
+    /// <summary>The error form.</summary>
+    public partial class ErrorForm : Form
+    {
+        /// <summary>Initializes a new instance of the <see cref="ErrorForm"/> class.</summary>
+        public ErrorForm()
+        {
+            InitializeComponent();
+        }
+
+        /// <summary>The set exception.</summary>
+        /// <param name="exp">The exp.</param>
+        public void SetException(Exception exp)
+        {
+            exceptionControl1.SetException(exp);
+        }
+
+        /// <summary>The btn ok_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void btnOk_Click(object sender, EventArgs e)
+        {
+            Close();
+        }
+    }
+}
\ No newline at end of file
Added +92 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/ErrorForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/ErrorForm.Designer.cs
new file mode 100644
index 0000000..a381647
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/ErrorForm.Designer.cs
@@ -0,0 +1,92 @@
+namespace MiniSqlQuery
+{
+	partial class ErrorForm
+	{
+		/// <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.groupBox1 = new System.Windows.Forms.GroupBox();
+			this.exceptionControl1 = new MiniSqlQuery.Core.Controls.ExceptionControl();
+			this.btnOk = new System.Windows.Forms.Button();
+			this.groupBox1.SuspendLayout();
+			this.SuspendLayout();
+			// 
+			// groupBox1
+			// 
+			this.groupBox1.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.groupBox1.Controls.Add(this.exceptionControl1);
+			this.groupBox1.Location = new System.Drawing.Point(12, 12);
+			this.groupBox1.Name = "groupBox1";
+			this.groupBox1.Padding = new System.Windows.Forms.Padding(6);
+			this.groupBox1.Size = new System.Drawing.Size(632, 337);
+			this.groupBox1.TabIndex = 0;
+			this.groupBox1.TabStop = false;
+			this.groupBox1.Text = "Error Details";
+			// 
+			// exceptionControl1
+			// 
+			this.exceptionControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.exceptionControl1.Location = new System.Drawing.Point(6, 19);
+			this.exceptionControl1.Name = "exceptionControl1";
+			this.exceptionControl1.Size = new System.Drawing.Size(620, 312);
+			this.exceptionControl1.TabIndex = 0;
+			// 
+			// 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(566, 355);
+			this.btnOk.Name = "btnOk";
+			this.btnOk.Size = new System.Drawing.Size(75, 23);
+			this.btnOk.TabIndex = 1;
+			this.btnOk.Text = "OK";
+			this.btnOk.UseVisualStyleBackColor = true;
+			this.btnOk.Click += new System.EventHandler(this.btnOk_Click);
+			// 
+			// ErrorForm
+			// 
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.ClientSize = new System.Drawing.Size(656, 390);
+			this.Controls.Add(this.btnOk);
+			this.Controls.Add(this.groupBox1);
+			this.Name = "ErrorForm";
+			this.ShowIcon = false;
+			this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+			this.Text = "Unhandled Exception";
+			this.groupBox1.ResumeLayout(false);
+			this.ResumeLayout(false);
+
+		}
+
+		#endregion
+
+		private System.Windows.Forms.GroupBox groupBox1;
+		private global::MiniSqlQuery.Core.Controls.ExceptionControl exceptionControl1;
+		private System.Windows.Forms.Button btnOk;
+	}
+}
\ No newline at end of file
Added +120 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/ErrorForm.resx b/minisqlquery-master/src/MiniSqlQuery/ErrorForm.resx
new file mode 100644
index 0000000..19dc0dd
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/ErrorForm.resx
@@ -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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/accept.png b/minisqlquery-master/src/MiniSqlQuery/Images/accept.png
new file mode 100644
index 0000000..89c8129
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/accept.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/cancel.png b/minisqlquery-master/src/MiniSqlQuery/Images/cancel.png
new file mode 100644
index 0000000..c149c2b
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/cancel.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/cog.png b/minisqlquery-master/src/MiniSqlQuery/Images/cog.png
new file mode 100644
index 0000000..67de2c6
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/cog.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/cross.png b/minisqlquery-master/src/MiniSqlQuery/Images/cross.png
new file mode 100644
index 0000000..1514d51
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/cross.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/database.png b/minisqlquery-master/src/MiniSqlQuery/Images/database.png
new file mode 100644
index 0000000..3d09261
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/database.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/database_add.png b/minisqlquery-master/src/MiniSqlQuery/Images/database_add.png
new file mode 100644
index 0000000..802bd6c
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/database_add.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/database_delete.png b/minisqlquery-master/src/MiniSqlQuery/Images/database_delete.png
new file mode 100644
index 0000000..cce652e
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/database_delete.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/database_edit.png b/minisqlquery-master/src/MiniSqlQuery/Images/database_edit.png
new file mode 100644
index 0000000..e501b66
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/database_edit.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/database_error.png b/minisqlquery-master/src/MiniSqlQuery/Images/database_error.png
new file mode 100644
index 0000000..578221a
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/database_error.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/database_refresh.png b/minisqlquery-master/src/MiniSqlQuery/Images/database_refresh.png
new file mode 100644
index 0000000..ff803be
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/database_refresh.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/disk.png b/minisqlquery-master/src/MiniSqlQuery/Images/disk.png
new file mode 100644
index 0000000..99d532e
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/disk.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/disk_multiple.png b/minisqlquery-master/src/MiniSqlQuery/Images/disk_multiple.png
new file mode 100644
index 0000000..fc5a52f
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/disk_multiple.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/email.png b/minisqlquery-master/src/MiniSqlQuery/Images/email.png
new file mode 100644
index 0000000..7348aed
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/email.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/email_go.png b/minisqlquery-master/src/MiniSqlQuery/Images/email_go.png
new file mode 100644
index 0000000..4a6c5d3
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/email_go.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/folder_page.png b/minisqlquery-master/src/MiniSqlQuery/Images/folder_page.png
new file mode 100644
index 0000000..1ef6e11
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/folder_page.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/lightning.png b/minisqlquery-master/src/MiniSqlQuery/Images/lightning.png
new file mode 100644
index 0000000..9680afd
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/lightning.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/page.png b/minisqlquery-master/src/MiniSqlQuery/Images/page.png
new file mode 100644
index 0000000..03ddd79
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/page.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/page_white.png b/minisqlquery-master/src/MiniSqlQuery/Images/page_white.png
new file mode 100644
index 0000000..8b8b1ca
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/page_white.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/plugin.png b/minisqlquery-master/src/MiniSqlQuery/Images/plugin.png
new file mode 100644
index 0000000..6187b15
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/plugin.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/plugin_go.png b/minisqlquery-master/src/MiniSqlQuery/Images/plugin_go.png
new file mode 100644
index 0000000..41da991
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/plugin_go.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/plugin_link.png b/minisqlquery-master/src/MiniSqlQuery/Images/plugin_link.png
new file mode 100644
index 0000000..445c188
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/plugin_link.png differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Images/table_save.png b/minisqlquery-master/src/MiniSqlQuery/Images/table_save.png
new file mode 100644
index 0000000..25b74d1
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/Images/table_save.png differ
Added +165 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/License-MiniSqlQuery.txt b/minisqlquery-master/src/MiniSqlQuery/License-MiniSqlQuery.txt
new file mode 100644
index 0000000..787a5f6
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/License-MiniSqlQuery.txt
@@ -0,0 +1,165 @@
+                   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+					   
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions.
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version.
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
\ No newline at end of file
Added +518 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/MainForm.cs b/minisqlquery-master/src/MiniSqlQuery/MainForm.cs
new file mode 100644
index 0000000..835ee33
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/MainForm.cs
@@ -0,0 +1,518 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+using MiniSqlQuery.Properties;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery
+{
+    /// <summary>The main form.</summary>
+    public partial class MainForm : Form, IHostWindow
+    {
+        /// <summary>The _services.</summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>The _settings.</summary>
+        private readonly IApplicationSettings _settings;
+
+        /// <summary>The _arguements.</summary>
+        private string[] _arguements;
+
+        /// <summary>The _db inspector.</summary>
+        private IDatabaseInspector _dbInspector;
+
+        /// <summary>The _initialized.</summary>
+        private bool _initialized;
+
+        /// <summary>Initializes a new instance of the <see cref="MainForm"/> class.</summary>
+        public MainForm()
+        {
+            InitializeComponent();
+            SetPointerState(Cursors.AppStarting);
+        }
+
+        /// <summary>Initializes a new instance of the <see cref="MainForm"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public MainForm(IApplicationServices services, IApplicationSettings settings)
+            : this()
+        {
+            _services = services;
+            _settings = settings;
+
+            AllowDrop = true;
+            DragEnter += WindowDragEnter;
+            DragDrop += WindowDragDrop;
+        }
+
+        /// <summary>Gets or sets ActiveChildForm.</summary>
+        public Form ActiveChildForm { get; internal set; }
+
+        /// <summary>Gets DatabaseInspector.</summary>
+        public IDatabaseInspector DatabaseInspector
+        {
+            get
+            {
+                if (_dbInspector == null || ((Form)_dbInspector).IsDisposed)
+                {
+                    return null;
+                }
+
+                return _dbInspector;
+            }
+        }
+
+        /// <summary>Gets Instance.</summary>
+        public Form Instance
+        {
+            get { return this; }
+        }
+
+        /// <summary>Gets ToolStrip.</summary>
+        [DebuggerNonUserCode]
+        public ToolStrip ToolStrip
+        {
+            get { return toolStripConnection; }
+        }
+
+
+        /// <summary>The add plugin command.</summary>
+        /// <typeparam name="TCommand"></typeparam>
+        public void AddPluginCommand<TCommand>() where TCommand : ICommand, new()
+        {
+            pluginsMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<TCommand>());
+        }
+
+        /// <summary>The add tool strip command.</summary>
+        /// <param name="index">The index.</param>
+        /// <typeparam name="TCommand"></typeparam>
+        public void AddToolStripCommand<TCommand>(int? index) where TCommand : ICommand, new()
+        {
+            ToolStripButton item = CommandControlBuilder.CreateToolStripButton<TCommand>();
+            if (index == null)
+            {
+                toolStripConnection.Items.Add(item);
+            }
+            else
+            {
+                toolStripConnection.Items.Insert(index.Value, item);
+            }
+        }
+
+        /// <summary>The add tool strip seperator.</summary>
+        /// <param name="index">The index.</param>
+        public void AddToolStripSeperator(int? index)
+        {
+            ToolStripSeparator item = CommandControlBuilder.CreateToolStripMenuItemSeparator();
+            if (index == null)
+            {
+                toolStripConnection.Items.Add(item);
+            }
+            else
+            {
+                toolStripConnection.Items.Insert(index.Value, item);
+            }
+        }
+
+        /// <summary>The display docked form.</summary>
+        /// <param name="frm">The frm.</param>
+        public void DisplayDockedForm(DockContent frm)
+        {
+            if (frm != null)
+            {
+                frm.Show(dockPanel, DockState.Document);
+            }
+        }
+
+        /// <summary>The display message box.</summary>
+        /// <param name="source">The source.</param>
+        /// <param name="text">The text.</param>
+        /// <param name="caption">The caption.</param>
+        /// <param name="buttons">The buttons.</param>
+        /// <param name="icon">The icon.</param>
+        /// <param name="defaultButton">The default button.</param>
+        /// <param name="options">The options.</param>
+        /// <param name="helpFilePath">The help file path.</param>
+        /// <param name="keyword">The keyword.</param>
+        /// <returns></returns>
+        public DialogResult DisplayMessageBox(
+            Form source, string text, string caption, MessageBoxButtons buttons,
+            MessageBoxIcon icon, MessageBoxDefaultButton defaultButton,
+            MessageBoxOptions options, string helpFilePath, string keyword)
+        {
+            if (helpFilePath == null && keyword == null)
+            {
+                return MessageBox.Show(source, text, caption, buttons, icon, defaultButton, options);
+            }
+
+            return MessageBox.Show(source, text, caption, buttons, icon, defaultButton, options, helpFilePath, keyword);
+        }
+
+        /// <summary>The display simple message box.</summary>
+        /// <param name="source">The source.</param>
+        /// <param name="text">The text.</param>
+        /// <param name="caption">The caption.</param>
+        /// <returns></returns>
+        public DialogResult DisplaySimpleMessageBox(Form source, string text, string caption)
+        {
+            return MessageBox.Show(source, text, caption);
+        }
+
+        /// <summary>The get menu item.</summary>
+        /// <param name="name">The name.</param>
+        /// <returns></returns>
+        public ToolStripMenuItem GetMenuItem(string name)
+        {
+            ToolStripMenuItem menuItem = null;
+
+            foreach (ToolStripMenuItem item in MainMenuStrip.Items)
+            {
+                if (item.Text.Replace("&", string.Empty).ToLower() == name.ToLower())
+                {
+                    menuItem = item;
+                    break;
+                }
+            }
+
+            return menuItem;
+        }
+
+        /// <summary>The set arguments.</summary>
+        /// <param name="args">The args.</param>
+        public void SetArguments(string[] args)
+        {
+            _arguements = args;
+        }
+
+        /// <summary>The set pointer state.</summary>
+        /// <param name="cursor">The cursor.</param>
+        public void SetPointerState(Cursor cursor)
+        {
+            Cursor = cursor;
+            Application.DoEvents();
+        }
+
+        /// <summary>The set status.</summary>
+        /// <param name="source">The source.</param>
+        /// <param name="text">The text.</param>
+        public void SetStatus(Form source, string text)
+        {
+            if (source == null || ActiveMdiChild == source)
+            {
+                if (text != null)
+                {
+                    text = text.Replace("\r", string.Empty).Replace("\n", "  ");
+                }
+
+                toolStripStatusLabel.Text = text;
+            }
+        }
+
+        public void SetResultCount(Form source, int? count)
+        {
+            if (source == null || ActiveMdiChild == source)
+            {
+                string result = string.Empty;
+
+                if (count != null)
+                {
+                    if (count.Value == 1)
+                    {
+                        result = "1 row";
+                    }
+                    else
+                    {
+                        result = count.Value + " rows";
+                    }
+                }
+
+                toolStripStatusLabelResultCount.Text = result;
+            }
+        }
+
+        /// <summary>The show database inspector.</summary>
+        /// <param name="databaseInspector">The database inspector.</param>
+        /// <param name="dockState">The dock state.</param>
+        /// <exception cref="InvalidOperationException"></exception>
+        public void ShowDatabaseInspector(IDatabaseInspector databaseInspector, DockState dockState)
+        {
+            if (_dbInspector != null && _dbInspector != databaseInspector)
+            {
+                _dbInspector.Close();
+            }
+
+            _dbInspector = databaseInspector;
+            DockContent frm = _dbInspector as DockContent;
+            if (frm == null)
+            {
+                throw new InvalidOperationException(
+                    "The 'databaseInspector' must be a 'WeifenLuo.WinFormsUI.Docking.DockContent' based form.");
+            }
+
+            frm.Show(dockPanel, dockState);
+        }
+
+        /// <summary>The show tool window.</summary>
+        /// <param name="form">The form.</param>
+        /// <param name="dockState">The dock state.</param>
+        public void ShowToolWindow(DockContent form, DockState dockState)
+        {
+            form.Show(dockPanel, dockState);
+        }
+
+        /// <summary>The app settings connection definitions changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void AppSettingsConnectionDefinitionsChanged(object sender, EventArgs e)
+        {
+            LoadUpConnections();
+        }
+
+        /// <summary>The load up connections.</summary>
+        private void LoadUpConnections()
+        {
+            DbConnectionDefinitionList definitionList = _settings.GetConnectionDefinitions();
+
+            if (_initialized) // if initialized, just sync the lists
+            {
+                // add missing
+                foreach (var connDef in definitionList.Definitions)
+                {
+                    if (!toolStripComboBoxConnection.Items.Contains(connDef))
+                    {
+                        toolStripComboBoxConnection.Items.Add(connDef);
+                    }
+                }
+
+                // remove if missing
+                var defList = new List<DbConnectionDefinition>(definitionList.Definitions);
+                for (int i = toolStripComboBoxConnection.Items.Count - 1; i >= 0; i--)
+                {
+                    var connDef = (DbConnectionDefinition)toolStripComboBoxConnection.Items[i];
+                    if (!defList.Contains(connDef))
+                    {
+                        toolStripComboBoxConnection.Items.RemoveAt(i);
+                    }
+                }
+            }
+            else
+            {
+                // first populate
+                toolStripComboBoxConnection.Items.Clear();
+                foreach (var connDef in definitionList.Definitions)
+                {
+                    toolStripComboBoxConnection.Items.Add(connDef);
+                }
+            }
+
+            // Bug fix - don't automatically refresh as it can try to reconnect to a connection you don't have etc.
+            //foreach (var connDef in definitionList.Definitions)
+            //{
+            //    if (connDef.Name == Settings.Default.NammedConnection)
+            //    {
+            //        toolStripComboBoxConnection.SelectedItem = connDef;
+            //        _settings.ConnectionDefinition = connDef;
+            //        SetWindowTitle(connDef.Name);
+            //    }
+            //}
+        }
+
+        /// <summary>The main form_ form closing.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            if (e.Cancel)
+            {
+                return;
+            }
+
+            if (_settings.ConnectionDefinition != null)
+            {
+                Settings.Default.NammedConnection = _settings.ConnectionDefinition.Name;
+                Settings.Default.Save();
+            }
+
+            List<IPlugIn> plugins = new List<IPlugIn>(_services.Plugins.Values);
+            plugins.Reverse();
+            foreach (IPlugIn plugin in plugins)
+            {
+                plugin.UnloadPlugIn();
+            }
+
+            _services.Container.Dispose();
+        }
+
+        /// <summary>The main form_ load.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void MainForm_Load(object sender, EventArgs e)
+        {
+            _settings.ConnectionDefinitionsChanged += AppSettingsConnectionDefinitionsChanged;
+            toolStripStatusLabelResultCount.Text = string.Empty;
+
+            Utility.CreateConnectionStringsIfRequired();
+            _settings.SetConnectionDefinitions(Utility.LoadDbConnectionDefinitions());
+        }
+
+        /// <summary>The main form_ mdi child activate.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void MainForm_MdiChildActivate(object sender, EventArgs e)
+        {
+            ActiveChildForm = ActiveMdiChild;
+        }
+
+        /// <summary>The main form_ shown.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void MainForm_Shown(object sender, EventArgs e)
+        {
+            _services.InitializePlugIns();
+            DockContent dbInspectorForm = _dbInspector as DockContent;
+
+            if (dbInspectorForm != null)
+            {
+                // the activate for "DockContent" is different to that of "Form".
+                dbInspectorForm.Activate();
+            }
+
+            _initialized = true;
+            SetPointerState(Cursors.Default);
+            SetStatus(null, string.Empty);
+
+            // now check for command line args that are "command type names"
+            if (_arguements != null && _arguements.Length > 0)
+            {
+                foreach (string arg in _arguements)
+                {
+                    if (arg.StartsWith("/cmd:"))
+                    {
+                        string cmdName = arg.Substring(5);
+                        ICommand cmd = CommandManager.GetCommandInstanceByPartialName(cmdName);
+                        if (cmd != null)
+                        {
+                            cmd.Execute();
+                        }
+                    }
+                }
+            }
+            else
+            {
+                CommandManager.GetCommandInstance<NewQueryFormCommand>().Execute();
+            }
+        }
+
+        /// <summary>The set window title.</summary>
+        /// <param name="connectionName">The connection name.</param>
+        private void SetWindowTitle(string connectionName)
+        {
+            Text = string.Format("Mini SQL Query [{0}]", connectionName);
+        }
+
+        /// <summary>The window drag drop.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void WindowDragDrop(object sender, DragEventArgs e)
+        {
+            if (e.Data.GetDataPresent(DataFormats.FileDrop))
+            {
+                string[] filePaths = (string[])e.Data.GetData(DataFormats.FileDrop);
+                IFileEditorResolver resolver = _services.Resolve<IFileEditorResolver>();
+                foreach (string filename in filePaths)
+                {
+                    // todo: check for file exist file in open windows;
+                    IEditor editor = resolver.ResolveEditorInstance(filename);
+                    editor.FileName = filename;
+                    editor.LoadFile();
+                    DisplayDockedForm(editor as DockContent);
+                }
+            }
+        }
+
+        /// <summary>The window drag enter.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void WindowDragEnter(object sender, DragEventArgs e)
+        {
+            if (e.Data.GetDataPresent(DataFormats.FileDrop))
+            {
+                e.Effect = DragDropEffects.Copy;
+            }
+            else
+            {
+                e.Effect = DragDropEffects.None;
+            }
+        }
+
+        /// <summary>The exit tool strip menu item_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            CommandManager.GetCommandInstance<ExitApplicationCommand>().Execute();
+        }
+
+        /// <summary>The hide show tool strip menu item_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void hideShowToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            if (WindowState == FormWindowState.Normal)
+            {
+                Hide();
+                WindowState = FormWindowState.Minimized;
+            }
+            else
+            {
+                Show();
+                WindowState = FormWindowState.Normal;
+            }
+        }
+
+        /// <summary>The sys icon_ double click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void sysIcon_DoubleClick(object sender, EventArgs e)
+        {
+            if (WindowState == FormWindowState.Normal)
+            {
+                Hide();
+                WindowState = FormWindowState.Minimized;
+            }
+            else
+            {
+                Show();
+                WindowState = FormWindowState.Normal;
+            }
+        }
+
+        /// <summary>The tool strip combo box connection_ selected index changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void toolStripComboBoxConnection_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            if (_initialized)
+            {
+                DbConnectionDefinition dbConnectionDefinition = (DbConnectionDefinition)toolStripComboBoxConnection.SelectedItem;
+                _settings.ConnectionDefinition = dbConnectionDefinition;
+                SetWindowTitle(dbConnectionDefinition.Name);
+            }
+        }
+
+        private void dockPanel_ActiveContentChanged(object sender, EventArgs e)
+        {
+
+        }
+    }
+}
\ No newline at end of file
Added +452 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/MainForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/MainForm.Designer.cs
new file mode 100644
index 0000000..f86f65d
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/MainForm.Designer.cs
@@ -0,0 +1,452 @@
+namespace MiniSqlQuery
+{
+	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));
+			WeifenLuo.WinFormsUI.Docking.DockPanelSkin dockPanelSkin2 = new WeifenLuo.WinFormsUI.Docking.DockPanelSkin();
+			WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin autoHideStripSkin2 = new WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin();
+			WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient4 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
+			WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient8 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+			WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin dockPaneStripSkin2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin();
+			WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient dockPaneStripGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient();
+			WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient9 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+			WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient5 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
+			WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient10 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+			WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient dockPaneStripToolWindowGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient();
+			WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient11 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+			WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient12 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+			WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient6 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
+			WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient13 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+			WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient14 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+			this.menuStrip = new System.Windows.Forms.MenuStrip();
+			this.fileMenu = new System.Windows.Forms.ToolStripMenuItem();
+			this.editMenu = new System.Windows.Forms.ToolStripMenuItem();
+			this.queryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+			this.toolsMenu = new System.Windows.Forms.ToolStripMenuItem();
+			this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+			this.pluginsMenu = new System.Windows.Forms.ToolStripMenuItem();
+			this.helpMenu = new System.Windows.Forms.ToolStripMenuItem();
+			this.toolBarToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+			this.statusBarToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+			this.toolStrip = new System.Windows.Forms.ToolStrip();
+			this.newToolStripButton = new System.Windows.Forms.ToolStripButton();
+			this.openToolStripButton = new System.Windows.Forms.ToolStripButton();
+			this.saveToolStripButton = new System.Windows.Forms.ToolStripButton();
+			this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+			this.helpToolStripButton = new System.Windows.Forms.ToolStripButton();
+			this.statusStrip = new System.Windows.Forms.StatusStrip();
+			this.toolStripStatusLabel = new System.Windows.Forms.ToolStripStatusLabel();
+			this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+			this.toolStripConnection = new System.Windows.Forms.ToolStrip();
+			this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel();
+			this.toolStripComboBoxConnection = new System.Windows.Forms.ToolStripComboBox();
+			this.dockPanel = new WeifenLuo.WinFormsUI.Docking.DockPanel();
+			this.sysIcon = new System.Windows.Forms.NotifyIcon(this.components);
+			this.ctxSysIcon = new System.Windows.Forms.ContextMenuStrip(this.components);
+			this.hideShowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+			this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
+			this.optionsToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+			this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+			this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+			this.toolStripStatusLabelResultCount = new System.Windows.Forms.ToolStripStatusLabel();
+			this.menuStrip.SuspendLayout();
+			this.toolStrip.SuspendLayout();
+			this.statusStrip.SuspendLayout();
+			this.toolStripConnection.SuspendLayout();
+			this.ctxSysIcon.SuspendLayout();
+			this.SuspendLayout();
+			// 
+			// menuStrip
+			// 
+			this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.fileMenu,
+            this.editMenu,
+            this.queryToolStripMenuItem,
+            this.toolsMenu,
+            this.pluginsMenu,
+            this.helpMenu});
+			this.menuStrip.Location = new System.Drawing.Point(0, 0);
+			this.menuStrip.Name = "menuStrip";
+			this.menuStrip.Size = new System.Drawing.Size(1066, 24);
+			this.menuStrip.TabIndex = 0;
+			this.menuStrip.Text = "MenuStrip";
+			// 
+			// fileMenu
+			// 
+			this.fileMenu.ImageTransparentColor = System.Drawing.SystemColors.ActiveBorder;
+			this.fileMenu.Name = "fileMenu";
+			this.fileMenu.Size = new System.Drawing.Size(37, 20);
+			this.fileMenu.Text = "&File";
+			// 
+			// editMenu
+			// 
+			this.editMenu.Name = "editMenu";
+			this.editMenu.Size = new System.Drawing.Size(39, 20);
+			this.editMenu.Text = "&Edit";
+			// 
+			// queryToolStripMenuItem
+			// 
+			this.queryToolStripMenuItem.Name = "queryToolStripMenuItem";
+			this.queryToolStripMenuItem.Size = new System.Drawing.Size(51, 20);
+			this.queryToolStripMenuItem.Text = "&Query";
+			// 
+			// toolsMenu
+			// 
+			this.toolsMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.optionsToolStripMenuItem});
+			this.toolsMenu.Name = "toolsMenu";
+			this.toolsMenu.Size = new System.Drawing.Size(48, 20);
+			this.toolsMenu.Text = "&Tools";
+			this.toolsMenu.Visible = false;
+			// 
+			// optionsToolStripMenuItem
+			// 
+			this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
+			this.optionsToolStripMenuItem.Size = new System.Drawing.Size(116, 22);
+			this.optionsToolStripMenuItem.Text = "&Options";
+			// 
+			// pluginsMenu
+			// 
+			this.pluginsMenu.Name = "pluginsMenu";
+			this.pluginsMenu.Size = new System.Drawing.Size(58, 20);
+			this.pluginsMenu.Text = "&Plugins";
+			// 
+			// helpMenu
+			// 
+			this.helpMenu.Name = "helpMenu";
+			this.helpMenu.Size = new System.Drawing.Size(44, 20);
+			this.helpMenu.Text = "&Help";
+			// 
+			// toolBarToolStripMenuItem
+			// 
+			this.toolBarToolStripMenuItem.CheckOnClick = true;
+			this.toolBarToolStripMenuItem.Enabled = false;
+			this.toolBarToolStripMenuItem.Name = "toolBarToolStripMenuItem";
+			this.toolBarToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+			this.toolBarToolStripMenuItem.Text = "&Toolbar";
+			// 
+			// statusBarToolStripMenuItem
+			// 
+			this.statusBarToolStripMenuItem.Checked = true;
+			this.statusBarToolStripMenuItem.CheckOnClick = true;
+			this.statusBarToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
+			this.statusBarToolStripMenuItem.Name = "statusBarToolStripMenuItem";
+			this.statusBarToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+			this.statusBarToolStripMenuItem.Text = "&Status Bar";
+			// 
+			// toolStrip
+			// 
+			this.toolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
+			this.toolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.newToolStripButton,
+            this.openToolStripButton,
+            this.saveToolStripButton,
+            this.toolStripSeparator2,
+            this.helpToolStripButton});
+			this.toolStrip.Location = new System.Drawing.Point(0, 24);
+			this.toolStrip.Name = "toolStrip";
+			this.toolStrip.Size = new System.Drawing.Size(842, 25);
+			this.toolStrip.TabIndex = 1;
+			this.toolStrip.Text = "ToolStrip";
+			this.toolStrip.Visible = false;
+			// 
+			// newToolStripButton
+			// 
+			this.newToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.newToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("newToolStripButton.Image")));
+			this.newToolStripButton.ImageTransparentColor = System.Drawing.Color.Black;
+			this.newToolStripButton.Name = "newToolStripButton";
+			this.newToolStripButton.Size = new System.Drawing.Size(23, 22);
+			this.newToolStripButton.Text = "New";
+			// 
+			// openToolStripButton
+			// 
+			this.openToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.openToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("openToolStripButton.Image")));
+			this.openToolStripButton.ImageTransparentColor = System.Drawing.Color.Black;
+			this.openToolStripButton.Name = "openToolStripButton";
+			this.openToolStripButton.Size = new System.Drawing.Size(23, 22);
+			this.openToolStripButton.Text = "Open";
+			// 
+			// saveToolStripButton
+			// 
+			this.saveToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.saveToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripButton.Image")));
+			this.saveToolStripButton.ImageTransparentColor = System.Drawing.Color.Black;
+			this.saveToolStripButton.Name = "saveToolStripButton";
+			this.saveToolStripButton.Size = new System.Drawing.Size(23, 22);
+			this.saveToolStripButton.Text = "Save";
+			// 
+			// toolStripSeparator2
+			// 
+			this.toolStripSeparator2.Name = "toolStripSeparator2";
+			this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25);
+			// 
+			// helpToolStripButton
+			// 
+			this.helpToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.helpToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("helpToolStripButton.Image")));
+			this.helpToolStripButton.ImageTransparentColor = System.Drawing.Color.Black;
+			this.helpToolStripButton.Name = "helpToolStripButton";
+			this.helpToolStripButton.Size = new System.Drawing.Size(23, 22);
+			this.helpToolStripButton.Text = "Help";
+			// 
+			// statusStrip
+			// 
+			this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripStatusLabel,
+            this.toolStripStatusLabelResultCount});
+			this.statusStrip.Location = new System.Drawing.Point(0, 548);
+			this.statusStrip.Name = "statusStrip";
+			this.statusStrip.Size = new System.Drawing.Size(1066, 22);
+			this.statusStrip.TabIndex = 2;
+			this.statusStrip.Text = "StatusStrip";
+			// 
+			// toolStripStatusLabel
+			// 
+			this.toolStripStatusLabel.Name = "toolStripStatusLabel";
+			this.toolStripStatusLabel.Size = new System.Drawing.Size(999, 17);
+			this.toolStripStatusLabel.Spring = true;
+			this.toolStripStatusLabel.Text = "Status";
+			this.toolStripStatusLabel.TextAlign = System.Drawing.ContentAlignment.TopLeft;
+			// 
+			// toolStripConnection
+			// 
+			this.toolStripConnection.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
+			this.toolStripConnection.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripLabel1,
+            this.toolStripComboBoxConnection});
+			this.toolStripConnection.Location = new System.Drawing.Point(0, 24);
+			this.toolStripConnection.Name = "toolStripConnection";
+			this.toolStripConnection.Size = new System.Drawing.Size(1066, 25);
+			this.toolStripConnection.TabIndex = 4;
+			this.toolStripConnection.Text = "toolStrip1";
+			// 
+			// toolStripLabel1
+			// 
+			this.toolStripLabel1.Name = "toolStripLabel1";
+			this.toolStripLabel1.Size = new System.Drawing.Size(72, 22);
+			this.toolStripLabel1.Text = "Connection:";
+			// 
+			// toolStripComboBoxConnection
+			// 
+			this.toolStripComboBoxConnection.AutoToolTip = true;
+			this.toolStripComboBoxConnection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+			this.toolStripComboBoxConnection.DropDownWidth = 400;
+			this.toolStripComboBoxConnection.Name = "toolStripComboBoxConnection";
+			this.toolStripComboBoxConnection.Size = new System.Drawing.Size(300, 25);
+			this.toolStripComboBoxConnection.SelectedIndexChanged += new System.EventHandler(this.toolStripComboBoxConnection_SelectedIndexChanged);
+			// 
+			// dockPanel
+			// 
+			this.dockPanel.ActiveAutoHideContent = null;
+			this.dockPanel.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.dockPanel.DockBackColor = System.Drawing.SystemColors.Control;
+			this.dockPanel.Font = new System.Drawing.Font("Tahoma", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.World);
+			this.dockPanel.Location = new System.Drawing.Point(0, 49);
+			this.dockPanel.Name = "dockPanel";
+			this.dockPanel.Size = new System.Drawing.Size(1066, 499);
+			dockPanelGradient4.EndColor = System.Drawing.SystemColors.ControlLight;
+			dockPanelGradient4.StartColor = System.Drawing.SystemColors.ControlLight;
+			autoHideStripSkin2.DockStripGradient = dockPanelGradient4;
+			tabGradient8.EndColor = System.Drawing.SystemColors.Control;
+			tabGradient8.StartColor = System.Drawing.SystemColors.Control;
+			tabGradient8.TextColor = System.Drawing.SystemColors.ControlDarkDark;
+			autoHideStripSkin2.TabGradient = tabGradient8;
+			dockPanelSkin2.AutoHideStripSkin = autoHideStripSkin2;
+			tabGradient9.EndColor = System.Drawing.SystemColors.ControlLightLight;
+			tabGradient9.StartColor = System.Drawing.SystemColors.ControlLightLight;
+			tabGradient9.TextColor = System.Drawing.SystemColors.ControlText;
+			dockPaneStripGradient2.ActiveTabGradient = tabGradient9;
+			dockPanelGradient5.EndColor = System.Drawing.SystemColors.Control;
+			dockPanelGradient5.StartColor = System.Drawing.SystemColors.Control;
+			dockPaneStripGradient2.DockStripGradient = dockPanelGradient5;
+			tabGradient10.EndColor = System.Drawing.SystemColors.ControlLight;
+			tabGradient10.StartColor = System.Drawing.SystemColors.ControlLight;
+			tabGradient10.TextColor = System.Drawing.SystemColors.ControlText;
+			dockPaneStripGradient2.InactiveTabGradient = tabGradient10;
+			dockPaneStripSkin2.DocumentGradient = dockPaneStripGradient2;
+			tabGradient11.EndColor = System.Drawing.SystemColors.ActiveCaption;
+			tabGradient11.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
+			tabGradient11.StartColor = System.Drawing.SystemColors.GradientActiveCaption;
+			tabGradient11.TextColor = System.Drawing.SystemColors.ActiveCaptionText;
+			dockPaneStripToolWindowGradient2.ActiveCaptionGradient = tabGradient11;
+			tabGradient12.EndColor = System.Drawing.SystemColors.Control;
+			tabGradient12.StartColor = System.Drawing.SystemColors.Control;
+			tabGradient12.TextColor = System.Drawing.SystemColors.ControlText;
+			dockPaneStripToolWindowGradient2.ActiveTabGradient = tabGradient12;
+			dockPanelGradient6.EndColor = System.Drawing.SystemColors.ControlLight;
+			dockPanelGradient6.StartColor = System.Drawing.SystemColors.ControlLight;
+			dockPaneStripToolWindowGradient2.DockStripGradient = dockPanelGradient6;
+			tabGradient13.EndColor = System.Drawing.SystemColors.GradientInactiveCaption;
+			tabGradient13.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
+			tabGradient13.StartColor = System.Drawing.SystemColors.GradientInactiveCaption;
+			tabGradient13.TextColor = System.Drawing.SystemColors.ControlText;
+			dockPaneStripToolWindowGradient2.InactiveCaptionGradient = tabGradient13;
+			tabGradient14.EndColor = System.Drawing.Color.Transparent;
+			tabGradient14.StartColor = System.Drawing.Color.Transparent;
+			tabGradient14.TextColor = System.Drawing.SystemColors.ControlDarkDark;
+			dockPaneStripToolWindowGradient2.InactiveTabGradient = tabGradient14;
+			dockPaneStripSkin2.ToolWindowGradient = dockPaneStripToolWindowGradient2;
+			dockPanelSkin2.DockPaneStripSkin = dockPaneStripSkin2;
+			this.dockPanel.Skin = dockPanelSkin2;
+			this.dockPanel.TabIndex = 6;
+			this.dockPanel.ActiveContentChanged += new System.EventHandler(this.dockPanel_ActiveContentChanged);
+			// 
+			// sysIcon
+			// 
+			this.sysIcon.ContextMenuStrip = this.ctxSysIcon;
+			this.sysIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("sysIcon.Icon")));
+			this.sysIcon.Text = "Mini SQL Query";
+			this.sysIcon.Visible = true;
+			this.sysIcon.DoubleClick += new System.EventHandler(this.sysIcon_DoubleClick);
+			// 
+			// ctxSysIcon
+			// 
+			this.ctxSysIcon.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.hideShowToolStripMenuItem,
+            this.toolStripSeparator3,
+            this.optionsToolStripMenuItem1,
+            this.toolStripSeparator1,
+            this.exitToolStripMenuItem});
+			this.ctxSysIcon.Name = "ctxSysIcon";
+			this.ctxSysIcon.Size = new System.Drawing.Size(137, 82);
+			// 
+			// hideShowToolStripMenuItem
+			// 
+			this.hideShowToolStripMenuItem.Name = "hideShowToolStripMenuItem";
+			this.hideShowToolStripMenuItem.Size = new System.Drawing.Size(136, 22);
+			this.hideShowToolStripMenuItem.Text = "Hide/Show";
+			this.hideShowToolStripMenuItem.Click += new System.EventHandler(this.hideShowToolStripMenuItem_Click);
+			// 
+			// toolStripSeparator3
+			// 
+			this.toolStripSeparator3.Name = "toolStripSeparator3";
+			this.toolStripSeparator3.Size = new System.Drawing.Size(133, 6);
+			// 
+			// optionsToolStripMenuItem1
+			// 
+			this.optionsToolStripMenuItem1.Name = "optionsToolStripMenuItem1";
+			this.optionsToolStripMenuItem1.Size = new System.Drawing.Size(136, 22);
+			this.optionsToolStripMenuItem1.Text = "Options";
+			this.optionsToolStripMenuItem1.Visible = false;
+			// 
+			// toolStripSeparator1
+			// 
+			this.toolStripSeparator1.Name = "toolStripSeparator1";
+			this.toolStripSeparator1.Size = new System.Drawing.Size(133, 6);
+			this.toolStripSeparator1.Visible = false;
+			// 
+			// exitToolStripMenuItem
+			// 
+			this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
+			this.exitToolStripMenuItem.Size = new System.Drawing.Size(136, 22);
+			this.exitToolStripMenuItem.Text = "Exit";
+			this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
+			// 
+			// toolStripStatusLabelResultCount
+			// 
+			this.toolStripStatusLabelResultCount.Name = "toolStripStatusLabelResultCount";
+			this.toolStripStatusLabelResultCount.Size = new System.Drawing.Size(21, 17);
+			this.toolStripStatusLabelResultCount.Text = "[0]";
+			this.toolStripStatusLabelResultCount.TextAlign = System.Drawing.ContentAlignment.TopLeft;
+			// 
+			// MainForm
+			// 
+			this.AllowDrop = true;
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.ClientSize = new System.Drawing.Size(1066, 570);
+			this.Controls.Add(this.dockPanel);
+			this.Controls.Add(this.statusStrip);
+			this.Controls.Add(this.toolStripConnection);
+			this.Controls.Add(this.toolStrip);
+			this.Controls.Add(this.menuStrip);
+			this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+			this.IsMdiContainer = true;
+			this.MainMenuStrip = this.menuStrip;
+			this.Name = "MainForm";
+			this.Text = "Mini SQL Query";
+			this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
+			this.Load += new System.EventHandler(this.MainForm_Load);
+			this.MdiChildActivate += new System.EventHandler(this.MainForm_MdiChildActivate);
+			this.Shown += new System.EventHandler(this.MainForm_Shown);
+			this.menuStrip.ResumeLayout(false);
+			this.menuStrip.PerformLayout();
+			this.toolStrip.ResumeLayout(false);
+			this.toolStrip.PerformLayout();
+			this.statusStrip.ResumeLayout(false);
+			this.statusStrip.PerformLayout();
+			this.toolStripConnection.ResumeLayout(false);
+			this.toolStripConnection.PerformLayout();
+			this.ctxSysIcon.ResumeLayout(false);
+			this.ResumeLayout(false);
+			this.PerformLayout();
+
+		}
+		#endregion
+
+
+		private System.Windows.Forms.MenuStrip menuStrip;
+		private System.Windows.Forms.ToolStrip toolStrip;
+		private System.Windows.Forms.StatusStrip statusStrip;
+		private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+		private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel;
+		private System.Windows.Forms.ToolStripMenuItem fileMenu;
+		private System.Windows.Forms.ToolStripMenuItem toolBarToolStripMenuItem;
+		private System.Windows.Forms.ToolStripMenuItem statusBarToolStripMenuItem;
+		private System.Windows.Forms.ToolStripMenuItem toolsMenu;
+        private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
+		private System.Windows.Forms.ToolStripMenuItem helpMenu;
+		private System.Windows.Forms.ToolStripButton newToolStripButton;
+		private System.Windows.Forms.ToolStripButton openToolStripButton;
+		private System.Windows.Forms.ToolStripButton saveToolStripButton;
+		private System.Windows.Forms.ToolStripButton helpToolStripButton;
+		private System.Windows.Forms.ToolTip toolTip;
+		private System.Windows.Forms.ToolStrip toolStripConnection;
+		private System.Windows.Forms.ToolStripLabel toolStripLabel1;
+		private System.Windows.Forms.ToolStripComboBox toolStripComboBoxConnection;
+        private System.Windows.Forms.ToolStripMenuItem queryToolStripMenuItem;
+		internal WeifenLuo.WinFormsUI.Docking.DockPanel dockPanel;
+		private System.Windows.Forms.ToolStripMenuItem pluginsMenu;
+		private System.Windows.Forms.ToolStripMenuItem editMenu;
+        private System.Windows.Forms.NotifyIcon sysIcon;
+        private System.Windows.Forms.ContextMenuStrip ctxSysIcon;
+        private System.Windows.Forms.ToolStripMenuItem hideShowToolStripMenuItem;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
+        private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem1;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+        private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
+		private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelResultCount;
+	}
+}
+
+
+
Added +498 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/MainForm.resx b/minisqlquery-master/src/MiniSqlQuery/MainForm.resx
new file mode 100644
index 0000000..91b655c
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/MainForm.resx
@@ -0,0 +1,498 @@
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="menuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>206, 17</value>
+  </metadata>
+  <metadata name="toolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>308, 17</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="newToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEKSURBVDhPrdNtS8JQFAdwv1R+h/oa+Y0kX4j0ohYhA4MF
+        hkYWZtBKEHEDe0KG5Vjzaeqcuod/3MFg5L3XvfDA4b6553c553BTqX2FVO/if5ZqCoqVFoRrOUzuW6SY
+        FQXxAemjDB+5uleZwIlQQfVJ4SPibZsJZM9uwuIoqa1clptMwPV8ECSCqMC59EwFgiCA7WxgjOwQODg8
+        pg/ztPRIBdYbD2PLgaZbfCBfrG0Bnh9gZq8xMBd418Z8IHdR3QKclQtzskTvZ4rOh8kHSH/xIIObzlfo
+        GzN0eyO8qnpyID64z/4E7bdfNFrfyYH44NSvIeTOAHcvWjIg2jfrZK4x2jG5sCv39YFD5w/f9fWWFNSd
+        PAAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="openToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJfSURBVDhPvZNbSBNgGIZ30UVXFmlRCEaWhF2IgSHVRUjS
+        SVFKs8JIE8pTBwzFNg9tOnVzJ6eudJjbdE2dVpZhWCEUikRoqaPEtCwoKsXMUMnT09xCkyzwph/em5/v
+        fb73+35+geB/nJxiMxKthctyE3k6K2lKI8vqG52sIyxe5TCdF5aTZYelSA1EJRcjqDNrWEqNNbK/dklI
+        KyE8UUVofIET0NtlZGKk1qEfwxamBg1YTSrqzdIlIWEJakLjtATHFiGorVAzPly1yDzzqYQpWxJV5XIq
+        S3MxFGehL8jkmlJEkSx1MbTaqGD8i3G+86zdTK8IbLFL6g/AjTIZ3z/qHbHnzE11CofuW/NpsMi4XZmL
+        1ZCNRS/BpLvCdW06pWoROoXQmaZSn8vou0LmYr9pEVNfpWbmjQQGpIv11n7XnwY9yfAykc6aCC7GhCAw
+        6LL51ieH90ruVKtoe6B0Fv0+wosoaA9nujWIiYcBvK7w4dyp/U5AmVbM11cSBlozqLcome0XQ3ecE9AZ
+        YzceZ7othInmfYw27maobjuSeC9OBLo5l1mizmCoS8hNs4KOJ/YkPUl2wBnoOMns08NMPj7IWNMehuv9
+        +FztTXvOaiKDPPHb6uIE6PJFdDdncsucD32Z8Nwe99lRJluCGXsUwEiDP4NWHz4Yt2BTuiKO3YzvNveF
+        pyzMS6XWJMd2N4F2jWBebcoVNMtWci9rFTXpazGkunP10kYiD23C39djAaCRpqARnyVPGE3ahWOOxZyO
+        COTIgZ3s3eXDDh8vvD3d8djgxro1Lqx3/RV9Wb/pH8U/ATEu7l+AbzRZAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="saveToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIpSURBVDhPrZPdS5NxFMf3L3TfTdBFtzU1hmuxGjzlHMqq
+        YVgRvT2RL+XSZZqoWJlGLV8gW+HSScvpJJxU+AamSI2hTCVLM1e0xKGm2EQw+PY7v+j5tTJv6gfn8vM5
+        zznn+6hU/+M9exoFla99GW3eJTx2L6CxIYL7jhnU1nyC/XYIN8qnUFoygcKC18jLHcWF80EovQns7QFq
+        qlex0VtZXYMxrReH057wUgTe1kUuqKz48lee4MjCCnabn0OtlmE55BEC96N5Ligt+byu4Cf8PryIOJMP
+        BZenccDcJATO+lkuuGR794fgV3hkMoJtkhfWnHGkpjiFoO5umAuys0ZjBL/Dg8EwNuvdkOUATCaHEFRX
+        feQC+UxAEawH9/g/YFNiA44cfYGkpFohuFk5je4usFMCx0++guXYAN82LYxmps+mzj/gPhy0dEKS7EJw
+        tWwSHT6wDABNrm/s7l9Rfn2OL5UWRjNnZgQVODm1HQZDhRBcKRyHpxl46FxjwYnCmJ4TU+YTNqSfK+Kd
+        k1MYvN8Dvb5MCGx5YwwGqu5EeWcSUEjitBKG3s5ibGoOcu417DW2cVi7xwWdrkgIKJaOe1A+mwQEn82/
+        hTeheYRmlnCx2I54vYvBjYjf9QDaxHwhyMwYZnMv85m3GjzYskNCS0c/fF2D6O7zY+DlEPaZLFDr6pHA
+        4O2aOmg01ljB6VP9PJ6UMAoJ3ZlORdumhdHM1JWK4J0J2ULwL3/0d2xoOmtKzOuNAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="helpToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKcSURBVDhPjZNbSNNRHMf3HPRcYu+9Gb32VhAJ9RASlOBb
+        b1aIFop5GXPeyrmp8zLNu21NR24q6qa2izbndKnzspI2hm5O866FFyg+/TfRyjT6wY8Dh/P5/r7nd85P
+        JDoj6po8lJZOkpMzTHa2nbPOnbofhsPpdq/T0DiH5s0sUul/Ch3BTuc6FSo3Vtsa78xBBszzaFs9SHIc
+        Zzs6CXf3LGO3f2PIuoPNusVA/zp6/SIt6hnB0cifQifhzq4QFvMWvb2rdHQu0y6Abbp5Wpq9qFQe5PIJ
+        cvNHDntzEtYbghHQYAjRql2gudlHbe0cFRUzKBTjFBSM8TTFzOMnRo5ht3szcmdt6zw63QKa134aG7y0
+        dgSRtW0SX7ZPnGwHSW0QecUUiY+M6DuGDwW0bdPIFS4amny8qvlEVbkHZek0dboQyVqotsKHBSED0Dj4
+        nfv5AdrNHrwBPyKxxIZWN4VEOoisZBRZ8Tgvi1zUq30kaUA3CotL22QWmrj1oC6yGpy73EhyUaR0InqW
+        asS/HMRkmSA9ox+x2BZ587yWFVQWInEEj00EIiJljQ6kmiUSEk2IMrM1lCj7WNoOMb8q3K/UgjRvkLuF
+        GxgmDgXCEXYRFrh2p4pK9TgtQwdEXa5E9KJ4RKg8IKQRs32ajYMvWB0fiRUH0f8msPN1PwKn5prwrgi9
+        sOxxIbrg1xeX5A6SkdVPSbkNX2gBVc8i8q7dYwcOobq81olPgKeFZqaUeYiNq/t7RjKyzDwXhLotn7mZ
+        Mkm364C9H2B8HyDmegmzi1DZvcb5q0rylZbThyxLbCEtvY+m9lmuxJsQ1/vR2vdQW3dJVsxyLkbB47S3
+        DI0H/z2lqhoXxUoHCQ87iLqUx8XoTG7fq0amsjEyFYrAPwG3BHAuW8RdOwAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>121, 17</value>
+  </metadata>
+  <metadata name="toolStripConnection.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>401, 17</value>
+  </metadata>
+  <metadata name="sysIcon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>550, 17</value>
+  </metadata>
+  <metadata name="ctxSysIcon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>639, 17</value>
+  </metadata>
+  <data name="sysIcon.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIFtWgGBbVoDgW1aBYFtWgeBbVoJgW1aCoFt
+        WguBbVoLgW1aCoFtWgmBbVoHgW1aCIFtWguBbVoPgW1aEoFtWhKBbVoOgW1aCIFtWgIAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIFtWgKBbVoFgW1aCoFtWhGBbVoVgW1aGYFt
+        WhyBbVofgW1aIYFtWiGBbVofgW1aHYFtWiJ2Yk9GclxIeG5ZRZprVUGsbFZClW1YQ3F1Xks8gW1aGIFt
+        WgqBbVoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIFtWgGBbVoEgW1aC4FtWhSBbVoeXWdrQU9l
+        cWBHZHV7SGR1fUJjeJhEZHaPSGR0f1JmcGVhZGVrc2FQsoh2Zuyik4f5urCn/8a+tv+2rKP+mot+935s
+        WuZqVECVdV1LMIFtWg+BbVoCAAAAAAAAAAAAAAAAAAAAAAAAAACBbVoBgW1aBoFtWhFeZ2oyP2N5mjpl
+        f+BCcYrnUIef6FeYsO9Tmrb/UqLC/0eYvP89ia/3PW6K/mtpY/mtoZb/2NTP/+Dc2P/d2NT/5OHd/+Xi
+        3//k4N3/1c/K/qCShv1sWEW8cV5IPoFtWg+BbVoBAAAAAAAAAAAAAAAAAAAAAIFtWgSBbVoTO26Kqzpp
+        hehaobznfdTq/4/k9P+M4vP/ftrw/3DR7f9iyOv/VL/o/0qu1f9tfHz/ua+m/+Lf3P/i39z/AI0A/6+8
+        qP/Z1dD/4d7a/+Lf3P/i39z/4d7b/6ickv9tWke6eF9NL4FtWgkAAAAAAAAAAAAAAAAAAAAAgW1aEzdq
+        huJDlLjuYsjq/3LS7v+B2/H/j+T0/4zi8/9+2vD/cNHt/2LI6/9Uvuf/ZYuV/7Clm//f29j/4NzZ/+Dc
+        2f8AjQD/AGYA/665pv/X0s7/39vY/+Dc2f/g3Nn/3trX/56Qhf1qVkORgW1aGIFtWgIAAAAAAAAAAAAA
+        AABaaG1WP5jC/0y55P9jyev/ctLu/4Hb8f+P5PT/jOLz/37a8P9w0e3/Ysjr/1uz0v+MiH7/1NDM/9zZ
+        1v/c2db/3NnW/wCNAP8xrVH/AGYA/625pv/Vz8v/29jV/9zZ1v/c2db/zcbB/3tpWORxYUw1gW1aBwAA
+        AAAAAAAAAAAAAFB9nf8/mML/TLnk/2PJ6/9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR7f9iyOv/ZaCz/6qh
+        lf/a1tP/2tbT/9rW0//g3Nr/AI0A/0/Rdv8xrVH/AGYA/7rHtf/a1tL/2dbT/9rW0//Y1NH/lIZ49W5Y
+        RWWBbVoMAAAAAAAAAAAAAAAAUH2d/z+Ywv9MueT/Y8nr/3LS7v+B2/H/j+T0/4zi8/9+2vD/cNHt/2LI
+        6/9tk5z/wbiw/9fT0P/Y1NH/5ePh//n5+P8AjQD/T9F2/zfEXf8xrVH/AGYA/8HPvv/h3dn/19PQ/9fT
+        0P+qn5X+a1dDiYFtWhAAAAAAAAAAAAAAAABQfZ3/P5jC/0y55P9jyev/ctLu/4Hb8f+P5PT/jOLz/37a
+        8P9w0e3/Ysjr/3OMkP/IwLr/2NTR/+nm5f/+/v7//////wCNAP9+4J7/aNiK/2jYiv9+4J7/AGcD/9Dg
+        0P/o5uX/19PR/7Wso/9sVkObgW1aDwAAAAAAAAAAAAAAAFB9nf8/mML/TLnk/2PI6v9owuH/abrX/2y4
+        0v9otM//XqnH/1aiwv9Pmrz/aoOK/8K4sP/r6Of//v39////////////AI0A/37gnv9o2Ir/fuCe/wFv
+        EP/Q4ND//v7+//39/f/k4uD/rKGX/nBZRYaBbVoLAAAAAAAAAAAAAAAAUH2d/z+Ywv9Mq9X/U6bM/1ut
+        0P9uwNz/fc7j/4DS5/930Of/bczp/2LI6/9morX/ta6l//38/P////////////////8AjQD/fuCe/37g
+        nv8BbxD/0ODQ//7+/v////////////f29f+dj4P1cVxHYIFtWgYAAAAAAAAAAAAAAABQfZ3/RJjB/0ym
+        0P9gwuX/ctLu/4Hb8f+P5PT/jOLz/37a8P9w0e3/Ysjr/1u01v+XlYz/8vDv/////////////////wCN
+        AP9+4J7/AW8Q/9Dg0P/+/v7/////////////////6+jm/ol3ZuNzXU4pgW1aAQAAAAAAAAAAAAAAAFB9
+        nf9EmMH/TLfi/2PJ6/9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR7f9iyOv/VL/o/2qUoP/Fu7L//v7+////
+        ////////AI0A/wFvEP/Q4ND//v7+//////////////////39/f+zp5z8dV5LhoFtWgcAAAAAAAAAAAAA
+        AAAAAAAAUH2d/z+Ywv9MueT/Y8nr/3LS7v+B2/H/j+T0/4zi8/9+2vD/cNHt/2LI6/9Uv+j/SrHb/3aL
+        jv/Qxr///v7+//////8AjQD/0eHS//7+/v/////////////////9/f3/wLat/31qWLN7X00agW1aAQAA
+        AAAAAAAAAAAAAAAAAABQfZ3/P5jC/0y55P9jyev/ctLu/4Hb8f+P5PT/jOLz/37a8P9w0e3/Ysjr/1S/
+        6P9EtuX/PKDP/3CFjP/CuK//7+7r//79/f/////////////////9/f3/7ero/raqoP2Ba1q1fGNRJoFt
+        WgIAAAAAAAAAAAAAAAAAAAAAAAAAAFB9nf8/mML/TLnk/2PJ6/9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR
+        7f9iyOv/VL/o/0S25f8vqOH/IpjU/0yBmv+OjYf/squj/87Fvv/Z0cz/ysK7/62hl/+Vg3LofWdUkHVk
+        UxqBbVoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUH2d/z+Ywv9MueT/Y8jq/2jC4f9putf/bLjS/2i0
+        z/9eqcf/VqLC/0+avP9LmLv/Rpa8/z2Quf8yi7n/JoW4/yqBsv86gKL/SnuU/153gf9TcID/SWuA/4Fr
+        WUqBbVoYgW1aBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQfZ3/P5jC/0yr1f9Tpsz/W63Q/27A
+        3P99zuP/gNLn/3fQ5/9tzOn/Ysjr/1O85f9Est//M6LX/yGW0f8Vicn/GoXA/yOCtv8ufqn/MX2n/yJ0
+        p/8qapT/gW1aLoFtWhaBbVoEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFB9nf9EmMH/TKbQ/2DC
+        5f9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR7f9iyOv/VL/o/0S25f8vqOH/GZvd/wSO2f8Ai9j/AIvY/wSK
+        1P8sgK3/KHSi/ypqlP+BbVotgW1aFoFtWgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUH2d/0SY
+        wf9Mt+L/Y8nr/3LS7v+B2/H/j+T0/4zi8/9+2vD/cNHt/2LI6/9Uv+j/RLbl/y+o4f8Zm93/BI7Z/wCL
+        2P8Ai9j/A4rV/yCFvf8edKr/KmqU/4FtWi2BbVoWgW1aBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABQfZ3/P5jC/0y55P9jyev/ctLu/4Hb8f+P5PT/jOLz/37a8P9w0e3/Ysjr/1S/6P9EtuX/L6jh/xmb
+        3f8Ejtn/AIvY/wCL2P8DitX/IIW9/x50qv8qapT/gW1aLYFtWhaBbVoEAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAFB9nf8/mML/TLnk/2PJ6/9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR7f9iyOv/VL/o/0S2
+        5f8vqOH/GZvd/wSO2f8Ai9j/AIvY/wOK1f8ghb3/HnSq/ypqlP+BbVotgW1aF4FtWgQAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAUH2d/z+Ywv9MueT/Ycbp/2K+4P9is9X/XKfL/1Sexf9Nlr//S5W//0yW
+        v/9KlL//SJO//0eUv/9FlsP/OZXI/x+Ozf8Mi9P/BIrU/yCFvf8edKr/KmqU/4FtWiyBbVoWgW1aBAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQfZ3/P5jC/0ueyP9Okrn/aajF/4W+1f+k2ef/t+rz/8n7
+        /v/J/P//x/v//8T7///B+f3/ufX6/6bj7/+OzuH/dLbQ/1ugwv9Ej7r/OIy8/x50qv8qapT/gW1aKIFt
+        WhOBbVoEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFB9nf9Oh6f/ir3P/8by9v/U////0v///9D+
+        ///O/f//y/3//8n8///H+///xPv//8P7///A+///vvr//7v6//+4+f//tff+/5/h7P91tMr/UH2d/ypq
+        lP+BbVocgW1aDIFtWgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPXCOo3+wv/zT/v7/1P///9T/
+        ///S////0P7//879///L/f//yfz//8f7///E+///w/v//8D7//+++v//u/r//7j5//+2+f//s/j//672
+        /f9akqr4QG+LrIFtWg6BbVoEgW1aAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEboQLUnyQuWOO
+        n+qn0tj8xfDy/9L////Q/v//zv3//8v9///J/P//x/v//8T7///D+///wPv//776//+7+v//uPn//6bm
+        7v+MyNT6VoSY6096jadwbWULgW1aA4FtWgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAARG6EH1B7j4tSfJDYT3mN8WKNn+92obDyiLbC/4m4xP+WxtH/lMbR/4S1wv+CtMH9bp6v81qH
+        mvBMeI3wUHyQ0kx2in9ObXwcgW1aA4FtWgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARG6EI0RuhD9EbYNgRG2DYFN9kZBRe5CLRW2CYkVt
+        gl5GbYJCSG2BHYFtWgKBbVoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAA/wAAH/wAAAfwAAAD4AAAAeAAAAHgAAAA4AAAAOAAAADgAAAA4AAAAOAA
+        AADgAAAA4AAAAOAAAAHgAAAB4AAAA+AAAAfgAAAP4AAAD+AAAA/gAAAP4AAAD+AAAA/gAAAP4AAAD+AA
+        AA/gAAAP4AAAH/gAAH//gAf///////////8oAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBbVoBgW1aA4FtWgWBbVoHgW1aCYFt
+        WgqBbVoLgW1aC4FtWgqBbVoJgW1aB4FtWgiBbVoLgW1aD4FtWhKBbVoSgW1aDoFtWgiBbVoCAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBbVoCgW1aBYFtWgqBbVoRgW1aFYFt
+        WhmBbVocgW1aH4FtWiGBbVohgW1aH4FtWh2BbVoidmJPRnJcSHhuWUWaa1VBrGxWQpVtWENxdV5LPIFt
+        WhiBbVoKgW1aAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBbVoBgW1aBIFtWguBbVoUgW1aHl1n
+        a0FPZXFgR2R1e0hkdX1CY3iYRGR2j0hkdH9SZnBlYWRla3NhULKIdmbsopOH+bqwp//Gvrb/tqyj/pqL
+        fvd+bFrmalRAlXVdSzCBbVoPgW1aAgAAAAAAAAAAAAAAAAAAAAAAAAAAgW1aAYFtWgaBbVoRXmdqMj9j
+        eZo6ZX/gQnGK51CHn+hXmLDvU5q2/1Kiwv9HmLz/PYmv9z1uiv5raWP5raGW/9jUz//g3Nj/3djU/+Th
+        3f/l4t//5ODd/9XPyv6gkob9bFhFvHFeSD6BbVoPgW1aAQAAAAAAAAAAAAAAAAAAAACBbVoEgW1aEztu
+        iqs6aYXoWqG8533U6v+P5PT/jOLz/37a8P9w0e3/Ysjr/1S/6P9KrtX/bXx8/7mvpv/i39z/4t/c/wCN
+        AP+vvKj/2dXQ/+He2v/i39z/4t/c/+He2/+onJL/bVpHunhfTS+BbVoJAAAAAAAAAAAAAAAAAAAAAIFt
+        WhM3aobiQ5S47mLI6v9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR7f9iyOv/VL7n/2WLlf+wpZv/39vY/+Dc
+        2f/g3Nn/AI0A/wBmAP+uuab/19LO/9/b2P/g3Nn/4NzZ/97a1/+ekIX9alZDkYFtWhiBbVoCAAAAAAAA
+        AAAAAAAAWmhtVj+Ywv9MueT/Y8nr/3LS7v+B2/H/j+T0/4zi8/9+2vD/cNHt/2LI6/9bs9L/jIh+/9TQ
+        zP/c2db/3NnW/9zZ1v8AjQD/Ma1R/wBmAP+tuab/1c/L/9vY1f/c2db/3NnW/83Gwf97aVjkcWFMNYFt
+        WgcAAAAAAAAAAAAAAABQfZ3/P5jC/0y55P9jyev/ctLu/4Hb8f+P5PT/jOLz/37a8P9w0e3/Ysjr/2Wg
+        s/+qoZX/2tbT/9rW0//a1tP/4Nza/wCNAP9P0Xb/Ma1R/wBmAP+6x7X/2tbS/9nW0//a1tP/2NTR/5SG
+        ePVuWEVlgW1aDAAAAAAAAAAAAAAAAFB9nf8/mML/TLnk/2PJ6/9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR
+        7f9iyOv/bZOc/8G4sP/X09D/2NTR/+Xj4f/5+fj/AI0A/0/Rdv83xF3/Ma1R/wBmAP/Bz77/4d3Z/9fT
+        0P/X09D/qp+V/mtXQ4mBbVoQAAAAAAAAAAAAAAAAUH2d/z+Ywv9MueT/Y8nr/3LS7v+B2/H/j+T0/4zi
+        8/9+2vD/cNHt/2LI6/9zjJD/yMC6/9jU0f/p5uX//v7+//////8AjQD/fuCe/2jYiv9o2Ir/fuCe/wBn
+        A//Q4ND/6Obl/9fT0f+1rKP/bFZDm4FtWg8AAAAAAAAAAAAAAABQfZ3/P5jC/0y55P9jyOr/aMLh/2m6
+        1/9suNL/aLTP/16px/9WosL/T5q8/2qDiv/CuLD/6+jn//79/f///////////wCNAP9+4J7/aNiK/37g
+        nv8BbxD/0ODQ//7+/v/9/f3/5OLg/6yhl/5wWUWGgW1aCwAAAAAAAAAAAAAAAFB9nf8/mML/TKvV/1Om
+        zP9brdD/bsDc/33O4/+A0uf/d9Dn/23M6f9iyOv/ZqK1/7Wupf/9/Pz/////////////////AI0A/37g
+        nv9+4J7/AW8Q/9Dg0P/+/v7////////////39vX/nY+D9XFcR2CBbVoGAAAAAAAAAAAAAAAAUH2d/0SY
+        wf9MptD/YMLl/3LS7v+B2/H/j+T0/4zi8/9+2vD/cNHt/2LI6/9btNb/l5WM//Lw7///////////////
+        //8AjQD/fuCe/wFvEP/Q4ND//v7+/////////////////+vo5v6Jd2bjc11OKYFtWgEAAAAAAAAAAAAA
+        AABQfZ3/RJjB/0y34v9jyev/ctLu/4Hb8f+P5PT/jOLz/37a8P9w0e3/Ysjr/1S/6P9qlKD/xbuy//7+
+        /v///////////wCNAP8BbxD/0ODQ//7+/v/////////////////9/f3/s6ec/HVeS4aBbVoHAAAAAAAA
+        AAAAAAAAAAAAAFB9nf8/mML/TLnk/2PJ6/9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR7f9iyOv/VL/o/0qx
+        2/92i47/0Ma///7+/v//////AI0A/9Hh0v/+/v7//////////////////f39/8C2rf99alize19NGoFt
+        WgEAAAAAAAAAAAAAAAAAAAAAUH2d/z+Ywv9MueT/Y8nr/3LS7v+B2/H/j+T0/4zi8/9+2vD/cNHt/2LI
+        6/9Uv+j/RLbl/zygz/9whYz/wriv/+/u6//+/f3//////////////////f39/+3q6P62qqD9gWtatXxj
+        USaBbVoCAAAAAAAAAAAAAAAAAAAAAAAAAABQfZ3/P5jC/0y55P9jyev/ctLu/4Hb8f+P5PT/jOLz/37a
+        8P9w0e3/Ysjr/1S/6P9EtuX/L6jh/yKY1P9MgZr/jo2H/7Kro//Oxb7/2dHM/8rCu/+toZf/lYNy6H1n
+        VJB1ZFMagW1aAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFB9nf8/mML/TLnk/2PI6v9owuH/abrX/2y4
+        0v9otM//XqnH/1aiwv9Pmrz/S5i7/0aWvP89kLn/Mou5/yaFuP8qgbL/OoCi/0p7lP9ed4H/U3CA/0lr
+        gP+Ba1lKgW1aGIFtWgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUH2d/z+Ywv9Mq9X/U6bM/1ut
+        0P9uwNz/fc7j/4DS5/930Of/bczp/2LI6/9TvOX/RLLf/zOi1/8hltH/FYnJ/xqFwP8jgrb/Ln6p/zF9
+        p/8idKf/KmqU/4FtWi6BbVoWgW1aBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQfZ3/RJjB/0ym
+        0P9gwuX/ctLu/4Hb8f+P5PT/jOLz/37a8P9w0e3/Ysjr/1S/6P9EtuX/L6jh/xmb3f8Ejtn/AIvY/wCL
+        2P8EitT/LICt/yh0ov8qapT/gW1aLYFtWhaBbVoEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFB9
+        nf9EmMH/TLfi/2PJ6/9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR7f9iyOv/VL/o/0S25f8vqOH/GZvd/wSO
+        2f8Ai9j/AIvY/wOK1f8ghb3/HnSq/ypqlP+BbVotgW1aFoFtWgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAUH2d/z+Ywv9MueT/Y8nr/3LS7v+B2/H/j+T0/4zi8/9+2vD/cNHt/2LI6/9Uv+j/RLbl/y+o
+        4f8Zm93/BI7Z/wCL2P8Ai9j/A4rV/yCFvf8edKr/KmqU/4FtWi2BbVoWgW1aBAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABQfZ3/P5jC/0y55P9jyev/ctLu/4Hb8f+P5PT/jOLz/37a8P9w0e3/Ysjr/1S/
+        6P9EtuX/L6jh/xmb3f8Ejtn/AIvY/wCL2P8DitX/IIW9/x50qv8qapT/gW1aLYFtWheBbVoEAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFB9nf8/mML/TLnk/2HG6f9ivuD/YrPV/1yny/9UnsX/TZa//0uV
+        v/9Mlr//SpS//0iTv/9HlL//RZbD/zmVyP8fjs3/DIvT/wSK1P8ghb3/HnSq/ypqlP+BbVosgW1aFoFt
+        WgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUH2d/z+Ywv9Lnsj/TpK5/2moxf+FvtX/pNnn/7fq
+        8//J+/7/yfz//8f7///E+///wfn9/7n1+v+m4+//js7h/3S20P9boML/RI+6/ziMvP8edKr/KmqU/4Ft
+        WiiBbVoTgW1aBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQfZ3/Toen/4q9z//G8vb/1P///9L/
+        ///Q/v//zv3//8v9///J/P//x/v//8T7///D+///wPv//776//+7+v//uPn//7X3/v+f4ez/dbTK/1B9
+        nf8qapT/gW1aHIFtWgyBbVoCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD1wjqN/sL/80/7+/9T/
+        ///U////0v///9D+///O/f//y/3//8n8///H+///xPv//8P7///A+///vvr//7v6//+4+f//tvn//7P4
+        //+u9v3/WpKq+EBvi6yBbVoOgW1aBIFtWgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARG6EC1J8
+        kLljjp/qp9LY/MXw8v/S////0P7//879///L/f//yfz//8f7///E+///w/v//8D7//+++v//u/r//7j5
+        //+m5u7/jMjU+laEmOtPeo2ncG1lC4FtWgOBbVoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAERuhB9Qe4+LUnyQ2E95jfFijZ/vdqGw8oi2wv+JuMT/lsbR/5TG0f+EtcL/grTB/W6e
+        r/Nah5rwTHiN8FB8kNJMdop/Tm18HIFtWgOBbVoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERuhCNEboQ/RG2DYERtg2BTfZGQUXuQi0Vt
+        gmJFbYJeRm2CQkhtgR2BbVoCgW1aAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAB/8AAAH8AAAA+AAAAHgAAAB4AAAAOAAAADgAAAA4AAAAOAA
+        AADgAAAA4AAAAOAAAADgAAAB4AAAAeAAAAPgAAAH4AAAD+AAAA/gAAAP4AAAD+AAAA/gAAAP4AAAD+AA
+        AA/gAAAP4AAAD+AAAB/4AAB//4AH////////////
+</value>
+  </data>
+  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>51</value>
+  </metadata>
+  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIFtWgGBbVoDgW1aBYFtWgeBbVoJgW1aCoFt
+        WguBbVoLgW1aCoFtWgmBbVoHgW1aCIFtWguBbVoPgW1aEoFtWhKBbVoOgW1aCIFtWgIAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIFtWgKBbVoFgW1aCoFtWhGBbVoVgW1aGYFt
+        WhyBbVofgW1aIYFtWiGBbVofgW1aHYFtWiJ2Yk9GclxIeG5ZRZprVUGsbFZClW1YQ3F1Xks8gW1aGIFt
+        WgqBbVoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIFtWgGBbVoEgW1aC4FtWhSBbVoeXWdrQU9l
+        cWBHZHV7SGR1fUJjeJhEZHaPSGR0f1JmcGVhZGVrc2FQsoh2Zuyik4f5urCn/8a+tv+2rKP+mot+935s
+        WuZqVECVdV1LMIFtWg+BbVoCAAAAAAAAAAAAAAAAAAAAAAAAAACBbVoBgW1aBoFtWhFeZ2oyP2N5mjpl
+        f+BCcYrnUIef6FeYsO9Tmrb/UqLC/0eYvP89ia/3PW6K/mtpY/mtoZb/2NTP/+Dc2P/d2NT/5OHd/+Xi
+        3//k4N3/1c/K/qCShv1sWEW8cV5IPoFtWg+BbVoBAAAAAAAAAAAAAAAAAAAAAIFtWgSBbVoTO26Kqzpp
+        hehaobznfdTq/4/k9P+M4vP/ftrw/3DR7f9iyOv/VL/o/0qu1f9tfHz/ua+m/+Lf3P/i39z/AI0A/6+8
+        qP/Z1dD/4d7a/+Lf3P/i39z/4d7b/6ickv9tWke6eF9NL4FtWgkAAAAAAAAAAAAAAAAAAAAAgW1aEzdq
+        huJDlLjuYsjq/3LS7v+B2/H/j+T0/4zi8/9+2vD/cNHt/2LI6/9Uvuf/ZYuV/7Clm//f29j/4NzZ/+Dc
+        2f8AjQD/AGYA/665pv/X0s7/39vY/+Dc2f/g3Nn/3trX/56Qhf1qVkORgW1aGIFtWgIAAAAAAAAAAAAA
+        AABaaG1WP5jC/0y55P9jyev/ctLu/4Hb8f+P5PT/jOLz/37a8P9w0e3/Ysjr/1uz0v+MiH7/1NDM/9zZ
+        1v/c2db/3NnW/wCNAP8xrVH/AGYA/625pv/Vz8v/29jV/9zZ1v/c2db/zcbB/3tpWORxYUw1gW1aBwAA
+        AAAAAAAAAAAAAFB9nf8/mML/TLnk/2PJ6/9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR7f9iyOv/ZaCz/6qh
+        lf/a1tP/2tbT/9rW0//g3Nr/AI0A/0/Rdv8xrVH/AGYA/7rHtf/a1tL/2dbT/9rW0//Y1NH/lIZ49W5Y
+        RWWBbVoMAAAAAAAAAAAAAAAAUH2d/z+Ywv9MueT/Y8nr/3LS7v+B2/H/j+T0/4zi8/9+2vD/cNHt/2LI
+        6/9tk5z/wbiw/9fT0P/Y1NH/5ePh//n5+P8AjQD/T9F2/zfEXf8xrVH/AGYA/8HPvv/h3dn/19PQ/9fT
+        0P+qn5X+a1dDiYFtWhAAAAAAAAAAAAAAAABQfZ3/P5jC/0y55P9jyev/ctLu/4Hb8f+P5PT/jOLz/37a
+        8P9w0e3/Ysjr/3OMkP/IwLr/2NTR/+nm5f/+/v7//////wCNAP9+4J7/aNiK/2jYiv9+4J7/AGcD/9Dg
+        0P/o5uX/19PR/7Wso/9sVkObgW1aDwAAAAAAAAAAAAAAAFB9nf8/mML/TLnk/2PI6v9owuH/abrX/2y4
+        0v9otM//XqnH/1aiwv9Pmrz/aoOK/8K4sP/r6Of//v39////////////AI0A/37gnv9o2Ir/fuCe/wFv
+        EP/Q4ND//v7+//39/f/k4uD/rKGX/nBZRYaBbVoLAAAAAAAAAAAAAAAAUH2d/z+Ywv9Mq9X/U6bM/1ut
+        0P9uwNz/fc7j/4DS5/930Of/bczp/2LI6/9morX/ta6l//38/P////////////////8AjQD/fuCe/37g
+        nv8BbxD/0ODQ//7+/v////////////f29f+dj4P1cVxHYIFtWgYAAAAAAAAAAAAAAABQfZ3/RJjB/0ym
+        0P9gwuX/ctLu/4Hb8f+P5PT/jOLz/37a8P9w0e3/Ysjr/1u01v+XlYz/8vDv/////////////////wCN
+        AP9+4J7/AW8Q/9Dg0P/+/v7/////////////////6+jm/ol3ZuNzXU4pgW1aAQAAAAAAAAAAAAAAAFB9
+        nf9EmMH/TLfi/2PJ6/9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR7f9iyOv/VL/o/2qUoP/Fu7L//v7+////
+        ////////AI0A/wFvEP/Q4ND//v7+//////////////////39/f+zp5z8dV5LhoFtWgcAAAAAAAAAAAAA
+        AAAAAAAAUH2d/z+Ywv9MueT/Y8nr/3LS7v+B2/H/j+T0/4zi8/9+2vD/cNHt/2LI6/9Uv+j/SrHb/3aL
+        jv/Qxr///v7+//////8AjQD/0eHS//7+/v/////////////////9/f3/wLat/31qWLN7X00agW1aAQAA
+        AAAAAAAAAAAAAAAAAABQfZ3/P5jC/0y55P9jyev/ctLu/4Hb8f+P5PT/jOLz/37a8P9w0e3/Ysjr/1S/
+        6P9EtuX/PKDP/3CFjP/CuK//7+7r//79/f/////////////////9/f3/7ero/raqoP2Ba1q1fGNRJoFt
+        WgIAAAAAAAAAAAAAAAAAAAAAAAAAAFB9nf8/mML/TLnk/2PJ6/9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR
+        7f9iyOv/VL/o/0S25f8vqOH/IpjU/0yBmv+OjYf/squj/87Fvv/Z0cz/ysK7/62hl/+Vg3LofWdUkHVk
+        UxqBbVoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUH2d/z+Ywv9MueT/Y8jq/2jC4f9putf/bLjS/2i0
+        z/9eqcf/VqLC/0+avP9LmLv/Rpa8/z2Quf8yi7n/JoW4/yqBsv86gKL/SnuU/153gf9TcID/SWuA/4Fr
+        WUqBbVoYgW1aBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQfZ3/P5jC/0yr1f9Tpsz/W63Q/27A
+        3P99zuP/gNLn/3fQ5/9tzOn/Ysjr/1O85f9Est//M6LX/yGW0f8Vicn/GoXA/yOCtv8ufqn/MX2n/yJ0
+        p/8qapT/gW1aLoFtWhaBbVoEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFB9nf9EmMH/TKbQ/2DC
+        5f9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR7f9iyOv/VL/o/0S25f8vqOH/GZvd/wSO2f8Ai9j/AIvY/wSK
+        1P8sgK3/KHSi/ypqlP+BbVotgW1aFoFtWgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUH2d/0SY
+        wf9Mt+L/Y8nr/3LS7v+B2/H/j+T0/4zi8/9+2vD/cNHt/2LI6/9Uv+j/RLbl/y+o4f8Zm93/BI7Z/wCL
+        2P8Ai9j/A4rV/yCFvf8edKr/KmqU/4FtWi2BbVoWgW1aBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABQfZ3/P5jC/0y55P9jyev/ctLu/4Hb8f+P5PT/jOLz/37a8P9w0e3/Ysjr/1S/6P9EtuX/L6jh/xmb
+        3f8Ejtn/AIvY/wCL2P8DitX/IIW9/x50qv8qapT/gW1aLYFtWhaBbVoEAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAFB9nf8/mML/TLnk/2PJ6/9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR7f9iyOv/VL/o/0S2
+        5f8vqOH/GZvd/wSO2f8Ai9j/AIvY/wOK1f8ghb3/HnSq/ypqlP+BbVotgW1aF4FtWgQAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAUH2d/z+Ywv9MueT/Ycbp/2K+4P9is9X/XKfL/1Sexf9Nlr//S5W//0yW
+        v/9KlL//SJO//0eUv/9FlsP/OZXI/x+Ozf8Mi9P/BIrU/yCFvf8edKr/KmqU/4FtWiyBbVoWgW1aBAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQfZ3/P5jC/0ueyP9Okrn/aajF/4W+1f+k2ef/t+rz/8n7
+        /v/J/P//x/v//8T7///B+f3/ufX6/6bj7/+OzuH/dLbQ/1ugwv9Ej7r/OIy8/x50qv8qapT/gW1aKIFt
+        WhOBbVoEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFB9nf9Oh6f/ir3P/8by9v/U////0v///9D+
+        ///O/f//y/3//8n8///H+///xPv//8P7///A+///vvr//7v6//+4+f//tff+/5/h7P91tMr/UH2d/ypq
+        lP+BbVocgW1aDIFtWgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPXCOo3+wv/zT/v7/1P///9T/
+        ///S////0P7//879///L/f//yfz//8f7///E+///w/v//8D7//+++v//u/r//7j5//+2+f//s/j//672
+        /f9akqr4QG+LrIFtWg6BbVoEgW1aAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEboQLUnyQuWOO
+        n+qn0tj8xfDy/9L////Q/v//zv3//8v9///J/P//x/v//8T7///D+///wPv//776//+7+v//uPn//6bm
+        7v+MyNT6VoSY6096jadwbWULgW1aA4FtWgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAARG6EH1B7j4tSfJDYT3mN8WKNn+92obDyiLbC/4m4xP+WxtH/lMbR/4S1wv+CtMH9bp6v81qH
+        mvBMeI3wUHyQ0kx2in9ObXwcgW1aA4FtWgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARG6EI0RuhD9EbYNgRG2DYFN9kZBRe5CLRW2CYkVt
+        gl5GbYJCSG2BHYFtWgKBbVoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAA/wAAH/wAAAfwAAAD4AAAAeAAAAHgAAAA4AAAAOAAAADgAAAA4AAAAOAA
+        AADgAAAA4AAAAOAAAAHgAAAB4AAAA+AAAAfgAAAP4AAAD+AAAA/gAAAP4AAAD+AAAA/gAAAP4AAAD+AA
+        AA/gAAAP4AAAH/gAAH//gAf///////////8oAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBbVoBgW1aA4FtWgWBbVoHgW1aCYFt
+        WgqBbVoLgW1aC4FtWgqBbVoJgW1aB4FtWgiBbVoLgW1aD4FtWhKBbVoSgW1aDoFtWgiBbVoCAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBbVoCgW1aBYFtWgqBbVoRgW1aFYFt
+        WhmBbVocgW1aH4FtWiGBbVohgW1aH4FtWh2BbVoidmJPRnJcSHhuWUWaa1VBrGxWQpVtWENxdV5LPIFt
+        WhiBbVoKgW1aAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBbVoBgW1aBIFtWguBbVoUgW1aHl1n
+        a0FPZXFgR2R1e0hkdX1CY3iYRGR2j0hkdH9SZnBlYWRla3NhULKIdmbsopOH+bqwp//Gvrb/tqyj/pqL
+        fvd+bFrmalRAlXVdSzCBbVoPgW1aAgAAAAAAAAAAAAAAAAAAAAAAAAAAgW1aAYFtWgaBbVoRXmdqMj9j
+        eZo6ZX/gQnGK51CHn+hXmLDvU5q2/1Kiwv9HmLz/PYmv9z1uiv5raWP5raGW/9jUz//g3Nj/3djU/+Th
+        3f/l4t//5ODd/9XPyv6gkob9bFhFvHFeSD6BbVoPgW1aAQAAAAAAAAAAAAAAAAAAAACBbVoEgW1aEztu
+        iqs6aYXoWqG8533U6v+P5PT/jOLz/37a8P9w0e3/Ysjr/1S/6P9KrtX/bXx8/7mvpv/i39z/4t/c/wCN
+        AP+vvKj/2dXQ/+He2v/i39z/4t/c/+He2/+onJL/bVpHunhfTS+BbVoJAAAAAAAAAAAAAAAAAAAAAIFt
+        WhM3aobiQ5S47mLI6v9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR7f9iyOv/VL7n/2WLlf+wpZv/39vY/+Dc
+        2f/g3Nn/AI0A/wBmAP+uuab/19LO/9/b2P/g3Nn/4NzZ/97a1/+ekIX9alZDkYFtWhiBbVoCAAAAAAAA
+        AAAAAAAAWmhtVj+Ywv9MueT/Y8nr/3LS7v+B2/H/j+T0/4zi8/9+2vD/cNHt/2LI6/9bs9L/jIh+/9TQ
+        zP/c2db/3NnW/9zZ1v8AjQD/Ma1R/wBmAP+tuab/1c/L/9vY1f/c2db/3NnW/83Gwf97aVjkcWFMNYFt
+        WgcAAAAAAAAAAAAAAABQfZ3/P5jC/0y55P9jyev/ctLu/4Hb8f+P5PT/jOLz/37a8P9w0e3/Ysjr/2Wg
+        s/+qoZX/2tbT/9rW0//a1tP/4Nza/wCNAP9P0Xb/Ma1R/wBmAP+6x7X/2tbS/9nW0//a1tP/2NTR/5SG
+        ePVuWEVlgW1aDAAAAAAAAAAAAAAAAFB9nf8/mML/TLnk/2PJ6/9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR
+        7f9iyOv/bZOc/8G4sP/X09D/2NTR/+Xj4f/5+fj/AI0A/0/Rdv83xF3/Ma1R/wBmAP/Bz77/4d3Z/9fT
+        0P/X09D/qp+V/mtXQ4mBbVoQAAAAAAAAAAAAAAAAUH2d/z+Ywv9MueT/Y8nr/3LS7v+B2/H/j+T0/4zi
+        8/9+2vD/cNHt/2LI6/9zjJD/yMC6/9jU0f/p5uX//v7+//////8AjQD/fuCe/2jYiv9o2Ir/fuCe/wBn
+        A//Q4ND/6Obl/9fT0f+1rKP/bFZDm4FtWg8AAAAAAAAAAAAAAABQfZ3/P5jC/0y55P9jyOr/aMLh/2m6
+        1/9suNL/aLTP/16px/9WosL/T5q8/2qDiv/CuLD/6+jn//79/f///////////wCNAP9+4J7/aNiK/37g
+        nv8BbxD/0ODQ//7+/v/9/f3/5OLg/6yhl/5wWUWGgW1aCwAAAAAAAAAAAAAAAFB9nf8/mML/TKvV/1Om
+        zP9brdD/bsDc/33O4/+A0uf/d9Dn/23M6f9iyOv/ZqK1/7Wupf/9/Pz/////////////////AI0A/37g
+        nv9+4J7/AW8Q/9Dg0P/+/v7////////////39vX/nY+D9XFcR2CBbVoGAAAAAAAAAAAAAAAAUH2d/0SY
+        wf9MptD/YMLl/3LS7v+B2/H/j+T0/4zi8/9+2vD/cNHt/2LI6/9btNb/l5WM//Lw7///////////////
+        //8AjQD/fuCe/wFvEP/Q4ND//v7+/////////////////+vo5v6Jd2bjc11OKYFtWgEAAAAAAAAAAAAA
+        AABQfZ3/RJjB/0y34v9jyev/ctLu/4Hb8f+P5PT/jOLz/37a8P9w0e3/Ysjr/1S/6P9qlKD/xbuy//7+
+        /v///////////wCNAP8BbxD/0ODQ//7+/v/////////////////9/f3/s6ec/HVeS4aBbVoHAAAAAAAA
+        AAAAAAAAAAAAAFB9nf8/mML/TLnk/2PJ6/9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR7f9iyOv/VL/o/0qx
+        2/92i47/0Ma///7+/v//////AI0A/9Hh0v/+/v7//////////////////f39/8C2rf99alize19NGoFt
+        WgEAAAAAAAAAAAAAAAAAAAAAUH2d/z+Ywv9MueT/Y8nr/3LS7v+B2/H/j+T0/4zi8/9+2vD/cNHt/2LI
+        6/9Uv+j/RLbl/zygz/9whYz/wriv/+/u6//+/f3//////////////////f39/+3q6P62qqD9gWtatXxj
+        USaBbVoCAAAAAAAAAAAAAAAAAAAAAAAAAABQfZ3/P5jC/0y55P9jyev/ctLu/4Hb8f+P5PT/jOLz/37a
+        8P9w0e3/Ysjr/1S/6P9EtuX/L6jh/yKY1P9MgZr/jo2H/7Kro//Oxb7/2dHM/8rCu/+toZf/lYNy6H1n
+        VJB1ZFMagW1aAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFB9nf8/mML/TLnk/2PI6v9owuH/abrX/2y4
+        0v9otM//XqnH/1aiwv9Pmrz/S5i7/0aWvP89kLn/Mou5/yaFuP8qgbL/OoCi/0p7lP9ed4H/U3CA/0lr
+        gP+Ba1lKgW1aGIFtWgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUH2d/z+Ywv9Mq9X/U6bM/1ut
+        0P9uwNz/fc7j/4DS5/930Of/bczp/2LI6/9TvOX/RLLf/zOi1/8hltH/FYnJ/xqFwP8jgrb/Ln6p/zF9
+        p/8idKf/KmqU/4FtWi6BbVoWgW1aBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQfZ3/RJjB/0ym
+        0P9gwuX/ctLu/4Hb8f+P5PT/jOLz/37a8P9w0e3/Ysjr/1S/6P9EtuX/L6jh/xmb3f8Ejtn/AIvY/wCL
+        2P8EitT/LICt/yh0ov8qapT/gW1aLYFtWhaBbVoEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFB9
+        nf9EmMH/TLfi/2PJ6/9y0u7/gdvx/4/k9P+M4vP/ftrw/3DR7f9iyOv/VL/o/0S25f8vqOH/GZvd/wSO
+        2f8Ai9j/AIvY/wOK1f8ghb3/HnSq/ypqlP+BbVotgW1aFoFtWgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAUH2d/z+Ywv9MueT/Y8nr/3LS7v+B2/H/j+T0/4zi8/9+2vD/cNHt/2LI6/9Uv+j/RLbl/y+o
+        4f8Zm93/BI7Z/wCL2P8Ai9j/A4rV/yCFvf8edKr/KmqU/4FtWi2BbVoWgW1aBAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABQfZ3/P5jC/0y55P9jyev/ctLu/4Hb8f+P5PT/jOLz/37a8P9w0e3/Ysjr/1S/
+        6P9EtuX/L6jh/xmb3f8Ejtn/AIvY/wCL2P8DitX/IIW9/x50qv8qapT/gW1aLYFtWheBbVoEAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFB9nf8/mML/TLnk/2HG6f9ivuD/YrPV/1yny/9UnsX/TZa//0uV
+        v/9Mlr//SpS//0iTv/9HlL//RZbD/zmVyP8fjs3/DIvT/wSK1P8ghb3/HnSq/ypqlP+BbVosgW1aFoFt
+        WgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUH2d/z+Ywv9Lnsj/TpK5/2moxf+FvtX/pNnn/7fq
+        8//J+/7/yfz//8f7///E+///wfn9/7n1+v+m4+//js7h/3S20P9boML/RI+6/ziMvP8edKr/KmqU/4Ft
+        WiiBbVoTgW1aBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQfZ3/Toen/4q9z//G8vb/1P///9L/
+        ///Q/v//zv3//8v9///J/P//x/v//8T7///D+///wPv//776//+7+v//uPn//7X3/v+f4ez/dbTK/1B9
+        nf8qapT/gW1aHIFtWgyBbVoCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD1wjqN/sL/80/7+/9T/
+        ///U////0v///9D+///O/f//y/3//8n8///H+///xPv//8P7///A+///vvr//7v6//+4+f//tvn//7P4
+        //+u9v3/WpKq+EBvi6yBbVoOgW1aBIFtWgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARG6EC1J8
+        kLljjp/qp9LY/MXw8v/S////0P7//879///L/f//yfz//8f7///E+///w/v//8D7//+++v//u/r//7j5
+        //+m5u7/jMjU+laEmOtPeo2ncG1lC4FtWgOBbVoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAERuhB9Qe4+LUnyQ2E95jfFijZ/vdqGw8oi2wv+JuMT/lsbR/5TG0f+EtcL/grTB/W6e
+        r/Nah5rwTHiN8FB8kNJMdop/Tm18HIFtWgOBbVoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERuhCNEboQ/RG2DYERtg2BTfZGQUXuQi0Vt
+        gmJFbYJeRm2CQkhtgR2BbVoCgW1aAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAB/8AAAH8AAAA+AAAAHgAAAB4AAAAOAAAADgAAAA4AAAAOAA
+        AADgAAAA4AAAAOAAAADgAAAB4AAAAeAAAAPgAAAH4AAAD+AAAA/gAAAP4AAAD+AAAA/gAAAP4AAAD+AA
+        AA/gAAAP4AAAD+AAAB/4AAB//4AH////////////
+</value>
+  </data>
+</root>
\ No newline at end of file
Added +455 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/MiniSqlQuery.csproj b/minisqlquery-master/src/MiniSqlQuery/MiniSqlQuery.csproj
new file mode 100644
index 0000000..700393e
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/MiniSqlQuery.csproj
@@ -0,0 +1,455 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{0164E1CD-8EC2-4C9E-8D67-2575221D8707}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>MiniSqlQuery</RootNamespace>
+    <AssemblyName>MiniSqlQuery</AssemblyName>
+    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <StartupObject>MiniSqlQuery.App</StartupObject>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>MiniSqlQuery.snk</AssemblyOriginatorKeyFile>
+    <ApplicationIcon>App.ico</ApplicationIcon>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\Build\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\Build\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release - No Tests|AnyCPU' ">
+    <OutputPath>bin\Release - No Tests\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.VisualBasic" />
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\CommonAssemblyInfo.cs">
+      <Link>CommonAssemblyInfo.cs</Link>
+    </Compile>
+    <Compile Include="AboutForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="AboutForm.Designer.cs">
+      <DependentUpon>AboutForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="App.cs" />
+    <Compile Include="ApplicationSettings.cs" />
+    <Compile Include="BasicEditors.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Commands\NewFileCommand.cs" />
+    <Compile Include="Commands\OpenFileCommand.cs" />
+    <Compile Include="Commands\OpenRecentFileCommand.cs" />
+    <Compile Include="Commands\SaveFileAsCommand.cs" />
+    <Compile Include="Commands\SaveFileCommand.cs" />
+    <Compile Include="Commands\SaveResultsAsDataSetCommand.cs" />
+    <Compile Include="Commands\ShowAboutCommand.cs" />
+    <Compile Include="Commands\ShowOptionsFormCommand.cs" />
+    <Compile Include="CopyForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="CopyForm.Designer.cs">
+      <DependentUpon>CopyForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="BasicEditor.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="BasicEditor.Designer.cs">
+      <DependentUpon>BasicEditor.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ErrorForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="ErrorForm.Designer.cs">
+      <DependentUpon>ErrorForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="MainForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="MainForm.Designer.cs">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="NewFileForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="NewFileForm.Designer.cs">
+      <DependentUpon>NewFileForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="OptionsForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="OptionsForm.Designer.cs">
+      <DependentUpon>OptionsForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="PlugIns\ConnectionStringsManager\Commands\EditConnectionsFormCommand.cs" />
+    <Compile Include="PlugIns\ConnectionStringsManager\ConnectionStringBuilderForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="PlugIns\ConnectionStringsManager\ConnectionStringBuilderForm.Designer.cs">
+      <DependentUpon>ConnectionStringBuilderForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="PlugIns\ConnectionStringsManager\DbConnectionsForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="PlugIns\ConnectionStringsManager\DbConnectionsForm.Designer.cs">
+      <DependentUpon>DbConnectionsForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="PlugIns\ConnectionStringsManager\GenericConnectionStringBuilder.cs" />
+    <Compile Include="PlugIns\ConnectionStringsManager\ConnectionStringsManagerLoader.cs" />
+    <Compile Include="PlugIns\CoreApplicationPlugIn.cs" />
+    <Compile Include="PlugIns\CoreMiniSqlQueryConfiguration.cs" />
+    <Compile Include="PlugIns\DatabaseInspector\Commands\CopyTableNameCommand.cs" />
+    <Compile Include="PlugIns\DatabaseInspector\Commands\GenerateDeleteStatementCommand.cs" />
+    <Compile Include="PlugIns\DatabaseInspector\Commands\GenerateInsertStatementCommand.cs" />
+    <Compile Include="PlugIns\DatabaseInspector\Commands\GenerateSelectCountStatementCommand.cs" />
+    <Compile Include="PlugIns\DatabaseInspector\Commands\GenerateSelectStatementCommand.cs" />
+    <Compile Include="PlugIns\DatabaseInspector\Commands\GenerateStatementCommandBase.cs" />
+    <Compile Include="PlugIns\DatabaseInspector\Commands\GenerateUpdateStatementCommand.cs" />
+    <Compile Include="PlugIns\DatabaseInspector\Commands\LocateFkReferenceColumnCommand.cs" />
+    <Compile Include="PlugIns\DatabaseInspector\Commands\ShowDatabaseInspectorCommand.cs" />
+    <Compile Include="PlugIns\DatabaseInspector\Commands\ShowFindObjectFormCommand.cs" />
+    <Compile Include="PlugIns\DatabaseInspector\Commands\TruncateTableCommand.cs" />
+    <Compile Include="PlugIns\DatabaseInspector\DatabaseInspectorForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="PlugIns\DatabaseInspector\DatabaseInspectorForm.Designer.cs">
+      <DependentUpon>DatabaseInspectorForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="PlugIns\DatabaseInspector\DatabaseInspectorLoader.cs" />
+    <Compile Include="PlugIns\DatabaseInspector\FindObjectForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="PlugIns\DatabaseInspector\FindObjectForm.Designer.cs">
+      <DependentUpon>FindObjectForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="PlugIns\SearchTools\Commands\FindNextStringCommand.cs" />
+    <Compile Include="PlugIns\SearchTools\Commands\ReplaceStringCommand.cs" />
+    <Compile Include="PlugIns\SearchTools\Commands\ShowFindTextFormCommand.cs" />
+    <Compile Include="PlugIns\SearchTools\Commands\ShowGoToLineFormCommand.cs" />
+    <Compile Include="PlugIns\SearchTools\FindReplaceForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="PlugIns\SearchTools\FindReplaceForm.designer.cs">
+      <DependentUpon>FindReplaceForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="PlugIns\SearchTools\GoToLineForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="PlugIns\SearchTools\GoToLineForm.designer.cs">
+      <DependentUpon>GoToLineForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="PlugIns\SearchTools\SearchToolsLoader.cs" />
+    <Compile Include="PlugIns\SearchTools\SearchToolsCommon.cs" />
+    <Compile Include="PlugIns\TemplateViewer\Commands\NewQueryByTemplateCommand.cs" />
+    <Compile Include="PlugIns\TemplateViewer\Commands\RunTemplateCommand.cs" />
+    <Compile Include="PlugIns\TemplateViewer\ITemplateEditor.cs" />
+    <Compile Include="PlugIns\TemplateViewer\TemplateData.cs" />
+    <Compile Include="PlugIns\TemplateViewer\TemplateHost.cs" />
+    <Compile Include="PlugIns\TemplateViewer\TemplateEditorForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="PlugIns\TemplateViewer\TemplateEditorForm.Designer.cs">
+      <DependentUpon>TemplateEditorForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="PlugIns\TemplateViewer\TemplateResources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>TemplateResources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="PlugIns\TemplateViewer\TemplateResult.cs" />
+    <Compile Include="PlugIns\TemplateViewer\TemplateViewerLoader.cs" />
+    <Compile Include="PlugIns\TemplateViewer\TemplateModel.cs" />
+    <Compile Include="PlugIns\TemplateViewer\TemplateViewForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="PlugIns\TemplateViewer\TemplateViewForm.Designer.cs">
+      <DependentUpon>TemplateViewForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="PlugIns\TextGenerator\Commands\RunTextGeneratorCommand.cs" />
+    <Compile Include="PlugIns\TextGenerator\TextGeneratorLoader.cs" />
+    <Compile Include="PlugIns\TextGenerator\TextGeneratorService.cs" />
+    <Compile Include="PlugIns\ViewTable\Commands\ViewTableFormCommand.cs" />
+    <Compile Include="PlugIns\ViewTable\Commands\ViewTableFromInspectorCommand.cs" />
+    <Compile Include="PlugIns\ViewTable\ViewTableLoader.cs" />
+    <Compile Include="PlugIns\ViewTable\ViewTableForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="PlugIns\ViewTable\ViewTableForm.Designer.cs">
+      <DependentUpon>ViewTableForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Content Include="x64\SQLite.Interop.dll">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+    <Content Include="x86\SQLite.Interop.dll">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+    <EmbeddedResource Include="AboutForm.resx">
+      <DependentUpon>AboutForm.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="BasicEditor.resx">
+      <DependentUpon>BasicEditor.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="CopyForm.resx">
+      <DependentUpon>CopyForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="ErrorForm.resx">
+      <DependentUpon>ErrorForm.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="MainForm.resx">
+      <DependentUpon>MainForm.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="NewFileForm.resx">
+      <DependentUpon>NewFileForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="OptionsForm.resx">
+      <DependentUpon>OptionsForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="PlugIns\ConnectionStringsManager\ConnectionStringBuilderForm.resx">
+      <DependentUpon>ConnectionStringBuilderForm.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="PlugIns\ConnectionStringsManager\DbConnectionsForm.resx">
+      <DependentUpon>DbConnectionsForm.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="PlugIns\DatabaseInspector\DatabaseInspectorForm.resx">
+      <DependentUpon>DatabaseInspectorForm.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="PlugIns\DatabaseInspector\FindObjectForm.resx">
+      <DependentUpon>FindObjectForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="PlugIns\SearchTools\FindReplaceForm.resx">
+      <DependentUpon>FindReplaceForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="PlugIns\SearchTools\GoToLineForm.resx">
+      <DependentUpon>GoToLineForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="PlugIns\TemplateViewer\TemplateEditorForm.resx">
+      <DependentUpon>TemplateEditorForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="PlugIns\TemplateViewer\TemplateResources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>TemplateResources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="PlugIns\TemplateViewer\TemplateViewForm.resx">
+      <DependentUpon>TemplateViewForm.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="PlugIns\ViewTable\ViewTableForm.resx">
+      <DependentUpon>ViewTableForm.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <SubType>Designer</SubType>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+    <EmbeddedResource Include="QueryForm.resx">
+      <DependentUpon>QueryForm.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <None Include="app.config">
+      <SubType>Designer</SubType>
+    </None>
+    <None Include="MiniSqlQuery.snk" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </None>
+    <Content Include="SQL-Mode.xshd">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <None Include="Templates\Create Table.sql.mt">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="Templates\Sample - CSharp Model.cs.mt">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+    <None Include="Templates\New.sql.mt">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="Templates\Sample - Tables and Columns.txt.mt">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </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>
+    <Compile Include="QueryForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="QueryForm.Designer.cs">
+      <DependentUpon>QueryForm.cs</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="App.ico" />
+    <Content Include="Images\accept.png" />
+    <Content Include="Images\cancel.png" />
+    <Content Include="Images\cog.png" />
+    <Content Include="Images\cross.png" />
+    <Content Include="Images\database.png" />
+    <Content Include="Images\database_add.png" />
+    <Content Include="Images\database_delete.png" />
+    <Content Include="Images\database_edit.png" />
+    <Content Include="Images\database_error.png" />
+    <Content Include="Images\database_refresh.png" />
+    <Content Include="Images\disk.png" />
+    <Content Include="Images\disk_multiple.png" />
+    <Content Include="Images\email.png" />
+    <Content Include="Images\email_go.png" />
+    <Content Include="Images\folder_page.png" />
+    <Content Include="Images\lightning.png" />
+    <Content Include="Images\page.png" />
+    <Content Include="Images\page_white.png" />
+    <Content Include="Images\plugin.png" />
+    <Content Include="Images\plugin_go.png" />
+    <Content Include="Images\plugin_link.png" />
+    <Content Include="Images\table_save.png" />
+    <Content Include="License-MiniSqlQuery.txt">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="PlugIns\ViewTable\table.ico" />
+    <Content Include="script.ico" />
+    <None Include="Mode.xsd" />
+    <None Include="MT-Mode.xshd">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="PlugIns\TemplateViewer\TemplateHelp.rtf" />
+    <None Include="Templates\Sample - Advanced Looping.txt.mt">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="Templates\Sample - Plugin Access.txt.mt">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="Templates\Sample - Tables and Columns and DATA.txt.mt">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="Templates\New.txt.mt">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="Templates\New.xml.mt">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="Templates\Sample - WPF View Model.cs.mt">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\MiniSqlQuery.Core\MiniSqlQuery.Core.csproj">
+      <Project>{B819CF6A-B5FD-4E85-842D-FD855F856A5A}</Project>
+      <Name>MiniSqlQuery.Core</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="DockPanelSuite">
+      <Version>2.9.0</Version>
+    </PackageReference>
+    <PackageReference Include="ICSharpCode.TextEditor">
+      <Version>3.2.1.6466</Version>
+    </PackageReference>
+    <PackageReference Include="Ninject">
+      <Version>3.3.4</Version>
+    </PackageReference>
+    <PackageReference Include="System.Data.SQLite">
+      <Version>1.0.112</Version>
+    </PackageReference>
+  </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>
+  -->
+</Project>
\ No newline at end of file
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/MiniSqlQuery.snk b/minisqlquery-master/src/MiniSqlQuery/MiniSqlQuery.snk
new file mode 100644
index 0000000..9b2560f
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/MiniSqlQuery.snk differ
Added +289 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Mode.xsd b/minisqlquery-master/src/MiniSqlQuery/Mode.xsd
new file mode 100644
index 0000000..e67b656
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Mode.xsd
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+	<xsd:annotation>
+		<xsd:documentation>
+			This schema defines the syntax for mode definitions in SharpDevelop.
+			The schema can be simplified quite a bit but it does the job as is.
+		
+		
+			If you are using this file as a reference it is probably easiest to scroll to
+			the botton to find the definition of the root element called SyntaxDefinition and
+			then unwind the different type definitions and refernces.
+		
+			Note on coloring:
+			Many tags define how some symbol should be colored. If a specific symbol
+			can not be matched onto either a Span definition, Keyword, or a Digit/Number it
+			will be rendered in the current default color. Which is the default color of the
+			current span or the default color of the mode as a whole if no span has been entered.
+		</xsd:documentation>
+	</xsd:annotation>
+	
+	<!-- Defines the default rendering of the mode -->
+	<xsd:complexType name="EnvironmentEntry">
+		<xsd:attribute name="bold" type="xsd:boolean" />
+		<xsd:attribute name="italic" type="xsd:boolean" />
+		<xsd:attribute name="color" type="xsd:string" />
+		<xsd:attribute name="bgcolor" type="xsd:string" />
+	</xsd:complexType>
+
+	<xsd:complexType name="CustomEnvironmentEntry">
+		<xsd:attribute name="name" type="xsd:string" use="required" />
+		<xsd:attribute name="bold" type="xsd:boolean" />
+		<xsd:attribute name="italic" type="xsd:boolean" />
+		<xsd:attribute name="color" type="xsd:string" />
+		<xsd:attribute name="bgcolor" type="xsd:string" />
+	</xsd:complexType>
+	
+	<!-- The environment tag defines the coloring of various attributes in SharpDevelop -->
+	<xsd:complexType name="Environment">
+
+		<xsd:choice minOccurs="0" maxOccurs="unbounded">
+			<xsd:element name="Default" type="EnvironmentEntry" minOccurs="0" maxOccurs="1" />
+			<xsd:element name="Selection" type="EnvironmentEntry" minOccurs="0" maxOccurs="1" />
+			<xsd:element name="VRuler" type="EnvironmentEntry" minOccurs="0" maxOccurs="1" />
+			<xsd:element name="InvalidLines" type="EnvironmentEntry" minOccurs="0" maxOccurs="1" />
+			<xsd:element name="CaretMarker" type="EnvironmentEntry" minOccurs="0" maxOccurs="1" />
+			<xsd:element name="CaretLine" type="EnvironmentEntry" minOccurs="0" maxOccurs="1" />
+
+			<xsd:element name="LineNumbers" type="EnvironmentEntry" minOccurs="0" maxOccurs="1" />
+
+			<xsd:element name="FoldLine" type="EnvironmentEntry" minOccurs="0" maxOccurs="1" />
+			<xsd:element name="FoldMarker" type="EnvironmentEntry" minOccurs="0" maxOccurs="1" />
+			<xsd:element name="SelectedFoldLine" type="EnvironmentEntry" minOccurs="0" maxOccurs="1" />
+
+			<xsd:element name="EOLMarkers" type="EnvironmentEntry" minOccurs="0" maxOccurs="1" />
+			<xsd:element name="SpaceMarkers" type="EnvironmentEntry" minOccurs="0" maxOccurs="1" />
+			<xsd:element name="TabMarkers" type="EnvironmentEntry" minOccurs="0" maxOccurs="1" />
+
+			<xsd:element name="Custom" type="CustomEnvironmentEntry" minOccurs="0" maxOccurs="unbounded" />
+		</xsd:choice>
+	</xsd:complexType>
+
+	<xsd:complexType name="Properties">
+		<xsd:sequence>
+			<xsd:element name="Property" type="Property" minOccurs="0" maxOccurs="unbounded" />
+		</xsd:sequence>
+	</xsd:complexType>
+
+	<xsd:complexType name="Property">
+		<!-- The actual KeyWord, typically reserved words or symbols in a programming language -->
+		<xsd:attribute name="name" type="xsd:string" />
+		<xsd:attribute name="value" type="xsd:string" />
+	</xsd:complexType>
+	
+	<!-- The Digits tag defines the color for rendering Digits-->
+	<xsd:complexType name="Digits">
+		<xsd:attribute name="name" type="xsd:string" />
+		<xsd:attribute name="bold" type="xsd:boolean" />
+		<xsd:attribute name="italic" type="xsd:boolean" />
+		<xsd:attribute name="color" type="xsd:string" />
+		<xsd:attribute name="bgcolor" type="xsd:string" />
+	</xsd:complexType>
+	
+	<!-- Defines the delimiting characters of the syntax, e.g., the characters that, "break up" a line
+    into separate symbols, typically key words. It is not necessary, or desirable to include the
+    characters that denot the start or end of a span. Space and Tab are implicitly defined as delimeters
+    and they don't need to be includeded explicitly (this will probably be changed at some future time).-->
+	<xsd:complexType name="Delimiters">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:string"></xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+	
+	<!-- The beginning symbol of a Span -->
+	<xsd:complexType name="Begin">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:string">
+				<xsd:attribute name="singleword" type="xsd:boolean" />
+				<xsd:attribute name="startofline" type="xsd:boolean" />
+				<!-- The default rendering style for the Begin symbol. If not specified
+					 the defaul rendering style for the span will be used. -->
+				<xsd:attribute name="bold" type="xsd:boolean" />
+				<xsd:attribute name="italic" type="xsd:boolean" />
+				<xsd:attribute name="color" type="xsd:string" />
+				<xsd:attribute name="bgcolor" type="xsd:string" />
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+	
+	<!-- The end symbol of a Span -->
+	<xsd:complexType name="End">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:string">
+				<xsd:attribute name="singleword" type="xsd:boolean" />
+				<!-- The default rendering style for the End symbol. If not specified
+					 the defaul rendering style for the span will be used. -->
+				<xsd:attribute name="bold" type="xsd:boolean" />
+				<xsd:attribute name="italic" type="xsd:boolean" />
+				<xsd:attribute name="color" type="xsd:string" />
+				<xsd:attribute name="bgcolor" type="xsd:string" />
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+
+	<xsd:complexType name="Span">
+		<xsd:sequence>
+			<!-- Defines the symbol that indicates the beginning of the span. -->
+			<xsd:element name="Begin" type="Begin" />
+			<!-- Defines the symbol that indicates the end of the span. May be omitted for
+				 one-line spans. -->
+			<xsd:element name="End" minOccurs="0" type="End" />
+		</xsd:sequence>
+		<!-- The name of the span definition -->
+		<xsd:attribute name="name" type="xsd:string" use="required" />
+		<!-- Defines the rule set that is applicable in the Span. May be omitted. -->
+		<xsd:attribute name="rule" type="xsd:string" />
+		<!-- Defines wether the Span should terminate automatically at the end of line. Typical examples
+       		 include one-line comments such as // in C++ or REM in Windows .Bat files. -->
+		<xsd:attribute name="stopateol" type="xsd:boolean" />
+		
+		<!-- OBSOLUTE: Defines whether C-style escape sequences using \ are applicable or not in the span. -->
+		<xsd:attribute name="noescapesequences" type="xsd:boolean" />
+		
+		<!-- defines the escape character -->
+		<xsd:attribute name="escapecharacter" type="xsd:string" />
+		
+		<!-- The default rendering style for the span -->
+		<xsd:attribute name="bold" type="xsd:boolean" />
+		<xsd:attribute name="italic" type="xsd:boolean" />
+		<xsd:attribute name="color" type="xsd:string" />
+		<xsd:attribute name="bgcolor" type="xsd:string" />
+	</xsd:complexType>
+
+	<xsd:complexType name="MarkPrevious">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:string">
+				<!-- Svante Lidman, looking in the code it is a bit unclear what the intent is here... -->
+				<xsd:attribute name="markmarker" type="xsd:boolean" />
+				<!-- The rendering style to be used -->
+				<xsd:attribute name="bold" type="xsd:boolean" />
+				<xsd:attribute name="italic" type="xsd:boolean" />
+				<xsd:attribute name="color" type="xsd:string" />
+				<xsd:attribute name="bgcolor" type="xsd:string" />
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+	
+	<!-- Allows you to define the coloring of the symbol that follows a specified symbol -->
+	<xsd:complexType name="MarkFollowing">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:string">
+				<!-- Svante Lidman, looking in the code it is a bit unclear what the intent is here... -->
+				<xsd:attribute name="markmarker" type="xsd:boolean" />
+				<!-- The rendering style to be used -->
+				<xsd:attribute name="bold" type="xsd:boolean" />
+				<xsd:attribute name="italic" type="xsd:boolean" />
+				<xsd:attribute name="color" type="xsd:string" />
+				<xsd:attribute name="bgcolor" type="xsd:string" />
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+
+	<xsd:complexType name="Key">
+		<!-- The actual KeyWord, typically reserved words or symbols in a programming language -->
+		<xsd:attribute name="word" type="xsd:string" />
+	</xsd:complexType>
+	
+	
+	<!-- A grouping of keywords that sholuld be colored the same way -->
+	<xsd:complexType name="KeyWords">
+		<xsd:sequence>
+			<!-- allow groups with 0 keywords: this simplifies the syntax highlighting editor -->
+			<!-- A KeyWord -->
+			<xsd:element name="Key" type="Key" minOccurs="0" maxOccurs="unbounded"></xsd:element>
+		</xsd:sequence>
+		<!-- The name of the KeyWord group -->
+		<xsd:attribute name="name" type="xsd:string" />
+		<!-- The rendering style of the  KeyWord group -->
+		<xsd:attribute name="bold" type="xsd:boolean" />
+		<xsd:attribute name="italic" type="xsd:boolean" />
+		<xsd:attribute name="color" type="xsd:string" />
+		<xsd:attribute name="bgcolor" type="xsd:string" />
+	</xsd:complexType>
+
+	<xsd:complexType name="RuleSet">
+		<xsd:sequence>
+			<!-- Defines the delimiting characters of the syntax, e.g., the characters that, "break up" a line
+        		 into separate symbols, typically key words. It is not necessary, or desirable to include the
+        		 characters that denot the start or end of a span. Space and Tab are implicitly defined as delimeters
+        		 and they don't need to be includeded explicitly (this will probably be changed at some future time).-->
+			<xsd:element name="Delimiters" type="Delimiters" minOccurs="0" maxOccurs="1"></xsd:element>
+			<!-- A Span tag defines a scope, or what can be seen as a separate parsing context where a different set of
+            	 highlighting rules are applicable compared to the text where the span is found. 
+            	 Examples of spans include:
+            	 - A string in a language as C
+            	 - A <script> tag in Html
+            	 - The internals of a tag in XML (between < and >).
+            	 A span can have a rule set associated with it that defines the highlighting rules that are applicable
+            	 in the span. -->
+			<xsd:element name="Span" type="Span" minOccurs="0" maxOccurs="unbounded"></xsd:element>
+			<!-- The MarkPrevious tag allows you to define the coloring of the item that preceeds a specific
+            	 symbol. An example of where this comes in handy is when coloring the contents of an XML-tag,
+            	 in particular the attributes and attribute names. The following definition:
+            	 <MarkPrevious bold="false" italic="false" color="Red">=</MarkPrevious>
+				 will make teh highlighter color words that are followed by an = to be colored in Red.
+				 You can see this in this file if you view it with the default XML-mode in SharpDevelop. -->
+			<xsd:element name="MarkPrevious" type="MarkPrevious" minOccurs="0" maxOccurs="unbounded"></xsd:element>
+			<!-- The MarkFollowing tag works similarly as the MarkPrevious tag but relates to the coloring
+            of the symbol that follows the specified symbol. -->
+			<xsd:element name="MarkFollowing" type="MarkFollowing" minOccurs="0" maxOccurs="unbounded"></xsd:element>
+			<!-- Defines a group of keywords that should be colored the same way -->
+			<xsd:element name="KeyWords" type="KeyWords" minOccurs="0" maxOccurs="unbounded"></xsd:element>
+		</xsd:sequence>
+		<!-- The name of the RuleSet. Used when you refer to the RuleSet in the rule attribute of a Span tag.
+        	 Each mode file should have a rule definition without a defined name. This denotes the default rule
+        	 set for the mode. -->
+		<xsd:attribute name="name" type="xsd:string" />
+		<!-- Allows you to use another mode, defined in another file as a RuleSet. For an example see the
+        	 use of the JavaScript mode from the HTML-mode. -->
+		<xsd:attribute name="reference" type="xsd:string" />
+		<!-- Defines whether case is significant for matching keywords in the mode. -->
+		<xsd:attribute name="ignorecase" type="xsd:boolean" />
+		<!-- OBSOLETE: noescapesequences -->
+		<xsd:attribute name="noescapesequences" type="xsd:boolean" />
+		<!-- defines the escape character -->
+		<xsd:attribute name="escapecharacter" type="xsd:string" />
+	</xsd:complexType>
+	
+	<!-- The RuleSets tag is just a grouping of the set of RuleSets for a mode. -->
+	<xsd:complexType name="RuleSets">
+		<xsd:sequence minOccurs="0" maxOccurs="unbounded">
+			<!-- Any number of RuleSet tag can be defined in a mode -->
+			<xsd:element name="RuleSet" type="RuleSet" minOccurs="1" maxOccurs="unbounded"></xsd:element>
+		</xsd:sequence>
+	</xsd:complexType>
+	
+	<!-- SyntaxDefinition is the root-element in a mode definition file -->
+	<xsd:element name="SyntaxDefinition">
+		<xsd:complexType>
+			<xsd:sequence>
+				<!-- The Environment tag defines colors, for various standard elements in the SharpDevelop GUI, if
+				     not given the default values are used. -->
+				<xsd:element name="Environment" type="Environment" minOccurs="0" maxOccurs="1" />
+				
+				<!-- The Properties section defines properties which are bound to the highlighting -->
+				<xsd:element name="Properties" type="Properties" minOccurs="0" maxOccurs="1" />
+				
+				<!-- The Digits tag defines the color for rendering Digits-->
+				<xsd:element name="Digits" type="Digits" minOccurs="0" maxOccurs="1" />
+				
+				<!-- The RuleSets tag defines the rule sets that are used in the mode. Note that all modes are defined in
+					 a flat structture even if they are used recursively. For an example of a mode that uses
+					 multiple rule sets see the XML-mode. There is a top level rule-set and and another rule-set
+					 that handles highligting within a tag, i.e., between < and >. -->
+				<xsd:element name="RuleSets" type="RuleSets" />
+			</xsd:sequence>
+			<!-- The name of the mode. This is used when you, in the defintion of a RuleSet refers to another
+				 mode. I.e., one that is defined in an external file. For an example of this see the HTML-Mode that
+				 uses the JavaScript-mode this way. -->
+			<xsd:attribute name="name" type="xsd:string" />
+			<!-- The file extensions that the mode is applicable for. Extensions must be written with lower case and
+				 should include the ., as in .txt. If several extensions are applicable they should be separeated with | -->
+			<xsd:attribute name="extensions" type="xsd:string" />
+			<!-- Name of a syntax mode where rulesets, spans, keywords and other settings are imported from -->
+			<xsd:attribute name="extends" type="xsd:string" />
+		</xsd:complexType>
+	</xsd:element>
+
+</xsd:schema>
\ No newline at end of file
Added +73 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/MT-Mode.xshd b/minisqlquery-master/src/MiniSqlQuery/MT-Mode.xshd
new file mode 100644
index 0000000..423f07b
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/MT-Mode.xshd
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+
+<SyntaxDefinition name = "NVelocity" extensions = ".mt;.vm;.nv">
+
+	<Properties>
+		<Property name="LineComment" value="##"/>
+	</Properties>
+
+	<Digits name = "Digits" bold = "false" italic = "false" color = "DarkBlue"/>
+
+	<RuleSets>
+		<RuleSet ignorecase = "false">
+			<Delimiters>~!%^*()-+=|\/{}[]:;"'&lt;&gt; , .?</Delimiters>
+
+			<Span name = "LineDirective1" bold = "true" italic = "false" color = "Purple" stopateol = "true">
+				<Begin>#@get</Begin>
+			</Span>
+
+			<Span name = "LineDirective2" bold = "true" italic = "false" color = "Purple" stopateol = "true">
+				<Begin>#@set</Begin>
+			</Span>
+
+			<Span name = "LineComment" bold = "false" italic = "true" color = "Green" stopateol = "true" escapecharacter="\">
+				<Begin>##</Begin>
+			</Span>
+
+			<Span name = "BlockComment" bold = "false" italic = "true" color = "Green" stopateol = "false">
+				<Begin>#*</Begin>
+				<End>*#</End>
+			</Span>
+
+			<Span name = "VelocityVariable" bold = "false" italic = "false" color = "Blue" stopateol = "false" >
+				<Begin>${</Begin>
+				<End>}</End>
+			</Span>
+
+			<MarkFollowing bold = "false" italic = "false" color = "Blue">$</MarkFollowing>
+
+			<KeyWords name = "GeneralKeywords" bold="true" italic="false" color="Blue">
+				<Key word = "#foreach" />
+				<Key word = "#set" />
+				<Key word = "#if" />
+				<Key word = "#else" />
+				<Key word = "#elseif" />
+				<Key word = "#end" />
+			</KeyWords>
+
+			<KeyWords name = "LoopKeywords" bold="false" italic="false" color="DarkSlateBlue">
+				<Key word = "#beforeall" />
+				<Key word = "#before" />
+				<Key word = "#each" />
+				<Key word = "#after" />
+				<Key word = "#between" />
+				<Key word = "#odd" />
+				<Key word = "#even" />
+				<Key word = "#nodata" />
+				<Key word = "#afterall" />
+			</KeyWords>
+
+			<KeyWords name = "FunctionalSpaces" bold="true" italic="false" color="Green">
+				<Key word = "#macro" />
+				<Key word = "#include" />
+			</KeyWords>
+
+			<KeyWords name = "Literals" bold="true" italic="false" color="Black">
+				<Key word = "false" />
+				<Key word = "true" />
+			</KeyWords>
+
+		</RuleSet>
+	</RuleSets>
+</SyntaxDefinition>
+
Added +82 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/NewFileForm.cs b/minisqlquery-master/src/MiniSqlQuery/NewFileForm.cs
new file mode 100644
index 0000000..bac78a5
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/NewFileForm.cs
@@ -0,0 +1,82 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+
+namespace MiniSqlQuery
+{
+    /// <summary>The new file form.</summary>
+    public partial class NewFileForm : Form
+    {
+        /// <summary>The _file editor resolver.</summary>
+        private readonly IFileEditorResolver _fileEditorResolver;
+
+        /// <summary>Initializes a new instance of the <see cref="NewFileForm"/> class.</summary>
+        /// <param name="fileEditorResolver">The file editor resolver.</param>
+        public NewFileForm(IFileEditorResolver fileEditorResolver)
+        {
+            InitializeComponent();
+            _fileEditorResolver = fileEditorResolver;
+        }
+
+        /// <summary>Gets FileEditorDescriptor.</summary>
+        public FileEditorDescriptor FileEditorDescriptor
+        {
+            get { return lstFileTypes.SelectedItem as FileEditorDescriptor; }
+        }
+
+        /// <summary>Gets a value indicating whether IsValid.</summary>
+        public bool IsValid
+        {
+            get { return lstFileTypes.SelectedItem != null; }
+        }
+
+        /// <summary>The do ok.</summary>
+        private void DoOK()
+        {
+            DialogResult = DialogResult.OK;
+            Close();
+        }
+
+        /// <summary>The new file form_ load.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void NewFileForm_Load(object sender, EventArgs e)
+        {
+            lstFileTypes.DataSource = _fileEditorResolver.GetFileTypes();
+        }
+
+        /// <summary>The btn o k_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void btnOK_Click(object sender, EventArgs e)
+        {
+            DoOK();
+        }
+
+        /// <summary>The lst file types_ double click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void lstFileTypes_DoubleClick(object sender, EventArgs e)
+        {
+            if (IsValid)
+            {
+                DoOK();
+            }
+        }
+
+        /// <summary>The lst file types_ selected value changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void lstFileTypes_SelectedValueChanged(object sender, EventArgs e)
+        {
+            btnOK.Enabled = IsValid;
+        }
+    }
+}
\ No newline at end of file
Added +95 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/NewFileForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/NewFileForm.Designer.cs
new file mode 100644
index 0000000..f30e5a3
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/NewFileForm.Designer.cs
@@ -0,0 +1,95 @@
+namespace MiniSqlQuery
+{
+	partial class NewFileForm
+	{
+		/// <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.lstFileTypes = new System.Windows.Forms.ListBox();
+			this.btnOK = new System.Windows.Forms.Button();
+			this.btnCancel = new System.Windows.Forms.Button();
+			this.SuspendLayout();
+			// 
+			// lstFileTypes
+			// 
+			this.lstFileTypes.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.lstFileTypes.FormattingEnabled = true;
+			this.lstFileTypes.Location = new System.Drawing.Point(12, 12);
+			this.lstFileTypes.Name = "lstFileTypes";
+			this.lstFileTypes.Size = new System.Drawing.Size(284, 186);
+			this.lstFileTypes.TabIndex = 0;
+			this.lstFileTypes.DoubleClick += new System.EventHandler(this.lstFileTypes_DoubleClick);
+			this.lstFileTypes.SelectedValueChanged += new System.EventHandler(this.lstFileTypes_SelectedValueChanged);
+			// 
+			// btnOK
+			// 
+			this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+			this.btnOK.Enabled = false;
+			this.btnOK.Location = new System.Drawing.Point(140, 216);
+			this.btnOK.Name = "btnOK";
+			this.btnOK.Size = new System.Drawing.Size(75, 23);
+			this.btnOK.TabIndex = 1;
+			this.btnOK.Text = "&OK";
+			this.btnOK.UseVisualStyleBackColor = true;
+			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(221, 216);
+			this.btnCancel.Name = "btnCancel";
+			this.btnCancel.Size = new System.Drawing.Size(75, 23);
+			this.btnCancel.TabIndex = 2;
+			this.btnCancel.Text = "&Cancel";
+			this.btnCancel.UseVisualStyleBackColor = true;
+			// 
+			// NewFileForm
+			// 
+			this.AcceptButton = this.btnOK;
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.CancelButton = this.btnCancel;
+			this.ClientSize = new System.Drawing.Size(308, 246);
+			this.Controls.Add(this.btnCancel);
+			this.Controls.Add(this.btnOK);
+			this.Controls.Add(this.lstFileTypes);
+			this.Name = "NewFileForm";
+			this.Text = "NewFileForm";
+			this.Load += new System.EventHandler(this.NewFileForm_Load);
+			this.ResumeLayout(false);
+
+		}
+
+		#endregion
+
+		private System.Windows.Forms.ListBox lstFileTypes;
+		private System.Windows.Forms.Button btnOK;
+		private System.Windows.Forms.Button btnCancel;
+	}
+}
\ No newline at end of file
Added +120 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/NewFileForm.resx b/minisqlquery-master/src/MiniSqlQuery/NewFileForm.resx
new file mode 100644
index 0000000..19dc0dd
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/NewFileForm.resx
@@ -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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
Added +177 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/OptionsForm.cs b/minisqlquery-master/src/MiniSqlQuery/OptionsForm.cs
new file mode 100644
index 0000000..c9b3e07
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/OptionsForm.cs
@@ -0,0 +1,177 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+
+namespace MiniSqlQuery
+{
+    /// <summary>The options form.</summary>
+    public partial class OptionsForm : Form
+    {
+        /// <summary>The _configuration objects.</summary>
+        private readonly List<IConfigurationObject> _configurationObjects = new List<IConfigurationObject>();
+
+        /// <summary>The _host.</summary>
+        private readonly IHostWindow _host;
+
+        /// <summary>The _property grid.</summary>
+        private readonly PropertyGrid _propertyGrid;
+
+        /// <summary>The _services.</summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>Initializes a new instance of the <see cref="OptionsForm"/> class.</summary>
+        /// <param name="applicationServices">The application services.</param>
+        /// <param name="hostWindow">The host window.</param>
+        public OptionsForm(IApplicationServices applicationServices, IHostWindow hostWindow)
+        {
+            InitializeComponent();
+
+            // add a grid to the panel
+            _propertyGrid = new PropertyGrid();
+            _propertyGrid.Dock = DockStyle.Fill;
+            groupBox1.Controls.Add(_propertyGrid);
+
+            _services = applicationServices;
+            _host = hostWindow;
+        }
+
+        /// <summary>Gets ConfigurationObject.</summary>
+        private IConfigurationObject ConfigurationObject
+        {
+            get
+            {
+                if (lstSettingsProviders.SelectedIndex > -1)
+                {
+                    return _configurationObjects[lstSettingsProviders.SelectedIndex];
+                }
+
+                return null;
+            }
+        }
+
+        /// <summary>The ask to save changes.</summary>
+        /// <returns></returns>
+        private DialogResult AskToSaveChanges()
+        {
+            return _host.DisplayMessageBox(null, "Configuration changes made, would you like to save them?", "Save Changes?", MessageBoxButtons.YesNo,
+                                           MessageBoxIcon.Question, MessageBoxDefaultButton.Button1,
+                                           MessageBoxOptions.ServiceNotification, null, null);
+        }
+
+        /// <summary>The config object property changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void ConfigObjectPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (e.PropertyName == "IsDirty")
+            {
+                string title = "Options";
+                if (((IConfigurationObject)sender).IsDirty)
+                {
+                    title += "*";
+                }
+
+                Text = title;
+            }
+        }
+
+        /// <summary>The options form_ form closing.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void OptionsForm_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            if (ConfigurationObject != null)
+            {
+                if (ConfigurationObject.IsDirty)
+                {
+                    DialogResult result = AskToSaveChanges();
+                    if (result == DialogResult.Yes)
+                    {
+                        ConfigurationObject.Save();
+                    }
+                    else if (result == DialogResult.Cancel)
+                    {
+                        e.Cancel = true;
+                    }
+                }
+            }
+        }
+
+        /// <summary>The options form_ load.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void OptionsForm_Load(object sender, EventArgs e)
+        {
+            var cofigTypes = _services.GetConfigurationObjectTypes();
+
+            // build a list of config instances
+            foreach (Type cofigType in cofigTypes)
+            {
+                _configurationObjects.Add(_services.Resolve<IConfigurationObject>(cofigType.FullName));
+            }
+
+            // add the config editors to the list and watch them for changes
+            foreach (var configObject in _configurationObjects)
+            {
+                configObject.PropertyChanged += ConfigObjectPropertyChanged;
+                lstSettingsProviders.Items.Add(configObject.Name);
+            }
+
+            // select first
+            if (lstSettingsProviders.Items.Count > 0)
+            {
+                lstSettingsProviders.SelectedIndex = 0;
+            }
+        }
+
+        /// <summary>The btn o k_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void btnOK_Click(object sender, EventArgs e)
+        {
+            if (ConfigurationObject != null)
+            {
+                ConfigurationObject.Save();
+            }
+
+            Close();
+        }
+
+        /// <summary>The list box 1_ selected value changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void listBox1_SelectedValueChanged(object sender, EventArgs e)
+        {
+            if (ConfigurationObject != null)
+            {
+                bool change = true;
+                if (ConfigurationObject.IsDirty)
+                {
+                    DialogResult result = AskToSaveChanges();
+                    if (result == DialogResult.Yes)
+                    {
+                        ConfigurationObject.Save();
+                    }
+                    else
+                    {
+                        change = false;
+                    }
+                }
+
+                if (change)
+                {
+                    _propertyGrid.SelectedObject = ConfigurationObject.Settings;
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
Added +132 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/OptionsForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/OptionsForm.Designer.cs
new file mode 100644
index 0000000..b2d15be
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/OptionsForm.Designer.cs
@@ -0,0 +1,132 @@
+namespace MiniSqlQuery
+{
+	partial class OptionsForm
+	{
+		/// <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.lstSettingsProviders = new System.Windows.Forms.ListBox();
+			this.groupBox1 = new System.Windows.Forms.GroupBox();
+			this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+			this.btnCancel = new System.Windows.Forms.Button();
+			this.btnOK = new System.Windows.Forms.Button();
+			this.splitContainer1.Panel1.SuspendLayout();
+			this.splitContainer1.Panel2.SuspendLayout();
+			this.splitContainer1.SuspendLayout();
+			this.SuspendLayout();
+			// 
+			// lstSettingsProviders
+			// 
+			this.lstSettingsProviders.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.lstSettingsProviders.FormattingEnabled = true;
+			this.lstSettingsProviders.Location = new System.Drawing.Point(0, 0);
+			this.lstSettingsProviders.Name = "lstSettingsProviders";
+			this.lstSettingsProviders.Size = new System.Drawing.Size(150, 251);
+			this.lstSettingsProviders.TabIndex = 0;
+			this.lstSettingsProviders.SelectedValueChanged += new System.EventHandler(this.listBox1_SelectedValueChanged);
+			// 
+			// groupBox1
+			// 
+			this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.groupBox1.Location = new System.Drawing.Point(0, 0);
+			this.groupBox1.Name = "groupBox1";
+			this.groupBox1.Size = new System.Drawing.Size(351, 254);
+			this.groupBox1.TabIndex = 1;
+			this.groupBox1.TabStop = false;
+			this.groupBox1.Text = "Settings";
+			// 
+			// splitContainer1
+			// 
+			this.splitContainer1.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.splitContainer1.Location = new System.Drawing.Point(12, 12);
+			this.splitContainer1.Name = "splitContainer1";
+			// 
+			// splitContainer1.Panel1
+			// 
+			this.splitContainer1.Panel1.Controls.Add(this.lstSettingsProviders);
+			// 
+			// splitContainer1.Panel2
+			// 
+			this.splitContainer1.Panel2.Controls.Add(this.groupBox1);
+			this.splitContainer1.Size = new System.Drawing.Size(505, 254);
+			this.splitContainer1.SplitterDistance = 150;
+			this.splitContainer1.TabIndex = 2;
+			// 
+			// 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(442, 272);
+			this.btnCancel.Name = "btnCancel";
+			this.btnCancel.Size = new System.Drawing.Size(75, 23);
+			this.btnCancel.TabIndex = 3;
+			this.btnCancel.Text = "&Cancel";
+			this.btnCancel.UseVisualStyleBackColor = true;
+			// 
+			// 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(361, 272);
+			this.btnOK.Name = "btnOK";
+			this.btnOK.Size = new System.Drawing.Size(75, 23);
+			this.btnOK.TabIndex = 4;
+			this.btnOK.Text = "&OK";
+			this.btnOK.UseVisualStyleBackColor = true;
+			this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
+			// 
+			// OptionsForm
+			// 
+			this.AcceptButton = this.btnOK;
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.CancelButton = this.btnCancel;
+			this.ClientSize = new System.Drawing.Size(529, 307);
+			this.Controls.Add(this.btnOK);
+			this.Controls.Add(this.btnCancel);
+			this.Controls.Add(this.splitContainer1);
+			this.MinimizeBox = false;
+			this.Name = "OptionsForm";
+			this.Text = "Options";
+			this.Load += new System.EventHandler(this.OptionsForm_Load);
+			this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.OptionsForm_FormClosing);
+			this.splitContainer1.Panel1.ResumeLayout(false);
+			this.splitContainer1.Panel2.ResumeLayout(false);
+			this.splitContainer1.ResumeLayout(false);
+			this.ResumeLayout(false);
+
+		}
+
+		#endregion
+
+		private System.Windows.Forms.ListBox lstSettingsProviders;
+		private System.Windows.Forms.GroupBox groupBox1;
+		private System.Windows.Forms.SplitContainer splitContainer1;
+		private System.Windows.Forms.Button btnCancel;
+		private System.Windows.Forms.Button btnOK;
+	}
+}
\ No newline at end of file
Added +120 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/OptionsForm.resx b/minisqlquery-master/src/MiniSqlQuery/OptionsForm.resx
new file mode 100644
index 0000000..19dc0dd
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/OptionsForm.resx
@@ -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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
Added +30 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/Commands/EditConnectionsFormCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/Commands/EditConnectionsFormCommand.cs
new file mode 100644
index 0000000..c79e403
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/Commands/EditConnectionsFormCommand.cs
@@ -0,0 +1,30 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.PlugIns.ConnectionStringsManager.Commands
+{
+    /// <summary>The edit connections form command.</summary>
+    public class EditConnectionsFormCommand : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="EditConnectionsFormCommand"/> class.</summary>
+        public EditConnectionsFormCommand()
+            : base("&Edit Connection Strings")
+        {
+            SmallImage = ImageResource.database_edit;
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            DbConnectionsForm frm = Services.Resolve<DbConnectionsForm>();
+            frm.ShowDialog(HostWindow.Instance);
+        }
+    }
+}
\ No newline at end of file
Added +346 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.cs
new file mode 100644
index 0000000..b860634
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.cs
@@ -0,0 +1,346 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Data.Common;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Properties;
+
+namespace MiniSqlQuery.PlugIns.ConnectionStringsManager
+{
+    /// <summary>The connection string builder form.</summary>
+    public partial class ConnectionStringBuilderForm : Form
+    {
+        /// <summary>The _host window.</summary>
+        private readonly IHostWindow _hostWindow;
+
+        /// <summary>The _services.</summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>Gets or sets ConnectionDefinition.</summary>
+        public DbConnectionDefinition ConnectionDefinition { get; set; }
+
+        /// <summary>The default provider name.</summary>
+        public const string DefaultProviderName = "System.Data.SqlClient";
+
+        /// <summary>The _initialised.</summary>
+        private bool _initialised;
+
+        /// <summary>The _loaded.</summary>
+        private bool _loaded;
+
+        /// <summary>The _init provider.</summary>
+        private string _initProvider;
+
+        /// <summary>The _provider name.</summary>
+        private string _providerName = DefaultProviderName;
+
+        /// <summary>The _conn str.</summary>
+        private string _connStr;
+
+        /// <summary>The _conn str bldr.</summary>
+        private DbConnectionStringBuilder _connStrBldr;
+
+        /// <summary>The _dirty.</summary>
+        private bool _dirty;
+
+        /// <summary>Gets or sets ConnectionName.</summary>
+        public string ConnectionName
+        {
+            get { return txtConnectionName.Text; }
+            set { txtConnectionName.Text = value; }
+        }
+
+        /// <summary>Gets or sets Comments.</summary>
+        public string Comments
+        {
+            get { return txtComments.Text; }
+            set { txtComments.Text = value; }
+        }
+
+        /// <summary>Gets or sets ProviderName.</summary>
+        public string ProviderName
+        {
+            get { return _providerName; }
+            set
+            {
+                _providerName = value;
+                cboProvider.SelectedItem = _providerName;
+            }
+        }
+
+        /// <summary>
+        /// The supplied connection string - or if during an edit - the new one.
+        /// </summary>
+        public string ConnectionString
+        {
+            get
+            {
+                if (_connStrBldr != null)
+                {
+                    return _connStrBldr.ConnectionString;
+                }
+
+                return _connStr;
+            }
+
+            set
+            {
+                _connStr = value; // store
+                if (_connStrBldr == null)
+                {
+                    BindNewConnectionStringBuilder();
+                }
+            }
+        }
+
+        /// <summary>Gets DbConnectionStringBuilderInstance.</summary>
+        public DbConnectionStringBuilder DbConnectionStringBuilderInstance
+        {
+            get { return _connStrBldr; }
+        }
+
+
+        /// <summary>Initializes a new instance of the <see cref="ConnectionStringBuilderForm"/> class.</summary>
+        /// <param name="hostWindow">The host window.</param>
+        /// <param name="services">The services.</param>
+        public ConnectionStringBuilderForm(IHostWindow hostWindow, IApplicationServices services)
+        {
+            InitializeComponent();
+            _hostWindow = hostWindow;
+            _services = services;
+            Icon = ImageResource.database_edit_icon;
+        }
+
+        /// <summary>Initializes a new instance of the <see cref="ConnectionStringBuilderForm"/> class.</summary>
+        /// <param name="hostWindow">The host window.</param>
+        /// <param name="definition">The definition.</param>
+        /// <param name="services">The services.</param>
+        public ConnectionStringBuilderForm(IHostWindow hostWindow, DbConnectionDefinition definition, IApplicationServices services)
+            : this(hostWindow, services)
+        {
+            ConnectionDefinition = definition;
+            ConnectionName = ConnectionDefinition.Name;
+            Comments = ConnectionDefinition.Comment;
+            _initProvider = ConnectionDefinition.ProviderName;
+            _connStr = ConnectionDefinition.ConnectionString;
+        }
+
+        /// <summary>The connection string builder form_ load.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void ConnectionStringBuilderForm_Load(object sender, EventArgs e)
+        {
+            cboProvider.DataSource = Utility.GetSqlProviderNames();
+            _initialised = true;
+        }
+
+        /// <summary>The connection string builder form_ shown.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void ConnectionStringBuilderForm_Shown(object sender, EventArgs e)
+        {
+            if (_initProvider == null)
+            {
+                ProviderName = DefaultProviderName;
+            }
+            else
+            {
+                ProviderName = _initProvider;
+            }
+
+            _loaded = true;
+        }
+
+        /// <summary>The connection string builder form_ form closing.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void ConnectionStringBuilderForm_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            if (_dirty)
+            {
+                DialogResult saveFile = _hostWindow.DisplayMessageBox(
+                    this,
+                    Resources.The_connection_details_have_changed__do_you_want_to_save, Resources.Save_Changes,
+                    MessageBoxButtons.YesNoCancel,
+                    MessageBoxIcon.Question,
+                    MessageBoxDefaultButton.Button1,
+                    0,
+                    null,
+                    null);
+
+                switch (saveFile)
+                {
+                    case DialogResult.Yes:
+                        WriteValuesBack();
+                        break;
+                    case DialogResult.Cancel:
+                        e.Cancel = true;
+                        break;
+                }
+            }
+        }
+
+
+        /// <summary>The tool strip button ok_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void toolStripButtonOk_Click(object sender, EventArgs e)
+        {
+            DialogResult = DialogResult.OK;
+            WriteValuesBack();
+            Close();
+        }
+
+        /// <summary>The tool strip button cancel_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void toolStripButtonCancel_Click(object sender, EventArgs e)
+        {
+            // todo - is dirty?
+            DialogResult = DialogResult.Cancel;
+            Close();
+        }
+
+        /// <summary>The write values back.</summary>
+        protected void WriteValuesBack()
+        {
+            if (ConnectionDefinition == null)
+            {
+                ConnectionDefinition = new DbConnectionDefinition();
+            }
+
+            ConnectionDefinition.Name = ConnectionName;
+            ConnectionDefinition.ProviderName = ProviderName;
+            ConnectionDefinition.ConnectionString = ConnectionString;
+            ConnectionDefinition.Comment = Comments;
+            _dirty = false;
+        }
+
+
+        /// <summary>The bind new connection string builder.</summary>
+        private void BindNewConnectionStringBuilder()
+        {
+            if (!_initialised)
+            {
+                return;
+            }
+
+            bool getBuilderFailed = false;
+            try
+            {
+                _connStrBldr = DbProviderFactories.GetFactory(ProviderName).CreateConnectionStringBuilder();
+                if (_connStrBldr == null)
+                {
+                    getBuilderFailed = true;
+                }
+            }
+            catch
+            {
+                getBuilderFailed = true;
+            }
+
+            if (getBuilderFailed)
+            {
+                _connStrBldr = new GenericConnectionStringBuilder();
+            }
+
+            try
+            {
+                _connStrBldr.ConnectionString = _connStr;
+            }
+            catch (ArgumentException argExp)
+            {
+                // consume error but notify
+                MessageBox.Show(Resources.BindNewConnectionStringBuilder_Could_not_populate_with_current_connection_string___ + argExp.Message);
+            }
+
+            propertyGridDbConnection.SelectedObject = _connStrBldr;
+        }
+
+        /// <summary>The cbo provider_ selected index changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void cboProvider_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            if (!_initialised)
+            {
+                return;
+            }
+
+            SetDirty();
+            if (cboProvider.SelectedItem != null)
+            {
+                ProviderName = cboProvider.SelectedItem.ToString();
+                BindNewConnectionStringBuilder();
+            }
+        }
+
+        /// <summary>The items text changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void ItemsTextChanged(object sender, EventArgs e)
+        {
+            SetDirty();
+        }
+
+        /// <summary>The property grid db connection_ property value changed.</summary>
+        /// <param name="s">The s.</param>
+        /// <param name="e">The e.</param>
+        private void propertyGridDbConnection_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
+        {
+            SetDirty();
+        }
+
+        /// <summary>The set dirty.</summary>
+        private void SetDirty()
+        {
+            if (!_loaded)
+            {
+                return;
+            }
+
+            if (!_dirty)
+            {
+                _dirty = true;
+                Text += "*";
+            }
+        }
+
+        /// <summary>The tool strip button test_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void toolStripButtonTest_Click(object sender, EventArgs e)
+        {
+            // do a standalone raw connection test
+            Exception exp = QueryRunner.TestDbConnection(ProviderName, ConnectionString);
+            if (exp == null)
+            {
+                string msg = string.Format(Resources.Connected_to_0_successfully, ConnectionName);
+                _hostWindow.DisplaySimpleMessageBox(this, msg, Resources.Connection_Successful);
+            }
+            else
+            {
+                string msg = string.Format(Resources.Failed_connecting_to_0_1_2, ConnectionName, Environment.NewLine, exp.Message);
+                _hostWindow.DisplaySimpleMessageBox(this, msg, Resources.Connection_Failed);
+            }
+        }
+
+#if DEBUG
+
+        /// <summary>The to string.</summary>
+        /// <returns>The to string.</returns>
+        public override string ToString()
+        {
+            return string.Format("[ConnectionStringBuilderForm => Name: {0}; Provider: {1}; ConnectionString: {2}]", ConnectionName, ProviderName,
+                                 ConnectionString);
+        }
+
+#endif
+    }
+}
\ No newline at end of file
Added +224 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.Designer.cs
new file mode 100644
index 0000000..36e0d03
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.Designer.cs
@@ -0,0 +1,224 @@
+namespace MiniSqlQuery.PlugIns.ConnectionStringsManager
+{
+	partial class ConnectionStringBuilderForm
+	{
+		/// <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(ConnectionStringBuilderForm));
+			this.cboProvider = new System.Windows.Forms.ComboBox();
+			this.label1 = new System.Windows.Forms.Label();
+			this.groupBox1 = new System.Windows.Forms.GroupBox();
+			this.propertyGridDbConnection = new System.Windows.Forms.PropertyGrid();
+			this.label2 = new System.Windows.Forms.Label();
+			this.txtConnectionName = new System.Windows.Forms.TextBox();
+			this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+			this.toolStripButtonOk = new System.Windows.Forms.ToolStripButton();
+			this.toolStripButtonCancel = new System.Windows.Forms.ToolStripButton();
+			this.txtComments = new System.Windows.Forms.TextBox();
+			this.label3 = new System.Windows.Forms.Label();
+			this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+			this.toolStripButtonTest = new System.Windows.Forms.ToolStripButton();
+			this.groupBox1.SuspendLayout();
+			this.toolStrip1.SuspendLayout();
+			this.SuspendLayout();
+			// 
+			// cboProvider
+			// 
+			this.cboProvider.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+						| System.Windows.Forms.AnchorStyles.Right)));
+			this.cboProvider.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+			this.cboProvider.FormattingEnabled = true;
+			this.cboProvider.Location = new System.Drawing.Point(120, 94);
+			this.cboProvider.Name = "cboProvider";
+			this.cboProvider.Size = new System.Drawing.Size(295, 21);
+			this.cboProvider.TabIndex = 5;
+			this.cboProvider.SelectedIndexChanged += new System.EventHandler(this.cboProvider_SelectedIndexChanged);
+			// 
+			// label1
+			// 
+			this.label1.AutoSize = true;
+			this.label1.Location = new System.Drawing.Point(12, 97);
+			this.label1.Name = "label1";
+			this.label1.Size = new System.Drawing.Size(46, 13);
+			this.label1.TabIndex = 4;
+			this.label1.Text = "Provider";
+			// 
+			// groupBox1
+			// 
+			this.groupBox1.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.groupBox1.Controls.Add(this.propertyGridDbConnection);
+			this.groupBox1.Location = new System.Drawing.Point(12, 121);
+			this.groupBox1.Name = "groupBox1";
+			this.groupBox1.Size = new System.Drawing.Size(403, 288);
+			this.groupBox1.TabIndex = 10;
+			this.groupBox1.TabStop = false;
+			this.groupBox1.Text = "Connection Settings";
+			// 
+			// propertyGridDbConnection
+			// 
+			this.propertyGridDbConnection.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.propertyGridDbConnection.Location = new System.Drawing.Point(3, 16);
+			this.propertyGridDbConnection.Name = "propertyGridDbConnection";
+			this.propertyGridDbConnection.Size = new System.Drawing.Size(397, 269);
+			this.propertyGridDbConnection.TabIndex = 0;
+			this.propertyGridDbConnection.PropertyValueChanged += new System.Windows.Forms.PropertyValueChangedEventHandler(this.propertyGridDbConnection_PropertyValueChanged);
+			// 
+			// label2
+			// 
+			this.label2.AutoSize = true;
+			this.label2.Location = new System.Drawing.Point(12, 15);
+			this.label2.Name = "label2";
+			this.label2.Size = new System.Drawing.Size(35, 13);
+			this.label2.TabIndex = 0;
+			this.label2.Text = "Name";
+			// 
+			// txtConnectionName
+			// 
+			this.txtConnectionName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+						| System.Windows.Forms.AnchorStyles.Right)));
+			this.txtConnectionName.Location = new System.Drawing.Point(120, 12);
+			this.txtConnectionName.Name = "txtConnectionName";
+			this.txtConnectionName.Size = new System.Drawing.Size(295, 20);
+			this.txtConnectionName.TabIndex = 1;
+			this.txtConnectionName.TextChanged += new System.EventHandler(this.ItemsTextChanged);
+			// 
+			// toolStrip1
+			// 
+			this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Bottom;
+			this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripButtonOk,
+            this.toolStripButtonCancel,
+            this.toolStripSeparator1,
+            this.toolStripButtonTest});
+			this.toolStrip1.Location = new System.Drawing.Point(0, 412);
+			this.toolStrip1.Name = "toolStrip1";
+			this.toolStrip1.Size = new System.Drawing.Size(427, 25);
+			this.toolStrip1.TabIndex = 15;
+			this.toolStrip1.Text = "toolStrip1";
+			// 
+			// toolStripButtonOk
+			// 
+			this.toolStripButtonOk.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+			this.toolStripButtonOk.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonOk.Image")));
+			this.toolStripButtonOk.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.toolStripButtonOk.Name = "toolStripButtonOk";
+			this.toolStripButtonOk.Size = new System.Drawing.Size(27, 22);
+			this.toolStripButtonOk.Text = "&OK";
+			this.toolStripButtonOk.Click += new System.EventHandler(this.toolStripButtonOk_Click);
+			// 
+			// toolStripButtonCancel
+			// 
+			this.toolStripButtonCancel.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+			this.toolStripButtonCancel.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonCancel.Image")));
+			this.toolStripButtonCancel.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.toolStripButtonCancel.Name = "toolStripButtonCancel";
+			this.toolStripButtonCancel.Size = new System.Drawing.Size(47, 22);
+			this.toolStripButtonCancel.Text = "&Cancel";
+			this.toolStripButtonCancel.Click += new System.EventHandler(this.toolStripButtonCancel_Click);
+			// 
+			// txtComments
+			// 
+			this.txtComments.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+						| System.Windows.Forms.AnchorStyles.Right)));
+			this.txtComments.Location = new System.Drawing.Point(120, 38);
+			this.txtComments.Multiline = true;
+			this.txtComments.Name = "txtComments";
+			this.txtComments.Size = new System.Drawing.Size(295, 50);
+			this.txtComments.TabIndex = 3;
+			this.txtComments.TextChanged += new System.EventHandler(this.ItemsTextChanged);
+			// 
+			// label3
+			// 
+			this.label3.AutoSize = true;
+			this.label3.Location = new System.Drawing.Point(12, 41);
+			this.label3.Name = "label3";
+			this.label3.Size = new System.Drawing.Size(56, 13);
+			this.label3.TabIndex = 2;
+			this.label3.Text = "Comments";
+			// 
+			// toolStripSeparator1
+			// 
+			this.toolStripSeparator1.Name = "toolStripSeparator1";
+			this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
+			// 
+			// toolStripButtonTest
+			// 
+			this.toolStripButtonTest.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+			this.toolStripButtonTest.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonTest.Image")));
+			this.toolStripButtonTest.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.toolStripButtonTest.Name = "toolStripButtonTest";
+			this.toolStripButtonTest.Size = new System.Drawing.Size(42, 22);
+			this.toolStripButtonTest.Text = "Test...";
+			this.toolStripButtonTest.Click += new System.EventHandler(this.toolStripButtonTest_Click);
+			// 
+			// ConnectionStringBuilderForm
+			// 
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.ClientSize = new System.Drawing.Size(427, 437);
+			this.Controls.Add(this.txtComments);
+			this.Controls.Add(this.label3);
+			this.Controls.Add(this.toolStrip1);
+			this.Controls.Add(this.txtConnectionName);
+			this.Controls.Add(this.label2);
+			this.Controls.Add(this.groupBox1);
+			this.Controls.Add(this.label1);
+			this.Controls.Add(this.cboProvider);
+			this.MaximizeBox = false;
+			this.MinimizeBox = false;
+			this.Name = "ConnectionStringBuilderForm";
+			this.Text = "Connection String Builder";
+			this.Load += new System.EventHandler(this.ConnectionStringBuilderForm_Load);
+			this.Shown += new System.EventHandler(this.ConnectionStringBuilderForm_Shown);
+			this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ConnectionStringBuilderForm_FormClosing);
+			this.groupBox1.ResumeLayout(false);
+			this.toolStrip1.ResumeLayout(false);
+			this.toolStrip1.PerformLayout();
+			this.ResumeLayout(false);
+			this.PerformLayout();
+
+		}
+
+		#endregion
+
+		private System.Windows.Forms.ComboBox cboProvider;
+		private System.Windows.Forms.Label label1;
+		private System.Windows.Forms.GroupBox groupBox1;
+		private System.Windows.Forms.Label label2;
+		private System.Windows.Forms.TextBox txtConnectionName;
+		private System.Windows.Forms.ToolStrip toolStrip1;
+		private System.Windows.Forms.ToolStripButton toolStripButtonCancel;
+		private System.Windows.Forms.ToolStripButton toolStripButtonOk;
+		private System.Windows.Forms.PropertyGrid propertyGridDbConnection;
+		private System.Windows.Forms.TextBox txtComments;
+		private System.Windows.Forms.Label label3;
+		private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+		private System.Windows.Forms.ToolStripButton toolStripButtonTest;
+	}
+}
\ No newline at end of file
Added +169 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.resx b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.resx
new file mode 100644
index 0000000..bfb5614
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.resx
@@ -0,0 +1,169 @@
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="toolStripButtonOk.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
+        U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
+        VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
+        QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
+        /g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
+        cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
+        3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
+        dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
+        NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
+        s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="toolStripButtonCancel.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
+        U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
+        VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
+        QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
+        /g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
+        cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
+        3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
+        dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
+        NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
+        s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="toolStripButtonTest.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
+        U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
+        VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
+        QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
+        /g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
+        cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
+        3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
+        dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
+        NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
+        s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
+</value>
+  </data>
+</root>
\ No newline at end of file
Added +34 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringsManagerLoader.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringsManagerLoader.cs
new file mode 100644
index 0000000..5f8965c
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringsManagerLoader.cs
@@ -0,0 +1,34 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.PlugIns.ConnectionStringsManager.Commands;
+
+namespace MiniSqlQuery.PlugIns.ConnectionStringsManager
+{
+    /// <summary>The connection strings manager loader.</summary>
+    public class ConnectionStringsManagerLoader : PluginLoaderBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="ConnectionStringsManagerLoader"/> class.</summary>
+        public ConnectionStringsManagerLoader() : base(
+            "Connection String Manager",
+            "A Mini SQL Query Plugin for managing the list of connection strings.",
+            10)
+        {
+        }
+
+        /// <summary>Iinitialize the plug in.</summary>
+        public override void InitializePlugIn()
+        {
+            Services.RegisterComponent<DbConnectionsForm>("DbConnectionsForm");
+            ToolStripMenuItem editMenu = Services.HostWindow.GetMenuItem("edit");
+            editMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<EditConnectionsFormCommand>());
+            Services.HostWindow.AddToolStripCommand<EditConnectionsFormCommand>(null);
+        }
+    }
+}
\ No newline at end of file
Added +345 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.cs
new file mode 100644
index 0000000..b3fdbbc
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.cs
@@ -0,0 +1,345 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Properties;
+
+namespace MiniSqlQuery.PlugIns.ConnectionStringsManager
+{
+    /// <summary>The db connections form.</summary>
+    public partial class DbConnectionsForm : Form
+    {
+        /// <summary>The _host window.</summary>
+        private readonly IHostWindow _hostWindow;
+
+        /// <summary>The _services.</summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>The _settings.</summary>
+        private readonly IApplicationSettings _settings;
+
+        /// <summary>The _definition list.</summary>
+        private DbConnectionDefinitionList _definitionList;
+
+        private bool _loaded;
+
+        private bool _dirty;
+
+        /// <summary>Initializes a new instance of the <see cref="DbConnectionsForm"/> class.</summary>
+        public DbConnectionsForm()
+        {
+            InitializeComponent();
+            toolStripButtonAdd.Image = ImageResource.database_add;
+            toolStripButtonCopyAsNew.Image = ImageResource.database_add;
+            toolStripButtonEditConnStr.Image = ImageResource.database_edit;
+            toolStripButtonDelete.Image = ImageResource.database_delete;
+            Icon = ImageResource.disconnect_icon;
+        }
+
+        /// <summary>Initializes a new instance of the <see cref="DbConnectionsForm"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="hostWindow">The host window.</param>
+        /// <param name="settings">The settings.</param>
+        public DbConnectionsForm(IApplicationServices services, IHostWindow hostWindow, IApplicationSettings settings)
+            : this()
+        {
+            _services = services;
+            _hostWindow = hostWindow;
+            _settings = settings;
+        }
+
+        /// <summary>The load connection definitions.</summary>
+        /// <returns></returns>
+        private static DbConnectionDefinitionList LoadConnectionDefinitions()
+        {
+            return DbConnectionDefinitionList.FromXml(Utility.LoadConnections());
+        }
+
+
+        /// <summary>The add to list.</summary>
+        /// <param name="definition">The definition.</param>
+        private void AddToList(DbConnectionDefinition definition)
+        {
+            if (!lstConnections.Items.Contains(definition))
+            {
+                lstConnections.Items.Add(definition);
+                SetDirty();
+            }
+        }
+
+        /// <summary>The db connections form_ form closing.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void DbConnectionsForm_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            if (_dirty)
+            {
+                DialogResult saveFile = _hostWindow.DisplayMessageBox(
+                    this,
+                    Resources.The_connection_details_have_changed__do_you_want_to_save,
+                    Resources.Save_Changes,
+                    MessageBoxButtons.YesNoCancel,
+                    MessageBoxIcon.Question,
+                    MessageBoxDefaultButton.Button1,
+                    0,
+                    null,
+                    null);
+
+                switch (saveFile)
+                {
+                    case DialogResult.Yes:
+                        SaveConnectionDefinitions(_definitionList);
+                        break;
+                    case DialogResult.Cancel:
+                        e.Cancel = true;
+                        break;
+                }
+            }
+        }
+
+        /// <summary>The db connections form_ shown.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void DbConnectionsForm_Shown(object sender, EventArgs e)
+        {
+            _definitionList = LoadConnectionDefinitions();
+            UpdateListView();
+            _loaded = true;
+        }
+
+        /// <summary>The manage definition.</summary>
+        /// <param name="definition">The definition.</param>
+        private void ManageDefinition(DbConnectionDefinition definition)
+        {
+            ConnectionStringBuilderForm frm;
+            string oldName = null;
+
+            if (definition == null)
+            {
+                frm = new ConnectionStringBuilderForm(_hostWindow, _services); // new blank form
+            }
+            else
+            {
+                oldName = definition.Name;
+                frm = new ConnectionStringBuilderForm(_hostWindow, definition, _services);
+            }
+
+            frm.ShowDialog(this);
+
+            if (frm.DialogResult == DialogResult.OK)
+            {
+                SetDirty();
+
+                if (lstConnections.Items.Contains(frm.ConnectionDefinition) && definition != null)
+                {
+                    if (definition.Name != oldName)
+                    {
+                        // want the list text to update due to name change
+                        UpdateListView();
+                        lstConnections.SelectedItem = definition;
+                    }
+                    else
+                    {
+                        UpdateDetailsPanel(lstConnections.SelectedItem as DbConnectionDefinition);
+                    }
+                }
+                else
+                {
+                    _definitionList.AddDefinition(frm.ConnectionDefinition);
+                    AddToList(frm.ConnectionDefinition);
+                    lstConnections.SelectedItem = frm.ConnectionDefinition;
+                }
+            }
+        }
+
+        /// <summary>The remove from list.</summary>
+        /// <param name="definition">The definition.</param>
+        private void RemoveFromList(DbConnectionDefinition definition)
+        {
+            if (lstConnections.Items.Contains(definition))
+            {
+                lstConnections.Items.Remove(definition);
+                SetDirty();
+            }
+        }
+
+
+        /// <summary>The save connection definitions.</summary>
+        /// <param name="data">The data.</param>
+        private void SaveConnectionDefinitions(DbConnectionDefinitionList data)
+        {
+            _settings.SetConnectionDefinitions(data);
+            Utility.SaveConnections(data);
+            _dirty = false;
+        }
+
+        /// <summary>The update details panel.</summary>
+        /// <param name="definition">The definition.</param>
+        private void UpdateDetailsPanel(DbConnectionDefinition definition)
+        {
+            if (definition != null)
+            {
+                txtName.Text = definition.Name;
+                txtProvider.Text = definition.ProviderName;
+                txtConn.Text = definition.ConnectionString;
+                txtComment.Text = definition.Comment;
+            }
+            else
+            {
+                txtName.Clear();
+                txtProvider.Clear();
+                txtConn.Clear();
+                txtComment.Clear();
+            }
+        }
+
+        /// <summary>The update list view.</summary>
+        private void UpdateListView()
+        {
+            if (_definitionList.Definitions != null && _definitionList.Definitions.Length > 0)
+            {
+                lstConnections.Items.Clear();
+                lstConnections.Items.AddRange(_definitionList.Definitions);
+                lstConnections.SelectedItem = _definitionList.Definitions[0];
+            }
+        }
+
+        /// <summary>The lst connections_ double click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void lstConnections_DoubleClick(object sender, EventArgs e)
+        {
+            DbConnectionDefinition definition = lstConnections.SelectedItem as DbConnectionDefinition;
+            if (definition != null)
+            {
+                ManageDefinition(definition);
+            }
+        }
+
+        /// <summary>The lst connections_ selected value changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void lstConnections_SelectedValueChanged(object sender, EventArgs e)
+        {
+            DbConnectionDefinition definition = lstConnections.SelectedItem as DbConnectionDefinition;
+            UpdateDetailsPanel(definition);
+        }
+
+        /// <summary>The tool strip button add_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void toolStripButtonAdd_Click(object sender, EventArgs e)
+        {
+            ManageDefinition(null);
+        }
+
+        /// <summary>The tool strip button cancel_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void toolStripButtonCancel_Click(object sender, EventArgs e)
+        {
+            Close();
+        }
+
+        /// <summary>The tool strip button copy as new_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void toolStripButtonCopyAsNew_Click(object sender, EventArgs e)
+        {
+            DbConnectionDefinition definition = lstConnections.SelectedItem as DbConnectionDefinition;
+            if (definition != null)
+            {
+                DbConnectionDefinition newDefinition = DbConnectionDefinition.FromXml(definition.ToXml());
+                newDefinition.Name = "Copy of " + newDefinition.Name;
+                ManageDefinition(newDefinition);
+            }
+        }
+
+        /// <summary>The tool strip button delete_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void toolStripButtonDelete_Click(object sender, EventArgs e)
+        {
+            DbConnectionDefinition definition = lstConnections.SelectedItem as DbConnectionDefinition;
+            if (definition != null)
+            {
+                int newIndex = Math.Max(lstConnections.SelectedIndex - 1, 0);
+                _definitionList.RemoveDefinition(definition);
+                RemoveFromList(definition);
+                if (lstConnections.Items.Count > 0)
+                {
+                    lstConnections.SelectedIndex = newIndex;
+                }
+            }
+        }
+
+        /// <summary>The tool strip button edit conn str_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void toolStripButtonEditConnStr_Click(object sender, EventArgs e)
+        {
+            DbConnectionDefinition definition = lstConnections.SelectedItem as DbConnectionDefinition;
+            if (definition != null)
+            {
+                ManageDefinition(definition);
+            }
+        }
+
+        /// <summary>The tool strip button ok_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void toolStripButtonOk_Click(object sender, EventArgs e)
+        {
+            SaveConnectionDefinitions(_definitionList);
+            Close();
+        }
+
+        /// <summary>The tool strip button test_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void toolStripButtonTest_Click(object sender, EventArgs e)
+        {
+            // do a standalone raw connection test
+            DbConnectionDefinition definition = lstConnections.SelectedItem as DbConnectionDefinition;
+            if (definition != null)
+            {
+                Exception exp = QueryRunner.TestDbConnection(definition.ProviderName, definition.ConnectionString);
+                if (exp == null)
+                {
+                    string msg = string.Format("Connected to '{0}' successfully.", definition.Name);
+                    _hostWindow.DisplaySimpleMessageBox(this, msg, "Connection Successful");
+                }
+                else
+                {
+                    string msg = string.Format("Failed connecting to '{0}'.{1}{2}", definition.Name, Environment.NewLine, exp.Message);
+                    _hostWindow.DisplaySimpleMessageBox(this, msg, "Connection Failed");
+                }
+            }
+        }
+
+        private void DbConnectionsForm_Load(object sender, EventArgs e)
+        {
+
+        }
+
+        private void SetDirty()
+        {
+            if (!_loaded)
+            {
+                return;
+            }
+
+            if (!_dirty)
+            {
+                _dirty = true;
+                Text += "*";
+            }
+        }
+    }
+}
\ No newline at end of file
Added +325 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.Designer.cs
new file mode 100644
index 0000000..ea1f002
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.Designer.cs
@@ -0,0 +1,325 @@
+namespace MiniSqlQuery.PlugIns.ConnectionStringsManager
+{
+	partial class DbConnectionsForm
+	{
+		/// <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(DbConnectionsForm));
+            this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+            this.toolStripButtonOk = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButtonCancel = new System.Windows.Forms.ToolStripButton();
+            this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripButtonAdd = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButtonCopyAsNew = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButtonEditConnStr = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButtonDelete = new System.Windows.Forms.ToolStripButton();
+            this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripButtonTest = new System.Windows.Forms.ToolStripButton();
+            this.lstConnections = new System.Windows.Forms.ListBox();
+            this.grpDetails = new System.Windows.Forms.GroupBox();
+            this.txtComment = new System.Windows.Forms.TextBox();
+            this.label4 = new System.Windows.Forms.Label();
+            this.txtConn = new System.Windows.Forms.TextBox();
+            this.label3 = new System.Windows.Forms.Label();
+            this.txtProvider = new System.Windows.Forms.TextBox();
+            this.label2 = new System.Windows.Forms.Label();
+            this.txtName = new System.Windows.Forms.TextBox();
+            this.label1 = new System.Windows.Forms.Label();
+            this.toolStrip1.SuspendLayout();
+            this.grpDetails.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // toolStrip1
+            // 
+            this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Bottom;
+            this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripButtonOk,
+            this.toolStripButtonCancel,
+            this.toolStripSeparator1,
+            this.toolStripButtonAdd,
+            this.toolStripButtonCopyAsNew,
+            this.toolStripButtonEditConnStr,
+            this.toolStripButtonDelete,
+            this.toolStripSeparator2,
+            this.toolStripButtonTest});
+            this.toolStrip1.Location = new System.Drawing.Point(0, 342);
+            this.toolStrip1.Name = "toolStrip1";
+            this.toolStrip1.Size = new System.Drawing.Size(881, 27);
+            this.toolStrip1.TabIndex = 4;
+            this.toolStrip1.Text = "toolStrip1";
+            // 
+            // toolStripButtonOk
+            // 
+            this.toolStripButtonOk.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+            this.toolStripButtonOk.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonOk.Image")));
+            this.toolStripButtonOk.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButtonOk.Name = "toolStripButtonOk";
+            this.toolStripButtonOk.Size = new System.Drawing.Size(33, 24);
+            this.toolStripButtonOk.Text = "&OK";
+            this.toolStripButtonOk.Click += new System.EventHandler(this.toolStripButtonOk_Click);
+            // 
+            // toolStripButtonCancel
+            // 
+            this.toolStripButtonCancel.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+            this.toolStripButtonCancel.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonCancel.Image")));
+            this.toolStripButtonCancel.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButtonCancel.Name = "toolStripButtonCancel";
+            this.toolStripButtonCancel.Size = new System.Drawing.Size(57, 24);
+            this.toolStripButtonCancel.Text = "&Cancel";
+            this.toolStripButtonCancel.Click += new System.EventHandler(this.toolStripButtonCancel_Click);
+            // 
+            // toolStripSeparator1
+            // 
+            this.toolStripSeparator1.Name = "toolStripSeparator1";
+            this.toolStripSeparator1.Size = new System.Drawing.Size(6, 27);
+            // 
+            // toolStripButtonAdd
+            // 
+            this.toolStripButtonAdd.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonAdd.Image")));
+            this.toolStripButtonAdd.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButtonAdd.Name = "toolStripButtonAdd";
+            this.toolStripButtonAdd.Size = new System.Drawing.Size(57, 24);
+            this.toolStripButtonAdd.Text = "Add";
+            this.toolStripButtonAdd.ToolTipText = "Add";
+            this.toolStripButtonAdd.Click += new System.EventHandler(this.toolStripButtonAdd_Click);
+            // 
+            // toolStripButtonCopyAsNew
+            // 
+            this.toolStripButtonCopyAsNew.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonCopyAsNew.Image")));
+            this.toolStripButtonCopyAsNew.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButtonCopyAsNew.Name = "toolStripButtonCopyAsNew";
+            this.toolStripButtonCopyAsNew.Size = new System.Drawing.Size(115, 24);
+            this.toolStripButtonCopyAsNew.Text = "Copy as New";
+            this.toolStripButtonCopyAsNew.Click += new System.EventHandler(this.toolStripButtonCopyAsNew_Click);
+            // 
+            // toolStripButtonEditConnStr
+            // 
+            this.toolStripButtonEditConnStr.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonEditConnStr.Image")));
+            this.toolStripButtonEditConnStr.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButtonEditConnStr.Name = "toolStripButtonEditConnStr";
+            this.toolStripButtonEditConnStr.Size = new System.Drawing.Size(55, 24);
+            this.toolStripButtonEditConnStr.Text = "Edit";
+            this.toolStripButtonEditConnStr.Click += new System.EventHandler(this.toolStripButtonEditConnStr_Click);
+            // 
+            // toolStripButtonDelete
+            // 
+            this.toolStripButtonDelete.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonDelete.Image")));
+            this.toolStripButtonDelete.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButtonDelete.Name = "toolStripButtonDelete";
+            this.toolStripButtonDelete.Size = new System.Drawing.Size(73, 24);
+            this.toolStripButtonDelete.Text = "Delete";
+            this.toolStripButtonDelete.Click += new System.EventHandler(this.toolStripButtonDelete_Click);
+            // 
+            // toolStripSeparator2
+            // 
+            this.toolStripSeparator2.Name = "toolStripSeparator2";
+            this.toolStripSeparator2.Size = new System.Drawing.Size(6, 27);
+            // 
+            // toolStripButtonTest
+            // 
+            this.toolStripButtonTest.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+            this.toolStripButtonTest.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonTest.Image")));
+            this.toolStripButtonTest.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButtonTest.Name = "toolStripButtonTest";
+            this.toolStripButtonTest.Size = new System.Drawing.Size(49, 24);
+            this.toolStripButtonTest.Text = "Test...";
+            this.toolStripButtonTest.Click += new System.EventHandler(this.toolStripButtonTest_Click);
+            // 
+            // lstConnections
+            // 
+            this.lstConnections.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left)));
+            this.lstConnections.FormattingEnabled = true;
+            this.lstConnections.ItemHeight = 16;
+            this.lstConnections.Location = new System.Drawing.Point(16, 15);
+            this.lstConnections.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.lstConnections.Name = "lstConnections";
+            this.lstConnections.Size = new System.Drawing.Size(335, 292);
+            this.lstConnections.TabIndex = 5;
+            this.lstConnections.SelectedValueChanged += new System.EventHandler(this.lstConnections_SelectedValueChanged);
+            this.lstConnections.DoubleClick += new System.EventHandler(this.lstConnections_DoubleClick);
+            // 
+            // grpDetails
+            // 
+            this.grpDetails.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.grpDetails.Controls.Add(this.txtComment);
+            this.grpDetails.Controls.Add(this.label4);
+            this.grpDetails.Controls.Add(this.txtConn);
+            this.grpDetails.Controls.Add(this.label3);
+            this.grpDetails.Controls.Add(this.txtProvider);
+            this.grpDetails.Controls.Add(this.label2);
+            this.grpDetails.Controls.Add(this.txtName);
+            this.grpDetails.Controls.Add(this.label1);
+            this.grpDetails.Location = new System.Drawing.Point(360, 15);
+            this.grpDetails.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.grpDetails.Name = "grpDetails";
+            this.grpDetails.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.grpDetails.Size = new System.Drawing.Size(505, 319);
+            this.grpDetails.TabIndex = 6;
+            this.grpDetails.TabStop = false;
+            this.grpDetails.Text = "Details";
+            // 
+            // txtComment
+            // 
+            this.txtComment.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.txtComment.Location = new System.Drawing.Point(133, 206);
+            this.txtComment.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.txtComment.Multiline = true;
+            this.txtComment.Name = "txtComment";
+            this.txtComment.ReadOnly = true;
+            this.txtComment.Size = new System.Drawing.Size(363, 105);
+            this.txtComment.TabIndex = 7;
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Location = new System.Drawing.Point(8, 209);
+            this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(67, 17);
+            this.label4.TabIndex = 6;
+            this.label4.Text = "Comment";
+            // 
+            // txtConn
+            // 
+            this.txtConn.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtConn.Location = new System.Drawing.Point(133, 87);
+            this.txtConn.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.txtConn.Multiline = true;
+            this.txtConn.Name = "txtConn";
+            this.txtConn.ReadOnly = true;
+            this.txtConn.Size = new System.Drawing.Size(363, 110);
+            this.txtConn.TabIndex = 5;
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(8, 91);
+            this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(79, 17);
+            this.label3.TabIndex = 4;
+            this.label3.Text = "Connection";
+            // 
+            // txtProvider
+            // 
+            this.txtProvider.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtProvider.Location = new System.Drawing.Point(133, 55);
+            this.txtProvider.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.txtProvider.Name = "txtProvider";
+            this.txtProvider.ReadOnly = true;
+            this.txtProvider.Size = new System.Drawing.Size(363, 22);
+            this.txtProvider.TabIndex = 3;
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(8, 59);
+            this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(61, 17);
+            this.label2.TabIndex = 2;
+            this.label2.Text = "Provider";
+            // 
+            // txtName
+            // 
+            this.txtName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtName.Location = new System.Drawing.Point(133, 23);
+            this.txtName.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.txtName.Name = "txtName";
+            this.txtName.ReadOnly = true;
+            this.txtName.Size = new System.Drawing.Size(363, 22);
+            this.txtName.TabIndex = 1;
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(8, 27);
+            this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(45, 17);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "Name";
+            // 
+            // DbConnectionsForm
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(881, 369);
+            this.Controls.Add(this.grpDetails);
+            this.Controls.Add(this.lstConnections);
+            this.Controls.Add(this.toolStrip1);
+            this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.Name = "DbConnectionsForm";
+            this.ShowIcon = false;
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "Database Connection List Editor";
+            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.DbConnectionsForm_FormClosing);
+            this.Load += new System.EventHandler(this.DbConnectionsForm_Load);
+            this.Shown += new System.EventHandler(this.DbConnectionsForm_Shown);
+            this.toolStrip1.ResumeLayout(false);
+            this.toolStrip1.PerformLayout();
+            this.grpDetails.ResumeLayout(false);
+            this.grpDetails.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+		}
+
+		#endregion
+
+		private System.Windows.Forms.ToolStrip toolStrip1;
+		private System.Windows.Forms.ToolStripButton toolStripButtonOk;
+		private System.Windows.Forms.ToolStripButton toolStripButtonCancel;
+		private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+		private System.Windows.Forms.ToolStripButton toolStripButtonEditConnStr;
+		private System.Windows.Forms.ListBox lstConnections;
+		private System.Windows.Forms.GroupBox grpDetails;
+		private System.Windows.Forms.TextBox txtProvider;
+		private System.Windows.Forms.Label label2;
+		private System.Windows.Forms.TextBox txtName;
+		private System.Windows.Forms.Label label1;
+		private System.Windows.Forms.TextBox txtComment;
+		private System.Windows.Forms.Label label4;
+		private System.Windows.Forms.TextBox txtConn;
+		private System.Windows.Forms.Label label3;
+		private System.Windows.Forms.ToolStripButton toolStripButtonAdd;
+		private System.Windows.Forms.ToolStripButton toolStripButtonDelete;
+		private System.Windows.Forms.ToolStripButton toolStripButtonCopyAsNew;
+		private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+		private System.Windows.Forms.ToolStripButton toolStripButtonTest;
+	}
+}
\ No newline at end of file
Added +229 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.resx b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.resx
new file mode 100644
index 0000000..3b9a305
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.resx
@@ -0,0 +1,229 @@
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="toolStripButtonOk.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+        YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+        0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+        bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+        VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+        c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+        Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+        mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+        kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+        TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="toolStripButtonCancel.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+        YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+        0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+        bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+        VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+        c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+        Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+        mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+        kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+        TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="toolStripButtonAdd.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+        YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+        0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+        bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+        VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+        c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+        Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+        mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+        kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+        TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="toolStripButtonCopyAsNew.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+        YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+        0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+        bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+        VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+        c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+        Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+        mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+        kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+        TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="toolStripButtonEditConnStr.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+        YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+        0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+        bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+        VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+        c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+        Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+        mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+        kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+        TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="toolStripButtonDelete.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+        YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+        0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+        bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+        VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+        c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+        Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+        mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+        kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+        TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="toolStripButtonTest.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+        YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+        0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+        bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+        VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+        c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+        Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+        mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+        kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+        TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+  </data>
+</root>
\ No newline at end of file
Added +79 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/GenericConnectionStringBuilder.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/GenericConnectionStringBuilder.cs
new file mode 100644
index 0000000..5fa0aca
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/GenericConnectionStringBuilder.cs
@@ -0,0 +1,79 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Collections;
+using System.ComponentModel;
+using System.Data.Common;
+using System.Reflection;
+
+namespace MiniSqlQuery.PlugIns.ConnectionStringsManager
+{
+    /// <summary>The generic connection string builder.</summary>
+    [DefaultMember("Item"), DefaultProperty("ConnectionString")]
+    public class GenericConnectionStringBuilder : DbConnectionStringBuilder
+    {
+        /// <summary>The _properties.</summary>
+        private Hashtable _properties;
+
+        /// <summary>Initializes a new instance of the <see cref="GenericConnectionStringBuilder"/> class.</summary>
+        public GenericConnectionStringBuilder()
+        {
+            Initialize(null);
+        }
+
+        /// <summary>Initializes a new instance of the <see cref="GenericConnectionStringBuilder"/> class.</summary>
+        /// <param name="connectionString">The connection string.</param>
+        public GenericConnectionStringBuilder(string connectionString)
+        {
+            Initialize(connectionString);
+        }
+
+        /// <summary>The try get value.</summary>
+        /// <param name="keyword">The keyword.</param>
+        /// <param name="value">The value.</param>
+        /// <returns>The try get value.</returns>
+        public override bool TryGetValue(string keyword, out object value)
+        {
+            bool success = base.TryGetValue(keyword, out value);
+            if (_properties.ContainsKey(keyword))
+            {
+                PropertyDescriptor descriptor = _properties[keyword] as PropertyDescriptor;
+                if (descriptor == null)
+                {
+                    return success;
+                }
+
+                if (success)
+                {
+                    value = TypeDescriptor.GetConverter(descriptor.PropertyType).ConvertFrom(value);
+                    return success;
+                }
+
+                DefaultValueAttribute attribute = descriptor.Attributes[typeof(DefaultValueAttribute)] as DefaultValueAttribute;
+                if (attribute != null)
+                {
+                    value = attribute.Value;
+                    success = true;
+                }
+            }
+
+            return success;
+        }
+
+        /// <summary>The initialize.</summary>
+        /// <param name="cnnString">The cnn string.</param>
+        private void Initialize(string cnnString)
+        {
+            _properties = new Hashtable();
+            this.GetProperties(_properties);
+            if (!string.IsNullOrEmpty(cnnString))
+            {
+                ConnectionString = cnnString;
+            }
+        }
+    }
+}
\ No newline at end of file
Added +212 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/CoreApplicationPlugIn.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/CoreApplicationPlugIn.cs
new file mode 100644
index 0000000..ef57ebd
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/CoreApplicationPlugIn.cs
@@ -0,0 +1,212 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Collections.Specialized;
+using System.Diagnostics;
+using System.Linq;
+using System.Windows.Forms;
+using MiniSqlQuery.Commands;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.PlugIns
+{
+    /// <summary>The core application plug in.</summary>
+    public class CoreApplicationPlugIn : PluginLoaderBase
+    {
+        /// <summary>The _timer.</summary>
+        private Timer _timer;
+
+        /// <summary>Initializes a new instance of the <see cref="CoreApplicationPlugIn"/> class.</summary>
+        public CoreApplicationPlugIn()
+            : base("Mini SQL Query Core", "Plugin to setup the core features of Mini SQL Query.", 1)
+        {
+        }
+
+        /// <summary>Iinitialize the plug in.</summary>
+        public override void InitializePlugIn()
+        {
+            IApplicationServices services = Services;
+            IHostWindow hostWindow = services.HostWindow;
+
+            services.RegisterSingletonComponent<ICompletionProvider, NullCompletionProvider>("CompletionProvider");
+
+            services.RegisterEditor<BasicEditor>(new FileEditorDescriptor("Default text editor", "default-editor"));
+            services.RegisterEditor<QueryForm>(new FileEditorDescriptor("SQL Editor", "sql-editor", "sql"));
+            services.RegisterEditor<BasicCSharpEditor>(new FileEditorDescriptor("C# Editor", "cs-editor", "cs"));
+            services.RegisterEditor<BasicVbNetEditor>(new FileEditorDescriptor("VB/VB.NET Editor", "vb-editor", "vb"));
+            services.RegisterEditor<BasicXmlEditor>(new FileEditorDescriptor("XML Editor", "xml-editor", "xml"));
+            services.RegisterEditor<BasicHtmlEditor>(new FileEditorDescriptor("HTML Editor", "htm-editor", "htm", "html"));
+            services.RegisterEditor<BasicEditor>(new FileEditorDescriptor("Text Editor", "txt-editor", "txt"));
+
+            services.RegisterComponent<NewFileForm>("NewFileForm");
+            services.RegisterComponent<OptionsForm>("OptionsForm");
+            services.RegisterSingletonComponent<IMostRecentFilesService, MostRecentFilesService>("MostRecentFilesService");
+            services.RegisterConfigurationObject<CoreMiniSqlQueryConfiguration>();
+
+            ToolStripMenuItem fileMenu = hostWindow.GetMenuItem("File");
+            ToolStripMenuItem editMenu = hostWindow.GetMenuItem("edit");
+            ToolStripMenuItem queryMenu = hostWindow.GetMenuItem("query");
+            ToolStripMenuItem helpMenu = hostWindow.GetMenuItem("help");
+
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<NewQueryFormCommand>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<NewFileCommand>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItemSeparator());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<OpenFileCommand>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<SaveFileCommand>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<SaveFileAsCommand>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<CloseActiveWindowCommand>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItemSeparator());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<PrintCommand>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItemSeparator());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<OpenRecentFile1Command>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<OpenRecentFile2Command>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<OpenRecentFile3Command>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<OpenRecentFile4Command>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<OpenRecentFile5Command>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<OpenRecentFile6Command>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<OpenRecentFile7Command>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<OpenRecentFile8Command>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<OpenRecentFile9Command>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<OpenRecentFile10Command>());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItemSeparator());
+            fileMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<ExitApplicationCommand>());
+
+            queryMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<ExecuteTaskCommand>());
+            queryMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<CancelTaskCommand>());
+            queryMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<SaveResultsAsDataSetCommand>());
+            queryMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<RefreshDatabaseConnectionCommand>());
+            queryMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<CloseDatabaseConnectionCommand>());
+            queryMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<DisplayDbModelDependenciesCommand>());
+
+            // editMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<DuplicateLineCommand>());
+            editMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<PasteAroundSelectionCommand>());
+            editMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<ConvertTextToLowerCaseCommand>());
+            editMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<ConvertTextToUpperCaseCommand>());
+            editMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<ConvertTextToTitleCaseCommand>());
+            editMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<SetLeftPasteAroundSelectionCommand>());
+            editMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<SetRightPasteAroundSelectionCommand>());
+            editMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<ShowOptionsFormCommand>());
+            editMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<OpenConnectionFileCommand>());
+
+            // get the new item and make in invisible - the shortcut key is still available etc ;-)
+            ToolStripItem item = editMenu.DropDownItems["SetLeftPasteAroundSelectionCommandToolStripMenuItem"];
+            item.Visible = false;
+            item = editMenu.DropDownItems["SetRightPasteAroundSelectionCommandToolStripMenuItem"];
+            item.Visible = false;
+
+
+            helpMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<ShowHelpCommand>());
+            helpMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<ShowWebPageCommand>());
+            helpMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<EmailAuthorCommand>());
+            helpMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItemSeparator());
+            helpMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<ShowAboutCommand>());
+
+            CommandControlBuilder.MonitorMenuItemsOpeningForEnabling(hostWindow.Instance.MainMenuStrip);
+
+            // toolstrip
+            hostWindow.AddToolStripCommand<NewQueryFormCommand>(0);
+            hostWindow.AddToolStripCommand<OpenFileCommand>(1);
+            hostWindow.AddToolStripCommand<SaveFileCommand>(2);
+            hostWindow.AddToolStripSeperator(3);
+            hostWindow.AddToolStripCommand<ExecuteTaskCommand>(4);
+            hostWindow.AddToolStripCommand<CancelTaskCommand>(5);
+            hostWindow.AddToolStripSeperator(6);
+            hostWindow.AddToolStripSeperator(null);
+            hostWindow.AddToolStripCommand<RefreshDatabaseConnectionCommand>(null);
+
+            hostWindow.AddPluginCommand<InsertGuidCommand>();
+
+            ConfigureMostRecentFileList(services);
+
+            // watch tool strip enabled properties
+            // by simply iterating each one every second or so we avoid the need to track via events
+            _timer = new Timer();
+            _timer.Interval = 1000;
+            _timer.Tick += TimerTick;
+            _timer.Enabled = true;
+        }
+
+        protected void ConfigureMostRecentFileList(IApplicationServices services)
+        {
+            // get the files out of the settings and register them
+            var mostRecentFilesService = services.Resolve<IMostRecentFilesService>();
+            if (services.Settings.MostRecentFiles != null)
+            {
+                foreach (string mostRecentFile in services.Settings.MostRecentFiles)
+                {
+                    mostRecentFilesService.Filenames.Add(mostRecentFile);
+                }
+            }
+
+            // watch for changes
+            mostRecentFilesService.MostRecentFilesChanged += mostRecentFilesService_MostRecentFilesChanged;
+
+            // need to manually call the update - only required on first load
+            ((OpenRecentFileCommand)CommandManager.GetCommandInstance<OpenRecentFile1Command>()).UpdateName();
+            ((OpenRecentFileCommand)CommandManager.GetCommandInstance<OpenRecentFile2Command>()).UpdateName();
+            ((OpenRecentFileCommand)CommandManager.GetCommandInstance<OpenRecentFile3Command>()).UpdateName();
+            ((OpenRecentFileCommand)CommandManager.GetCommandInstance<OpenRecentFile4Command>()).UpdateName();
+            ((OpenRecentFileCommand)CommandManager.GetCommandInstance<OpenRecentFile5Command>()).UpdateName();
+            ((OpenRecentFileCommand)CommandManager.GetCommandInstance<OpenRecentFile6Command>()).UpdateName();
+            ((OpenRecentFileCommand)CommandManager.GetCommandInstance<OpenRecentFile7Command>()).UpdateName();
+            ((OpenRecentFileCommand)CommandManager.GetCommandInstance<OpenRecentFile8Command>()).UpdateName();
+            ((OpenRecentFileCommand)CommandManager.GetCommandInstance<OpenRecentFile9Command>()).UpdateName();
+            ((OpenRecentFileCommand)CommandManager.GetCommandInstance<OpenRecentFile10Command>()).UpdateName();
+        }
+
+        /// <summary>The unload plug in.</summary>
+        public override void UnloadPlugIn()
+        {
+            if (_timer != null)
+            {
+                _timer.Dispose();
+            }
+        }
+
+        /// <summary>Called frequently to run through all the commands on the toolstrip and check their enabled state. 
+        /// Marked as "DebuggerNonUserCode" because it can get in the way of a debug sesssion.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
+        [DebuggerNonUserCode]
+        private void TimerTick(object sender, EventArgs e)
+        {
+            try
+            {
+                _timer.Enabled = false;
+                foreach (ToolStripItem item in Services.HostWindow.ToolStrip.Items)
+                {
+                    ICommand cmd = item.Tag as ICommand;
+                    if (cmd != null)
+                    {
+                        item.Enabled = cmd.Enabled;
+                    }
+                }
+            }
+            finally
+            {
+                _timer.Enabled = true;
+            }
+        }
+
+        static void mostRecentFilesService_MostRecentFilesChanged(object sender, MostRecentFilesChangedEventArgs e)
+        {
+            var services = ApplicationServices.Instance;
+            var mostRecentFilesService = services.Resolve<IMostRecentFilesService>();
+            if (services.Settings.MostRecentFiles == null)
+            {
+                services.Settings.MostRecentFiles = new StringCollection();
+            }
+            else
+            {
+                services.Settings.MostRecentFiles.Clear();
+            }
+            services.Settings.MostRecentFiles.AddRange(mostRecentFilesService.Filenames.ToArray());
+        }
+    }
+}
\ No newline at end of file
Added +280 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/CoreMiniSqlQueryConfiguration.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/CoreMiniSqlQueryConfiguration.cs
new file mode 100644
index 0000000..9a55071
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/CoreMiniSqlQueryConfiguration.cs
@@ -0,0 +1,280 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Collections.Specialized;
+using System.ComponentModel;
+using MiniSqlQuery.Core;
+
+namespace MiniSqlQuery.PlugIns
+{
+    /// <summary>The core mini sql query configuration.</summary>
+    public class CoreMiniSqlQueryConfiguration : NotifyPropertyChangedBase, IConfigurationObject
+    {
+        /// <summary>The application settings.</summary>
+        private readonly IApplicationSettings _settings;
+
+        /// <summary>The settings wrapper.</summary>
+        private readonly CoreMiniSqlQuerySettingsWrapper _settingsWrapper;
+
+        /// <summary>The dirty record.</summary>
+        private static bool _isDirty;
+
+        /// <summary>Initializes a new instance of the <see cref="CoreMiniSqlQueryConfiguration"/> class.</summary>
+        /// <param name="settings">The settings.</param>
+        public CoreMiniSqlQueryConfiguration(IApplicationSettings settings)
+        {
+            _settings = settings;
+            _settingsWrapper = new CoreMiniSqlQuerySettingsWrapper(_settings);
+            _settingsWrapper.PropertyChanged += ProxyPropertyChanged;
+            _isDirty = false;
+        }
+
+        /// <summary>Gets a value indicating whether IsDirty.</summary>
+        public bool IsDirty
+        {
+            get { return _isDirty; }
+            private set
+            {
+                if (_isDirty != value)
+                {
+                    _isDirty = value;
+                    OnPropertyChanged("IsDirty");
+                }
+            }
+        }
+
+        /// <summary>Gets Name.</summary>
+        public string Name
+        {
+            get { return "Mini SQL Query Settings"; }
+        }
+
+        /// <summary>Gets Settings.</summary>
+        public object Settings
+        {
+            get { return _settingsWrapper; }
+        }
+
+        /// <summary>Save the settings back.</summary>
+        public void Save()
+        {
+            _settings.EnableQueryBatching = _settingsWrapper.EnableQueryBatching;
+            _settings.CommandTimeout = _settingsWrapper.CommandTimeout;
+            _settings.PlugInFileFilter = _settingsWrapper.PlugInFileFilter;
+            _settings.MostRecentFiles = _settingsWrapper.MostRecentFiles;
+            _settings.LoadExternalPlugins = _settingsWrapper.LoadExternalPlugins;
+            _settings.DefaultConnectionDefinitionFilename = _settingsWrapper.DefaultConnectionDefinitionFilename;
+            _settings.DateTimeFormat = _settingsWrapper.DateTimeFormat;
+            _settings.NullText = _settingsWrapper.NullText;
+            _settings.IncludeReadOnlyColumnsInExport = _settingsWrapper.IncludeReadOnlyColumnsInExport;
+            IsDirty = false;
+        }
+
+        /// <summary>The proxy property changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The events.</param>
+        private void ProxyPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            IsDirty = true;
+        }
+
+        /// <summary>The core mini sql query settings wrapper.</summary>
+        public class CoreMiniSqlQuerySettingsWrapper : NotifyPropertyChangedBase
+        {
+            /// <summary>The _settings.</summary>
+            private readonly IApplicationSettings _settings;
+
+            /// <summary>The _date time format.</summary>
+            private string _dateTimeFormat;
+
+            /// <summary>The _default connection definition filename.</summary>
+            private string _defaultConnectionDefinitionFilename;
+
+            /// <summary>The _enable query batching.</summary>
+            private bool _enableQueryBatching;
+
+            /// <summary>The _load plugins.</summary>
+            private bool _loadPlugins;
+
+            /// <summary>The _null text.</summary>
+            private string _nullText;
+
+            /// <summary>The _plug in file filter.</summary>
+            private string _plugInFileFilter;
+
+            StringCollection _mostRecentFiles;
+
+            /// <summary>The include ReadOnly Columns in Export value.</summary>
+            private bool _includeReadOnlyColumnsInExport;
+
+            /// <summary>The command timout.</summary>
+            private int _commandTimeout;
+
+            /// <summary>Initializes a new instance of the <see cref="CoreMiniSqlQuerySettingsWrapper"/> class.</summary>
+            /// <param name="settings">The settings.</param>
+            public CoreMiniSqlQuerySettingsWrapper(IApplicationSettings settings)
+            {
+                _settings = settings;
+
+                EnableQueryBatching = _settings.EnableQueryBatching;
+                CommandTimeout = _settings.CommandTimeout;
+                PlugInFileFilter = _settings.PlugInFileFilter;
+                MostRecentFiles = _settings.MostRecentFiles;
+                LoadExternalPlugins = _settings.LoadExternalPlugins;
+                DefaultConnectionDefinitionFilename = _settings.DefaultConnectionDefinitionFilename;
+                DateTimeFormat = _settings.DateTimeFormat;
+                NullText = _settings.NullText;
+                IncludeReadOnlyColumnsInExport = _settings.IncludeReadOnlyColumnsInExport;
+            }
+
+            /// <summary>Gets or sets DateTimeFormat.</summary>
+            [Category("Query Results")]
+            [Description("")]
+            public string DateTimeFormat
+            {
+                get { return _dateTimeFormat; }
+                set
+                {
+                    if (_dateTimeFormat != value)
+                    {
+                        _dateTimeFormat = value;
+                        OnPropertyChanged("DateTimeFormat");
+                    }
+                }
+            }
+
+            /// <summary>Gets or sets DefaultConnectionDefinitionFilename.</summary>
+            [Category("Query")]
+            [Description("If this value is set to a specific connections XML file it will be loaded in preferences to the default path " +
+                         "(%APPDATA%\\MiniSqlQuery\\Connections.xml). Note that changing this value will require a restart of the application.")]
+            public string DefaultConnectionDefinitionFilename
+            {
+                get { return _defaultConnectionDefinitionFilename; }
+                set
+                {
+                    if (_defaultConnectionDefinitionFilename != value)
+                    {
+                        _defaultConnectionDefinitionFilename = value;
+                        OnPropertyChanged("DefaultConnectionDefinitionFilename");
+                    }
+                }
+            }
+
+            /// <summary>Gets or sets a value indicating whether EnableQueryBatching.</summary>
+            [Category("Query")]
+            [Description("Set to true to enable the batching feature, if false the 'GO' statements will be passed straight through.")]
+            public bool EnableQueryBatching
+            {
+                get { return _enableQueryBatching; }
+                set
+                {
+                    if (_enableQueryBatching != value)
+                    {
+                        _enableQueryBatching = value;
+                        OnPropertyChanged("EnableQueryBatching");
+                    }
+                }
+            }
+
+            /// <summary>Gets or sets a value indicating the command timeout.</summary>
+            [Category("Query")]
+            [Description("Gets or sets the wait time before terminating the attempt to execute a command and generating an error. A value of 0 indicates no limit.")]
+            public int CommandTimeout
+            {
+                get { return _commandTimeout; }
+                set
+                {
+                    if (_commandTimeout != value)
+                    {
+                        _commandTimeout = value;
+                        OnPropertyChanged("CommandTimeout");
+                    }
+                }
+            }
+
+            /// <summary>Gets or sets a value indicating whether LoadExternalPlugins.</summary>
+            [Category("Plugins")]
+            [Description("If true, external plugin files will be loaded (requires restart).")]
+            public bool LoadExternalPlugins
+            {
+                get { return _loadPlugins; }
+                set
+                {
+                    if (_loadPlugins != value)
+                    {
+                        _loadPlugins = value;
+                        OnPropertyChanged("LoadExternalPlugins");
+                    }
+                }
+            }
+
+            /// <summary>Gets or sets NullText.</summary>
+            [Category("Query Results")]
+            [Description("")]
+            public string NullText
+            {
+                get { return _nullText; }
+                set
+                {
+                    if (_nullText != value)
+                    {
+                        _nullText = value;
+                        OnPropertyChanged("NullText");
+                    }
+                }
+            }
+
+            /// <summary>Gets or sets PlugInFileFilter.</summary>
+            [Category("Plugins")]
+            [Description("The file filter used for finding plugins (*.PlugIn.dll)")]
+            public string PlugInFileFilter
+            {
+                get { return _plugInFileFilter; }
+                set
+                {
+                    if (_plugInFileFilter != value)
+                    {
+                        _plugInFileFilter = value;
+                        OnPropertyChanged("PlugInFileFilter");
+                    }
+                }
+            }
+
+            /// <summary>Gets or sets MostRecentFiles.</summary>
+            [Category("Plugins")]
+            [Description("The file filter used for finding plugins (*.PlugIn.dll)")]
+            public StringCollection MostRecentFiles
+            {
+                get { return _mostRecentFiles; }
+                set
+                {
+                    if (_mostRecentFiles != value)
+                    {
+                        _mostRecentFiles = value;
+                        OnPropertyChanged("MostRecentFiles");
+                    }
+                }
+            }
+
+            /// <summary>Gets or sets PlugInFileFilter.</summary>
+            [Category("Export Scripts")]
+            [Description("If true, the readonly columns (e.g. identity) will be exported in the script.")]
+            public bool IncludeReadOnlyColumnsInExport
+            {
+                get { return _includeReadOnlyColumnsInExport; }
+                set
+                {
+                    if (_includeReadOnlyColumnsInExport != value)
+                    {
+                        _includeReadOnlyColumnsInExport = value;
+                        OnPropertyChanged("PlugInFileFilter");
+                    }
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
Added +28 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/CopyTableNameCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/CopyTableNameCommand.cs
new file mode 100644
index 0000000..ff20da0
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/CopyTableNameCommand.cs
@@ -0,0 +1,28 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.PlugIns.DatabaseInspector.Commands
+{
+    /// <summary>The copy table name command.</summary>
+    public class CopyTableNameCommand : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="CopyTableNameCommand"/> class.</summary>
+        public CopyTableNameCommand()
+            : base("Copy table name")
+        {
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            Clipboard.SetText(HostWindow.DatabaseInspector.RightClickedTableName);
+        }
+    }
+}
\ No newline at end of file
Added +38 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateDeleteStatementCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateDeleteStatementCommand.cs
new file mode 100644
index 0000000..e0b7220
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateDeleteStatementCommand.cs
@@ -0,0 +1,38 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.IO;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.DbModel;
+
+namespace MiniSqlQuery.PlugIns.DatabaseInspector.Commands
+{
+    /// <summary>The generate delete statement command.</summary>
+    public class GenerateDeleteStatementCommand : GenerateStatementCommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="GenerateDeleteStatementCommand"/> class.</summary>
+        public GenerateDeleteStatementCommand()
+            : base("Generate Delete Statement")
+        {
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            IQueryEditor editor = ActiveFormAsSqlQueryEditor;
+            string tableName = HostWindow.DatabaseInspector.RightClickedTableName;
+            DbModelInstance model = HostWindow.DatabaseInspector.DbSchema;
+
+            if (tableName != null && editor != null)
+            {
+                StringWriter sql = new StringWriter();
+                SqlWriter.WriteDelete(sql, GetTableOrViewByName(model, tableName));
+                editor.InsertText(sql.ToString());
+            }
+        }
+    }
+}
\ No newline at end of file
Added +38 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateInsertStatementCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateInsertStatementCommand.cs
new file mode 100644
index 0000000..55f0802
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateInsertStatementCommand.cs
@@ -0,0 +1,38 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.IO;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.DbModel;
+
+namespace MiniSqlQuery.PlugIns.DatabaseInspector.Commands
+{
+    /// <summary>The generate insert statement command.</summary>
+    internal class GenerateInsertStatementCommand : GenerateStatementCommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="GenerateInsertStatementCommand"/> class.</summary>
+        public GenerateInsertStatementCommand()
+            : base("Generate Insert Statement")
+        {
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            IQueryEditor editor = ActiveFormAsSqlQueryEditor;
+            string tableName = HostWindow.DatabaseInspector.RightClickedTableName;
+            DbModelInstance model = HostWindow.DatabaseInspector.DbSchema;
+
+            if (tableName != null && editor != null)
+            {
+                StringWriter sql = new StringWriter();
+                SqlWriter.WriteInsert(sql, GetTableOrViewByName(model, tableName));
+                editor.InsertText(sql.ToString());
+            }
+        }
+    }
+}
\ No newline at end of file
Added +38 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateSelectCountStatementCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateSelectCountStatementCommand.cs
new file mode 100644
index 0000000..14efcf5
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateSelectCountStatementCommand.cs
@@ -0,0 +1,38 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.IO;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.DbModel;
+
+namespace MiniSqlQuery.PlugIns.DatabaseInspector.Commands
+{
+    /// <summary>The generate select count statement command.</summary>
+    public class GenerateSelectCountStatementCommand : GenerateStatementCommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="GenerateSelectCountStatementCommand"/> class.</summary>
+        public GenerateSelectCountStatementCommand()
+            : base("Generate Select COUNT(*) Statement")
+        {
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            IQueryEditor editor = ActiveFormAsSqlQueryEditor;
+            string tableName = HostWindow.DatabaseInspector.RightClickedTableName;
+            DbModelInstance model = HostWindow.DatabaseInspector.DbSchema;
+
+            if (tableName != null && editor != null)
+            {
+                StringWriter sql = new StringWriter();
+                SqlWriter.WriteSelectCount(sql, GetTableOrViewByName(model, tableName));
+                editor.InsertText(sql.ToString());
+            }
+        }
+    }
+}
\ No newline at end of file
Added +38 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateSelectStatementCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateSelectStatementCommand.cs
new file mode 100644
index 0000000..7265429
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateSelectStatementCommand.cs
@@ -0,0 +1,38 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.IO;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.DbModel;
+
+namespace MiniSqlQuery.PlugIns.DatabaseInspector.Commands
+{
+    /// <summary>The generate select statement command.</summary>
+    public class GenerateSelectStatementCommand : GenerateStatementCommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="GenerateSelectStatementCommand"/> class.</summary>
+        public GenerateSelectStatementCommand()
+            : base("Generate Select Statement")
+        {
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            IQueryEditor editor = ActiveFormAsSqlQueryEditor;
+            string tableName = HostWindow.DatabaseInspector.RightClickedTableName;
+            DbModelInstance model = HostWindow.DatabaseInspector.DbSchema;
+
+            if (tableName != null && editor != null)
+            {
+                StringWriter sql = new StringWriter();
+                SqlWriter.WriteSelect(sql, GetTableOrViewByName(model, tableName));
+                editor.InsertText(sql.ToString());
+            }
+        }
+    }
+}
\ No newline at end of file
Added +70 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateStatementCommandBase.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateStatementCommandBase.cs
new file mode 100644
index 0000000..1464746
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateStatementCommandBase.cs
@@ -0,0 +1,70 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core.Commands;
+using MiniSqlQuery.Core.DbModel;
+
+namespace MiniSqlQuery.PlugIns.DatabaseInspector.Commands
+{
+    /// <summary>The generate statement command base.</summary>
+    public abstract class GenerateStatementCommandBase : CommandBase
+    {
+        /// <summary>The _sql writer.</summary>
+        private ISqlWriter _sqlWriter;
+
+        /// <summary>Initializes a new instance of the <see cref="GenerateStatementCommandBase"/> class.</summary>
+        /// <param name="name">The name.</param>
+        public GenerateStatementCommandBase(string name)
+            : base(name)
+        {
+        }
+
+        /// <summary>Gets SqlWriter.</summary>
+        protected ISqlWriter SqlWriter
+        {
+            get
+            {
+                if (_sqlWriter == null)
+                {
+                    _sqlWriter = Services.Resolve<ISqlWriter>();
+                }
+
+                return _sqlWriter;
+            }
+        }
+
+        /// <summary>The get table or view by name.</summary>
+        /// <param name="model">The model.</param>
+        /// <param name="tableName">The table name.</param>
+        /// <returns></returns>
+        protected DbModelTable GetTableOrViewByName(DbModelInstance model, string tableName)
+        {
+            DbModelTable tableOrView = model.FindTable(tableName);
+            if (tableOrView == null)
+            {
+                // check the views
+                tableOrView = model.FindView(tableName);
+            }
+
+            return tableOrView;
+        }
+
+        /// <summary>The trim trailing comma.</summary>
+        /// <param name="sql">The sql.</param>
+        /// <returns>The trim trailing comma.</returns>
+        protected string TrimTrailingComma(string sql)
+        {
+            if (sql != null && sql.TrimEnd().EndsWith(","))
+            {
+                string tmp = sql.TrimEnd();
+                return tmp.Substring(0, tmp.Length - 1);
+            }
+
+            return sql;
+        }
+    }
+}
\ No newline at end of file
Added +38 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateUpdateStatementCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateUpdateStatementCommand.cs
new file mode 100644
index 0000000..2f90fe6
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/GenerateUpdateStatementCommand.cs
@@ -0,0 +1,38 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.IO;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.DbModel;
+
+namespace MiniSqlQuery.PlugIns.DatabaseInspector.Commands
+{
+    /// <summary>The generate update statement command.</summary>
+    internal class GenerateUpdateStatementCommand : GenerateStatementCommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="GenerateUpdateStatementCommand"/> class.</summary>
+        public GenerateUpdateStatementCommand()
+            : base("Generate Update Statement")
+        {
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            IQueryEditor editor = ActiveFormAsSqlQueryEditor;
+            string tableName = HostWindow.DatabaseInspector.RightClickedTableName;
+            DbModelInstance model = HostWindow.DatabaseInspector.DbSchema;
+
+            if (tableName != null && editor != null)
+            {
+                StringWriter sql = new StringWriter();
+                SqlWriter.WriteUpdate(sql, GetTableOrViewByName(model, tableName));
+                editor.InsertText(sql.ToString());
+            }
+        }
+    }
+}
\ No newline at end of file
Added +41 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/LocateFkReferenceColumnCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/LocateFkReferenceColumnCommand.cs
new file mode 100644
index 0000000..ec425e4
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/LocateFkReferenceColumnCommand.cs
@@ -0,0 +1,41 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core.DbModel;
+
+namespace MiniSqlQuery.PlugIns.DatabaseInspector.Commands
+{
+    /// <summary>The locate fk reference column command.</summary>
+    public class LocateFkReferenceColumnCommand : GenerateStatementCommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="LocateFkReferenceColumnCommand"/> class.</summary>
+        public LocateFkReferenceColumnCommand()
+            : base("Jump to FK column reference...")
+        {
+        }
+
+        /// <summary>Gets a value indicating whether Enabled.</summary>
+        public override bool Enabled
+        {
+            get
+            {
+                DbModelColumn column = HostWindow.DatabaseInspector.RightClickedModelObject as DbModelColumn;
+                return column != null && column.ForeignKeyReference != null;
+            }
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            DbModelColumn column = HostWindow.DatabaseInspector.RightClickedModelObject as DbModelColumn;
+            if (column != null && column.ForeignKeyReference != null)
+            {
+                HostWindow.DatabaseInspector.NavigateTo(column.ForeignKeyReference.ReferenceColumn);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +34 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/ShowDatabaseInspectorCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/ShowDatabaseInspectorCommand.cs
new file mode 100644
index 0000000..bdf1fd0
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/ShowDatabaseInspectorCommand.cs
@@ -0,0 +1,34 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.PlugIns.DatabaseInspector.Commands
+{
+    /// <summary>The show database inspector command.</summary>
+    public class ShowDatabaseInspectorCommand : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="ShowDatabaseInspectorCommand"/> class.</summary>
+        public ShowDatabaseInspectorCommand()
+            : base("Show Database Inspector")
+        {
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            DockContent databaseInspector = Services.Resolve<IDatabaseInspector>() as DockContent;
+            if (databaseInspector != null)
+            {
+                HostWindow.ShowDatabaseInspector(databaseInspector as IDatabaseInspector, DockState.DockLeft);
+                databaseInspector.Activate();
+            }
+        }
+    }
+}
\ No newline at end of file
Added +47 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/ShowFindObjectFormCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/ShowFindObjectFormCommand.cs
new file mode 100644
index 0000000..079ffe4
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/ShowFindObjectFormCommand.cs
@@ -0,0 +1,47 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Linq;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.PlugIns.DatabaseInspector.Commands
+{
+    /// <summary>The show find object form command.</summary>
+    public class ShowFindObjectFormCommand : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="ShowFindObjectFormCommand"/> class.</summary>
+        public ShowFindObjectFormCommand()
+            : base("Find Object...")
+        {
+            ShortcutKeys = Keys.Alt | Keys.F;
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            using (var frm = Services.Resolve<FindObjectForm>())
+            {
+                frm.ShowDialog(HostWindow.Instance);
+
+                var selectedTableName = frm.SelectedObjectName;
+                if (frm.DialogResult == DialogResult.OK && !String.IsNullOrEmpty(selectedTableName))
+                {
+                    // Special case for handling schemas - We want the search without the [dbo].[foo] part 
+                    // but the FindTableOrView expects it....
+                    var parts = selectedTableName.Split('.').Select(s => "[" + s + "]").ToArray();
+                    var name = String.Join(".", parts);
+
+                    IDbModelNamedObject obj = HostWindow.DatabaseInspector.DbSchema.FindTableOrView(name);
+                    HostWindow.DatabaseInspector.NavigateTo(obj);
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
Added +69 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/TruncateTableCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/TruncateTableCommand.cs
new file mode 100644
index 0000000..373535d
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/Commands/TruncateTableCommand.cs
@@ -0,0 +1,69 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Data;
+using System.Data.Common;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+
+namespace MiniSqlQuery.PlugIns.DatabaseInspector.Commands
+{
+    /// <summary>The truncate table command.</summary>
+    public class TruncateTableCommand : GenerateStatementCommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="TruncateTableCommand"/> class.</summary>
+        public TruncateTableCommand()
+            : base("Truncate Table")
+        {
+            SmallImage = ImageResource.table_delete;
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            IHostWindow hostWindow = Services.HostWindow;
+            string tableName = hostWindow.DatabaseInspector.RightClickedTableName;
+
+            string caption = string.Format("Truncate '{0}' Table Confirmation", tableName);
+            string msg = string.Format("Delete all '{0}' data, are you sure?", tableName);
+            if (tableName != null && MessageBox.Show(msg, caption, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
+            {
+                DbConnection dbConnection;
+                DbCommand cmd = null;
+
+                try
+                {
+                    hostWindow.SetPointerState(Cursors.WaitCursor);
+                    dbConnection = Settings.GetOpenConnection();
+                    cmd = dbConnection.CreateCommand();
+                    cmd.CommandText = "DELETE FROM " + tableName;
+                    cmd.CommandType = CommandType.Text;
+                    cmd.ExecuteNonQuery();
+                    Services.PostMessage(SystemMessage.TableTruncated, tableName);
+                }
+                catch (DbException dbExp)
+                {
+                    hostWindow.DisplaySimpleMessageBox(null, dbExp.Message, "Error");
+                }
+                catch (InvalidOperationException invalidExp)
+                {
+                    hostWindow.DisplaySimpleMessageBox(null, invalidExp.Message, "Error");
+                }
+                finally
+                {
+                    if (cmd != null)
+                    {
+                        cmd.Dispose();
+                    }
+
+                    hostWindow.SetPointerState(Cursors.Default);
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
Added +553 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/DatabaseInspectorForm.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/DatabaseInspectorForm.cs
new file mode 100644
index 0000000..6a845c3
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/DatabaseInspectorForm.cs
@@ -0,0 +1,553 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.IO;
+using System.Media;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.DbModel;
+using MiniSqlQuery.Properties;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.PlugIns.DatabaseInspector
+{
+    /// <summary>The database inspector form.</summary>
+    public partial class DatabaseInspectorForm : DockContent, IDatabaseInspector
+    {
+        /// <summary>The root tag.</summary>
+        private static readonly object RootTag = new object();
+
+        /// <summary>The tables tag.</summary>
+        private static readonly object TablesTag = new object();
+
+        /// <summary>The views tag.</summary>
+        private static readonly object ViewsTag = new object();
+
+        /// <summary>The _host window.</summary>
+        private readonly IHostWindow _hostWindow;
+
+        /// <summary>The _services.</summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>The _meta data service.</summary>
+        private IDatabaseSchemaService _metaDataService;
+
+        /// <summary>The _model.</summary>
+        private DbModelInstance _model;
+
+        /// <summary>The _populated.</summary>
+        private bool _populated;
+
+        /// <summary>The _right clicked model object.</summary>
+        private IDbModelNamedObject _rightClickedModelObject;
+
+        /// <summary>The _right clicked node.</summary>
+        private TreeNode _rightClickedNode;
+
+        /// <summary>The _sql writer.</summary>
+        private ISqlWriter _sqlWriter;
+
+        /// <summary>The _tables node.</summary>
+        private TreeNode _tablesNode;
+
+        /// <summary>The _views node.</summary>
+        private TreeNode _viewsNode;
+
+        /// <summary>Initializes a new instance of the <see cref="DatabaseInspectorForm"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="hostWindow">The host window.</param>
+        public DatabaseInspectorForm(IApplicationServices services, IHostWindow hostWindow)
+        {
+            InitializeComponent();
+            BuildImageList();
+
+            DatabaseTreeView.Nodes.Clear();
+            TreeNode root = CreateRootNodes();
+            root.Nodes.Add("Loading problem - check connection details and reset...");
+            DatabaseTreeView.Nodes.Add(root);
+
+            _services = services;
+            _hostWindow = hostWindow;
+
+            _services.Settings.DatabaseConnectionReset += Settings_DatabaseConnectionReset;
+        }
+
+        /// <summary>Gets ColumnMenu.</summary>
+        public ContextMenuStrip ColumnMenu
+        {
+            get { return ColumnNameContextMenuStrip; }
+        }
+
+        /// <summary>Gets DbSchema.</summary>
+        public DbModelInstance DbSchema
+        {
+            get { return _model; }
+        }
+
+        /// <summary>Gets RightClickedModelObject.</summary>
+        public IDbModelNamedObject RightClickedModelObject
+        {
+            get { return _rightClickedModelObject; }
+        }
+
+        /// <summary>Gets RightClickedTableName.</summary>
+        public string RightClickedTableName
+        {
+            get
+            {
+                if (_rightClickedNode == null)
+                {
+                    return null;
+                }
+
+                return _rightClickedNode.Text;
+            }
+        }
+
+        /// <summary>Gets TableMenu.</summary>
+        public ContextMenuStrip TableMenu
+        {
+            get { return TableNodeContextMenuStrip; }
+        }
+
+        /// <summary>The load database details.</summary>
+        public void LoadDatabaseDetails()
+        {
+            ExecLoadDatabaseDetails();
+        }
+
+        /// <summary>The navigate to.</summary>
+        /// <param name="modelObject">The model object.</param>
+        public void NavigateTo(IDbModelNamedObject modelObject)
+        {
+            if (modelObject == null)
+            {
+                return;
+            }
+
+            // todo - ensure expanded
+
+            switch (modelObject.ObjectType)
+            {
+                case ObjectTypes.Table:
+                    foreach (TreeNode treeNode in _tablesNode.Nodes)
+                    {
+                        IDbModelNamedObject obj = treeNode.Tag as IDbModelNamedObject;
+                        if (obj != null && modelObject == obj)
+                        {
+                            SelectNode(treeNode);
+                        }
+                    }
+
+                    break;
+                case ObjectTypes.View:
+                    foreach (TreeNode treeNode in _viewsNode.Nodes)
+                    {
+                        IDbModelNamedObject obj = treeNode.Tag as IDbModelNamedObject;
+                        if (obj != null && modelObject == obj)
+                        {
+                            SelectNode(treeNode);
+                        }
+                    }
+
+                    break;
+                case ObjectTypes.Column:
+                    DbModelColumn modelColumn = modelObject as DbModelColumn;
+                    if (modelColumn != null)
+                    {
+                        foreach (TreeNode treeNode in _tablesNode.Nodes)
+                        {
+                            // only look in the tables nodw for FK refs
+                            DbModelTable modelTable = treeNode.Tag as DbModelTable;
+                            if (modelTable != null && modelTable == modelColumn.ParentTable)
+                            {
+                                // now find the column in the child nodes
+                                foreach (TreeNode columnNode in treeNode.Nodes)
+                                {
+                                    DbModelColumn modelReferingColumn = columnNode.Tag as DbModelColumn;
+                                    if (modelReferingColumn != null && modelReferingColumn == modelColumn)
+                                    {
+                                        SelectNode(columnNode);
+                                    }
+                                }
+                            }
+                        }
+                    }
+
+                    break;
+            }
+        }
+
+        /// <summary>The build image key.</summary>
+        /// <param name="column">The column.</param>
+        /// <returns>The build image key.</returns>
+        private string BuildImageKey(DbModelColumn column)
+        {
+            string imageKey = column.ObjectType;
+            if (column.IsRowVersion)
+            {
+                imageKey += "-RowVersion";
+            }
+            else
+            {
+                if (column.IsKey)
+                {
+                    imageKey += "-PK";
+                }
+
+                if (column.ForeignKeyReference != null)
+                {
+                    imageKey += "-FK";
+                }
+            }
+
+            return imageKey;
+        }
+
+        /// <summary>Builds the image list.
+        /// It's nicer to hadle image lists this way, easier to update etc</summary>
+        private void BuildImageList()
+        {
+            InspectorImageList.Images.Add("Table", ImageResource.table);
+            InspectorImageList.Images.Add("Database", ImageResource.database);
+            InspectorImageList.Images.Add("Column", ImageResource.column);
+            InspectorImageList.Images.Add("Tables", ImageResource.table_multiple);
+            InspectorImageList.Images.Add("Views", ImageResource.view_multiple);
+            InspectorImageList.Images.Add("View", ImageResource.view);
+            InspectorImageList.Images.Add("Column-PK", ImageResource.key);
+            InspectorImageList.Images.Add("Column-FK", ImageResource.key_go_disabled);
+            InspectorImageList.Images.Add("Column-PK-FK", ImageResource.key_go);
+            InspectorImageList.Images.Add("Column-RowVersion", ImageResource.column_row_version);
+        }
+
+        /// <summary>The build tool tip.</summary>
+        /// <param name="table">The table.</param>
+        /// <param name="column">The column.</param>
+        /// <returns>The build tool tip.</returns>
+        private string BuildToolTip(DbModelTable table, DbModelColumn column)
+        {
+            string friendlyColumnName = Utility.MakeSqlFriendly(column.Name);
+            string toolTip = table.FullName + "." + friendlyColumnName;
+            if (column.IsKey)
+            {
+                toolTip += "; Primary Key";
+            }
+
+            if (column.IsAutoIncrement)
+            {
+                toolTip += "; Auto*";
+            }
+
+            if (column.ForeignKeyReference != null)
+            {
+                toolTip += string.Format("; FK -> {0}.{1}", column.ForeignKeyReference.ReferenceTable.FullName, column.ForeignKeyReference.ReferenceColumn.Name);
+            }
+
+            if (column.IsReadOnly)
+            {
+                toolTip += "; Read Only";
+            }
+
+            return toolTip;
+        }
+
+        /// <summary>The build tree from db model.</summary>
+        /// <param name="connection">The connection.</param>
+        private void BuildTreeFromDbModel(string connection)
+        {
+            DatabaseTreeView.Nodes.Clear();
+            TreeNode root = CreateRootNodes();
+            root.ToolTipText = connection;
+
+            if (_model.Tables != null)
+            {
+                foreach (DbModelTable table in _model.Tables)
+                {
+                    CreateTreeNodes(table);
+                }
+            }
+
+            if (_model.Views != null)
+            {
+                foreach (DbModelView view in _model.Views)
+                {
+                    CreateTreeNodes(view);
+                }
+            }
+
+            DatabaseTreeView.Nodes.Add(root);
+        }
+
+        /// <summary>The create root nodes.</summary>
+        /// <returns></returns>
+        private TreeNode CreateRootNodes()
+        {
+            TreeNode root = new TreeNode(Resources.Database);
+            root.ImageKey = "Database";
+            root.SelectedImageKey = "Database";
+            root.ContextMenuStrip = InspectorContextMenuStrip;
+            root.Tag = RootTag;
+
+            _tablesNode = new TreeNode(Resources.Tables);
+            _tablesNode.ImageKey = "Tables";
+            _tablesNode.SelectedImageKey = "Tables";
+            _tablesNode.Tag = TablesTag;
+
+            _viewsNode = new TreeNode(Resources.Views);
+            _viewsNode.ImageKey = "Views";
+            _viewsNode.SelectedImageKey = "Views";
+            _viewsNode.Tag = ViewsTag;
+
+            root.Nodes.Add(_tablesNode);
+            root.Nodes.Add(_viewsNode);
+
+            return root;
+        }
+
+        /// <summary>The create tree nodes.</summary>
+        /// <param name="table">The table.</param>
+        private void CreateTreeNodes(DbModelTable table)
+        {
+            TreeNode tableNode = new TreeNode(table.FullName);
+            tableNode.Name = table.FullName;
+            tableNode.ImageKey = table.ObjectType;
+            tableNode.SelectedImageKey = table.ObjectType;
+            tableNode.ContextMenuStrip = TableNodeContextMenuStrip;
+            tableNode.Tag = table;
+
+            foreach (DbModelColumn column in table.Columns)
+            {
+                string friendlyColumnName = Utility.MakeSqlFriendly(column.Name);
+                TreeNode columnNode = new TreeNode(friendlyColumnName);
+                columnNode.Name = column.Name;
+                string imageKey = BuildImageKey(column);
+                columnNode.ImageKey = imageKey;
+                columnNode.SelectedImageKey = imageKey;
+                columnNode.ContextMenuStrip = ColumnNameContextMenuStrip;
+                columnNode.Tag = column;
+                columnNode.Text = GetSummary(column);
+                string toolTip = BuildToolTip(table, column);
+                columnNode.ToolTipText = toolTip;
+                tableNode.Nodes.Add(columnNode);
+            }
+
+            switch (table.ObjectType)
+            {
+                case ObjectTypes.Table:
+                    _tablesNode.Nodes.Add(tableNode);
+                    break;
+                case ObjectTypes.View:
+                    _viewsNode.Nodes.Add(tableNode);
+                    break;
+            }
+        }
+
+        /// <summary>The database inspector form_ form closing.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void DatabaseInspectorForm_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            if (e.CloseReason == CloseReason.UserClosing)
+            {
+                Hide();
+                e.Cancel = true;
+            }
+        }
+
+
+        /// <summary>The database inspector form_ load.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void DatabaseInspectorForm_Load(object sender, EventArgs e)
+        {
+        }
+
+        /// <summary>The database tree view_ before expand.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void DatabaseTreeView_BeforeExpand(object sender, TreeViewCancelEventArgs e)
+        {
+            TreeNode node = e.Node;
+
+            if (node != null && node.Tag == RootTag && !_populated)
+            {
+                _populated = true;
+                bool ok = ExecLoadDatabaseDetails();
+
+                if (ok && DatabaseTreeView.Nodes.Count > 0)
+                {
+                    DatabaseTreeView.Nodes[0].Expand();
+                }
+                else
+                {
+                    e.Cancel = true;
+                }
+            }
+        }
+
+        /// <summary>The database tree view_ node mouse click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void DatabaseTreeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
+        {
+            TreeNode node = e.Node;
+            if (e.Button == MouseButtons.Right)
+            {
+                IDbModelNamedObject namedObject = node.Tag as IDbModelNamedObject;
+                _rightClickedModelObject = namedObject;
+
+                if (namedObject != null &&
+                    (namedObject.ObjectType == ObjectTypes.Table || namedObject.ObjectType == ObjectTypes.View))
+                {
+                    _rightClickedNode = node;
+                }
+                else
+                {
+                    _rightClickedNode = null;
+                }
+            }
+        }
+
+        /// <summary>The database tree view_ node mouse double click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void DatabaseTreeView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
+        {
+            TreeNode node = e.Node;
+            if (e.Button == MouseButtons.Left)
+            {
+                IDbModelNamedObject namedObject = node.Tag as IDbModelNamedObject;
+                if (namedObject != null)
+                {
+                    SetText(namedObject.FullName);
+                }
+            }
+        }
+
+        /// <summary>The exec load database details.</summary>
+        /// <returns>The exec load database details.</returns>
+        private bool ExecLoadDatabaseDetails()
+        {
+            bool populate = false;
+            string connection = string.Empty;
+            bool success = false;
+
+            try
+            {
+                _hostWindow.SetPointerState(Cursors.WaitCursor);
+                if (_metaDataService == null)
+                {
+                    _metaDataService = DatabaseMetaDataService.Create(_services.Settings.ConnectionDefinition.ProviderName);
+                }
+
+                connection = _metaDataService.GetDescription();
+                populate = true;
+            }
+            catch (Exception exp)
+            {
+                string msg = string.Format(
+                    "{0}\r\n\r\nCheck the connection and select 'Refresh Database Connection'.",
+                    exp.Message);
+                _hostWindow.DisplaySimpleMessageBox(_hostWindow.Instance, msg, "DB Connection Error");
+                _hostWindow.SetStatus(this, exp.Message);
+            }
+            finally
+            {
+                _hostWindow.SetPointerState(Cursors.Default);
+            }
+
+            if (populate)
+            {
+                try
+                {
+                    _hostWindow.SetPointerState(Cursors.WaitCursor);
+                    _model = _metaDataService.GetDbObjectModel(_services.Settings.ConnectionDefinition.ConnectionString);
+                }
+                finally
+                {
+                    _hostWindow.SetPointerState(Cursors.Default);
+                }
+
+                BuildTreeFromDbModel(connection);
+                _hostWindow.SetStatus(this, string.Empty);
+                success = true;
+            }
+            else
+            {
+                _populated = false;
+                DatabaseTreeView.CollapseAll();
+            }
+
+            return success;
+        }
+
+        /// <summary>The get summary.</summary>
+        /// <param name="column">The column.</param>
+        /// <returns>The get summary.</returns>
+        private string GetSummary(DbModelColumn column)
+        {
+            StringWriter stringWriter = new StringWriter();
+            if (_sqlWriter == null)
+            {
+                _sqlWriter = _services.Resolve<ISqlWriter>();
+            }
+
+            _sqlWriter.WriteSummary(stringWriter, column);
+            return stringWriter.ToString();
+        }
+
+        /// <summary>The select node.</summary>
+        /// <param name="treeNode">The tree node.</param>
+        private void SelectNode(TreeNode treeNode)
+        {
+            if (treeNode.Parent != null)
+            {
+                treeNode.Parent.EnsureVisible();
+            }
+
+            treeNode.EnsureVisible();
+            DatabaseTreeView.SelectedNode = treeNode;
+            treeNode.Expand();
+            DatabaseTreeView.Focus();
+        }
+
+        /// <summary>The set text.</summary>
+        /// <param name="text">The text.</param>
+        private void SetText(string text)
+        {
+            IQueryEditor editor = _hostWindow.ActiveChildForm as IQueryEditor;
+
+            if (editor != null)
+            {
+                editor.InsertText(text);
+            }
+            else
+            {
+                SystemSounds.Beep.Play();
+            }
+        }
+
+        /// <summary>The settings_ database connection reset.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void Settings_DatabaseConnectionReset(object sender, EventArgs e)
+        {
+            _metaDataService = null;
+            _sqlWriter = null;
+            ExecLoadDatabaseDetails();
+        }
+
+        /// <summary>The load tool strip menu item_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void loadToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            LoadDatabaseDetails();
+        }
+    }
+}
\ No newline at end of file
Added +120 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/DatabaseInspectorForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/DatabaseInspectorForm.Designer.cs
new file mode 100644
index 0000000..6fa0653
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/DatabaseInspectorForm.Designer.cs
@@ -0,0 +1,120 @@
+namespace MiniSqlQuery.PlugIns.DatabaseInspector
+{
+	partial class DatabaseInspectorForm
+	{
+		/// <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(DatabaseInspectorForm));
+            this.InspectorContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.loadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.InspectorImageList = new System.Windows.Forms.ImageList(this.components);
+            this.TableNodeContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.DatabaseTreeView = new System.Windows.Forms.TreeView();
+            this.ColumnNameContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.InspectorContextMenuStrip.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // InspectorContextMenuStrip
+            // 
+            this.InspectorContextMenuStrip.ImageScalingSize = new System.Drawing.Size(20, 20);
+            this.InspectorContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.loadToolStripMenuItem});
+            this.InspectorContextMenuStrip.Name = "InspectorContextMenuStrip";
+            this.InspectorContextMenuStrip.Size = new System.Drawing.Size(196, 28);
+            // 
+            // loadToolStripMenuItem
+            // 
+            this.loadToolStripMenuItem.Name = "loadToolStripMenuItem";
+            this.loadToolStripMenuItem.Size = new System.Drawing.Size(195, 24);
+            this.loadToolStripMenuItem.Text = "&Load Meta-Data";
+            this.loadToolStripMenuItem.Click += new System.EventHandler(this.loadToolStripMenuItem_Click);
+            // 
+            // InspectorImageList
+            // 
+            this.InspectorImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
+            this.InspectorImageList.ImageSize = new System.Drawing.Size(16, 16);
+            this.InspectorImageList.TransparentColor = System.Drawing.Color.Transparent;
+            // 
+            // TableNodeContextMenuStrip
+            // 
+            this.TableNodeContextMenuStrip.ImageScalingSize = new System.Drawing.Size(20, 20);
+            this.TableNodeContextMenuStrip.Name = "TableNodeContextMenuStrip";
+            this.TableNodeContextMenuStrip.Size = new System.Drawing.Size(61, 4);
+            // 
+            // DatabaseTreeView
+            // 
+            this.DatabaseTreeView.ContextMenuStrip = this.InspectorContextMenuStrip;
+            this.DatabaseTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.DatabaseTreeView.ImageIndex = 0;
+            this.DatabaseTreeView.ImageList = this.InspectorImageList;
+            this.DatabaseTreeView.Location = new System.Drawing.Point(0, 0);
+            this.DatabaseTreeView.Name = "DatabaseTreeView";
+            this.DatabaseTreeView.SelectedImageIndex = 0;
+            this.DatabaseTreeView.ShowNodeToolTips = true;
+            this.DatabaseTreeView.Size = new System.Drawing.Size(478, 465);
+            this.DatabaseTreeView.TabIndex = 2;
+            this.DatabaseTreeView.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.DatabaseTreeView_BeforeExpand);
+            this.DatabaseTreeView.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.DatabaseTreeView_NodeMouseClick);
+            this.DatabaseTreeView.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.DatabaseTreeView_NodeMouseDoubleClick);
+            // 
+            // ColumnNameContextMenuStrip
+            // 
+            this.ColumnNameContextMenuStrip.ImageScalingSize = new System.Drawing.Size(20, 20);
+            this.ColumnNameContextMenuStrip.Name = "ColumnNameContextMenuStrip";
+            this.ColumnNameContextMenuStrip.Size = new System.Drawing.Size(61, 4);
+            // 
+            // DatabaseInspectorForm
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(478, 465);
+            this.Controls.Add(this.DatabaseTreeView);
+            this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.Name = "DatabaseInspectorForm";
+            this.TabText = "DB Inspector";
+            this.Text = "Database Inspector";
+            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.DatabaseInspectorForm_FormClosing);
+            this.Load += new System.EventHandler(this.DatabaseInspectorForm_Load);
+            this.InspectorContextMenuStrip.ResumeLayout(false);
+            this.ResumeLayout(false);
+
+		}
+
+		#endregion
+
+		private System.Windows.Forms.ContextMenuStrip InspectorContextMenuStrip;
+		private System.Windows.Forms.ContextMenuStrip TableNodeContextMenuStrip;
+		private System.Windows.Forms.ToolStripMenuItem loadToolStripMenuItem;
+		private System.Windows.Forms.ImageList InspectorImageList;
+		private System.Windows.Forms.TreeView DatabaseTreeView;
+		private System.Windows.Forms.ContextMenuStrip ColumnNameContextMenuStrip;
+
+
+	}
+}
\ No newline at end of file
Added +161 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/DatabaseInspectorForm.resx b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/DatabaseInspectorForm.resx
new file mode 100644
index 0000000..6f7034b
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/DatabaseInspectorForm.resx
@@ -0,0 +1,161 @@
+<?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="InspectorContextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>19, 20</value>
+  </metadata>
+  <metadata name="InspectorImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>610, 20</value>
+  </metadata>
+  <metadata name="TableNodeContextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>210, 20</value>
+  </metadata>
+  <metadata name="ColumnNameContextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>403, 20</value>
+  </metadata>
+  <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>
+        AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAQAEAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAA////AMOEUgC4uLgAdr58AN+qggDb29sAmpWRAOrHrQCLy5MA0ZdqALannAD27eYAysrKANK7
+        qQDnt5MA69O/AKKiogDw4tgArKysAMiNXwDXoXUA+/byAOTk5ACCxokA0dHRANvCrQDw8PAA2KyKAOrq
+        6gCysrIAmpqaAOrNtQDksowAzpJjAPr6+gDW1tYAp6enAMXFxQDj3tsA8+feAOnDpgDcpX0Ar6ScAOPH
+        sACTk5MA+PLtAH7DhADUm28A9PT0AJ6engDIilkAh8mOAKSgnAB6wYAA69C6AOKviADt7e0AtbW1APTq
+        4gDGhlUAxYpdANaecgDZpHoA8eXbAPfw6gDmtZAA6cmwAMuPXwD4+PgA9vb2APLy8gDi4uIA2dnZAKWl
+        pQDPz88Arq6uAMjIyADdqH4A4KyEAOvRvQD58+8A05luAKurqgDoyK4AxIZUAPv39ADJilsAxoxfANGW
+        aADdqYAA6s63AOrMswDozLUA6MesAPv7+wD5+fkAx4dWAPPz8wDx8fEA7+/vAOzs7ADX19cAqKioANXV
+        1QDQ0NAAsbGxAMvLywC0tLQAtra2ALe3twDGxsYAxopcAMuOXgD38esAzpNkANegdADao3oA69K+AOrP
+        ugDpya4A6MiwAPnz7gDy594A8eTbAKurqwDr0LsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAA+UlkicVdhAgICAgICAAAAFS5BDDsofBISEhISEj0AAD96dgEQAQEBCAEBARJYAABOUTd+
+        fn5+UCAgICAScAAABVFbAX4BAQF3FgEBEhQAABwnDhosXFxbXl55VBJVAAArUzUlC2IBAV4BAQFAPABr
+        HRtHZQ0HeENeQ3ldezMTI2ZIDUsBLQEBXgEBAXJETEUZZSZvAR8pKSkpKSlWc2pFaGRrawEyAQEBAQEB
+        VgpsRQZkaWkBEQk0GC82BFYwbUdJF0hNY0pWVlZWVlZWdANGMWBfRkZnD0IhOE9aKnUAJDlgXxtJfQAA
+        AAAAAAAAAAAAbjoeAAAAAAAAAAAAAMABAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAACAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAgP8AAOP/AAA=
+</value>
+  </data>
+</root>
\ No newline at end of file
Added +53 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/DatabaseInspectorLoader.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/DatabaseInspectorLoader.cs
new file mode 100644
index 0000000..e3c5b0c
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/DatabaseInspectorLoader.cs
@@ -0,0 +1,53 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.PlugIns.DatabaseInspector.Commands;
+
+namespace MiniSqlQuery.PlugIns.DatabaseInspector
+{
+    /// <summary>The database inspector loader.</summary>
+    public class DatabaseInspectorLoader : PluginLoaderBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="DatabaseInspectorLoader"/> class.</summary>
+        public DatabaseInspectorLoader()
+            : base(
+                "Database Inspector",
+                "A Mini SQL Query Plugin for displaying the database schema in a tree view",
+                20)
+        {
+        }
+
+        /// <summary>Iinitialize the plug in.</summary>
+        public override void InitializePlugIn()
+        {
+            Services.RegisterSingletonComponent<IDatabaseInspector, DatabaseInspectorForm>("DatabaseInspector");
+            Services.RegisterComponent<FindObjectForm>("FindObjectForm");
+
+            IHostWindow hostWindow = Services.HostWindow;
+            hostWindow.AddPluginCommand<ShowDatabaseInspectorCommand>();
+            CommandManager.GetCommandInstance<ShowDatabaseInspectorCommand>().Execute();
+
+            ToolStripMenuItem editMenu = hostWindow.GetMenuItem("edit");
+            editMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<ShowFindObjectFormCommand>());
+
+            hostWindow.DatabaseInspector.TableMenu.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<GenerateSelectStatementCommand>());
+            hostWindow.DatabaseInspector.TableMenu.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<GenerateSelectCountStatementCommand>());
+            hostWindow.DatabaseInspector.TableMenu.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<GenerateInsertStatementCommand>());
+            hostWindow.DatabaseInspector.TableMenu.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<GenerateUpdateStatementCommand>());
+            hostWindow.DatabaseInspector.TableMenu.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<GenerateDeleteStatementCommand>());
+            hostWindow.DatabaseInspector.TableMenu.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<CopyTableNameCommand>());
+            hostWindow.DatabaseInspector.TableMenu.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<TruncateTableCommand>());
+
+            hostWindow.DatabaseInspector.ColumnMenu.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<LocateFkReferenceColumnCommand>());
+
+            // todo: bug - the opening event is not firing....
+            CommandControlBuilder.MonitorMenuItemsOpeningForEnabling(hostWindow.DatabaseInspector.ColumnMenu);
+        }
+    }
+}
\ No newline at end of file
Added +203 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/FindObjectForm.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/FindObjectForm.cs
new file mode 100644
index 0000000..1529d11
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/FindObjectForm.cs
@@ -0,0 +1,203 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.DbModel;
+
+namespace MiniSqlQuery.PlugIns.DatabaseInspector
+{
+    /// <summary>The find object form.</summary>
+    public partial class FindObjectForm : Form
+    {
+        /// <summary>The _database inspector.</summary>
+        private readonly IDatabaseInspector _databaseInspector;
+
+        private readonly List<string> _items = new List<string>();
+        private string _selectedItem;
+
+        /// <summary>Initializes a new instance of the <see cref="FindObjectForm"/> class.</summary>
+        /// <param name="databaseInspector">The database inspector.</param>
+        public FindObjectForm(IDatabaseInspector databaseInspector)
+        {
+            _databaseInspector = databaseInspector;
+            InitializeComponent();
+        }
+
+        /// <summary>Gets the Selected Table Name.</summary>
+        [Obsolete]
+        public string SelectedTableName
+        {
+            get { return _selectedItem; }
+        }
+
+        /// <summary>Gets the Selected Object Name.</summary>
+        public string SelectedObjectName
+        {
+            get { return _selectedItem; }
+        }
+
+        /// <summary>Check the keys, escape to exit, enter to select. If up or down are pressed move the list item.</summary>
+        /// <param name="msg">The windows message.</param>
+        /// <param name="keyData">The key data.</param>
+        /// <returns>The process command key result.</returns>
+        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
+        {
+            switch (keyData)
+            {
+                case Keys.Escape:
+                    DialogResult = DialogResult.Cancel;
+                    Close();
+                    break;
+
+                case Keys.Enter:
+                    Done();
+                    break;
+
+                case Keys.Up:
+                    MoveSelectionUp();
+                    return true;
+
+                case Keys.Down:
+                    MoveSelectionDown();
+                    return true;
+            }
+
+            return base.ProcessCmdKey(ref msg, keyData);
+        }
+
+        private void FindObjectForm_Load(object sender, EventArgs e)
+        {
+        }
+
+        private void FindObjectForm_Shown(object sender, EventArgs e)
+        {
+            _items.Clear();
+
+            try
+            {
+                UseWaitCursor = true;
+
+                if (_databaseInspector.DbSchema == null)
+                {
+                    _databaseInspector.LoadDatabaseDetails();
+
+                    // And if it is still null (e.g. connection error) then bail out:
+                    if (_databaseInspector.DbSchema == null)
+                    {
+                        return;
+                    }
+                }
+
+                foreach (DbModelTable table in _databaseInspector.DbSchema.Tables)
+                {
+                    var name = table.Schema;
+                    if (!String.IsNullOrEmpty(name))
+                    {
+                        name += ".";
+                    }
+                    name += table.Name;
+
+                    _items.Add(name);
+                }
+
+                foreach (DbModelView view in _databaseInspector.DbSchema.Views)
+                {
+                    _items.Add(view.FullName);
+                }
+            }
+            finally
+            {
+                UseWaitCursor = false;
+            }
+
+            lstItems.DataSource = _items;
+            txtSearchPattern.Focus();
+        }
+
+        private void lstItems_DoubleClick(object sender, EventArgs e)
+        {
+            Done();
+        }
+
+        private void txtSearchPattern_TextChanged(object sender, EventArgs e)
+        {
+            if (_items != null)
+            {
+                var searchValue = txtSearchPattern.Text.ToLowerInvariant();
+                var dataSource = _items.Where(objectName =>
+                {
+                    objectName = objectName ?? String.Empty;
+                    objectName = objectName.ToLowerInvariant();
+                    return objectName.Contains(searchValue);
+                }).ToList();
+                Debug.WriteLine(string.Format("search '{0}' yields {1}...", searchValue, dataSource.Count));
+
+                lstItems.DataSource = dataSource;
+            }
+            else
+            {
+                lstItems.DataSource = null;
+            }
+
+            SetSelectedName();
+        }
+
+        /// <summary>
+        /// If there is a valid selection remember it.
+        /// </summary>
+        private void SetSelectedName()
+        {
+            _selectedItem = String.Empty;
+
+            if (lstItems.SelectedItem != null)
+            {
+                _selectedItem = lstItems.SelectedItem.ToString();
+            }
+        }
+
+        /// <summary>
+        /// Move the list selection up one if we can.
+        /// </summary>
+        private void MoveSelectionUp()
+        {
+            if (lstItems.SelectedIndex < 1)
+            {
+                return;
+            }
+            lstItems.SelectedIndex--;
+        }
+
+        /// <summary>
+        /// Move the list selection down one if we can.
+        /// </summary>
+        private void MoveSelectionDown()
+        {
+            var maxIndex = lstItems.Items.Count - 1;
+            if (lstItems.SelectedIndex >= maxIndex)
+            {
+                return;
+            }
+            lstItems.SelectedIndex++;
+        }
+
+        /// <summary>
+        /// Set the selected item and close the form.
+        /// </summary>
+        private void Done()
+        {
+            SetSelectedName();
+            DialogResult = DialogResult.OK;
+            Close();
+        }
+    }
+}
\ No newline at end of file
Added +82 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/FindObjectForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/FindObjectForm.Designer.cs
new file mode 100644
index 0000000..bc01518
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/FindObjectForm.Designer.cs
@@ -0,0 +1,82 @@
+namespace MiniSqlQuery.PlugIns.DatabaseInspector
+{
+	partial class FindObjectForm
+	{
+		/// <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.txtSearchPattern = new System.Windows.Forms.TextBox();
+            this.lstItems = new System.Windows.Forms.ListBox();
+            this.SuspendLayout();
+            // 
+            // txtSearchPattern
+            // 
+            this.txtSearchPattern.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtSearchPattern.Location = new System.Drawing.Point(12, 12);
+            this.txtSearchPattern.Name = "txtSearchPattern";
+            this.txtSearchPattern.Size = new System.Drawing.Size(553, 22);
+            this.txtSearchPattern.TabIndex = 2;
+            this.txtSearchPattern.TextChanged += new System.EventHandler(this.txtSearchPattern_TextChanged);
+            // 
+            // lstItems
+            // 
+            this.lstItems.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.lstItems.FormattingEnabled = true;
+            this.lstItems.ItemHeight = 16;
+            this.lstItems.Location = new System.Drawing.Point(12, 38);
+            this.lstItems.Name = "lstItems";
+            this.lstItems.Size = new System.Drawing.Size(553, 244);
+            this.lstItems.TabIndex = 3;
+            this.lstItems.DoubleClick += new System.EventHandler(this.lstItems_DoubleClick);
+            // 
+            // FindObjectForm
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(577, 295);
+            this.Controls.Add(this.lstItems);
+            this.Controls.Add(this.txtSearchPattern);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+            this.Margin = new System.Windows.Forms.Padding(4);
+            this.Name = "FindObjectForm";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "Find Object";
+            this.Load += new System.EventHandler(this.FindObjectForm_Load);
+            this.Shown += new System.EventHandler(this.FindObjectForm_Shown);
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+		}
+
+		#endregion
+
+        private System.Windows.Forms.TextBox txtSearchPattern;
+        private System.Windows.Forms.ListBox lstItems;
+	}
+}
\ No newline at end of file
Added +120 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/FindObjectForm.resx b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/FindObjectForm.resx
new file mode 100644
index 0000000..19dc0dd
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/DatabaseInspector/FindObjectForm.resx
@@ -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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
Added +75 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/Commands/FindNextStringCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/Commands/FindNextStringCommand.cs
new file mode 100644
index 0000000..b972cff
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/Commands/FindNextStringCommand.cs
@@ -0,0 +1,75 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.PlugIns.SearchTools.Commands
+{
+    /// <summary>The find next string command.</summary>
+    public class FindNextStringCommand : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="FindNextStringCommand"/> class.</summary>
+        public FindNextStringCommand() : base("Find Next String")
+        {
+            SmallImage = ImageResource.find;
+            ShortcutKeys = Keys.F3;
+        }
+
+        /// <summary>Two execution methods - through the "Find Text" window or by hitting F3.
+        /// If simply hitting F3, we are executing the current search from current cursor position for this window.
+        /// Different windows can also have different search text.</summary>
+        public override void Execute()
+        {
+            IFindReplaceProvider editorFindProvider = HostWindow.ActiveChildForm as IFindReplaceProvider;
+
+            if (editorFindProvider != null)
+            {
+                FindTextRequest findTextRequest = null;
+                int key = editorFindProvider.GetHashCode();
+
+                // is there a request in the table for this window?
+                if (SearchToolsCommon.FindReplaceTextRequests.ContainsKey(key))
+                {
+                    findTextRequest = SearchToolsCommon.FindReplaceTextRequests[key];
+                }
+                else
+                {
+                    if (SearchToolsCommon.FindReplaceTextRequests.Count > 0)
+                    {
+                        // if there is an entry in the list of searches create an instance
+                        findTextRequest = new FindTextRequest(editorFindProvider);
+                        findTextRequest.Position = editorFindProvider.CursorOffset;
+                    }
+                    else
+                    {
+                        // none in table, default to curently selected text if its the editor
+                        IEditor editor = ActiveFormAsEditor;
+                        if (editor != null && editor.SelectedText.Length > 0)
+                        {
+                            findTextRequest = new FindTextRequest(editorFindProvider, editor.SelectedText);
+                            findTextRequest.Position = editorFindProvider.CursorOffset;
+                        }
+                    }
+                }
+
+                if (findTextRequest != null)
+                {
+                    // wrap around to start if at last pos
+                    if (findTextRequest.Position != 0)
+                    {
+                        findTextRequest.Position = editorFindProvider.CursorOffset;
+                    }
+
+                    findTextRequest = editorFindProvider.TextFindService.FindNext(findTextRequest);
+                    SearchToolsCommon.FindReplaceTextRequests[key] = findTextRequest;
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
Added +54 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/Commands/ReplaceStringCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/Commands/ReplaceStringCommand.cs
new file mode 100644
index 0000000..a7c38de
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/Commands/ReplaceStringCommand.cs
@@ -0,0 +1,54 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.PlugIns.SearchTools.Commands
+{
+    /// <summary>The replace string command.</summary>
+    public class ReplaceStringCommand : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="ReplaceStringCommand"/> class.</summary>
+        public ReplaceStringCommand()
+            : base("Replace String")
+        {
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            IFindReplaceProvider editorFindProvider = HostWindow.ActiveChildForm as IFindReplaceProvider;
+
+            if (editorFindProvider != null)
+            {
+                FindTextRequest req = null;
+                int key = editorFindProvider.GetHashCode();
+
+                // is there a request in the table for this window?
+                if (SearchToolsCommon.FindReplaceTextRequests.ContainsKey(key))
+                {
+                    req = SearchToolsCommon.FindReplaceTextRequests[key];
+                }
+
+                if (req != null)
+                {
+                    // wrap around to start if at last pos
+                    if (req.Position != 0)
+                    {
+                        req.Position = editorFindProvider.CursorOffset;
+                    }
+
+                    if (editorFindProvider.ReplaceString(req.ReplaceValue, req.Position - req.SearchValue.Length, req.SearchValue.Length))
+                    {
+                        CommandManager.GetCommandInstance<FindNextStringCommand>().Execute();
+                    }
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
Added +64 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/Commands/ShowFindTextFormCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/Commands/ShowFindTextFormCommand.cs
new file mode 100644
index 0000000..f27c357
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/Commands/ShowFindTextFormCommand.cs
@@ -0,0 +1,64 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.PlugIns.SearchTools.Commands
+{
+    /// <summary>The show find text form command.</summary>
+    public class ShowFindTextFormCommand : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="ShowFindTextFormCommand"/> class.</summary>
+        public ShowFindTextFormCommand()
+            : base("&Find Text...")
+        {
+            SmallImage = ImageResource.find;
+            ShortcutKeys = Keys.Control | Keys.F;
+        }
+
+
+        /// <summary>Gets a value indicating whether Enabled.</summary>
+        public override bool Enabled
+        {
+            get { return HostWindow.ActiveChildForm is IFindReplaceProvider; }
+        }
+
+        /// <summary>Gets FindReplaceWindow.</summary>
+        public IFindReplaceWindow FindReplaceWindow { get; private set; }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            if (!Enabled)
+            {
+                return;
+            }
+
+            // if the window is an editor, grab the highlighted text
+            IFindReplaceProvider findReplaceProvider = HostWindow.ActiveChildForm as IFindReplaceProvider;
+
+            if (FindReplaceWindow == null || FindReplaceWindow.IsDisposed)
+            {
+                FindReplaceWindow = new FindReplaceForm(Services);
+            }
+
+            if (findReplaceProvider is IEditor)
+            {
+                FindReplaceWindow.FindString = ((IEditor)findReplaceProvider).SelectedText;
+            }
+
+            FindReplaceWindow.TopMost = true;
+
+            if (!FindReplaceWindow.Visible)
+            {
+                FindReplaceWindow.Show(HostWindow.Instance);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +40 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/Commands/ShowGoToLineFormCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/Commands/ShowGoToLineFormCommand.cs
new file mode 100644
index 0000000..88158bd
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/Commands/ShowGoToLineFormCommand.cs
@@ -0,0 +1,40 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.PlugIns.SearchTools.Commands
+{
+    /// <summary>The show go to line form command.</summary>
+    public class ShowGoToLineFormCommand : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="ShowGoToLineFormCommand"/> class.</summary>
+        public ShowGoToLineFormCommand()
+            : base("Go To Line...")
+        {
+            ShortcutKeys = Keys.Control | Keys.G;
+        }
+
+        /// <summary>Gets a value indicating whether Enabled.</summary>
+        public override bool Enabled
+        {
+            get { return HostWindow.ActiveChildForm is INavigatableDocument; }
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            if (Enabled)
+            {
+                GoToLineForm frm = Services.Resolve<GoToLineForm>();
+                frm.ShowDialog(HostWindow as Form);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +212 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/FindReplaceForm.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/FindReplaceForm.cs
new file mode 100644
index 0000000..c0b17ce
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/FindReplaceForm.cs
@@ -0,0 +1,212 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Media;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.PlugIns.SearchTools.Commands;
+
+namespace MiniSqlQuery.PlugIns.SearchTools
+{
+    /// <summary>The find replace form.</summary>
+    public partial class FindReplaceForm : Form, IFindReplaceWindow
+    {
+        /// <summary>The _services.</summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>Initializes a new instance of the <see cref="FindReplaceForm"/> class.</summary>
+        /// <param name="services">The services.</param>
+        public FindReplaceForm(IApplicationServices services)
+        {
+            InitializeComponent();
+            StartPosition = FormStartPosition.CenterParent;
+            _services = services;
+        }
+
+        /// <summary>Gets or sets FindString.</summary>
+        public string FindString
+        {
+            get { return txtFindString.Text; }
+            set { txtFindString.Text = value; }
+        }
+
+        /// <summary>Gets or sets ReplaceString.</summary>
+        public string ReplaceString
+        {
+            get { return txtReplaceText.Text; }
+            set { txtReplaceText.Text = value; }
+        }
+
+        /// <summary>The create find request.</summary>
+        /// <param name="provider">The provider.</param>
+        /// <param name="findString">The find string.</param>
+        /// <param name="replaceValue">The replace value.</param>
+        private void CreateFindRequest(IFindReplaceProvider provider, string findString, string replaceValue)
+        {
+            int key = provider.GetHashCode();
+            FindTextRequest request;
+
+            if (SearchToolsCommon.FindReplaceTextRequests.ContainsKey(key))
+            {
+                request = SearchToolsCommon.FindReplaceTextRequests[key];
+                if (request.SearchValue != findString)
+                {
+                    // reset find text and set the starting position to the current cursor location
+                    request.SearchValue = findString;
+                    request.ReplaceValue = replaceValue;
+                    request.Position = provider.CursorOffset;
+                }
+            }
+            else
+            {
+                request = new FindTextRequest(provider, findString);
+                request.ReplaceValue = replaceValue;
+            }
+
+            SearchToolsCommon.FindReplaceTextRequests[key] = request;
+        }
+
+        /// <summary>The dim form.</summary>
+        private void DimForm()
+        {
+            Opacity = 0.8;
+        }
+
+        /// <summary>The find replace form_ activated.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void FindReplaceForm_Activated(object sender, EventArgs e)
+        {
+            if (txtFindString.Focused | txtReplaceText.Focused)
+            {
+                UnDimForm();
+            }
+            else
+            {
+                DimForm();
+            }
+        }
+
+        /// <summary>The find replace form_ deactivate.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void FindReplaceForm_Deactivate(object sender, EventArgs e)
+        {
+            DimForm();
+        }
+
+        /// <summary>The find replace form_ form closing.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void FindReplaceForm_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            if (e.CloseReason == CloseReason.UserClosing)
+            {
+                e.Cancel = true;
+                Hide();
+            }
+        }
+
+        /// <summary>The find replace form_ key up.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void FindReplaceForm_KeyUp(object sender, KeyEventArgs e)
+        {
+            // simulate close
+            if (e.KeyCode == Keys.Escape)
+            {
+                e.Handled = true;
+                Hide();
+            }
+        }
+
+
+        /// <summary>The handle find next.</summary>
+        /// <param name="provider">The provider.</param>
+        /// <param name="findString">The find string.</param>
+        /// <param name="replaceValue">The replace value.</param>
+        private void HandleFindNext(IFindReplaceProvider provider, string findString, string replaceValue)
+        {
+            CreateFindRequest(provider, findString, replaceValue);
+            CommandManager.GetCommandInstance<FindNextStringCommand>().Execute();
+        }
+
+        /// <summary>The handle replace next.</summary>
+        /// <param name="provider">The provider.</param>
+        /// <param name="findString">The find string.</param>
+        /// <param name="replaceValue">The replace value.</param>
+        private void HandleReplaceNext(IFindReplaceProvider provider, string findString, string replaceValue)
+        {
+            CommandManager.GetCommandInstance<ReplaceStringCommand>().Execute();
+        }
+
+        /// <summary>The un dim form.</summary>
+        private void UnDimForm()
+        {
+            Opacity = 1.0;
+        }
+
+        /// <summary>The btn cancel_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void btnCancel_Click(object sender, EventArgs e)
+        {
+            Hide();
+        }
+
+        /// <summary>The btn find next_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void btnFindNext_Click(object sender, EventArgs e)
+        {
+            IFindReplaceProvider provider = _services.HostWindow.ActiveChildForm as IFindReplaceProvider;
+
+            if (provider == null)
+            {
+                SystemSounds.Beep.Play();
+            }
+            else
+            {
+                HandleFindNext(provider, FindString, ReplaceString);
+            }
+        }
+
+        /// <summary>The btn replace_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void btnReplace_Click(object sender, EventArgs e)
+        {
+            IFindReplaceProvider provider = _services.HostWindow.ActiveChildForm as IFindReplaceProvider;
+
+            if (provider == null)
+            {
+                SystemSounds.Beep.Play();
+            }
+            else
+            {
+                HandleReplaceNext(provider, FindString, ReplaceString);
+            }
+        }
+
+        /// <summary>The txt find string_ enter.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void txtFindString_Enter(object sender, EventArgs e)
+        {
+            UnDimForm();
+        }
+
+        /// <summary>The txt find string_ leave.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void txtFindString_Leave(object sender, EventArgs e)
+        {
+            DimForm();
+        }
+    }
+}
\ No newline at end of file
Added +154 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/FindReplaceForm.designer.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/FindReplaceForm.designer.cs
new file mode 100644
index 0000000..6d1cb20
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/FindReplaceForm.designer.cs
@@ -0,0 +1,154 @@
+namespace MiniSqlQuery.PlugIns.SearchTools
+{
+	partial class FindReplaceForm
+	{
+		/// <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.label1 = new System.Windows.Forms.Label();
+			this.txtFindString = new System.Windows.Forms.TextBox();
+			this.btnFindNext = new System.Windows.Forms.Button();
+			this.btnCancel = new System.Windows.Forms.Button();
+			this.txtReplaceText = new System.Windows.Forms.TextBox();
+			this.btnReplace = new System.Windows.Forms.Button();
+			this.label2 = new System.Windows.Forms.Label();
+			this.SuspendLayout();
+			// 
+			// label1
+			// 
+			this.label1.AutoSize = true;
+			this.label1.Location = new System.Drawing.Point(12, 15);
+			this.label1.Name = "label1";
+			this.label1.Size = new System.Drawing.Size(56, 13);
+			this.label1.TabIndex = 0;
+			this.label1.Text = "&Search for";
+			// 
+			// txtFindString
+			// 
+			this.txtFindString.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+						| System.Windows.Forms.AnchorStyles.Right)));
+			this.txtFindString.Location = new System.Drawing.Point(95, 12);
+			this.txtFindString.Name = "txtFindString";
+			this.txtFindString.Size = new System.Drawing.Size(222, 20);
+			this.txtFindString.TabIndex = 1;
+			this.txtFindString.Leave += new System.EventHandler(this.txtFindString_Leave);
+			this.txtFindString.Enter += new System.EventHandler(this.txtFindString_Enter);
+			// 
+			// btnFindNext
+			// 
+			this.btnFindNext.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+			this.btnFindNext.Location = new System.Drawing.Point(161, 64);
+			this.btnFindNext.Name = "btnFindNext";
+			this.btnFindNext.Size = new System.Drawing.Size(75, 23);
+			this.btnFindNext.TabIndex = 10;
+			this.btnFindNext.Text = "&Find Next";
+			this.btnFindNext.UseVisualStyleBackColor = true;
+			this.btnFindNext.Click += new System.EventHandler(this.btnFindNext_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(242, 93);
+			this.btnCancel.Name = "btnCancel";
+			this.btnCancel.Size = new System.Drawing.Size(75, 23);
+			this.btnCancel.TabIndex = 12;
+			this.btnCancel.Text = "&Cancel";
+			this.btnCancel.UseVisualStyleBackColor = true;
+			this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
+			// 
+			// txtReplaceText
+			// 
+			this.txtReplaceText.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+						| System.Windows.Forms.AnchorStyles.Right)));
+			this.txtReplaceText.Location = new System.Drawing.Point(95, 38);
+			this.txtReplaceText.Name = "txtReplaceText";
+			this.txtReplaceText.Size = new System.Drawing.Size(222, 20);
+			this.txtReplaceText.TabIndex = 3;
+			this.txtReplaceText.Leave += new System.EventHandler(this.txtFindString_Leave);
+			this.txtReplaceText.Enter += new System.EventHandler(this.txtFindString_Enter);
+			// 
+			// btnReplace
+			// 
+			this.btnReplace.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+			this.btnReplace.Location = new System.Drawing.Point(242, 64);
+			this.btnReplace.Name = "btnReplace";
+			this.btnReplace.Size = new System.Drawing.Size(75, 23);
+			this.btnReplace.TabIndex = 11;
+			this.btnReplace.Text = "&Replace";
+			this.btnReplace.UseVisualStyleBackColor = true;
+			this.btnReplace.Click += new System.EventHandler(this.btnReplace_Click);
+			// 
+			// label2
+			// 
+			this.label2.AutoSize = true;
+			this.label2.Location = new System.Drawing.Point(12, 41);
+			this.label2.Name = "label2";
+			this.label2.Size = new System.Drawing.Size(69, 13);
+			this.label2.TabIndex = 2;
+			this.label2.Text = "&Replace with";
+			// 
+			// FindReplaceForm
+			// 
+			this.AcceptButton = this.btnFindNext;
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.CancelButton = this.btnCancel;
+			this.ClientSize = new System.Drawing.Size(329, 124);
+			this.Controls.Add(this.label2);
+			this.Controls.Add(this.btnReplace);
+			this.Controls.Add(this.txtReplaceText);
+			this.Controls.Add(this.btnCancel);
+			this.Controls.Add(this.btnFindNext);
+			this.Controls.Add(this.txtFindString);
+			this.Controls.Add(this.label1);
+			this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
+			this.MinimumSize = new System.Drawing.Size(320, 110);
+			this.Name = "FindReplaceForm";
+			this.Opacity = 0.8;
+			this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+			this.Text = "Find Text";
+			this.Deactivate += new System.EventHandler(this.FindReplaceForm_Deactivate);
+			this.Activated += new System.EventHandler(this.FindReplaceForm_Activated);
+			this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.FindReplaceForm_KeyUp);
+			this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FindReplaceForm_FormClosing);
+			this.ResumeLayout(false);
+			this.PerformLayout();
+
+		}
+
+		#endregion
+
+		private System.Windows.Forms.Label label1;
+		private System.Windows.Forms.TextBox txtFindString;
+		private System.Windows.Forms.Button btnFindNext;
+		private System.Windows.Forms.Button btnCancel;
+		private System.Windows.Forms.TextBox txtReplaceText;
+		private System.Windows.Forms.Button btnReplace;
+		private System.Windows.Forms.Label label2;
+	}
+}
+
Added +120 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/FindReplaceForm.resx b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/FindReplaceForm.resx
new file mode 100644
index 0000000..19dc0dd
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/FindReplaceForm.resx
@@ -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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
Added +76 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/GoToLineForm.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/GoToLineForm.cs
new file mode 100644
index 0000000..be94bcc
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/GoToLineForm.cs
@@ -0,0 +1,76 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Media;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+
+namespace MiniSqlQuery.PlugIns.SearchTools
+{
+    /// <summary>The go to line form.</summary>
+    public partial class GoToLineForm : Form
+    {
+        /// <summary>The _services.</summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>Initializes a new instance of the <see cref="GoToLineForm"/> class.</summary>
+        /// <param name="services">The services.</param>
+        public GoToLineForm(IApplicationServices services)
+        {
+            _services = services;
+            InitializeComponent();
+        }
+
+        /// <summary>Gets or sets LineValue.</summary>
+        public string LineValue
+        {
+            get { return txtLine.Text; }
+            set { txtLine.Text = value; }
+        }
+
+        /// <summary>The go to line form_ load.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void GoToLineForm_Load(object sender, EventArgs e)
+        {
+            INavigatableDocument navDoc = _services.HostWindow.ActiveChildForm as INavigatableDocument;
+            if (navDoc != null)
+            {
+                LineValue = (navDoc.CursorLine + 1).ToString();
+                Text = string.Format("{0} (1-{1})", Text, navDoc.TotalLines);
+            }
+        }
+
+        /// <summary>The btn ok_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void btnOk_Click(object sender, EventArgs e)
+        {
+            INavigatableDocument navDoc = _services.HostWindow.ActiveChildForm as INavigatableDocument;
+            if (navDoc != null)
+            {
+                int line;
+
+                if (int.TryParse(LineValue, out line))
+                {
+                    int column = 0;
+                    line = Math.Abs(line - 1);
+
+                    // todo - copy column?
+                    if (navDoc.SetCursorByLocation(line, column))
+                    {
+                        Close();
+                    }
+                }
+
+                // otherwise
+                SystemSounds.Beep.Play();
+            }
+        }
+    }
+}
\ No newline at end of file
Added +102 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/GoToLineForm.designer.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/GoToLineForm.designer.cs
new file mode 100644
index 0000000..e1b4401
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/GoToLineForm.designer.cs
@@ -0,0 +1,102 @@
+namespace MiniSqlQuery.PlugIns.SearchTools
+{
+	partial class GoToLineForm
+	{
+		/// <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.lblLinePrompt = new System.Windows.Forms.Label();
+			this.txtLine = new System.Windows.Forms.TextBox();
+			this.btnOk = new System.Windows.Forms.Button();
+			this.btnCancel = new System.Windows.Forms.Button();
+			this.SuspendLayout();
+			// 
+			// lblLinePrompt
+			// 
+			this.lblLinePrompt.AutoSize = true;
+			this.lblLinePrompt.Location = new System.Drawing.Point(12, 9);
+			this.lblLinePrompt.Name = "lblLinePrompt";
+			this.lblLinePrompt.Size = new System.Drawing.Size(30, 13);
+			this.lblLinePrompt.TabIndex = 0;
+			this.lblLinePrompt.Text = "&Line:";
+			// 
+			// txtLine
+			// 
+			this.txtLine.Location = new System.Drawing.Point(12, 25);
+			this.txtLine.Name = "txtLine";
+			this.txtLine.Size = new System.Drawing.Size(300, 20);
+			this.txtLine.TabIndex = 1;
+			// 
+			// btnOk
+			// 
+			this.btnOk.Location = new System.Drawing.Point(156, 51);
+			this.btnOk.Name = "btnOk";
+			this.btnOk.Size = new System.Drawing.Size(75, 23);
+			this.btnOk.TabIndex = 2;
+			this.btnOk.Text = "OK";
+			this.btnOk.UseVisualStyleBackColor = true;
+			this.btnOk.Click += new System.EventHandler(this.btnOk_Click);
+			// 
+			// btnCancel
+			// 
+			this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+			this.btnCancel.Location = new System.Drawing.Point(237, 51);
+			this.btnCancel.Name = "btnCancel";
+			this.btnCancel.Size = new System.Drawing.Size(75, 23);
+			this.btnCancel.TabIndex = 3;
+			this.btnCancel.Text = "Cancel";
+			this.btnCancel.UseVisualStyleBackColor = true;
+			// 
+			// GoToLineForm
+			// 
+			this.AcceptButton = this.btnOk;
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.CancelButton = this.btnCancel;
+			this.ClientSize = new System.Drawing.Size(324, 86);
+			this.Controls.Add(this.btnCancel);
+			this.Controls.Add(this.btnOk);
+			this.Controls.Add(this.txtLine);
+			this.Controls.Add(this.lblLinePrompt);
+			this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
+			this.Name = "GoToLineForm";
+			this.Opacity = 0.8;
+			this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+			this.Text = "Go to Line";
+			this.Load += new System.EventHandler(this.GoToLineForm_Load);
+			this.ResumeLayout(false);
+			this.PerformLayout();
+
+		}
+
+		#endregion
+
+		private System.Windows.Forms.Label lblLinePrompt;
+		private System.Windows.Forms.TextBox txtLine;
+		private System.Windows.Forms.Button btnOk;
+		private System.Windows.Forms.Button btnCancel;
+	}
+}
\ No newline at end of file
Added +120 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/GoToLineForm.resx b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/GoToLineForm.resx
new file mode 100644
index 0000000..19dc0dd
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/GoToLineForm.resx
@@ -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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
Added +25 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/SearchToolsCommon.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/SearchToolsCommon.cs
new file mode 100644
index 0000000..3024e0a
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/SearchToolsCommon.cs
@@ -0,0 +1,25 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Collections.Generic;
+using MiniSqlQuery.Core;
+
+namespace MiniSqlQuery.PlugIns.SearchTools
+{
+    /// <summary>The search tools common.</summary>
+    public class SearchToolsCommon
+    {
+        /// <summary>The _find text requests.</summary>
+        private static readonly Dictionary<int, FindTextRequest> _findTextRequests = new Dictionary<int, FindTextRequest>();
+
+        /// <summary>Gets FindReplaceTextRequests.</summary>
+        public static Dictionary<int, FindTextRequest> FindReplaceTextRequests
+        {
+            get { return _findTextRequests; }
+        }
+    }
+}
\ No newline at end of file
Added +50 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/SearchToolsLoader.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/SearchToolsLoader.cs
new file mode 100644
index 0000000..80062f4
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/SearchTools/SearchToolsLoader.cs
@@ -0,0 +1,50 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.PlugIns.SearchTools.Commands;
+
+namespace MiniSqlQuery.PlugIns.SearchTools
+{
+    /// <summary>The search tools loader.</summary>
+    public class SearchToolsLoader : PluginLoaderBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="SearchToolsLoader"/> class.</summary>
+        public SearchToolsLoader()
+            : base(
+                "Mini SQL Query Search Tools",
+                "Text searching tools - generic find text tool window.",
+                50)
+        {
+        }
+
+        /// <summary>Iinitialize the plug in.</summary>
+        public override void InitializePlugIn()
+        {
+            Services.RegisterComponent<GoToLineForm>("GoToLineForm");
+
+            ToolStripMenuItem editMenu = Services.HostWindow.GetMenuItem("edit");
+
+            // add the find to the plugins menu
+            editMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<ShowFindTextFormCommand>());
+            editMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<FindNextStringCommand>());
+            editMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<ReplaceStringCommand>());
+            editMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<ShowGoToLineFormCommand>());
+
+            // get the new item and make in invisible - the shortcut key is still available etc ;-)
+            ToolStripItem item = editMenu.DropDownItems["FindNextStringCommandToolStripMenuItem"];
+            item.Visible = false;
+            item = editMenu.DropDownItems["ReplaceStringCommandToolStripMenuItem"];
+            item.Visible = false;
+
+            // append the button the the toolbar items
+            Services.HostWindow.AddToolStripSeperator(null);
+            Services.HostWindow.AddToolStripCommand<ShowFindTextFormCommand>(null);
+        }
+    }
+}
\ No newline at end of file
Added +31 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/Commands/NewQueryByTemplateCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/Commands/NewQueryByTemplateCommand.cs
new file mode 100644
index 0000000..1bb5b26
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/Commands/NewQueryByTemplateCommand.cs
@@ -0,0 +1,31 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.PlugIns.TemplateViewer.Commands
+{
+    /// <summary>The new query by template command.</summary>
+    public class NewQueryByTemplateCommand
+        : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="NewQueryByTemplateCommand"/> class.</summary>
+        public NewQueryByTemplateCommand()
+            : base("New &Query from Template")
+        {
+            SmallImage = ImageResource.script_code;
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            ICommand newQueryFormCommand = CommandManager.GetCommandInstance("NewQueryFormCommand");
+            newQueryFormCommand.Execute();
+        }
+    }
+}
\ No newline at end of file
Added +41 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/Commands/RunTemplateCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/Commands/RunTemplateCommand.cs
new file mode 100644
index 0000000..a915a40
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/Commands/RunTemplateCommand.cs
@@ -0,0 +1,41 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.PlugIns.TemplateViewer.Commands
+{
+    /// <summary>The run template command.</summary>
+    public class RunTemplateCommand
+        : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="RunTemplateCommand"/> class.</summary>
+        public RunTemplateCommand()
+            : base("Run Template")
+        {
+            SmallImage = ImageResource.script_code;
+        }
+
+        /// <summary>Gets a value indicating whether Enabled.</summary>
+        public override bool Enabled
+        {
+            get { return HostWindow.ActiveChildForm is ITemplateEditor; }
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            ITemplateEditor templateEditor = HostWindow.ActiveChildForm as ITemplateEditor;
+
+            if (templateEditor != null)
+            {
+                templateEditor.RunTemplate();
+            }
+        }
+    }
+}
\ No newline at end of file
Added +18 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/ITemplateEditor.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/ITemplateEditor.cs
new file mode 100644
index 0000000..2b8439d
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/ITemplateEditor.cs
@@ -0,0 +1,18 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core;
+
+namespace MiniSqlQuery.PlugIns.TemplateViewer
+{
+    /// <summary>The i template editor.</summary>
+    public interface ITemplateEditor : IPerformTask
+    {
+        /// <summary>The run template.</summary>
+        void RunTemplate();
+    }
+}
\ No newline at end of file
Added +201 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateData.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateData.cs
new file mode 100644
index 0000000..d93e880
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateData.cs
@@ -0,0 +1,201 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.Common;
+using MiniSqlQuery.Core;
+
+namespace MiniSqlQuery.PlugIns.TemplateViewer
+{
+    /// <summary>The template data.</summary>
+    public class TemplateData : IDisposable
+    {
+        /// <summary>The _data tables.</summary>
+        private readonly Dictionary<string, DataTable> _dataTables = new Dictionary<string, DataTable>();
+
+        /// <summary>The _db connection.</summary>
+        private DbConnection _dbConnection;
+
+        /// <summary>Initializes a new instance of the <see cref="TemplateData"/> class.</summary>
+        /// <param name="services">The services.</param>
+        public TemplateData(IApplicationServices services)
+        {
+            Services = services;
+        }
+
+        /// <summary>Gets Services.</summary>
+        public IApplicationServices Services { get; private set; }
+
+        /// <summary>Helper for getting the value of a row - avoids "get_Item()" usage.</summary>
+        /// <param name="row">The row.</param>
+        /// <param name="columnName">Name of the column.</param>
+        /// <returns>The column value.</returns>
+        public object ColumnValue(DataRow row, string columnName)
+        {
+            return row[columnName];
+        }
+
+        /// <summary>The get.</summary>
+        /// <param name="schema">The schema name.</param>
+        /// <param name="viewOrTableName">The view or table name.</param>
+        /// <returns></returns>
+        public DataTable Get(string schema, string viewOrTableName)
+        {
+            return Get(Utility.RenderSafeSchemaObjectName(schema, viewOrTableName));
+        }
+
+        /// <summary>The get.</summary>
+        /// <param name="viewOrTableName">The view or table name.</param>
+        /// <returns></returns>
+        public DataTable Get(string viewOrTableName)
+        {
+            DbDataAdapter adapter = null;
+            DbCommand cmd = null;
+            DataTable dt = null;
+            QueryBatch batch = new QueryBatch();
+            Query query = new Query("SELECT * FROM " + viewOrTableName);
+
+            if (string.IsNullOrEmpty(viewOrTableName))
+            {
+                return null;
+            }
+
+            if (_dataTables.ContainsKey(viewOrTableName))
+            {
+                return _dataTables[viewOrTableName];
+            }
+
+            try
+            {
+                if (_dbConnection == null || _dbConnection.State != ConnectionState.Open)
+                {
+                    _dbConnection = Services.Settings.GetOpenConnection();
+                }
+
+                query.Result = new DataSet(viewOrTableName + " View");
+                batch.Clear();
+                batch.Add(query);
+
+                adapter = Services.Settings.ProviderFactory.CreateDataAdapter();
+                cmd = _dbConnection.CreateCommand();
+                cmd.CommandText = query.Sql;
+                cmd.CommandType = CommandType.Text;
+                adapter.SelectCommand = cmd;
+                adapter.Fill(query.Result);
+            }
+
+            // catch (Exception exp)
+            // {
+            // throw;
+            // }
+            finally
+            {
+                if (adapter != null)
+                {
+                    adapter.Dispose();
+                }
+
+                if (cmd != null)
+                {
+                    cmd.Dispose();
+                }
+            }
+
+            if (query.Result.Tables.Count > 0)
+            {
+                dt = query.Result.Tables[0];
+                _dataTables[viewOrTableName] = dt;
+            }
+
+            return dt;
+        }
+
+        /// <summary>The query.</summary>
+        /// <param name="sql">The sql.</param>
+        /// <returns></returns>
+        public DataTable Query(string sql)
+        {
+            DbDataAdapter adapter = null;
+            DbCommand cmd = null;
+            DataTable dt = null;
+            QueryBatch batch = new QueryBatch();
+            Query query = new Query(sql);
+
+            if (string.IsNullOrEmpty(sql))
+            {
+                return null;
+            }
+
+            if (_dataTables.ContainsKey(sql))
+            {
+                return _dataTables[sql];
+            }
+
+            try
+            {
+                if (_dbConnection == null || _dbConnection.State != ConnectionState.Open)
+                {
+                    _dbConnection = Services.Settings.GetOpenConnection();
+                }
+
+                string dataSetName = sql;
+                query.Result = new DataSet(dataSetName);
+                batch.Clear();
+                batch.Add(query);
+
+                adapter = Services.Settings.ProviderFactory.CreateDataAdapter();
+                cmd = _dbConnection.CreateCommand();
+                cmd.CommandText = query.Sql;
+                cmd.CommandType = CommandType.Text;
+                adapter.SelectCommand = cmd;
+                adapter.Fill(query.Result);
+            }
+
+            // catch (Exception exp)
+            // {
+            // throw;
+            // }
+            finally
+            {
+                if (adapter != null)
+                {
+                    adapter.Dispose();
+                }
+
+                if (cmd != null)
+                {
+                    cmd.Dispose();
+                }
+            }
+
+            if (query.Result.Tables.Count > 0)
+            {
+                dt = query.Result.Tables[0];
+                _dataTables[sql] = dt;
+            }
+
+            return dt;
+        }
+
+        /// <summary>The dispose.</summary>
+        public void Dispose()
+        {
+            if (_dbConnection != null)
+            {
+                _dbConnection.Dispose();
+                _dbConnection = null;
+            }
+
+            foreach (var dataTable in _dataTables)
+            {
+                dataTable.Value.Dispose();
+            }
+        }
+    }
+}
\ No newline at end of file
Added +462 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateEditorForm.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateEditorForm.cs
new file mode 100644
index 0000000..405680d
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateEditorForm.cs
@@ -0,0 +1,462 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Windows.Forms;
+using ICSharpCode.TextEditor.Document;
+using Microsoft.VisualBasic;
+using MiniSqlQuery.Commands;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+using MiniSqlQuery.Core.Template;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.PlugIns.TemplateViewer
+{
+    /// <summary>The template editor form.</summary>
+    public partial class TemplateEditorForm : DockContent, IEditor, IFindReplaceProvider, INavigatableDocument, ITemplateEditor
+    {
+        /// <summary>The _host window.</summary>
+        private readonly IHostWindow _hostWindow;
+
+        /// <summary>The _services.</summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>The _file name.</summary>
+        private string _fileName;
+
+        /// <summary>The _highlighting provider loaded.</summary>
+        private bool _highlightingProviderLoaded;
+
+        /// <summary>The _is dirty.</summary>
+        private bool _isDirty;
+
+        /// <summary>The _text find service.</summary>
+        private ITextFindService _textFindService;
+
+        /// <summary>Initializes a new instance of the <see cref="TemplateEditorForm"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="hostWindow">The host window.</param>
+        public TemplateEditorForm(IApplicationServices services, IHostWindow hostWindow)
+        {
+            InitializeComponent();
+            txtEdit.Document.DocumentChanged += DocumentDocumentChanged;
+            _services = services;
+            _hostWindow = hostWindow;
+
+            formContextMenuStrip.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<SaveFileCommand>());
+            formContextMenuStrip.Items.Add(CommandControlBuilder.CreateToolStripMenuItemSeparator());
+            formContextMenuStrip.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<CloseActiveWindowCommand>());
+            formContextMenuStrip.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<CloseAllWindowsCommand>());
+            formContextMenuStrip.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<CopyQueryEditorFileNameCommand>());
+
+            CommandControlBuilder.MonitorMenuItemsOpeningForEnabling(formContextMenuStrip);
+        }
+
+        /// <summary>Gets or sets AllText.</summary>
+        public string AllText
+        {
+            get { return txtEdit.Text; }
+            set { txtEdit.Text = value; }
+        }
+
+        /// <summary>Gets a value indicating whether CanReplaceText.</summary>
+        public bool CanReplaceText
+        {
+            get { return true; }
+        }
+
+        /// <summary>Gets or sets CursorColumn.</summary>
+        public int CursorColumn
+        {
+            get { return txtEdit.ActiveTextAreaControl.Caret.Column; }
+            set { txtEdit.ActiveTextAreaControl.Caret.Column = value; }
+        }
+
+        /// <summary>Gets or sets CursorLine.</summary>
+        public int CursorLine
+        {
+            get { return txtEdit.ActiveTextAreaControl.Caret.Line; }
+            set { txtEdit.ActiveTextAreaControl.Caret.Line = value; }
+        }
+
+        /// <summary>Gets CursorOffset.</summary>
+        public int CursorOffset
+        {
+            get { return txtEdit.ActiveTextAreaControl.Caret.Offset; }
+        }
+
+        /// <summary>Gets FileFilter.</summary>
+        public string FileFilter
+        {
+            get { return "Mini SQL Template Files (*.mt)|*.mt|All Files (*.*)|*.*"; }
+        }
+
+        /// <summary>Gets or sets FileName.</summary>
+        public string FileName
+        {
+            get { return _fileName; }
+            set
+            {
+                _fileName = value;
+                Text = FileName;
+                SetTabTextByFilename();
+            }
+        }
+
+        /// <summary>Gets a value indicating whether IsBusy.</summary>
+        public bool IsBusy
+        {
+            get { return false; }
+        }
+
+        /// <summary>Gets or sets a value indicating whether IsDirty.</summary>
+        public bool IsDirty
+        {
+            get { return _isDirty; }
+            set
+            {
+                if (_isDirty != value)
+                {
+                    _isDirty = value;
+                    SetTabTextByFilename();
+                }
+            }
+        }
+
+        /// <summary>Gets SelectedText.</summary>
+        public string SelectedText
+        {
+            get { return txtEdit.ActiveTextAreaControl.SelectionManager.SelectedText; }
+        }
+
+        /// <summary>Gets TextFindService.</summary>
+        public ITextFindService TextFindService
+        {
+            get
+            {
+                if (_textFindService == null)
+                {
+                    _textFindService = _services.Resolve<ITextFindService>();
+                }
+
+                return _textFindService;
+            }
+        }
+
+        /// <summary>Gets TotalLines.</summary>
+        public int TotalLines
+        {
+            get { return txtEdit.Document.TotalNumberOfLines; }
+        }
+
+        /// <summary>The load highlighting provider.</summary>
+        public void LoadHighlightingProvider()
+        {
+            if (_highlightingProviderLoaded)
+            {
+                return;
+            }
+
+            // see: http://wiki.sharpdevelop.net/Syntax%20highlighting.ashx
+            string dir = Path.GetDirectoryName(GetType().Assembly.Location);
+            FileSyntaxModeProvider fsmProvider = new FileSyntaxModeProvider(dir);
+            HighlightingManager.Manager.AddSyntaxModeFileProvider(fsmProvider); // Attach to the text editor.
+            txtEdit.SetHighlighting("NVelocity");
+            _highlightingProviderLoaded = true;
+        }
+
+        /// <summary>The clear selection.</summary>
+        public void ClearSelection()
+        {
+            txtEdit.ActiveTextAreaControl.SelectionManager.ClearSelection();
+        }
+
+        /// <summary>The highlight string.</summary>
+        /// <param name="offset">The offset.</param>
+        /// <param name="length">The length.</param>
+        public void HighlightString(int offset, int length)
+        {
+            if (offset < 0 || length < 1)
+            {
+                return;
+            }
+
+            int endPos = offset + length;
+            txtEdit.ActiveTextAreaControl.SelectionManager.SetSelection(
+                txtEdit.Document.OffsetToPosition(offset),
+                txtEdit.Document.OffsetToPosition(endPos));
+            SetCursorByOffset(endPos);
+        }
+
+        /// <summary>The insert text.</summary>
+        /// <param name="text">The text.</param>
+        public void InsertText(string text)
+        {
+            if (string.IsNullOrEmpty(text))
+            {
+                return;
+            }
+
+            int offset = txtEdit.ActiveTextAreaControl.Caret.Offset;
+
+            // if some text is selected we want to replace it
+            if (txtEdit.ActiveTextAreaControl.SelectionManager.IsSelected(offset))
+            {
+                offset = txtEdit.ActiveTextAreaControl.SelectionManager.SelectionCollection[0].Offset;
+                txtEdit.ActiveTextAreaControl.SelectionManager.RemoveSelectedText();
+            }
+
+            txtEdit.Document.Insert(offset, text);
+            int newOffset = offset + text.Length; // new offset at end of inserted text
+
+            // now reposition the caret if required to be after the inserted text
+            if (CursorOffset != newOffset)
+            {
+                SetCursorByOffset(newOffset);
+            }
+
+            txtEdit.Focus();
+        }
+
+
+        /// <summary>The load file.</summary>
+        public void LoadFile()
+        {
+            txtEdit.LoadFile(FileName);
+            IsDirty = false;
+        }
+
+        /// <summary>The save file.</summary>
+        public void SaveFile()
+        {
+            txtEdit.SaveFile(FileName);
+            IsDirty = false;
+        }
+
+        /// <summary>The set syntax.</summary>
+        /// <param name="name">The name.</param>
+        public void SetSyntax(string name)
+        {
+            LoadHighlightingProvider();
+            txtEdit.SetHighlighting(name);
+        }
+
+        /// <summary>The find string.</summary>
+        /// <param name="value">The value.</param>
+        /// <param name="startIndex">The start index.</param>
+        /// <param name="comparisonType">The comparison type.</param>
+        /// <returns>The find string.</returns>
+        public int FindString(string value, int startIndex, StringComparison comparisonType)
+        {
+            if (string.IsNullOrEmpty(value) || startIndex < 0)
+            {
+                return -1;
+            }
+
+            string text = AllText;
+            int pos = text.IndexOf(value, startIndex, comparisonType);
+            if (pos > -1)
+            {
+                ClearSelection();
+                HighlightString(pos, value.Length);
+            }
+
+            return pos;
+        }
+
+        /// <summary>The replace string.</summary>
+        /// <param name="value">The value.</param>
+        /// <param name="startIndex">The start index.</param>
+        /// <param name="length">The length.</param>
+        /// <returns>The replace string.</returns>
+        public bool ReplaceString(string value, int startIndex, int length)
+        {
+            if (value == null || startIndex < 0 || length < 0)
+            {
+                return false;
+            }
+
+            if ((startIndex + length) > AllText.Length)
+            {
+                return false;
+            }
+
+            txtEdit.Document.Replace(startIndex, length, value);
+
+            return true;
+        }
+
+        /// <summary>The set text find service.</summary>
+        /// <param name="textFindService">The text find service.</param>
+        public void SetTextFindService(ITextFindService textFindService)
+        {
+            // accept nulls infering a reset
+            _textFindService = textFindService;
+        }
+
+        /// <summary>The set cursor by location.</summary>
+        /// <param name="line">The line.</param>
+        /// <param name="column">The column.</param>
+        /// <returns>The set cursor by location.</returns>
+        public bool SetCursorByLocation(int line, int column)
+        {
+            if (line > TotalLines)
+            {
+                return false;
+            }
+
+            txtEdit.ActiveTextAreaControl.Caret.Line = line;
+            txtEdit.ActiveTextAreaControl.Caret.Column = column;
+
+            return true;
+        }
+
+        /// <summary>The set cursor by offset.</summary>
+        /// <param name="offset">The offset.</param>
+        /// <returns>The set cursor by offset.</returns>
+        public bool SetCursorByOffset(int offset)
+        {
+            if (offset >= 0)
+            {
+                txtEdit.ActiveTextAreaControl.Caret.Position = txtEdit.Document.OffsetToPosition(offset);
+                return true;
+            }
+
+            return false;
+        }
+
+        /// <summary>The cancel task.</summary>
+        public void CancelTask()
+        {
+            // N/A
+        }
+
+        /// <summary>The execute task.</summary>
+        public void ExecuteTask()
+        {
+            RunTemplate();
+        }
+
+        /// <summary>The run template.</summary>
+        public void RunTemplate()
+        {
+            TemplateModel templateModel = _services.Resolve<TemplateModel>();
+            TemplateResult templateResult = null;
+            txtErrors.Clear();
+
+            try
+            {
+                string[] lines = AllText.Replace("\r", string.Empty).Split('\n');
+                string text;
+                Dictionary<string, object> items = new Dictionary<string, object>();
+                items[TemplateModel.Extension] = templateModel.InferExtensionFromFilename(FileName, items);
+                text = templateModel.PreProcessTemplate(lines, GetValue, items);
+                templateResult = templateModel.ProcessTemplate(text, items);
+            }
+            catch (TemplateException exp)
+            {
+                _hostWindow.DisplaySimpleMessageBox(this, exp.Message, "Template Error");
+
+                // todo - try to get the line number and move cursor?...
+                txtErrors.Text = exp.Message;
+            }
+
+            if (templateResult != null)
+            {
+                // display in new window
+                IFileEditorResolver resolver = _services.Resolve<IFileEditorResolver>();
+                IEditor editor = _services.Resolve<IEditor>(resolver.ResolveEditorNameByExtension(templateResult.Extension));
+                editor.AllText = templateResult.Text;
+                editor.SetSyntax(templateResult.SyntaxName);
+                _hostWindow.DisplayDockedForm(editor as DockContent);
+            }
+        }
+
+        /// <summary>The document document changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void DocumentDocumentChanged(object sender, DocumentEventArgs e)
+        {
+            IsDirty = true;
+        }
+
+        /// <summary>The get value.</summary>
+        /// <param name="name">The name.</param>
+        /// <returns>The get value.</returns>
+        private string GetValue(string name)
+        {
+            string val = Interaction.InputBox(string.Format("Value for '{0}'", name), "Supply a Value", name, -1, -1);
+            return val;
+        }
+
+        /// <summary>The set tab text by filename.</summary>
+        private void SetTabTextByFilename()
+        {
+            string dirty = string.Empty;
+            string text = "Untitled";
+            string tabtext;
+
+            if (_isDirty)
+            {
+                dirty = " *";
+            }
+
+            if (txtEdit.FileName != null)
+            {
+                text = FileName;
+                tabtext = Path.GetFileName(FileName);
+            }
+            else
+            {
+                text += _services.Settings.GetUntitledDocumentCounter();
+                tabtext = text;
+            }
+
+            TabText = tabtext + dirty;
+            ToolTipText = text + dirty;
+        }
+
+        /// <summary>The template editor form_ form closing.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void TemplateEditorForm_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            if (_isDirty)
+            {
+                DialogResult saveFile = _hostWindow.DisplayMessageBox(
+                    this,
+                    "Contents changed, do you want to save the file?\r\n" + TabText, "Save Changes?",
+                    MessageBoxButtons.YesNoCancel,
+                    MessageBoxIcon.Question,
+                    MessageBoxDefaultButton.Button1,
+                    0,
+                    null,
+                    null);
+
+                if (saveFile == DialogResult.Cancel)
+                {
+                    e.Cancel = true;
+                }
+                else if (saveFile == DialogResult.Yes)
+                {
+                    CommandManager.GetCommandInstance<SaveFileCommand>().Execute();
+                }
+            }
+        }
+
+        /// <summary>The template editor form_ load.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void TemplateEditorForm_Load(object sender, EventArgs e)
+        {
+            rtfHelp.Rtf = TemplateResources.TemplateHelp;
+        }
+    }
+}
\ No newline at end of file
Added +170 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateEditorForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateEditorForm.Designer.cs
new file mode 100644
index 0000000..51fb08c
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateEditorForm.Designer.cs
@@ -0,0 +1,170 @@
+namespace MiniSqlQuery.PlugIns.TemplateViewer
+{
+	partial class TemplateEditorForm : ITemplateEditor
+	{
+		/// <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();
+			this.txtEdit = new ICSharpCode.TextEditor.TextEditorControl();
+			this.tabControl1 = new System.Windows.Forms.TabControl();
+			this.tabPageTemplateSource = new System.Windows.Forms.TabPage();
+			this.tabPageHelp = new System.Windows.Forms.TabPage();
+			this.rtfHelp = new System.Windows.Forms.RichTextBox();
+			this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+			this.txtErrors = new System.Windows.Forms.TextBox();
+			this.formContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
+			this.tabControl1.SuspendLayout();
+			this.tabPageTemplateSource.SuspendLayout();
+			this.tabPageHelp.SuspendLayout();
+			this.splitContainer1.Panel1.SuspendLayout();
+			this.splitContainer1.Panel2.SuspendLayout();
+			this.splitContainer1.SuspendLayout();
+			this.SuspendLayout();
+			// 
+			// txtEdit
+			// 
+			this.txtEdit.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.txtEdit.IsReadOnly = false;
+			this.txtEdit.Location = new System.Drawing.Point(3, 3);
+			this.txtEdit.Name = "txtEdit";
+			this.txtEdit.Size = new System.Drawing.Size(533, 314);
+			this.txtEdit.TabIndex = 0;
+			// 
+			// tabControl1
+			// 
+			this.tabControl1.Controls.Add(this.tabPageTemplateSource);
+			this.tabControl1.Controls.Add(this.tabPageHelp);
+			this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.tabControl1.Location = new System.Drawing.Point(0, 0);
+			this.tabControl1.Name = "tabControl1";
+			this.tabControl1.SelectedIndex = 0;
+			this.tabControl1.Size = new System.Drawing.Size(547, 346);
+			this.tabControl1.TabIndex = 1;
+			// 
+			// tabPageTemplateSource
+			// 
+			this.tabPageTemplateSource.Controls.Add(this.txtEdit);
+			this.tabPageTemplateSource.Location = new System.Drawing.Point(4, 22);
+			this.tabPageTemplateSource.Name = "tabPageTemplateSource";
+			this.tabPageTemplateSource.Padding = new System.Windows.Forms.Padding(3);
+			this.tabPageTemplateSource.Size = new System.Drawing.Size(539, 320);
+			this.tabPageTemplateSource.TabIndex = 0;
+			this.tabPageTemplateSource.Text = "Template Source";
+			this.tabPageTemplateSource.UseVisualStyleBackColor = true;
+			// 
+			// tabPageHelp
+			// 
+			this.tabPageHelp.Controls.Add(this.rtfHelp);
+			this.tabPageHelp.Location = new System.Drawing.Point(4, 22);
+			this.tabPageHelp.Name = "tabPageHelp";
+			this.tabPageHelp.Padding = new System.Windows.Forms.Padding(3);
+			this.tabPageHelp.Size = new System.Drawing.Size(539, 321);
+			this.tabPageHelp.TabIndex = 1;
+			this.tabPageHelp.Text = "Quick Help";
+			this.tabPageHelp.UseVisualStyleBackColor = true;
+			// 
+			// rtfHelp
+			// 
+			this.rtfHelp.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.rtfHelp.Location = new System.Drawing.Point(3, 3);
+			this.rtfHelp.Name = "rtfHelp";
+			this.rtfHelp.ReadOnly = true;
+			this.rtfHelp.ShowSelectionMargin = true;
+			this.rtfHelp.Size = new System.Drawing.Size(533, 315);
+			this.rtfHelp.TabIndex = 0;
+			this.rtfHelp.Text = "";
+			// 
+			// splitContainer1
+			// 
+			this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.splitContainer1.Location = new System.Drawing.Point(4, 4);
+			this.splitContainer1.Name = "splitContainer1";
+			this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
+			// 
+			// splitContainer1.Panel1
+			// 
+			this.splitContainer1.Panel1.Controls.Add(this.tabControl1);
+			// 
+			// splitContainer1.Panel2
+			// 
+			this.splitContainer1.Panel2.Controls.Add(this.txtErrors);
+			this.splitContainer1.Size = new System.Drawing.Size(547, 437);
+			this.splitContainer1.SplitterDistance = 346;
+			this.splitContainer1.TabIndex = 2;
+			// 
+			// txtErrors
+			// 
+			this.txtErrors.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.txtErrors.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+			this.txtErrors.Location = new System.Drawing.Point(0, 0);
+			this.txtErrors.Multiline = true;
+			this.txtErrors.Name = "txtErrors";
+			this.txtErrors.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+			this.txtErrors.Size = new System.Drawing.Size(547, 87);
+			this.txtErrors.TabIndex = 0;
+			// 
+			// formContextMenuStrip
+			// 
+			this.formContextMenuStrip.Name = "formContextMenuStrip";
+			this.formContextMenuStrip.Size = new System.Drawing.Size(153, 26);
+			// 
+			// TemplateEditorForm
+			// 
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.ClientSize = new System.Drawing.Size(555, 445);
+			this.Controls.Add(this.splitContainer1);
+			this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+			this.Name = "TemplateEditorForm";
+			this.Padding = new System.Windows.Forms.Padding(4);
+			this.TabPageContextMenuStrip = this.formContextMenuStrip;
+			this.Text = "TemplateEditorForm";
+			this.Load += new System.EventHandler(this.TemplateEditorForm_Load);
+			this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.TemplateEditorForm_FormClosing);
+			this.tabControl1.ResumeLayout(false);
+			this.tabPageTemplateSource.ResumeLayout(false);
+			this.tabPageHelp.ResumeLayout(false);
+			this.splitContainer1.Panel1.ResumeLayout(false);
+			this.splitContainer1.Panel2.ResumeLayout(false);
+			this.splitContainer1.Panel2.PerformLayout();
+			this.splitContainer1.ResumeLayout(false);
+			this.ResumeLayout(false);
+
+		}
+
+		#endregion
+
+		private ICSharpCode.TextEditor.TextEditorControl txtEdit;
+		private System.Windows.Forms.TabControl tabControl1;
+		private System.Windows.Forms.TabPage tabPageTemplateSource;
+		private System.Windows.Forms.TabPage tabPageHelp;
+		private System.Windows.Forms.RichTextBox rtfHelp;
+		private System.Windows.Forms.SplitContainer splitContainer1;
+		private System.Windows.Forms.TextBox txtErrors;
+		private System.Windows.Forms.ContextMenuStrip formContextMenuStrip;
+	}
+}
Added +123 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateEditorForm.resx b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateEditorForm.resx
new file mode 100644
index 0000000..a4d9552
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateEditorForm.resx
@@ -0,0 +1,123 @@
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="formContextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>
\ No newline at end of file
Added +449 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateHelp.rtf b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateHelp.rtf
new file mode 100644
index 0000000..f8fea0d
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateHelp.rtf
@@ -0,0 +1,449 @@
+{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch37\stshfhich37\stshfbi37\deflang3081\deflangfe3081\themelang3081\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times New Roman};}
+{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial{\*\falt Arial};}{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}
+{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
+{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times New Roman};}{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times New Roman};}
+{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times New Roman};}
+{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times New Roman};}{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times New Roman};}
+{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times New Roman};}
+{\f288\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times New Roman};}{\f289\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times New Roman};}
+{\f291\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times New Roman};}{\f292\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times New Roman};}
+{\f293\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times New Roman};}{\f294\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times New Roman};}
+{\f295\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times New Roman};}{\f296\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times New Roman};}{\f298\fbidi \fswiss\fcharset238\fprq2 Arial CE{\*\falt Arial};}
+{\f299\fbidi \fswiss\fcharset204\fprq2 Arial Cyr{\*\falt Arial};}{\f301\fbidi \fswiss\fcharset161\fprq2 Arial Greek{\*\falt Arial};}{\f302\fbidi \fswiss\fcharset162\fprq2 Arial Tur{\*\falt Arial};}
+{\f303\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew){\*\falt Arial};}{\f304\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic){\*\falt Arial};}{\f305\fbidi \fswiss\fcharset186\fprq2 Arial Baltic{\*\falt Arial};}
+{\f306\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese){\*\falt Arial};}{\f308\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f309\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}{\f311\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}
+{\f312\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f313\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f314\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f315\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}
+{\f316\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f628\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f629\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f631\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}
+{\f632\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f635\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f658\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f659\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
+{\f661\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f662\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f665\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
+{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times New Roman};}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times New Roman};}
+{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times New Roman};}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times New Roman};}
+{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times New Roman};}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times New Roman};}
+{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times New Roman};}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times New Roman};}
+{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times New Roman};}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times New Roman};}
+{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times New Roman};}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times New Roman};}
+{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times New Roman};}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times New Roman};}
+{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times New Roman};}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times New Roman};}
+{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}
+{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times New Roman};}
+{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times New Roman};}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times New Roman};}
+{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times New Roman};}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times New Roman};}
+{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times New Roman};}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times New Roman};}
+{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times New Roman};}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times New Roman};}
+{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times New Roman};}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times New Roman};}
+{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times New Roman};}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times New Roman};}
+{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times New Roman};}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times New Roman};}
+{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times New Roman};}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times New Roman};}
+{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times New Roman};}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times New Roman};}
+{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times New Roman};}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times New Roman};}
+{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times New Roman};}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times New Roman};}
+{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times New Roman};}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
+{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
+{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times New Roman};}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times New Roman};}
+{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times New Roman};}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times New Roman};}
+{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times New Roman};}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times New Roman};}
+{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times New Roman};}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times New Roman};}}{\colortbl;\red0\green0\blue0;
+\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;
+\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green100\blue0;\red139\green69\blue19;}{\*\defchp \f37\fs22 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 
+\f37\fs22\lang3081\langfe3081\cgrid\langnp3081\langfenp3081 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang3081\langfe3081\cgrid\langnp3081\langfenp3081 \snext11 \ssemihidden \sunhideused \sqformat Normal Table;}}{\*\listtable
+{\list\listtemplateid1994920380\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid201916417\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 
+\fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916419\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }
+{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916421\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel
+\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916417\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916419\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916421\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916417\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916419\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace360\levelindent0{\leveltext\leveltemplateid201916421\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid586115817}{\list\listtemplateid1513266810\listhybrid{\listlevel\levelnfc23\levelnfcn23
+\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace3240\levelindent0{\leveltext\leveltemplateid474885214\'01\u-3913 ?;}{\levelnumbers;}\loch\af3\hich\af3\dbch\af0\fbias0\hres0\chhres0 \fi-360\li1080\lin1080 }{\listlevel\levelnfc23\levelnfcn23
+\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace3240\levelindent0{\leveltext\leveltemplateid201916419\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li-1080\lin-1080 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\lvltentative\levelspace3240\levelindent0{\leveltext\leveltemplateid201916421\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li-360\lin-360 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\lvltentative\levelspace3240\levelindent0{\leveltext\leveltemplateid201916417\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li360\lin360 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\lvltentative\levelspace3240\levelindent0{\leveltext\leveltemplateid201916419\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1080\lin1080 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
+\levelspace3240\levelindent0{\leveltext\leveltemplateid201916421\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li1800\lin1800 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace3240
+\levelindent0{\leveltext\leveltemplateid201916417\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2520\lin2520 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace3240\levelindent0
+{\leveltext\leveltemplateid201916419\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3240\lin3240 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace3240\levelindent0{\leveltext
+\leveltemplateid201916421\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li3960\lin3960 }{\listname ;}\listid877427267}{\list\listtemplateid1704463912\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
+\levelstartat0\levelspace0\levelindent0{\leveltext\leveltemplateid474885214\'01\u-3913 ?;}{\levelnumbers;}\loch\af3\hich\af3\dbch\af0\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid201916419\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
+{\leveltext\leveltemplateid201916421\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
+\leveltemplateid201916417\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
+\leveltemplateid201916419\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid201916421
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li7200\lin7200 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid201916417
+\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li7920\lin7920 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid201916419\'01o;}{\levelnumbers
+;}\f2\fbias0\hres0\chhres0 \fi-360\li8640\lin8640 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid201916421\'01\u-3929 ?;}{\levelnumbers;}
+\f10\fbias0\hres0\chhres0 \fi-360\li9360\lin9360 }{\listname ;}\listid1344089321}{\list\listtemplateid748702832\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext
+\leveltemplateid201916417\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
+\leveltemplateid201916419\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916421
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916417
+\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916419
+\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916421
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916417
+\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916419
+\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916421
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1431273083}{\list\listtemplateid1223347500\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
+\levelindent0{\leveltext\leveltemplateid201916417\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
+{\leveltext\leveltemplateid201916419\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
+\leveltemplateid201916421\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
+\leveltemplateid201916417\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
+\leveltemplateid201916419\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916421
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916417
+\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916419
+\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916421
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1611547526}{\list\listtemplateid1417693332\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
+\levelindent0{\leveltext\leveltemplateid201916417\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
+{\leveltext\leveltemplateid201916419\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
+\leveltemplateid201916421\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
+\leveltemplateid201916417\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
+\leveltemplateid201916419\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916421
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916417
+\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916419
+\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid201916421
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid1768498529}}{\*\listoverridetable{\listoverride\listid1344089321\listoverridecount0\ls1}{\listoverride\listid877427267\listoverridecount0\ls2}
+{\listoverride\listid586115817\listoverridecount0\ls3}{\listoverride\listid1611547526\listoverridecount0\ls4}{\listoverride\listid1431273083\listoverridecount0\ls5}{\listoverride\listid1768498529\listoverridecount0\ls6}}{\*\rsidtbl \rsid939189\rsid3482954
+\rsid4084760\rsid4728322\rsid5655077\rsid9175728\rsid9329129\rsid9330872\rsid9527813\rsid11020037\rsid11871217\rsid11956202\rsid12725751\rsid13640472\rsid13906272\rsid15340299}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0
+\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Paul}{\creatim\yr2009\mo9\dy16\hr16\min42}{\revtim\yr2009\mo10\dy6\hr6\min37}{\version15}{\edmins1569}{\nofpages3}{\nofwords675}{\nofchars4049}{\nofcharsws4715}{\vern32771}}
+{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}{\xmlns2 urn:schemas-microsoft-com:office:smarttags}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect 
+\widowctrl\ftnbj\aenddoc\trackmoves1\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\noxlattoyen
+\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\nolnhtadjtbl\viewnobound1\rsidroot5655077 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar 
+\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4
+\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}
+{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 
+\af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang3081\langfe3081\cgrid\langnp3081\langfenp3081 {\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid9527813 Template Help
+\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 
+\par Mini SQL Query takes advantage of the }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid9527813\charrsid11020037 NVelocity}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813  template engine to transform simple scripts into SQL scripts, C#}{
+\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9330872 /VB}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 
+ code, HTML mark-up or any other type of text output. The scripts have access to the database model making it a simple yet powerful tool}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9330872 
+. It is also possible to get user input for variables or import references to plug}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid12725751 -}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9330872 ins}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 
+\f1\fs20\insrsid12725751  for execution}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 . The following examples use the }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \i\f1\fs20\insrsid9527813\charrsid11020037 Northwind SQL Compact Edition}{
+\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813  sample database.
+\par 
+\par }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid9527813 Pre-Processor Directives
+\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 
+\par A Pre-processor directive is Mini SQL Query specific and start with \'93#@\'94. They are:
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f3\fs20\insrsid9527813\charrsid15340299 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\nowidctlpar\tx720\wrapdefault\faauto\ls6\rin0\lin720\itap0\pararsid9527813 {
+\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9527813\charrsid15340299 #@get <}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \i\f2\fs20\insrsid9527813\charrsid15340299 variable}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9527813\charrsid15340299 >}{
+\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813  (used to prompt the user for a value, currently just text)
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f3\fs20\insrsid9527813\charrsid15340299 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\nowidctlpar\wrapdefault\faauto\ls6\rin0\lin720\itap0\pararsid9527813 {
+\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9527813\charrsid15340299 #@set <}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \i\f2\fs20\insrsid9527813\charrsid15340299 property}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9527813\charrsid15340299 > <}{
+\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \i\f2\fs20\insrsid9527813\charrsid15340299 value}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9527813\charrsid15340299 >}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813  (currently just \'93extension
+\'94)
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f3\fs20\insrsid4728322\charrsid4728322 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4728322\charrsid4728322 #@import-plugin}{\rtlch\fcs1 
+\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4728322  <plugin-type-name>
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 
+\par }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid9527813 Directives
+\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 
+\par Template directives are signalled with a hash (#) and are pure NVelocity syntax. Some directives are:
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f3\fs20\insrsid9527813\charrsid15340299 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\nowidctlpar\tx720\wrapdefault\faauto\ls5\rin0\lin720\itap0\pararsid9527813 {
+\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9527813\charrsid15340299 foreach}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813  / }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9527813\charrsid15340299 end}{\rtlch\fcs1 \af1\afs20 
+\ltrch\fcs0 \f1\fs20\insrsid9527813 
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f3\fs20\insrsid9527813\charrsid15340299 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\nowidctlpar\wrapdefault\faauto\ls5\rin0\lin720\itap0\pararsid9527813 {
+\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9527813\charrsid15340299 set
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f3\fs20\insrsid9527813 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 if / }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+\f2\fs20\insrsid9527813\charrsid15340299 ifelse}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813  / }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9527813\charrsid15340299 else}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 
+ / }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9527813\charrsid15340299 end}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 
+\par Other more advanced directives include:
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f3\fs20\insrsid9527813\charrsid15340299 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\nowidctlpar\tx720\wrapdefault\faauto\ls5\rin0\lin720\itap0\pararsid9527813 {
+\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9527813\charrsid15340299 macro
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f3\fs20\insrsid9527813\charrsid15340299 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\nowidctlpar\tx720\wrapdefault\faauto\ls5\rin0\lin720\itap0\pararsid15340299 {
+\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9527813\charrsid15340299 include
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 
+\par }{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid9527813 Built in Variables
+\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 
+\par Variables are de-referenced with the format $\{}{\rtlch\fcs1 \ai\af1\afs20 \ltrch\fcs0 \i\f1\fs20\insrsid9527813 varable-name}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 \}
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid9329129 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 The following variables are built in}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9329129 .
+\par 
+\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \b\i\f1\fs20\insrsid9329129 $\{}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \b\i\f1\fs20\insrsid9329129\charrsid9329129 Host}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \b\i\f1\fs20\insrsid9329129 \}}{\rtlch\fcs1 \af1\afs20 
+\ltrch\fcs0 \b\i\f1\fs20\insrsid9329129\charrsid9329129 
+\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9329129 The host variable allows access to several helper functions and data, most notably the \'93Model\'94. The model is t
+he database schema of the current connection. The model contains collections of tables and views with their respective columns. }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11871217 Each column has the}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 
+\f1\fs20\insrsid13640472  primary/unique key and}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11871217  type information}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13640472 . I}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11871217 
+f supported by the schema service of that database }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13640472 the column }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11871217 will contain foreign key information.}{\rtlch\fcs1 \af1\afs20 
+\ltrch\fcs0 \f1\fs20\insrsid9329129 
+\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13640472 The \'93Model\'94 hierarchy is below:
+\par }\pard \ltrpar\ql \fi-360\li1440\ri0\nowidctlpar\tx1440\wrapdefault\faauto\rin0\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9527813 o\tab }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 Model
+\par }\pard \ltrpar\ql \fi-360\li2160\ri0\nowidctlpar\tx2160\wrapdefault\faauto\rin0\lin2160\itap0 {\rtlch\fcs1 \af10\afs20 \ltrch\fcs0 \f10\fs20\insrsid9527813 \'a7\tab }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 Tables (list)
+\par }\pard \ltrpar\ql \fi-360\li2880\ri0\nowidctlpar\tx2880\wrapdefault\faauto\rin0\lin2880\itap0 {\rtlch\fcs1 \af3\afs20 \ltrch\fcs0 \f3\fs20\insrsid9527813 \'b7\tab }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 Schema (e.g. "dbo")
+\par }\pard \ltrpar\ql \fi-360\li2880\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin2880\itap0 {\rtlch\fcs1 \af3\afs20 \ltrch\fcs0 \f3\fs20\insrsid9527813 \'b7\tab }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 Name (e.g. "User")
+\par }{\rtlch\fcs1 \af3\afs20 \ltrch\fcs0 \f3\fs20\insrsid9527813 \'b7\tab }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 FullName  (e.g. "dbo.User")
+\par }{\rtlch\fcs1 \af3\afs20 \ltrch\fcs0 \f3\fs20\insrsid9527813 \'b7\tab }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 Columns (list)
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f3\fs20\insrsid9527813 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li3600\ri0\nowidctlpar\tx3600\wrapdefault\faauto\ls1\rin0\lin3600\itap0\pararsid5655077 {\rtlch\fcs1 
+\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 Name (e.g. "int")
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f3\fs20\insrsid5655077\charrsid5655077 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5655077\charrsid5655077 Nullable}{\rtlch\fcs1 \af1\afs20 
+\ltrch\fcs0 \f1\fs20\insrsid5655077 
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f3\fs20\insrsid9175728\charrsid9175728 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9175728\charrsid9175728 DbType}{\rtlch\fcs1 \af1\afs20 
+\ltrch\fcs0 \f1\fs20\insrsid9175728 
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f2\fs20\insrsid9329129 \hich\af2\dbch\af0\loch\f2 o\tab}}\pard \ltrpar\ql \fi-360\li4320\ri0\nowidctlpar\tx3600\wrapdefault\faauto\ls1\ilvl1\rin0\lin4320\itap0\pararsid9329129 {\rtlch\fcs1 
+\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9329129 Name
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f2\fs20\insrsid9329129 \hich\af2\dbch\af0\loch\f2 o\tab}Summary (renders the type with respect to Length)
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f2\fs20\insrsid9329129 \hich\af2\dbch\af0\loch\f2 o\tab}Length
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f2\fs20\insrsid9329129\charrsid9329129 \hich\af2\dbch\af0\loch\f2 o\tab}}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9329129\charrsid9329129 Precision}{\rtlch\fcs1 \af1\afs20 
+\ltrch\fcs0 \f1\fs20\insrsid9329129 
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f2\fs20\insrsid9329129 \hich\af2\dbch\af0\loch\f2 o\tab}Scale
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f2\fs20\insrsid9329129 \hich\af2\dbch\af0\loch\f2 o\tab}SystemType (the .Net type, e.g. System.String)}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9329129\charrsid9329129 
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f3\fs20\insrsid5655077 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li3600\ri0\nowidctlpar\tx3600\wrapdefault\faauto\ls1\rin0\lin3600\itap0\pararsid5655077 {\rtlch\fcs1 
+\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5655077 IsKey
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f3\fs20\insrsid5655077 \loch\af3\dbch\af0\hich\f3 \'b7\tab}IsUnique
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f3\fs20\insrsid5655077 \loch\af3\dbch\af0\hich\f3 \'b7\tab}IsRowVersion (e.g. a Timestamp column)
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f3\fs20\insrsid5655077 \loch\af3\dbch\af0\hich\f3 \'b7\tab}IsIdentity
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f3\fs20\insrsid5655077 \loch\af3\dbch\af0\hich\f3 \'b7\tab}IsAutoIncrement
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f3\fs20\insrsid5655077 \loch\af3\dbch\af0\hich\f3 \'b7\tab}IsReadOnly (e.g. a auto increment or timestamp column)
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f3\fs20\insrsid5655077 \loch\af3\dbch\af0\hich\f3 \'b7\tab}IsWritable
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f3\fs20\insrsid5655077 \loch\af3\dbch\af0\hich\f3 \'b7\tab}HasFK (true if the column references another table)
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f3\fs20\insrsid5655077\charrsid5655077 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5655077\charrsid5655077 ForeignKeyReference}{\rtlch\fcs1 
+\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9175728  (applicable if HasFK is true)}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5655077 
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f2\fs20\insrsid9175728\charrsid9175728 \hich\af2\dbch\af0\loch\f2 o\tab}}\pard \ltrpar\ql \fi-360\li4320\ri0\nowidctlpar
+\tx3600\wrapdefault\faauto\ls1\ilvl1\rin0\lin4320\itap0\pararsid5655077 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9175728\charrsid9175728 ConstraintName}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5655077 
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f2\fs20\insrsid9175728\charrsid9175728 \hich\af2\dbch\af0\loch\f2 o\tab}}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9175728\charrsid9175728 ReferenceTable}{\rtlch\fcs1 \af1\afs20 
+\ltrch\fcs0 \f1\fs20\insrsid9175728 
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f10\fs20\insrsid9175728 \loch\af10\dbch\af0\hich\f10 \'a7\tab}}\pard \ltrpar\ql \fi-360\li5040\ri0\nowidctlpar\tx3600\wrapdefault\faauto\ls1\ilvl2\rin0\lin5040\itap0\pararsid9175728 {
+\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9175728 FullName etc (as Table)
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f2\fs20\insrsid9175728\charrsid9175728 \hich\af2\dbch\af0\loch\f2 o\tab}}\pard \ltrpar\ql \fi-360\li4320\ri0\nowidctlpar
+\tx3600\wrapdefault\faauto\ls1\ilvl1\rin0\lin4320\itap0\pararsid9175728 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9175728\charrsid9175728 ReferenceColumn}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9175728 
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f10\fs20\insrsid9175728 \loch\af10\dbch\af0\hich\f10 \'a7\tab}}\pard \ltrpar\ql \fi-360\li5040\ri0\nowidctlpar\tx3600\wrapdefault\faauto\ls1\ilvl2\rin0\lin5040\itap0\pararsid9329129 {
+\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9175728 Name etc (as Column)}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\tx3600\wrapdefault\faauto\rin0\lin0\itap0\pararsid9329129 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid3482954 
+\par There is also a \'93Views\'94 list with the same objects available for scripting.}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9329129 
+\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid3482954 
+\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13640472 Other \'93Host\'94 functions are:
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f3\fs20\insrsid13640472\charrsid15340299 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\nowidctlpar\tx709\wrapdefault\faauto\ls5\rin0\lin720\itap0\pararsid9527813 {
+\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid13640472\charrsid15340299 MachineName
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f3\fs20\insrsid13640472\charrsid15340299 \loch\af3\dbch\af0\hich\f3 \'b7\tab}UserName
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f3\fs20\insrsid13640472\charrsid15340299 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\nowidctlpar\tx709\wrapdefault\faauto\ls3\rin0\lin720\itap0\pararsid9527813 {
+\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid13640472\charrsid15340299 Date(format)}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813  \endash  where format is something like \'93d MMM yyyy\'94 or \'93dd/MM/yy\'94 etc}{\rtlch\fcs1 
+\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13640472 
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f3\fs20\insrsid939189\charrsid15340299 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid939189\charrsid15340299 ToPascalCase(text)}{\rtlch\fcs1 
+\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid939189  \endash  converts \'93user_name\'94 to \'93UserName\'94 for example}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid3482954 
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f3\fs20\insrsid939189\charrsid15340299 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid939189\charrsid15340299 ToCamelCase(text)}{\rtlch\fcs1 
+\af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid939189  \endash  converts \'93FirstName\'94 to \'93firstName\'94 for example
+\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f3\fs20\insrsid939189 \loch\af3\dbch\af0\hich\f3 \'b7\tab}(if you want more email me or better yet send a patch for the \'93}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 
+\f1\fs20\insrsid939189\charrsid939189 TemplateHost}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid939189 \'94 class!)
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\tx3600\wrapdefault\faauto\rin0\lin0\itap0\pararsid9329129 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13640472 
+\par }\pard \ltrpar\ql \li3600\ri0\nowidctlpar\tx3600\wrapdefault\faauto\rin0\lin3600\itap0\pararsid9329129 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9329129\charrsid9329129 
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid939189 Sample - All Table Names}{\rtlch\fcs1 \ab\af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid9527813 
+\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 
+\par }\pard \ltrpar\ql \li720\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid9527813 #foreach }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid9527813 ($table in }{\rtlch\fcs1 
+\af2\afs20 \ltrch\fcs0 \f2\fs20\cf2\insrsid9527813 $\{Host.Model.Tables\}}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid9527813 )
+\par Table: }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf2\insrsid9527813 $\{table.Name\}
+\par }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid9527813 #end
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 
+\par Sample Output:
+\par 
+\par }\pard \ltrpar\ql \li720\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9527813 Table: Categories
+\par Table: Customers
+\par Table: Employees
+\par Table: Order Details
+\par Table: Orders
+\par Table: Products
+\par Table: Shippers
+\par Table: Suppliers
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid9527813 
+\par 
+\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid13906272\charrsid13906272 Sample - CSharp Model.cs}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid9527813\charrsid13906272 
+\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13906272 
+\par A simple script to produce a C# class for each table:
+\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13906272\charrsid13906272 
+\par }\pard \ltrpar\ql \li720\ri0\widctlpar\wrapdefault\faauto\rin0\lin720\itap0\pararsid13906272 {\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid13906272 #foreach }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid13906272 
+($table in $Host.Model.Tables)
+\par public class }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf2\insrsid13906272 $\{table.Name\}
+\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid13906272 \{
+\par }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid13906272 #foreach }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid13906272 ($c in $table.Columns)
+\par \tab public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf2\insrsid13906272 $\{c.DbType.SystemType\} $\{Host.ToPascalCase($c.Name)\} }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid13906272 \{ get; set; \}
+\par }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid13906272 #end
+\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid13906272 \}
+\par }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid13906272 #end
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13906272 
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid13906272 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13906272 Sample Output:
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid13906272 
+\par }\pard \ltrpar\ql \li720\ri0\widctlpar\wrapdefault\faauto\rin0\lin720\itap0\pararsid4084760 {\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf6\insrsid4084760 class }{\rtlch\fcs1 
+\af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 Categories
+\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 \{
+\par \tab }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 System}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 .}{\rtlch\fcs1 \af2\afs20 
+\ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 Int32 CategoryID }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 \{ }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 get}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+\f2\fs20\cf17\insrsid4084760 ; }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 set}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 ; \}
+\par \tab }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 System}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 .}{\rtlch\fcs1 \af2\afs20 
+\ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 String CategoryName }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 \{ }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 get}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+\f2\fs20\cf17\insrsid4084760 ; }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 set}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 ; \}
+\par \tab }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 System}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 .}{\rtlch\fcs1 \af2\afs20 
+\ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 String Description }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 \{ }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 get}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+\f2\fs20\cf17\insrsid4084760 ; }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 set}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 ; \}
+\par \tab }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 System}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 .}{\rtlch\fcs1 \af2\afs20 
+\ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 Byte}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 [] }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 Picture }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 \{ 
+}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 get}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 ; }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 set}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+\f2\fs20\cf17\insrsid4084760 ; \}
+\par \}
+\par }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf6\insrsid4084760 class }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 Customers
+\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 \{
+\par \tab }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 System}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 .}{\rtlch\fcs1 \af2\afs20 
+\ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 String CustomerID }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 \{ }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 get}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+\f2\fs20\cf17\insrsid4084760 ; }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 set}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 ; \}
+\par \tab }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 System}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 .}{\rtlch\fcs1 \af2\afs20 
+\ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 String CompanyName }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 \{ }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 get}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+\f2\fs20\cf17\insrsid4084760 ; }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 set}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 ; \}
+\par \tab }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 System}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 .}{\rtlch\fcs1 \af2\afs20 
+\ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 String ContactName }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 \{ }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 get}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+\f2\fs20\cf17\insrsid4084760 ; }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 set}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 ; \}
+\par \tab }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 System}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 .}{\rtlch\fcs1 \af2\afs20 
+\ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 String ContactTitle }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 \{ }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 get}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+\f2\fs20\cf17\insrsid4084760 ; }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 set}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 ; \}
+\par \tab }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 System}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 .}{\rtlch\fcs1 \af2\afs20 
+\ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 String Address }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 \{ }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 get}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+\f2\fs20\cf17\insrsid4084760 ; }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 set}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 ; \}
+\par \tab }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 {\*\xmlopen\xmlns2{\factoidname PlaceName}}{\*\xmlopen\xmlns2{\factoidname place}}System}{\rtlch\fcs1 
+\af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 .}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 String{\*\xmlclose} {\*\xmlopen\xmlns2{\factoidname PlaceType}}City{\*\xmlclose}{\*\xmlclose} }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+\f2\fs20\cf17\insrsid4084760 \{ }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 get}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 ; }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 set}{\rtlch\fcs1 
+\af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 ; \}
+\par \tab }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 System}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 .}{\rtlch\fcs1 \af2\afs20 
+\ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 String Region }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 \{ }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 get}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+\f2\fs20\cf17\insrsid4084760 ; }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 set}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 ; \}
+\par \tab }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 System}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 .}{\rtlch\fcs1 \af2\afs20 
+\ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 String PostalCode }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 \{ }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 get}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+\f2\fs20\cf17\insrsid4084760 ; }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 set}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 ; \}
+\par \tab }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 System}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 .}{\rtlch\fcs1 \af2\afs20 
+\ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 String Country }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 \{ }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 get}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+\f2\fs20\cf17\insrsid4084760 ; }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 set}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 ; \}
+\par \tab }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 System}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 .}{\rtlch\fcs1 \af2\afs20 
+\ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 String Phone }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 \{ }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 get}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+\f2\fs20\cf17\insrsid4084760 ; }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 set}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 ; \}
+\par \tab }{\rtlch\fcs1 \ab\af2\afs20 \ltrch\fcs0 \b\f2\fs20\cf2\insrsid4084760 public }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 System}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 .}{\rtlch\fcs1 \af2\afs20 
+\ltrch\fcs0 \f2\fs20\cf1\insrsid4084760 String Fax }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 \{ }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 get}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 
+; }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf18\insrsid4084760 set}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf17\insrsid4084760 ; \}
+\par \}
+\par }\pard \ltrpar\ql \li720\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0\pararsid4084760 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4084760 ...
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4084760 
+\par 
+\par 
+\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \b\f1\fs20\insrsid11956202\charrsid4728322 Sample - Plugin Access.txt
+\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11956202 
+\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4728322 You can import a plug-in to the script using it\rquote s fully qualified type name and access the properties and methods for that plug-in. Note that the name of the plug-in variable 
+in the template has the dots replaced with underscores (i.e. \'93}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4728322\charrsid4728322 MiniSqlQuery.PlugIns.CoreApplicationPlugIn}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4728322 \'94
+ has a variable name of \'93}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4728322\charrsid4728322 MiniSqlQuery_PlugIns_CoreApplicationPlugIn}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4728322 \'94)
+\par 
+\par }\pard \ltrpar\ql \li720\ri0\widctlpar\wrapdefault\faauto\rin0\lin720\itap0\pararsid11956202 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid11956202 #@import-plugin MiniSqlQuery.PlugIns.CoreApplicationPlugIn
+\par 
+\par \\}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf2\insrsid11956202 $\{MiniSqlQuery_PlugIns_CoreApplicationPlugIn.PluginName\}}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid11956202 :
+\par   "}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf2\insrsid11956202 $\{MiniSqlQuery_PlugIns_CoreApplicationPlugIn.PluginName\}}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid11956202 "
+\par \\}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf2\insrsid11956202 $\{MiniSqlQuery_PlugIns_CoreApplicationPlugIn.PluginDescription\}
+\par   }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid11956202 "}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf2\insrsid11956202 $\{MiniSqlQuery_PlugIns_CoreApplicationPlugIn.PluginDescription\}}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+\f2\fs20\cf1\insrsid11956202 "
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11956202 
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid4728322 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid4728322 Sample Output:
+\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid11956202 
+\par }\pard \ltrpar\ql \li720\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin720\itap0\pararsid4728322 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4728322\charrsid4728322 $\{MiniSqlQuery_PlugIns_CoreApplicationPlugIn.PluginName\}:
+\par   "Mini SQL Query Core"
+\par $\{MiniSqlQuery_PlugIns_CoreApplicationPlugIn.PluginDescription\}
+\par   "Plugin to setup the core features of Mini SQL Query."}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid11956202\charrsid4728322 
+\par }{\*\themedata 504b030414000600080000002100828abc13fa0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb6ac3301045f785fe83d0b6d8
+72ba28a5d8cea249777d2cd20f18e4b12d6a8f843409c9df77ecb850ba082d74231062ce997b55ae8fe3a00e1893f354e9555e6885647de3a8abf4fbee29bbd7
+2a3150038327acf409935ed7d757e5ee14302999a654e99e393c18936c8f23a4dc072479697d1c81e51a3b13c07e4087e6b628ee8cf5c4489cf1c4d075f92a0b
+44d7a07a83c82f308ac7b0a0f0fbf90c2480980b58abc733615aa2d210c2e02cb04430076a7ee833dfb6ce62e3ed7e14693e8317d8cd0433bf5c60f53fea2fe7
+065bd80facb647e9e25c7fc421fd2ddb526b2e9373fed4bb902e182e97b7b461e6bfad3f010000ffff0300504b030414000600080000002100a5d6a7e7c00000
+00360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4fc7060abb08
+84a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b63095120f88d94fbc
+52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462a1a82fe353
+bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f7468656d652f7468
+656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b4b0d592c9c
+070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b4757e8d3f7
+29e245eb2b260a0238fd010000ffff0300504b03041400060008000000210096b5ade296060000501b0000160000007468656d652f7468656d652f7468656d65
+312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87615b8116d8
+a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad79482a9c04
+98f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b5d8a314d3c
+94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab999fb7b471
+7509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9699640f671
+9e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd5868b37a088d1
+e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d60cf03ac1a5
+193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f9e7ef3f2d1
+17d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be15c308d3f2
+8acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a99793849c26ae6
+6252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d32a423279a
+668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2af074481847
+bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86e877f0034e
+16bafb0e258ebb4faf06b769e888340b103d3311da9750aa9d0a1cd3e4efca31a3508f6d0c5c5c398602f8e2ebc71591f5b616e24dd893aa3261fb44f95d843b
+5974bb5c04f4edafb95b7892ec1108f3f98de75dc97d5772bdff7cc95d94cf672db4b3da0a6557f70db629362d72bcb0431e53c6066acac80d699a6409fb44d0
+8741bdce9c0e4971624a2378cceaba830b05366b90e0ea23aaa241845368b0eb9e2612ca8c742851ca251ceccc70256d8d87265dd96361531f186c3d9058edf2
+c00eafe8e1fc5c509031bb4d680e9f39a3154de0accc56ae644441edd76156d7429d995bdd88664a9dc3ad50197c38af1a0c16d684060441db02565e85f3b966
+0d0713cc48a0ed6ef7dedc2dc60b17e92219e180643ed27acffba86e9c94c78ab90980d8a9f0913ee49d62b512b79626fb06dccee2a432bbc60276b9f7dec44b
+7904cfbca4f3f6443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc399161ee314bc2e75cf8759081743be1236ec4f4d6693e5336fb672c5dc24a8c33585b5fb
+9cc24e1d4885545b58463634cc5416022cd19cacfccb4d30eb45296023fd35a458598360f8d7a4003bbaae25e331f155d9d9a5116d3bfb9a95523e51440ca2e0
+088dd844ec6370bf0e55d027a012ae264c45d02f708fa6ad6da6dce29c255df9f6cae0ec38666984b372ab5334cf640b37795cc860de4ae2816e95b21be5ceaf
+8a49f90b52a51cc6ff3355f47e0237052b81f6800fd7b802239daf6d8f0b1571a8426944fdbe80c6c1d40e8816b88b8569082ab84c36ff0539d4ff6dce591a26
+ade1c0a7f669880485fd484582903d284b26fa4e2156cff62e4b9265844c4495c495a9157b440e091bea1ab8aaf7760f4510eaa69a6465c0e04ec69ffb9e65d0
+28d44d4e39df9c1a52ecbd3607fee9cec7263328e5d661d3d0e4f62f44acd855ed7ab33cdf7bcb8ae889599bd5c8b3029895b6825696f6af29c239b75a5bb1e6
+345e6ee6c28117e73586c1a2214ae1be07e93fb0ff51e133fb65426fa843be0fb515c187064d0cc206a2fa926d3c902e907670048d931db4c1a44959d366ad93
+b65abe595f70a75bf03d616c2dd959fc7d4e6317cd99cbcec9c58b34766661c7d6766ca1a9c1b327531486c6f941c638c67cd22a7f75e2a37be0e82db8df9f30
+254d30c1372581a1f51c983c80e4b71ccdd28dbf000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f74
+68656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f24
+51eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198
+720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528
+a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100828abc13fa0000001c0200001300000000000000000000000000
+000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b000000000000000000000000
+002b0100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000140200007468
+656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210096b5ade296060000501b000016000000000000000000
+00000000d10200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b010000270000000000
+00000000000000009b0900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000960a00000000}
+{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
+617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
+6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
+656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
+{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 Normal;
+\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 heading 1;\lsdqformat1 \lsdpriority0 heading 2;\lsdqformat1 \lsdpriority0 heading 3;\lsdqformat1 \lsdpriority0 heading 4;\lsdqformat1 \lsdpriority0 heading 5;\lsdqformat1 \lsdpriority0 heading 6;
+\lsdqformat1 \lsdpriority0 heading 7;\lsdqformat1 \lsdpriority0 heading 8;\lsdqformat1 \lsdpriority0 heading 9;\lsdsemihidden0 \lsdunhideused0 \lsdpriority0 toc 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority0 toc 2;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority0 toc 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority0 toc 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority0 toc 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority0 toc 6;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority0 toc 7;\lsdsemihidden0 \lsdunhideused0 \lsdpriority0 toc 8;\lsdsemihidden0 \lsdunhideused0 \lsdpriority0 toc 9;\lsdqformat1 \lsdpriority0 caption;
+\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 Title;\lsdsemihidden0 \lsdunhideused0 \lsdpriority0 Default Paragraph Font;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 Subtitle;
+\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdpriority0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;
+\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;
+\lsdunhideused0 \lsdlocked0 Revision;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;
+\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;
+\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;
+\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;
+\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;
+\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 0105000002000000180000004d73786d6c322e534158584d4c5265616465722e352e3000000000000000000000060000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffffec69d9888b8b3d4c859eaf6cd158be0f0000000000000000000000003053
+7f9ffb45ca01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000105000000000000}}
\ No newline at end of file
Added +155 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateHost.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateHost.cs
new file mode 100644
index 0000000..f699214
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateHost.cs
@@ -0,0 +1,155 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Globalization;
+using System.Text;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.DbModel;
+
+namespace MiniSqlQuery.PlugIns.TemplateViewer
+{
+    /// <summary>The template host.</summary>
+    public class TemplateHost : IDisposable
+    {
+        /// <summary>The _database inspector.</summary>
+        private readonly IDatabaseInspector _databaseInspector;
+
+        private TemplateData _data;
+
+        /// <summary>Initializes a new instance of the <see cref="TemplateHost"/> class.</summary>
+        /// <param name="applicationServices">The application services.</param>
+        /// <param name="databaseInspector">The database inspector.</param>
+        public TemplateHost(IApplicationServices applicationServices, IDatabaseInspector databaseInspector)
+        {
+            Services = applicationServices;
+            _databaseInspector = databaseInspector;
+        }
+
+        /// <summary>Gets or sets Data.</summary>
+        public TemplateData Data
+        {
+            get
+            {
+                if (_data == null)
+                {
+                    _data = Services.Resolve<TemplateData>();
+                }
+                return _data;
+            }
+            set { _data = value; }
+        }
+
+        /// <summary>Gets MachineName.</summary>
+        public string MachineName
+        {
+            get { return Environment.MachineName; }
+        }
+
+        /// <summary>Gets Model.</summary>
+        public DbModelInstance Model
+        {
+            get
+            {
+                if (_databaseInspector.DbSchema == null)
+                {
+                    _databaseInspector.LoadDatabaseDetails();
+                }
+
+                return _databaseInspector.DbSchema;
+            }
+        }
+
+        /// <summary>Gets Services.</summary>
+        public IApplicationServices Services { get; private set; }
+
+        /// <summary>Gets UserName.</summary>
+        public string UserName
+        {
+            get { return Environment.UserName; }
+        }
+
+        // to do - helper functions for changing names too code friendly etc
+
+        /// <summary>The date.</summary>
+        /// <param name="format">The format.</param>
+        /// <returns>The date.</returns>
+        public string Date(string format)
+        {
+            return DateTime.Now.ToString(format);
+        }
+
+        /// <summary>The to camel case.</summary>
+        /// <param name="text">The text.</param>
+        /// <returns>The to camel case.</returns>
+        public string ToCamelCase(string text)
+        {
+            if (text == null)
+            {
+                return string.Empty;
+            }
+
+            StringBuilder sb = new StringBuilder();
+            text = ToPascalCase(text);
+
+            for (int i = 0; i < text.Length; i++)
+            {
+                if (Char.IsUpper(text, i))
+                {
+                    sb.Append(Char.ToLower(text[i]));
+                }
+                else
+                {
+                    // allows for names that start with an acronym, e.g. "ABCCode" -> "abcCode"
+                    if (i > 1)
+                    {
+                        i--; // reverse one
+                        sb.Remove(i, 1); // drop last lower cased char
+                    }
+
+                    sb.Append(text.Substring(i));
+                    break;
+                }
+            }
+
+            return sb.ToString();
+        }
+
+        /// <summary>The to pascal case.</summary>
+        /// <param name="text">The text.</param>
+        /// <returns>The to pascal case.</returns>
+        public string ToPascalCase(string text)
+        {
+            if (text == null)
+            {
+                return string.Empty;
+            }
+
+            if (text.Contains(" ") || text.Contains("_"))
+            {
+                text = text.Replace("_", " ");
+                text = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(text);
+                text = text.Replace(" ", string.Empty);
+            }
+            else if (text.Length > 1)
+            {
+                text = char.ToUpper(text[0]) + text.Substring(1);
+            }
+
+            return text;
+        }
+
+        /// <summary>The dispose.</summary>
+        public void Dispose()
+        {
+            if (Data != null)
+            {
+                Data.Dispose();
+            }
+        }
+    }
+}
\ No newline at end of file
Added +202 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateModel.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateModel.cs
new file mode 100644
index 0000000..b1a1324
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateModel.cs
@@ -0,0 +1,202 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Reflection;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Template;
+
+namespace MiniSqlQuery.PlugIns.TemplateViewer
+{
+    /// <summary>The template model.</summary>
+    public class TemplateModel
+    {
+        /// <summary>The extension.</summary>
+        public const string Extension = "extension";
+
+        /// <summary>The _formatter.</summary>
+        private readonly ITextFormatter _formatter;
+
+        /// <summary>The _services.</summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>Initializes a new instance of the <see cref="TemplateModel"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="formatter">The formatter.</param>
+        public TemplateModel(IApplicationServices services, ITextFormatter formatter)
+        {
+            _services = services;
+            _formatter = formatter;
+        }
+
+        /// <summary>The get value for parameter.</summary>
+        /// <param name="parameter">The parameter.</param>
+        public delegate string GetValueForParameter(string parameter);
+
+        /// <summary>The create nodes.</summary>
+        /// <returns></returns>
+        public TreeNode[] CreateNodes()
+        {
+            string path = GetTemplatePath();
+            return CreateNodes(path, GetFilesForFolder(path));
+        }
+
+        /// <summary>The create nodes.</summary>
+        /// <param name="rootPath">The root path.</param>
+        /// <param name="files">The files.</param>
+        /// <returns></returns>
+        public TreeNode[] CreateNodes(string rootPath, string[] files)
+        {
+            List<TreeNode> nodes = new List<TreeNode>();
+
+            foreach (string file in files)
+            {
+                if (file.StartsWith(rootPath))
+                {
+                    FileInfo fi = new FileInfo(file);
+
+                    TreeNode node = new TreeNode(Path.GetFileNameWithoutExtension(fi.FullName));
+                    node.ImageKey = "script_code";
+                    node.SelectedImageKey = "script_code";
+                    node.Tag = fi; // store file info on tag
+                    node.ToolTipText = fi.FullName;
+
+                    nodes.Add(node);
+                }
+            }
+
+            return nodes.ToArray();
+        }
+
+        /// <summary>The get files for folder.</summary>
+        /// <param name="path">The path.</param>
+        /// <returns></returns>
+        public string[] GetFilesForFolder(string path)
+        {
+            return Directory.GetFiles(path, "*.mt", SearchOption.TopDirectoryOnly);
+        }
+
+        /// <summary>The get template path.</summary>
+        /// <returns>The get template path.</returns>
+        public string GetTemplatePath()
+        {
+            string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
+            path = Path.Combine(path, TemplateResources.TemplatesDirectoryName);
+
+            return path;
+        }
+
+        /// <summary>The infer extension from filename.</summary>
+        /// <param name="filename">The filename.</param>
+        /// <param name="items">The items.</param>
+        /// <returns>The infer extension from filename.</returns>
+        public string InferExtensionFromFilename(string filename, Dictionary<string, object> items)
+        {
+            string ext = Path.GetExtension(filename);
+            string templateFilename = Path.GetFileNameWithoutExtension(filename);
+            if (ext.ToLower() == ".mt" && templateFilename.Contains("."))
+            {
+                return Path.GetExtension(templateFilename).Substring(1);
+            }
+
+            // default
+            return "sql";
+        }
+
+        /// <summary>The pre process template.</summary>
+        /// <param name="lines">The lines.</param>
+        /// <param name="getValueForParameter">The get value for parameter.</param>
+        /// <param name="items">The items.</param>
+        /// <returns>The pre process template.</returns>
+        public string PreProcessTemplate(
+            string[] lines,
+            GetValueForParameter getValueForParameter,
+            Dictionary<string, object> items)
+        {
+            int i = 0;
+            for (; i < lines.Length; i++)
+            {
+                string line = lines[i];
+                if (line.StartsWith("#@"))
+                {
+                    // process cmd
+                    if (line.StartsWith("#@get ", StringComparison.CurrentCultureIgnoreCase))
+                    {
+                        string name = line.Substring("#@get ".Length);
+                        string val = getValueForParameter(name);
+                        items.Add(name, val);
+                    }
+                    else if (line.StartsWith("#@set extension ", StringComparison.CurrentCultureIgnoreCase))
+                    {
+                        items[Extension] = line.Substring("#@set extension ".Length);
+                    }
+                    else if (line.StartsWith("#@import-plugin ", StringComparison.CurrentCultureIgnoreCase))
+                    {
+                        string pluginKeyName = line.Substring("#@import-plugin ".Length);
+                        items[pluginKeyName.Replace(".", "_")] = _services.Resolve<IPlugIn>(pluginKeyName);
+                    }
+                }
+                else
+                {
+                    break;
+                }
+            }
+
+            string text = string.Join(Environment.NewLine, lines, i, lines.Length - i);
+
+            return text;
+        }
+
+        /// <summary>The process template.</summary>
+        /// <param name="text">The text.</param>
+        /// <param name="items">The items.</param>
+        /// <returns></returns>
+        public TemplateResult ProcessTemplate(string text, Dictionary<string, object> items)
+        {
+            if (items == null)
+            {
+                items = new Dictionary<string, object>();
+            }
+
+            TemplateResult result;
+
+            using (TemplateHost host = _services.Resolve<TemplateHost>())
+            {
+                items.Add("Host", host);
+                items.Add("Data", host.Data);
+
+                result = new TemplateResult();
+                result.Text = _formatter.Format(text, items);
+                result.Extension = "sql";
+                if (items.ContainsKey(Extension))
+                {
+                    result.Extension = (string)items[Extension];
+                }
+            }
+
+            return result;
+        }
+
+        /// <summary>The process template file.</summary>
+        /// <param name="filename">The filename.</param>
+        /// <param name="getValueForParameter">The get value for parameter.</param>
+        /// <returns></returns>
+        public TemplateResult ProcessTemplateFile(string filename, GetValueForParameter getValueForParameter)
+        {
+            Dictionary<string, object> items = new Dictionary<string, object>();
+            string[] lines = File.ReadAllLines(filename);
+
+            items[Extension] = InferExtensionFromFilename(filename, items);
+
+            string text = PreProcessTemplate(lines, getValueForParameter, items);
+            return ProcessTemplate(text, items);
+        }
+    }
+}
\ No newline at end of file
Added +82 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateResources.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateResources.Designer.cs
new file mode 100644
index 0000000..8f33b18
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateResources.Designer.cs
@@ -0,0 +1,82 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace MiniSqlQuery.PlugIns.TemplateViewer {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class TemplateResources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal TemplateResources() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </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("MiniSqlQuery.PlugIns.TemplateViewer.TemplateResources", typeof(TemplateResources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to {\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch37\stshfhich37\stshfbi37\deflang3081\deflangfe3081\themelang3081\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times New Roman};}
+        ///{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial{\*\falt Arial};}{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 0505010201070602 [rest of string was truncated]&quot;;.
+        /// </summary>
+        internal static string TemplateHelp {
+            get {
+                return ResourceManager.GetString("TemplateHelp", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Templates.
+        /// </summary>
+        internal static string TemplatesDirectoryName {
+            get {
+                return ResourceManager.GetString("TemplatesDirectoryName", resourceCulture);
+            }
+        }
+    }
+}
Added +127 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateResources.resx b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateResources.resx
new file mode 100644
index 0000000..55c706a
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateResources.resx
@@ -0,0 +1,127 @@
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="TemplateHelp" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>templatehelp.rtf;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="TemplatesDirectoryName" xml:space="preserve">
+    <value>Templates</value>
+  </data>
+</root>
\ No newline at end of file
Added +67 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateResult.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateResult.cs
new file mode 100644
index 0000000..bd525b6
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateResult.cs
@@ -0,0 +1,67 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.PlugIns.TemplateViewer
+{
+    /// <summary>The template result.</summary>
+    public class TemplateResult
+    {
+        /// <summary>Gets or sets Extension.</summary>
+        public string Extension { get; set; }
+
+        /// <summary>
+        /// Converts the <see cref="Extension"/> to an Editor "Syntax Name" such as "C#".
+        /// </summary>
+        public string SyntaxName
+        {
+            get
+            {
+                string ext = Extension ?? string.Empty;
+                switch (ext.ToLower())
+                {
+                    case "bat":
+                    case "boo":
+                    case "coco":
+                    case "java":
+                    case "patch":
+                    case "php":
+                    case "tex":
+                    case "xml":
+                    case "sql":
+                    case "txt":
+                        return Extension;
+
+                    case "asp":
+                    case "aspx":
+                    case "htm":
+                    case "html":
+                        return "ASP/XHTML";
+
+                    case "vb":
+                        return "VBNET";
+
+                    case "js":
+                        return "JavaScript";
+
+                    case "cpp":
+                    case "cxx":
+                        return "C++.NET";
+
+                    case "cs":
+                        return "C#";
+
+                    default:
+                        return string.Empty;
+                }
+            }
+        }
+
+        /// <summary>Gets or sets Text.</summary>
+        public string Text { get; set; }
+    }
+}
\ No newline at end of file
Added +35 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateViewerLoader.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateViewerLoader.cs
new file mode 100644
index 0000000..8d56921
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateViewerLoader.cs
@@ -0,0 +1,35 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core;
+using MiniSqlQuery.PlugIns.TemplateViewer.Commands;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.PlugIns.TemplateViewer
+{
+    /// <summary>The template viewer loader.</summary>
+    public class TemplateViewerLoader : PluginLoaderBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="TemplateViewerLoader"/> class.</summary>
+        public TemplateViewerLoader()
+            : base("Template Viewer", "A Mini SQL Query Plugin for displaying template SQL items.", 50)
+        {
+        }
+
+        /// <summary>Iinitialize the plug in.</summary>
+        public override void InitializePlugIn()
+        {
+            Services.RegisterEditor<TemplateEditorForm>(new FileEditorDescriptor("Template Editor", "mt-editor", "mt"));
+            Services.RegisterComponent<TemplateHost>("TemplateHost");
+            Services.RegisterComponent<TemplateData>("TemplateData");
+
+            Services.RegisterComponent<TemplateViewForm>("TemplateViewForm");
+            Services.HostWindow.AddPluginCommand<RunTemplateCommand>();
+            Services.HostWindow.ShowToolWindow(Services.Resolve<TemplateViewForm>(), DockState.DockLeft);
+        }
+    }
+}
\ No newline at end of file
Added +152 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateViewForm.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateViewForm.cs
new file mode 100644
index 0000000..a2f45a8
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateViewForm.cs
@@ -0,0 +1,152 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.IO;
+using System.Windows.Forms;
+using Microsoft.VisualBasic;
+using MiniSqlQuery.Core;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.PlugIns.TemplateViewer
+{
+    /// <summary>The template view form.</summary>
+    public partial class TemplateViewForm : DockContent
+    {
+        /// <summary>The _model.</summary>
+        private readonly TemplateModel _model;
+
+        /// <summary>The _services.</summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>The _selected file.</summary>
+        private FileInfo _selectedFile;
+
+        /// <summary>Initializes a new instance of the <see cref="TemplateViewForm"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="model">The model.</param>
+        public TemplateViewForm(IApplicationServices services, TemplateModel model)
+        {
+            InitializeComponent();
+            _services = services;
+            _model = model;
+        }
+
+        /// <summary>The get value.</summary>
+        /// <param name="name">The name.</param>
+        /// <returns>The get value.</returns>
+        private string GetValue(string name)
+        {
+            string val = Interaction.InputBox(string.Format("Value for '{0}'", name), "Supply a Value", name, -1, -1);
+            return val;
+        }
+
+        /// <summary>The populate tree.</summary>
+        private void PopulateTree()
+        {
+            tvTemplates.Nodes[0].Nodes.Clear();
+            tvTemplates.Nodes[0].Nodes.AddRange(_model.CreateNodes());
+            tvTemplates.Nodes[0].Expand();
+        }
+
+        /// <summary>The run template.</summary>
+        /// <param name="fi">The fi.</param>
+        private void RunTemplate(FileInfo fi)
+        {
+            TemplateResult templateResult = _model.ProcessTemplateFile(fi.FullName, GetValue);
+
+            // display in new window
+            IFileEditorResolver resolver = _services.Resolve<IFileEditorResolver>();
+            IEditor editor = _services.Resolve<IEditor>(resolver.ResolveEditorNameByExtension(templateResult.Extension));
+            editor.AllText = templateResult.Text;
+            editor.SetSyntax(templateResult.SyntaxName);
+            _services.HostWindow.DisplayDockedForm(editor as DockContent);
+        }
+
+        /// <summary>The template view form_ load.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void TemplateViewForm_Load(object sender, EventArgs e)
+        {
+            PopulateTree();
+            templateFileWatcher.Path = _model.GetTemplatePath();
+        }
+
+        /// <summary>The template file watcher_ changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void templateFileWatcher_Changed(object sender, FileSystemEventArgs e)
+        {
+            PopulateTree();
+        }
+
+        /// <summary>The template file watcher_ renamed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void templateFileWatcher_Renamed(object sender, RenamedEventArgs e)
+        {
+            // todo - scan and modify tree
+            PopulateTree();
+        }
+
+        /// <summary>The tool strip menu item edit_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void toolStripMenuItemEdit_Click(object sender, EventArgs e)
+        {
+            if (_selectedFile != null)
+            {
+                IFileEditorResolver resolver = _services.Resolve<IFileEditorResolver>();
+                var editor = resolver.ResolveEditorInstance(_selectedFile.FullName);
+                editor.FileName = _selectedFile.FullName;
+                editor.LoadFile();
+                _services.HostWindow.DisplayDockedForm(editor as DockContent);
+            }
+        }
+
+        /// <summary>The tool strip menu item run_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void toolStripMenuItemRun_Click(object sender, EventArgs e)
+        {
+            if (_selectedFile != null)
+            {
+                RunTemplate(_selectedFile);
+            }
+        }
+
+        /// <summary>The tv templates_ node mouse click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void tvTemplates_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
+        {
+            FileInfo fi = null;
+            if (e.Button == MouseButtons.Right && e.Node != null && e.Node.Tag is FileInfo)
+            {
+                fi = e.Node.Tag as FileInfo;
+            }
+
+            _selectedFile = fi;
+            treeMenuStrip.Enabled = _selectedFile != null;
+        }
+
+        /// <summary>The tv templates_ node mouse double click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void tvTemplates_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
+        {
+            if (e != null && e.Node != null)
+            {
+                FileInfo fi = e.Node.Tag as FileInfo;
+                if (fi != null)
+                {
+                    RunTemplate(fi);
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
Added +134 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateViewForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateViewForm.Designer.cs
new file mode 100644
index 0000000..98015de
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateViewForm.Designer.cs
@@ -0,0 +1,134 @@
+namespace MiniSqlQuery.PlugIns.TemplateViewer
+{
+	partial class TemplateViewForm
+	{
+		/// <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.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Templates");
+			System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TemplateViewForm));
+			this.tvTemplates = new System.Windows.Forms.TreeView();
+			this.treeMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
+			this.toolStripMenuItemRun = new System.Windows.Forms.ToolStripMenuItem();
+			this.toolStripMenuItemEdit = new System.Windows.Forms.ToolStripMenuItem();
+			this.imageList = new System.Windows.Forms.ImageList(this.components);
+			this.templateFileWatcher = new System.IO.FileSystemWatcher();
+			this.treeMenuStrip.SuspendLayout();
+			((System.ComponentModel.ISupportInitialize)(this.templateFileWatcher)).BeginInit();
+			this.SuspendLayout();
+			// 
+			// tvTemplates
+			// 
+			this.tvTemplates.ContextMenuStrip = this.treeMenuStrip;
+			this.tvTemplates.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.tvTemplates.HideSelection = false;
+			this.tvTemplates.ImageKey = "folder_page";
+			this.tvTemplates.ImageList = this.imageList;
+			this.tvTemplates.Indent = 15;
+			this.tvTemplates.Location = new System.Drawing.Point(0, 0);
+			this.tvTemplates.Name = "tvTemplates";
+			treeNode1.Name = "templates";
+			treeNode1.Text = "Templates";
+			this.tvTemplates.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
+            treeNode1});
+			this.tvTemplates.SelectedImageIndex = 0;
+			this.tvTemplates.ShowRootLines = false;
+			this.tvTemplates.Size = new System.Drawing.Size(292, 266);
+			this.tvTemplates.TabIndex = 0;
+			this.tvTemplates.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.tvTemplates_NodeMouseDoubleClick);
+			this.tvTemplates.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.tvTemplates_NodeMouseClick);
+			// 
+			// treeMenuStrip
+			// 
+			this.treeMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripMenuItemRun,
+            this.toolStripMenuItemEdit});
+			this.treeMenuStrip.Name = "treeMenuStrip";
+			this.treeMenuStrip.Size = new System.Drawing.Size(148, 48);
+			// 
+			// toolStripMenuItemRun
+			// 
+			this.toolStripMenuItemRun.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+			this.toolStripMenuItemRun.Name = "toolStripMenuItemRun";
+			this.toolStripMenuItemRun.Size = new System.Drawing.Size(147, 22);
+			this.toolStripMenuItemRun.Text = "Run";
+			this.toolStripMenuItemRun.Click += new System.EventHandler(this.toolStripMenuItemRun_Click);
+			// 
+			// toolStripMenuItemEdit
+			// 
+			this.toolStripMenuItemEdit.Name = "toolStripMenuItemEdit";
+			this.toolStripMenuItemEdit.Size = new System.Drawing.Size(147, 22);
+			this.toolStripMenuItemEdit.Text = "Edit Template";
+			this.toolStripMenuItemEdit.Click += new System.EventHandler(this.toolStripMenuItemEdit_Click);
+			// 
+			// imageList
+			// 
+			this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
+			this.imageList.TransparentColor = System.Drawing.Color.Transparent;
+			this.imageList.Images.SetKeyName(0, "folder_page");
+			this.imageList.Images.SetKeyName(1, "script");
+			this.imageList.Images.SetKeyName(2, "script_code");
+			// 
+			// templateFileWatcher
+			// 
+			this.templateFileWatcher.EnableRaisingEvents = true;
+			this.templateFileWatcher.Filter = "*.mt";
+			this.templateFileWatcher.NotifyFilter = ((System.IO.NotifyFilters)((System.IO.NotifyFilters.FileName | System.IO.NotifyFilters.LastWrite)));
+			this.templateFileWatcher.SynchronizingObject = this;
+			this.templateFileWatcher.Renamed += new System.IO.RenamedEventHandler(this.templateFileWatcher_Renamed);
+			this.templateFileWatcher.Deleted += new System.IO.FileSystemEventHandler(this.templateFileWatcher_Changed);
+			this.templateFileWatcher.Created += new System.IO.FileSystemEventHandler(this.templateFileWatcher_Changed);
+			this.templateFileWatcher.Changed += new System.IO.FileSystemEventHandler(this.templateFileWatcher_Changed);
+			// 
+			// TemplateViewForm
+			// 
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.ClientSize = new System.Drawing.Size(292, 266);
+			this.Controls.Add(this.tvTemplates);
+			this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+			this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+			this.Name = "TemplateViewForm";
+			this.TabText = "Templates";
+			this.Text = "Templates";
+			this.Load += new System.EventHandler(this.TemplateViewForm_Load);
+			this.treeMenuStrip.ResumeLayout(false);
+			((System.ComponentModel.ISupportInitialize)(this.templateFileWatcher)).EndInit();
+			this.ResumeLayout(false);
+
+		}
+
+		#endregion
+
+		private System.Windows.Forms.TreeView tvTemplates;
+		private System.Windows.Forms.ImageList imageList;
+		private System.Windows.Forms.ContextMenuStrip treeMenuStrip;
+		private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemRun;
+		private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemEdit;
+		private System.IO.FileSystemWatcher templateFileWatcher;
+	}
+}
\ No newline at end of file
Added +212 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateViewForm.resx b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateViewForm.resx
new file mode 100644
index 0000000..2e7b765
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TemplateViewer/TemplateViewForm.resx
@@ -0,0 +1,212 @@
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="treeMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>120, 17</value>
+  </metadata>
+  <metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <data name="imageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD8
+        CgAAAk1TRnQBSQFMAgEBAwEAAQQBAAEEAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+        AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
+        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/wEAAUwMUgFMAgABoQGn
+        BIYFiwGRAYYBoQIAAaEBpwSGBYsBkQGGAaESAAFSAcMHmgN6AcMBUgIAAccBtAG7AQkB8AHxAfMB9AL/
+        ARkB9AG1AccCAAHHAbQBuwEJAfAB8QHzAfQC/wEZAfQBtQHHEgABUgH2BJoEegJZAcMBUgIAAacBtQj/
+        AbUBGQG1AacCAAGnAbUI/wG1ARkBtQGnEgABUgH2BZoEegFZAcMBUgIAAccBiwm0ARkBCQGnAgABxwGL
+        CbQBGQEJAacSAAFSAfYFmgWZAfABUgKtAaEBpwG1AfQDCQQZAfQBCQGnAgABoQGnAbUB9AMJBBkB9AEJ
+        AacSAAFSAv8D9gaaAcMBUgH0Ac8BAAGhAbQB/wgZAfEBrQMAAaEDtAEZArQBCQMZAfEBrRIAAVIB9gF5
+        AXQBUgGaAfQG/wFSAfQBtAEAAaEBtAH/CBkB8wGtAwABoQGzArQBGQO0AQkCGQHzAa0SAAFSAfYCmgF6
+        CVIB9AG0AQABoQGzAf8IGQH/AbMBoQEAAccBtAHVAbQBCQEZAQkBtAHVAbQB3AEZAf8BswGhEQABUgH2
+        A5oBGgG0Af8GGQH/AbQCAAGzAf8IGQH/AbQBoQEAAbQB2wG0BBkBCQG0AdsBtAEZAf8BtAGhEQABUgX/
+        AQkB/wYZAfQBtAIAAa0B8wgZAf8BtAGhAQABxwHVAdsBtAIZAQkB1QHbAdUB3AEZAf8BtAGhEQABdAV5
+        AQkB/wYZAfQBtAIAAa0BGQH0BxkB/wG0AbMBxwEAAaEBswHbAdUBGQLbAdUDGQH/AbQBswHHFgABCQH/
+        BBkB3QEJAfQBtAIAAa0BCQH/BxkB/wG0ARkBswIAAa0BtAHVARkC2wQZAf8BtAEZAbMWAAEJAf8EGQHz
+        AfQB/wG0AgABrQEJAf8EGQP0Af8BtAH/AbsCAAGtAQkB/wQZA/QB/wG0Af8BuxYAAQkB9AMZAQkB/wEZ
+        AQkBpwIAAa0BCQH/BPQF/wEZAbQCAAGtAQkB/wT0Bf8BGQG0FgABCQH/BfQB3AGtAaECAAGnAdwF/wH0
+        AxkBCQG0AacCAAGnAdwF/wH0AxkBCQG0AacWAAQJA7QBpwGhAwABxwGzAdwB2wK6ArQCswKtAacBoQIA
+        AccBswHcAdsCugK0ArMCrQGnAaEQAAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEBAQABAQUAAYAXAAP/
+        AgABAwEAAQMBAAEDAwABAwEAAQMBAAEDAwABAwEAAQMBAAEDAwABAwEAAQMBAAEDBQABAwEAAQMEAAGA
+        AQMBgAEDBAABgAEDAYABAwQAAYABAQEAAQEEAAHAAQEBAAEBBAABwAEBAQABAQQAAcABAAGAAwAB/AEA
+        AcABAAHAAwAB/AEAAcABAAHAAwAB/AEAAcABAAHAAwAB/AEAAcABAAHAAwAB/AEBAcABAAHAAwAL
+</value>
+  </data>
+  <metadata name="templateFileWatcher.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>250, 17</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.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>
+        AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAQAEAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAA////ACyG2ADFdEQAguH3AOzBkwDJ2NYAQNHyANCebQCGwcYA/+LLAFWq4gDM8vsArOH2ADS0
+        2QDz0a8AcLznAF7Z9ADv8ugAkcnrAMyHWAA2mtoA6Pb7AJDO1wCY4fYAXsLhAHDT8gD/6tsA/vbwAMyW
+        XwD32bwAT9XzAJPX4wDa8/gAwur4AOq7iADz/P4AN6baAHHe9gBkvOkA+u/kAOS6kQB61/MAjMjPADOO
+        2QCO5PgA6sOdAPXp3QDKf1MATaXgAPnexABn2/UAidz1AP3m1ACf5fQAet/3AJHe9QCT2+kA/fPpAJPS
+        3ADmv5YAgNn0AJTm+AA1lNoA9dO0APrgygCa5vcAzoFWADWr2gD4/f8AbNz2AMqEUgA2odoA/vz7APrz
+        7wCJ4/gAn+D1APv48wD85NAAdNXzAIXa9ADv+v4A+uLEANzw+gA1r9oA+vLnAP/n1wD68+sA/OLNAJrk
+        9ADLhVUAd972AIbi9wD++fMA/vXtAPv27wBb2PQA/N7FAJHl+ACV4PYA/f79AP/l0gD74McA+tzCAH/h
+        9wCO3vUAk9z0ADaz2gDRoGwA//fyAPb8/gDy+v0AYMPiAPvjywD217sAlN71AMyDVQAtiNgATdTzAOS7
+        kwD98ucA/+nZAP3n1gD85dIAneX1AP3+/wD/59UAyvL7AIvj+ADMhlYA//38AP307gD638gAkt/2AMqA
+        VADKg1MANqraAPb9/wD1/P8A//fwAP738QD+8+gA5b6WAPzy6AD95dEA++LMAJPl+ACb5vYALYfYAMyH
+        VwD///4A/v//AP7+/wD+/v0AX8PiAP3+/gD+/fwA5LuRAPf8/gDku5IA//fxAPH6/QD98+oA+u/jAP7n
+        1QD8480A/OTRAPncwgD53cQAj+T4AJDl+ACS5fgAlOX4AJ7l9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAnWUdXV1dXV1dXWUdQIAACxTGGOFaTRQPSpPGiI/AAA/UZKpSwQ3JjNgdgd/PwAAFW8+q6qA
+        XGhbRhEfDD8AAEhurJKSYjkgOxcrCQY/AzAll0WJiiRZQpN8rTYhP4OGRBYQCzETSmSCgpxJmT8SQ4ih
+        c2onPz8/Pz8/Pz8/X3RUni04TA1HoHkbeVZlCqBaa5uXmH2XKYt+ejVOcWeNgQ4ZcHBwmp1tpKSQQTIe
+        eJUAAAAAAACfjHumkahyDygUAAAAAAAAnxxYpYQeL1dNhwAAAAAAAHdeYWanQF1SBQAAAAAAAACOljqi
+        j6NVIwAAAAAAAAAALjyfn2wIHQAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAA/AAAAPwAAAD8AQAA/AMAAPwHAAA=
+</value>
+  </data>
+</root>
\ No newline at end of file
Added +40 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TextGenerator/Commands/RunTextGeneratorCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TextGenerator/Commands/RunTextGeneratorCommand.cs
new file mode 100644
index 0000000..7b672a8
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TextGenerator/Commands/RunTextGeneratorCommand.cs
@@ -0,0 +1,40 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.PlugIns.TextGenerator.Commands
+{
+    public class RunTextGeneratorCommand : CommandBase
+    {
+        public RunTextGeneratorCommand()
+            : base("Run the (experimental) text to C# class generator")
+        {
+        }
+
+        public override void Execute()
+        {
+            var editor = ActiveFormAsEditor;
+
+            if (editor != null)
+            {
+                var text = editor.SelectedText;
+                if (string.IsNullOrEmpty(text))
+                {
+                    text = editor.AllText;
+                }
+
+                var textGeneratorService = new TextGeneratorService();
+                var generatedText = textGeneratorService.Process(text);
+
+                // update editor, just put in the code for now...
+                editor.InsertText(generatedText);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +29 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TextGenerator/TextGeneratorLoader.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TextGenerator/TextGeneratorLoader.cs
new file mode 100644
index 0000000..64291ea
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TextGenerator/TextGeneratorLoader.cs
@@ -0,0 +1,29 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core;
+using MiniSqlQuery.PlugIns.TextGenerator.Commands;
+
+namespace MiniSqlQuery.PlugIns.TextGenerator
+{
+    public class TextGeneratorLoader : PluginLoaderBase
+    {
+        public TextGeneratorLoader()
+            : base(
+                "Text Generator Tools",
+                "A Mini SQL Query Plugin for generating test from... text :-)",
+                21)
+        {
+        }
+
+        public override void InitializePlugIn()
+        {
+            IHostWindow hostWindow = Services.HostWindow;
+            hostWindow.AddPluginCommand<RunTextGeneratorCommand>();
+        }
+    }
+}
\ No newline at end of file
Added +66 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/TextGenerator/TextGeneratorService.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TextGenerator/TextGeneratorService.cs
new file mode 100644
index 0000000..634c234
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/TextGenerator/TextGeneratorService.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Globalization;
+using System.Text;
+
+namespace MiniSqlQuery.PlugIns.TextGenerator
+{
+    public class TextGeneratorService
+    {
+        private const string SpaceString = " ";
+
+        public string Process(string text)
+        {
+            if (string.IsNullOrEmpty(text))
+            {
+                return text;
+            }
+
+            // convert to a class, line 1 is name, rest are props
+
+            var lines = text.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
+
+            var sb = new StringBuilder();
+
+            // class name
+            sb.Append("public class ");
+            sb.AppendLine(ToPascalCase(lines[0]));
+            sb.AppendLine("{");
+
+            // properties
+            if (lines.Length > 1)
+            {
+                for (int i = 1; i < lines.Length; i++)
+                {
+                    string typeName = "string";
+                    var propertyName = ToPascalCase(lines[i]);
+
+                    // is it an "id"
+                    if (propertyName.EndsWith("id", StringComparison.CurrentCultureIgnoreCase))
+                    {
+                        typeName = "int";
+                    }
+
+                    sb.Append("public virtual ");
+                    sb.Append(typeName);
+                    sb.Append(" ");
+                    sb.Append(propertyName);
+                    sb.AppendLine(" { get; set; }");
+                }
+            }
+
+            sb.AppendLine("}");
+
+            return sb.ToString();
+        }
+
+        public string ToPascalCase(string text)
+        {
+            // if it has spaces, e.g "first name", or maybe its lower, e.g. "foo". Still allow for "MyID" etc
+            if (text.Contains(SpaceString) || !char.IsUpper(text[0]))
+            {
+                return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(text).Replace(SpaceString, string.Empty).Trim();
+            }
+            return text.Trim();
+        }
+    }
+}
\ No newline at end of file
Added +39 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/Commands/ViewTableFormCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/Commands/ViewTableFormCommand.cs
new file mode 100644
index 0000000..393a83a
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/Commands/ViewTableFormCommand.cs
@@ -0,0 +1,39 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.PlugIns.ViewTable.Commands
+{
+    /// <summary>The view table form command.</summary>
+    public class ViewTableFormCommand
+        : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="ViewTableFormCommand"/> class.</summary>
+        public ViewTableFormCommand()
+            : base("&View table...")
+        {
+            ShortcutKeys = Keys.Control | Keys.T;
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            IQueryEditor queryForm = HostWindow.Instance.ActiveMdiChild as IQueryEditor;
+            if (queryForm != null)
+            {
+                string tableName = queryForm.SelectedText;
+                IViewTable frm = Services.Resolve<IViewTable>();
+                frm.TableName = tableName;
+                HostWindow.DisplayDockedForm(frm as DockContent);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +37 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/Commands/ViewTableFromInspectorCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/Commands/ViewTableFromInspectorCommand.cs
new file mode 100644
index 0000000..80785c8
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/Commands/ViewTableFromInspectorCommand.cs
@@ -0,0 +1,37 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.PlugIns.ViewTable.Commands
+{
+    /// <summary>The view table from inspector command.</summary>
+    public class ViewTableFromInspectorCommand
+        : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="ViewTableFromInspectorCommand"/> class.</summary>
+        public ViewTableFromInspectorCommand()
+            : base("&View table data")
+        {
+            SmallImage = ImageResource.table_go;
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            string tableName = HostWindow.DatabaseInspector.RightClickedTableName;
+            if (tableName != null)
+            {
+                IViewTable frm = Services.Resolve<IViewTable>();
+                frm.TableName = tableName;
+                HostWindow.DisplayDockedForm(frm as DockContent);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/table.ico b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/table.ico
new file mode 100644
index 0000000..a6650d4
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/table.ico differ
Added +531 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/ViewTableForm.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/ViewTableForm.cs
new file mode 100644
index 0000000..7ccce01
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/ViewTableForm.cs
@@ -0,0 +1,531 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.Common;
+using System.Data.SqlClient;
+using System.Diagnostics;
+using System.IO;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.DbModel;
+using MiniSqlQuery.Properties;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.PlugIns.ViewTable
+{
+    /// <summary>The view table form.</summary>
+    public partial class ViewTableForm : DockContent, IViewTable
+    {
+        /// <summary>The _batch.</summary>
+        private readonly QueryBatch _batch;
+
+        /// <summary>The _services.</summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>The _settings.</summary>
+        private readonly IApplicationSettings _settings;
+
+        /// <summary>The _sync lock.</summary>
+        private readonly object _syncLock = new object();
+
+        /// <summary>The _db connection.</summary>
+        private DbConnection _dbConnection;
+
+        /// <summary>The _is busy.</summary>
+        private bool _isBusy;
+
+        /// <summary>The _meta data service.</summary>
+        private IDatabaseSchemaService _metaDataService;
+
+        /// <summary>The _status.</summary>
+        private string _status = string.Empty;
+
+        private int? _rowCount;
+
+        /// <summary>Stores the widths of the columns for this window.</summary>
+        private Dictionary<string, int> _columnSizes = new Dictionary<string, int>();
+
+        /// <summary>When tru the grid is being resized on fill, used to avoid overriting column width values.</summary>
+        private bool _resizingGrid;
+
+        /// <summary>Initializes a new instance of the <see cref="ViewTableForm"/> class.</summary>
+        public ViewTableForm()
+        {
+            InitializeComponent();
+        }
+
+        /// <summary>Initializes a new instance of the <see cref="ViewTableForm"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        public ViewTableForm(IApplicationServices services, IApplicationSettings settings)
+            : this()
+        {
+            _services = services;
+            _settings = settings;
+            _batch = new QueryBatch();
+            TableName = string.Empty;
+            Text = Resources.ViewData;
+
+            dataGridViewResult.DefaultCellStyle.NullValue = _settings.NullText;
+            dataGridViewResult.DataBindingComplete += DataGridViewResultDataBindingComplete;
+            dataGridViewResult.ColumnWidthChanged += OnColumnWidthChanged;
+            _services.Settings.DatabaseConnectionReset += SettingsDatabaseConnectionReset;
+            _services.SystemMessagePosted += ServicesSystemMessagePosted;
+        }
+
+        /// <summary>Gets a value indicating whether AutoReload.</summary>
+        public bool AutoReload
+        {
+            get { return chkAutoReload.Checked; }
+        }
+
+        /// <summary>Gets Batch.</summary>
+        public QueryBatch Batch
+        {
+            get { return _batch; }
+        }
+
+        /// <summary>Gets CursorColumn.</summary>
+        public int CursorColumn
+        {
+            get { return dataGridViewResult.SelectedCells.Count > 0 ? dataGridViewResult.SelectedCells[0].ColumnIndex : 0; }
+        }
+
+        /// <summary>Gets CursorLine.</summary>
+        public int CursorLine
+        {
+            get { return (dataGridViewResult.CurrentRow != null) ? dataGridViewResult.CurrentRow.Index : 0; }
+        }
+
+        /// <summary>Gets CursorOffset.</summary>
+        public int CursorOffset
+        {
+            get { return CursorLine; }
+        }
+
+        /// <summary>Gets or sets a value indicating whether IsBusy.</summary>
+        public bool IsBusy
+        {
+            get { return _isBusy; }
+            set
+            {
+                lock (_syncLock)
+                {
+                    _isBusy = value;
+                }
+            }
+        }
+
+        /// <summary>Gets or sets TableName.</summary>
+        public string TableName
+        {
+            get { return cboTableName.Text; }
+            set { cboTableName.Text = value; }
+        }
+
+        /// <summary>Gets or sets Text.</summary>
+        public override string Text
+        {
+            get { return base.Text; }
+            set
+            {
+                base.Text = value;
+                TabText = Text;
+            }
+        }
+
+        /// <summary>Gets TotalLines.</summary>
+        public int TotalLines
+        {
+            get { return (dataGridViewResult.DataSource != null) ? dataGridViewResult.Rows.Count : 0; }
+        }
+
+        /// <summary>The set status.</summary>
+        /// <param name="text">The text.</param>
+        public void SetStatus(string text)
+        {
+            _status = text;
+            UpdateHostStatus();
+        }
+
+        public void SetRowCount(int? rows)
+        {
+            _rowCount = rows;
+            UpdateHostStatus();
+        }
+
+        /// <summary>The set cursor by location.</summary>
+        /// <param name="line">The line.</param>
+        /// <param name="column">The column.</param>
+        /// <returns>The set cursor by location.</returns>
+        public bool SetCursorByLocation(int line, int column)
+        {
+            if (line > 0 && line <= TotalLines)
+            {
+                dataGridViewResult.FirstDisplayedScrollingRowIndex = line;
+                dataGridViewResult.Refresh();
+                dataGridViewResult.Rows[line].Selected = true;
+                return true;
+            }
+
+            return false;
+        }
+
+        /// <summary>The set cursor by offset.</summary>
+        /// <param name="offset">The offset.</param>
+        /// <returns>The set cursor by offset.</returns>
+        public bool SetCursorByOffset(int offset)
+        {
+            return SetCursorByLocation(offset, 0);
+        }
+
+        /// <summary>The cancel task.</summary>
+        public void CancelTask()
+        {
+            // not supported (yet?)
+        }
+
+        /// <summary>The execute task.</summary>
+        public void ExecuteTask()
+        {
+            LoadTableData();
+        }
+
+        /// <summary>The update host status.</summary>
+        protected void UpdateHostStatus()
+        {
+            _services.HostWindow.SetStatus(this, _status);
+            _services.HostWindow.SetResultCount(this, _rowCount);
+        }
+
+        /// <summary>The data grid view result data binding complete.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void DataGridViewResultDataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
+        {
+            DataTable dt = dataGridViewResult.DataSource as DataTable;
+            if (dt == null)
+            {
+                return;
+            }
+
+            try
+            {
+                _resizingGrid = true;
+
+                // create a reasonable default max width for columns
+                int maxColWidth = Math.Max(dataGridViewResult.ClientSize.Width / 2, 100);
+
+                // Autosize the columns then change the widths, gleaned from SO - http://stackoverflow.com/a/1031871/276563
+                dataGridViewResult.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells);
+
+                string nullText = _settings.NullText;
+                string dateTimeFormat = _settings.DateTimeFormat;
+                for (int i = 0; i < dt.Columns.Count; i++)
+                {
+                    if (dt.Columns[i].DataType == typeof(DateTime))
+                    {
+                        DataGridViewCellStyle dateCellStyle = new DataGridViewCellStyle();
+                        dateCellStyle.NullValue = nullText;
+                        dateCellStyle.Format = dateTimeFormat;
+                        dataGridViewResult.Columns[i].DefaultCellStyle = dateCellStyle;
+                    }
+
+                    // sync column sizes:
+                    int columnWidth = dataGridViewResult.Columns[i].Width;
+                    dataGridViewResult.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
+
+                    string headerText = dataGridViewResult.Columns[i].HeaderText;
+                    if (!string.IsNullOrEmpty(headerText) && _columnSizes.ContainsKey(headerText))
+                    {
+                        // use the previous column size in case its been adjusted etc
+                        dataGridViewResult.Columns[i].Width = _columnSizes[headerText];
+                    }
+                    else
+                    {
+                        // reset to a the smaller of the 2 sizes, this is mainly for the bigger text columns that throw the size out
+                        dataGridViewResult.Columns[i].Width = Math.Min(columnWidth, maxColWidth);
+
+                        if (!string.IsNullOrEmpty(headerText))
+                        {
+                            _columnSizes[headerText] = dataGridViewResult.Columns[i].Width;
+                        }
+                    }
+                }
+            }
+            finally
+            {
+                _resizingGrid = false;
+            }
+        }
+
+        public void OnColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
+        {
+            if (_resizingGrid)
+            {
+                return;
+            }
+
+            string headerText = e.Column.HeaderText;
+            if (!string.IsNullOrEmpty(headerText))
+            {
+                _columnSizes[headerText] = e.Column.Width;
+            }
+        }
+
+        /// <summary>The get tables and views.</summary>
+        private void GetTablesAndViews()
+        {
+            if (_metaDataService == null)
+            {
+                _metaDataService = DatabaseMetaDataService.Create(_services.Settings.ConnectionDefinition.ProviderName);
+
+                DbModelInstance model = _metaDataService.GetDbObjectModel(_services.Settings.ConnectionDefinition.ConnectionString);
+                List<string> tableNames = new List<string>();
+                foreach (DbModelTable table in model.Tables)
+                {
+                    tableNames.Add(Utility.MakeSqlFriendly(table.FullName));
+                }
+
+                foreach (DbModelView view in model.Views)
+                {
+                    tableNames.Add(Utility.MakeSqlFriendly(view.FullName));
+                }
+
+                cboTableName.Items.AddRange(tableNames.ToArray());
+            }
+        }
+
+        /// <summary>The load table data.</summary>
+        private void LoadTableData()
+        {
+            if (_services.Settings.ConnectionDefinition == null)
+            {
+                _services.HostWindow.DisplaySimpleMessageBox(this, "Please select a connection.", "Select a Connection");
+                return;
+            }
+
+            GetTablesAndViews();
+
+            DbDataAdapter adapter = null;
+            DbCommand cmd = null;
+            DataTable dt = null;
+            Query query = new Query("SELECT * FROM " + Utility.MakeSqlFriendly(TableName));
+
+            if (string.IsNullOrEmpty(TableName))
+            {
+                Text = Resources.Table_none;
+                return;
+            }
+
+            try
+            {
+                IsBusy = true;
+                UseWaitCursor = true;
+                dataGridViewResult.DataSource = null;
+                Application.DoEvents();
+
+                if (_dbConnection == null)
+                {
+                    _dbConnection = _services.Settings.GetOpenConnection();
+                }
+
+                query.Result = new DataSet(TableName + " View");
+                _batch.Clear();
+                _batch.Add(query);
+
+                adapter = _services.Settings.ProviderFactory.CreateDataAdapter();
+                cmd = _dbConnection.CreateCommand();
+                cmd.CommandText = query.Sql;
+                cmd.CommandType = CommandType.Text;
+                SetCommandTimeout(cmd, _settings.CommandTimeout);
+                adapter.SelectCommand = cmd;
+                adapter.Fill(query.Result);
+                SetStatus(string.Format("Loaded table '{0}'", TableName));
+                Text = TableName;
+            }
+            catch (DbException dbExp)
+            {
+                // todo: improve!
+                _services.HostWindow.DisplaySimpleMessageBox(this, dbExp.Message, "View Table Error");
+                SetStatus(dbExp.Message);
+                Text = Resources.ViewDataError;
+            }
+            finally
+            {
+                if (adapter != null)
+                {
+                    adapter.Dispose();
+                }
+
+                if (cmd != null)
+                {
+                    cmd.Dispose();
+                }
+
+                UseWaitCursor = false;
+                IsBusy = false;
+            }
+
+            if (query.Result != null && query.Result.Tables.Count > 0)
+            {
+                dt = query.Result.Tables[0];
+                Text = Resources.Table_colon + TableName;
+            }
+
+            dataGridViewResult.DefaultCellStyle.NullValue = _settings.NullText;
+            dataGridViewResult.DataSource = dt;
+
+            if (dt != null)
+            {
+                SetRowCount(dt.Rows.Count);
+            }
+        }
+
+
+        /// <summary>
+        /// Sets the command timeout, currently only tested against MSSQL.
+        /// </summary>
+        /// <param name="cmd">The command.</param>
+        /// <param name="commandTimeout">The command timeout.</param>
+        private void SetCommandTimeout(IDbCommand cmd, int commandTimeout)
+        {
+            if (_services.Settings.ProviderFactory is SqlClientFactory)
+            {
+                if (cmd == null)
+                {
+                    throw new ArgumentNullException("cmd");
+                }
+                cmd.CommandTimeout = commandTimeout;
+            }
+            else
+            {
+                Trace.WriteLine("Command Timeout only supported by SQL Client (so far)");
+            }
+        }
+
+        /// <summary>The services system message posted.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void ServicesSystemMessagePosted(object sender, SystemMessageEventArgs e)
+        {
+            if (e.Message == SystemMessage.TableTruncated)
+            {
+                if (AutoReload && TableName.Equals(e.Data))
+                {
+                    LoadTableData();
+                }
+            }
+        }
+
+        /// <summary>The settings database connection reset.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void SettingsDatabaseConnectionReset(object sender, EventArgs e)
+        {
+            _dbConnection = null;
+        }
+
+        /// <summary>The update status.</summary>
+        /// <param name="msg">The msg.</param>
+        private void UpdateStatus(string msg)
+        {
+            _services.HostWindow.SetStatus(this, msg);
+            Application.DoEvents();
+        }
+
+        /// <summary>The view table form_ shown.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void ViewTableForm_Shown(object sender, EventArgs e)
+        {
+            LoadTableData();
+        }
+
+        /// <summary>The data grid view result_ data error.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void dataGridViewResult_DataError(object sender, DataGridViewDataErrorEventArgs e)
+        {
+            e.ThrowException = false;
+        }
+
+        /// <summary>The lnk export script_ link clicked.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void lnkExportScript_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+        {
+            DataTable dt = dataGridViewResult.DataSource as DataTable;
+
+            if (dt != null)
+            {
+                var stringWriter = new StringWriter();
+                var hostWindow = _services.HostWindow;
+                var dbModelTable = hostWindow.DatabaseInspector.DbSchema.FindTableOrView(TableName);
+                var sqlWriter = _services.Resolve<ISqlWriter>();
+                sqlWriter.IncludeComments = false;
+                sqlWriter.InsertLineBreaksBetweenColumns = false;
+                sqlWriter.IncludeReadOnlyColumnsInExport = _settings.IncludeReadOnlyColumnsInExport;
+
+                for (int i = 0; i < dt.Rows.Count; i++)
+                {
+                    DataRow dataRow = dt.Rows[i];
+
+                    foreach (var column in dbModelTable.Columns)
+                    {
+                        column.DbType.Value = dataRow[dt.Columns[column.Name]];
+                    }
+
+                    sqlWriter.WriteInsert(stringWriter, dbModelTable);
+                    if (_settings.EnableQueryBatching)
+                    {
+                        stringWriter.WriteLine("GO");
+                    }
+
+                    stringWriter.WriteLine();
+
+                    if (i % 10 == 0)
+                    {
+                        UpdateStatus(string.Format("Processing {0} of {1} rows", i + 1, dt.Rows.Count));
+                    }
+                }
+
+                UpdateStatus(string.Format("Processed {0} rows. Opening file...", dt.Rows.Count));
+
+                // HACK - need to clean up the values for now as the model is holding the last rows data  ;-)
+                // TODO - add a "deep clone" method to the table/columns
+                foreach (var column in dbModelTable.Columns)
+                {
+                    column.DbType.Value = null;
+                }
+
+                // create a new sql editor and push the sql into it
+                IEditor editor = _services.Resolve<IQueryEditor>();
+                editor.AllText = stringWriter.ToString();
+                hostWindow.DisplayDockedForm(editor as DockContent);
+
+                UpdateStatus(null);
+            }
+        }
+
+        /// <summary>The lnk refresh_ link clicked.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void lnkRefresh_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+        {
+            LoadTableData();
+        }
+
+        private void ViewTableForm_Activated(object sender, EventArgs e)
+        {
+            UpdateHostStatus();
+        }
+    }
+}
\ No newline at end of file
Added +171 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/ViewTableForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/ViewTableForm.Designer.cs
new file mode 100644
index 0000000..869349f
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/ViewTableForm.Designer.cs
@@ -0,0 +1,171 @@
+namespace MiniSqlQuery.PlugIns.ViewTable
+{
+	partial class ViewTableForm
+	{
+		/// <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.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+			System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ViewTableForm));
+			this.dataGridViewResult = new System.Windows.Forms.DataGridView();
+			this.groupBox1 = new System.Windows.Forms.GroupBox();
+			this.lnkExportScript = new System.Windows.Forms.LinkLabel();
+			this.chkAutoReload = new System.Windows.Forms.CheckBox();
+			this.lnkRefresh = new System.Windows.Forms.LinkLabel();
+			this.cboTableName = new System.Windows.Forms.ComboBox();
+			this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
+			this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
+			((System.ComponentModel.ISupportInitialize)(this.dataGridViewResult)).BeginInit();
+			this.groupBox1.SuspendLayout();
+			this.SuspendLayout();
+			// 
+			// dataGridViewResult
+			// 
+			this.dataGridViewResult.AllowUserToAddRows = false;
+			this.dataGridViewResult.AllowUserToDeleteRows = false;
+			this.dataGridViewResult.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+			dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+			dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window;
+			dataGridViewCellStyle1.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+			dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.ControlText;
+			dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+			dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+			dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
+			this.dataGridViewResult.DefaultCellStyle = dataGridViewCellStyle1;
+			this.dataGridViewResult.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.dataGridViewResult.Location = new System.Drawing.Point(4, 69);
+			this.dataGridViewResult.Name = "dataGridViewResult";
+			this.dataGridViewResult.ReadOnly = true;
+			this.dataGridViewResult.Size = new System.Drawing.Size(562, 294);
+			this.dataGridViewResult.TabIndex = 0;
+			this.dataGridViewResult.DataError += new System.Windows.Forms.DataGridViewDataErrorEventHandler(this.dataGridViewResult_DataError);
+			// 
+			// groupBox1
+			// 
+			this.groupBox1.Controls.Add(this.lnkExportScript);
+			this.groupBox1.Controls.Add(this.chkAutoReload);
+			this.groupBox1.Controls.Add(this.lnkRefresh);
+			this.groupBox1.Controls.Add(this.cboTableName);
+			this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top;
+			this.groupBox1.Location = new System.Drawing.Point(4, 4);
+			this.groupBox1.Name = "groupBox1";
+			this.groupBox1.Size = new System.Drawing.Size(562, 65);
+			this.groupBox1.TabIndex = 2;
+			this.groupBox1.TabStop = false;
+			this.groupBox1.Text = "Table Name";
+			// 
+			// lnkExportScript
+			// 
+			this.lnkExportScript.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+			this.lnkExportScript.AutoSize = true;
+			this.lnkExportScript.Location = new System.Drawing.Point(469, 29);
+			this.lnkExportScript.Name = "lnkExportScript";
+			this.lnkExportScript.Size = new System.Drawing.Size(76, 13);
+			this.lnkExportScript.TabIndex = 4;
+			this.lnkExportScript.TabStop = true;
+			this.lnkExportScript.Text = "Export Script...";
+			this.toolTip1.SetToolTip(this.lnkExportScript, "Takes the current data and creates a script of insert statements in a new window." +
+        "");
+			this.lnkExportScript.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkExportScript_LinkClicked);
+			// 
+			// chkAutoReload
+			// 
+			this.chkAutoReload.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+			this.chkAutoReload.AutoSize = true;
+			this.chkAutoReload.Checked = true;
+			this.chkAutoReload.CheckState = System.Windows.Forms.CheckState.Checked;
+			this.chkAutoReload.Location = new System.Drawing.Point(471, 45);
+			this.chkAutoReload.Name = "chkAutoReload";
+			this.chkAutoReload.Size = new System.Drawing.Size(85, 17);
+			this.chkAutoReload.TabIndex = 2;
+			this.chkAutoReload.Text = "Auto Reload";
+			this.toolTip1.SetToolTip(this.chkAutoReload, "Automatically reload the table when a \'Truncate\' action is performed.");
+			this.chkAutoReload.UseVisualStyleBackColor = true;
+			// 
+			// lnkRefresh
+			// 
+			this.lnkRefresh.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+			this.lnkRefresh.AutoSize = true;
+			this.lnkRefresh.Location = new System.Drawing.Point(469, 16);
+			this.lnkRefresh.Name = "lnkRefresh";
+			this.lnkRefresh.Size = new System.Drawing.Size(71, 13);
+			this.lnkRefresh.TabIndex = 1;
+			this.lnkRefresh.TabStop = true;
+			this.lnkRefresh.Text = "Reload Table";
+			this.toolTip1.SetToolTip(this.lnkRefresh, "Reload the selected table now.");
+			this.lnkRefresh.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkRefresh_LinkClicked);
+			// 
+			// cboTableName
+			// 
+			this.cboTableName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+			this.cboTableName.FormattingEnabled = true;
+			this.cboTableName.Location = new System.Drawing.Point(12, 19);
+			this.cboTableName.MaxDropDownItems = 20;
+			this.cboTableName.Name = "cboTableName";
+			this.cboTableName.Size = new System.Drawing.Size(454, 21);
+			this.cboTableName.TabIndex = 0;
+			// 
+			// contextMenuStrip
+			// 
+			this.contextMenuStrip.Name = "contextMenuStrip";
+			this.contextMenuStrip.Size = new System.Drawing.Size(61, 4);
+			// 
+			// ViewTableForm
+			// 
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.ClientSize = new System.Drawing.Size(570, 367);
+			this.Controls.Add(this.dataGridViewResult);
+			this.Controls.Add(this.groupBox1);
+			this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+			this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+			this.Name = "ViewTableForm";
+			this.Padding = new System.Windows.Forms.Padding(4);
+			this.TabText = "ViewTableForm";
+			this.Text = "ViewTableForm";
+			this.Activated += new System.EventHandler(this.ViewTableForm_Activated);
+			this.Shown += new System.EventHandler(this.ViewTableForm_Shown);
+			((System.ComponentModel.ISupportInitialize)(this.dataGridViewResult)).EndInit();
+			this.groupBox1.ResumeLayout(false);
+			this.groupBox1.PerformLayout();
+			this.ResumeLayout(false);
+
+		}
+
+		#endregion
+
+		private System.Windows.Forms.DataGridView dataGridViewResult;
+		private System.Windows.Forms.GroupBox groupBox1;
+		private System.Windows.Forms.ComboBox cboTableName;
+		private System.Windows.Forms.LinkLabel lnkRefresh;
+		private System.Windows.Forms.CheckBox chkAutoReload;
+		private System.Windows.Forms.ToolTip toolTip1;
+		private System.Windows.Forms.ContextMenuStrip contextMenuStrip;
+		private System.Windows.Forms.LinkLabel lnkExportScript;
+	}
+}
\ No newline at end of file
Added +155 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/ViewTableForm.resx b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/ViewTableForm.resx
new file mode 100644
index 0000000..e58af44
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/ViewTableForm.resx
@@ -0,0 +1,155 @@
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>132, 17</value>
+  </metadata>
+  <metadata name="contextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>229, 17</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.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>
+        AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAQAEAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAA////AMOEUgCc1aUA78GiAHa+fADao3oA8OLYAOvRvQCHyY4AzpNkAOSyjAD38esA6MiwANSb
+        bwCQzpgA6bqWAMWKXQB+w4QA9OriAN+qggD79/QA6MSpAOrNtQDXoHQAy45eAILGiQDRl2oA676dAIvL
+        kwCU0J0A4a6HAMeHVgB6wYAAmNOhAPbt5gDy594A5rWQAPr08ADdqH4A6sesAMmKWwDnt5QA8eXbAOrP
+        ugDqy7IA67yaAO3AnwDIjV8A3KV9AOnDpgDEhlQA1p5yAOCshADr078A6smuAPr28gD58+4A05luAOnG
+        qgDIilkAxoxfANGWaADqzrcA6My1AN2pgADqybAA6MiuAOjHrADpupgA+PLtAMaGVQDr0LsA4q+IAOy/
+        ngDltI8A9/DqAMaKXADLj18AzpJjAOvSvgDXoXUA6syzANmkegDpx60A6casAO7BoQDrvZsA47GMAPv2
+        8gD69vEA+fPvAPPn3gDx5NsA69C6AOnJsADpya4A6setAOe3kwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0Oj5PGSkgAgICAgICAAAAUUZMIxNcXQcHBwcHBxEAAFM5UAE2
+        AQEBYQEBAQc9AAAnW15ISEhICBcXFxcHTQAAFFs/AUgBAQEsWQEBBzAAAB8mLVJSUlI/REQNQwczAABY
+        WjcBQgEBAUQBAQErRwAASzg7VShUYF9EXw1AJDwAACoVMgEWAQEBRAEBAQxOAABFFTIyMjIyMjIyMjIV
+        CgAAVxUBAQEBAQEBAQEBFRsAAEoVAyIeDx0JGhIhBRUOAABWFRUVFRUVFRUVFRUVGAAAAAQvHC4QYiUL
+        STVBMQYAAAAAAAAAAAAAAAAAAAAAAP//AACAAwAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
+        AACAAQAAgAEAAIABAACAAQAAwAEAAP//AAA=
+</value>
+  </data>
+</root>
\ No newline at end of file
Added +37 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/ViewTableLoader.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/ViewTableLoader.cs
new file mode 100644
index 0000000..1fd6f8f
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ViewTable/ViewTableLoader.cs
@@ -0,0 +1,37 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core;
+using MiniSqlQuery.PlugIns.ViewTable.Commands;
+
+namespace MiniSqlQuery.PlugIns.ViewTable
+{
+    /// <summary>The view table loader.</summary>
+    public class ViewTableLoader : PluginLoaderBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="ViewTableLoader"/> class.</summary>
+        public ViewTableLoader()
+            : base("View Table Data", "A Mini SQL Query Plugin for viewing table data.", 50)
+        {
+        }
+
+        /// <summary>Iinitialize the plug in.</summary>
+        public override void InitializePlugIn()
+        {
+            Services.RegisterComponent<IViewTable, ViewTableForm>("ViewTableForm");
+
+            // the DB inspector may not be present
+            if (Services.HostWindow.DatabaseInspector != null)
+            {
+                Services.HostWindow.DatabaseInspector.TableMenu.Items.Insert(
+                    0, CommandControlBuilder.CreateToolStripMenuItem<ViewTableFromInspectorCommand>());
+            }
+
+            Services.HostWindow.AddPluginCommand<ViewTableFormCommand>();
+        }
+    }
+}
\ No newline at end of file
Added +19 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Properties/AssemblyInfo.cs b/minisqlquery-master/src/MiniSqlQuery/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..cf68406
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Properties/AssemblyInfo.cs
@@ -0,0 +1,19 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Reflection;
+
+[assembly: AssemblyTitle("Mini SQL Query")]
+[assembly: AssemblyDescription(
+    "Mini SQL Query by Paul Kohler is a minimalist SQL query tool for multiple providers (MSSQL, Oracle, OLEDB, MS Access files etc). " +
+    "The goal of the Mini SQL Query tool is to allow a developer or trouble-shooter to quickly diagnose issues or make changes to a database using a tool with a small footprint, that is fast and easy to use."
+    )]
+[assembly: AssemblyProduct("MiniSqlQuery")]
+[assembly: AssemblyVersion("1.19.11.03")]
+[assembly: AssemblyFileVersion("1.19.11.03")]
+
+// see also CommonAssemblyInfo.cs
Added +315 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Properties/Resources.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..56812a4
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Properties/Resources.Designer.cs
@@ -0,0 +1,315 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace MiniSqlQuery.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.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>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </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("MiniSqlQuery.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Could not populate with current connection string - .
+        /// </summary>
+        internal static string BindNewConnectionStringBuilder_Could_not_populate_with_current_connection_string___ {
+            get {
+                return ResourceManager.GetString("BindNewConnectionStringBuilder_Could_not_populate_with_current_connection_string_" +
+                        "__", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Mini SQL Query Change Log
+        ///=========================
+        ///
+        ///2019-11-03	ENH: Upgraded framework version from fsdfsd8 with other package updates and minor fixes.
+        ///2019-11-03	ENH: Upgraded framework version from 4.6.2 to 4.8 with other package updates and minor fixes.
+        ///2019-06-23	ENH: Upgraded framework version from 3.5 to 4.6.2 with other package updates.
+        ///2016-07-02	FIX: Fix for generic schema errors
+        ///2016-01-28	FIX: Fix for the print dialog never showing up properly
+        ///2015-01-23	ENH: Improved the View Table scre [rest of string was truncated]&quot;;.
+        /// </summary>
+        internal static string ChangeLog {
+            get {
+                return ResourceManager.GetString("ChangeLog", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Connected to &apos;{0}&apos; successfully..
+        /// </summary>
+        internal static string Connected_to_0_successfully {
+            get {
+                return ResourceManager.GetString("Connected_to_0_successfully", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Connection Failed.
+        /// </summary>
+        internal static string Connection_Failed {
+            get {
+                return ResourceManager.GetString("Connection_Failed", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Connection Successful.
+        /// </summary>
+        internal static string Connection_Successful {
+            get {
+                return ResourceManager.GetString("Connection_Successful", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Database.
+        /// </summary>
+        internal static string Database {
+            get {
+                return ResourceManager.GetString("Database", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Failed connecting to &apos;{0}&apos;.{1}{2}.
+        /// </summary>
+        internal static string Failed_connecting_to_0_1_2 {
+            get {
+                return ResourceManager.GetString("Failed_connecting_to_0_1_2", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to                    GNU LESSER GENERAL PUBLIC LICENSE
+        ///                       Version 3, 29 June 2007
+        ///					   
+        /// Copyright (C) 2007 Free Software Foundation, Inc. &lt;https://fsf.org/&gt;
+        /// Everyone is permitted to copy and distribute verbatim copies
+        /// of this license document, but changing it is not allowed.
+        ///
+        ///
+        ///  This version of the GNU Lesser General Public License incorporates
+        ///the terms and conditions of version 3 of the GNU General Public
+        ///License, supplemented by the additional permissions listed below.
+        /// [rest of string was truncated]&quot;;.
+        /// </summary>
+        internal static string LicenseMiniSqlQuery {
+            get {
+                return ResourceManager.GetString("LicenseMiniSqlQuery", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Messages.
+        /// </summary>
+        internal static string Messages {
+            get {
+                return ResourceManager.GetString("Messages", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
+        ///&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+        ///&lt;head&gt;
+        ///	&lt;title&gt;Mini SQL Query Read Me&lt;/title&gt;
+        ///	&lt;style type=&quot;text/css&quot;&gt;
+        ///		h1, h2, h3, h4
+        ///		{
+        ///			font-family: Verdana;
+        ///		}
+        ///		blockquote, p, ul, ol, li
+        ///		{
+        ///			font-family: Verdana;
+        ///			font-size: small;
+        ///		}
+        ///	&lt;/style&gt;
+        ///&lt;/head&gt;
+        ///&lt;body&gt;
+        ///	&lt;h3&gt;
+        ///		Mini SQL Query
+        ///	&lt;/h3&gt;
+        ///	&lt;blockquote&gt;
+        ///		&lt;p&gt;
+        ///			&quot;&lt;b&gt;Mini SQL Query&lt;/b&gt; from by Paul Kohler  [rest of string was truncated]&quot;;.
+        /// </summary>
+        internal static string ReadMe {
+            get {
+                return ResourceManager.GetString("ReadMe", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Reload Connection?.
+        /// </summary>
+        internal static string Reload_Connection {
+            get {
+                return ResourceManager.GetString("Reload_Connection", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Save Changes?.
+        /// </summary>
+        internal static string Save_Changes {
+            get {
+                return ResourceManager.GetString("Save_Changes", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;?xml version=&quot;1.0&quot;?&gt;
+        ///&lt;!-- 
+        ///Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+        ///This source code is made available under the terms of the GNU Lesser General Public License v3.0
+        ///https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+        ///--&gt;
+        ///&lt;SyntaxDefinition name = &quot;SQL&quot; extensions = &quot;.sql&quot;&gt;
+        ///	&lt;Properties&gt;
+        ///		&lt;Property name=&quot;LineComment&quot; value=&quot;--&quot;/&gt;
+        ///	&lt;/Properties&gt;
+        ///	&lt;Digits name = &quot;Digits&quot; bold = &quot;true&quot; italic = &quot;false&quot; color = &quot;Blue&quot;/&gt;
+        ///	&lt;RuleSets&gt;
        /// [rest of string was truncated]&quot;;.
+        /// </summary>
+        internal static string SqlModeXshd {
+            get {
+                return ResourceManager.GetString("SqlModeXshd", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Table: .
+        /// </summary>
+        internal static string Table_colon {
+            get {
+                return ResourceManager.GetString("Table_colon", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Table: (none).
+        /// </summary>
+        internal static string Table_none {
+            get {
+                return ResourceManager.GetString("Table_none", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tables.
+        /// </summary>
+        internal static string Tables {
+            get {
+                return ResourceManager.GetString("Tables", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Templates.
+        /// </summary>
+        internal static string TemplatesDirectoryName {
+            get {
+                return ResourceManager.GetString("TemplatesDirectoryName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The connection details have changed, do you want to save?
+        ///.
+        /// </summary>
+        internal static string The_connection_details_have_changed__do_you_want_to_save {
+            get {
+                return ResourceManager.GetString("The_connection_details_have_changed__do_you_want_to_save", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The connections have changed, would you like to refresh the database connection?.
+        /// </summary>
+        internal static string The_connections_have_changed__would_you_like_to_refresh_the_database_connection {
+            get {
+                return ResourceManager.GetString("The_connections_have_changed__would_you_like_to_refresh_the_database_connection", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to View Data.
+        /// </summary>
+        internal static string ViewData {
+            get {
+                return ResourceManager.GetString("ViewData", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to View Data Error.
+        /// </summary>
+        internal static string ViewDataError {
+            get {
+                return ResourceManager.GetString("ViewDataError", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Views.
+        /// </summary>
+        internal static string Views {
+            get {
+                return ResourceManager.GetString("Views", resourceCulture);
+            }
+        }
+    }
+}
Added +191 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Properties/Resources.resx b/minisqlquery-master/src/MiniSqlQuery/Properties/Resources.resx
new file mode 100644
index 0000000..6d9a6a2
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Properties/Resources.resx
@@ -0,0 +1,191 @@
+<?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="LicenseMiniSqlQuery" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\license-minisqlquery.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="ReadMe" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\..\ReadMe.htm;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
+  </data>
+  <data name="SqlModeXshd" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\sql-mode.xshd;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
+  </data>
+  <data name="TemplatesDirectoryName" xml:space="preserve">
+    <value>Templates</value>
+  </data>
+  <data name="Messages" xml:space="preserve">
+    <value>Messages</value>
+  </data>
+  <data name="ViewData" xml:space="preserve">
+    <value>View Data</value>
+  </data>
+  <data name="Table_none" xml:space="preserve">
+    <value>Table: (none)</value>
+  </data>
+  <data name="ViewDataError" xml:space="preserve">
+    <value>View Data Error</value>
+  </data>
+  <data name="Table_colon" xml:space="preserve">
+    <value>Table: </value>
+  </data>
+  <data name="Database" xml:space="preserve">
+    <value>Database</value>
+  </data>
+  <data name="Tables" xml:space="preserve">
+    <value>Tables</value>
+  </data>
+  <data name="Views" xml:space="preserve">
+    <value>Views</value>
+  </data>
+  <data name="BindNewConnectionStringBuilder_Could_not_populate_with_current_connection_string___" xml:space="preserve">
+    <value>Could not populate with current connection string - </value>
+  </data>
+  <data name="Connected_to_0_successfully" xml:space="preserve">
+    <value>Connected to '{0}' successfully.</value>
+  </data>
+  <data name="Failed_connecting_to_0_1_2" xml:space="preserve">
+    <value>Failed connecting to '{0}'.{1}{2}</value>
+    <comment>
+			0, conn name; 1, nl; 2, exp msg
+		</comment>
+  </data>
+  <data name="The_connection_details_have_changed__do_you_want_to_save" xml:space="preserve">
+    <value>The connection details have changed, do you want to save?
+</value>
+  </data>
+  <data name="Save_Changes" xml:space="preserve">
+    <value>Save Changes?</value>
+  </data>
+  <data name="Connection_Successful" xml:space="preserve">
+    <value>Connection Successful</value>
+  </data>
+  <data name="Connection_Failed" xml:space="preserve">
+    <value>Connection Failed</value>
+  </data>
+  <data name="The_connections_have_changed__would_you_like_to_refresh_the_database_connection" xml:space="preserve">
+    <value>The connections have changed, would you like to refresh the database connection?</value>
+  </data>
+  <data name="Reload_Connection" xml:space="preserve">
+    <value>Reload Connection?</value>
+  </data>
+  <data name="ChangeLog" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\..\ChangeLog.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+</root>
\ No newline at end of file
Added +172 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Properties/Settings.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..75153ec
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Properties/Settings.Designer.cs
@@ -0,0 +1,172 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace MiniSqlQuery.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.3.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;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("yyyy-MM-dd HH:mm:ss.fff")]
+        public string DateTimeFormat {
+            get {
+                return ((string)(this["DateTimeFormat"]));
+            }
+            set {
+                this["DateTimeFormat"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("")]
+        public string DefaultConnectionDefinitionFilename {
+            get {
+                return ((string)(this["DefaultConnectionDefinitionFilename"]));
+            }
+            set {
+                this["DefaultConnectionDefinitionFilename"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("True")]
+        public bool EnableQueryBatching {
+            get {
+                return ((bool)(this["EnableQueryBatching"]));
+            }
+            set {
+                this["EnableQueryBatching"] = value;
+            }
+        }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute(@"SQL Files (*.sql)|*.sql|Mini SQL Template Files (*.mt)|*.mt|ASPX Files (*.asp;*.aspx;*.asax;*.asmx)|*.asp;*.aspx;*.asax;*.asmx|Batch Files (*.bat;*.cmd)|*.bat;*.cmd|BOO Files (*.boo)|*.boo|Coco Files (*.atg)|*.atg|C++ Files (*.cpp;*.cc;*.c;*.h)|*.cpp;*.cc;*.c;*.h|C# Files (*.cs)|*.cs|HTML Files (*.htm*)|*.htm*|Java Files (*.java)|*.java|JavaScript Files (*.js)|*.js|Patch Files (*.patch;*.diff)|*.patch;*.diff|PHP Files (*.php*)|*.php*|TeX Files (*.tex)|*.tex|VB.NET Files (*.vb)|*.vb|XML Files (*.xml;*.resx)|*.xml;*.resx|All Files (*.*)|*.*")]
+        public string FileDialogFilter {
+            get {
+                return ((string)(this["FileDialogFilter"]));
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("False")]
+        public bool IncludeReadOnlyColumnsInExport {
+            get {
+                return ((bool)(this["IncludeReadOnlyColumnsInExport"]));
+            }
+            set {
+                this["IncludeReadOnlyColumnsInExport"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("True")]
+        public bool LoadExternalPlugins {
+            get {
+                return ((bool)(this["LoadExternalPlugins"]));
+            }
+            set {
+                this["LoadExternalPlugins"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("Default - MSSQL Master@localhost")]
+        public string NammedConnection {
+            get {
+                return ((string)(this["NammedConnection"]));
+            }
+            set {
+                this["NammedConnection"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("<NULL>")]
+        public string NullText {
+            get {
+                return ((string)(this["NullText"]));
+            }
+            set {
+                this["NullText"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("*.PlugIn.dll")]
+        public string PlugInFileFilter {
+            get {
+                return ((string)(this["PlugInFileFilter"]));
+            }
+            set {
+                this["PlugInFileFilter"] = value;
+            }
+        }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("*.sql")]
+        public string SqlFileFilter {
+            get {
+                return ((string)(this["SqlFileFilter"]));
+            }
+        }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("XML Files (*.xml)|*.xml|All Files (*.*)|*.*")]
+        public string XmlFileDialogFilter {
+            get {
+                return ((string)(this["XmlFileDialogFilter"]));
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("30")]
+        public int CommandTimeout {
+            get {
+                return ((int)(this["CommandTimeout"]));
+            }
+            set {
+                this["CommandTimeout"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public global::System.Collections.Specialized.StringCollection MostRecentFiles {
+            get {
+                return ((global::System.Collections.Specialized.StringCollection)(this["MostRecentFiles"]));
+            }
+            set {
+                this["MostRecentFiles"] = value;
+            }
+        }
+    }
+}
Added +45 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Properties/Settings.settings b/minisqlquery-master/src/MiniSqlQuery/Properties/Settings.settings
new file mode 100644
index 0000000..4492c6a
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Properties/Settings.settings
@@ -0,0 +1,45 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="MiniSqlQuery.Properties" GeneratedClassName="Settings">
+  <Profiles />
+  <Settings>
+    <Setting Name="DateTimeFormat" Type="System.String" Scope="User">
+      <Value Profile="(Default)">yyyy-MM-dd HH:mm:ss.fff</Value>
+    </Setting>
+    <Setting Name="DefaultConnectionDefinitionFilename" Type="System.String" Scope="User">
+      <Value Profile="(Default)" />
+    </Setting>
+    <Setting Name="EnableQueryBatching" Type="System.Boolean" Scope="User">
+      <Value Profile="(Default)">True</Value>
+    </Setting>
+    <Setting Name="FileDialogFilter" Type="System.String" Scope="Application">
+      <Value Profile="(Default)">SQL Files (*.sql)|*.sql|Mini SQL Template Files (*.mt)|*.mt|ASPX Files (*.asp;*.aspx;*.asax;*.asmx)|*.asp;*.aspx;*.asax;*.asmx|Batch Files (*.bat;*.cmd)|*.bat;*.cmd|BOO Files (*.boo)|*.boo|Coco Files (*.atg)|*.atg|C++ Files (*.cpp;*.cc;*.c;*.h)|*.cpp;*.cc;*.c;*.h|C# Files (*.cs)|*.cs|HTML Files (*.htm*)|*.htm*|Java Files (*.java)|*.java|JavaScript Files (*.js)|*.js|Patch Files (*.patch;*.diff)|*.patch;*.diff|PHP Files (*.php*)|*.php*|TeX Files (*.tex)|*.tex|VB.NET Files (*.vb)|*.vb|XML Files (*.xml;*.resx)|*.xml;*.resx|All Files (*.*)|*.*</Value>
+    </Setting>
+    <Setting Name="IncludeReadOnlyColumnsInExport" Type="System.Boolean" Scope="User">
+      <Value Profile="(Default)">False</Value>
+    </Setting>
+    <Setting Name="LoadExternalPlugins" Type="System.Boolean" Scope="User">
+      <Value Profile="(Default)">True</Value>
+    </Setting>
+    <Setting Name="NammedConnection" Type="System.String" Scope="User">
+      <Value Profile="(Default)">Default - MSSQL Master@localhost</Value>
+    </Setting>
+    <Setting Name="NullText" Type="System.String" Scope="User">
+      <Value Profile="(Default)">&lt;NULL&gt;</Value>
+    </Setting>
+    <Setting Name="PlugInFileFilter" Type="System.String" Scope="User">
+      <Value Profile="(Default)">*.PlugIn.dll</Value>
+    </Setting>
+    <Setting Name="SqlFileFilter" Type="System.String" Scope="Application">
+      <Value Profile="(Default)">*.sql</Value>
+    </Setting>
+    <Setting Name="XmlFileDialogFilter" Type="System.String" Scope="Application">
+      <Value Profile="(Default)">XML Files (*.xml)|*.xml|All Files (*.*)|*.*</Value>
+    </Setting>
+    <Setting Name="CommandTimeout" Type="System.Int32" Scope="User">
+      <Value Profile="(Default)">30</Value>
+    </Setting>
+    <Setting Name="MostRecentFiles" Type="System.Collections.Specialized.StringCollection" Scope="User">
+      <Value Profile="(Default)" />
+    </Setting>
+  </Settings>
+</SettingsFile>
\ No newline at end of file
Added +1017 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/QueryForm.cs b/minisqlquery-master/src/MiniSqlQuery/QueryForm.cs
new file mode 100644
index 0000000..b507757
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/QueryForm.cs
@@ -0,0 +1,1017 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Drawing.Printing;
+using System.IO;
+using System.Windows.Forms;
+using ICSharpCode.TextEditor;
+using ICSharpCode.TextEditor.Document;
+using ICSharpCode.TextEditor.Gui.CompletionWindow;
+using MiniSqlQuery.Commands;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+using MiniSqlQuery.Properties;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery
+{
+    /// <summary>The query form.</summary>
+    public partial class QueryForm : DockContent, IQueryEditor, IPrintableContent
+    {
+        /// <summary>The _host window.</summary>
+        private readonly IHostWindow _hostWindow;
+
+        /// <summary>The _services.</summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>The _settings.</summary>
+        private readonly IApplicationSettings _settings;
+
+        /// <summary>The _sync lock.</summary>
+        private static object _syncLock = new object();
+
+        /// <summary>Stores the widths of the columns for this window.</summary>
+        private Dictionary<string, int> _columnSizes = new Dictionary<string, int>();
+
+        /// <summary>When tru the grid is being resized on fill, used to avoid overriting column width values.</summary>
+        private bool _resizingGrid;
+
+        /// <summary>The _highlighting provider loaded.</summary>
+        private bool _highlightingProviderLoaded;
+
+        /// <summary>The _is dirty.</summary>
+        private bool _isDirty;
+
+        /// <summary>The _runner.</summary>
+        private QueryRunner _runner;
+
+        /// <summary>The status message for this window.</summary>
+        private string _status = string.Empty;
+
+        /// <summary>The row count for this window (tab dependent).</summary>
+        private int? _rowCount;
+
+        /// <summary>The _text find service.</summary>
+        private ITextFindService _textFindService;
+
+        private bool _cleaningTabs;
+
+        TextArea _textArea;
+        CodeCompletionWindow _completionWindow;
+
+        /// <summary>Initializes a new instance of the <see cref="QueryForm"/> class.</summary>
+        public QueryForm()
+        {
+            InitializeComponent();
+
+            txtQuery.ContextMenuStrip = contextMenuStripQuery;
+            LoadHighlightingProvider();
+            txtQuery.Document.DocumentChanged += DocumentDocumentChanged;
+            _textArea = txtQuery.ActiveTextAreaControl.TextArea;
+
+            contextMenuStripQuery.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<ExecuteTaskCommand>());
+            contextMenuStripQuery.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<CancelTaskCommand>());
+
+            editorContextMenuStrip.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<SaveFileCommand>());
+            editorContextMenuStrip.Items.Add(CommandControlBuilder.CreateToolStripMenuItemSeparator());
+            editorContextMenuStrip.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<CloseActiveWindowCommand>());
+            editorContextMenuStrip.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<CloseAllWindowsCommand>());
+            editorContextMenuStrip.Items.Add(CommandControlBuilder.CreateToolStripMenuItem<CopyQueryEditorFileNameCommand>());
+
+            CommandControlBuilder.MonitorMenuItemsOpeningForEnabling(editorContextMenuStrip);
+        }
+
+        /// <summary>Initializes a new instance of the <see cref="QueryForm"/> class.</summary>
+        /// <param name="services">The services.</param>
+        /// <param name="settings">The settings.</param>
+        /// <param name="hostWindow">The host window.</param>
+        public QueryForm(IApplicationServices services, IApplicationSettings settings, IHostWindow hostWindow)
+            : this()
+        {
+            _services = services;
+            _settings = settings;
+            _hostWindow = hostWindow;
+
+            var completionProvider = _services.Resolve<ICompletionProvider>();
+            if (completionProvider.Enabled)
+            {
+                _textArea.KeyEventHandler += completionProvider.KeyEventHandlerFired;
+            }
+        }
+
+        public CodeCompletionWindow CodeCompletionWindow
+        {
+            get { return _completionWindow; }
+            set
+            {
+                _completionWindow = value;
+                if (_completionWindow != null)
+                {
+                    _completionWindow.Closed += CompletionWindowClosed;
+                }
+            }
+        }
+
+        private void CompletionWindowClosed(object sender, EventArgs e)
+        {
+            if (_completionWindow != null)
+            {
+                _completionWindow.Closed -= CompletionWindowClosed;
+                _completionWindow.Dispose();
+                _completionWindow = null;
+            }
+        }
+
+        /// <summary>Gets or sets AllText.</summary>
+        public string AllText
+        {
+            get { return txtQuery.Text; }
+            set { txtQuery.Text = value; }
+        }
+
+        /// <summary>
+        /// Gets a reference to the batch of queries.
+        /// </summary>
+        /// <value>The query batch.</value>
+        public QueryBatch Batch
+        {
+            get { return _runner == null ? null : _runner.Batch; }
+        }
+
+        /// <summary>Gets a value indicating whether CanReplaceText.</summary>
+        public bool CanReplaceText
+        {
+            get { return true; }
+        }
+
+        /// <summary>Gets or sets CursorColumn.</summary>
+        public int CursorColumn
+        {
+            get { return txtQuery.ActiveTextAreaControl.Caret.Column; }
+            set { txtQuery.ActiveTextAreaControl.Caret.Column = value; }
+        }
+
+        /// <summary>Gets or sets CursorLine.</summary>
+        public int CursorLine
+        {
+            get { return txtQuery.ActiveTextAreaControl.Caret.Line; }
+            set { txtQuery.ActiveTextAreaControl.Caret.Line = value; }
+        }
+
+        /// <summary>Gets CursorOffset.</summary>
+        public int CursorOffset
+        {
+            get { return txtQuery.ActiveTextAreaControl.Caret.Offset; }
+        }
+
+        /// <summary>Gets EditorControl.</summary>
+        public Control EditorControl
+        {
+            get { return txtQuery; }
+        }
+
+
+        /// <summary>Gets FileFilter.</summary>
+        public string FileFilter
+        {
+            get { return "SQL Files (*.sql)|*.sql|All Files (*.*)|*.*"; }
+        }
+
+        /// <summary>Gets or sets FileName.</summary>
+        public string FileName
+        {
+            get { return txtQuery.FileName; }
+            set
+            {
+                txtQuery.FileName = value;
+
+                SetTabTextByFilename();
+            }
+        }
+
+        /// <summary>Gets a value indicating whether IsBusy.</summary>
+        public bool IsBusy { get; private set; }
+
+        /// <summary>Gets or sets a value indicating whether IsDirty.</summary>
+        public bool IsDirty
+        {
+            get { return _isDirty; }
+            set
+            {
+                if (_isDirty != value)
+                {
+                    _isDirty = value;
+                    SetTabTextByFilename();
+                }
+            }
+        }
+
+        /// <summary>Gets PrintDocument.</summary>
+        public PrintDocument PrintDocument
+        {
+            get { return txtQuery.PrintDocument; }
+        }
+
+        /// <summary>Gets SelectedText.</summary>
+        public string SelectedText
+        {
+            get { return txtQuery.ActiveTextAreaControl.SelectionManager.SelectedText; }
+        }
+
+        /// <summary>Gets TextFindService.</summary>
+        public ITextFindService TextFindService
+        {
+            get
+            {
+                if (_textFindService == null)
+                {
+                    _textFindService = _services.Resolve<ITextFindService>();
+                }
+
+                return _textFindService;
+            }
+        }
+
+        /// <summary>Gets TotalLines.</summary>
+        public int TotalLines
+        {
+            get { return txtQuery.Document.TotalNumberOfLines; }
+        }
+
+        /// <summary>The execute query.</summary>
+        /// <param name="sql">The sql.</param>
+        public void ExecuteQuery(string sql)
+        {
+            if (IsBusy)
+            {
+                _hostWindow.DisplaySimpleMessageBox(this, "Please wait for the current operation to complete.", "Busy");
+                return;
+            }
+
+            if (_settings.ConnectionDefinition == null)
+            {
+                _hostWindow.DisplaySimpleMessageBox(this, "Please select a connection.", "Select a Connection");
+                return;
+            }
+
+            lock (_syncLock)
+            {
+                IsBusy = true;
+            }
+
+            _runner = QueryRunner.Create(_settings.ProviderFactory, _settings.ConnectionDefinition.ConnectionString, _settings.EnableQueryBatching, _settings.CommandTimeout);
+            UseWaitCursor = true;
+            queryBackgroundWorker.RunWorkerAsync(sql);
+        }
+
+        /// <summary>The load highlighting provider.</summary>
+        public void LoadHighlightingProvider()
+        {
+            if (_highlightingProviderLoaded)
+            {
+                return;
+            }
+
+            // see: http://wiki.sharpdevelop.net/Syntax%20highlighting.ashx
+            string dir = Path.GetDirectoryName(GetType().Assembly.Location);
+            FileSyntaxModeProvider fsmProvider = new FileSyntaxModeProvider(dir);
+            HighlightingManager.Manager.AddSyntaxModeFileProvider(fsmProvider); // Attach to the text editor.
+            txtQuery.SetHighlighting("SQL");
+            _highlightingProviderLoaded = true;
+        }
+
+        /// <summary>The clear selection.</summary>
+        public void ClearSelection()
+        {
+            txtQuery.ActiveTextAreaControl.SelectionManager.ClearSelection();
+        }
+
+        /// <summary>The highlight string.</summary>
+        /// <param name="offset">The offset.</param>
+        /// <param name="length">The length.</param>
+        public void HighlightString(int offset, int length)
+        {
+            if (offset < 0 || length < 1)
+            {
+                return;
+            }
+
+            int endPos = offset + length;
+            txtQuery.ActiveTextAreaControl.SelectionManager.SetSelection(
+                txtQuery.Document.OffsetToPosition(offset),
+                txtQuery.Document.OffsetToPosition(endPos));
+            SetCursorByOffset(endPos);
+        }
+
+        /// <summary>The insert text.</summary>
+        /// <param name="text">The text.</param>
+        public void InsertText(string text)
+        {
+            if (string.IsNullOrEmpty(text))
+            {
+                return;
+            }
+
+            int offset = txtQuery.ActiveTextAreaControl.Caret.Offset;
+
+            // if some text is selected we want to replace it
+            if (txtQuery.ActiveTextAreaControl.SelectionManager.IsSelected(offset))
+            {
+                offset = txtQuery.ActiveTextAreaControl.SelectionManager.SelectionCollection[0].Offset;
+                txtQuery.ActiveTextAreaControl.SelectionManager.RemoveSelectedText();
+            }
+
+            txtQuery.Document.Insert(offset, text);
+            int newOffset = offset + text.Length; // new offset at end of inserted text
+
+            // now reposition the caret if required to be after the inserted text
+            if (CursorOffset != newOffset)
+            {
+                SetCursorByOffset(newOffset);
+            }
+
+            txtQuery.Focus();
+        }
+
+        /// <summary>The load file.</summary>
+        public void LoadFile()
+        {
+            txtQuery.LoadFile(FileName);
+            IsDirty = false;
+        }
+
+        /// <summary>The save file.</summary>
+        /// <exception cref="InvalidOperationException"></exception>
+        public void SaveFile()
+        {
+            if (FileName == null)
+            {
+                throw new InvalidOperationException("The 'FileName' cannot be null");
+            }
+
+            txtQuery.SaveFile(FileName);
+            IsDirty = false;
+        }
+
+        /// <summary>The set syntax.</summary>
+        /// <param name="name">The name.</param>
+        public void SetSyntax(string name)
+        {
+            LoadHighlightingProvider();
+            txtQuery.SetHighlighting(name);
+        }
+
+
+        /// <summary>The find string.</summary>
+        /// <param name="value">The value.</param>
+        /// <param name="startIndex">The start index.</param>
+        /// <param name="comparisonType">The comparison type.</param>
+        /// <returns>The find string.</returns>
+        public int FindString(string value, int startIndex, StringComparison comparisonType)
+        {
+            if (string.IsNullOrEmpty(value) || startIndex < 0)
+            {
+                return -1;
+            }
+
+            string text = AllText;
+            int pos = text.IndexOf(value, startIndex, comparisonType);
+            if (pos > -1)
+            {
+                ClearSelection();
+                HighlightString(pos, value.Length);
+            }
+
+            return pos;
+        }
+
+        /// <summary>The replace string.</summary>
+        /// <param name="value">The value.</param>
+        /// <param name="startIndex">The start index.</param>
+        /// <param name="length">The length.</param>
+        /// <returns>The replace string.</returns>
+        public bool ReplaceString(string value, int startIndex, int length)
+        {
+            if (value == null || startIndex < 0 || length < 0)
+            {
+                return false;
+            }
+
+            if ((startIndex + length) > AllText.Length)
+            {
+                return false;
+            }
+
+            txtQuery.Document.Replace(startIndex, length, value);
+
+            return true;
+        }
+
+        /// <summary>The set text find service.</summary>
+        /// <param name="textFindService">The text find service.</param>
+        public void SetTextFindService(ITextFindService textFindService)
+        {
+            // accept nulls infering a reset
+            _textFindService = textFindService;
+        }
+
+        /// <summary>The set cursor by location.</summary>
+        /// <param name="line">The line.</param>
+        /// <param name="column">The column.</param>
+        /// <returns>The set cursor by location.</returns>
+        public bool SetCursorByLocation(int line, int column)
+        {
+            if (line > TotalLines)
+            {
+                return false;
+            }
+
+            txtQuery.ActiveTextAreaControl.Caret.Line = line;
+            txtQuery.ActiveTextAreaControl.Caret.Column = column;
+
+            return true;
+        }
+
+        /// <summary>The set cursor by offset.</summary>
+        /// <param name="offset">The offset.</param>
+        /// <returns>The set cursor by offset.</returns>
+        public bool SetCursorByOffset(int offset)
+        {
+            if (offset >= 0)
+            {
+                txtQuery.ActiveTextAreaControl.Caret.Position = txtQuery.Document.OffsetToPosition(offset);
+                return true;
+            }
+
+            return false;
+        }
+
+        /// <summary>The cancel task.</summary>
+        public void CancelTask()
+        {
+            if (queryBackgroundWorker.IsBusy && _runner != null)
+            {
+                _runner.Cancel();
+            }
+        }
+
+        /// <summary>The execute task.</summary>
+        public void ExecuteTask()
+        {
+            if (!string.IsNullOrEmpty(SelectedText))
+            {
+                ExecuteQuery(SelectedText);
+            }
+            else
+            {
+                ExecuteQuery(AllText);
+            }
+        }
+
+        /// <summary>The set status.</summary>
+        /// <param name="text">The text.</param>
+        public void SetStatus(string text)
+        {
+            _status = text;
+            UpdateHostStatus();
+        }
+
+        public void SetRowCount(int? rows)
+        {
+            _rowCount = rows;
+            UpdateHostStatus();
+        }
+
+        /// <summary>The create default font.</summary>
+        /// <returns></returns>
+        protected Font CreateDefaultFont()
+        {
+            return new Font("Courier New", 8.25F, FontStyle.Regular, GraphicsUnit.Point);
+        }
+
+        /// <summary>The update host status.</summary>
+        protected void UpdateHostStatus()
+        {
+            _hostWindow.SetStatus(this, _status);
+            _hostWindow.SetResultCount(this, _rowCount);
+        }
+
+        /// <summary>The create query complete message.</summary>
+        /// <param name="start">The start.</param>
+        /// <param name="end">The end.</param>
+        /// <returns>The create query complete message.</returns>
+        private static string CreateQueryCompleteMessage(DateTime start, DateTime end)
+        {
+            TimeSpan ts = end.Subtract(start);
+            string msg = string.Format(
+                "Query complete, {0:00}:{1:00}.{2:000}",
+                ts.Minutes,
+                ts.Seconds,
+                ts.Milliseconds);
+            return msg;
+        }
+
+        /// <summary>The add tables.</summary>
+        private void AddTables()
+        {
+            ClearGridsAndTabs();
+            SetRowCount(null);
+
+            if (Batch != null)
+            {
+                string nullText = _settings.NullText;
+                int counter = 1;
+
+                _resizingGrid = true;
+
+                foreach (Query query in Batch.Queries)
+                {
+                    DataSet ds = query.Result;
+                    if (ds != null)
+                    {
+                        foreach (DataTable dt in ds.Tables)
+                        {
+                            DataGridView grid = new DataGridView();
+                            DataGridViewCellStyle cellStyle = new DataGridViewCellStyle();
+
+                            grid.AllowUserToAddRows = false;
+                            grid.AllowUserToDeleteRows = false;
+                            grid.Dock = DockStyle.Fill;
+                            grid.Name = "gridResults_" + counter;
+                            grid.ReadOnly = true;
+                            grid.DataSource = dt;
+                            grid.DataError += GridDataError;
+                            grid.DefaultCellStyle = cellStyle;
+                            cellStyle.NullValue = nullText;
+                            cellStyle.Font = CreateDefaultFont();
+                            grid.DataBindingComplete += GridDataBindingComplete;
+                            grid.Disposed += GridDisposed;
+                            grid.ColumnWidthChanged += OnColumnWidthChanged;
+
+
+                            TabPage tabPage = new TabPage();
+                            tabPage.Controls.Add(grid);
+                            tabPage.Name = "tabPageResults_" + counter;
+                            tabPage.Padding = new Padding(3);
+                            tabPage.Text = string.Format("{0}/Table {1}", ds.DataSetName, counter);
+                            tabPage.UseVisualStyleBackColor = false;
+
+                            _resultsTabControl.TabPages.Add(tabPage);
+
+                            // create a reasonable default max width for columns
+                            int maxColWidth = Math.Max(grid.ClientSize.Width / 2, 100);
+
+                            // Autosize the columns then change the widths, gleaned from SO - http://stackoverflow.com/a/1031871/276563
+                            grid.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells);
+                            for (int i = 0; i < grid.Columns.Count; i++)
+                            {
+                                int columnWidth = grid.Columns[i].Width;
+                                grid.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
+
+                                string headerText = grid.Columns[i].HeaderText;
+                                if (!string.IsNullOrEmpty(headerText) && _columnSizes.ContainsKey(headerText))
+                                {
+                                    // use the previous column size in case its been adjusted etc
+                                    grid.Columns[i].Width = _columnSizes[headerText];
+                                }
+                                else
+                                {
+                                    // reset to a the smaller of the 2 sizes, this is mainly for the bigger text columns that throw the size out
+                                    grid.Columns[i].Width = Math.Min(columnWidth, maxColWidth);
+
+                                    if (!string.IsNullOrEmpty(headerText))
+                                    {
+                                        _columnSizes[headerText] = grid.Columns[i].Width;
+                                    }
+                                }
+                            }
+
+                            // set the row count for the first tab for now.
+                            if (counter == 1)
+                            {
+                                SetRowCount(dt.Rows.Count);
+                            }
+
+                            counter++;
+                        }
+                    }
+                }
+
+                if (!string.IsNullOrEmpty(Batch.Messages))
+                {
+                    RichTextBox rtf = new RichTextBox();
+                    rtf.Font = CreateDefaultFont();
+                    rtf.Dock = DockStyle.Fill;
+                    rtf.ScrollBars = RichTextBoxScrollBars.ForcedBoth;
+                    rtf.Text = Batch.Messages;
+
+                    TabPage tabPage = new TabPage();
+                    tabPage.Controls.Add(rtf);
+                    tabPage.Name = "tabPageResults_Messages";
+                    tabPage.Padding = new Padding(3);
+                    tabPage.Dock = DockStyle.Fill;
+                    tabPage.Text = Resources.Messages;
+                    tabPage.UseVisualStyleBackColor = false;
+
+                    _resultsTabControl.TabPages.Add(tabPage);
+                }
+
+                _resizingGrid = false;
+            }
+        }
+
+        public void OnColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
+        {
+            if (_resizingGrid)
+            {
+                return;
+            }
+
+            string headerText = e.Column.HeaderText;
+            if (!string.IsNullOrEmpty(headerText))
+            {
+                _columnSizes[headerText] = e.Column.Width;
+            }
+        }
+
+        /// <summary>Iterate backweards through list of tabs disposing grid and removing the tab page.</summary>
+        private void ClearGridsAndTabs()
+        {
+            try
+            {
+                _cleaningTabs = true;
+
+                for (int i = _resultsTabControl.TabPages.Count - 1; i >= 0; i--)
+                {
+                    TabPage tabPage = _resultsTabControl.TabPages[i];
+                    if (tabPage.Controls.Count > 0)
+                    {
+                        tabPage.Controls[0].Dispose(); // dispose grid
+                    }
+
+                    _resultsTabControl.TabPages.Remove(tabPage);
+                    tabPage.Dispose();
+                }
+            }
+            finally
+            {
+                _cleaningTabs = false;
+            }
+        }
+
+        private void SetResultCountOnTabSelectedIndexChanged(object sender, EventArgs e)
+        {
+            if (_cleaningTabs)
+            {
+                return;
+            }
+
+            // get the tab
+            var tabPage = _resultsTabControl.TabPages[_resultsTabControl.SelectedIndex];
+
+            // get the grid control, should be first
+            var dataGridView = tabPage.Controls[0] as DataGridView;
+
+            // default to blank row count
+            int? rows = null;
+            if (dataGridView != null)
+            {
+                var data = dataGridView.DataSource as DataTable;
+                if (data != null)
+                {
+                    rows = data.Rows.Count;
+                }
+            }
+            _rowCount = rows;
+
+            UpdateHostStatus();
+        }
+
+        /// <summary>The document document changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void DocumentDocumentChanged(object sender, DocumentEventArgs e)
+        {
+            IsDirty = true;
+        }
+
+        /// <summary>Change the format style of date time columns. This has to be done post-bind.</summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void GridDataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
+        {
+            DataGridView grid = sender as DataGridView;
+            if (grid == null)
+            {
+                return;
+            }
+
+            DataTable dt = grid.DataSource as DataTable;
+            if (dt == null)
+            {
+                return;
+            }
+
+            string nullText = _settings.NullText;
+            string dateTimeFormat = _settings.DateTimeFormat;
+
+            for (int i = 0; i < dt.Columns.Count; i++)
+            {
+                if (dt.Columns[i].DataType == typeof(DateTime))
+                {
+                    DataGridViewCellStyle dateCellStyle = new DataGridViewCellStyle();
+                    dateCellStyle.NullValue = nullText;
+                    dateCellStyle.Format = dateTimeFormat;
+                    grid.Columns[i].DefaultCellStyle = dateCellStyle;
+                }
+            }
+        }
+
+        /// <summary>The grid data error.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void GridDataError(object sender, DataGridViewDataErrorEventArgs e)
+        {
+            e.ThrowException = false;
+        }
+
+        /// <summary>Clean up event subscriptions.</summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void GridDisposed(object sender, EventArgs e)
+        {
+            DataGridView grid = sender as DataGridView;
+            if (grid == null)
+            {
+                return;
+            }
+
+            grid.DataBindingComplete -= GridDataBindingComplete;
+            grid.Disposed -= GridDisposed;
+            grid.ColumnWidthChanged -= OnColumnWidthChanged;
+        }
+
+        /// <summary>The query form_ activated.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void QueryForm_Activated(object sender, EventArgs e)
+        {
+            UpdateHostStatus();
+        }
+
+        /// <summary>The query form_ deactivate.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void QueryForm_Deactivate(object sender, EventArgs e)
+        {
+            _hostWindow.SetStatus(this, string.Empty);
+        }
+
+        /// <summary>The query form_ form closing.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void QueryForm_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            if (_isDirty)
+            {
+                DialogResult saveFile = _hostWindow.DisplayMessageBox(
+                    this,
+                    "Contents changed, do you want to save the file?\r\n" + TabText, "Save Changes?",
+                    MessageBoxButtons.YesNoCancel,
+                    MessageBoxIcon.Question,
+                    MessageBoxDefaultButton.Button1,
+                    0,
+                    null,
+                    null);
+
+                if (saveFile == DialogResult.Cancel)
+                {
+                    e.Cancel = true;
+                }
+                else if (saveFile == DialogResult.Yes)
+                {
+                    CommandManager.GetCommandInstance<SaveFileCommand>().Execute();
+                }
+            }
+        }
+
+        /// <summary>The query form_ load.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void QueryForm_Load(object sender, EventArgs e)
+        {
+        }
+
+        /// <summary>The runner batch progress.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void RunnerBatchProgress(object sender, BatchProgressEventArgs e)
+        {
+            // push the progress % through to the background worker
+            decimal i = Math.Max(1, e.Index);
+            decimal count = Math.Max(1, e.Count);
+            queryBackgroundWorker.ReportProgress(Convert.ToInt32(i / count * 100m));
+        }
+
+        /// <summary>The set tab text by filename.</summary>
+        private void SetTabTextByFilename()
+        {
+            string dirty = string.Empty;
+            string text = "Untitled";
+            string tabtext;
+
+            if (_isDirty)
+            {
+                dirty = " *";
+            }
+
+            if (txtQuery.FileName != null)
+            {
+                text = FileName;
+                tabtext = Path.GetFileName(FileName);
+            }
+            else
+            {
+                text += _settings.GetUntitledDocumentCounter();
+                tabtext = text;
+            }
+
+            TabText = tabtext + dirty;
+            ToolTipText = text + dirty;
+        }
+
+        /// <summary>The copy tool strip menu item_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void copyToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            CopyForm win = null;
+
+            try
+            {
+                DataGridView grid = (DataGridView)_resultsTabControl.SelectedTab.Controls[0];
+
+                if (grid.SelectedCells.Count == 0)
+                {
+                    return;
+                }
+
+                win = new CopyForm();
+
+                if (win.ShowDialog() == DialogResult.Cancel)
+                {
+                    return;
+                }
+
+                SortedList headers = new SortedList();
+                SortedList rows = new SortedList();
+
+                string delimiter = win.Delimiter;
+                string line = string.Empty;
+
+                for (int i = 0; i < grid.SelectedCells.Count; i++)
+                {
+                    DataGridViewCell cell = grid.SelectedCells[i];
+                    DataGridViewColumn col = cell.OwningColumn;
+
+                    if (!headers.ContainsKey(col.Index))
+                    {
+                        headers.Add(col.Index, col.Name);
+                    }
+
+                    if (!rows.ContainsKey(cell.RowIndex))
+                    {
+                        rows.Add(cell.RowIndex, cell.RowIndex);
+                    }
+                }
+
+                if (win.IncludeHeaders)
+                {
+                    for (int i = 0; i < headers.Count; i++)
+                    {
+                        line += (string)headers.GetByIndex(i);
+                        if (i != headers.Count)
+                        {
+                            line += delimiter;
+                        }
+                    }
+
+                    line += "\r\n";
+                }
+
+                for (int i = 0; i < rows.Count; i++)
+                {
+                    DataGridViewRow row = grid.Rows[(int)rows.GetKey(i)];
+                    DataGridViewCellCollection cells = row.Cells;
+
+                    for (int j = 0; j < headers.Count; j++)
+                    {
+                        DataGridViewCell cell = cells[(int)headers.GetKey(j)];
+
+                        if (cell.Selected)
+                        {
+                            line += cell.Value;
+                        }
+
+                        if (j != (headers.Count - 1))
+                        {
+                            line += delimiter;
+                        }
+                    }
+
+                    line += "\r\n";
+                }
+
+                if (!string.IsNullOrEmpty(line))
+                {
+                    Clipboard.Clear();
+                    Clipboard.SetText(line);
+
+                    _hostWindow.SetStatus(this, "Selected data has been copied to your clipboard");
+                }
+            }
+            finally
+            {
+                if (win != null)
+                {
+                    win.Dispose();
+                }
+            }
+        }
+
+        /// <summary>The query background worker_ do work.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void queryBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
+        {
+            string sql = (string)e.Argument;
+            _runner.BatchProgress += RunnerBatchProgress;
+            _runner.ExecuteQuery(sql);
+        }
+
+        /// <summary>The query background worker_ progress changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void queryBackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
+        {
+            SetStatus(string.Format("Processing batch {0}%...", e.ProgressPercentage));
+        }
+
+        /// <summary>The query background worker_ run worker completed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void queryBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
+        {
+            try
+            {
+                _runner.BatchProgress -= RunnerBatchProgress;
+                if (e.Error != null)
+                {
+                    // todo: improve!
+                    _hostWindow.DisplaySimpleMessageBox(this, e.Error.Message, "Error");
+                    SetStatus(e.Error.Message);
+                }
+                else
+                {
+                    _hostWindow.SetPointerState(Cursors.Default);
+                    string message = CreateQueryCompleteMessage(_runner.Batch.StartTime, _runner.Batch.EndTime);
+                    if (_runner.Exception != null)
+                    {
+                        message = "ERROR - " + message;
+                    }
+
+                    AddTables();
+                    SetStatus(message);
+                    txtQuery.Focus();
+                }
+            }
+            finally
+            {
+                UseWaitCursor = false;
+                lock (_syncLock)
+                {
+                    IsBusy = false;
+                }
+            }
+        }
+
+        /// <summary>The select all tool strip menu item_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void selectAllToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            DataGridView grid = (DataGridView)_resultsTabControl.SelectedTab.Controls[0];
+            grid.SelectAll();
+        }
+    }
+}
\ No newline at end of file
Added +211 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/QueryForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/QueryForm.Designer.cs
new file mode 100644
index 0000000..fc39665
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/QueryForm.Designer.cs
@@ -0,0 +1,211 @@
+namespace MiniSqlQuery
+{
+	partial class QueryForm
+	{
+		/// <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(QueryForm));
+			this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+			this.txtQuery = new ICSharpCode.TextEditor.TextEditorControl();
+			this.contextMenuStripQuery = new System.Windows.Forms.ContextMenuStrip(this.components);
+			this._resultsTabControl = new System.Windows.Forms.TabControl();
+			this.ctxDataGrid = new System.Windows.Forms.ContextMenuStrip(this.components);
+			this.selectAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+			this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+			this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+			this.tabPageResults = new System.Windows.Forms.TabPage();
+			this.gridResults1 = new System.Windows.Forms.DataGridView();
+			this.editorContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
+			this.queryBackgroundWorker = new System.ComponentModel.BackgroundWorker();
+			this.splitContainer1.Panel1.SuspendLayout();
+			this.splitContainer1.Panel2.SuspendLayout();
+			this.splitContainer1.SuspendLayout();
+			this._resultsTabControl.SuspendLayout();
+			this.ctxDataGrid.SuspendLayout();
+			this.tabPageResults.SuspendLayout();
+			((System.ComponentModel.ISupportInitialize)(this.gridResults1)).BeginInit();
+			this.SuspendLayout();
+			// 
+			// splitContainer1
+			// 
+			this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
+			this.splitContainer1.Location = new System.Drawing.Point(0, 0);
+			this.splitContainer1.Name = "splitContainer1";
+			this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
+			// 
+			// splitContainer1.Panel1
+			// 
+			this.splitContainer1.Panel1.Controls.Add(this.txtQuery);
+			// 
+			// splitContainer1.Panel2
+			// 
+			this.splitContainer1.Panel2.Controls.Add(this._resultsTabControl);
+			this.splitContainer1.Size = new System.Drawing.Size(1037, 508);
+			this.splitContainer1.SplitterDistance = 230;
+			this.splitContainer1.TabIndex = 0;
+			// 
+			// txtQuery
+			// 
+			this.txtQuery.ContextMenuStrip = this.contextMenuStripQuery;
+			this.txtQuery.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.txtQuery.EnableFolding = false;
+			this.txtQuery.IsReadOnly = false;
+			this.txtQuery.Location = new System.Drawing.Point(0, 0);
+			this.txtQuery.Name = "txtQuery";
+			this.txtQuery.ShowEOLMarkers = true;
+			this.txtQuery.ShowSpaces = true;
+			this.txtQuery.ShowTabs = true;
+			this.txtQuery.Size = new System.Drawing.Size(1037, 230);
+			this.txtQuery.TabIndex = 1;
+			// 
+			// contextMenuStripQuery
+			// 
+			this.contextMenuStripQuery.Name = "contextMenuStripQuery";
+			this.contextMenuStripQuery.Size = new System.Drawing.Size(61, 4);
+			// 
+			// _resultsTabControl
+			// 
+			this._resultsTabControl.ContextMenuStrip = this.ctxDataGrid;
+			this._resultsTabControl.Controls.Add(this.tabPageResults);
+			this._resultsTabControl.Dock = System.Windows.Forms.DockStyle.Fill;
+			this._resultsTabControl.Location = new System.Drawing.Point(0, 0);
+			this._resultsTabControl.Name = "_resultsTabControl";
+			this._resultsTabControl.SelectedIndex = 0;
+			this._resultsTabControl.Size = new System.Drawing.Size(1037, 274);
+			this._resultsTabControl.TabIndex = 0;
+			this._resultsTabControl.SelectedIndexChanged += new System.EventHandler(this.SetResultCountOnTabSelectedIndexChanged);
+			// 
+			// ctxDataGrid
+			// 
+			this.ctxDataGrid.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.selectAllToolStripMenuItem,
+            this.toolStripSeparator1,
+            this.copyToolStripMenuItem});
+			this.ctxDataGrid.Name = "ctxDataGrid";
+			this.ctxDataGrid.Size = new System.Drawing.Size(153, 76);
+			// 
+			// selectAllToolStripMenuItem
+			// 
+			this.selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem";
+			this.selectAllToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+			this.selectAllToolStripMenuItem.Text = "Select All";
+			this.selectAllToolStripMenuItem.Click += new System.EventHandler(this.selectAllToolStripMenuItem_Click);
+			// 
+			// toolStripSeparator1
+			// 
+			this.toolStripSeparator1.Name = "toolStripSeparator1";
+			this.toolStripSeparator1.Size = new System.Drawing.Size(149, 6);
+			// 
+			// copyToolStripMenuItem
+			// 
+			this.copyToolStripMenuItem.Name = "copyToolStripMenuItem";
+			this.copyToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+			this.copyToolStripMenuItem.Text = "Copy Selected";
+			this.copyToolStripMenuItem.Click += new System.EventHandler(this.copyToolStripMenuItem_Click);
+			// 
+			// tabPageResults
+			// 
+			this.tabPageResults.Controls.Add(this.gridResults1);
+			this.tabPageResults.Location = new System.Drawing.Point(4, 22);
+			this.tabPageResults.Name = "tabPageResults";
+			this.tabPageResults.Padding = new System.Windows.Forms.Padding(3);
+			this.tabPageResults.Size = new System.Drawing.Size(1029, 248);
+			this.tabPageResults.TabIndex = 0;
+			this.tabPageResults.Text = "Results";
+			this.tabPageResults.UseVisualStyleBackColor = true;
+			// 
+			// gridResults1
+			// 
+			this.gridResults1.AllowUserToAddRows = false;
+			this.gridResults1.AllowUserToDeleteRows = false;
+			this.gridResults1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.ColumnHeader;
+			this.gridResults1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+			this.gridResults1.Dock = System.Windows.Forms.DockStyle.Fill;
+			this.gridResults1.Location = new System.Drawing.Point(3, 3);
+			this.gridResults1.Name = "gridResults1";
+			this.gridResults1.ReadOnly = true;
+			this.gridResults1.Size = new System.Drawing.Size(1023, 242);
+			this.gridResults1.TabIndex = 0;
+			// 
+			// editorContextMenuStrip
+			// 
+			this.editorContextMenuStrip.Name = "editorContextMenuStrip";
+			this.editorContextMenuStrip.Size = new System.Drawing.Size(61, 4);
+			// 
+			// queryBackgroundWorker
+			// 
+			this.queryBackgroundWorker.WorkerReportsProgress = true;
+			this.queryBackgroundWorker.WorkerSupportsCancellation = true;
+			this.queryBackgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.queryBackgroundWorker_DoWork);
+			this.queryBackgroundWorker.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.queryBackgroundWorker_ProgressChanged);
+			this.queryBackgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.queryBackgroundWorker_RunWorkerCompleted);
+			// 
+			// QueryForm
+			// 
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.ClientSize = new System.Drawing.Size(1037, 508);
+			this.Controls.Add(this.splitContainer1);
+			this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+			this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+			this.Name = "QueryForm";
+			this.TabPageContextMenuStrip = this.editorContextMenuStrip;
+			this.TabText = "Query";
+			this.Text = "Query";
+			this.Activated += new System.EventHandler(this.QueryForm_Activated);
+			this.Deactivate += new System.EventHandler(this.QueryForm_Deactivate);
+			this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.QueryForm_FormClosing);
+			this.Load += new System.EventHandler(this.QueryForm_Load);
+			this.splitContainer1.Panel1.ResumeLayout(false);
+			this.splitContainer1.Panel2.ResumeLayout(false);
+			this.splitContainer1.ResumeLayout(false);
+			this._resultsTabControl.ResumeLayout(false);
+			this.ctxDataGrid.ResumeLayout(false);
+			this.tabPageResults.ResumeLayout(false);
+			((System.ComponentModel.ISupportInitialize)(this.gridResults1)).EndInit();
+			this.ResumeLayout(false);
+
+		}
+
+		#endregion
+
+		private System.Windows.Forms.SplitContainer splitContainer1;
+		private System.Windows.Forms.TabControl _resultsTabControl;
+		private System.Windows.Forms.TabPage tabPageResults;
+		private System.Windows.Forms.DataGridView gridResults1;
+		private System.Windows.Forms.ContextMenuStrip contextMenuStripQuery;
+		private ICSharpCode.TextEditor.TextEditorControl txtQuery;
+		private System.Windows.Forms.ContextMenuStrip editorContextMenuStrip;
+		protected System.ComponentModel.BackgroundWorker queryBackgroundWorker;
+        private System.Windows.Forms.ContextMenuStrip ctxDataGrid;
+        private System.Windows.Forms.ToolStripMenuItem selectAllToolStripMenuItem;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+        private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem;
+	}
+}
\ No newline at end of file
Added +161 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/QueryForm.resx b/minisqlquery-master/src/MiniSqlQuery/QueryForm.resx
new file mode 100644
index 0000000..ef6fa08
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/QueryForm.resx
@@ -0,0 +1,161 @@
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="contextMenuStripQuery.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>132, 20</value>
+  </metadata>
+  <metadata name="ctxDataGrid.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>657, 20</value>
+  </metadata>
+  <metadata name="editorContextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>300, 20</value>
+  </metadata>
+  <metadata name="queryBackgroundWorker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>483, 20</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.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>
+        AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAQAEAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAA////ALeCRwDrxpoA4qxfAJBbMQD74ssAwZ2AANOOVwDizroA5K6GAPvv5gDOr5UArYJfAPnV
+        tQCaaUEA2J5vALiQbQDYu6IAo3RPAMGNUwDot3cA7tnBAKp1QADu39MA6sCMAPzp2AD3x6IA2JZjAP34
+        8QDZpXsA7dCyAOnLpgC3hlYA0JpVAPrcvwDapFsA4p1pANWujADmsm0A6ryBAN+4hwCVYTkA38azAMek
+        hQD3z60AyJRXALF7QwC9iEsAnmk5AOfUwwD16uIA9d/GAOCgcAD97d8A+uXSANaSXQD159gA//v5AOzc
+        zQDLj1oA0p1xAPTawADeqF0AxI5OANebagD99ewA5LBoAMqUUgD64cYAuYVLAPjr2QD53cQAuYZSALSF
+        WQD8+fUA/fDiAP3x6wD79O8A+ujbAPnavAD96tsA//78AP3p1QD/9vAA+/PqAPXt4gD759QA++PQAPvt
+        4QD7698A++DJAPnbwgD9+vcA/PbwAP3w5wDUj1kA+ObTAPrkzAD538cA+t7CAOvKpQDWuqMA/fHkAP3r
+        3gD969gA+uLNAPjcwAD52sAA+dy9AP317gD76dUA+uXQAPjewgDw2cEA+uHKAPrcwwD53cEA///9AP7+
+        /QD//fsA//z6AP78+QD++/cA/fn0AP738QD98OUA/PDkAPzv4gD75tMA+uPRAPvjzAD74cgA+uDHAPne
+        xQD628EA+Nu/APjavQD//v0A/fr2AP728QD86tsA+uLKAPrdwwD53cMA+t3CAPndwgD63cEA+dzCAPnc
+        wQD53cAA+tvAAPrbvwD528AA+dy/APjbwAD43L8A+du8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAUFBQUqDxMNBQAAAAARZisyGDNOi4paCwcAAAAALAEBAQFSe32MCk8MAAAAADFKHhBB
+        HDhgCCWCEgAAAAAAJn4bLQ6JcUViQgkAAAAAACF3ZCOZmXWXdGg7FwAAAABJepqIa1yVko9XVi8AAAAA
+        RnuVnJyblpaQBksCAAAAADBeY20jh4+RSFt5FAAAAABAOTdQnZiTk0iEeC4AAAAAAHJZbJSGhY5qcIo8
+        RAAAAAAfVHODWIFvGo12PRYiAAAAZXhTaVE2TGd/ATU6KQAAAAMBgF9Nbh1deQF7PiQAAAAZAQEBAXxV
+        R2E0ID8AAAAABCgVJ0MEBAQEAAAAAPAHAACABwAAgAcAAIAHAADABwAAwAMAAMADAADAAwAAwAMAAMAD
+        AADgAQAA4AAAAOAAAADgAAAA4AEAAOAPAAA=
+</value>
+  </data>
+</root>
\ No newline at end of file
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/script.ico b/minisqlquery-master/src/MiniSqlQuery/script.ico
new file mode 100644
index 0000000..fdb67a7
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/script.ico differ
Added +162 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/SQL-Mode.xshd b/minisqlquery-master/src/MiniSqlQuery/SQL-Mode.xshd
new file mode 100644
index 0000000..508631e
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/SQL-Mode.xshd
@@ -0,0 +1,162 @@
+<?xml version="1.0"?>
+<!-- 
+Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+This source code is made available under the terms of the GNU Lesser General Public License v3.0
+https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+-->
+<SyntaxDefinition name = "SQL" extensions = ".sql">
+	<Properties>
+		<Property name="LineComment" value="--"/>
+	</Properties>
+	<Digits name = "Digits" bold = "true" italic = "false" color = "Blue"/>
+	<RuleSets>
+		<RuleSet ignorecase = "true">
+			<Delimiters>&amp;&lt;&gt;~!%^*()-+=|\#/{}[]:;"' ,	.?</Delimiters>
+			<Span name="String" bold="false" italic="false" color="Red" stopateol="false">
+				<Begin>'</Begin>
+				<End>'</End>
+			</Span>
+			<Span name = "LineComment" bold = "false" italic = "false" color = "Green" stopateol = "true">
+				<Begin>--</Begin>
+			</Span>
+			<Span name = "BlockComment" bold = "false" italic = "false" color = "Green" stopateol = "false">
+				<Begin>/*</Begin>
+				<End>*/</End>
+			</Span>
+			<KeyWords name="JoinKeywords" bold="true" italic="false" color="Purple">
+				<Key word="INNER" />
+				<Key word="JOIN" />
+				<Key word="LEFT" />
+				<Key word="RIGHT" />
+				<Key word="OUTER" />
+				<Key word="UNION" />
+			</KeyWords>
+			<KeyWords name="AliasKeywords" bold="false" italic="false" color="Maroon">
+				<Key word="AS" />
+			</KeyWords>
+			<KeyWords name="ComparisonKeywords" bold="true" italic="false" color="Navy">
+				<Key word="AND" />
+				<Key word="OR" />
+				<Key word="LIKE" />
+			</KeyWords>			
+			<KeyWords name="SpecializedKeywords" bold="true" italic="false" color="Gray">
+				<Key word="TOP" />
+				<Key word="LIMIT" />
+				<Key word="OPENDATASOURCE" />
+				<Key word="GO" />
+			</KeyWords>
+			<KeyWords name="DestructiveKeywords" bold="true" italic="false" color="Red">
+				<Key word="DROP" />
+				<Key word="DELETE" />
+				<Key word="TRUNCATE" />
+			</KeyWords>
+			<KeyWords name="SqlKeywordsBold" bold="true" italic="false" color="Blue">
+				<Key word="BEGIN" />
+				<Key word="END" />
+				<Key word="EXEC" />
+				<Key word="CREATE" />
+				<Key word="COMMIT" />
+				<Key word="RAISERROR" />
+				<Key word="ROLLBACK" />
+				<Key word="TRAN" />
+				<Key word="TRANSACTION" />
+				<Key word="USE" />
+				<Key word="USER" />
+				<Key word="VIEW" />
+			</KeyWords>
+			<KeyWords name="SqlKeywordsNormal" bold="false" italic="false" color="Blue">
+				<Key word="ADD" />
+				<Key word="ALL" />
+				<Key word="ANY" />
+				<Key word="ASC" />
+				<Key word="BETWEEN" />
+				<Key word="BREAK" />
+				<Key word="BY" />
+				<Key word="CASCADE" />
+				<Key word="CASE" />
+				<Key word="CHECK" />
+				<Key word="CHECKPOINT" />
+				<Key word="CLOSE" />
+				<Key word="COALESCE" />
+				<Key word="COLLATE" />
+				<Key word="COLUMN" />
+				<Key word="COMPUTE" />
+				<Key word="CONSTRAINT" />
+				<Key word="CONTAINS" />
+				<Key word="CONTINUE" />
+				<Key word="CONVERT" />
+				<Key word="CROSS" />
+				<Key word="CURSOR" />
+				<Key word="DECLARE" />
+				<Key word="DEFAULT" />
+				<Key word="DESC" />
+				<Key word="DISTINCT" />
+				<Key word="DOUBLE" />
+				<Key word="ELSE" />
+				<Key word="ESCAPE" />
+				<Key word="EXCEPT" />
+				<Key word="EXECUTE" />
+				<Key word="EXISTS" />
+				<Key word="EXIT" />
+				<Key word="FETCH" />
+				<Key word="FOR" />
+				<Key word="FROM" />
+				<Key word="FULL" />
+				<Key word="FUNCTION" />
+				<Key word="GOTO" />
+				<Key word="GROUP" />
+				<Key word="HAVING" />
+				<Key word="IDENTITY" />
+				<Key word="IDENTITY_INSERT" />
+				<Key word="IDENTITYCOL" />
+				<Key word="IF" />
+				<Key word="IN" />
+				<Key word="INSERT" />
+				<Key word="INTO" />
+				<Key word="IS" />
+				<Key word="KEY" />
+				<Key word="NOCHECK" />
+				<Key word="NOT" />
+				<Key word="NULL" />
+				<Key word="NULLIF" />
+				<Key word="OF" />
+				<Key word="OFF" />
+				<Key word="OFFSETS" />
+				<Key word="ON" />
+				<Key word="OPEN" />
+				<Key word="ORDER" />
+				<Key word="OVER" />
+				<Key word="PRECISION" />
+				<Key word="PROC" />
+				<Key word="PROCEDURE" />
+				<Key word="PUBLIC" />
+				<Key word="READ" />
+				<Key word="READTEXT" />
+				<Key word="REFERENCES" />
+				<Key word="RESTORE" />
+				<Key word="RESTRICT" />
+				<Key word="RETURN" />
+				<Key word="ROWCOUNT" />
+				<Key word="RULE" />
+				<Key word="SAVE" />
+				<Key word="SELECT" />
+				<Key word="SET" />
+				<Key word="SETUSER" />
+				<Key word="SOME" />
+				<Key word="TABLE" />
+				<Key word="THEN" />
+				<Key word="TO" />
+				<Key word="TRIGGER" />
+				<Key word="UNIQUE" />
+				<Key word="UPDATE" />
+				<Key word="VALUES" />
+				<Key word="VARYING" />
+				<Key word="WAITFOR" />
+				<Key word="WHEN" />
+				<Key word="WHERE" />
+				<Key word="WHILE" />
+				<Key word="WITH" />
+			</KeyWords>
+		</RuleSet>
+	</RuleSets>
+</SyntaxDefinition>
\ No newline at end of file
Added +9 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Templates/Create Table.sql.mt b/minisqlquery-master/src/MiniSqlQuery/Templates/Create Table.sql.mt
new file mode 100644
index 0000000..dcf75f1
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Templates/Create Table.sql.mt
@@ -0,0 +1,9 @@
+#@get TableName
+IF OBJECT_ID('${TableName}', 'U') IS NOT NULL
+  DROP TABLE [${TableName}]
+
+CREATE TABLE [${TableName}]
+(
+	${TableName}Id INT IDENTITY NOT NULL, 
+    CONSTRAINT PK_${TableName}Id PRIMARY KEY (${TableName}Id)
+)
Added +7 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Templates/New.sql.mt b/minisqlquery-master/src/MiniSqlQuery/Templates/New.sql.mt
new file mode 100644
index 0000000..b727d9d
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Templates/New.sql.mt
@@ -0,0 +1,7 @@
+/********************************************************\
+ File: 
+ Name: ${Host.UserName}
+ Date: ${Host.Date("dd MMM yyyy")}
+\********************************************************/
+
+
Added +1 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Templates/New.txt.mt b/minisqlquery-master/src/MiniSqlQuery/Templates/New.txt.mt
new file mode 100644
index 0000000..5f28270
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Templates/New.txt.mt
@@ -0,0 +1 @@
+
\ No newline at end of file
Added +4 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Templates/New.xml.mt b/minisqlquery-master/src/MiniSqlQuery/Templates/New.xml.mt
new file mode 100644
index 0000000..d77d8cd
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Templates/New.xml.mt
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<root>
+  
+</root>
\ No newline at end of file
Added +26 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - Advanced Looping.txt.mt b/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - Advanced Looping.txt.mt
new file mode 100644
index 0000000..18ed558
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - Advanced Looping.txt.mt
@@ -0,0 +1,26 @@
+## The following script demonstraits the advanced looping abilities using foreach.
+
+#foreach ($row in ${Data.Get(null, "Categories").Rows})
+#beforeall
+
+	I am before everything
+	
+#before
+		>>> (before each item)
+#each
+			"${Host.Data.ColumnValue($row, "Category Name")}"
+#after
+		<<< (after each item)
+#between
+	(i am between each line)
+#odd
+	[I am an odd row...]
+#even
+	[I am an even row]
+#nodata
+	(I appear if theres no data)
+#afterall
+
+	I am last.
+	
+#end
Added +8 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - CSharp Model.cs.mt b/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - CSharp Model.cs.mt
new file mode 100644
index 0000000..36bba22
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - CSharp Model.cs.mt
@@ -0,0 +1,8 @@
+#foreach ($table in $Host.Model.Tables)
+public class ${table.Name}
+{
+#foreach ($c in $table.Columns)
+	public ${c.DbType.SystemType} ${Host.ToPascalCase($c.Name)} { get; set; }
+#end
+}
+#end
Added +8 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - Plugin Access.txt.mt b/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - Plugin Access.txt.mt
new file mode 100644
index 0000000..3d0cee8
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - Plugin Access.txt.mt
@@ -0,0 +1,8 @@
+#@import-plugin MiniSqlQuery.PlugIns.CoreApplicationPlugIn
+
+\${MiniSqlQuery_PlugIns_CoreApplicationPlugIn.PluginName}:
+  "${MiniSqlQuery_PlugIns_CoreApplicationPlugIn.PluginName}"
+\${MiniSqlQuery_PlugIns_CoreApplicationPlugIn.PluginDescription}
+  "${MiniSqlQuery_PlugIns_CoreApplicationPlugIn.PluginDescription}"
+
+If the plugin also contains methods etc these can also be executed.
\ No newline at end of file
Added +14 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - Tables and Columns and DATA.txt.mt b/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - Tables and Columns and DATA.txt.mt
new file mode 100644
index 0000000..4f49d3c
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - Tables and Columns and DATA.txt.mt
@@ -0,0 +1,14 @@
+ConnectionString: "${Host.Model.ConnectionString}"
+ProviderName: "${Host.Model.ProviderName}"
+
+#foreach ($table in ${Host.Model.Tables})
+Table Data: ${table.FullName} (Row count: ${Data.Get(${table.Schema}, ${table.Name}).Rows.Count})
+
+#set($dataTable = $Host.Data.Get(${table.Schema}, ${table.Name}))
+#foreach ($row in $dataTable.Rows)
+#foreach ($c in ${table.Columns})
+${c.Name}: ${Host.Data.ColumnValue($row, $c.Name)}
+#end ## table columns
+#end ## table rows
+#end ## foreach table
+
Added +28 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - Tables and Columns.txt.mt b/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - Tables and Columns.txt.mt
new file mode 100644
index 0000000..fd60248
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - Tables and Columns.txt.mt
@@ -0,0 +1,28 @@
+ConnectionString: "${Host.Model.ConnectionString}"
+ProviderName: "${Host.Model.ProviderName}"
+
+#foreach ($table in ${Host.Model.Tables})
+Table: ${table.FullName}
+#foreach ($c in ${table.Columns})
+  * Column.Name:     ${c.Name}
+	DbType.Summary:  ${c.DbType.Summary}
+		Name:        ${c.DbType.Name}
+		Length:      ${c.DbType.Length}
+		Precision:   ${c.DbType.Precision}
+		Scale:       ${c.DbType.Scale}
+		SystemType:  ${c.DbType.SystemType}
+	Nullable:        ${c.Nullable}
+	IsKey:           ${c.IsKey}
+	IsUnique:        ${c.IsUnique}
+	IsRowVersion:    ${c.IsRowVersion}
+	IsIdentity:      ${c.IsIdentity}
+	IsAutoIncrement: ${c.IsAutoIncrement}
+	IsReadOnly:      ${c.IsReadOnly}
+	IsWritable:      ${c.IsWritable}
+	HasFK:           ${c.HasFK}
+#if($c.HasFK)
+	 ${c.ForeignKeyReference.ReferenceTable.FullName}.${c.ForeignKeyReference.ReferenceColumn.Name}
+#end ## hasFK
+#end ## foreach column
+#end ## foreach table
+
Added +38 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - WPF View Model.cs.mt b/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - WPF View Model.cs.mt
new file mode 100644
index 0000000..35b3a84
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Templates/Sample - WPF View Model.cs.mt
@@ -0,0 +1,38 @@
+## Example WPF "View Model" template
+## Assumes the use of something like http://mvvmfoundation.codeplex.com/ for the base classes etc
+
+## NOTE - "WIP"
+
+#foreach ($table in $Host.Model.Tables)
+#set($classNm = ${Host.ToPascalCase($table.Name)} )
+public class ${classNm}ViewModel : ObservableObject
+{
+	private ${classNm}Entity _entity;
+	
+	public ${classNm}ViewModel(${classNm}Entity entity)
+	{
+		_entity = entity;
+	}
+#foreach ($c in $table.Columns)
+#set($nm=$Host.ToPascalCase($c.Name))
+
+	public $c.DbType.SystemType.Name ${nm}
+	{
+		get { return _entity.${nm}; }
+		set
+		{
+			if (_entity.${nm} != value)
+			{
+				_entity.${nm} = value;
+				OnPropertyChanged("${nm}");
+			}
+		}
+	}
+#end
+
+	//TODO - sample commands, save etc
+}
+
+
+
+#end
\ No newline at end of file
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/x64/SQLite.Interop.dll b/minisqlquery-master/src/MiniSqlQuery/x64/SQLite.Interop.dll
new file mode 100644
index 0000000..2f59ce9
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/x64/SQLite.Interop.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/x86/SQLite.Interop.dll b/minisqlquery-master/src/MiniSqlQuery/x86/SQLite.Interop.dll
new file mode 100644
index 0000000..344b9ed
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQuery/x86/SQLite.Interop.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/MiniSqlQueryQuickStart.docx b/minisqlquery-master/src/MiniSqlQueryQuickStart.docx
new file mode 100644
index 0000000..10ca4bd
Binary files /dev/null and b/minisqlquery-master/src/MiniSqlQueryQuickStart.docx differ
Added +103 -0
diff --git a/minisqlquery-master/src/ReadMe.htm b/minisqlquery-master/src/ReadMe.htm
new file mode 100644
index 0000000..8681eba
--- /dev/null
+++ b/minisqlquery-master/src/ReadMe.htm
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Mini SQL Query Read Me</title>
+	<style type="text/css">
+		h1, h2, h3, h4
+		{
+			font-family: Verdana;
+		}
+		blockquote, p, ul, ol, li
+		{
+			font-family: Verdana;
+			font-size: small;
+		}
+	</style>
+</head>
+<body>
+	<h3>
+		Mini SQL Query
+	</h3>
+	<blockquote>
+		<p>
+			"<b>Mini SQL Query</b> from by Paul Kohler is a minimalist SQL query tool for multiple providers (MSSQL, Oracle, OLEDB,
+			MS Access, SQLite etc). The goal of the Mini SQL Query tool is to allow a developer or trouble-shooter to quickly diagnose issues or make changes to a database using a tool with a small footprint, is portable, fast, flexible and easy to use."
+		</p>
+	</blockquote>
+	<h4>
+		Features
+	</h4>
+	<p>
+		<b>Mini SQL Query</b> is now hosted as an open source project on GitHub,
+		see <a target="_blank" href="https://github.com/paulkohler/minisqlquery">https://github.com/paulkohler/minisqlquery</a>
+	</p>
+	<p>
+		<b>Mini SQL Query</b> is "deliberately minimalist". Software too often becomes bloated and less usable while trying to satisfy
+		the 99% of what every user wants. <b>Mini SQL Query </b>aims to satisfy the most common tasks what the average user seeks
+		to achieve, in doing so it keeps the size and complexity of the application to a minimum. 
+	</p>
+	<p>
+		The application was developed almost entirely using Microsoft's Visual Studio C# Express IDE.
+	</p>
+	<p>
+		Some Core features:
+	</p>
+	<ul>
+		<li>Supports multiple databases (MSSQL, MSSQL CE, MS Access, SQLite, Oracle, OLEDB etc)</li>
+		<li>Integrated text templating system for generating SQL, code or data scripts</li>
+		<li>Syntax highlighting (with printing support)</li>
+		<li>Load and save SQL script files</li>
+		<li>Generic batch support (using the 'GO' keyword but for any DB including SQLite, MSAccess etc)</li>
+		<li>Quick View table data</li>
+		<li>Basic query generation</li>
+		<li>Extensible programming model</li>
+	</ul>
+	<h4>
+		System Requirements
+	</h4>
+	<ul>
+		<li>Microsoft Windows (Windows 7, Vista, XP, Server 2003 etc)</li>
+		<li>Microsoft .NET Framework 4 (or higher, earlier releases worked on version 2 of 
+            the framework but the requirement has become distant)</li>
+	</ul>
+	<h4>
+		Product Website
+	</h4>
+	<p>
+		The product "home" of <b>Mini SQL Query</b> is <a target="_blank" href="https://github.com/paulkohler/minisqlquery">https://github.com/paulkohler/minisqlquery</a>
+		(previously hosted on CodePlex).
+	</p>
+	<h4>
+		License
+	</h4>
+	<p>
+		The project is run under the GLPLv3 license. See the "License-MiniSqlQuery.txt" file for the details.
+	</p>
+	<h4>
+		Thank You's
+	</h4>
+	<p>
+		Mini SQL Query relies on several other 'free/open source' products to pull together a simple but useful SQL working environment.
+		In no particular order, thank you...
+	</p>
+	<ul>
+		<li>Thanks to <b>Kent Carlsle</b> for his contributions (<a href="mailto:kdcarlisle@gmail.com">kdcarlisle@gmail.com</a>)</li>
+		<li><b>Mark James</b>, for the Silk icon set (<a target="_blank" href="http://www.famfamfam.com/">http://www.famfamfam.com/</a>)
+		</li>
+		<li><b>ic#code</b> for the <b>SharpDevelop</b>SharpDevelop project where I get the ICSharpCode.TextEditor from that removes
+			the need for using an plain old textbox (<a target="_blank" href="http://www.icsharpcode.net/OpenSource/SD/">http://www.icsharpcode.net/OpenSource/SD/</a></li>
+		<li><b>Weifen Luo</b> for his extremely easy to use WinForms docking suite (<a target="_blank" href="http://sourceforge.net/projects/dockpanelsuite/">http://sourceforge.net/projects/dockpanelsuite/</a>)</li>
+		<li>To the <b>Castle Project</b> (<a target="_blank" href="http://www.castleproject.org/">http://www.castleproject.org/</a>)
+			for the <b>NVelocity</b> text template engine port.</li>
+		<li>To the <b>Ninject</b> (<a target="_blank" href="http://www.ninject.org/">http://www.ninject.org/</a>)
+			for the dependency injection container.</li>
+	</ul>
+	<h4>
+		Extensibility
+	</h4>
+	<p>
+		Mini SQL Query uses a very simple and open plugin architecture to make extending the tool very straight forward. Make use
+		of the project plugin template (MiniSqlQuery.PlugIn.ProjectTemplate.zip) to get started.
+	</p>
+</body>
+</html>
Added +22 -0
diff --git a/minisqlquery-master/src/References/License-Icons.txt b/minisqlquery-master/src/References/License-Icons.txt
new file mode 100644
index 0000000..2cf67dc
--- /dev/null
+++ b/minisqlquery-master/src/References/License-Icons.txt
@@ -0,0 +1,22 @@
+Silk icon set 1.3
+
+_________________________________________
+Mark James
+http://www.famfamfam.com/lab/icons/silk/
+_________________________________________
+
+This work is licensed under a
+Creative Commons Attribution 2.5 License.
+[ http://creativecommons.org/licenses/by/2.5/ ]
+
+This means you may use it for any purpose,
+and make any changes you like.
+All I ask is that you include a link back
+to this page in your credits.
+
+Are you using this icon set? Send me an email
+(including a link or picture if available) to
+mjames@gmail.com
+
+Any other questions about this icon set please
+contact mjames@gmail.com
\ No newline at end of file
Added +458 -0
diff --git a/minisqlquery-master/src/References/License-ICSharpCode.TextEditor.txt b/minisqlquery-master/src/References/License-ICSharpCode.TextEditor.txt
new file mode 100644
index 0000000..e8fd74c
--- /dev/null
+++ b/minisqlquery-master/src/References/License-ICSharpCode.TextEditor.txt
@@ -0,0 +1,458 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
Added +56 -0
diff --git a/minisqlquery-master/src/References/License-NVelocity.txt b/minisqlquery-master/src/References/License-NVelocity.txt
new file mode 100644
index 0000000..fcf4b3b
--- /dev/null
+++ b/minisqlquery-master/src/References/License-NVelocity.txt
@@ -0,0 +1,56 @@
+/*
+ * ====================================================================
+ * 
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ *    any, must include the following acknowledgement:  
+ *       "This product includes software developed by the 
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgement may appear in the software itself,
+ *    if and wherever such third-party acknowledgements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "Velocity", and "Apache Software
+ *    Foundation" must not be used to endorse or promote products derived
+ *    from this software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    "Velocity" nor may "Apache" appear in their names without prior 
+ *    written permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
Added +9 -0
diff --git a/minisqlquery-master/src/References/License-WeifenLuo.WinFormsUI.Docking.txt b/minisqlquery-master/src/References/License-WeifenLuo.WinFormsUI.Docking.txt
new file mode 100644
index 0000000..96f3fa5
--- /dev/null
+++ b/minisqlquery-master/src/References/License-WeifenLuo.WinFormsUI.Docking.txt
@@ -0,0 +1,9 @@
+The MIT License
+
+Copyright (c) 2007 Weifen Luo (email: weifenluo@yahoo.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Added +0 -0
diff --git a/minisqlquery-master/src/SDK/MiniSqlQuery.PlugIn.ProjectTemplate.zip b/minisqlquery-master/src/SDK/MiniSqlQuery.PlugIn.ProjectTemplate.zip
new file mode 100644
index 0000000..813f3ed
Binary files /dev/null and b/minisqlquery-master/src/SDK/MiniSqlQuery.PlugIn.ProjectTemplate.zip differ
Added +0 -0
diff --git a/minisqlquery-master/src/SDK/MiniSqlQueryExtensibilityDocumentation.chm b/minisqlquery-master/src/SDK/MiniSqlQueryExtensibilityDocumentation.chm
new file mode 100644
index 0000000..150dcde
Binary files /dev/null and b/minisqlquery-master/src/SDK/MiniSqlQueryExtensibilityDocumentation.chm differ
Added +27 -0
diff --git a/minisqlquery-master/src/SDK/PlugInProjectTemplate/assemblyinfo.cs b/minisqlquery-master/src/SDK/PlugInProjectTemplate/assemblyinfo.cs
new file mode 100644
index 0000000..ae48888
--- /dev/null
+++ b/minisqlquery-master/src/SDK/PlugInProjectTemplate/assemblyinfo.cs
@@ -0,0 +1,27 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("$projectname$")]
+[assembly: AssemblyDescription("A Mini SQL Query Plugin for ")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("$registeredorganization$")]
+[assembly: AssemblyProduct("$projectname$")]
+[assembly: AssemblyCopyright("Copyright © $registeredorganization$ $year$")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: ComVisible(false)]
+[assembly: Guid("$guid1$")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Added +71 -0
diff --git a/minisqlquery-master/src/SDK/PlugInProjectTemplate/COMPANY.PLUGINNAME.PlugIn.csproj b/minisqlquery-master/src/SDK/PlugInProjectTemplate/COMPANY.PLUGINNAME.PlugIn.csproj
new file mode 100644
index 0000000..7bf2a34
--- /dev/null
+++ b/minisqlquery-master/src/SDK/PlugInProjectTemplate/COMPANY.PLUGINNAME.PlugIn.csproj
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.21022</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>$guid1$</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>$safeprojectname$</RootNamespace>
+    <AssemblyName>$safeprojectname$</AssemblyName>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\..\</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>..\..\..\Build\Debug</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="ICSharpCode.TextEditor">
+      <HintPath>..\..\..\References\ICSharpCode.TextEditor.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="MiniSqlQuery.Core">
+      <HintPath>..\..\..\Build\Debug\MiniSqlQuery.Core.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="WeifenLuo.WinFormsUI.Docking">
+      <HintPath>..\..\..\References\WeifenLuo.WinFormsUI.Docking.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Commands\SampleCommand.cs" />
+    <Compile Include="Form1.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Form1.Designer.cs">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Loader.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </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>
+  -->
+</Project>
\ No newline at end of file
Added +22 -0
diff --git a/minisqlquery-master/src/SDK/PlugInProjectTemplate/csWindowsApplication.vstemplate b/minisqlquery-master/src/SDK/PlugInProjectTemplate/csWindowsApplication.vstemplate
new file mode 100644
index 0000000..856ab35
--- /dev/null
+++ b/minisqlquery-master/src/SDK/PlugInProjectTemplate/csWindowsApplication.vstemplate
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<VSTemplate Version="3.0.0" Type="Project" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
+	<TemplateData>
+		<Name>Mini SQL Query Plugin</Name>
+		<Description>A Mini SQL plugin DLL.</Description>
+		<Icon>minisqlqueryplugin.ico</Icon>
+		<ProjectType>CSharp</ProjectType>
+		<RequiredFrameworkVersion>2.0</RequiredFrameworkVersion>
+		<CreateNewFolder>true</CreateNewFolder>
+		<DefaultName>COMPANY.PLUGINNAME.PlugIn</DefaultName>
+		<ProvideDefaultName>true</ProvideDefaultName>
+	</TemplateData>
+	<TemplateContent>
+		<Project File="COMPANY.PLUGINNAME.PlugIn.csproj" ReplaceParameters="true">
+			<ProjectItem ReplaceParameters="true" TargetFileName="Properties\AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
+			<ProjectItem ReplaceParameters="true" TargetFileName="Commands\SampleCommand.cs">SampleCommand.cs</ProjectItem>
+			<ProjectItem ReplaceParameters="true">Form1.cs</ProjectItem>
+			<ProjectItem ReplaceParameters="true">Form1.Designer.cs</ProjectItem>
+			<ProjectItem ReplaceParameters="true" OpenInEditor="true">Loader.cs</ProjectItem>
+		</Project>
+	</TemplateContent>
+</VSTemplate>
Added +17 -0
diff --git a/minisqlquery-master/src/SDK/PlugInProjectTemplate/form1.cs b/minisqlquery-master/src/SDK/PlugInProjectTemplate/form1.cs
new file mode 100644
index 0000000..f9f82fc
--- /dev/null
+++ b/minisqlquery-master/src/SDK/PlugInProjectTemplate/form1.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+namespace $safeprojectname$
+{
+	public partial class Form1: Form
+	{
+		public Form1()
+		{
+			InitializeComponent();
+		}    
+	}
+}
Added +39 -0
diff --git a/minisqlquery-master/src/SDK/PlugInProjectTemplate/form1.designer.cs b/minisqlquery-master/src/SDK/PlugInProjectTemplate/form1.designer.cs
new file mode 100644
index 0000000..15f9ec3
--- /dev/null
+++ b/minisqlquery-master/src/SDK/PlugInProjectTemplate/form1.designer.cs
@@ -0,0 +1,39 @@
+namespace $safeprojectname$
+{
+	partial class Form1
+	{
+		/// <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();
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.Text = "Form1";
+		}
+
+		#endregion
+	}
+}
+
Added +21 -0
diff --git a/minisqlquery-master/src/SDK/PlugInProjectTemplate/Loader.cs b/minisqlquery-master/src/SDK/PlugInProjectTemplate/Loader.cs
new file mode 100644
index 0000000..13041f3
--- /dev/null
+++ b/minisqlquery-master/src/SDK/PlugInProjectTemplate/Loader.cs
@@ -0,0 +1,21 @@
+using System;
+using $safeprojectname$.Commands;
+using MiniSqlQuery.Core;
+
+namespace $safeprojectname$
+{
+	public class Loader : PluginLoaderBase
+	{
+		public Loader() : base(
+			"My Plugin Name", 
+			"My Plugin Description.")
+		{
+		}
+
+		public override void InitializePlugIn()
+		{
+			Services.HostWindow.AddPluginCommand<SampleCommand>();
+			Services.HostWindow.AddToolStripCommand<SampleCommand>(null);
+		}
+	}
+}
Added +0 -0
diff --git a/minisqlquery-master/src/SDK/PlugInProjectTemplate/minisqlqueryplugin.ico b/minisqlquery-master/src/SDK/PlugInProjectTemplate/minisqlqueryplugin.ico
new file mode 100644
index 0000000..0ca98fa
Binary files /dev/null and b/minisqlquery-master/src/SDK/PlugInProjectTemplate/minisqlqueryplugin.ico differ
Added +20 -0
diff --git a/minisqlquery-master/src/SDK/PlugInProjectTemplate/SampleCommand.cs b/minisqlquery-master/src/SDK/PlugInProjectTemplate/SampleCommand.cs
new file mode 100644
index 0000000..941c2bb
--- /dev/null
+++ b/minisqlquery-master/src/SDK/PlugInProjectTemplate/SampleCommand.cs
@@ -0,0 +1,20 @@
+using System;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+
+namespace $safeprojectname$.Commands
+{
+	public class SampleCommand : CommandBase
+    {
+		public SampleCommand() : base("&Descriptive Name")
+		{
+			SmallImage = ImageResource.plugin;
+        }
+
+        public override void Execute()
+        {
+			Form1 frm = new Form1();
+			frm.ShowDialog(Services.HostWindow.Instance);
+        }
+    }
+}
Added +2 -0
diff --git a/minisqlquery-master/src/SDK/ReadMe.txt b/minisqlquery-master/src/SDK/ReadMe.txt
new file mode 100644
index 0000000..41472f4
--- /dev/null
+++ b/minisqlquery-master/src/SDK/ReadMe.txt
@@ -0,0 +1,2 @@
+Doco and a plugin project, dump into <userdocs>\Visual Studio 2008\Templates\ProjectTemplates\Visual C#
+ e.g. "C:\Users\Paul\Documents\Visual Studio 2008\Templates\ProjectTemplates\Visual C#"
\ No newline at end of file
Added +88 -0
diff --git a/minisqlquery-master/src/Settings.StyleCop b/minisqlquery-master/src/Settings.StyleCop
new file mode 100644
index 0000000..dc16ec9
--- /dev/null
+++ b/minisqlquery-master/src/Settings.StyleCop
@@ -0,0 +1,88 @@
+<StyleCopSettings Version="4.3">
+  <Analyzers>
+    <Analyzer AnalyzerId="Microsoft.StyleCop.CSharp.SpacingRules">
+      <Rules>
+        <Rule Name="TabsMustNotBeUsed">
+          <RuleSettings>
+            <BooleanProperty Name="Enabled">False</BooleanProperty>
+          </RuleSettings>
+        </Rule>
+      </Rules>
+      <AnalyzerSettings />
+    </Analyzer>
+    <Analyzer AnalyzerId="Microsoft.StyleCop.CSharp.NamingRules">
+      <Rules>
+        <Rule Name="FieldNamesMustNotBeginWithUnderscore">
+          <RuleSettings>
+            <BooleanProperty Name="Enabled">False</BooleanProperty>
+          </RuleSettings>
+        </Rule>
+      </Rules>
+      <AnalyzerSettings>
+        <CollectionProperty Name="Hungarian">
+          <Value>db</Value>
+          <Value>fk</Value>
+          <Value>pk</Value>
+        </CollectionProperty>
+      </AnalyzerSettings>
+    </Analyzer>
+    <Analyzer AnalyzerId="Microsoft.StyleCop.CSharp.ReadabilityRules">
+      <Rules>
+        <Rule Name="PrefixLocalCallsWithThis">
+          <RuleSettings>
+            <BooleanProperty Name="Enabled">False</BooleanProperty>
+          </RuleSettings>
+        </Rule>
+      </Rules>
+      <AnalyzerSettings />
+    </Analyzer>
+    <Analyzer AnalyzerId="Microsoft.StyleCop.CSharp.OrderingRules">
+      <Rules>
+        <Rule Name="UsingDirectivesMustBePlacedWithinNamespace">
+          <RuleSettings>
+            <BooleanProperty Name="Enabled">False</BooleanProperty>
+          </RuleSettings>
+        </Rule>
+      </Rules>
+      <AnalyzerSettings />
+    </Analyzer>
+    <Analyzer AnalyzerId="Microsoft.StyleCop.CSharp.DocumentationRules">
+      <Rules>
+        <Rule Name="FileMustHaveHeader">
+          <RuleSettings>
+            <BooleanProperty Name="Enabled">False</BooleanProperty>
+          </RuleSettings>
+        </Rule>
+        <Rule Name="FileHeaderMustShowCopyright">
+          <RuleSettings>
+            <BooleanProperty Name="Enabled">False</BooleanProperty>
+          </RuleSettings>
+        </Rule>
+        <Rule Name="FileHeaderMustHaveCopyrightText">
+          <RuleSettings>
+            <BooleanProperty Name="Enabled">False</BooleanProperty>
+          </RuleSettings>
+        </Rule>
+        <Rule Name="FileHeaderMustContainFileName">
+          <RuleSettings>
+            <BooleanProperty Name="Enabled">False</BooleanProperty>
+          </RuleSettings>
+        </Rule>
+        <Rule Name="FileHeaderFileNameDocumentationMustMatchFileName">
+          <RuleSettings>
+            <BooleanProperty Name="Enabled">False</BooleanProperty>
+          </RuleSettings>
+        </Rule>
+        <Rule Name="FileHeaderMustHaveValidCompanyText">
+          <RuleSettings>
+            <BooleanProperty Name="Enabled">False</BooleanProperty>
+          </RuleSettings>
+        </Rule>
+      </Rules>
+      <AnalyzerSettings>
+        <StringProperty Name="CompanyName">Paul Kohler</StringProperty>
+        <StringProperty Name="Copyright">Copyright (C) 2005-2010 Paul Kohler</StringProperty>
+      </AnalyzerSettings>
+    </Analyzer>
+  </Analyzers>
+</StyleCopSettings>
\ No newline at end of file
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.dll b/minisqlquery-master/src/Tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.dll
new file mode 100644
index 0000000..f8b028f
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.dll differ
Added +36 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.xml b/minisqlquery-master/src/Tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.xml
new file mode 100644
index 0000000..0f179af
--- /dev/null
+++ b/minisqlquery-master/src/Tools/nant/bin/extensions/common/2.0/NAnt.MSBuild.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>NAnt.MSBuild</name>
+    </assembly>
+    <members>
+        <member name="T:NAnt.MSBuild.Functions.MSBuildFunctions">
+            <summary>
+            Functions to return information for MSBuild system.
+            </summary>
+        </member>
+        <member name="M:NAnt.MSBuild.Functions.MSBuildFunctions.#ctor(NAnt.Core.Project,NAnt.Core.PropertyDictionary)">
+            <exclude/>
+        </member>
+        <member name="M:NAnt.MSBuild.Functions.MSBuildFunctions.IsMsbuildProject(System.String)">
+            <summary>
+            Test whether project is VS2005 project and could be built using &lt;msbuild&gt;
+            </summary>
+            <param name="project">The name or path of the project file (csproj, vbproj, ...).</param>
+            <returns>
+            True, if it is msbuild project, False otherwise.
+            </returns>
+        </member>
+        <member name="M:NAnt.MSBuild.NAntLogger.Initialize(Microsoft.Build.Framework.IEventSource)">
+            <summary>
+            Initialize is guaranteed to be called by MSBuild at the start of the build
+            before any events are raised.
+            </summary>
+        </member>
+        <member name="T:NAnt.VSNet.WhidbeySolution">
+            <summary>
+            Analyses Microsoft Visual Studio .NET 2005 (Whidbey) solution files.
+            </summary>
+        </member>
+    </members>
+</doc>
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/1.1/nunit.core.dll b/minisqlquery-master/src/Tools/nant/bin/lib/common/1.1/nunit.core.dll
new file mode 100644
index 0000000..df7f905
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/1.1/nunit.core.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/1.1/nunit.framework.dll b/minisqlquery-master/src/Tools/nant/bin/lib/common/1.1/nunit.framework.dll
new file mode 100644
index 0000000..5316687
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/1.1/nunit.framework.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/1.1/nunit.util.dll b/minisqlquery-master/src/Tools/nant/bin/lib/common/1.1/nunit.util.dll
new file mode 100644
index 0000000..e9e479e
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/1.1/nunit.util.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/1.1/nunit-console.exe b/minisqlquery-master/src/Tools/nant/bin/lib/common/1.1/nunit-console.exe
new file mode 100644
index 0000000..32ca802
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/1.1/nunit-console.exe differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/1.1/nunit-console-runner.dll b/minisqlquery-master/src/Tools/nant/bin/lib/common/1.1/nunit-console-runner.dll
new file mode 100644
index 0000000..f112e23
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/1.1/nunit-console-runner.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/2.0/nunit.core.dll b/minisqlquery-master/src/Tools/nant/bin/lib/common/2.0/nunit.core.dll
new file mode 100644
index 0000000..a11e623
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/2.0/nunit.core.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/2.0/nunit.framework.dll b/minisqlquery-master/src/Tools/nant/bin/lib/common/2.0/nunit.framework.dll
new file mode 100644
index 0000000..44704bd
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/2.0/nunit.framework.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/2.0/nunit.util.dll b/minisqlquery-master/src/Tools/nant/bin/lib/common/2.0/nunit.util.dll
new file mode 100644
index 0000000..8fff811
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/2.0/nunit.util.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/2.0/nunit-console.exe b/minisqlquery-master/src/Tools/nant/bin/lib/common/2.0/nunit-console.exe
new file mode 100644
index 0000000..24fda7e
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/2.0/nunit-console.exe differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/2.0/nunit-console-runner.dll b/minisqlquery-master/src/Tools/nant/bin/lib/common/2.0/nunit-console-runner.dll
new file mode 100644
index 0000000..6a6b5e2
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/2.0/nunit-console-runner.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/ICSharpCode.SharpCvsLib.Console.dll b/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/ICSharpCode.SharpCvsLib.Console.dll
new file mode 100644
index 0000000..fcca99e
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/ICSharpCode.SharpCvsLib.Console.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/ICSharpCode.SharpCvsLib.dll b/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/ICSharpCode.SharpCvsLib.dll
new file mode 100644
index 0000000..fcd2d1a
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/ICSharpCode.SharpCvsLib.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/ICSharpCode.SharpZipLib.dll b/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/ICSharpCode.SharpZipLib.dll
new file mode 100644
index 0000000..83cd1da
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/ICSharpCode.SharpZipLib.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/NDoc.Core.dll b/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/NDoc.Core.dll
new file mode 100644
index 0000000..07fbbe8
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/NDoc.Core.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/NDoc.Documenter.Msdn.dll b/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/NDoc.Documenter.Msdn.dll
new file mode 100644
index 0000000..986998c
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/NDoc.Documenter.Msdn.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/NDoc.ExtendedUI.dll b/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/NDoc.ExtendedUI.dll
new file mode 100644
index 0000000..bc3d5a4
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/NDoc.ExtendedUI.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/NUnitCore.dll b/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/NUnitCore.dll
new file mode 100644
index 0000000..0f1873c
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/common/neutral/NUnitCore.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/NDoc.Core.dll b/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/NDoc.Core.dll
new file mode 100644
index 0000000..351e001
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/NDoc.Core.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/NDoc.Documenter.Msdn.dll b/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/NDoc.Documenter.Msdn.dll
new file mode 100644
index 0000000..c492f02
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/NDoc.Documenter.Msdn.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/NDoc.ExtendedUI.dll b/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/NDoc.ExtendedUI.dll
new file mode 100644
index 0000000..5ebcc27
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/NDoc.ExtendedUI.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/nunit.core.dll b/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/nunit.core.dll
new file mode 100644
index 0000000..7b1916e
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/nunit.core.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/nunit.framework.dll b/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/nunit.framework.dll
new file mode 100644
index 0000000..6038b27
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/nunit.framework.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/nunit.util.dll b/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/nunit.util.dll
new file mode 100644
index 0000000..a778921
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/nunit.util.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/nunit-console.exe b/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/nunit-console.exe
new file mode 100644
index 0000000..c25a7cc
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/nunit-console.exe differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/nunit-console-runner.dll b/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/nunit-console-runner.dll
new file mode 100644
index 0000000..cd6050b
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/net/1.0/nunit-console-runner.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/NDoc.Core.dll b/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/NDoc.Core.dll
new file mode 100644
index 0000000..84931f6
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/NDoc.Core.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/NDoc.Documenter.Msdn.dll b/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/NDoc.Documenter.Msdn.dll
new file mode 100644
index 0000000..bcda527
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/NDoc.Documenter.Msdn.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/NDoc.ExtendedUI.dll b/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/NDoc.ExtendedUI.dll
new file mode 100644
index 0000000..2132a5c
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/NDoc.ExtendedUI.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/nunit.core.dll b/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/nunit.core.dll
new file mode 100644
index 0000000..a11e623
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/nunit.core.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/nunit.framework.dll b/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/nunit.framework.dll
new file mode 100644
index 0000000..44704bd
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/nunit.framework.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/nunit.util.dll b/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/nunit.util.dll
new file mode 100644
index 0000000..8fff811
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/lib/net/2.0/nunit.util.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/log4net.dll b/minisqlquery-master/src/Tools/nant/bin/log4net.dll
new file mode 100644
index 0000000..f377286
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/log4net.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/NAnt.CompressionTasks.dll b/minisqlquery-master/src/Tools/nant/bin/NAnt.CompressionTasks.dll
new file mode 100644
index 0000000..0b5eddc
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/NAnt.CompressionTasks.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/NAnt.Core.dll b/minisqlquery-master/src/Tools/nant/bin/NAnt.Core.dll
new file mode 100644
index 0000000..8b3741a
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/NAnt.Core.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/NAnt.DotNetTasks.dll b/minisqlquery-master/src/Tools/nant/bin/NAnt.DotNetTasks.dll
new file mode 100644
index 0000000..3c74d58
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/NAnt.DotNetTasks.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/NAnt.exe b/minisqlquery-master/src/Tools/nant/bin/NAnt.exe
new file mode 100644
index 0000000..c41374a
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/NAnt.exe differ
Added +2323 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/NAnt.exe.config b/minisqlquery-master/src/Tools/nant/bin/NAnt.exe.config
new file mode 100644
index 0000000..53291fd
--- /dev/null
+++ b/minisqlquery-master/src/Tools/nant/bin/NAnt.exe.config
@@ -0,0 +1,2323 @@
+<?xml version="1.0"?>
+<configuration>
+    <!-- Leave this alone. Sets up configsectionhandler section -->
+    <configSections>
+        <section name="nant" type="NAnt.Core.ConfigurationSection, NAnt.Core" />
+        <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
+    </configSections>
+    <appSettings>
+        <!-- Used to indicate the location of the cache folder for shadow files -->
+        <add key="shadowfiles.path" value="%temp%\nunit20\ShadowCopyCache" />
+        <!-- Used to indicate that NAnt should shadow copy files in a cache folder near the executable -->
+        <add key="nant.shadowfiles" value="False" />
+        <!-- Used to indicate if cached files should be deleted when done running-->
+        <add key="nant.shadowfiles.cleanup" value="False" />
+        <!-- To enable internal log4net logging, uncomment the next line -->
+        <!-- <add key="log4net.Internal.Debug" value="true"/> -->
+    </appSettings>
+    <!-- nant config settings -->
+    <nant>
+        <frameworks>
+            <platform name="win32" default="auto">
+                <task-assemblies>
+                        <!-- include NAnt task assemblies -->
+                        <include name="*Tasks.dll" />
+                        <!-- include NAnt test assemblies -->
+                        <include name="*Tests.dll" />
+                        <!-- include framework-neutral assemblies -->
+                        <include name="extensions/common/neutral/**/*.dll" />
+                        <!-- exclude Microsoft.NET specific task assembly -->
+                        <exclude name="NAnt.MSNetTasks.dll" />
+                        <!-- exclude Microsoft.NET specific test assembly -->
+                        <exclude name="NAnt.MSNet.Tests.dll" />
+                </task-assemblies>
+                <framework 
+                    name="net-1.0"
+                    family="net"
+                    version="1.0"
+                    description="Microsoft .NET Framework 1.0"
+                    sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
+                    frameworkdirectory="${path::combine(installRoot, 'v1.0.3705')}"
+                    frameworkassemblydirectory="${path::combine(installRoot, 'v1.0.3705')}"
+                    clrversion="1.0.3705"
+                    clrtype="Desktop"
+                    vendor="Microsoft"
+                    >
+                    <runtime>
+                        <probing-paths>
+                            <directory name="lib/net/1.0" />
+                            <directory name="lib/net/neutral" />
+                            <directory name="lib/common/1.0" />
+                            <directory name="lib/common/neutral" />
+                        </probing-paths>
+                        <modes>
+                            <strict>
+                                <environment>
+                                    <variable name="COMPLUS_VERSION" value="v1.0.3705" />
+                                </environment>
+                            </strict>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="${path::combine(installRoot, 'v1.0.3705')}">
+                        <include name="Accessibility.dll" />
+                        <include name="cscompmgd.dll" />
+                        <include name="mscorlib.dll" />
+                        <include name="Microsoft.Vsa.dll" />
+                        <include name="Microsoft.VisualBasic.dll" />
+                        <include name="System.Configuration.Install.dll" />
+                        <include name="System.Data.dll" />
+                        <include name="System.Design.dll" />
+                        <include name="System.DirectoryServices.dll" />
+                        <include name="System.dll" />
+                        <include name="System.Drawing.Design.dll" />
+                        <include name="System.Drawing.dll" />
+                        <include name="System.EnterpriseServices.dll" />
+                        <include name="System.Management.dll" />
+                        <include name="System.Messaging.dll" />
+                        <include name="System.Runtime.Remoting.dll" />
+                        <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
+                        <include name="System.Security.dll" />
+                        <include name="System.ServiceProcess.dll" />
+                        <include name="System.Web.dll" />
+                        <include name="System.Web.RegularExpressions.dll" />
+                        <include name="System.Web.Services.dll" />
+                        <include name="System.Windows.Forms.dll" />
+                        <include name="System.XML.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- include MS.NET version-neutral assemblies -->
+                        <include name="extensions/net/neutral/**/*.dll" />
+                        <!-- include MS.NET 1.0 specific assemblies -->
+                        <include name="extensions/net/1.0/**/*.dll" />
+                        <!-- include Microsoft.NET specific task assembly -->
+                        <include name="NAnt.MSNetTasks.dll" />
+                        <!-- include Microsoft.NET specific test assembly -->
+                        <include name="NAnt.MSNet.Tests.dll" />
+                        <!-- include .NET 1.0 specific assemblies -->
+                        <include name="extensions/common/1.0/**/*.dll" />
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="${path::combine(sdkInstallRoot, 'bin')}"
+                            if="${property::exists('sdkInstallRoot')}" />
+                        <directory name="${path::combine(installRoot, 'v1.0.3705')}" />
+                    </tool-paths>
+                    <project>
+                        <readregistry
+                            property="installRoot"
+                            key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+                            hive="LocalMachine" />
+                        <readregistry
+                            property="sdkInstallRoot"
+                            key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRoot"
+                            hive="LocalMachine"
+                            failonerror="false" />
+                    </project>
+                    <tasks>
+                        <task name="csc">
+                            <attribute name="supportsnowarnlist">true</attribute>
+                        </task>
+                        <task name="vjc">
+                            <attribute name="supportsnowarnlist">true</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="exename">lc</attribute>
+                        </task>
+                        <task name="aximp">
+                            <attribute name="supportsrcw">false</attribute>
+                        </task>
+                        <task name="tlbimp">
+                            <attribute name="supportstransform">false</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+                <framework 
+                    name="net-1.1"
+                    family="net"
+                    version="1.1"
+                    description="Microsoft .NET Framework 1.1"
+                    sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
+                    frameworkdirectory="${path::combine(installRoot, 'v1.1.4322')}"
+                    frameworkassemblydirectory="${path::combine(installRoot, 'v1.1.4322')}"
+                    clrversion="1.1.4322"
+                    clrtype="Desktop"
+                    vendor="Microsoft"
+                    >
+                    <runtime>
+                        <probing-paths>
+                            <directory name="lib/net/1.1" />
+                            <directory name="lib/net/neutral" />
+                            <directory name="lib/common/1.1" />
+                            <directory name="lib/common/neutral" />
+                        </probing-paths>
+                        <modes>
+                            <strict>
+                                <environment>
+                                    <variable name="COMPLUS_VERSION" value="v1.1.4322" />
+                                </environment>
+                            </strict>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="${path::combine(installRoot, 'v1.1.4322')}">
+                        <include name="Accessibility.dll" />
+                        <include name="cscompmgd.dll" />
+                        <include name="mscorlib.dll" />
+                        <include name="Microsoft.Vsa.dll" />
+                        <include name="Microsoft.VisualBasic.dll" />
+                        <include name="Microsoft.VisualBasic.Compatibility.dll" />
+                        <include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
+                        <include name="System.Configuration.Install.dll" />
+                        <include name="System.Data.dll" />
+                        <include name="System.Data.OracleClient.dll" />
+                        <include name="System.Design.dll" />
+                        <include name="System.DirectoryServices.dll" />
+                        <include name="System.dll" />
+                        <include name="System.Drawing.Design.dll" />
+                        <include name="System.Drawing.dll" />
+                        <include name="System.EnterpriseServices.dll" />
+                        <include name="System.Management.dll" />
+                        <include name="System.Messaging.dll" />
+                        <include name="System.Runtime.Remoting.dll" />
+                        <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
+                        <include name="System.Security.dll" />
+                        <include name="System.ServiceProcess.dll" />
+                        <include name="System.Web.dll" />
+                        <include name="System.Web.Mobile.dll" />
+                        <include name="System.Web.RegularExpressions.dll" />
+                        <include name="System.Web.Services.dll" />
+                        <include name="System.Windows.Forms.dll" />
+                        <include name="System.XML.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- include MS.NET version-neutral assemblies -->
+                        <include name="extensions/net/neutral/**/*.dll" />
+                        <!-- include MS.NET 1.1 specific assemblies -->
+                        <include name="extensions/net/1.1/**/*.dll" />
+                        <!-- include MS.NET specific task assembly -->
+                        <include name="NAnt.MSNetTasks.dll" />
+                        <!-- include MS.NET specific test assembly -->
+                        <include name="NAnt.MSNet.Tests.dll" />
+                        <!-- include .NET 1.1 specific assemblies -->
+                        <include name="extensions/common/1.1/**/*.dll" />
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="${path::combine(sdkInstallRoot, 'bin')}"
+                            if="${property::exists('sdkInstallRoot')}" />
+                        <directory name="${path::combine(installRoot, 'v1.1.4322')}" />
+                    </tool-paths>
+                    <project>
+                        <readregistry 
+                            property="installRoot"
+                            key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+                            hive="LocalMachine" />
+                        <readregistry 
+                            property="sdkInstallRoot"
+                            key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv1.1"
+                            hive="LocalMachine"
+                            failonerror="false" />
+                    </project>
+                    <tasks>
+                        <task name="csc">
+                            <attribute name="supportsnowarnlist">true</attribute>
+                        </task>
+                        <task name="vjc">
+                            <attribute name="supportsnowarnlist">true</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="exename">lc</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+                <framework 
+                    name="net-2.0"
+                    family="net"
+                    version="2.0"
+                    description="Microsoft .NET Framework 2.0"
+                    sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
+                    frameworkdirectory="${path::combine(installRoot, 'v2.0.50727')}"
+                    frameworkassemblydirectory="${path::combine(installRoot, 'v2.0.50727')}"
+                    clrversion="2.0.50727"
+                    clrtype="Desktop"
+                    vendor="Microsoft"
+                    >
+                    <runtime>
+                        <probing-paths>
+                            <directory name="lib/net/2.0" />
+                            <directory name="lib/net/neutral" />
+                            <directory name="lib/common/2.0" />
+                            <directory name="lib/common/neutral" />
+                        </probing-paths>
+                        <modes>
+                            <strict>
+                                <environment>
+                                    <variable name="COMPLUS_VERSION" value="v2.0.50727" />
+                                </environment>
+                            </strict>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="${path::combine(installRoot, 'v2.0.50727')}">
+                        <include name="Accessibility.dll" />
+                        <include name="cscompmgd.dll" />
+                        <include name="mscorlib.dll" />
+                        <include name="Microsoft.Build.Engine.dll" />
+                        <include name="Microsoft.Build.Framework.dll" />
+                        <include name="Microsoft.Build.Utilities.dll" />
+                        <include name="Microsoft.Vsa.dll" />
+                        <include name="Microsoft.VisualBasic.dll" />
+                        <include name="Microsoft.VisualBasic.Compatibility.dll" />
+                        <include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
+                        <include name="System.Configuration.dll" />
+                        <include name="System.Configuration.Install.dll" />
+                        <include name="System.Data.dll" />
+                        <include name="System.Data.OracleClient.dll" />
+                        <include name="System.Data.SqlXml.dll" />
+                        <include name="System.Deployment.dll" />
+                        <include name="System.Design.dll" />
+                        <include name="System.DirectoryServices.dll" />
+                        <include name="System.dll" />
+                        <include name="System.Drawing.Design.dll" />
+                        <include name="System.Drawing.dll" />
+                        <include name="System.EnterpriseServices.dll" />
+                        <include name="System.Management.dll" />
+                        <include name="System.Messaging.dll" />
+                        <include name="System.Runtime.Remoting.dll" />
+                        <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
+                        <include name="System.Security.dll" />
+                        <include name="System.ServiceProcess.dll" />
+                        <include name="System.Transactions.dll" />
+                        <include name="System.Web.dll" />
+                        <include name="System.Web.Mobile.dll" />
+                        <include name="System.Web.RegularExpressions.dll" />
+                        <include name="System.Web.Services.dll" />
+                        <include name="System.Windows.Forms.dll" />
+                        <include name="System.XML.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- include MS.NET version-neutral assemblies -->
+                        <include name="extensions/net/neutral/**/*.dll" />
+                        <!-- include MS.NET 2.0 specific assemblies -->
+                        <include name="extensions/net/2.0/**/*.dll" />
+                        <!-- include MS.NET specific task assembly -->
+                        <include name="NAnt.MSNetTasks.dll" />
+                        <!-- include MS.NET specific test assembly -->
+                        <include name="NAnt.MSNet.Tests.dll" />
+                        <!-- include .NET 2.0 specific assemblies -->
+                        <include name="extensions/common/2.0/**/*.dll" />
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="${path::combine(sdkInstallRoot, 'bin')}"
+                            if="${property::exists('sdkInstallRoot')}" />
+                        <directory name="${path::combine(installRoot, 'v2.0.50727')}" />
+                    </tool-paths>
+                    <project>
+                        <readregistry
+                            property="installRoot"
+                            key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+                            hive="LocalMachine" />
+                        <readregistry
+                            property="sdkInstallRoot"
+                            key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv2.0"
+                            hive="LocalMachine"
+                            failonerror="false" />
+                    </project>
+                    <tasks>
+                        <task name="csc">
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportswarnaserrorlist">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportsplatform">true</attribute>
+                            <attribute name="supportslangversion">true</attribute>
+                        </task>
+                        <task name="vbc">
+                            <attribute name="supportsdocgeneration">true</attribute>
+                            <attribute name="supportsnostdlib">true</attribute>
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportsplatform">true</attribute>
+                            <attribute name="supportswarnaserrorlist">true</attribute>
+                        </task>
+                        <task name="jsc">
+                            <attribute name="supportsplatform">true</attribute>
+                        </task>
+                        <task name="vjc">
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                        </task>
+                        <task name="resgen">
+                            <attribute name="supportsassemblyreferences">true</attribute>
+                            <attribute name="supportsexternalfilereferences">true</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="exename">lc</attribute>
+                            <attribute name="supportsassemblyreferences">true</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+                <framework 
+                    name="net-3.5"
+                    family="net"
+                    version="3.5"
+                    description="Microsoft .NET Framework 3.5"
+                    sdkdirectory="${sdkInstallRoot}"
+                    frameworkdirectory="${path::combine(installRoot, 'v3.5')}"
+                    frameworkassemblydirectory="${path::combine(installRoot, 'v2.0.50727')}"
+                    clrversion="2.0.50727"
+                    clrtype="Desktop"
+                    vendor="Microsoft"
+                    >
+                    <runtime>
+                        <probing-paths>
+                            <directory name="lib/net/2.0" />
+                            <directory name="lib/net/neutral" />
+                            <directory name="lib/common/2.0" />
+                            <directory name="lib/common/neutral" />
+                        </probing-paths>
+                        <modes>
+                            <strict>
+                                <environment>
+                                    <variable name="COMPLUS_VERSION" value="v2.0.50727" />
+                                </environment>
+                            </strict>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="${path::combine(installRoot, 'v2.0.50727')}">
+                        <include name="Accessibility.dll" />
+                        <include name="cscompmgd.dll" />
+                        <include name="mscorlib.dll" />
+                        <include name="Microsoft.Build.Utilities.dll" />
+                        <include name="Microsoft.Vsa.dll" />
+                        <include name="Microsoft.VisualBasic.dll" />
+                        <include name="Microsoft.VisualBasic.Compatibility.dll" />
+                        <include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
+                        <include name="System.Configuration.dll" />
+                        <include name="System.Configuration.Install.dll" />
+                        <include name="System.Data.dll" />
+                        <include name="System.Data.OracleClient.dll" />
+                        <include name="System.Data.SqlXml.dll" />
+                        <include name="System.Deployment.dll" />
+                        <include name="System.Design.dll" />
+                        <include name="System.DirectoryServices.dll" />
+                        <include name="System.dll" />
+                        <include name="System.Drawing.Design.dll" />
+                        <include name="System.Drawing.dll" />
+                        <include name="System.EnterpriseServices.dll" />
+                        <include name="System.Management.dll" />
+                        <include name="System.Messaging.dll" />
+                        <include name="System.Runtime.Remoting.dll" />
+                        <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
+                        <include name="System.Security.dll" />
+                        <include name="System.ServiceProcess.dll" />
+                        <include name="System.Transactions.dll" />
+                        <include name="System.Web.dll" />
+                        <include name="System.Web.Mobile.dll" />
+                        <include name="System.Web.RegularExpressions.dll" />
+                        <include name="System.Web.Services.dll" />
+                        <include name="System.Windows.Forms.dll" />
+                        <include name="System.XML.dll" />
+                    </reference-assemblies>
+                    <reference-assemblies basedir="${environment::get-folder-path('ProgramFiles')}/Reference Assemblies/Microsoft/Framework/v3.5">
+                        <include name="Microsoft.Build.Engine.dll" />
+                        <include name="Microsoft.Build.Framework.dll" />
+                        <include name="System.AddIn.Contract.dll" />
+                        <include name="System.AddIn.dll" />
+                        <include name="System.Core.dll" />
+                        <include name="System.Data.DataSetExtensions.dll" />
+                        <include name="System.Data.Linq.dll" />
+                        <include name="System.DirectoryServices.AccountManagement.dll" />
+                        <include name="System.Management.Instrumentation.dll" />
+                        <include name="System.Net.dll" />
+                        <include name="System.ServiceModel.Web.dll" />
+                        <include name="System.Web.Extensions.Design.dll" />
+                        <include name="System.Web.Extensions.dll" />
+                        <include name="System.Windows.Presentation.dll" />
+                        <include name="System.WorkflowServices.dll" />
+                        <include name="System.Xml.Linq.dll" />
+                    </reference-assemblies>
+                    <reference-assemblies basedir="${environment::get-folder-path('ProgramFiles')}/Reference Assemblies/Microsoft/Framework/v3.0">
+                        <include name="System.IdentityModel.dll" />
+                        <include name="System.IdentityModel.Selectors.dll" />
+                        <include name="System.IO.Log.dll" />
+                        <include name="System.Printing.dll" />
+                        <include name="System.Runtime.Serialization.dll" />
+                        <include name="System.ServiceModel.dll" />
+                        <include name="System.Speech.dll" />
+                        <include name="System.Workflow.Activities.dll" />
+                        <include name="System.Workflow.ComponentModel.dll" />
+                        <include name="System.Workflow.Runtime.dll" />
+                        <include name="WindowsBase.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- include MS.NET version-neutral assemblies -->
+                        <include name="extensions/net/neutral/**/*.dll" />
+                        <!-- include MS.NET 2.0 specific assemblies -->
+                        <include name="extensions/net/2.0/**/*.dll" />
+                        <!-- include MS.NET specific task assembly -->
+                        <include name="NAnt.MSNetTasks.dll" />
+                        <!-- include MS.NET specific test assembly -->
+                        <include name="NAnt.MSNet.Tests.dll" />
+                        <!-- include .NET 2.0 specific assemblies -->
+                        <include name="extensions/common/2.0/**/*.dll" />
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="${sdkInstallRoot}"
+                            if="${property::exists('sdkInstallRoot')}" />
+                        <directory name="${path::combine(installRoot, 'v3.5')}" />
+                        <directory name="${path::combine(installRoot, 'v2.0.50727')}" />
+                    </tool-paths>
+                    <project>
+                        <readregistry
+                            property="installRoot"
+                            key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+                            hive="LocalMachine" />
+                        <locatesdk property="sdkInstallRoot" minwinsdkver="v6.0A" maxnetfxver="3.5" failonerror="false" />
+                        <!--
+                        <readregistry
+                            property="sdkInstallRoot"
+                            key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0A\WinSDKNetFxTools\InstallationFolder"
+                            hive="LocalMachine"
+                            failonerror="false" />
+                        <readregistry
+                            property="sdkInstallRoot"
+                            key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.1\InstallationFolder"
+                            hive="LocalMachine"
+                            failonerror="false" />
+                        <readregistry
+                            property="sdkInstallRoot"
+                            key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0\InstallationFolder"
+                            hive="LocalMachine"
+                            failonerror="false" />
+                        <readregistry
+                            property="sdkInstallRoot"
+                            key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\InstallationFolder"
+                            hive="LocalMachine"
+                            failonerror="false" />
+                        -->
+                    </project>
+                    <tasks>
+                        <task name="csc">
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportswarnaserrorlist">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportsplatform">true</attribute>
+                            <attribute name="supportslangversion">true</attribute>
+                        </task>
+                        <task name="vbc">
+                            <attribute name="supportsdocgeneration">true</attribute>
+                            <attribute name="supportsnostdlib">true</attribute>
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportsplatform">true</attribute>
+                            <attribute name="supportswarnaserrorlist">true</attribute>
+                        </task>
+                        <task name="jsc">
+                            <attribute name="supportsplatform">true</attribute>
+                        </task>
+                        <task name="vjc">
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                        </task>
+                        <task name="resgen">
+                            <attribute name="supportsassemblyreferences">true</attribute>
+                            <attribute name="supportsexternalfilereferences">true</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="exename">lc</attribute>
+                            <attribute name="supportsassemblyreferences">true</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+                <framework 
+                    name="net-4.0"
+                    family="net"
+                    version="4.0"
+                    description="Microsoft .NET Framework 4.0"
+                    sdkdirectory="${sdkInstallRoot}"
+                    frameworkdirectory="${path::combine(installRoot, 'v4.0.30319')}"
+                    frameworkassemblydirectory="${path::combine(installRoot, 'v4.0.30319')}"
+                    clrversion="4.0.30319"
+                    clrtype="Desktop"
+                    vendor="Microsoft"
+                    >
+                    <runtime>
+                        <probing-paths>
+                            <directory name="lib/common/2.0" />
+                            <directory name="lib/common/neutral" />
+                        </probing-paths>
+                        <modes>
+                            <strict>
+                                <environment>
+                                    <variable name="COMPLUS_VERSION" value="v4.0.30319" />
+                                </environment>
+                            </strict>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="${path::combine(installRoot, 'v4.0.30319')}">
+                        <include name="Accessibility.dll" />
+                        <include name="Microsoft.Build.Conversion.v4.0.dll" />
+                        <include name="Microsoft.Build.dll" />
+                        <include name="Microsoft.Build.Engine.dll" />
+                        <include name="Microsoft.Build.Framework.dll" />
+                        <include name="Microsoft.Build.Tasks.v4.0.dll" />
+                        <include name="Microsoft.Build.Utilities.v4.0.dll" />
+                        <include name="Microsoft.CSharp.dll" />
+                        <include name="Microsoft.Data.Entity.Build.Tasks.dll" />
+                        <include name="Microsoft.JScript.dll" />
+                        <include name="Microsoft.Transactions.Bridge.dll" />
+                        <include name="Microsoft.Transactions.Bridge.Dtc.dll" />
+                        <include name="Microsoft.VisualBasic.Activities.Compiler.dll" />
+                        <include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
+                        <include name="Microsoft.VisualBasic.Compatibility.dll" />
+                        <include name="Microsoft.VisualBasic.dll" />
+                        <include name="Microsoft.VisualC.dll" />
+                        <include name="Microsoft.VisualC.STLCLR.dll" />
+                        <include name="mscorlib.dll" />
+                        <include name="System.Activities.Core.Presentation.dll" />
+                        <include name="System.Activities.dll" />
+                        <include name="System.Activities.DurableInstancing.dll" />
+                        <include name="System.Activities.Presentation.dll" />
+                        <include name="System.AddIn.Contract" />
+                        <include name="System.AddIn.dll" />
+                        <include name="System.ComponentModel.Composition.dll" />
+                        <include name="System.ComponentModel.DataAnnotations.dll" />
+                        <include name="System.Configuration.dll" />
+                        <include name="System.Configuration.Install.dll" />
+                        <include name="System.Core.dll" />
+                        <include name="System.Data.DataSetExtensions.dll" />
+                        <include name="System.Data.dll" />
+                        <include name="System.Data.Entity.Design.dll" />
+                        <include name="System.Data.Entity.dll" />
+                        <include name="System.Data.Linq.dll" />
+                        <include name="System.Data.OracleClient.dll" />
+                        <include name="System.Data.Services.Client.dll" />
+                        <include name="System.Data.Services.Design.dll" />
+                        <include name="System.Data.Services.dll" />
+                        <include name="System.Data.SqlXml.dll" />
+                        <include name="System.Deployment.dll" />
+                        <include name="System.Design.dll" />
+                        <include name="System.Device.dll" />
+                        <include name="System.DirectoryServices.dll" />
+                        <include name="System.DirectoryServices.Protocols.dll" />
+                        <include name="System.dll" />
+                        <include name="System.Drawing.Design.dll" />
+                        <include name="System.Drawing.dll" />
+                        <include name="System.Dynamic.dll" />
+                        <include name="System.EnterpriseServices.dll" />
+                        <include name="System.EnterpriseServices.Thunk.dll" />
+                        <include name="System.EnterpriseServices.Wrapper.dll" />
+                        <include name="System.IdentityModel.dll" />
+                        <include name="System.IdentityModel.Selectors.dll" />
+                        <include name="System.IO.Log.dll" />
+                        <include name="System.Management.dll" />
+                        <include name="System.Management.Instrumentation.dll" />
+                        <include name="System.Messaging.dll" />
+                        <include name="System.Net.dll" />
+                        <include name="System.Numerics.dll" />
+                        <include name="System.Runtime.Caching.dll" />
+                        <include name="System.Runtime.DurableInstancing.dll" />
+                        <include name="System.Runtime.Remoting.dll" />
+                        <include name="System.Runtime.Serialization.dll" />
+                        <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
+                        <include name="System.Security.dll" />
+                        <include name="System.ServiceModel.Activation.dll" />
+                        <include name="System.ServiceModel.Activities.dll" />
+                        <include name="System.ServiceModel.Channels.dll" />
+                        <include name="System.ServiceModel.Discovery.dll" />
+                        <include name="System.ServiceModel.dll" />
+                        <include name="System.ServiceModel.Routing.dll" />
+                        <include name="System.ServiceModel.ServiceMoniker40.dll" />
+                        <include name="System.ServiceModel.WasHosting.dll" />
+                        <include name="System.ServiceModel.Web.dll" />
+                        <include name="System.ServiceProcess.dll" />
+                        <include name="System.Transactions.dll" />
+                        <include name="System.Web.Abstractions.dll" />
+                        <include name="System.Web.ApplicationServices.dll" />
+                        <include name="System.Web.DataVisualization.Design.dll" />
+                        <include name="System.Web.DataVisualization.dll" />
+                        <include name="System.Web.dll" />
+                        <include name="System.Web.DynamicData.Design.dll" />
+                        <include name="System.Web.DynamicData.dll" />
+                        <include name="System.Web.Entity.Design.dll" />
+                        <include name="System.Web.Entity.dll" />
+                        <include name="System.Web.Extensions.Design.dll" />
+                        <include name="System.Web.Extensions.dll" />
+                        <include name="System.Web.Mobile.dll" />
+                        <include name="System.Web.RegularExpressions.dll" />
+                        <include name="System.Web.Routing.dll" />
+                        <include name="System.Web.Services.dll" />
+                        <include name="System.Windows.Forms.DataVisualization.Design.dll" />
+                        <include name="System.Windows.Forms.DataVisualization.dll" />
+                        <include name="System.Windows.Forms.dll" />
+                        <include name="System.Workflow.Activities.dll" />
+                        <include name="System.Workflow.ComponentModel.dll" />
+                        <include name="System.Workflow.Runtime.dll" />
+                        <include name="System.WorkflowServices.dll" />
+                        <include name="System.Xaml.dll" />
+                        <include name="System.Xaml.Hosting.dll" />
+                        <include name="System.Xml.dll" />
+                        <include name="System.Xml.Linq.dll" />
+                    </reference-assemblies>
+                    <reference-assemblies basedir="${environment::get-folder-path('ProgramFiles')}/Reference Assemblies/Microsoft/Framework/.NETFramework/v4.0">
+                        <include name="Microsoft.Build.Conversion.v4.0.dll" />
+                        <include name="Microsoft.Build.dll" />
+                        <include name="Microsoft.Build.Engine.dll" />
+                        <include name="Microsoft.Build.Framework.dll" />
+                        <include name="Microsoft.Build.Tasks.v4.0.dll" />
+                        <include name="Microsoft.Build.Utilities.v4.0.dll" />
+                        <include name="Microsoft.CSharp.dll" />
+                        <include name="Microsoft.JScript.dll" />
+                        <include name="Microsoft.VisualBasic.Compatibility.Data.dll" />
+                        <include name="Microsoft.VisualBasic.Comptatibility.dll" />
+                        <include name="Microsoft.VisualBasic.dll" />
+                        <include name="Microsoft.VisualC.dll" />
+                        <include name="Microsoft.VisualC.STLCLR.dll" />
+                        <include name="mscorlib.dll" />
+                        <include name="PresentationBuildTasks.dll" />
+                        <include name="PresentationCore.dll" />
+                        <include name="PresentationFramework.Aero.dll" />
+                        <include name="PresentationFramework.Classic.dll" />
+                        <include name="PresentationFramework.Luna.dll" />
+                        <include name="PresentationFramework.Royale.dll" />
+                        <include name="ReachFramework.dll" />
+                        <include name="System.Activities.Core.Presentation.dll" />
+                        <include name="System.Activities.dll" />
+                        <include name="System.Activities.DurableInstancing.dll" />
+                        <include name="System.Activities.Presentation.dll" />
+                        <include name="System.AddIn.Contract.dll" />
+                        <include name="System.AddIn.dll" />
+                        <include name="System.ComponentModel.Composition.dll" />
+                        <include name="System.ComponentModel.DataAnnotations.dll" />
+                        <include name="System.Configuration.dll" />
+                        <include name="System.Core.dll" />
+                        <include name="System.Data.DataSetExtension.dll" />
+                        <include name="System.Data.dll" />
+                        <include name="System.Data.Entity.Design.dll" />
+                        <include name="System.Data.Entity.dll" />
+                        <include name="System.Data.Linq.dll" />
+                        <include name="System.Data.OracleClient.dll" />
+                        <include name="System.Data.Services.Client.dll" />
+                        <include name="System.Data.Services.Design.dll" />
+                        <include name="System.Data.Services.dll" />
+                        <include name="System.Data.SqlXml.dll" />
+                        <include name="System.Deployment.dll" />
+                        <include name="System.Design.dll" />
+                        <include name="System.Device.dll" />
+                        <include name="System.DirectoryServices.AccountManagement.dll" />
+                        <include name="System.DirectoryServices.dll" />
+                        <include name="System.DirectoryServices.Protocols.dll" />
+                        <include name="System.dll" />
+                        <include name="System.Drawing.Design.dll" />
+                        <include name="System.Drawing.dll" />
+                        <include name="System.EnterpriseServices.dll" />
+                        <include name="System.EnterpriseServices.Thunk.dll" />
+                        <include name="System.EnterpriseServices.Wrapper.dll" />
+                        <include name="System.IdentityModel.dll" />
+                        <include name="System.IdentityModel.Selectors.dll" />
+                        <include name="System.IO.Log.dll" />
+                        <include name="System.Management.dll" />
+                        <include name="System.Management.Instrumentation.dll" />
+                        <include name="System.Messaging.dll" />
+                        <include name="System.Net.dll" />
+                        <include name="System.Numerics.dll" />
+                        <include name="System.Printing.dll" />
+                        <include name="System.Runtime.Caching.dll" />
+                        <include name="System.Runtime.DurableInstancing.dll" />
+                        <include name="System.Runtime.Remoting.dll" />
+                        <include name="System.Runtime.Serialization.dll" />
+                        <include name="System.Runtime.Serialization.Formatters.Soap.dll" />
+                        <include name="System.Security.dll" />
+                        <include name="System.ServiceModel.Activation.dll" />
+                        <include name="System.ServiceModel.Activities.dll" />
+                        <include name="System.ServiceModel.Channels.dll" />
+                        <include name="System.ServiceModel.Discovery.dll" />
+                        <include name="System.ServiceModel.dll" />
+                        <include name="System.ServiceModel.Routing.dll" />
+                        <include name="System.ServiceModel.Web.dll" />
+                        <include name="System.ServiceProcess.dll" />
+                        <include name="System.Speech.dll" />
+                        <include name="System.Transactions.dll" />
+                        <include name="System.Web.Abstractions.dll" />
+                        <include name="System.Web.ApplicationServices.dll" />
+                        <include name="System.Web.DataVisualization.Design.dll" />
+                        <include name="System.Web.DataVisualization.dll" />
+                        <include name="System.Web.dll" />
+                        <include name="System.Web.DynamicData.Design.dll" />
+                        <include name="System.Web.DynamicData.dll" />
+                        <include name="System.Web.Entity.Design.dll" />
+                        <include name="System.Web.Entity.dll" />
+                        <include name="System.Web.Extensions.Design.dll" />
+                        <include name="System.Web.Extensions.dll" />
+                        <include name="System.Web.Mobile.dll" />
+                        <include name="System.Web.RegularExpressions.dll" />
+                        <include name="System.Web.Routing.dll" />
+                        <include name="System.Web.Services.dll" />
+                        <include name="System.Windows.Forms.DataVisualization.Design.dll" />
+                        <include name="System.Windows.Forms.DataVisualization.dll" />
+                        <include name="System.Windows.Forms.dll" />
+                        <include name="System.Windows.Input.Manipulations.dll" />
+                        <include name="System.Windows.Presentation.dll" />
+                        <include name="System.Workflow.Activities.dll" />
+                        <include name="System.Workflow.ComponentModel.dll" />
+                        <include name="System.Workflow.Runtime.dll" />
+                        <include name="System.WorkflowServices.dll" />
+                        <include name="System.Xaml.dll" />
+                        <include name="System.Xml.dll" />
+                        <include name="System.Xml.Linq.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- include MS.NET version-neutral assemblies -->
+                        <include name="extensions/net/neutral/**/*.dll" />
+                        <!-- include MS.NET 4.0 specific assemblies -->
+                        <include name="extensions/net/4.0/**/*.dll" />
+                        <!-- include MS.NET specific task assembly -->
+                        <include name="NAnt.MSNetTasks.dll" />
+                        <!-- include MS.NET specific test assembly -->
+                        <include name="NAnt.MSNet.Tests.dll" />
+                        <!-- include .NET 4.0 specific assemblies -->
+                        <include name="extensions/common/4.0/**/*.dll" />
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="${sdkInstallRoot}"
+                            if="${property::exists('sdkInstallRoot')}" />
+                        <directory name="${path::combine(installRoot, 'v4.0.30319')}" />
+                    </tool-paths>
+                    <project>
+                        <readregistry
+                            property="installRoot"
+                            key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+                            hive="LocalMachine" />
+                        <locatesdk property="sdkInstallRoot" minwinsdkver="v7.0A" minnetfxver="4.0" maxnetfxver="4.0.99999" failonerror="false" />
+                        <!--
+                        <echo message="sdkInstallRoot=${sdkInstallRoot}" if="${property::exists('sdkInstallRoot')}" />
+                        <readregistry
+                            property="sdkInstallRoot"
+                            key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools\InstallationFolder"
+                            hive="LocalMachine"
+                            failonerror="false" />
+                        <readregistry
+                            property="sdkInstallRoot"
+                            key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools-x86\InstallationFolder"
+                            hive="LocalMachine"
+                            failonerror="false" />
+                        -->
+                    </project>
+                    <tasks>
+                        <task name="csc">
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportswarnaserrorlist">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportsplatform">true</attribute>
+                            <attribute name="supportslangversion">true</attribute>
+                        </task>
+                        <task name="vbc">
+                            <attribute name="supportsdocgeneration">true</attribute>
+                            <attribute name="supportsnostdlib">true</attribute>
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportsplatform">true</attribute>
+                            <attribute name="supportswarnaserrorlist">true</attribute>
+                        </task>
+                        <task name="jsc">
+                            <attribute name="supportsplatform">true</attribute>
+                        </task>
+                        <task name="vjc">
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                        </task>
+                        <task name="resgen">
+                            <attribute name="supportsassemblyreferences">true</attribute>
+                            <attribute name="supportsexternalfilereferences">true</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="exename">lc</attribute>
+                            <attribute name="supportsassemblyreferences">true</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+                <framework 
+                    name="netcf-1.0"
+                    family="netcf"
+                    version="1.0"
+                    description="Microsoft .NET Compact Framework 1.0"
+                    sdkdirectory="${path::combine(sdkInstallRoot, 'v1.0.5000\bin')}"
+                    frameworkdirectory="${path::combine(installRoot, 'v1.1.4322')}"
+                    frameworkassemblydirectory="${path::combine(sdkInstallRoot, 'v1.0.5000\Windows CE')}"
+                    clrversion="1.1.4322"
+                    clrtype="Compact"
+                    vendor="Microsoft"
+                    >
+                    <runtime>
+                        <modes>
+                            <strict>
+                                <environment>
+                                    <variable name="COMPLUS_VERSION" value="v1.1.4322" />
+                                </environment>
+                            </strict>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="${path::combine(sdkInstallRoot, 'v1.0.5000\Windows CE')}">
+                        <include name="*.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- this is not a supported runtime framework -->
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="${path::combine(sdkInstallRoot, 'v1.0.5000\bin')}" />
+                        <directory name="${path::combine(installRoot, 'v1.1.4322')}" />
+                        <directory name="${path::combine(sdkInstallRoot.DesktopFramework, 'bin')}" />
+                    </tool-paths>
+                    <project>
+                        <readregistry
+                            property="installRoot"
+                            key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+                            hive="LocalMachine" />
+                        <readregistry
+                            property="sdkInstallRoot"
+                            key="SOFTWARE\Microsoft\.NETCompactFramework\sdkInstallRoot"
+                            hive="LocalMachine" />
+                        <readregistry
+                            property="sdkInstallRoot.DesktopFramework"
+                            key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv1.1"
+                            hive="LocalMachine" />
+                        <fail if="${not directory::exists(sdkInstallRoot.DesktopFramework)}">The .NET Framework 1.1 SDK is not installed.</fail>
+                    </project>
+                    <tasks>
+                        <task name="csc">
+                            <attribute name="noconfig">true</attribute>
+                            <attribute name="nostdlib">true</attribute>
+                            <attribute name="supportsnowarnlist">true</attribute>
+                        </task>
+                        <task name="resgen">
+                            <attribute name="exename">cfresgen</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="exename">lc</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+                <framework 
+                    name="netcf-2.0"
+                    family="netcf"
+                    version="2.0"
+                    description="Microsoft .NET Compact Framework 2.0"
+                    sdkdirectory="${path::combine(sdkInstallRoot.DesktopFramework, 'bin')}"
+                    frameworkdirectory="${path::combine(installRoot, 'v2.0.50727')}"
+                    frameworkassemblydirectory="${path::combine(sdkInstallRoot, 'WindowsCE')}"
+                    clrversion="2.0.0"
+                    clrtype="Compact"
+                    vendor="Microsoft"
+                    >
+                    <runtime>
+                        <modes>
+                            <strict>
+                                <environment>
+                                    <variable name="COMPLUS_VERSION" value="v2.0.50727" />
+                                </environment>
+                            </strict>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="${path::combine(sdkInstallRoot, 'WindowsCE')}">
+                        <include name="*.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- this is not a supported runtime framework -->
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="${path::combine(sdkInstallRoot.DesktopFramework, 'bin')}" />
+                    </tool-paths>
+                    <project>
+                        <readregistry
+                            property="installRoot"
+                            key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+                            hive="LocalMachine" />
+                        <readregistry
+                            property="sdkInstallRoot"
+                            key="SOFTWARE\Microsoft\.NETCompactFramework\v2.0.0.0\InstallRoot\"
+                            hive="LocalMachine" />
+                        <readregistry
+                            property="sdkInstallRoot.DesktopFramework"
+                            key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv2.0"
+                            hive="LocalMachine" />
+                        <fail if="${not directory::exists(sdkInstallRoot.DesktopFramework)}">The .NET Framework 2.0 SDK is not installed.</fail>
+                    </project>
+                    <tasks>
+                        <task name="csc">
+                            <attribute name="noconfig">true</attribute>
+                            <attribute name="nostdlib">true</attribute>
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportswarnaserrorlist">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportsplatform">true</attribute>
+                            <attribute name="supportslangversion">true</attribute>
+                        </task>
+                        <task name="vbc">
+                            <attribute name="nostdlib">true</attribute>
+                            <attribute name="supportsdocgeneration">true</attribute>
+                            <attribute name="supportsnostdlib">true</attribute>
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportsplatform">true</attribute>
+                            <attribute name="supportswarnaserrorlist">true</attribute>
+                        </task>
+                        <task name="resgen">
+                            <attribute name="supportsassemblyreferences">true</attribute>
+                            <attribute name="supportsexternalfilereferences">true</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="exename">lc</attribute>
+                            <attribute name="supportsassemblyreferences">true</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+                <framework 
+                    name="silverlight-2.0"
+                    family="silverlight"
+                    version="2.0"
+                    description="Microsoft Silverlight 2.0"
+                    sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}"
+                    frameworkdirectory="${path::combine(installRoot, 'v3.5')}"
+                    frameworkassemblydirectory="${environment::get-folder-path('ProgramFiles')}/Microsoft Silverlight/2.0.31005.0"
+                    clrversion="2.0.50727"
+                    clrtype="Browser"
+                    vendor="Microsoft"
+                    >
+                    <runtime>
+                        <modes>
+                            <strict>
+                                <environment>
+                                    <variable name="COMPLUS_VERSION" value="v2.0.50727" />
+                                </environment>
+                            </strict>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="${environment::get-folder-path('ProgramFiles')}/Microsoft Silverlight/2.0.31005.0">
+                        <include name="Microsoft.VisualBasic.dll" />
+                        <include name="mscorlib.dll" />
+                        <include name="System.Core.dll" />
+                        <include name="System.dll" />
+                        <include name="System.Net.dll" />
+                        <include name="System.Runtime.Serialization.dll" />
+                        <include name="System.ServiceModel.dll" />
+                        <include name="System.ServiceModel.Web.dll" />
+                        <include name="System.Windows.Browser.dll" />
+                        <include name="System.Windows.dll" />
+                        <include name="System.Xml.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- include MS.NET version-neutral assemblies -->
+                        <include name="extensions/net/neutral/**/*.dll" />
+                        <!-- include MS.NET 2.0 specific assemblies -->
+                        <include name="extensions/net/2.0/**/*.dll" />
+                        <!-- include MS.NET specific task assembly -->
+                        <include name="NAnt.MSNetTasks.dll" />
+                        <!-- include MS.NET specific test assembly -->
+                        <include name="NAnt.MSNet.Tests.dll" />
+                        <!-- include .NET 2.0 specific assemblies -->
+                        <include name="extensions/common/2.0/**/*.dll" />
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="${path::combine(sdkInstallRoot, 'bin')}"
+                            if="${property::exists('sdkInstallRoot')}" />
+                        <directory name="${path::combine(installRoot, 'v3.5')}" />
+                        <directory name="${path::combine(installRoot, 'v2.0.50727')}" />
+                        <directory name="${environment::get-folder-path('ProgramFiles')}/Microsoft Silverlight/2.0.31005.0" />
+                    </tool-paths>
+                    <project>
+                        <readregistry
+                            property="installRoot"
+                            key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
+                            hive="LocalMachine" />
+                        <readregistry
+                            property="sdkInstallRoot"
+                            key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0A\WinSDKNetFxTools\InstallationFolder"
+                            hive="LocalMachine"
+                            failonerror="false" />
+                        <readregistry
+                            property="sdkInstallRoot"
+                            key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.1\WinSDKNetFxTools\InstallationFolder"
+                            hive="LocalMachine"
+                            failonerror="false" />
+                    </project>
+                    <tasks>
+                        <task name="csc">
+                            <attribute name="noconfig">true</attribute>
+                            <attribute name="nostdlib">true</attribute>
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportswarnaserrorlist">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportsplatform">true</attribute>
+                            <attribute name="supportslangversion">true</attribute>
+                        </task>
+                        <task name="vbc">
+                            <attribute name="nostdlib">true</attribute>
+                            <attribute name="supportsdocgeneration">true</attribute>
+                            <attribute name="supportsnostdlib">true</attribute>
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportsplatform">true</attribute>
+                            <attribute name="supportswarnaserrorlist">true</attribute>
+                        </task>
+                        <task name="jsc">
+                            <attribute name="supportsplatform">true</attribute>
+                        </task>
+                        <task name="vjc">
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                        </task>
+                        <task name="resgen">
+                            <attribute name="supportsassemblyreferences">true</attribute>
+                            <attribute name="supportsexternalfilereferences">true</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="exename">lc</attribute>
+                            <attribute name="supportsassemblyreferences">true</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+                <framework
+                    name="mono-1.0"
+                    family="mono"
+                    version="1.0"
+                    description="Mono 1.0 Profile"
+                    sdkdirectory="${toolDirectory}"
+                    frameworkdirectory="${toolDirectory}"
+                    frameworkassemblydirectory="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}"
+                    clrversion="1.1.4322"
+                    clrtype="Desktop"
+                    vendor="Mono"
+                    >
+                    <runtime>
+                        <probing-paths>
+                            <directory name="lib/mono/1.0" />
+                            <directory name="lib/mono/neutral" />
+                            <directory name="lib/common/1.1" />
+                            <directory name="lib/common/neutral" />
+                        </probing-paths>
+                        <modes>
+                            <auto>
+                                <engine program="${runtimeEngine}" />
+                                <environment>
+                                    <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
+                                    <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
+                                </environment>
+                            </auto>
+                            <strict>
+                                <engine program="${runtimeEngine}">
+                                    <arg value="--runtime=v1.1.4322" />
+                                </engine>
+                                <environment>
+                                    <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
+                                    <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
+                                </environment>
+                            </strict>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}">
+                        <include name="*.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- include Mono version-neutral assemblies -->
+                        <include name="extensions/mono/neutral/**/*.dll" />
+                        <!-- include Mono 1.0 specific assemblies -->
+                        <include name="extensions/mono/1.0/**/*.dll" />
+                        <!-- include .NET 1.1 specific assemblies -->
+                        <include name="extensions/common/1.1/**/*.dll" />
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="${toolDirectory}" />
+                        <!-- unmanaged tools -->
+                        <directory name="${sdkInstallRoot}/bin" />
+                    </tool-paths>
+                    <project>
+                        <!-- quick and dirty check to see if pkg-config is available (and configured) -->
+                        <property name="pkgconfig.available" value="${environment::variable-exists('PKG_CONFIG_PATH')}" />
+                        <if test="${pkgconfig.available}">
+                            <if test="${pkg-config::exists('mono')}">
+                                <call target="configure-from-pkg-config" />
+                            </if>
+                            <if test="${not pkg-config::exists('mono')}">
+                                <call target="configure-from-registry" />
+                            </if>
+                        </if>
+                        <if test="${not pkgconfig.available}">
+                            <call target="configure-from-registry" />
+                        </if>
+
+                        <!-- determine if we're dealing with a Mono 1.0.x release -->
+                        <if test="${version::parse(mono.version) &lt; version::parse('1.1')}">
+                            <!-- 
+                                in Mono 1.0.x, the framework tools are located 
+                                in the <install root>\lib directory
+                            -->
+                            <property name="toolDirectory" value="${frameworkAssemblyDirectory}" />
+                            <property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" />
+                            <property name="resgen.tool" value="monoresgen" />
+                            <!-- in Mono 1.0.x, only mcs and mbas are located in <install root>\lib\mono\<profile> -->
+                            <property name="csc.tool" value="${path::combine(frameworkAssemblyDirectory, 'mono/1.0/mcs.exe')}" />
+                            <property name="mbas.tool" value="${path::combine(frameworkAssemblyDirectory, 'mono/1.0/mbas.exe')}" />
+                            <!-- /doc is not supported in Mono 1.0.x -->
+                            <property name="csc.supportsdocgeneration" value="false" />
+
+                            <!-- 
+                                Mono 1.0.1 installer incorrectly adds '\mono' to 
+                                "MonoConfigDir" registry value
+                            -->
+                            <if test="${string::ends-with(configDir, 'etc\mono')}">
+                                <property name="configDir" value="${string::replace(configDir, 'etc\mono', 'etc')}" />
+                            </if>
+                        </if>
+
+                        <!-- determine if we're dealing with a Mono 1.1.x release or higher -->
+                        <if test="${version::parse(mono.version) >= version::parse('1.1')}">
+                            <!-- 
+                                in Mono 1.1.x (and higher ?), the framework tools 
+                                are located in the <install root>\lib\mono\<profile>
+                                directory
+                            -->
+                            <property name="toolDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
+                            <property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" />
+                            <!-- starting from Mono 1.1.9.2, mono.exe is located in the bin directory -->
+                            <if test="${not file::exists(runtimeEngine)}">
+                                <property name="runtimeEngine" value="${path::combine(sdkInstallRoot, 'bin/mono.exe')}" />
+                            </if>
+                            <property name="resgen.tool" value="resgen" />
+                            <property name="csc.tool" value="mcs" />
+                            <property name="csc.supportsdocgeneration" value="true" />
+                            <property name="mbas.tool" value="mbas" />
+                        </if>
+
+                        <target name="configure-from-pkg-config">
+                            <property name="mono.version" value="${pkg-config::get-mod-version('mono')}" />
+                            <property name="sdkInstallRoot" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'prefix'))}" />
+                            <property name="frameworkAssemblyDirectory" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'libdir'))}" />
+                            <property name="configDir" value="${path::combine(sdkInstallRoot, 'etc')}/" />
+                        </target>
+
+                        <target name="configure-from-registry">
+                            <!-- 
+                                first try using the DefaultCLR in HKLM\Novell\Mono, 
+                                this is used by the Mono 1.0.1 installer (and later?)
+                            -->
+                            <readregistry
+                                property="mono.version"
+                                key="SOFTWARE\Novell\Mono\DefaultCLR"
+                                hive="LocalMachine" 
+                                failonerror="false" 
+                            />
+                        
+                            <if test="${property::exists('mono.version')}">
+                                <property name="monokey" value="SOFTWARE\Novell\Mono\${mono.version}" />
+                            </if>
+                        
+                            <!-- 
+                                if the DefaultCLR registry value does not exist in 
+                                HKLM\Novell\Mono, then try the HKML\Mono registry 
+                                key as this was used for the Mono 1.0 installer
+                            -->
+                            <if test="${not property::exists('mono.version')}">
+                                <readregistry
+                                    property="mono.version"
+                                    key="SOFTWARE\Mono\DefaultCLR"
+                                    hive="LocalMachine" 
+                                />
+                                <property name="monokey" value="SOFTWARE\Mono\${mono.version}" />
+                            </if>
+
+                            <readregistry
+                                property="sdkInstallRoot"
+                                key="${monokey}\SdkInstallRoot"
+                                hive="LocalMachine" />
+                            <readregistry
+                                property="frameworkAssemblyDirectory"
+                                key="${monokey}\FrameworkAssemblyDirectory"
+                                hive="LocalMachine" />
+                            <readregistry
+                                property="configDir"
+                                key="${monokey}\MonoConfigDir"
+                                hive="LocalMachine" />
+                        </target>
+                    </project>
+                    <properties>
+                    </properties>
+                    <tasks>
+                        <task name="al">
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="csc">
+                            <attribute name="exename">${csc.tool}</attribute>
+                            <attribute name="managed">true</attribute>
+                            <attribute name="supportspackagereferences">true</attribute>
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportsdocgeneration">${csc.supportsdocgeneration}</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportslangversion">true</attribute>
+                        </task>
+                        <task name="jsc">
+                            <attribute name="exename">mjs</attribute>
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="vbc">
+                            <attribute name="exename">${mbas.tool}</attribute>
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="resgen">
+                            <attribute name="exename">${resgen.tool}</attribute>
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="hascommandlinecompiler">false</attribute>
+                        </task>
+                        <task name="ilasm">
+                            <attribute name="managed">true</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+                <framework 
+                    name="mono-2.0"
+                    family="mono"
+                    version="2.0"
+                    description="Mono 2.0 Profile"
+                    sdkdirectory="${toolDirectory}"
+                    frameworkdirectory="${toolDirectory}"
+                    frameworkassemblydirectory="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}"
+                    clrversion="2.0.50727"
+                    clrtype="Desktop"
+                    vendor="Mono"
+                    >
+                    <runtime>
+                        <probing-paths>
+                            <directory name="lib/mono/2.0" />
+                            <directory name="lib/mono/neutral" />
+                            <directory name="lib/common/2.0" />
+                            <directory name="lib/common/neutral" />
+                        </probing-paths>
+                        <modes>
+                            <auto>
+                                <engine program="${runtimeEngine}" />
+                                <environment>
+                                    <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
+                                    <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
+                                </environment>
+                            </auto>
+                            <strict>
+                                <engine program="${runtimeEngine}">
+                                    <arg value="--runtime=v2.0.50727" />
+                                </engine>
+                                <environment>
+                                    <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
+                                    <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
+                                </environment>
+                            </strict>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}">
+                        <include name="*.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- include Mono version-neutral assemblies -->
+                        <include name="extensions/mono/neutral/**/*.dll" />
+                        <!-- include Mono 2.0 specific assemblies -->
+                        <include name="extensions/mono/2.0/**/*.dll" />
+                        <!-- include .NET 2.0 specific assemblies -->
+                        <include name="extensions/common/2.0/**/*.dll" />
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="${toolDirectory}" />
+                        <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
+                        <!-- for compatibility with Mono 1.0.x -->
+                        <directory name="${frameworkAssemblyDirectory}" />
+                        <!-- unmanaged tools -->
+                        <directory name="${sdkInstallRoot}/bin" />
+                    </tool-paths>
+                    <project>
+                        <!-- quick and dirty check to see if pkg-config is available (and configured) -->
+                        <property name="pkgconfig.available" value="${environment::variable-exists('PKG_CONFIG_PATH')}" />
+                        <if test="${pkgconfig.available}">
+                            <if test="${pkg-config::exists('mono')}">
+                                <call target="configure-from-pkg-config" />
+                            </if>
+                            <if test="${not pkg-config::exists('mono')}">
+                                <call target="configure-from-registry" />
+                            </if>
+                        </if>
+                        <if test="${not pkgconfig.available}">
+                            <call target="configure-from-registry" />
+                        </if>
+
+                        <property name="resgen.supportsexternalfilereferences" value="false" />
+
+                        <!-- determine if we're dealing with a Mono 1.0.x release -->
+                        <if test="${version::parse(mono.version) &lt; version::parse('1.1')}">
+                            <!-- 
+                                in Mono 1.0.x, the framework tools are located 
+                                in the <install root>\lib directory, except for
+                                mbas and mcs
+                            -->
+                            <property name="toolDirectory" value="${frameworkAssemblyDirectory}" />
+                            <property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" />
+                            <property name="resgen.tool" value="monoresgen" />
+                            <property name="csc.supportsdocgeneration" value="false" />
+
+                            <!-- 
+                                Mono 1.0.1 installer incorrectly adds '\mono' to 
+                                "MonoConfigDir" registry value
+                            -->
+                            <if test="${string::ends-with(configDir, 'etc\mono')}">
+                                <property name="configDir" value="${string::replace(configDir, 'etc\mono', 'etc')}" />
+                            </if>
+                        </if>
+
+                        <!-- determine if we're dealing with a Mono 1.1.x release or higher -->
+                        <if test="${version::parse(mono.version) >= version::parse('1.1')}">
+                            <property name="toolDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}" />
+                            <property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" />
+                            <!-- starting from Mono 1.1.9.2, mono.exe is located in the bin directory -->
+                            <if test="${not file::exists(runtimeEngine)}">
+                                <property name="runtimeEngine" value="${path::combine(sdkInstallRoot, 'bin/mono.exe')}" />
+                            </if>
+                            <property name="csc.supportsdocgeneration" value="true" />
+                        </if>
+                        <!-- as from Mono 1.2.3.50, resgen supports the /usesourcepath option -->
+                        <if test="${version::parse(mono.version) >= version::parse('1.2.3.50')}">
+                            <property name="resgen.supportsexternalfilereferences" value="true" />
+                        </if>
+
+                        <target name="configure-from-pkg-config">
+                            <property name="mono.version" value="${pkg-config::get-mod-version('mono')}" />
+                            <property name="sdkInstallRoot" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'prefix'))}" />
+                            <property name="frameworkAssemblyDirectory" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'libdir'))}" />
+                            <property name="configDir" value="${path::combine(sdkInstallRoot, 'etc')}/" />
+                        </target>
+
+                        <target name="configure-from-registry">
+                            <readregistry
+                                property="mono.version"
+                                key="SOFTWARE\Novell\Mono\DefaultCLR"
+                                hive="LocalMachine" 
+                            />
+                            <property name="monokey" value="SOFTWARE\Novell\Mono\${mono.version}" />
+
+                            <readregistry
+                                property="sdkInstallRoot"
+                                key="${monokey}\SdkInstallRoot"
+                                hive="LocalMachine" />
+                            <readregistry
+                                property="frameworkAssemblyDirectory"
+                                key="${monokey}\FrameworkAssemblyDirectory"
+                                hive="LocalMachine" />
+                            <readregistry
+                                property="configDir"
+                                key="${monokey}\MonoConfigDir"
+                                hive="LocalMachine" />
+                        </target>
+                    </project>
+                    <properties>
+                    </properties>
+                    <tasks>
+                        <task name="al">
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="csc">
+                            <attribute name="exename">gmcs</attribute>
+                            <attribute name="managed">true</attribute>
+                            <attribute name="supportspackagereferences">true</attribute>
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportsdocgeneration">${csc.supportsdocgeneration}</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportslangversion">true</attribute>
+                        </task>
+                        <task name="jsc">
+                            <attribute name="exename">mjs</attribute>
+                            <attribute name="managed">strict</attribute>
+                        </task>
+                        <task name="vbc">
+                            <attribute name="exename">vbnc</attribute>
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="resgen">
+                            <attribute name="exename">${resgen.tool}</attribute>
+                            <attribute name="managed">true</attribute>
+                            <attribute name="supportsexternalfilereferences">${resgen.supportsexternalfilereferences}</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="hascommandlinecompiler">false</attribute>
+                        </task>
+                        <task name="ilasm">
+                            <attribute name="managed">true</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+                <framework
+                    name="mono-3.5"
+                    family="mono"
+                    version="3.5"
+                    description="Mono 3.5 Profile"
+                    sdkdirectory="${toolDirectory}"
+                    frameworkdirectory="${toolDirectory}"
+                    frameworkassemblydirectory="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}"
+                    clrversion="2.0.50727"
+                    clrtype="Desktop"
+                    vendor="Mono"
+                    >
+                    <runtime>
+                        <probing-paths>
+                            <directory name="lib/mono/2.0" />
+                            <directory name="lib/mono/neutral" />
+                            <directory name="lib/common/2.0" />
+                            <directory name="lib/common/neutral" />
+                        </probing-paths>
+                        <modes>
+                            <auto>
+                                <engine program="${runtimeEngine}" />
+                                <environment>
+                                    <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
+                                    <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
+                                </environment>
+                            </auto>
+                            <strict>
+                                <engine program="${runtimeEngine}">
+                                    <arg value="--runtime=v2.0.50727" />
+                                </engine>
+                                <environment>
+                                    <variable name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
+                                    <variable name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
+                                </environment>
+                            </strict>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/3.5')}">
+                        <include name="*.dll" />
+                    </reference-assemblies>
+                    <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/3.0')}">
+                        <include name="*.dll" />
+                    </reference-assemblies>
+                    <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}">
+                        <include name="*.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- include Mono version-neutral assemblies -->
+                        <include name="extensions/mono/neutral/**/*.dll" />
+                        <!-- include Mono 2.0 specific assemblies -->
+                        <include name="extensions/mono/2.0/**/*.dll" />
+                        <!-- include .NET 2.0 specific assemblies -->
+                        <include name="extensions/common/2.0/**/*.dll" />
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/3.5')}" />
+                        <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}" />
+                        <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
+                        <!-- unmanaged tools -->
+                        <directory name="${sdkInstallRoot}/bin" />
+                    </tool-paths>
+                    <project>
+                        <!-- quick and dirty check to see if pkg-config is available (and configured) -->
+                        <property name="pkgconfig.available" value="${environment::variable-exists('PKG_CONFIG_PATH')}" />
+                        <if test="${pkgconfig.available}">
+                            <if test="${pkg-config::exists('mono')}">
+                                <call target="configure-from-pkg-config" />
+                            </if>
+                            <if test="${not pkg-config::exists('mono')}">
+                                <call target="configure-from-registry" />
+                            </if>
+                        </if>
+                        <if test="${not pkgconfig.available}">
+                            <call target="configure-from-registry" />
+                        </if>
+
+                        <property name="toolDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/3.5')}" />
+                        <property name="runtimeEngine" value="${path::combine(sdkInstallRoot, 'bin/mono.exe')}" />
+
+                        <target name="configure-from-pkg-config">
+                            <property name="mono.version" value="${pkg-config::get-mod-version('mono')}" />
+                            <property name="sdkInstallRoot" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'prefix'))}" />
+                            <property name="frameworkAssemblyDirectory" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'libdir'))}" />
+                            <property name="configDir" value="${path::combine(sdkInstallRoot, 'etc')}/" />
+                        </target>
+
+                        <target name="configure-from-registry">
+                            <readregistry
+                                property="mono.version"
+                                key="SOFTWARE\Novell\Mono\DefaultCLR"
+                                hive="LocalMachine" 
+                            />
+                            <property name="monokey" value="SOFTWARE\Novell\Mono\${mono.version}" />
+                           
+                            <readregistry
+                                property="sdkInstallRoot"
+                                key="${monokey}\SdkInstallRoot"
+                                hive="LocalMachine" />
+                            <readregistry
+                                property="frameworkAssemblyDirectory"
+                                key="${monokey}\FrameworkAssemblyDirectory"
+                                hive="LocalMachine" />
+                            <readregistry
+                                property="configDir"
+                                key="${monokey}\MonoConfigDir"
+                                hive="LocalMachine" />
+                        </target>
+                    </project>
+                    <properties>
+                    </properties>
+                    <tasks>
+                        <task name="al">
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="csc">
+                            <attribute name="exename">gmcs</attribute>
+                            <attribute name="managed">true</attribute>
+                            <attribute name="langversion">linq</attribute>
+                            <attribute name="supportspackagereferences">true</attribute>
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportsdocgeneration">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportslangversion">true</attribute>
+                        </task>
+                        <task name="jsc">
+                            <attribute name="exename">mjs</attribute>
+                            <attribute name="managed">strict</attribute>
+                        </task>
+                        <task name="vbc">
+                            <attribute name="exename">vbnc</attribute>
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="resgen">
+                            <attribute name="managed">true</attribute>
+                            <attribute name="supportsexternalfilereferences">true</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="hascommandlinecompiler">false</attribute>
+                        </task>
+                        <task name="ilasm">
+                            <attribute name="managed">true</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+                <framework
+                    name="moonlight-2.0" 
+                    family="moonlight"
+                    version="2.0"
+                    description="Moonlight 2.0"
+                    sdkdirectory="${toolDirectory}"
+                    frameworkdirectory="${toolDirectory}"
+                    frameworkassemblydirectory="${toolDirectory}"
+                    clrversion="2.0.50727"
+                    clrtype="Browser"
+                    vendor="Mono"
+                    >
+                    <runtime>
+                        <modes>
+                            <auto>
+                                <engine program="${runtimeEngine}">
+                                    <arg value="--runtime=moonlight" />
+                                    <arg value="--security=temporary-smcs-hack" />
+                                </engine>
+                            </auto>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="${path::combine(frameworkAssemblyDirectory, 'lib/mono/2.1')}">
+                        <include name="Microsoft.VisualBasic.dll" />
+                        <include name="mscorlib.dll" />
+                        <include name="System.Core.dll" />
+                        <include name="System.dll" />
+                        <include name="System.Net.dll" />
+                        <include name="System.Runtime.Serialization.dll" />
+                        <include name="System.ServiceModel.dll" />
+                        <include name="System.ServiceModel.Web.dll" />
+                        <include name="System.Windows.Browser.dll" />
+                        <include name="System.Windows.dll" />
+                        <include name="System.Xml.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- include MS.NET version-neutral assemblies -->
+                        <include name="extensions/net/neutral/**/*.dll" />
+                        <!-- include MS.NET 2.0 specific assemblies -->
+                        <include name="extensions/net/2.0/**/*.dll" />
+                        <!-- include MS.NET specific task assembly -->
+                        <include name="NAnt.MSNetTasks.dll" />
+                        <!-- include MS.NET specific test assembly -->
+                        <include name="NAnt.MSNet.Tests.dll" />
+                        <!-- include .NET 2.0 specific assemblies -->
+                        <include name="extensions/common/2.0/**/*.dll" />
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="${toolDirectory}" />
+                        <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}" />
+                        <directory name="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
+                        <!-- unmanaged tools -->
+                        <directory name="${sdkInstallRoot}/bin" />
+                    </tool-paths>
+                    <project>
+                        <!-- quick and dirty check to see if pkg-config is available (and configured) -->
+                        <property name="pkgconfig.available" value="${environment::variable-exists('PKG_CONFIG_PATH')}" />
+                        <if test="${pkgconfig.available}">
+                            <if test="${pkg-config::exists('mono')}">
+                                <call target="configure-from-pkg-config" />
+                            </if>
+                            <if test="${not pkg-config::exists('mono')}">
+                                <call target="configure-from-registry" />
+                            </if>
+                        </if>
+                        <if test="${not pkgconfig.available}">
+                            <call target="configure-from-registry" />
+                        </if>
+
+                        <property name="toolDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/2.1')}" />
+                        <property name="runtimeEngine" value="${path::combine(sdkInstallRoot, 'bin/mono.exe')}" />
+
+                        <target name="configure-from-pkg-config">
+                            <property name="mono.version" value="${pkg-config::get-mod-version('mono')}" />
+                            <property name="sdkInstallRoot" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'prefix'))}" />
+                            <property name="frameworkAssemblyDirectory" value="${cygpath::get-windows-path(pkg-config::get-variable('mono', 'libdir'))}" />
+                            <property name="configDir" value="${path::combine(sdkInstallRoot, 'etc')}/" />
+                        </target>
+
+                        <target name="configure-from-registry">
+                            <readregistry
+                                property="mono.version"
+                                key="SOFTWARE\Novell\Mono\DefaultCLR"
+                                hive="LocalMachine" 
+                            />
+                            <property name="monokey" value="SOFTWARE\Novell\Mono\${mono.version}" />
+                           
+                            <readregistry
+                                property="sdkInstallRoot"
+                                key="${monokey}\SdkInstallRoot"
+                                hive="LocalMachine" />
+                            <readregistry
+                                property="frameworkAssemblyDirectory"
+                                key="${monokey}\FrameworkAssemblyDirectory"
+                                hive="LocalMachine" />
+                            <readregistry
+                                property="configDir"
+                                key="${monokey}\MonoConfigDir"
+                                hive="LocalMachine" />
+                        </target>
+                    </project>
+                    <tasks>
+                        <task name="csc">
+                            <attribute name="exename">smcs</attribute>
+                            <attribute name="managed">true</attribute>
+                            <attribute name="supportspackagereferences">true</attribute>
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportsdocgeneration">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportslangversion">true</attribute>
+                        </task>
+                        <task name="resgen">
+                            <attribute name="supportsassemblyreferences">true</attribute>
+                            <attribute name="supportsexternalfilereferences">true</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="hascommandlinecompiler">false</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+                <framework 
+                    name="sscli-1.0"
+                    family="sscli"
+                    version="1.0"
+                    description="Microsoft Shared Source CLI 1.0"
+                    sdkdirectory="C:\sscli\build\v1.x86fstchk.rotor\sdk\bin"
+                    frameworkdirectory="C:\sscli\build\v1.x86fstchk.rotor"
+                    frameworkassemblydirectory="C:\sscli\build\v1.x86fstchk.rotor"
+                    clrversion="1.0.3"
+                    clrtype="Desktop"
+                    vendor="Microsoft"
+                    >
+                    <runtime>
+                        <modes>
+                            <auto>
+                                <engine program="C:\sscli\build\v1.x86fstchk.rotor\clix.exe" />
+                            </auto>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="C:\sscli\build\v1.x86fstchk.rotor">
+                        <include name="*.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- this is not a supported runtime framework -->
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="C:\sscli\build\v1.x86fstchk.rotor\sdk\bin" />
+                        <directory name="C:\sscli\build\v1.x86fstchk.rotor" />
+                    </tool-paths>
+                    <project />
+                    <tasks>
+                        <task name="csc">
+                            <attribute name="supportsnowarnlist">true</attribute>
+                        </task>
+                        <task name="jsc">
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="hascommandlinecompiler">false</attribute>
+                        </task>
+                        <task name="ilasm">
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="ildasm">
+                            <attribute name="managed">true</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+            </platform>
+            <platform name="unix" default="auto">
+                <task-assemblies>
+                        <!-- include NAnt task assemblies -->
+                        <include name="*Tasks.dll" />
+                        <!-- include NAnt test assemblies -->
+                        <include name="*Tests.dll" />
+                        <!-- include framework-neutral assemblies -->
+                        <include name="extensions/common/neutral/**/*.dll" />
+                        <!-- exclude Microsoft.NET specific task assembly -->
+                        <exclude name="NAnt.MSNetTasks.dll" />
+                        <!-- exclude Microsoft.NET specific test assembly -->
+                        <exclude name="NAnt.MSNet.Tests.dll" />
+                        <!-- exclude win32 specific task assembly -->
+                        <exclude name="NAnt.Win32Tasks.dll" />
+                        <!-- exclude win32 specific test assembly -->
+                        <exclude name="NAnt.Win32.Tests.dll" />
+                </task-assemblies>
+                <framework 
+                    name="mono-1.0"
+                    family="mono"
+                    version="1.0"
+                    description="Mono 1.0 Profile"
+                    sdkdirectory="${toolDirectory}"
+                    frameworkdirectory="${toolDirectory}"
+                    frameworkassemblydirectory="${path::combine(prefix, 'lib/mono/1.0')}"
+                    clrversion="1.1.4322"
+                    clrtype="Desktop"
+                    vendor="Mono"
+                    >
+                    <runtime>
+                        <probing-paths>
+                            <directory name="lib/mono/1.0" />
+                            <directory name="lib/mono/neutral" />
+                            <directory name="lib/common/1.1" />
+                            <directory name="lib/common/neutral" />
+                        </probing-paths>
+                        <modes>
+                            <auto>
+                                <engine program="${path::combine(prefix, 'bin/mono')}" />
+                            </auto>
+                            <strict>
+                                <engine program="${path::combine(prefix, 'bin/mono')}">
+                                    <arg value="--runtime=v1.1.4322" />
+                                </engine>
+                            </strict>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/1.0')}">
+                        <include name="*.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- include Mono version-neutral assemblies -->
+                        <include name="extensions/mono/neutral/**/*.dll" />
+                        <!-- include Mono 1.0 specific assemblies -->
+                        <include name="extensions/mono/1.0/**/*.dll" />
+                        <!-- include .NET 1.1 specific assemblies -->
+                        <include name="extensions/common/1.1/**/*.dll" />
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="${toolDirectory}" />
+                        <!-- unmanaged tools -->
+                        <directory name="${prefix}/bin" />
+                    </tool-paths>
+                    <project>
+                        <if test="${not pkg-config::exists('mono')}">
+                            <fail>Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.</fail>
+                        </if>
+                        <property name="prefix" value="${pkg-config::get-variable('mono', 'prefix')}" />
+                        <if test="${not(pkg-config::is-atleast-version('mono', '1.1'))}">
+                            <property name="toolDirectory" value="${path::combine(prefix, 'bin')}" />
+                            <property name="resgen.tool" value="monoresgen" />
+                            <property name="csc.supportsdocgeneration" value="false" />
+                        </if>
+                        <if test="${pkg-config::is-atleast-version('mono', '1.1')}">
+                            <property name="toolDirectory" value="${path::combine(prefix, 'lib/mono/1.0')}" />
+                            <property name="resgen.tool" value="resgen" />
+                            <property name="csc.supportsdocgeneration" value="true" />
+                        </if>
+                    </project>
+                    <tasks>
+                        <task name="al">
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="csc">
+                            <attribute name="exename">${path::combine(prefix, 'lib/mono/1.0/mcs.exe')}</attribute>
+                            <attribute name="managed">true</attribute>
+                            <attribute name="supportspackagereferences">true</attribute>
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportsdocgeneration">${csc.supportsdocgeneration}</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportslangversion">true</attribute>
+                        </task>
+                        <task name="jsc">
+                            <attribute name="exename">mjs</attribute>
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="vbc">
+                            <attribute name="exename">${path::combine(prefix, 'lib/mono/1.0/mbas.exe')}</attribute>
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="resgen">
+                            <attribute name="exename">${resgen.tool}</attribute>
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="hascommandlinecompiler">false</attribute>
+                        </task>
+                        <task name="ilasm">
+                            <attribute name="managed">true</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+                <framework
+                    name="mono-2.0"
+                    family="mono"
+                    version="2.0"
+                    description="Mono 2.0 Profile"
+                    sdkdirectory="${toolDirectory}"
+                    frameworkdirectory="${toolDirectory}"
+                    frameworkassemblydirectory="${path::combine(prefix, 'lib/mono/2.0')}"
+                    clrversion="2.0.50727"
+                    clrtype="Desktop"
+                    vendor="Mono"
+                    >
+                    <runtime>
+                        <probing-paths>
+                            <directory name="lib/mono/2.0" />
+                            <directory name="lib/mono/neutral" />
+                            <directory name="lib/common/2.0" />
+                            <directory name="lib/common/neutral" />
+                        </probing-paths>
+                        <modes>
+                            <auto>
+                                <engine program="${path::combine(prefix, 'bin/mono')}" />
+                            </auto>
+                            <strict>
+                                <engine program="${path::combine(prefix, 'bin/mono')}">
+                                    <arg value="--runtime=v2.0.50727" />
+                                </engine>
+                            </strict>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/2.0')}">
+                        <include name="*.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- include Mono version-neutral assemblies -->
+                        <include name="extensions/mono/neutral/**/*.dll" />
+                        <!-- include Mono 2.0 specific assemblies -->
+                        <include name="extensions/mono/2.0/**/*.dll" />
+                        <!-- include .NET 2.0 specific assemblies -->
+                        <include name="extensions/common/2.0/**/*.dll" />
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="${toolDirectory}" />
+                        <directory name="${path::combine(prefix, 'lib/mono/1.0')}" />
+                        <!-- unmanaged tools -->
+                        <directory name="${prefix}/bin" />
+                    </tool-paths>
+                    <project>
+                        <if test="${not pkg-config::exists('mono')}">
+                            <fail>Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.</fail>
+                        </if>
+                        <property name="resgen.supportsexternalfilereferences" value="false" />
+                        <property name="prefix" value="${pkg-config::get-variable('mono', 'prefix')}" />
+                        <if test="${not(pkg-config::is-atleast-version('mono', '1.1'))}">
+                            <property name="toolDirectory" value="${path::combine(prefix, 'bin')}" />
+                            <property name="resgen.tool" value="monoresgen" />
+                            <property name="csc.supportsdocgeneration" value="false" />
+                        </if>
+                        <if test="${pkg-config::is-atleast-version('mono', '1.1')}">
+                            <property name="toolDirectory" value="${path::combine(prefix, 'lib/mono/2.0')}" />
+                            <property name="resgen.tool" value="resgen" />
+                            <property name="csc.supportsdocgeneration" value="true" />
+                        </if>
+                        <!-- as from Mono 1.2.3.50, resgen supports the /usesourcepath option -->
+                        <if test="${pkg-config::is-atleast-version('mono', '1.2.3.50')}">
+                            <property name="resgen.supportsexternalfilereferences" value="true" />
+                        </if>
+                    </project>
+                    <tasks>
+                        <task name="al">
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="csc">
+                            <attribute name="exename">gmcs</attribute>
+                            <attribute name="managed">true</attribute>
+                            <attribute name="supportspackagereferences">true</attribute>
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportsdocgeneration">${csc.supportsdocgeneration}</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportslangversion">true</attribute>
+                        </task>
+                        <task name="jsc">
+                            <attribute name="exename">mjs</attribute>
+                            <attribute name="managed">strict</attribute>
+                        </task>
+                        <task name="vbc">
+                            <attribute name="exename">vbnc</attribute>
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="resgen">
+                            <attribute name="exename">${resgen.tool}</attribute>
+                            <attribute name="managed">true</attribute>
+                            <attribute name="supportsexternalfilereferences">${resgen.supportsexternalfilereferences}</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="hascommandlinecompiler">false</attribute>
+                        </task>
+                        <task name="ilasm">
+                            <attribute name="managed">true</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+                <framework
+                    name="mono-3.5"
+                    family="mono"
+                    version="3.5"
+                    description="Mono 3.5 Profile"
+                    sdkdirectory="${toolDirectory}"
+                    frameworkdirectory="${toolDirectory}"
+                    frameworkassemblydirectory="${path::combine(prefix, 'lib/mono/2.0')}"
+                    clrversion="2.0.50727"
+                    clrtype="Desktop"
+                    vendor="Mono"
+                    >
+                    <runtime>
+                        <probing-paths>
+                            <directory name="lib/mono/2.0" />
+                            <directory name="lib/mono/neutral" />
+                            <directory name="lib/common/2.0" />
+                            <directory name="lib/common/neutral" />
+                        </probing-paths>
+                        <modes>
+                            <auto>
+                                <engine program="${path::combine(prefix, 'bin/mono')}" />
+                            </auto>
+                            <strict>
+                                <engine program="${path::combine(prefix, 'bin/mono')}">
+                                    <arg value="--runtime=v2.0.50727" />
+                                </engine>
+                            </strict>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/3.5')}">
+                        <include name="*.dll" />
+                    </reference-assemblies>
+                    <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/3.0')}">
+                        <include name="*.dll" />
+                    </reference-assemblies>
+                    <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/2.0')}">
+                        <include name="*.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- include Mono version-neutral assemblies -->
+                        <include name="extensions/mono/neutral/**/*.dll" />
+                        <!-- include Mono 2.0 specific assemblies -->
+                        <include name="extensions/mono/2.0/**/*.dll" />
+                        <!-- include .NET 2.0 specific assemblies -->
+                        <include name="extensions/common/2.0/**/*.dll" />
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="${toolDirectory}" />
+                        <directory name="${path::combine(prefix, 'lib/mono/2.0')}" />
+                        <directory name="${path::combine(prefix, 'lib/mono/1.0')}" />
+                        <!-- unmanaged tools -->
+                        <directory name="${prefix}/bin" />
+                    </tool-paths>
+                    <project>
+                        <if test="${not pkg-config::exists('mono')}">
+                            <fail>Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.</fail>
+                        </if>
+                        <property name="resgen.supportsexternalfilereferences" value="false" />
+                        <property name="prefix" value="${pkg-config::get-variable('mono', 'prefix')}" />
+                        <property name="toolDirectory" value="${path::combine(prefix, 'lib/mono/3.5')}" />
+                    </project>
+                    <tasks>
+                        <task name="al">
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="csc">
+                            <attribute name="exename">gmcs</attribute>
+                            <attribute name="managed">true</attribute>
+                            <attribute name="langversion">linq</attribute>
+                            <attribute name="supportspackagereferences">true</attribute>
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportsdocgeneration">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportslangversion">true</attribute>
+                        </task>
+                        <task name="jsc">
+                            <attribute name="exename">mjs</attribute>
+                            <attribute name="managed">strict</attribute>
+                        </task>
+                        <task name="vbc">
+                            <attribute name="exename">vbnc</attribute>
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="resgen">
+                            <attribute name="managed">true</attribute>
+                            <attribute name="supportsexternalfilereferences">true</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                            <attribute name="managed">true</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="hascommandlinecompiler">false</attribute>
+                        </task>
+                        <task name="ilasm">
+                            <attribute name="managed">true</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+                <framework
+                    name="moonlight-2.0" 
+                    family="moonlight" 
+                    version="2.0"
+                    description="Moonlight 2.0"
+                    sdkdirectory="${toolDirectory}"
+                    frameworkdirectory="${toolDirectory}"
+                    frameworkassemblydirectory="${toolDirectory}"
+                    clrversion="2.0.50727"
+                    clrtype="Browser"
+                    vendor="Mono"
+                    >
+                    <runtime>
+                        <modes>
+                            <auto>
+                                <engine program="${path::combine(prefix, 'bin/mono')}">
+                                    <arg value="--runtime=moonlight" />
+                                    <arg value="--security=temporary-smcs-hack" />
+                                </engine>
+                            </auto>
+                        </modes>
+                    </runtime>
+                    <reference-assemblies basedir="${path::combine(prefix, 'lib/mono/2.1')}">
+                        <include name="Microsoft.VisualBasic.dll" />
+                        <include name="mscorlib.dll" />
+                        <include name="System.Core.dll" />
+                        <include name="System.dll" />
+                        <include name="System.Net.dll" />
+                        <include name="System.Runtime.Serialization.dll" />
+                        <include name="System.ServiceModel.dll" />
+                        <include name="System.ServiceModel.Web.dll" />
+                        <include name="System.Windows.Browser.dll" />
+                        <include name="System.Windows.dll" />
+                        <include name="System.Xml.dll" />
+                    </reference-assemblies>
+                    <task-assemblies>
+                        <!-- include MS.NET version-neutral assemblies -->
+                        <include name="extensions/net/neutral/**/*.dll" />
+                        <!-- include MS.NET 2.0 specific assemblies -->
+                        <include name="extensions/net/2.0/**/*.dll" />
+                        <!-- include MS.NET specific task assembly -->
+                        <include name="NAnt.MSNetTasks.dll" />
+                        <!-- include MS.NET specific test assembly -->
+                        <include name="NAnt.MSNet.Tests.dll" />
+                        <!-- include .NET 2.0 specific assemblies -->
+                        <include name="extensions/common/2.0/**/*.dll" />
+                    </task-assemblies>
+                    <tool-paths>
+                        <directory name="${toolDirectory}" />
+                        <directory name="${path::combine(prefix, 'lib/mono/2.0')}" />
+                        <directory name="${path::combine(prefix, 'lib/mono/1.0')}" />
+                        <!-- unmanaged tools -->
+                        <directory name="${prefix}/bin" />
+                    </tool-paths>
+                    <project>
+                        <if test="${not pkg-config::exists('mono')}">
+                            <fail>Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.</fail>
+                        </if>
+                        <property name="prefix" value="${pkg-config::get-variable('mono', 'prefix')}" />
+                        <property name="toolDirectory" value="${path::combine(prefix, 'lib/mono/2.1')}" />
+                    </project>
+                    <tasks>
+                        <task name="csc">
+                            <attribute name="exename">smcs</attribute>
+                            <attribute name="managed">true</attribute>
+                            <attribute name="supportspackagereferences">true</attribute>
+                            <attribute name="supportsnowarnlist">true</attribute>
+                            <attribute name="supportsdocgeneration">true</attribute>
+                            <attribute name="supportskeycontainer">true</attribute>
+                            <attribute name="supportskeyfile">true</attribute>
+                            <attribute name="supportsdelaysign">true</attribute>
+                            <attribute name="supportslangversion">true</attribute>
+                        </task>
+                        <task name="resgen">
+                            <attribute name="supportsassemblyreferences">true</attribute>
+                            <attribute name="supportsexternalfilereferences">true</attribute>
+                        </task>
+                        <task name="delay-sign">
+                            <attribute name="exename">sn</attribute>
+                        </task>
+                        <task name="license">
+                            <attribute name="hascommandlinecompiler">false</attribute>
+                        </task>
+                    </tasks>
+                </framework>
+            </platform>
+        </frameworks>
+        <properties>
+            <!-- properties defined here are accessible to all build files -->
+            <!-- <property name="foo" value = "bar" readonly="false" /> -->
+        </properties>
+    </nant>
+    <!--
+        This section contains the log4net configuration settings.
+
+        By default, no messages will be logged to the log4net logging infrastructure.
+
+        To enable the internal logging, set the threshold attribute on the log4net element
+        to "ALL".
+
+        When internal logging is enabled, internal messages will be written to the 
+        console.
+    -->
+    <log4net threshold="OFF">
+        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
+            <layout type="log4net.Layout.PatternLayout">
+                <param name="ConversionPattern" value="[%c{2}:%m  - [%x] &lt;%X{auth}&gt;]%n" />
+            </layout>
+        </appender>
+        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
+            <param name="File" value="${APPDATA}\\NAnt\\NAnt.log" />
+            <param name="AppendToFile" value="true" />
+            <param name="MaxSizeRollBackups" value="2" />
+            <param name="MaximumFileSize" value="500KB" />
+            <param name="RollingStyle" value="Size" />
+            <param name="StaticLogFileName" value="true" />
+            <layout type="log4net.Layout.PatternLayout">
+                <param name="ConversionPattern" value="[%c{2}:%m  - [%x] &lt;%X{auth}&gt;]%n" />
+            </layout>
+        </appender>
+        <!-- Setup the root category, add the appenders and set the default level -->
+        <root>
+            <!-- Only log messages with severity ERROR (or higher) -->
+            <level value="ERROR" />
+            <!-- Log messages to the console -->
+            <appender-ref ref="ConsoleAppender" />
+            <!-- Uncomment the next line to enable logging messages to the NAnt.log file -->
+            <!-- <appender-ref ref="RollingLogFileAppender" /> -->
+        </root>
+        <!-- Specify the priority for some specific categories -->
+        <!--
+        <logger name="NAnt.Core.TaskBuilderCollection">
+            <level value="DEBUG" />
+        </logger>
+        <logger name="NAnt">
+            <level value="INFO" />
+        </logger>
+        -->
+    </log4net>
+    <runtime>
+        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+            <probing privatePath="lib" />
+        </assemblyBinding>
+        <NetFx40_LegacySecurityPolicy enabled="true"/>
+    </runtime>
+    <startup>
+        <!-- .NET Framework 4.0 -->
+        <supportedRuntime version="v4.0.30319" />
+        <!-- .NET Framework 2.0 -->
+        <supportedRuntime version="v2.0.50727" />
+        <!-- .NET Framework 1.1 -->
+        <supportedRuntime version="v1.1.4322" />
+        <!-- .NET Framework 1.0 -->
+        <supportedRuntime version="v1.0.3705" />
+    </startup>
+</configuration>
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/NAnt.MSNetTasks.dll b/minisqlquery-master/src/Tools/nant/bin/NAnt.MSNetTasks.dll
new file mode 100644
index 0000000..be8f81e
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/NAnt.MSNetTasks.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/NAnt.NUnit.dll b/minisqlquery-master/src/Tools/nant/bin/NAnt.NUnit.dll
new file mode 100644
index 0000000..70aa55b
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/NAnt.NUnit.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/NAnt.NUnit1Tasks.dll b/minisqlquery-master/src/Tools/nant/bin/NAnt.NUnit1Tasks.dll
new file mode 100644
index 0000000..62b7379
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/NAnt.NUnit1Tasks.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/NAnt.NUnit2Tasks.dll b/minisqlquery-master/src/Tools/nant/bin/NAnt.NUnit2Tasks.dll
new file mode 100644
index 0000000..da3d6b6
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/NAnt.NUnit2Tasks.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/NAnt.SourceControlTasks.dll b/minisqlquery-master/src/Tools/nant/bin/NAnt.SourceControlTasks.dll
new file mode 100644
index 0000000..756484b
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/NAnt.SourceControlTasks.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/NAnt.VisualCppTasks.dll b/minisqlquery-master/src/Tools/nant/bin/NAnt.VisualCppTasks.dll
new file mode 100644
index 0000000..00a7100
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/NAnt.VisualCppTasks.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/NAnt.VSNetTasks.dll b/minisqlquery-master/src/Tools/nant/bin/NAnt.VSNetTasks.dll
new file mode 100644
index 0000000..a09a89d
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/NAnt.VSNetTasks.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/NAnt.Win32Tasks.dll b/minisqlquery-master/src/Tools/nant/bin/NAnt.Win32Tasks.dll
new file mode 100644
index 0000000..5d2e0fb
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/NAnt.Win32Tasks.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/NDoc.Documenter.NAnt.dll b/minisqlquery-master/src/Tools/nant/bin/NDoc.Documenter.NAnt.dll
new file mode 100644
index 0000000..cdcc3f1
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/NDoc.Documenter.NAnt.dll differ
Added +0 -0
diff --git a/minisqlquery-master/src/Tools/nant/bin/scvs.exe b/minisqlquery-master/src/Tools/nant/bin/scvs.exe
new file mode 100644
index 0000000..34da1bc
Binary files /dev/null and b/minisqlquery-master/src/Tools/nant/bin/scvs.exe differ
Added +340 -0
diff --git a/minisqlquery-master/src/Tools/nant/COPYING.txt b/minisqlquery-master/src/Tools/nant/COPYING.txt
new file mode 100644
index 0000000..5b6e7c6
--- /dev/null
+++ b/minisqlquery-master/src/Tools/nant/COPYING.txt
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Added +158 -0
diff --git a/minisqlquery-master/src/Tools/nant/README.txt b/minisqlquery-master/src/Tools/nant/README.txt
new file mode 100644
index 0000000..e0ba4b6
--- /dev/null
+++ b/minisqlquery-master/src/Tools/nant/README.txt
@@ -0,0 +1,158 @@
+NAnt
+
+What is it? 
+-----------
+NAnt is a .NET based build tool. In theory it is kind of like make without 
+make's wrinkles. In practice it's a lot like Ant. 
+  
+If you are not familiar with Jakarta Ant you can get more information at the
+Ant project web site (http://ant.apache.org/).
+
+
+Why NAnt?
+---------
+Because Ant was too Java specific.
+Because Ant needed the Java runtime.  NAnt only needs the .NET 
+or Mono runtime.
+
+
+The Latest Version
+------------------
+Details of the latest version can be found on the NAnt project web site
+http://nant.sourceforge.net/
+
+
+Files
+-----
+  README.txt      - This file.
+  Makefile        - Makefile for compilation with GNU Make.
+  Makefile.nmake  - Makefile for compilation with Microsoft NMake.
+
+
+Compilation and Installation
+----------------------------
+
+   a. Overview
+   -----------
+   The compilation process uses NAnt to build NAnt.
+   
+   The approach is to first compile a copy of NAnt (using make/nmake) for 
+   bootstrapping purpose. Next, the bootstrapped version of NAnt is used in 
+   conjunction with NAnt build file (NAnt.build) to build the full version.
+   
+   
+   b. Prerequisites
+   ----------------
+   To build NAnt, you will need the following components:
+
+   Windows
+   -------
+
+       * A version of the Microsoft .NET Framework
+
+           Available from http://msdn.microsoft.com/netframework/
+         
+           You will need the .NET Framework SDK as well as the runtime 
+           components if you intend to compile programs.
+
+           Note: NAnt currently supports versions 1.0, 1.1 and 2.0 
+           of the Microsoft .NET Framework. 
+
+       or
+
+       * Mono for Windows (version 1.0 or higher)
+
+           Available from http://www.mono-project.com/downloads/
+   
+   Linux/Unix
+   ----------
+
+       * GNU toolchain - including GNU make
+
+       * pkg-config
+
+           Available from: http://www.freedesktop.org/Software/pkgconfig
+
+       * A working Mono installation and development libraries (version 1.0 or higher)
+
+           Available from: http://www.mono-project.com/downloads/
+
+           
+    b. Building the Software
+    ------------------------
+      
+    Build NAnt using Microsoft .NET:     
+
+    GNU Make
+    --------
+        make install MONO= MCS=csc prefix=<installation path> [DESTDIR=<staging path>]
+
+        eg. make install MONO= MCS=csc prefix="c:\Program Files"
+
+    NMake
+    -----
+        nmake -f Makefile.nmake install prefix=<installation path> [DESTDIR=<staging path>]
+    
+        eg. nmake -f Makefile.nmake install prefix="c:\Program Files"
+
+
+    Building NAnt using Mono:
+
+    GNU Make
+    --------
+        make install prefix=<installation path> [DESTDIR=<staging path>]
+
+        eg. make install prefix="c:\Program Files"
+
+    NMake
+    -----
+        nmake -f Makefile.nmake install MONO=mono CSC=mcs prefix=<installation path> [DESTDIR=<staging path>]
+    
+        eg. nmake -f Makefile.nmake install MONO=mono CSC=mcs prefix=/usr/local/
+
+Note: 
+
+These instructions only apply to the source distribution of NAnt, as the binary distribution 
+contains pre-built assemblies.
+
+
+Documentation
+-------------
+Documentation is available in HTML format, in the doc/ directory.
+
+
+License
+-------
+Copyright (C) 2001-2008 Gerry Shaw
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+
+As a special exception, the copyright holders of this software give you
+permission to link the assemblies with independent modules to produce new
+assemblies, regardless of the license terms of these independent modules,
+and to copy and distribute the resulting assemblies under terms of your
+choice, provided that you also meet, for each linked independent module,
+the terms and conditions of the license of that module. An independent
+module is a module which is not derived from or based on these assemblies.
+If you modify this software, you may extend this exception to your version
+of the software, but you are not obligated to do so. If you do not wish to
+do so, delete this exception statement from your version. 
+
+A copy of the GNU General Public License is available in the COPYING.txt file 
+included with all NAnt distributions.
+
+For more licensing information refer to the GNU General Public License on the 
+GNU Project web site.
+http://www.gnu.org/copyleft/gpl.html
Added +2536 -0
diff --git a/minisqlquery-master/src/Tools/nant/schema/nant.xsd b/minisqlquery-master/src/Tools/nant/schema/nant.xsd
new file mode 100644
index 0000000..985cbce
--- /dev/null
+++ b/minisqlquery-master/src/Tools/nant/schema/nant.xsd
@@ -0,0 +1,2536 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:nant="http://nant.sf.net/release/0.91-alpha2/nant.xsd" elementFormDefault="qualified" targetNamespace="http://nant.sf.net/release/0.91-alpha2/nant.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:annotation>
+    <xs:documentation>NAnt schema generated at 08/17/2010 19:32:03</xs:documentation>
+  </xs:annotation>
+  <xs:complexType name="NAnt.Core.TaskContainer">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="gunzip" type="nant:NAnt.Compression.Tasks.GUnzip" />
+        <xs:element name="tar" type="nant:NAnt.Compression.Tasks.TarTask" />
+        <xs:element name="untar" type="nant:NAnt.Compression.Tasks.UnTarTask" />
+        <xs:element name="unzip" type="nant:NAnt.Compression.Tasks.UnZipTask" />
+        <xs:element name="zip" type="nant:NAnt.Compression.Tasks.ZipTask" />
+        <xs:element name="testtask" type="nant:Tests.NAnt.Core.Util.XmlLoggerTest-TestTask" />
+        <xs:element name="elementTest1" type="nant:Tests.NAnt.Core.ElementTest1Task" />
+        <xs:element name="test" type="nant:Tests.NAnt.Core.TestTask" />
+        <xs:element name="asminfo" type="nant:NAnt.DotNet.Tasks.AssemblyInfoTask" />
+        <xs:element name="al" type="nant:NAnt.DotNet.Tasks.AssemblyLinkerTask" />
+        <xs:element name="csc" type="nant:NAnt.DotNet.Tasks.CscTask" />
+        <xs:element name="delay-sign" type="nant:NAnt.DotNet.Tasks.DelaySignTask" />
+        <xs:element name="ilasm" type="nant:NAnt.DotNet.Tasks.IlasmTask" />
+        <xs:element name="jsc" type="nant:NAnt.DotNet.Tasks.JscTask" />
+        <xs:element name="license" type="nant:NAnt.DotNet.Tasks.LicenseTask" />
+        <xs:element name="ndoc" type="nant:NAnt.DotNet.Tasks.NDocTask" />
+        <xs:element name="regsvcs" type="nant:NAnt.DotNet.Tasks.RegsvcsTask" />
+        <xs:element name="resgen" type="nant:NAnt.DotNet.Tasks.ResGenTask" />
+        <xs:element name="script" type="nant:NAnt.DotNet.Tasks.ScriptTask" />
+        <xs:element name="vbc" type="nant:NAnt.DotNet.Tasks.VbcTask" />
+        <xs:element name="vjc" type="nant:NAnt.DotNet.Tasks.VjcTask" />
+        <xs:element name="nunit" type="nant:NAnt.NUnit1.Tasks.NUnitTask" />
+        <xs:element name="nunit2" type="nant:NAnt.NUnit2.Tasks.NUnit2Task" />
+        <xs:element name="cvs-changelog" type="nant:NAnt.SourceControl.Tasks.ChangeLogTask" />
+        <xs:element name="cvs-checkout" type="nant:NAnt.SourceControl.Tasks.CheckoutTask" />
+        <xs:element name="cvs-pass" type="nant:NAnt.SourceControl.Tasks.CvsPass" />
+        <xs:element name="cvs" type="nant:NAnt.SourceControl.Tasks.CvsTask" />
+        <xs:element name="cvs-export" type="nant:NAnt.SourceControl.Tasks.ExportTask" />
+        <xs:element name="cvs-rtag" type="nant:NAnt.SourceControl.Tasks.RTagTask" />
+        <xs:element name="cvs-tag" type="nant:NAnt.SourceControl.Tasks.TagTask" />
+        <xs:element name="cvs-update" type="nant:NAnt.SourceControl.Tasks.UpdateTask" />
+        <xs:element name="cl" type="nant:NAnt.VisualCpp.Tasks.ClTask" />
+        <xs:element name="lib" type="nant:NAnt.VisualCpp.Tasks.LibTask" />
+        <xs:element name="link" type="nant:NAnt.VisualCpp.Tasks.LinkTask" />
+        <xs:element name="mc" type="nant:NAnt.VisualCpp.Tasks.McTask" />
+        <xs:element name="midl" type="nant:NAnt.VisualCpp.Tasks.MidlTask" />
+        <xs:element name="rc" type="nant:NAnt.VisualCpp.Tasks.RcTask" />
+        <xs:element name="solution" type="nant:NAnt.VSNet.Tasks.SolutionTask" />
+        <xs:element name="aximp" type="nant:NAnt.Win32.Tasks.AxImpTask" />
+        <xs:element name="locatesdk" type="nant:NAnt.Win32.Tasks.LocateSdkTask" />
+        <xs:element name="readregistry" type="nant:NAnt.Win32.Tasks.ReadRegistryTask" />
+        <xs:element name="regasm" type="nant:NAnt.Win32.Tasks.RegAsmTask" />
+        <xs:element name="tlbexp" type="nant:NAnt.Win32.Tasks.TlbExpTask" />
+        <xs:element name="tlbimp" type="nant:NAnt.Win32.Tasks.TlbImpTask" />
+        <xs:element name="attrib" type="nant:NAnt.Core.Tasks.AttribTask" />
+        <xs:element name="available" type="nant:NAnt.Core.Tasks.AvailableTask" />
+        <xs:element name="call" type="nant:NAnt.Core.Tasks.CallTask" />
+        <xs:element name="copy" type="nant:NAnt.Core.Tasks.CopyTask" />
+        <xs:element name="delete" type="nant:NAnt.Core.Tasks.DeleteTask" />
+        <xs:element name="description" type="nant:NAnt.Core.Tasks.DescriptionTask" />
+        <xs:element name="echo" type="nant:NAnt.Core.Tasks.EchoTask" />
+        <xs:element name="exec" type="nant:NAnt.Core.Tasks.ExecTask" />
+        <xs:element name="fail" type="nant:NAnt.Core.Tasks.FailTask" />
+        <xs:element name="get" type="nant:NAnt.Core.Tasks.GetTask" />
+        <xs:element name="if" type="nant:NAnt.Core.Tasks.IfTask" />
+        <xs:element name="ifnot" type="nant:NAnt.Core.Tasks.IfNotTask" />
+        <xs:element name="include" type="nant:NAnt.Core.Tasks.IncludeTask" />
+        <xs:element name="loadfile" type="nant:NAnt.Core.Tasks.LoadFileTask" />
+        <xs:element name="loadtasks" type="nant:NAnt.Core.Tasks.LoadTasksTask" />
+        <xs:element name="foreach" type="nant:NAnt.Core.Tasks.LoopTask" />
+        <xs:element name="mail" type="nant:NAnt.Core.Tasks.MailTask" />
+        <xs:element name="mkdir" type="nant:NAnt.Core.Tasks.MkDirTask" />
+        <xs:element name="move" type="nant:NAnt.Core.Tasks.MoveTask" />
+        <xs:element name="nantschema" type="nant:NAnt.Core.Tasks.NAntSchemaTask" />
+        <xs:element name="nant" type="nant:NAnt.Core.Tasks.NAntTask" />
+        <xs:element name="property" type="nant:NAnt.Core.Tasks.PropertyTask" />
+        <xs:element name="regex" type="nant:NAnt.Core.Tasks.RegexTask" />
+        <xs:element name="setenv" type="nant:NAnt.Core.Tasks.SetEnvTask" />
+        <xs:element name="sleep" type="nant:NAnt.Core.Tasks.SleepTask" />
+        <xs:element name="style" type="nant:NAnt.Core.Tasks.StyleTask" />
+        <xs:element name="sysinfo" type="nant:NAnt.Core.Tasks.SysInfoTask" />
+        <xs:element name="touch" type="nant:NAnt.Core.Tasks.TouchTask" />
+        <xs:element name="tstamp" type="nant:NAnt.Core.Tasks.TStampTask" />
+        <xs:element name="uptodate" type="nant:NAnt.Core.Tasks.UpToDateTask" />
+        <xs:element name="xmlpeek" type="nant:NAnt.Core.Tasks.XmlPeekTask" />
+        <xs:element name="xmlpoke" type="nant:NAnt.Core.Tasks.XmlPokeTask" />
+        <xs:element name="ildasm" type="nant:NAnt.MSNet.Tasks.IldasmTask" />
+        <xs:element name="servicecontroller" type="nant:NAnt.MSNet.Tasks.ServiceControllerTask" />
+        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="strict" />
+      </xs:choice>
+    </xs:sequence>
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.Pattern">
+    <xs:attribute name="name" use="required" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.PatternSet">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="patternset" />
+      <xs:element minOccurs="0" maxOccurs="1" name="include" type="nant:NAnt.Core.Types.Pattern" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesfile" type="nant:NAnt.Core.Types.Pattern" />
+      <xs:element minOccurs="0" maxOccurs="1" name="exclude" type="nant:NAnt.Core.Types.Pattern" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludesfile" type="nant:NAnt.Core.Types.Pattern" />
+    </xs:sequence>
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.FileSet-Include">
+    <xs:attribute name="asis" use="optional" />
+    <xs:attribute name="frompath" use="optional" />
+    <xs:attribute name="name" use="required" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.FileSet-Exclude">
+    <xs:attribute name="name" use="required" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.FileSet-IncludesFile">
+    <xs:attribute name="asis" use="optional" />
+    <xs:attribute name="frompath" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:attribute name="name" use="required" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.FileSet-ExcludesFile">
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:attribute name="name" use="required" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Compression.Types.TarFileSet">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="patternset" type="nant:NAnt.Core.Types.PatternSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includes" type="nant:NAnt.Core.Types.FileSet-Include" />
+      <xs:element minOccurs="0" maxOccurs="1" name="include" type="nant:NAnt.Core.Types.FileSet-Include" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludes" type="nant:NAnt.Core.Types.FileSet-Exclude" />
+      <xs:element minOccurs="0" maxOccurs="1" name="exclude" type="nant:NAnt.Core.Types.FileSet-Exclude" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesList" type="nant:NAnt.Core.Types.FileSet-IncludesFile" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesfile" type="nant:NAnt.Core.Types.FileSet-IncludesFile" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludesfile" type="nant:NAnt.Core.Types.FileSet-ExcludesFile" />
+    </xs:sequence>
+    <xs:attribute name="filemode" use="optional" />
+    <xs:attribute name="dirmode" use="optional" />
+    <xs:attribute name="username" use="optional" />
+    <xs:attribute name="uid" use="optional" />
+    <xs:attribute name="groupname" use="optional" />
+    <xs:attribute name="gid" use="optional" />
+    <xs:attribute name="prefix" use="optional" />
+    <xs:attribute name="casesensitive" use="optional" />
+    <xs:attribute name="failonempty" use="optional" />
+    <xs:attribute name="defaultexcludes" use="optional" />
+    <xs:attribute name="basedir" use="optional" />
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Compression.Types.ZipFileSet">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="patternset" type="nant:NAnt.Core.Types.PatternSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includes" type="nant:NAnt.Core.Types.FileSet-Include" />
+      <xs:element minOccurs="0" maxOccurs="1" name="include" type="nant:NAnt.Core.Types.FileSet-Include" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludes" type="nant:NAnt.Core.Types.FileSet-Exclude" />
+      <xs:element minOccurs="0" maxOccurs="1" name="exclude" type="nant:NAnt.Core.Types.FileSet-Exclude" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesList" type="nant:NAnt.Core.Types.FileSet-IncludesFile" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesfile" type="nant:NAnt.Core.Types.FileSet-IncludesFile" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludesfile" type="nant:NAnt.Core.Types.FileSet-ExcludesFile" />
+    </xs:sequence>
+    <xs:attribute name="prefix" use="optional" />
+    <xs:attribute name="casesensitive" use="optional" />
+    <xs:attribute name="failonempty" use="optional" />
+    <xs:attribute name="defaultexcludes" use="optional" />
+    <xs:attribute name="basedir" use="optional" />
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Types.LibDirectorySet">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="patternset" type="nant:NAnt.Core.Types.PatternSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includes" type="nant:NAnt.Core.Types.FileSet-Include" />
+      <xs:element minOccurs="0" maxOccurs="1" name="include" type="nant:NAnt.Core.Types.FileSet-Include" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludes" type="nant:NAnt.Core.Types.FileSet-Exclude" />
+      <xs:element minOccurs="0" maxOccurs="1" name="exclude" type="nant:NAnt.Core.Types.FileSet-Exclude" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesList" type="nant:NAnt.Core.Types.FileSet-IncludesFile" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesfile" type="nant:NAnt.Core.Types.FileSet-IncludesFile" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludesfile" type="nant:NAnt.Core.Types.FileSet-ExcludesFile" />
+    </xs:sequence>
+    <xs:attribute name="casesensitive" use="optional" />
+    <xs:attribute name="failonempty" use="optional" />
+    <xs:attribute name="defaultexcludes" use="optional" />
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Types.AssemblyFileSet">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="patternset" type="nant:NAnt.Core.Types.PatternSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="lib" type="nant:NAnt.DotNet.Types.LibDirectorySet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includes" type="nant:NAnt.Core.Types.FileSet-Include" />
+      <xs:element minOccurs="0" maxOccurs="1" name="include" type="nant:NAnt.Core.Types.FileSet-Include" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludes" type="nant:NAnt.Core.Types.FileSet-Exclude" />
+      <xs:element minOccurs="0" maxOccurs="1" name="exclude" type="nant:NAnt.Core.Types.FileSet-Exclude" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesList" type="nant:NAnt.Core.Types.FileSet-IncludesFile" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesfile" type="nant:NAnt.Core.Types.FileSet-IncludesFile" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludesfile" type="nant:NAnt.Core.Types.FileSet-ExcludesFile" />
+    </xs:sequence>
+    <xs:attribute name="casesensitive" use="optional" />
+    <xs:attribute name="failonempty" use="optional" />
+    <xs:attribute name="defaultexcludes" use="optional" />
+    <xs:attribute name="basedir" use="optional" />
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Types.Module">
+    <xs:attribute name="file" use="required" />
+    <xs:attribute name="target" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Types.ModuleSet">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="module" type="nant:NAnt.DotNet.Types.Module" />
+    </xs:sequence>
+    <xs:attribute name="dir" use="optional" />
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Types.NamespaceImport">
+    <xs:attribute name="name" use="optional" />
+    <xs:attribute name="namespace" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Types.NamespaceImportCollection">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="import" type="nant:NAnt.DotNet.Types.NamespaceImport" />
+    </xs:sequence>
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Types.ResourceFileSet">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="patternset" type="nant:NAnt.Core.Types.PatternSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includes" type="nant:NAnt.Core.Types.FileSet-Include" />
+      <xs:element minOccurs="0" maxOccurs="1" name="include" type="nant:NAnt.Core.Types.FileSet-Include" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludes" type="nant:NAnt.Core.Types.FileSet-Exclude" />
+      <xs:element minOccurs="0" maxOccurs="1" name="exclude" type="nant:NAnt.Core.Types.FileSet-Exclude" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesList" type="nant:NAnt.Core.Types.FileSet-IncludesFile" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesfile" type="nant:NAnt.Core.Types.FileSet-IncludesFile" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludesfile" type="nant:NAnt.Core.Types.FileSet-ExcludesFile" />
+    </xs:sequence>
+    <xs:attribute name="prefix" use="optional" />
+    <xs:attribute name="dynamicprefix" use="optional" />
+    <xs:attribute name="casesensitive" use="optional" />
+    <xs:attribute name="failonempty" use="optional" />
+    <xs:attribute name="defaultexcludes" use="optional" />
+    <xs:attribute name="basedir" use="optional" />
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Types.CompilerWarning">
+    <xs:attribute name="number" use="required" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Types.WarningAsError">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="include" type="nant:NAnt.DotNet.Types.CompilerWarning" />
+      <xs:element minOccurs="0" maxOccurs="1" name="exclude" type="nant:NAnt.DotNet.Types.CompilerWarning" />
+    </xs:sequence>
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.NUnit2.Types.Category">
+    <xs:attribute name="name" use="required" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.NUnit2.Types.Categories">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="include" type="nant:NAnt.NUnit2.Types.Category" />
+      <xs:element minOccurs="0" maxOccurs="1" name="exclude" type="nant:NAnt.NUnit2.Types.Category" />
+    </xs:sequence>
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.SourceControl.Types.CvsFileSet">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="patternset" type="nant:NAnt.Core.Types.PatternSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includes" type="nant:NAnt.Core.Types.FileSet-Include" />
+      <xs:element minOccurs="0" maxOccurs="1" name="include" type="nant:NAnt.Core.Types.FileSet-Include" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludes" type="nant:NAnt.Core.Types.FileSet-Exclude" />
+      <xs:element minOccurs="0" maxOccurs="1" name="exclude" type="nant:NAnt.Core.Types.FileSet-Exclude" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesList" type="nant:NAnt.Core.Types.FileSet-IncludesFile" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesfile" type="nant:NAnt.Core.Types.FileSet-IncludesFile" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludesfile" type="nant:NAnt.Core.Types.FileSet-ExcludesFile" />
+    </xs:sequence>
+    <xs:attribute name="usecvsignore" use="optional" />
+    <xs:attribute name="casesensitive" use="optional" />
+    <xs:attribute name="failonempty" use="optional" />
+    <xs:attribute name="defaultexcludes" use="optional" />
+    <xs:attribute name="basedir" use="optional" />
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Filters.Filter">
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Filters.FilterChain">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="filter" type="nant:NAnt.Core.Filters.Filter" />
+    </xs:sequence>
+    <xs:attribute name="encoding" use="optional" />
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.Credential">
+    <xs:attribute name="domain" use="optional" />
+    <xs:attribute name="password" use="optional" />
+    <xs:attribute name="username" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.FileSet">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="patternset" type="nant:NAnt.Core.Types.PatternSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includes" type="nant:NAnt.Core.Types.FileSet-Include" />
+      <xs:element minOccurs="0" maxOccurs="1" name="include" type="nant:NAnt.Core.Types.FileSet-Include" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludes" type="nant:NAnt.Core.Types.FileSet-Exclude" />
+      <xs:element minOccurs="0" maxOccurs="1" name="exclude" type="nant:NAnt.Core.Types.FileSet-Exclude" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesList" type="nant:NAnt.Core.Types.FileSet-IncludesFile" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesfile" type="nant:NAnt.Core.Types.FileSet-IncludesFile" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludesfile" type="nant:NAnt.Core.Types.FileSet-ExcludesFile" />
+    </xs:sequence>
+    <xs:attribute name="casesensitive" use="optional" />
+    <xs:attribute name="failonempty" use="optional" />
+    <xs:attribute name="defaultexcludes" use="optional" />
+    <xs:attribute name="basedir" use="optional" />
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.DirSet">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="patternset" type="nant:NAnt.Core.Types.PatternSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includes" type="nant:NAnt.Core.Types.FileSet-Include" />
+      <xs:element minOccurs="0" maxOccurs="1" name="include" type="nant:NAnt.Core.Types.FileSet-Include" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludes" type="nant:NAnt.Core.Types.FileSet-Exclude" />
+      <xs:element minOccurs="0" maxOccurs="1" name="exclude" type="nant:NAnt.Core.Types.FileSet-Exclude" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesList" type="nant:NAnt.Core.Types.FileSet-IncludesFile" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includesfile" type="nant:NAnt.Core.Types.FileSet-IncludesFile" />
+      <xs:element minOccurs="0" maxOccurs="1" name="excludesfile" type="nant:NAnt.Core.Types.FileSet-ExcludesFile" />
+    </xs:sequence>
+    <xs:attribute name="casesensitive" use="optional" />
+    <xs:attribute name="failonempty" use="optional" />
+    <xs:attribute name="defaultexcludes" use="optional" />
+    <xs:attribute name="basedir" use="optional" />
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.PathElement">
+    <xs:attribute name="file" use="optional" />
+    <xs:attribute name="dir" use="optional" />
+    <xs:attribute name="path" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.PathSet">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="path" />
+      <xs:element minOccurs="0" maxOccurs="1" name="pathelement" type="nant:NAnt.Core.Types.PathElement" />
+    </xs:sequence>
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.Proxy">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="credentials" type="nant:NAnt.Core.Types.Credential" />
+    </xs:sequence>
+    <xs:attribute name="host" use="required" />
+    <xs:attribute name="port" use="required" />
+    <xs:attribute name="bypassonlocal" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:attribute name="id" use="optional" />
+    <xs:attribute name="refid" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Compression.Tasks.GUnzip">
+    <xs:attribute name="src" use="required" />
+    <xs:attribute name="dest" use="required" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Compression.Tasks.TarTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="fileset" type="nant:NAnt.Compression.Types.TarFileSet" />
+    </xs:sequence>
+    <xs:attribute name="destfile" use="required" />
+    <xs:attribute name="includeemptydirs" use="optional" />
+    <xs:attribute name="compression" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Compression.Tasks.UnTarTask">
+    <xs:attribute name="src" use="required" />
+    <xs:attribute name="dest" use="optional" />
+    <xs:attribute name="compression" use="optional" />
+    <xs:attribute name="overwrite" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Compression.Tasks.UnZipTask">
+    <xs:attribute name="zipfile" use="required" />
+    <xs:attribute name="todir" use="optional" />
+    <xs:attribute name="encoding" use="optional" />
+    <xs:attribute name="overwrite" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Compression.Tasks.ZipTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="fileset" type="nant:NAnt.Compression.Types.ZipFileSet" />
+    </xs:sequence>
+    <xs:attribute name="zipfile" use="required" />
+    <xs:attribute name="comment" use="optional" />
+    <xs:attribute name="stampdatetime" use="optional" />
+    <xs:attribute name="ziplevel" use="optional" />
+    <xs:attribute name="includeemptydirs" use="optional" />
+    <xs:attribute name="duplicate" use="optional" />
+    <xs:attribute name="encoding" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="Tests.NAnt.Core.Util.XmlLoggerTest-TestTask">
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="Tests.NAnt.Core.ElementTest1Task">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="fileset" type="nant:NAnt.Core.Types.FileSet" />
+    </xs:sequence>
+    <xs:attribute name="type" use="optional" />
+    <xs:attribute name="uri" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="Tests.NAnt.Core.TestTask">
+    <xs:attribute name="fail" use="optional" />
+    <xs:attribute name="required" use="required" />
+    <xs:attribute name="requirednotempty" use="required" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Types.AssemblyAttribute">
+    <xs:attribute name="type" use="required" />
+    <xs:attribute name="value" use="optional" />
+    <xs:attribute name="asis" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Tasks.AssemblyInfoTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="attributes">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="attribute" type="nant:NAnt.DotNet.Types.AssemblyAttribute" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="imports" type="nant:NAnt.DotNet.Types.NamespaceImportCollection" />
+      <xs:element minOccurs="0" maxOccurs="1" name="references" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+    </xs:sequence>
+    <xs:attribute name="output" use="required" />
+    <xs:attribute name="language" use="required" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.Argument">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="path" type="nant:NAnt.Core.Types.PathSet" />
+    </xs:sequence>
+    <xs:attribute name="value" use="optional" />
+    <xs:attribute name="file" use="optional" />
+    <xs:attribute name="dir" use="optional" />
+    <xs:attribute name="path" use="optional" />
+    <xs:attribute name="line" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Tasks.AssemblyLinkerTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="modules" type="nant:NAnt.DotNet.Types.ModuleSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="sources" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="algid" use="optional" />
+    <xs:attribute name="company" use="optional" />
+    <xs:attribute name="configuration" use="optional" />
+    <xs:attribute name="copyright" use="optional" />
+    <xs:attribute name="culture" use="optional" />
+    <xs:attribute name="delaysign" use="optional" />
+    <xs:attribute name="description" use="optional" />
+    <xs:attribute name="evidence" use="optional" />
+    <xs:attribute name="fileversion" use="optional" />
+    <xs:attribute name="flags" use="optional" />
+    <xs:attribute name="keycontainer" use="optional" />
+    <xs:attribute name="keyfile" use="optional" />
+    <xs:attribute name="main" use="optional" />
+    <xs:attribute name="output" use="required" />
+    <xs:attribute name="target" use="required" />
+    <xs:attribute name="product" use="optional" />
+    <xs:attribute name="productversion" use="optional" />
+    <xs:attribute name="template" use="optional" />
+    <xs:attribute name="title" use="optional" />
+    <xs:attribute name="trademark" use="optional" />
+    <xs:attribute name="version" use="optional" />
+    <xs:attribute name="win32icon" use="optional" />
+    <xs:attribute name="win32res" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Types.Package">
+    <xs:attribute name="name" use="required" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Tasks.CscTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="warnaserror" type="nant:NAnt.DotNet.Types.WarningAsError" />
+      <xs:element minOccurs="0" maxOccurs="1" name="nowarn">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="warning" type="nant:NAnt.DotNet.Types.CompilerWarning" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="lib" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="references" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="pkg-references">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="package" type="nant:NAnt.DotNet.Types.Package" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="resources" type="nant:NAnt.DotNet.Types.ResourceFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="modules" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+      <xs:element minOccurs="1" maxOccurs="1" name="sources" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="baseaddress" use="optional" />
+    <xs:attribute name="debug" use="optional" />
+    <xs:attribute name="doc" use="optional" />
+    <xs:attribute name="filealign" use="optional" />
+    <xs:attribute name="nostdlib" use="optional" />
+    <xs:attribute name="noconfig" use="optional" />
+    <xs:attribute name="checked" use="optional" />
+    <xs:attribute name="unsafe" use="optional" />
+    <xs:attribute name="langversion" use="optional" />
+    <xs:attribute name="optimize" use="optional" />
+    <xs:attribute name="platform" use="optional" />
+    <xs:attribute name="warninglevel" use="optional" />
+    <xs:attribute name="codepage" use="optional" />
+    <xs:attribute name="output" use="required" />
+    <xs:attribute name="target" use="required" />
+    <xs:attribute name="define" use="optional" />
+    <xs:attribute name="win32icon" use="optional" />
+    <xs:attribute name="win32res" use="optional" />
+    <xs:attribute name="warnaserror" use="optional" />
+    <xs:attribute name="nowarn" use="optional" />
+    <xs:attribute name="rebuild" use="optional" />
+    <xs:attribute name="main" use="optional" />
+    <xs:attribute name="keycontainer" use="optional" />
+    <xs:attribute name="keyfile" use="optional" />
+    <xs:attribute name="delaysign" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Tasks.DelaySignTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="targets" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="keyfile" use="optional" />
+    <xs:attribute name="keycontainer" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Tasks.IlasmTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="1" maxOccurs="1" name="sources" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="clock" use="optional" />
+    <xs:attribute name="debug" use="optional" />
+    <xs:attribute name="error" use="optional" />
+    <xs:attribute name="rebuild" use="optional" />
+    <xs:attribute name="listing" use="optional" />
+    <xs:attribute name="alignment" use="optional" />
+    <xs:attribute name="base" use="optional" />
+    <xs:attribute name="flags" use="optional" />
+    <xs:attribute name="subsystem" use="optional" />
+    <xs:attribute name="target" use="required" />
+    <xs:attribute name="keysource" use="optional" />
+    <xs:attribute name="keyfile" use="optional" />
+    <xs:attribute name="output" use="required" />
+    <xs:attribute name="resourcefile" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Tasks.JscTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="lib" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="references" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="pkg-references">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="package" type="nant:NAnt.DotNet.Types.Package" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="resources" type="nant:NAnt.DotNet.Types.ResourceFileSet" />
+      <xs:element minOccurs="1" maxOccurs="1" name="sources" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="autoref" use="optional" />
+    <xs:attribute name="nostdlib" use="optional" />
+    <xs:attribute name="platform" use="optional" />
+    <xs:attribute name="versionsafe" use="optional" />
+    <xs:attribute name="warninglevel" use="optional" />
+    <xs:attribute name="codepage" use="optional" />
+    <xs:attribute name="debug" use="optional" />
+    <xs:attribute name="output" use="required" />
+    <xs:attribute name="target" use="required" />
+    <xs:attribute name="define" use="optional" />
+    <xs:attribute name="win32icon" use="optional" />
+    <xs:attribute name="win32res" use="optional" />
+    <xs:attribute name="warnaserror" use="optional" />
+    <xs:attribute name="rebuild" use="optional" />
+    <xs:attribute name="main" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Tasks.LicenseTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="assemblies" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+    </xs:sequence>
+    <xs:attribute name="input" use="required" />
+    <xs:attribute name="output" use="optional" />
+    <xs:attribute name="licensetarget" use="optional" />
+    <xs:attribute name="target" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.RawXml">
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Tasks.NDocTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="1" maxOccurs="1" name="assemblies" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="summaries" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="1" maxOccurs="1" name="documenters" type="nant:NAnt.Core.Types.RawXml" />
+      <xs:element minOccurs="0" maxOccurs="1" name="referencepaths" type="nant:NAnt.Core.Types.DirSet" />
+    </xs:sequence>
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Tasks.RegsvcsTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="action" use="optional" />
+    <xs:attribute name="assembly" use="required" />
+    <xs:attribute name="tlb" use="optional" />
+    <xs:attribute name="existingtlb" use="optional" />
+    <xs:attribute name="noreconfig" use="optional" />
+    <xs:attribute name="componentsonly" use="optional" />
+    <xs:attribute name="existingapp" use="optional" />
+    <xs:attribute name="application" use="optional" />
+    <xs:attribute name="partition" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Tasks.ResGenTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="resources" type="nant:NAnt.DotNet.Types.ResourceFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="assemblies" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="input" use="optional" />
+    <xs:attribute name="output" use="optional" />
+    <xs:attribute name="target" use="optional" />
+    <xs:attribute name="todir" use="optional" />
+    <xs:attribute name="usesourcepath" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Tasks.ScriptTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="references" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="imports" type="nant:NAnt.DotNet.Types.NamespaceImportCollection" />
+      <xs:element minOccurs="1" maxOccurs="1" name="code" type="nant:NAnt.Core.Types.RawXml" />
+    </xs:sequence>
+    <xs:attribute name="language" use="required" />
+    <xs:attribute name="mainclass" use="optional" />
+    <xs:attribute name="prefix" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Tasks.VbcTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="imports" type="nant:NAnt.DotNet.Types.NamespaceImportCollection" />
+      <xs:element minOccurs="0" maxOccurs="1" name="warnaserror" type="nant:NAnt.DotNet.Types.WarningAsError" />
+      <xs:element minOccurs="0" maxOccurs="1" name="nowarn">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="warning" type="nant:NAnt.DotNet.Types.CompilerWarning" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="lib" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="references" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="pkg-references">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="package" type="nant:NAnt.DotNet.Types.Package" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="resources" type="nant:NAnt.DotNet.Types.ResourceFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="modules" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+      <xs:element minOccurs="1" maxOccurs="1" name="sources" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="baseaddress" use="optional" />
+    <xs:attribute name="debug" use="optional" />
+    <xs:attribute name="doc" use="optional" />
+    <xs:attribute name="imports" use="optional" />
+    <xs:attribute name="nostdlib" use="optional" />
+    <xs:attribute name="optioncompare" use="optional" />
+    <xs:attribute name="optionexplicit" use="optional" />
+    <xs:attribute name="optionoptimize" use="optional" />
+    <xs:attribute name="optionstrict" use="optional" />
+    <xs:attribute name="platform" use="optional" />
+    <xs:attribute name="removeintchecks" use="optional" />
+    <xs:attribute name="rootnamespace" use="optional" />
+    <xs:attribute name="output" use="required" />
+    <xs:attribute name="target" use="required" />
+    <xs:attribute name="define" use="optional" />
+    <xs:attribute name="win32icon" use="optional" />
+    <xs:attribute name="win32res" use="optional" />
+    <xs:attribute name="warnaserror" use="optional" />
+    <xs:attribute name="nowarn" use="optional" />
+    <xs:attribute name="rebuild" use="optional" />
+    <xs:attribute name="main" use="optional" />
+    <xs:attribute name="keycontainer" use="optional" />
+    <xs:attribute name="keyfile" use="optional" />
+    <xs:attribute name="delaysign" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.DotNet.Tasks.VjcTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="nowarn">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="warning" type="nant:NAnt.DotNet.Types.CompilerWarning" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="lib" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="references" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="resources" type="nant:NAnt.DotNet.Types.ResourceFileSet" />
+      <xs:element minOccurs="1" maxOccurs="1" name="sources" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="debug" use="optional" />
+    <xs:attribute name="securescoping" use="optional" />
+    <xs:attribute name="x" use="optional" />
+    <xs:attribute name="libpath" use="optional" />
+    <xs:attribute name="jcpa" use="optional" />
+    <xs:attribute name="codepage" use="optional" />
+    <xs:attribute name="warninglevel" use="optional" />
+    <xs:attribute name="output" use="required" />
+    <xs:attribute name="target" use="required" />
+    <xs:attribute name="define" use="optional" />
+    <xs:attribute name="win32icon" use="optional" />
+    <xs:attribute name="win32res" use="optional" />
+    <xs:attribute name="warnaserror" use="optional" />
+    <xs:attribute name="nowarn" use="optional" />
+    <xs:attribute name="rebuild" use="optional" />
+    <xs:attribute name="main" use="optional" />
+    <xs:attribute name="keycontainer" use="optional" />
+    <xs:attribute name="keyfile" use="optional" />
+    <xs:attribute name="delaysign" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.NUnit1.Types.NUnitTest">
+    <xs:attribute name="outfile" use="optional" />
+    <xs:attribute name="todir" use="optional" />
+    <xs:attribute name="class" use="required" />
+    <xs:attribute name="assembly" use="required" />
+    <xs:attribute name="fork" use="optional" />
+    <xs:attribute name="haltonerror" use="optional" />
+    <xs:attribute name="haltonfailure" use="optional" />
+    <xs:attribute name="appconfig" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.NUnit.Types.FormatterElement">
+    <xs:attribute name="type" use="required" />
+    <xs:attribute name="extension" use="optional" />
+    <xs:attribute name="usefile" use="optional" />
+    <xs:attribute name="outputdir" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.NUnit1.Tasks.NUnitTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="test" type="nant:NAnt.NUnit1.Types.NUnitTest" />
+      <xs:element minOccurs="0" maxOccurs="1" name="formatter" type="nant:NAnt.NUnit.Types.FormatterElement" />
+    </xs:sequence>
+    <xs:attribute name="haltonerror" use="optional" />
+    <xs:attribute name="haltonfailure" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.NUnit2.Types.NUnit2Test">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="assemblies" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="references" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="categories" type="nant:NAnt.NUnit2.Types.Categories" />
+    </xs:sequence>
+    <xs:attribute name="assemblyname" use="optional" />
+    <xs:attribute name="testname" use="optional" />
+    <xs:attribute name="haltonfailure" use="optional" />
+    <xs:attribute name="transformfile" use="optional" />
+    <xs:attribute name="appconfig" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.NUnit2.Tasks.NUnit2Task">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="test" type="nant:NAnt.NUnit2.Types.NUnit2Test" />
+      <xs:element minOccurs="0" maxOccurs="1" name="formatter" type="nant:NAnt.NUnit.Types.FormatterElement" />
+    </xs:sequence>
+    <xs:attribute name="haltonfailure" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.SourceControl.Tasks.ChangeLogTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="fileset" type="nant:NAnt.SourceControl.Types.CvsFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="xmlfile" use="required" />
+    <xs:attribute name="start" use="required" />
+    <xs:attribute name="end" use="required" />
+    <xs:attribute name="cvsroot" use="optional" />
+    <xs:attribute name="cvsfullpath" use="optional" />
+    <xs:attribute name="module" use="optional" />
+    <xs:attribute name="cvsrsh" use="optional" />
+    <xs:attribute name="quiet" use="optional" />
+    <xs:attribute name="reallyquiet" use="optional" />
+    <xs:attribute name="readonly" use="optional" />
+    <xs:attribute name="readwrite" use="optional" />
+    <xs:attribute name="compressionlevel" use="optional" />
+    <xs:attribute name="destination" use="optional" />
+    <xs:attribute name="password" use="optional" />
+    <xs:attribute name="passfile" use="optional" />
+    <xs:attribute name="commandline" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.SourceControl.Tasks.CheckoutTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="fileset" type="nant:NAnt.SourceControl.Types.CvsFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="revision" use="optional" />
+    <xs:attribute name="sticky-tag" use="optional" />
+    <xs:attribute name="date" use="optional" />
+    <xs:attribute name="overridedir" use="optional" />
+    <xs:attribute name="override-directory" use="optional" />
+    <xs:attribute name="cvsfullpath" use="optional" />
+    <xs:attribute name="cvsroot" use="optional" />
+    <xs:attribute name="module" use="optional" />
+    <xs:attribute name="usesharpcvslib" use="optional" />
+    <xs:attribute name="cvsrsh" use="optional" />
+    <xs:attribute name="quiet" use="optional" />
+    <xs:attribute name="reallyquiet" use="optional" />
+    <xs:attribute name="readonly" use="optional" />
+    <xs:attribute name="readwrite" use="optional" />
+    <xs:attribute name="compressionlevel" use="optional" />
+    <xs:attribute name="destination" use="optional" />
+    <xs:attribute name="password" use="optional" />
+    <xs:attribute name="passfile" use="optional" />
+    <xs:attribute name="commandline" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.SourceControl.Tasks.CvsPass">
+    <xs:attribute name="password" use="required" />
+    <xs:attribute name="passfile" use="optional" />
+    <xs:attribute name="cvsroot" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.SourceControl.Tasks.CvsTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="fileset" type="nant:NAnt.SourceControl.Types.CvsFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="command" use="required" />
+    <xs:attribute name="cvsfullpath" use="optional" />
+    <xs:attribute name="cvsroot" use="optional" />
+    <xs:attribute name="module" use="optional" />
+    <xs:attribute name="usesharpcvslib" use="optional" />
+    <xs:attribute name="cvsrsh" use="optional" />
+    <xs:attribute name="quiet" use="optional" />
+    <xs:attribute name="reallyquiet" use="optional" />
+    <xs:attribute name="readonly" use="optional" />
+    <xs:attribute name="readwrite" use="optional" />
+    <xs:attribute name="compressionlevel" use="optional" />
+    <xs:attribute name="destination" use="optional" />
+    <xs:attribute name="password" use="optional" />
+    <xs:attribute name="passfile" use="optional" />
+    <xs:attribute name="commandline" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.SourceControl.Tasks.ExportTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="fileset" type="nant:NAnt.SourceControl.Types.CvsFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="no-shortening" use="optional" />
+    <xs:attribute name="force-head" use="optional" />
+    <xs:attribute name="recursive" use="optional" />
+    <xs:attribute name="revision" use="optional" />
+    <xs:attribute name="date" use="optional" />
+    <xs:attribute name="overridedir" use="optional" />
+    <xs:attribute name="cvsfullpath" use="optional" />
+    <xs:attribute name="cvsroot" use="optional" />
+    <xs:attribute name="module" use="optional" />
+    <xs:attribute name="usesharpcvslib" use="optional" />
+    <xs:attribute name="cvsrsh" use="optional" />
+    <xs:attribute name="quiet" use="optional" />
+    <xs:attribute name="reallyquiet" use="optional" />
+    <xs:attribute name="readonly" use="optional" />
+    <xs:attribute name="readwrite" use="optional" />
+    <xs:attribute name="compressionlevel" use="optional" />
+    <xs:attribute name="destination" use="optional" />
+    <xs:attribute name="password" use="optional" />
+    <xs:attribute name="passfile" use="optional" />
+    <xs:attribute name="commandline" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.SourceControl.Tasks.RTagTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="fileset" type="nant:NAnt.SourceControl.Types.CvsFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="tag" use="required" />
+    <xs:attribute name="remove" use="optional" />
+    <xs:attribute name="move-if-exists" use="optional" />
+    <xs:attribute name="recursive" use="optional" />
+    <xs:attribute name="act-on-tag" use="optional" />
+    <xs:attribute name="act-on-date" use="optional" />
+    <xs:attribute name="force-head" use="optional" />
+    <xs:attribute name="cvsfullpath" use="optional" />
+    <xs:attribute name="cvsroot" use="optional" />
+    <xs:attribute name="module" use="optional" />
+    <xs:attribute name="usesharpcvslib" use="optional" />
+    <xs:attribute name="cvsrsh" use="optional" />
+    <xs:attribute name="quiet" use="optional" />
+    <xs:attribute name="reallyquiet" use="optional" />
+    <xs:attribute name="readonly" use="optional" />
+    <xs:attribute name="readwrite" use="optional" />
+    <xs:attribute name="compressionlevel" use="optional" />
+    <xs:attribute name="destination" use="optional" />
+    <xs:attribute name="password" use="optional" />
+    <xs:attribute name="passfile" use="optional" />
+    <xs:attribute name="commandline" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.SourceControl.Tasks.TagTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="fileset" type="nant:NAnt.SourceControl.Types.CvsFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="tag" use="required" />
+    <xs:attribute name="remove" use="optional" />
+    <xs:attribute name="move-if-exists" use="optional" />
+    <xs:attribute name="recursive" use="optional" />
+    <xs:attribute name="act-on-tag" use="optional" />
+    <xs:attribute name="act-on-date" use="optional" />
+    <xs:attribute name="force-head" use="optional" />
+    <xs:attribute name="fail-if-modified" use="optional" />
+    <xs:attribute name="cvsfullpath" use="optional" />
+    <xs:attribute name="cvsroot" use="optional" />
+    <xs:attribute name="usesharpcvslib" use="optional" />
+    <xs:attribute name="cvsrsh" use="optional" />
+    <xs:attribute name="quiet" use="optional" />
+    <xs:attribute name="reallyquiet" use="optional" />
+    <xs:attribute name="readonly" use="optional" />
+    <xs:attribute name="readwrite" use="optional" />
+    <xs:attribute name="compressionlevel" use="optional" />
+    <xs:attribute name="destination" use="optional" />
+    <xs:attribute name="password" use="optional" />
+    <xs:attribute name="passfile" use="optional" />
+    <xs:attribute name="commandline" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.SourceControl.Tasks.UpdateTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="fileset" type="nant:NAnt.SourceControl.Types.CvsFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="builddirs" use="optional" />
+    <xs:attribute name="pruneempty" use="optional" />
+    <xs:attribute name="overwritelocal" use="optional" />
+    <xs:attribute name="recursive" use="optional" />
+    <xs:attribute name="revision" use="optional" />
+    <xs:attribute name="sticky-tag" use="optional" />
+    <xs:attribute name="date" use="optional" />
+    <xs:attribute name="cvsfullpath" use="optional" />
+    <xs:attribute name="cvsroot" use="optional" />
+    <xs:attribute name="module" use="optional" />
+    <xs:attribute name="usesharpcvslib" use="optional" />
+    <xs:attribute name="cvsrsh" use="optional" />
+    <xs:attribute name="quiet" use="optional" />
+    <xs:attribute name="reallyquiet" use="optional" />
+    <xs:attribute name="readonly" use="optional" />
+    <xs:attribute name="readwrite" use="optional" />
+    <xs:attribute name="compressionlevel" use="optional" />
+    <xs:attribute name="destination" use="optional" />
+    <xs:attribute name="password" use="optional" />
+    <xs:attribute name="passfile" use="optional" />
+    <xs:attribute name="commandline" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.Option">
+    <xs:attribute name="name" use="required" />
+    <xs:attribute name="value" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.VisualCpp.Tasks.ClTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="sources" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="includedirs" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="metadataincludedirs" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="forcedusingfiles" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="defines">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="define" type="nant:NAnt.Core.Types.Option" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="undefines">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="undefine" type="nant:NAnt.Core.Types.Option" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="outputdir" use="required" />
+    <xs:attribute name="pchfile" use="optional" />
+    <xs:attribute name="pchthroughfile" use="optional" />
+    <xs:attribute name="pchmode" use="optional" />
+    <xs:attribute name="managedextensions" use="optional" />
+    <xs:attribute name="characterset" use="optional" />
+    <xs:attribute name="options" use="optional" />
+    <xs:attribute name="objectfile" use="optional" />
+    <xs:attribute name="pdbfile" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.VisualCpp.Types.Symbol">
+    <xs:attribute name="name" use="required" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.VisualCpp.Types.Library">
+    <xs:attribute name="name" use="required" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.VisualCpp.Tasks.LibTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="sources" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="symbols">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="symbol" type="nant:NAnt.VisualCpp.Types.Symbol" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="ignorelibraries">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="library" type="nant:NAnt.VisualCpp.Types.Library" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="libdirs" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="options" use="optional" />
+    <xs:attribute name="output" use="required" />
+    <xs:attribute name="moduledefinition" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.VisualCpp.Tasks.LinkTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="delayloaded" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="sources" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="libdirs" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="modules" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="embeddedresources" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="symbols">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="symbol" type="nant:NAnt.VisualCpp.Types.Symbol" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="ignorelibraries">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="library" type="nant:NAnt.VisualCpp.Types.Library" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="options" use="optional" />
+    <xs:attribute name="output" use="required" />
+    <xs:attribute name="pdbfile" use="optional" />
+    <xs:attribute name="moduledefinition" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.VisualCpp.Tasks.McTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="options" use="optional" />
+    <xs:attribute name="headerpath" use="optional" />
+    <xs:attribute name="rcpath" use="optional" />
+    <xs:attribute name="mcfile" use="required" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.VisualCpp.Tasks.MidlTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="options">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="option" type="nant:NAnt.Core.Types.Option" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="defines">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="define" type="nant:NAnt.Core.Types.Option" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="undefines">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="undefine" type="nant:NAnt.Core.Types.Option" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="includedirs" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="acf" use="optional" />
+    <xs:attribute name="align" use="optional" />
+    <xs:attribute name="app_config" use="optional" />
+    <xs:attribute name="char" use="optional" />
+    <xs:attribute name="client" use="optional" />
+    <xs:attribute name="cstub" use="optional" />
+    <xs:attribute name="dlldata" use="optional" />
+    <xs:attribute name="env" use="optional" />
+    <xs:attribute name="Oi" use="optional" />
+    <xs:attribute name="tlb" use="optional" />
+    <xs:attribute name="header" use="optional" />
+    <xs:attribute name="iid" use="optional" />
+    <xs:attribute name="proxy" use="optional" />
+    <xs:attribute name="filename" use="required" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.VisualCpp.Tasks.RcTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="includedirs" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="defines">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="define" type="nant:NAnt.Core.Types.Option" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="options" use="optional" />
+    <xs:attribute name="output" use="optional" />
+    <xs:attribute name="rcfile" use="required" />
+    <xs:attribute name="langid" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.VSNet.Types.WebMap">
+    <xs:attribute name="url" use="required" />
+    <xs:attribute name="path" use="required" />
+    <xs:attribute name="casesensitive" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.VSNet.Tasks.SolutionTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="projects" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="referenceprojects" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="webmap">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="map" type="nant:NAnt.VSNet.Types.WebMap" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="excludeprojects" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="assemblyfolders" type="nant:NAnt.Core.Types.FileSet" />
+    </xs:sequence>
+    <xs:attribute name="solutionfile" use="optional" />
+    <xs:attribute name="configuration" use="required" />
+    <xs:attribute name="platform" use="optional" />
+    <xs:attribute name="outputdir" use="optional" />
+    <xs:attribute name="includevsfolders" use="optional" />
+    <xs:attribute name="enablewebdav" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Win32.Tasks.AxImpTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="ocx" use="required" />
+    <xs:attribute name="output" use="optional" />
+    <xs:attribute name="publickey" use="optional" />
+    <xs:attribute name="keyfile" use="optional" />
+    <xs:attribute name="keycontainer" use="optional" />
+    <xs:attribute name="delaysign" use="optional" />
+    <xs:attribute name="generatesource" use="optional" />
+    <xs:attribute name="rcw" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Win32.Tasks.LocateSdkTask">
+    <xs:attribute name="property" use="required" />
+    <xs:attribute name="minwinsdkver" use="optional" />
+    <xs:attribute name="maxwinsdkver" use="optional" />
+    <xs:attribute name="minnetfxver" use="optional" />
+    <xs:attribute name="maxnetfxver" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Win32.Tasks.ReadRegistryTask">
+    <xs:attribute name="property" use="optional" />
+    <xs:attribute name="prefix" use="optional" />
+    <xs:attribute name="key" use="required" />
+    <xs:attribute name="hive" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Win32.Tasks.RegAsmTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="assemblies" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="references" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="assembly" use="optional" />
+    <xs:attribute name="regfile" use="optional" />
+    <xs:attribute name="codebase" use="optional" />
+    <xs:attribute name="registered" use="optional" />
+    <xs:attribute name="typelib" use="optional" />
+    <xs:attribute name="unregister" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Win32.Tasks.TlbExpTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="assembly" use="required" />
+    <xs:attribute name="output" use="required" />
+    <xs:attribute name="names" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Win32.Tasks.TlbImpTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="references" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="output" use="required" />
+    <xs:attribute name="namespace" use="optional" />
+    <xs:attribute name="asmversion" use="optional" />
+    <xs:attribute name="delaysign" use="optional" />
+    <xs:attribute name="primary" use="optional" />
+    <xs:attribute name="publickey" use="optional" />
+    <xs:attribute name="keyfile" use="optional" />
+    <xs:attribute name="keycontainer" use="optional" />
+    <xs:attribute name="strictref" use="optional" />
+    <xs:attribute name="sysarray" use="optional" />
+    <xs:attribute name="transform" use="optional" />
+    <xs:attribute name="typelib" use="required" />
+    <xs:attribute name="unsafe" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.AttribTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="fileset" type="nant:NAnt.Core.Types.FileSet" />
+    </xs:sequence>
+    <xs:attribute name="file" use="optional" />
+    <xs:attribute name="archive" use="optional" />
+    <xs:attribute name="hidden" use="optional" />
+    <xs:attribute name="normal" use="optional" />
+    <xs:attribute name="readonly" use="optional" />
+    <xs:attribute name="system" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.AvailableTask">
+    <xs:attribute name="resource" use="required" />
+    <xs:attribute name="type" use="required" />
+    <xs:attribute name="property" use="required" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.CallTask">
+    <xs:attribute name="target" use="required" />
+    <xs:attribute name="force" use="optional" />
+    <xs:attribute name="cascade" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.CopyTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="fileset" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="filterchain" type="nant:NAnt.Core.Filters.FilterChain" />
+    </xs:sequence>
+    <xs:attribute name="file" use="optional" />
+    <xs:attribute name="tofile" use="optional" />
+    <xs:attribute name="todir" use="optional" />
+    <xs:attribute name="overwrite" use="optional" />
+    <xs:attribute name="flatten" use="optional" />
+    <xs:attribute name="includeemptydirs" use="optional" />
+    <xs:attribute name="inputencoding" use="optional" />
+    <xs:attribute name="outputencoding" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.DeleteTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="fileset" type="nant:NAnt.Core.Types.FileSet" />
+    </xs:sequence>
+    <xs:attribute name="file" use="optional" />
+    <xs:attribute name="dir" use="optional" />
+    <xs:attribute name="includeemptydirs" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.DescriptionTask">
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.EchoTask">
+    <xs:attribute name="encoding" use="optional" />
+    <xs:attribute name="message" use="optional" />
+    <xs:attribute name="file" use="optional" />
+    <xs:attribute name="append" use="optional" />
+    <xs:attribute name="level" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.EnvironmentVariable">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="path" type="nant:NAnt.Core.Types.PathSet" />
+    </xs:sequence>
+    <xs:attribute name="name" use="required" />
+    <xs:attribute name="value" use="optional" />
+    <xs:attribute name="file" use="optional" />
+    <xs:attribute name="dir" use="optional" />
+    <xs:attribute name="path" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.EnvironmentSet">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="option" type="nant:NAnt.Core.Types.Option" />
+      <xs:element minOccurs="0" maxOccurs="1" name="variable" type="nant:NAnt.Core.Types.EnvironmentVariable" />
+    </xs:sequence>
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.ExecTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="environment" type="nant:NAnt.Core.Types.EnvironmentSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="arg" type="nant:NAnt.Core.Types.Argument" />
+    </xs:sequence>
+    <xs:attribute name="program" use="required" />
+    <xs:attribute name="commandline" use="optional" />
+    <xs:attribute name="workingdir" use="optional" />
+    <xs:attribute name="resultproperty" use="optional" />
+    <xs:attribute name="useruntimeengine" use="optional" />
+    <xs:attribute name="managed" use="optional" />
+    <xs:attribute name="basedir" use="optional" />
+    <xs:attribute name="output" use="optional" />
+    <xs:attribute name="append" use="optional" />
+    <xs:attribute name="spawn" use="optional" />
+    <xs:attribute name="pidproperty" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.FailTask">
+    <xs:attribute name="message" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.GetTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="proxy" type="nant:NAnt.Core.Types.Proxy" />
+      <xs:element minOccurs="0" maxOccurs="1" name="credentials" type="nant:NAnt.Core.Types.Credential" />
+      <xs:element minOccurs="0" maxOccurs="1" name="certificates" type="nant:NAnt.Core.Types.FileSet" />
+    </xs:sequence>
+    <xs:attribute name="src" use="required" />
+    <xs:attribute name="dest" use="required" />
+    <xs:attribute name="httpproxy" use="optional" />
+    <xs:attribute name="ignoreerrors" use="optional" />
+    <xs:attribute name="usetimestamp" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.IfTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="comparefiles" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="uptodatefiles" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="gunzip" type="nant:NAnt.Compression.Tasks.GUnzip" />
+        <xs:element name="tar" type="nant:NAnt.Compression.Tasks.TarTask" />
+        <xs:element name="untar" type="nant:NAnt.Compression.Tasks.UnTarTask" />
+        <xs:element name="unzip" type="nant:NAnt.Compression.Tasks.UnZipTask" />
+        <xs:element name="zip" type="nant:NAnt.Compression.Tasks.ZipTask" />
+        <xs:element name="testtask" type="nant:Tests.NAnt.Core.Util.XmlLoggerTest-TestTask" />
+        <xs:element name="elementTest1" type="nant:Tests.NAnt.Core.ElementTest1Task" />
+        <xs:element name="test" type="nant:Tests.NAnt.Core.TestTask" />
+        <xs:element name="asminfo" type="nant:NAnt.DotNet.Tasks.AssemblyInfoTask" />
+        <xs:element name="al" type="nant:NAnt.DotNet.Tasks.AssemblyLinkerTask" />
+        <xs:element name="csc" type="nant:NAnt.DotNet.Tasks.CscTask" />
+        <xs:element name="delay-sign" type="nant:NAnt.DotNet.Tasks.DelaySignTask" />
+        <xs:element name="ilasm" type="nant:NAnt.DotNet.Tasks.IlasmTask" />
+        <xs:element name="jsc" type="nant:NAnt.DotNet.Tasks.JscTask" />
+        <xs:element name="license" type="nant:NAnt.DotNet.Tasks.LicenseTask" />
+        <xs:element name="ndoc" type="nant:NAnt.DotNet.Tasks.NDocTask" />
+        <xs:element name="regsvcs" type="nant:NAnt.DotNet.Tasks.RegsvcsTask" />
+        <xs:element name="resgen" type="nant:NAnt.DotNet.Tasks.ResGenTask" />
+        <xs:element name="script" type="nant:NAnt.DotNet.Tasks.ScriptTask" />
+        <xs:element name="vbc" type="nant:NAnt.DotNet.Tasks.VbcTask" />
+        <xs:element name="vjc" type="nant:NAnt.DotNet.Tasks.VjcTask" />
+        <xs:element name="nunit" type="nant:NAnt.NUnit1.Tasks.NUnitTask" />
+        <xs:element name="nunit2" type="nant:NAnt.NUnit2.Tasks.NUnit2Task" />
+        <xs:element name="cvs-changelog" type="nant:NAnt.SourceControl.Tasks.ChangeLogTask" />
+        <xs:element name="cvs-checkout" type="nant:NAnt.SourceControl.Tasks.CheckoutTask" />
+        <xs:element name="cvs-pass" type="nant:NAnt.SourceControl.Tasks.CvsPass" />
+        <xs:element name="cvs" type="nant:NAnt.SourceControl.Tasks.CvsTask" />
+        <xs:element name="cvs-export" type="nant:NAnt.SourceControl.Tasks.ExportTask" />
+        <xs:element name="cvs-rtag" type="nant:NAnt.SourceControl.Tasks.RTagTask" />
+        <xs:element name="cvs-tag" type="nant:NAnt.SourceControl.Tasks.TagTask" />
+        <xs:element name="cvs-update" type="nant:NAnt.SourceControl.Tasks.UpdateTask" />
+        <xs:element name="cl" type="nant:NAnt.VisualCpp.Tasks.ClTask" />
+        <xs:element name="lib" type="nant:NAnt.VisualCpp.Tasks.LibTask" />
+        <xs:element name="link" type="nant:NAnt.VisualCpp.Tasks.LinkTask" />
+        <xs:element name="mc" type="nant:NAnt.VisualCpp.Tasks.McTask" />
+        <xs:element name="midl" type="nant:NAnt.VisualCpp.Tasks.MidlTask" />
+        <xs:element name="rc" type="nant:NAnt.VisualCpp.Tasks.RcTask" />
+        <xs:element name="solution" type="nant:NAnt.VSNet.Tasks.SolutionTask" />
+        <xs:element name="aximp" type="nant:NAnt.Win32.Tasks.AxImpTask" />
+        <xs:element name="locatesdk" type="nant:NAnt.Win32.Tasks.LocateSdkTask" />
+        <xs:element name="readregistry" type="nant:NAnt.Win32.Tasks.ReadRegistryTask" />
+        <xs:element name="regasm" type="nant:NAnt.Win32.Tasks.RegAsmTask" />
+        <xs:element name="tlbexp" type="nant:NAnt.Win32.Tasks.TlbExpTask" />
+        <xs:element name="tlbimp" type="nant:NAnt.Win32.Tasks.TlbImpTask" />
+        <xs:element name="attrib" type="nant:NAnt.Core.Tasks.AttribTask" />
+        <xs:element name="available" type="nant:NAnt.Core.Tasks.AvailableTask" />
+        <xs:element name="call" type="nant:NAnt.Core.Tasks.CallTask" />
+        <xs:element name="copy" type="nant:NAnt.Core.Tasks.CopyTask" />
+        <xs:element name="delete" type="nant:NAnt.Core.Tasks.DeleteTask" />
+        <xs:element name="description" type="nant:NAnt.Core.Tasks.DescriptionTask" />
+        <xs:element name="echo" type="nant:NAnt.Core.Tasks.EchoTask" />
+        <xs:element name="exec" type="nant:NAnt.Core.Tasks.ExecTask" />
+        <xs:element name="fail" type="nant:NAnt.Core.Tasks.FailTask" />
+        <xs:element name="get" type="nant:NAnt.Core.Tasks.GetTask" />
+        <xs:element name="if" type="nant:NAnt.Core.Tasks.IfTask" />
+        <xs:element name="ifnot" type="nant:NAnt.Core.Tasks.IfNotTask" />
+        <xs:element name="include" type="nant:NAnt.Core.Tasks.IncludeTask" />
+        <xs:element name="loadfile" type="nant:NAnt.Core.Tasks.LoadFileTask" />
+        <xs:element name="loadtasks" type="nant:NAnt.Core.Tasks.LoadTasksTask" />
+        <xs:element name="foreach" type="nant:NAnt.Core.Tasks.LoopTask" />
+        <xs:element name="mail" type="nant:NAnt.Core.Tasks.MailTask" />
+        <xs:element name="mkdir" type="nant:NAnt.Core.Tasks.MkDirTask" />
+        <xs:element name="move" type="nant:NAnt.Core.Tasks.MoveTask" />
+        <xs:element name="nantschema" type="nant:NAnt.Core.Tasks.NAntSchemaTask" />
+        <xs:element name="nant" type="nant:NAnt.Core.Tasks.NAntTask" />
+        <xs:element name="property" type="nant:NAnt.Core.Tasks.PropertyTask" />
+        <xs:element name="regex" type="nant:NAnt.Core.Tasks.RegexTask" />
+        <xs:element name="setenv" type="nant:NAnt.Core.Tasks.SetEnvTask" />
+        <xs:element name="sleep" type="nant:NAnt.Core.Tasks.SleepTask" />
+        <xs:element name="style" type="nant:NAnt.Core.Tasks.StyleTask" />
+        <xs:element name="sysinfo" type="nant:NAnt.Core.Tasks.SysInfoTask" />
+        <xs:element name="touch" type="nant:NAnt.Core.Tasks.TouchTask" />
+        <xs:element name="tstamp" type="nant:NAnt.Core.Tasks.TStampTask" />
+        <xs:element name="uptodate" type="nant:NAnt.Core.Tasks.UpToDateTask" />
+        <xs:element name="xmlpeek" type="nant:NAnt.Core.Tasks.XmlPeekTask" />
+        <xs:element name="xmlpoke" type="nant:NAnt.Core.Tasks.XmlPokeTask" />
+        <xs:element name="ildasm" type="nant:NAnt.MSNet.Tasks.IldasmTask" />
+        <xs:element name="servicecontroller" type="nant:NAnt.MSNet.Tasks.ServiceControllerTask" />
+        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="strict" />
+      </xs:choice>
+    </xs:sequence>
+    <xs:attribute name="uptodatefile" use="optional" />
+    <xs:attribute name="comparefile" use="optional" />
+    <xs:attribute name="propertytrue" use="optional" />
+    <xs:attribute name="propertyexists" use="optional" />
+    <xs:attribute name="targetexists" use="optional" />
+    <xs:attribute name="test" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.IfNotTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="comparefiles" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="uptodatefiles" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="gunzip" type="nant:NAnt.Compression.Tasks.GUnzip" />
+        <xs:element name="tar" type="nant:NAnt.Compression.Tasks.TarTask" />
+        <xs:element name="untar" type="nant:NAnt.Compression.Tasks.UnTarTask" />
+        <xs:element name="unzip" type="nant:NAnt.Compression.Tasks.UnZipTask" />
+        <xs:element name="zip" type="nant:NAnt.Compression.Tasks.ZipTask" />
+        <xs:element name="testtask" type="nant:Tests.NAnt.Core.Util.XmlLoggerTest-TestTask" />
+        <xs:element name="elementTest1" type="nant:Tests.NAnt.Core.ElementTest1Task" />
+        <xs:element name="test" type="nant:Tests.NAnt.Core.TestTask" />
+        <xs:element name="asminfo" type="nant:NAnt.DotNet.Tasks.AssemblyInfoTask" />
+        <xs:element name="al" type="nant:NAnt.DotNet.Tasks.AssemblyLinkerTask" />
+        <xs:element name="csc" type="nant:NAnt.DotNet.Tasks.CscTask" />
+        <xs:element name="delay-sign" type="nant:NAnt.DotNet.Tasks.DelaySignTask" />
+        <xs:element name="ilasm" type="nant:NAnt.DotNet.Tasks.IlasmTask" />
+        <xs:element name="jsc" type="nant:NAnt.DotNet.Tasks.JscTask" />
+        <xs:element name="license" type="nant:NAnt.DotNet.Tasks.LicenseTask" />
+        <xs:element name="ndoc" type="nant:NAnt.DotNet.Tasks.NDocTask" />
+        <xs:element name="regsvcs" type="nant:NAnt.DotNet.Tasks.RegsvcsTask" />
+        <xs:element name="resgen" type="nant:NAnt.DotNet.Tasks.ResGenTask" />
+        <xs:element name="script" type="nant:NAnt.DotNet.Tasks.ScriptTask" />
+        <xs:element name="vbc" type="nant:NAnt.DotNet.Tasks.VbcTask" />
+        <xs:element name="vjc" type="nant:NAnt.DotNet.Tasks.VjcTask" />
+        <xs:element name="nunit" type="nant:NAnt.NUnit1.Tasks.NUnitTask" />
+        <xs:element name="nunit2" type="nant:NAnt.NUnit2.Tasks.NUnit2Task" />
+        <xs:element name="cvs-changelog" type="nant:NAnt.SourceControl.Tasks.ChangeLogTask" />
+        <xs:element name="cvs-checkout" type="nant:NAnt.SourceControl.Tasks.CheckoutTask" />
+        <xs:element name="cvs-pass" type="nant:NAnt.SourceControl.Tasks.CvsPass" />
+        <xs:element name="cvs" type="nant:NAnt.SourceControl.Tasks.CvsTask" />
+        <xs:element name="cvs-export" type="nant:NAnt.SourceControl.Tasks.ExportTask" />
+        <xs:element name="cvs-rtag" type="nant:NAnt.SourceControl.Tasks.RTagTask" />
+        <xs:element name="cvs-tag" type="nant:NAnt.SourceControl.Tasks.TagTask" />
+        <xs:element name="cvs-update" type="nant:NAnt.SourceControl.Tasks.UpdateTask" />
+        <xs:element name="cl" type="nant:NAnt.VisualCpp.Tasks.ClTask" />
+        <xs:element name="lib" type="nant:NAnt.VisualCpp.Tasks.LibTask" />
+        <xs:element name="link" type="nant:NAnt.VisualCpp.Tasks.LinkTask" />
+        <xs:element name="mc" type="nant:NAnt.VisualCpp.Tasks.McTask" />
+        <xs:element name="midl" type="nant:NAnt.VisualCpp.Tasks.MidlTask" />
+        <xs:element name="rc" type="nant:NAnt.VisualCpp.Tasks.RcTask" />
+        <xs:element name="solution" type="nant:NAnt.VSNet.Tasks.SolutionTask" />
+        <xs:element name="aximp" type="nant:NAnt.Win32.Tasks.AxImpTask" />
+        <xs:element name="locatesdk" type="nant:NAnt.Win32.Tasks.LocateSdkTask" />
+        <xs:element name="readregistry" type="nant:NAnt.Win32.Tasks.ReadRegistryTask" />
+        <xs:element name="regasm" type="nant:NAnt.Win32.Tasks.RegAsmTask" />
+        <xs:element name="tlbexp" type="nant:NAnt.Win32.Tasks.TlbExpTask" />
+        <xs:element name="tlbimp" type="nant:NAnt.Win32.Tasks.TlbImpTask" />
+        <xs:element name="attrib" type="nant:NAnt.Core.Tasks.AttribTask" />
+        <xs:element name="available" type="nant:NAnt.Core.Tasks.AvailableTask" />
+        <xs:element name="call" type="nant:NAnt.Core.Tasks.CallTask" />
+        <xs:element name="copy" type="nant:NAnt.Core.Tasks.CopyTask" />
+        <xs:element name="delete" type="nant:NAnt.Core.Tasks.DeleteTask" />
+        <xs:element name="description" type="nant:NAnt.Core.Tasks.DescriptionTask" />
+        <xs:element name="echo" type="nant:NAnt.Core.Tasks.EchoTask" />
+        <xs:element name="exec" type="nant:NAnt.Core.Tasks.ExecTask" />
+        <xs:element name="fail" type="nant:NAnt.Core.Tasks.FailTask" />
+        <xs:element name="get" type="nant:NAnt.Core.Tasks.GetTask" />
+        <xs:element name="if" type="nant:NAnt.Core.Tasks.IfTask" />
+        <xs:element name="ifnot" type="nant:NAnt.Core.Tasks.IfNotTask" />
+        <xs:element name="include" type="nant:NAnt.Core.Tasks.IncludeTask" />
+        <xs:element name="loadfile" type="nant:NAnt.Core.Tasks.LoadFileTask" />
+        <xs:element name="loadtasks" type="nant:NAnt.Core.Tasks.LoadTasksTask" />
+        <xs:element name="foreach" type="nant:NAnt.Core.Tasks.LoopTask" />
+        <xs:element name="mail" type="nant:NAnt.Core.Tasks.MailTask" />
+        <xs:element name="mkdir" type="nant:NAnt.Core.Tasks.MkDirTask" />
+        <xs:element name="move" type="nant:NAnt.Core.Tasks.MoveTask" />
+        <xs:element name="nantschema" type="nant:NAnt.Core.Tasks.NAntSchemaTask" />
+        <xs:element name="nant" type="nant:NAnt.Core.Tasks.NAntTask" />
+        <xs:element name="property" type="nant:NAnt.Core.Tasks.PropertyTask" />
+        <xs:element name="regex" type="nant:NAnt.Core.Tasks.RegexTask" />
+        <xs:element name="setenv" type="nant:NAnt.Core.Tasks.SetEnvTask" />
+        <xs:element name="sleep" type="nant:NAnt.Core.Tasks.SleepTask" />
+        <xs:element name="style" type="nant:NAnt.Core.Tasks.StyleTask" />
+        <xs:element name="sysinfo" type="nant:NAnt.Core.Tasks.SysInfoTask" />
+        <xs:element name="touch" type="nant:NAnt.Core.Tasks.TouchTask" />
+        <xs:element name="tstamp" type="nant:NAnt.Core.Tasks.TStampTask" />
+        <xs:element name="uptodate" type="nant:NAnt.Core.Tasks.UpToDateTask" />
+        <xs:element name="xmlpeek" type="nant:NAnt.Core.Tasks.XmlPeekTask" />
+        <xs:element name="xmlpoke" type="nant:NAnt.Core.Tasks.XmlPokeTask" />
+        <xs:element name="ildasm" type="nant:NAnt.MSNet.Tasks.IldasmTask" />
+        <xs:element name="servicecontroller" type="nant:NAnt.MSNet.Tasks.ServiceControllerTask" />
+        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="strict" />
+      </xs:choice>
+    </xs:sequence>
+    <xs:attribute name="uptodatefile" use="optional" />
+    <xs:attribute name="comparefile" use="optional" />
+    <xs:attribute name="propertytrue" use="optional" />
+    <xs:attribute name="propertyexists" use="optional" />
+    <xs:attribute name="targetexists" use="optional" />
+    <xs:attribute name="test" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.IncludeTask">
+    <xs:attribute name="buildfile" use="required" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.LoadFileTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="filterchain" type="nant:NAnt.Core.Filters.FilterChain" />
+    </xs:sequence>
+    <xs:attribute name="file" use="required" />
+    <xs:attribute name="property" use="required" />
+    <xs:attribute name="encoding" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.LoadTasksTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="fileset" type="nant:NAnt.Core.Types.FileSet" />
+    </xs:sequence>
+    <xs:attribute name="assembly" use="optional" />
+    <xs:attribute name="path" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.InElement">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="items" type="nant:NAnt.Core.Types.FileSet" />
+    </xs:sequence>
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.LoopTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="in" type="nant:NAnt.Core.Tasks.InElement" />
+      <xs:element minOccurs="0" maxOccurs="1" name="do" type="nant:NAnt.Core.TaskContainer" />
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="gunzip" type="nant:NAnt.Compression.Tasks.GUnzip" />
+        <xs:element name="tar" type="nant:NAnt.Compression.Tasks.TarTask" />
+        <xs:element name="untar" type="nant:NAnt.Compression.Tasks.UnTarTask" />
+        <xs:element name="unzip" type="nant:NAnt.Compression.Tasks.UnZipTask" />
+        <xs:element name="zip" type="nant:NAnt.Compression.Tasks.ZipTask" />
+        <xs:element name="testtask" type="nant:Tests.NAnt.Core.Util.XmlLoggerTest-TestTask" />
+        <xs:element name="elementTest1" type="nant:Tests.NAnt.Core.ElementTest1Task" />
+        <xs:element name="test" type="nant:Tests.NAnt.Core.TestTask" />
+        <xs:element name="asminfo" type="nant:NAnt.DotNet.Tasks.AssemblyInfoTask" />
+        <xs:element name="al" type="nant:NAnt.DotNet.Tasks.AssemblyLinkerTask" />
+        <xs:element name="csc" type="nant:NAnt.DotNet.Tasks.CscTask" />
+        <xs:element name="delay-sign" type="nant:NAnt.DotNet.Tasks.DelaySignTask" />
+        <xs:element name="ilasm" type="nant:NAnt.DotNet.Tasks.IlasmTask" />
+        <xs:element name="jsc" type="nant:NAnt.DotNet.Tasks.JscTask" />
+        <xs:element name="license" type="nant:NAnt.DotNet.Tasks.LicenseTask" />
+        <xs:element name="ndoc" type="nant:NAnt.DotNet.Tasks.NDocTask" />
+        <xs:element name="regsvcs" type="nant:NAnt.DotNet.Tasks.RegsvcsTask" />
+        <xs:element name="resgen" type="nant:NAnt.DotNet.Tasks.ResGenTask" />
+        <xs:element name="script" type="nant:NAnt.DotNet.Tasks.ScriptTask" />
+        <xs:element name="vbc" type="nant:NAnt.DotNet.Tasks.VbcTask" />
+        <xs:element name="vjc" type="nant:NAnt.DotNet.Tasks.VjcTask" />
+        <xs:element name="nunit" type="nant:NAnt.NUnit1.Tasks.NUnitTask" />
+        <xs:element name="nunit2" type="nant:NAnt.NUnit2.Tasks.NUnit2Task" />
+        <xs:element name="cvs-changelog" type="nant:NAnt.SourceControl.Tasks.ChangeLogTask" />
+        <xs:element name="cvs-checkout" type="nant:NAnt.SourceControl.Tasks.CheckoutTask" />
+        <xs:element name="cvs-pass" type="nant:NAnt.SourceControl.Tasks.CvsPass" />
+        <xs:element name="cvs" type="nant:NAnt.SourceControl.Tasks.CvsTask" />
+        <xs:element name="cvs-export" type="nant:NAnt.SourceControl.Tasks.ExportTask" />
+        <xs:element name="cvs-rtag" type="nant:NAnt.SourceControl.Tasks.RTagTask" />
+        <xs:element name="cvs-tag" type="nant:NAnt.SourceControl.Tasks.TagTask" />
+        <xs:element name="cvs-update" type="nant:NAnt.SourceControl.Tasks.UpdateTask" />
+        <xs:element name="cl" type="nant:NAnt.VisualCpp.Tasks.ClTask" />
+        <xs:element name="lib" type="nant:NAnt.VisualCpp.Tasks.LibTask" />
+        <xs:element name="link" type="nant:NAnt.VisualCpp.Tasks.LinkTask" />
+        <xs:element name="mc" type="nant:NAnt.VisualCpp.Tasks.McTask" />
+        <xs:element name="midl" type="nant:NAnt.VisualCpp.Tasks.MidlTask" />
+        <xs:element name="rc" type="nant:NAnt.VisualCpp.Tasks.RcTask" />
+        <xs:element name="solution" type="nant:NAnt.VSNet.Tasks.SolutionTask" />
+        <xs:element name="aximp" type="nant:NAnt.Win32.Tasks.AxImpTask" />
+        <xs:element name="locatesdk" type="nant:NAnt.Win32.Tasks.LocateSdkTask" />
+        <xs:element name="readregistry" type="nant:NAnt.Win32.Tasks.ReadRegistryTask" />
+        <xs:element name="regasm" type="nant:NAnt.Win32.Tasks.RegAsmTask" />
+        <xs:element name="tlbexp" type="nant:NAnt.Win32.Tasks.TlbExpTask" />
+        <xs:element name="tlbimp" type="nant:NAnt.Win32.Tasks.TlbImpTask" />
+        <xs:element name="attrib" type="nant:NAnt.Core.Tasks.AttribTask" />
+        <xs:element name="available" type="nant:NAnt.Core.Tasks.AvailableTask" />
+        <xs:element name="call" type="nant:NAnt.Core.Tasks.CallTask" />
+        <xs:element name="copy" type="nant:NAnt.Core.Tasks.CopyTask" />
+        <xs:element name="delete" type="nant:NAnt.Core.Tasks.DeleteTask" />
+        <xs:element name="description" type="nant:NAnt.Core.Tasks.DescriptionTask" />
+        <xs:element name="echo" type="nant:NAnt.Core.Tasks.EchoTask" />
+        <xs:element name="exec" type="nant:NAnt.Core.Tasks.ExecTask" />
+        <xs:element name="fail" type="nant:NAnt.Core.Tasks.FailTask" />
+        <xs:element name="get" type="nant:NAnt.Core.Tasks.GetTask" />
+        <xs:element name="if" type="nant:NAnt.Core.Tasks.IfTask" />
+        <xs:element name="ifnot" type="nant:NAnt.Core.Tasks.IfNotTask" />
+        <xs:element name="include" type="nant:NAnt.Core.Tasks.IncludeTask" />
+        <xs:element name="loadfile" type="nant:NAnt.Core.Tasks.LoadFileTask" />
+        <xs:element name="loadtasks" type="nant:NAnt.Core.Tasks.LoadTasksTask" />
+        <xs:element name="foreach" type="nant:NAnt.Core.Tasks.LoopTask" />
+        <xs:element name="mail" type="nant:NAnt.Core.Tasks.MailTask" />
+        <xs:element name="mkdir" type="nant:NAnt.Core.Tasks.MkDirTask" />
+        <xs:element name="move" type="nant:NAnt.Core.Tasks.MoveTask" />
+        <xs:element name="nantschema" type="nant:NAnt.Core.Tasks.NAntSchemaTask" />
+        <xs:element name="nant" type="nant:NAnt.Core.Tasks.NAntTask" />
+        <xs:element name="property" type="nant:NAnt.Core.Tasks.PropertyTask" />
+        <xs:element name="regex" type="nant:NAnt.Core.Tasks.RegexTask" />
+        <xs:element name="setenv" type="nant:NAnt.Core.Tasks.SetEnvTask" />
+        <xs:element name="sleep" type="nant:NAnt.Core.Tasks.SleepTask" />
+        <xs:element name="style" type="nant:NAnt.Core.Tasks.StyleTask" />
+        <xs:element name="sysinfo" type="nant:NAnt.Core.Tasks.SysInfoTask" />
+        <xs:element name="touch" type="nant:NAnt.Core.Tasks.TouchTask" />
+        <xs:element name="tstamp" type="nant:NAnt.Core.Tasks.TStampTask" />
+        <xs:element name="uptodate" type="nant:NAnt.Core.Tasks.UpToDateTask" />
+        <xs:element name="xmlpeek" type="nant:NAnt.Core.Tasks.XmlPeekTask" />
+        <xs:element name="xmlpoke" type="nant:NAnt.Core.Tasks.XmlPokeTask" />
+        <xs:element name="ildasm" type="nant:NAnt.MSNet.Tasks.IldasmTask" />
+        <xs:element name="servicecontroller" type="nant:NAnt.MSNet.Tasks.ServiceControllerTask" />
+        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="strict" />
+      </xs:choice>
+    </xs:sequence>
+    <xs:attribute name="property" use="required" />
+    <xs:attribute name="item" use="required" />
+    <xs:attribute name="trim" use="optional" />
+    <xs:attribute name="in" use="optional" />
+    <xs:attribute name="delim" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.MailTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="files" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="attachments" type="nant:NAnt.Core.Types.FileSet" />
+    </xs:sequence>
+    <xs:attribute name="from" use="required" />
+    <xs:attribute name="tolist" use="optional" />
+    <xs:attribute name="cclist" use="optional" />
+    <xs:attribute name="bcclist" use="optional" />
+    <xs:attribute name="mailhost" use="optional" />
+    <xs:attribute name="message" use="optional" />
+    <xs:attribute name="subject" use="optional" />
+    <xs:attribute name="format" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.MkDirTask">
+    <xs:attribute name="dir" use="required" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.MoveTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="fileset" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="filterchain" type="nant:NAnt.Core.Filters.FilterChain" />
+    </xs:sequence>
+    <xs:attribute name="file" use="optional" />
+    <xs:attribute name="tofile" use="optional" />
+    <xs:attribute name="todir" use="optional" />
+    <xs:attribute name="flatten" use="optional" />
+    <xs:attribute name="overwrite" use="optional" />
+    <xs:attribute name="includeemptydirs" use="optional" />
+    <xs:attribute name="inputencoding" use="optional" />
+    <xs:attribute name="outputencoding" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.NAntSchemaTask">
+    <xs:attribute name="output" use="required" />
+    <xs:attribute name="target-ns" use="optional" />
+    <xs:attribute name="class" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.PropertyTask">
+    <xs:attribute name="name" use="required" />
+    <xs:attribute name="value" use="required" />
+    <xs:attribute name="readonly" use="optional" />
+    <xs:attribute name="dynamic" use="optional" />
+    <xs:attribute name="overwrite" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.NAntTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="buildfiles" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="properties">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="property" type="nant:NAnt.Core.Tasks.PropertyTask" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:sequence>
+    <xs:attribute name="buildfile" use="optional" />
+    <xs:attribute name="target" use="optional" />
+    <xs:attribute name="inheritall" use="optional" />
+    <xs:attribute name="inheritrefs" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.RegexTask">
+    <xs:attribute name="pattern" use="required" />
+    <xs:attribute name="options" use="optional" />
+    <xs:attribute name="input" use="required" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.SetEnvTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="variable" type="nant:NAnt.Core.Types.EnvironmentVariable" />
+    </xs:sequence>
+    <xs:attribute name="name" use="optional" />
+    <xs:attribute name="value" use="optional" />
+    <xs:attribute name="file" use="optional" />
+    <xs:attribute name="dir" use="optional" />
+    <xs:attribute name="path" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.SleepTask">
+    <xs:attribute name="hours" use="optional" />
+    <xs:attribute name="minutes" use="optional" />
+    <xs:attribute name="seconds" use="optional" />
+    <xs:attribute name="milliseconds" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.XsltParameter">
+    <xs:attribute name="name" use="required" />
+    <xs:attribute name="namespaceuri" use="optional" />
+    <xs:attribute name="value" use="required" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.XsltExtensionObject">
+    <xs:attribute name="namespaceuri" use="optional" />
+    <xs:attribute name="typename" use="required" />
+    <xs:attribute name="assembly" use="required" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.StyleTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="infiles" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="parameters">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="parameter" type="nant:NAnt.Core.Types.XsltParameter" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="extensionobjects">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="extensionobject" type="nant:NAnt.Core.Types.XsltExtensionObject" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" maxOccurs="1" name="proxy" type="nant:NAnt.Core.Types.Proxy" />
+    </xs:sequence>
+    <xs:attribute name="destdir" use="optional" />
+    <xs:attribute name="extension" use="optional" />
+    <xs:attribute name="style" use="required" />
+    <xs:attribute name="in" use="optional" />
+    <xs:attribute name="out" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.SysInfoTask">
+    <xs:attribute name="prefix" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.TouchTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="fileset" type="nant:NAnt.Core.Types.FileSet" />
+    </xs:sequence>
+    <xs:attribute name="file" use="optional" />
+    <xs:attribute name="millis" use="optional" />
+    <xs:attribute name="datetime" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.Formatter">
+    <xs:attribute name="property" use="required" />
+    <xs:attribute name="pattern" use="required" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.TStampTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="formatter" type="nant:NAnt.Core.Types.Formatter" />
+    </xs:sequence>
+    <xs:attribute name="property" use="optional" />
+    <xs:attribute name="pattern" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.UpToDateTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="sourcefiles" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element minOccurs="0" maxOccurs="1" name="targetfiles" type="nant:NAnt.Core.Types.FileSet" />
+    </xs:sequence>
+    <xs:attribute name="property" use="required" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Types.XmlNamespace">
+    <xs:attribute name="prefix" use="required" />
+    <xs:attribute name="uri" use="required" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.XmlPeekTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="namespaces">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="namespace" type="nant:NAnt.Core.Types.XmlNamespace" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:sequence>
+    <xs:attribute name="file" use="required" />
+    <xs:attribute name="nodeindex" use="optional" />
+    <xs:attribute name="property" use="required" />
+    <xs:attribute name="xpath" use="required" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.Core.Tasks.XmlPokeTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="namespaces">
+        <xs:complexType>
+          <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="namespace" type="nant:NAnt.Core.Types.XmlNamespace" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:sequence>
+    <xs:attribute name="file" use="required" />
+    <xs:attribute name="xpath" use="required" />
+    <xs:attribute name="value" use="required" />
+    <xs:attribute name="preserveWhitespace" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.MSNet.Tasks.IldasmTask">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element minOccurs="0" maxOccurs="1" name="assemblies" type="nant:NAnt.Core.Types.FileSet" />
+    </xs:sequence>
+    <xs:attribute name="all" use="optional" />
+    <xs:attribute name="bytes" use="optional" />
+    <xs:attribute name="rebuild" use="optional" />
+    <xs:attribute name="header" use="optional" />
+    <xs:attribute name="input" use="optional" />
+    <xs:attribute name="linenumbers" use="optional" />
+    <xs:attribute name="noil" use="optional" />
+    <xs:attribute name="publiconly" use="optional" />
+    <xs:attribute name="quoteallnames" use="optional" />
+    <xs:attribute name="rawexceptionhandling" use="optional" />
+    <xs:attribute name="source" use="optional" />
+    <xs:attribute name="tokens" use="optional" />
+    <xs:attribute name="unicode" use="optional" />
+    <xs:attribute name="utf8" use="optional" />
+    <xs:attribute name="item" use="optional" />
+    <xs:attribute name="visibility" use="optional" />
+    <xs:attribute name="output" use="optional" />
+    <xs:attribute name="todir" use="optional" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="NAnt.MSNet.Tasks.ServiceControllerTask">
+    <xs:attribute name="service" use="required" />
+    <xs:attribute name="machine" use="optional" />
+    <xs:attribute name="action" use="required" />
+    <xs:attribute name="timeout" use="optional" />
+    <xs:attribute name="failonerror" use="optional" />
+    <xs:attribute name="verbose" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+    <xs:anyAttribute namespace="##other" processContents="skip" />
+  </xs:complexType>
+  <xs:complexType name="Target">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element name="gunzip" type="nant:NAnt.Compression.Tasks.GUnzip" />
+      <xs:element name="tar" type="nant:NAnt.Compression.Tasks.TarTask" />
+      <xs:element name="untar" type="nant:NAnt.Compression.Tasks.UnTarTask" />
+      <xs:element name="unzip" type="nant:NAnt.Compression.Tasks.UnZipTask" />
+      <xs:element name="zip" type="nant:NAnt.Compression.Tasks.ZipTask" />
+      <xs:element name="testtask" type="nant:Tests.NAnt.Core.Util.XmlLoggerTest-TestTask" />
+      <xs:element name="elementTest1" type="nant:Tests.NAnt.Core.ElementTest1Task" />
+      <xs:element name="test" type="nant:Tests.NAnt.Core.TestTask" />
+      <xs:element name="asminfo" type="nant:NAnt.DotNet.Tasks.AssemblyInfoTask" />
+      <xs:element name="al" type="nant:NAnt.DotNet.Tasks.AssemblyLinkerTask" />
+      <xs:element name="csc" type="nant:NAnt.DotNet.Tasks.CscTask" />
+      <xs:element name="delay-sign" type="nant:NAnt.DotNet.Tasks.DelaySignTask" />
+      <xs:element name="ilasm" type="nant:NAnt.DotNet.Tasks.IlasmTask" />
+      <xs:element name="jsc" type="nant:NAnt.DotNet.Tasks.JscTask" />
+      <xs:element name="license" type="nant:NAnt.DotNet.Tasks.LicenseTask" />
+      <xs:element name="ndoc" type="nant:NAnt.DotNet.Tasks.NDocTask" />
+      <xs:element name="regsvcs" type="nant:NAnt.DotNet.Tasks.RegsvcsTask" />
+      <xs:element name="resgen" type="nant:NAnt.DotNet.Tasks.ResGenTask" />
+      <xs:element name="script" type="nant:NAnt.DotNet.Tasks.ScriptTask" />
+      <xs:element name="vbc" type="nant:NAnt.DotNet.Tasks.VbcTask" />
+      <xs:element name="vjc" type="nant:NAnt.DotNet.Tasks.VjcTask" />
+      <xs:element name="nunit" type="nant:NAnt.NUnit1.Tasks.NUnitTask" />
+      <xs:element name="nunit2" type="nant:NAnt.NUnit2.Tasks.NUnit2Task" />
+      <xs:element name="cvs-changelog" type="nant:NAnt.SourceControl.Tasks.ChangeLogTask" />
+      <xs:element name="cvs-checkout" type="nant:NAnt.SourceControl.Tasks.CheckoutTask" />
+      <xs:element name="cvs-pass" type="nant:NAnt.SourceControl.Tasks.CvsPass" />
+      <xs:element name="cvs" type="nant:NAnt.SourceControl.Tasks.CvsTask" />
+      <xs:element name="cvs-export" type="nant:NAnt.SourceControl.Tasks.ExportTask" />
+      <xs:element name="cvs-rtag" type="nant:NAnt.SourceControl.Tasks.RTagTask" />
+      <xs:element name="cvs-tag" type="nant:NAnt.SourceControl.Tasks.TagTask" />
+      <xs:element name="cvs-update" type="nant:NAnt.SourceControl.Tasks.UpdateTask" />
+      <xs:element name="cl" type="nant:NAnt.VisualCpp.Tasks.ClTask" />
+      <xs:element name="lib" type="nant:NAnt.VisualCpp.Tasks.LibTask" />
+      <xs:element name="link" type="nant:NAnt.VisualCpp.Tasks.LinkTask" />
+      <xs:element name="mc" type="nant:NAnt.VisualCpp.Tasks.McTask" />
+      <xs:element name="midl" type="nant:NAnt.VisualCpp.Tasks.MidlTask" />
+      <xs:element name="rc" type="nant:NAnt.VisualCpp.Tasks.RcTask" />
+      <xs:element name="solution" type="nant:NAnt.VSNet.Tasks.SolutionTask" />
+      <xs:element name="aximp" type="nant:NAnt.Win32.Tasks.AxImpTask" />
+      <xs:element name="locatesdk" type="nant:NAnt.Win32.Tasks.LocateSdkTask" />
+      <xs:element name="readregistry" type="nant:NAnt.Win32.Tasks.ReadRegistryTask" />
+      <xs:element name="regasm" type="nant:NAnt.Win32.Tasks.RegAsmTask" />
+      <xs:element name="tlbexp" type="nant:NAnt.Win32.Tasks.TlbExpTask" />
+      <xs:element name="tlbimp" type="nant:NAnt.Win32.Tasks.TlbImpTask" />
+      <xs:element name="attrib" type="nant:NAnt.Core.Tasks.AttribTask" />
+      <xs:element name="available" type="nant:NAnt.Core.Tasks.AvailableTask" />
+      <xs:element name="call" type="nant:NAnt.Core.Tasks.CallTask" />
+      <xs:element name="copy" type="nant:NAnt.Core.Tasks.CopyTask" />
+      <xs:element name="delete" type="nant:NAnt.Core.Tasks.DeleteTask" />
+      <xs:element name="description" type="nant:NAnt.Core.Tasks.DescriptionTask" />
+      <xs:element name="echo" type="nant:NAnt.Core.Tasks.EchoTask" />
+      <xs:element name="exec" type="nant:NAnt.Core.Tasks.ExecTask" />
+      <xs:element name="fail" type="nant:NAnt.Core.Tasks.FailTask" />
+      <xs:element name="get" type="nant:NAnt.Core.Tasks.GetTask" />
+      <xs:element name="if" type="nant:NAnt.Core.Tasks.IfTask" />
+      <xs:element name="ifnot" type="nant:NAnt.Core.Tasks.IfNotTask" />
+      <xs:element name="include" type="nant:NAnt.Core.Tasks.IncludeTask" />
+      <xs:element name="loadfile" type="nant:NAnt.Core.Tasks.LoadFileTask" />
+      <xs:element name="loadtasks" type="nant:NAnt.Core.Tasks.LoadTasksTask" />
+      <xs:element name="foreach" type="nant:NAnt.Core.Tasks.LoopTask" />
+      <xs:element name="mail" type="nant:NAnt.Core.Tasks.MailTask" />
+      <xs:element name="mkdir" type="nant:NAnt.Core.Tasks.MkDirTask" />
+      <xs:element name="move" type="nant:NAnt.Core.Tasks.MoveTask" />
+      <xs:element name="nantschema" type="nant:NAnt.Core.Tasks.NAntSchemaTask" />
+      <xs:element name="nant" type="nant:NAnt.Core.Tasks.NAntTask" />
+      <xs:element name="property" type="nant:NAnt.Core.Tasks.PropertyTask" />
+      <xs:element name="regex" type="nant:NAnt.Core.Tasks.RegexTask" />
+      <xs:element name="setenv" type="nant:NAnt.Core.Tasks.SetEnvTask" />
+      <xs:element name="sleep" type="nant:NAnt.Core.Tasks.SleepTask" />
+      <xs:element name="style" type="nant:NAnt.Core.Tasks.StyleTask" />
+      <xs:element name="sysinfo" type="nant:NAnt.Core.Tasks.SysInfoTask" />
+      <xs:element name="touch" type="nant:NAnt.Core.Tasks.TouchTask" />
+      <xs:element name="tstamp" type="nant:NAnt.Core.Tasks.TStampTask" />
+      <xs:element name="uptodate" type="nant:NAnt.Core.Tasks.UpToDateTask" />
+      <xs:element name="xmlpeek" type="nant:NAnt.Core.Tasks.XmlPeekTask" />
+      <xs:element name="xmlpoke" type="nant:NAnt.Core.Tasks.XmlPokeTask" />
+      <xs:element name="ildasm" type="nant:NAnt.MSNet.Tasks.IldasmTask" />
+      <xs:element name="servicecontroller" type="nant:NAnt.MSNet.Tasks.ServiceControllerTask" />
+      <xs:element name="tarfileset" type="nant:NAnt.Compression.Types.TarFileSet" />
+      <xs:element name="zipfileset" type="nant:NAnt.Compression.Types.ZipFileSet" />
+      <xs:element name="assemblyfileset" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+      <xs:element name="moduleset" type="nant:NAnt.DotNet.Types.ModuleSet" />
+      <xs:element name="namespaceimports" type="nant:NAnt.DotNet.Types.NamespaceImportCollection" />
+      <xs:element name="resourcefileset" type="nant:NAnt.DotNet.Types.ResourceFileSet" />
+      <xs:element name="warnaserror" type="nant:NAnt.DotNet.Types.WarningAsError" />
+      <xs:element name="categories" type="nant:NAnt.NUnit2.Types.Categories" />
+      <xs:element name="cvsfileset" type="nant:NAnt.SourceControl.Types.CvsFileSet" />
+      <xs:element name="filterchain" type="nant:NAnt.Core.Filters.FilterChain" />
+      <xs:element name="credential" type="nant:NAnt.Core.Types.Credential" />
+      <xs:element name="fileset" type="nant:NAnt.Core.Types.FileSet" />
+      <xs:element name="dirset" type="nant:NAnt.Core.Types.DirSet" />
+      <xs:element name="path" type="nant:NAnt.Core.Types.PathSet" />
+      <xs:element name="patternset" type="nant:NAnt.Core.Types.PatternSet" />
+      <xs:element name="proxy" type="nant:NAnt.Core.Types.Proxy" />
+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="strict" />
+    </xs:choice>
+    <xs:attribute name="name" use="required" />
+    <xs:attribute name="depends" use="optional" />
+    <xs:attribute name="description" use="optional" />
+    <xs:attribute name="if" use="optional" />
+    <xs:attribute name="unless" use="optional" />
+  </xs:complexType>
+  <xs:element name="project">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="gunzip" type="nant:NAnt.Compression.Tasks.GUnzip" />
+        <xs:element name="tar" type="nant:NAnt.Compression.Tasks.TarTask" />
+        <xs:element name="untar" type="nant:NAnt.Compression.Tasks.UnTarTask" />
+        <xs:element name="unzip" type="nant:NAnt.Compression.Tasks.UnZipTask" />
+        <xs:element name="zip" type="nant:NAnt.Compression.Tasks.ZipTask" />
+        <xs:element name="testtask" type="nant:Tests.NAnt.Core.Util.XmlLoggerTest-TestTask" />
+        <xs:element name="elementTest1" type="nant:Tests.NAnt.Core.ElementTest1Task" />
+        <xs:element name="test" type="nant:Tests.NAnt.Core.TestTask" />
+        <xs:element name="asminfo" type="nant:NAnt.DotNet.Tasks.AssemblyInfoTask" />
+        <xs:element name="al" type="nant:NAnt.DotNet.Tasks.AssemblyLinkerTask" />
+        <xs:element name="csc" type="nant:NAnt.DotNet.Tasks.CscTask" />
+        <xs:element name="delay-sign" type="nant:NAnt.DotNet.Tasks.DelaySignTask" />
+        <xs:element name="ilasm" type="nant:NAnt.DotNet.Tasks.IlasmTask" />
+        <xs:element name="jsc" type="nant:NAnt.DotNet.Tasks.JscTask" />
+        <xs:element name="license" type="nant:NAnt.DotNet.Tasks.LicenseTask" />
+        <xs:element name="ndoc" type="nant:NAnt.DotNet.Tasks.NDocTask" />
+        <xs:element name="regsvcs" type="nant:NAnt.DotNet.Tasks.RegsvcsTask" />
+        <xs:element name="resgen" type="nant:NAnt.DotNet.Tasks.ResGenTask" />
+        <xs:element name="script" type="nant:NAnt.DotNet.Tasks.ScriptTask" />
+        <xs:element name="vbc" type="nant:NAnt.DotNet.Tasks.VbcTask" />
+        <xs:element name="vjc" type="nant:NAnt.DotNet.Tasks.VjcTask" />
+        <xs:element name="nunit" type="nant:NAnt.NUnit1.Tasks.NUnitTask" />
+        <xs:element name="nunit2" type="nant:NAnt.NUnit2.Tasks.NUnit2Task" />
+        <xs:element name="cvs-changelog" type="nant:NAnt.SourceControl.Tasks.ChangeLogTask" />
+        <xs:element name="cvs-checkout" type="nant:NAnt.SourceControl.Tasks.CheckoutTask" />
+        <xs:element name="cvs-pass" type="nant:NAnt.SourceControl.Tasks.CvsPass" />
+        <xs:element name="cvs" type="nant:NAnt.SourceControl.Tasks.CvsTask" />
+        <xs:element name="cvs-export" type="nant:NAnt.SourceControl.Tasks.ExportTask" />
+        <xs:element name="cvs-rtag" type="nant:NAnt.SourceControl.Tasks.RTagTask" />
+        <xs:element name="cvs-tag" type="nant:NAnt.SourceControl.Tasks.TagTask" />
+        <xs:element name="cvs-update" type="nant:NAnt.SourceControl.Tasks.UpdateTask" />
+        <xs:element name="cl" type="nant:NAnt.VisualCpp.Tasks.ClTask" />
+        <xs:element name="lib" type="nant:NAnt.VisualCpp.Tasks.LibTask" />
+        <xs:element name="link" type="nant:NAnt.VisualCpp.Tasks.LinkTask" />
+        <xs:element name="mc" type="nant:NAnt.VisualCpp.Tasks.McTask" />
+        <xs:element name="midl" type="nant:NAnt.VisualCpp.Tasks.MidlTask" />
+        <xs:element name="rc" type="nant:NAnt.VisualCpp.Tasks.RcTask" />
+        <xs:element name="solution" type="nant:NAnt.VSNet.Tasks.SolutionTask" />
+        <xs:element name="aximp" type="nant:NAnt.Win32.Tasks.AxImpTask" />
+        <xs:element name="locatesdk" type="nant:NAnt.Win32.Tasks.LocateSdkTask" />
+        <xs:element name="readregistry" type="nant:NAnt.Win32.Tasks.ReadRegistryTask" />
+        <xs:element name="regasm" type="nant:NAnt.Win32.Tasks.RegAsmTask" />
+        <xs:element name="tlbexp" type="nant:NAnt.Win32.Tasks.TlbExpTask" />
+        <xs:element name="tlbimp" type="nant:NAnt.Win32.Tasks.TlbImpTask" />
+        <xs:element name="attrib" type="nant:NAnt.Core.Tasks.AttribTask" />
+        <xs:element name="available" type="nant:NAnt.Core.Tasks.AvailableTask" />
+        <xs:element name="call" type="nant:NAnt.Core.Tasks.CallTask" />
+        <xs:element name="copy" type="nant:NAnt.Core.Tasks.CopyTask" />
+        <xs:element name="delete" type="nant:NAnt.Core.Tasks.DeleteTask" />
+        <xs:element name="description" type="nant:NAnt.Core.Tasks.DescriptionTask" />
+        <xs:element name="echo" type="nant:NAnt.Core.Tasks.EchoTask" />
+        <xs:element name="exec" type="nant:NAnt.Core.Tasks.ExecTask" />
+        <xs:element name="fail" type="nant:NAnt.Core.Tasks.FailTask" />
+        <xs:element name="get" type="nant:NAnt.Core.Tasks.GetTask" />
+        <xs:element name="if" type="nant:NAnt.Core.Tasks.IfTask" />
+        <xs:element name="ifnot" type="nant:NAnt.Core.Tasks.IfNotTask" />
+        <xs:element name="include" type="nant:NAnt.Core.Tasks.IncludeTask" />
+        <xs:element name="loadfile" type="nant:NAnt.Core.Tasks.LoadFileTask" />
+        <xs:element name="loadtasks" type="nant:NAnt.Core.Tasks.LoadTasksTask" />
+        <xs:element name="foreach" type="nant:NAnt.Core.Tasks.LoopTask" />
+        <xs:element name="mail" type="nant:NAnt.Core.Tasks.MailTask" />
+        <xs:element name="mkdir" type="nant:NAnt.Core.Tasks.MkDirTask" />
+        <xs:element name="move" type="nant:NAnt.Core.Tasks.MoveTask" />
+        <xs:element name="nantschema" type="nant:NAnt.Core.Tasks.NAntSchemaTask" />
+        <xs:element name="nant" type="nant:NAnt.Core.Tasks.NAntTask" />
+        <xs:element name="property" type="nant:NAnt.Core.Tasks.PropertyTask" />
+        <xs:element name="regex" type="nant:NAnt.Core.Tasks.RegexTask" />
+        <xs:element name="setenv" type="nant:NAnt.Core.Tasks.SetEnvTask" />
+        <xs:element name="sleep" type="nant:NAnt.Core.Tasks.SleepTask" />
+        <xs:element name="style" type="nant:NAnt.Core.Tasks.StyleTask" />
+        <xs:element name="sysinfo" type="nant:NAnt.Core.Tasks.SysInfoTask" />
+        <xs:element name="touch" type="nant:NAnt.Core.Tasks.TouchTask" />
+        <xs:element name="tstamp" type="nant:NAnt.Core.Tasks.TStampTask" />
+        <xs:element name="uptodate" type="nant:NAnt.Core.Tasks.UpToDateTask" />
+        <xs:element name="xmlpeek" type="nant:NAnt.Core.Tasks.XmlPeekTask" />
+        <xs:element name="xmlpoke" type="nant:NAnt.Core.Tasks.XmlPokeTask" />
+        <xs:element name="ildasm" type="nant:NAnt.MSNet.Tasks.IldasmTask" />
+        <xs:element name="servicecontroller" type="nant:NAnt.MSNet.Tasks.ServiceControllerTask" />
+        <xs:element name="tarfileset" type="nant:NAnt.Compression.Types.TarFileSet" />
+        <xs:element name="zipfileset" type="nant:NAnt.Compression.Types.ZipFileSet" />
+        <xs:element name="assemblyfileset" type="nant:NAnt.DotNet.Types.AssemblyFileSet" />
+        <xs:element name="moduleset" type="nant:NAnt.DotNet.Types.ModuleSet" />
+        <xs:element name="namespaceimports" type="nant:NAnt.DotNet.Types.NamespaceImportCollection" />
+        <xs:element name="resourcefileset" type="nant:NAnt.DotNet.Types.ResourceFileSet" />
+        <xs:element name="warnaserror" type="nant:NAnt.DotNet.Types.WarningAsError" />
+        <xs:element name="categories" type="nant:NAnt.NUnit2.Types.Categories" />
+        <xs:element name="cvsfileset" type="nant:NAnt.SourceControl.Types.CvsFileSet" />
+        <xs:element name="filterchain" type="nant:NAnt.Core.Filters.FilterChain" />
+        <xs:element name="credential" type="nant:NAnt.Core.Types.Credential" />
+        <xs:element name="fileset" type="nant:NAnt.Core.Types.FileSet" />
+        <xs:element name="dirset" type="nant:NAnt.Core.Types.DirSet" />
+        <xs:element name="path" type="nant:NAnt.Core.Types.PathSet" />
+        <xs:element name="patternset" type="nant:NAnt.Core.Types.PatternSet" />
+        <xs:element name="proxy" type="nant:NAnt.Core.Types.Proxy" />
+        <xs:element name="target" type="nant:Target" />
+        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="strict" />
+      </xs:choice>
+      <xs:attribute name="name" use="required" />
+      <xs:attribute name="default" use="optional" />
+      <xs:attribute name="basedir" use="optional" />
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
\ No newline at end of file
Added +1 -0
diff --git a/minisqlquery-master/src/Tools/sqlite.txt b/minisqlquery-master/src/Tools/sqlite.txt
new file mode 100644
index 0000000..f528404
--- /dev/null
+++ b/minisqlquery-master/src/Tools/sqlite.txt
@@ -0,0 +1 @@
+http://sqlite.phxsoftware.com/