﻿<?xml version="1.0" encoding="utf-16"?>
<JiwaDocument xmlns:jiwa="http://www.jiwa.com.au/xml/schemas" Type="JiwaFinancials.Jiwa.JiwaApplication.Plugin.Plugin">
  <RecID>6504c432-bb49-4cc4-b4a7-34db562ff48f</RecID>
  <Name>Export Plugin to Visual Studio</Name>
  <Description>Enhancement to plugin maintenance: Creates Visual Studio project for the plugin, comprised of a source code file and a project file containing all the references.</Description>
  <IsEnabled>true</IsEnabled>
  <IsIsolatedToOwnAppDomain>false</IsIsolatedToOwnAppDomain>
  <ExecutionOrder>1</ExecutionOrder>
  <Author>Advanced ERP</Author>
  <Version>21.05.23.2140</Version>
  <Code>Imports System
Imports System.Collections.Generic
Imports System.Diagnostics
Imports System.IO
Imports System.Linq
Imports System.Runtime.CompilerServices
Imports System.Text
Imports System.Windows.Forms
Imports System.Xml.Linq

Imports Infragistics.Win.UltraWinToolbars

Imports JiwaFinancials.Jiwa
Imports JiwaFinancials.Jiwa.JiwaApplication.Plugin

Imports &lt;xmlns="http://schemas.microsoft.com/developer/msbuild/2003"&gt;

Namespace PluginMaintenance

    Public Class FormPlugin
        Inherits System.MarshalByRefObject
        Implements JiwaApplication.IJiwaFormPlugin

        Const STR_ID_EXPORTTOVS As String = "ID_ECL_EXPORTTOVS"

        Public Overrides Function InitializeLifetimeService() As Object
            ' returning null here will prevent the lease manager
            ' from deleting the Object.
            Return Nothing
        End Function

        Public Sub SetupBeforeHandlers(ByVal JiwaForm As JiwaApplication.IJiwaForm, ByVal Plugin As Plugin) Implements JiwaApplication.IJiwaFormPlugin.SetupBeforeHandlers
        End Sub

        Private _plugin As Plugin
        Private _pluginForm As JiwaPluginMaintenanceUI.frmMain
        Private _toolBarManager As UltraToolbarsManager
        Private _actionGroup As RibbonGroup
        Private _xmlGroup As RibbonGroup
        Private _vsGroup As RibbonGroup

        Public Sub Setup(ByVal JiwaForm As JiwaApplication.IJiwaForm, ByVal Plugin As Plugin) Implements JiwaApplication.IJiwaFormPlugin.Setup
            _plugin = Plugin
            _pluginForm = DirectCast(JiwaForm, JiwaPluginMaintenanceUI.frmMain)
            _toolBarManager = _pluginForm.UltraToolbarsManager1
            _actionGroup = GetToolbarGroup(_toolBarManager, "Main", "Actions", "Actions")
            _vsGroup = GetToolbarGroup(_toolBarManager, "Utilities", "VisualStudio", "Visual Studio")

            Dim vsButton As ButtonTool = AddNewToolbarButton(_plugin.Manager,
                _toolBarManager,
                _vsGroup,
                STR_ID_EXPORTTOVS,
                "Export to Visual Studio Project", RibbonToolSize.Large,
                "picExternalDLL32x32.Image", "picExternalDLL32x32.Image")
            vsButton.SharedProps.ToolTipText = "Export current plugin to Visual Studio Project"

            AddHandler _toolBarManager.ToolClick, AddressOf UltraToolbarsManager1_ToolClick
        End Sub

        Private Sub UltraToolbarsManager1_ToolClick(ByVal sender As Object, ByVal e As ToolClickEventArgs)

            Select Case e.Tool.Key
                Case STR_ID_EXPORTTOVS
                    ExportPluginToVisualStudio()
            End Select

        End Sub

        Private Function GetSystemSettingContents(name As String) As String
            For Each ss As SystemSetting In _plugin.SystemSettingCollection
                If ss.IDKey = name Then
                    Return ss.Contents
                End If
            Next
            Return Nothing
        End Function

        Private Function SetSystemSettingContents(name As String, value As String, Optional displayValue As String = Nothing) As String
            For Each ss As SystemSetting In _plugin.SystemSettingCollection
                If ss.IDKey = name Then
                    ss.Contents = value
                    If displayValue IsNot Nothing Then
                        ss.DisplayContents = displayValue
                    End If
                    _plugin.SystemSettingCollection.Save()
                    Return ss.Contents
                End If
            Next
            Return Nothing
        End Function

        Private Structure ExportTarget
            Public RecId As String
            Public ExecutionOrder As Integer
            Public Name As String

            Public Sub New(recId As String, executionOrder As Integer, name As String)
                Me.RecId = recId
                Me.ExecutionOrder = executionOrder
                Me.Name = name
            End Sub
        End Structure

        Const TwoMeg As Integer = &amp;H20000

        Private Sub ExportPluginToVisualStudio()
            If Debugger.IsAttached Then Debugger.Break()

            Me._plugin.SystemSettingCollection.Read()

            Dim oldCursor As Cursor = _pluginForm.Cursor
            Try
                _pluginForm.Cursor = Cursors.WaitCursor

                Dim plugin As Plugin = _pluginForm.Plugin

                If plugin.ChangeFlag Then
                    MessageBox.Show("Please save plugin before exporting.")
                    Return
                End If

                Dim pluginFileName As String = CleanFileName(plugin.Name)
                Dim defaultFolderPath As String = Me.GetSystemSettingContents("VS Export Folder")
                Dim defaultFolder As New DirectoryInfo(defaultFolderPath)
                Dim dialogFolder As DirectoryInfo = defaultFolder
                Dim tail As New Stack(Of String)
                Dim tailFolder As String = String.Empty

                Do While Not dialogFolder.Exists() AndAlso dialogFolder.Parent IsNot Nothing
                    tail.Push(dialogFolder.Name)
                    dialogFolder = dialogFolder.Parent
                Loop

                Do While tail.Count &gt; 0
                    tailFolder = Path.Combine(tailFolder, tail.Pop)
                Loop

                Dim fb As New FolderBrowserDialog() With {
                    .Description = "Select Visual Studio Solution Folder (parent for plugin project)",
                    .SelectedPath = dialogFolder.FullName,
                    .RootFolder = Environment.SpecialFolder.MyComputer,
                    .ShowNewFolderButton = True
                }

                If fb.ShowDialog() &lt;&gt; DialogResult.OK Then
                    Return
                End If

                Dim solutionFolder As DirectoryInfo = New DirectoryInfo(fb.SelectedPath)
                If Not solutionFolder.Exists Then
                    solutionFolder.Create()
                End If

                Dim projectFolder As DirectoryInfo = New DirectoryInfo(Path.Combine(solutionFolder.FullName, pluginFileName))
                If Not projectFolder.Exists Then
                    projectFolder.Create()
                ElseIf projectFolder.EnumerateFiles.Any Then
                    If MessageBox.Show("Plugin folder is not empty, saving may overwrite existing files.", "Overwrite Warning", MessageBoxButtons.OKCancel) = DialogResult.Cancel Then
                        Return
                    End If
                End If

                SetSystemSettingContents("VS Export Folder", solutionFolder.FullName)

                Dim projectType As String = If(plugin.Language = Plugin.Languages.CSharp, ".csproj", ".vbproj")
                Dim fileType As String = If(plugin.Language = Plugin.Languages.CSharp, ".cs", ".vb")

                Try
                    ' save code file
                    Dim codeFileName As String = pluginFileName &amp; fileType
                    My.Computer.FileSystem.WriteAllText(Path.Combine(projectFolder.FullName, codeFileName), plugin.Code, False, Encoding.ASCII)

                    ' create metafile
                    Dim metaFileName As String = Path.Combine(pluginFileName &amp; ".txt")

                    Using metaFile As StreamWriter = My.Computer.FileSystem.OpenTextFileWriter(Path.Combine(projectFolder.FullName, metaFileName), False, Encoding.ASCII)
                        metaFile.WriteLine()
                        metaFile.WriteLine("GUID: " &amp; plugin.RecID)
                        metaFile.WriteLine("Version: " &amp; plugin.Version)
                        metaFile.WriteLine("Last Modified: " &amp; plugin.LastWriteDateTime)
                        metaFile.WriteLine("Author: " &amp; plugin.Author)
                        metaFile.WriteLine("Name: " &amp; plugin.Name)
                        metaFile.WriteLine("Description: " &amp; plugin.Description)
                        metaFile.Close()
                    End Using

                    ' create Assembly.Info
                    If Not projectFolder.EnumerateDirectories("My Project").Any() Then
                        projectFolder.CreateSubdirectory("My Project")
                    End If

                    Dim assemblyInfoFileName As String = Path.Combine("My Project", "AssemblyInfo" &amp; fileType)

                    Using assemblyInfoFile As StreamWriter = My.Computer.FileSystem.OpenTextFileWriter(Path.Combine(projectFolder.FullName, assemblyInfoFileName), False, Encoding.ASCII)
                        If plugin.Language = Plugin.Languages.VisualBasic Then
                            assemblyInfoFile.WriteLine("Imports System")
                            assemblyInfoFile.WriteLine("Imports System.Reflection")
                            assemblyInfoFile.WriteLine("Imports System.Runtime.InteropServices")
                            assemblyInfoFile.WriteLine("")
                            assemblyInfoFile.WriteLine("&lt;Assembly: ComVisible(False)&gt;")
                            assemblyInfoFile.WriteLine("&lt;Assembly: Guid(""{0:N}"")&gt;", plugin.RecID)
                            assemblyInfoFile.WriteLine("&lt;Assembly: AssemblyTitle(""{0}"")&gt;", plugin.Name)
                            assemblyInfoFile.WriteLine("&lt;Assembly: AssemblyDescription(""{0}"")&gt;", plugin.Description)
                            assemblyInfoFile.WriteLine("&lt;Assembly: AssemblyCompany(""{0}"")&gt;", plugin.Author)
                            assemblyInfoFile.WriteLine("&lt;Assembly: AssemblyProduct(""" &amp; plugin.Author &amp; " Plugins"")&gt;")
                            assemblyInfoFile.WriteLine("&lt;Assembly: AssemblyCopyright(""{0} " &amp; plugin.Author &amp; """)&gt;", plugin.CreateDateTime.Year)
                            assemblyInfoFile.WriteLine("&lt;Assembly: AssemblyVersion(""{0}"")&gt;", plugin.Version)
                            assemblyInfoFile.WriteLine("&lt;Assembly: AssemblyFileVersion(""{0}"")&gt;", plugin.Version)
                        Else
                            'TODO: C# version
                            assemblyInfoFile.WriteLine("using System;")
                            assemblyInfoFile.WriteLine("using System.Reflection;")
                            assemblyInfoFile.WriteLine("using System.Runtime.InteropServices;")
                            assemblyInfoFile.WriteLine("")
                            assemblyInfoFile.WriteLine("[assembly: ComVisible(False)]")
                            assemblyInfoFile.WriteLine("[assembly: Guid(""{0:N}"")]", plugin.RecID)
                            assemblyInfoFile.WriteLine("[assembly: AssemblyTitle(""{0}"")]", plugin.Name)
                            assemblyInfoFile.WriteLine("[assembly: AssemblyDescription(""{0}"")]", plugin.Description)
                            assemblyInfoFile.WriteLine("[assembly: AssemblyCompany(""{0}"")]", plugin.Author)
                            assemblyInfoFile.WriteLine("[assembly: AssemblyProduct(""" &amp; plugin.Author &amp; " Plugins"")]")
                            assemblyInfoFile.WriteLine("[assembly: AssemblyCopyright(""{0} " &amp; plugin.Author &amp; """)]", plugin.CreateDateTime.Year)
                            assemblyInfoFile.WriteLine("[assembly: AssemblyVersion(""{0}"")]", plugin.Version)
                            assemblyInfoFile.WriteLine("[assembly: AssemblyFileVersion(""{0}"")]", plugin.Version)
                        End If

                        assemblyInfoFile.Close()
                    End Using

                    Dim projectUserFileName As String = Path.Combine(projectFolder.FullName, pluginFileName &amp; projectType &amp; ".user")

                    Using projectUserFile As StreamWriter = My.Computer.FileSystem.OpenTextFileWriter(projectUserFileName, False, Encoding.ASCII)
                        projectUserFile.Write(&lt;?xml version="1.0" encoding="utf-8"?&gt;
                                              &lt;Project ToolsVersion="Current"&gt;
                                                  &lt;PropertyGroup&gt;
                                                      &lt;ReferencePath&gt;&lt;%= Application.StartupPath %&gt;&lt;/ReferencePath&gt;
                                                      &lt;ProjectView&gt;ShowAllFiles&lt;/ProjectView&gt;
                                                  &lt;/PropertyGroup&gt;
                                              &lt;/Project&gt;.ToString(SaveOptions.None))
                        projectUserFile.Close()
                    End Using

                    Dim references As New List(Of XElement)
                    For Each ref As JiwaApplication.Plugin.Reference In plugin.ReferenceCollection
                        references.Add(&lt;Reference Include=&lt;%= ref.AssemblyName %&gt;/&gt;)
                    Next

                    If plugin.PluginReferenceCollection.Count &gt; 0 Then
                        For Each ref As JiwaApplication.Plugin.PluginReference In plugin.PluginReferenceCollection
                            references.Add(&lt;ProjectReference Include=&lt;%= String.Format("..\{0}\{0}{1}", CleanFileName(ref.Name), If(ref.Plugin.CompileFileName.EndsWith("cs"), ".csproj", ".vbproj")) %&gt;/&gt;)
                        Next
                    End If

                    If plugin.EmbeddedReferenceCollection.Count &gt; 0 Then
                        If Not projectFolder.EnumerateDirectories("EmbeddedAssemblies").Any() Then
                            projectFolder.CreateSubdirectory("EmbeddedAssemblies")
                        End If

                        Dim eaFolder As String = projectFolder.GetDirectories("EmbeddedAssemblies").First().FullName

                        For Each ref As EmbeddedReference In plugin.EmbeddedReferenceCollection
                            Dim refFileName As String = Path.Combine(eaFolder, ref.AssemblyName)
                            My.Computer.FileSystem.WriteAllBytes(refFileName, ref.FileBinary, False)

                            references.Add(&lt;Reference Include=&lt;%= ref.AssemblyName %&gt;&gt;
                                               &lt;HintPath&gt;&lt;%= refFileName %&gt;&lt;/HintPath&gt;
                                           &lt;/Reference&gt;)
                        Next
                    End If

                    Dim projectFileXml As XDocument = &lt;?xml version="1.0" encoding="utf-8"?&gt;
                                                      &lt;Project ToolsVersion="12.0" DefaultTargets="Build"&gt;
                                                          &lt;PropertyGroup&gt;
                                                              &lt;LangVersion&gt;11&lt;/LangVersion&gt;
                                                              &lt;TargetFrameworkProfile/&gt;
                                                          &lt;/PropertyGroup&gt;
                                                          &lt;PropertyGroup&gt;
                                                              &lt;Configuration Condition=" '$(Configuration)' == '' "&gt;Debug&lt;/Configuration&gt;
                                                              &lt;Platform Condition=" '$(Platform)' == '' "&gt;x86&lt;/Platform&gt;
                                                              &lt;ProjectGuid&gt;&lt;%= plugin.RecID %&gt;&lt;/ProjectGuid&gt;
                                                              &lt;OutputType&gt;Library&lt;/OutputType&gt;
                                                              &lt;RootNamespace&gt;
                                                              &lt;/RootNamespace&gt;
                                                              &lt;FileAlignment&gt;512&lt;/FileAlignment&gt;
                                                              &lt;AssemblyName&gt;ClassLibrary&lt;/AssemblyName&gt;
                                                              &lt;MyType&gt;Windows&lt;/MyType&gt;
                                                              &lt;TargetFrameworkVersion&gt;v4.7.1&lt;/TargetFrameworkVersion&gt;
                                                          &lt;/PropertyGroup&gt;
                                                          &lt;PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'"&gt;
                                                              &lt;DebugSymbols&gt;true&lt;/DebugSymbols&gt;
                                                              &lt;DefineDebug&gt;true&lt;/DefineDebug&gt;
                                                              &lt;DefineTrace&gt;true&lt;/DefineTrace&gt;
                                                              &lt;OutputPath&gt;bin\x86\Debug\&lt;/OutputPath&gt;
                                                              &lt;NoWarn&gt;42016,41999,42017,42018,42019,42032,42036,42020,42021,42022&lt;/NoWarn&gt;
                                                              &lt;DebugType&gt;full&lt;/DebugType&gt;
                                                              &lt;PlatformTarget&gt;x86&lt;/PlatformTarget&gt;
                                                              &lt;CodeAnalysisRuleSet&gt;MinimumRecommendedRules.ruleset&lt;/CodeAnalysisRuleSet&gt;
                                                          &lt;/PropertyGroup&gt;
                                                          &lt;PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'"&gt;
                                                              &lt;DefineTrace&gt;true&lt;/DefineTrace&gt;
                                                              &lt;OutputPath&gt;bin\x86\Release\&lt;/OutputPath&gt;
                                                              &lt;Optimize&gt;true&lt;/Optimize&gt;
                                                              &lt;NoWarn&gt;42016,41999,42017,42018,42019,42032,42036,42020,42021,42022&lt;/NoWarn&gt;
                                                              &lt;DebugType&gt;pdbonly&lt;/DebugType&gt;
                                                              &lt;PlatformTarget&gt;x86&lt;/PlatformTarget&gt;
                                                              &lt;CodeAnalysisRuleSet&gt;MinimumRecommendedRules.ruleset&lt;/CodeAnalysisRuleSet&gt;
                                                          &lt;/PropertyGroup&gt;
                                                          &lt;%= If(plugin.Language = Plugin.Languages.VisualBasic,
                                                              &lt;PropertyGroup&gt;
                                                                  &lt;OptionExplicit&gt;On&lt;/OptionExplicit&gt;
                                                                  &lt;OptionCompare&gt;Binary&lt;/OptionCompare&gt;
                                                                  &lt;OptionStrict&gt;On&lt;/OptionStrict&gt;
                                                                  &lt;OptionInfer&gt;Off&lt;/OptionInfer&gt;
                                                              &lt;/PropertyGroup&gt;, Nothing) %&gt;
                                                          &lt;ItemGroup&gt;
                                                              &lt;%= references %&gt;
                                                          &lt;/ItemGroup&gt;
                                                          &lt;ItemGroup&gt;
                                                              &lt;Folder Include="My Project\"/&gt;
                                                          &lt;/ItemGroup&gt;
                                                          &lt;ItemGroup&gt;
                                                              &lt;Compile Include=&lt;%= assemblyInfoFileName %&gt;/&gt;
                                                              &lt;Compile Include=&lt;%= codeFileName %&gt;/&gt;
                                                          &lt;/ItemGroup&gt;
                                                          &lt;ItemGroup&gt;
                                                              &lt;None Include=&lt;%= metaFileName %&gt;/&gt;
                                                          &lt;/ItemGroup&gt;
                                                          &lt;%=
                                                              If(plugin.Language = Plugin.Languages.VisualBasic,
                                                                &lt;Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.Targets"/&gt;,
                                                                &lt;Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.Targets"/&gt;)
                                                          %&gt;
                                                          &lt;ProjectExtensions&gt;
                                                              &lt;VisualStudio AllowExistingFolder="true"/&gt;
                                                          &lt;/ProjectExtensions&gt;
                                                      &lt;/Project&gt;

                    Dim projectFileName As String = Path.Combine(projectFolder.FullName, pluginFileName &amp; projectType)
                    Using projectFile As StreamWriter = My.Computer.FileSystem.OpenTextFileWriter(projectFileName, False, Encoding.ASCII)
                        projectFile.Write(projectFileXml.ToString(SaveOptions.None))
                    End Using

                    ' reset time stamp on all files in the project folder
                    For Each fi As FileInfo In projectFolder.EnumerateFileSystemInfos("*", SearchOption.AllDirectories).OfType(Of FileInfo)
                        fi.LastWriteTime = plugin.LastWriteDateTime
                    Next

                    For Each di As DirectoryInfo In projectFolder.EnumerateDirectories().OfType(Of DirectoryInfo)
                        di.LastWriteTime = plugin.LastWriteDateTime
                    Next
                Catch ex As Exception
                    MessageBox.Show(String.Format("Error exporting {0} {1}", plugin.Name, ex.Message))
                End Try

                MessageBox.Show("Done!")
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            Finally
                _pluginForm.Cursor = oldCursor
            End Try
        End Sub

        Private Function GetFolderName(exportFolder As String) As String
            Dim folderName As String = GetSystemSettingContents(exportFolder)
            Using ofd As New FolderBrowserDialog() With {
                           .SelectedPath = folderName,
                           .ShowNewFolderButton = True,
                           .Description = "Select folder to export files into"}
                If ofd.ShowDialog() &lt;&gt; DialogResult.OK Then
                    Return Nothing
                Else
                    SetSystemSettingContents(exportFolder, ofd.SelectedPath)
                    Return ofd.SelectedPath
                End If
            End Using
        End Function

    End Class

#Region "Unused JIWA Boiler Plate"
    Public Class BusinessLogicPlugin
        Inherits MarshalByRefObject
        Implements JiwaApplication.IJiwaBusinessLogicPlugin

        Public Overrides Function InitializeLifetimeService() As Object
            ' returning null here will prevent the lease manager
            ' from deleting the Object.
            Return Nothing
        End Function
        Public Sub Setup(ByVal JiwaBusinessLogic As JiwaApplication.IJiwaBusinessLogic, ByVal Plugin As Plugin) Implements JiwaApplication.IJiwaBusinessLogicPlugin.Setup
        End Sub

        Private Sub Plugin_SaveStart(sender As Object, e As EventArgs)
        End Sub
    End Class

    Public Class ApplicationManagerPlugin
        Inherits System.MarshalByRefObject
        Implements JiwaApplication.IJiwaApplicationManagerPlugin

        Public Overrides Function InitializeLifetimeService() As Object
            ' returning null here will prevent the lease manager
            ' from deleting the Object.
            Return Nothing
        End Function

        Public Sub Setup(ByVal Plugin As Plugin) Implements JiwaApplication.IJiwaApplicationManagerPlugin.Setup
        End Sub

    End Class

    Public Class CustomFieldPlugin
        Inherits System.MarshalByRefObject
        Implements JiwaApplication.IJiwaCustomFieldPlugin

        Public Overrides Function InitializeLifetimeService() As Object
            ' returning null here will prevent the lease manager
            ' from deleting the Object.
            Return Nothing
        End Function

        Public Sub FormatCell(ByVal BusinessLogicHost As JiwaApplication.IJiwaBusinessLogic, ByVal GridObject As JiwaApplication.Controls.JiwaGrid, ByVal FormObject As JiwaApplication.IJiwaForm, ByVal Col As Integer, ByVal Row As Integer, ByVal HostObject As JiwaApplication.IJiwaCustomFieldValues, ByVal CustomField As JiwaApplication.CustomFields.CustomField, ByVal CustomFieldValue As JiwaApplication.CustomFields.CustomFieldValue) Implements JiwaApplication.IJiwaCustomFieldPlugin.FormatCell
        End Sub

        Public Sub ReadData(ByVal BusinessLogicHost As JiwaApplication.IJiwaBusinessLogic, ByVal GridObject As JiwaApplication.Controls.JiwaGrid, ByVal FormObject As JiwaApplication.IJiwaForm, ByVal Row As Integer, ByVal HostObject As JiwaApplication.IJiwaCustomFieldValues, ByVal CustomField As JiwaApplication.CustomFields.CustomField, ByVal CustomFieldValue As JiwaApplication.CustomFields.CustomFieldValue) Implements JiwaApplication.IJiwaCustomFieldPlugin.ReadData
        End Sub

        Public Sub ButtonClicked(ByVal BusinessLogicHost As JiwaApplication.IJiwaBusinessLogic, ByVal GridObject As JiwaApplication.Controls.JiwaGrid, ByVal FormObject As JiwaApplication.IJiwaForm, ByVal Col As Integer, ByVal Row As Integer, ByVal HostObject As JiwaApplication.IJiwaCustomFieldValues, ByVal CustomField As JiwaApplication.CustomFields.CustomField, ByVal CustomFieldValue As JiwaApplication.CustomFields.CustomFieldValue) Implements JiwaApplication.IJiwaCustomFieldPlugin.ButtonClicked
        End Sub

    End Class

    Public Class LineCustomFieldPlugin
        Inherits System.MarshalByRefObject
        Implements JiwaApplication.IJiwaLineCustomFieldPlugin

        Public Overrides Function InitializeLifetimeService() As Object
            ' returning null here will prevent the lease manager
            ' from deleting the Object.
            Return Nothing
        End Function

        Public Sub FormatCell(ByVal BusinessLogicHost As JiwaApplication.IJiwaBusinessLogic, ByVal GridObject As JiwaApplication.Controls.JiwaGrid, ByVal FormObject As JiwaApplication.IJiwaForm, ByVal Col As Integer, ByVal Row As Integer, ByVal HostItem As JiwaApplication.IJiwaLineCustomFieldValues, ByVal CustomField As JiwaApplication.CustomFields.CustomField, ByVal CustomFieldValue As JiwaApplication.CustomFields.CustomFieldValue) Implements JiwaApplication.IJiwaLineCustomFieldPlugin.FormatCell
        End Sub

        Public Sub ReadData(ByVal BusinessLogicHost As JiwaApplication.IJiwaBusinessLogic, ByVal GridObject As JiwaApplication.Controls.JiwaGrid, ByVal FormObject As JiwaApplication.IJiwaForm, ByVal Row As Integer, ByVal HostItem As JiwaApplication.IJiwaLineCustomFieldValues, ByVal CustomField As JiwaApplication.CustomFields.CustomField, ByVal CustomFieldValue As JiwaApplication.CustomFields.CustomFieldValue) Implements JiwaApplication.IJiwaLineCustomFieldPlugin.ReadData
        End Sub

        Public Sub ButtonClicked(ByVal BusinessLogicHost As JiwaApplication.IJiwaBusinessLogic, ByVal GridObject As JiwaApplication.Controls.JiwaGrid, ByVal FormObject As JiwaApplication.IJiwaForm, ByVal Col As Integer, ByVal Row As Integer, ByVal HostItem As JiwaApplication.IJiwaLineCustomFieldValues, ByVal CustomField As JiwaApplication.CustomFields.CustomField, ByVal CustomFieldValue As JiwaApplication.CustomFields.CustomFieldValue) Implements JiwaApplication.IJiwaLineCustomFieldPlugin.ButtonClicked
        End Sub

    End Class

    Public Class SystemSettingPlugin
        Inherits System.MarshalByRefObject
        Implements JiwaApplication.IJiwaSystemSettingPlugin

        Public Overrides Function InitializeLifetimeService() As Object
            ' returning null here will prevent the lease manager
            ' from deleting the Object.
            Return Nothing
        End Function

        Public Sub FormatCell(ByVal BusinessLogicHost As JiwaApplication.IJiwaBusinessLogic, ByVal GridObject As JiwaApplication.Controls.JiwaGrid, ByVal FormObject As JiwaApplication.IJiwaForm, ByVal Col As Integer, ByVal Row As Integer, ByVal SystemSetting As JiwaApplication.SystemSettings.Setting) Implements JiwaApplication.IJiwaSystemSettingPlugin.FormatCell
        End Sub

        Public Sub ReadData(ByVal BusinessLogicHost As JiwaApplication.IJiwaBusinessLogic, ByVal GridObject As JiwaApplication.Controls.JiwaGrid, ByVal FormObject As JiwaApplication.IJiwaForm, ByVal Row As Integer, ByVal SystemSetting As JiwaApplication.SystemSettings.Setting) Implements JiwaApplication.IJiwaSystemSettingPlugin.ReadData
        End Sub

        Public Sub ButtonClicked(ByVal BusinessLogicHost As JiwaApplication.IJiwaBusinessLogic, ByVal GridObject As JiwaApplication.Controls.JiwaGrid, ByVal FormObject As JiwaApplication.IJiwaForm, ByVal Col As Integer, ByVal Row As Integer, ByVal SystemSetting As JiwaApplication.SystemSettings.Setting) Implements JiwaApplication.IJiwaSystemSettingPlugin.ButtonClicked
        End Sub

    End Class

    Public Class ScheduledExecutionPlugin
        Inherits System.MarshalByRefObject
        Implements JiwaApplication.IJiwaScheduledExecutionPlugin

        Public Sub Execute(ByVal Plugin As Plugin, ByVal Schedule As JiwaApplication.Schedule.Schedule) Implements JiwaApplication.IJiwaScheduledExecutionPlugin.Execute

        End Sub

        Public Sub OnServiceStart(ByVal Plugin As Plugin) Implements JiwaApplication.IJiwaScheduledExecutionPlugin.OnServiceStart

        End Sub

        Public Sub OnServiceStopping(ByVal Plugin As Plugin) Implements JiwaApplication.IJiwaScheduledExecutionPlugin.OnServiceStopping

        End Sub
    End Class
#End Region


    Public Module FileSystemHelpers
        Private _badChars As Char() = IO.Path.GetInvalidFileNameChars()
        Public Function CleanFileName(fileName As String) As String
            Dim resultBuilder As New StringBuilder(fileName.Length)

            Dim startIndex As Integer = 0
            Dim badIndex As Integer
            Do
                badIndex = fileName.IndexOfAny(_badChars, startIndex)
                If badIndex = -1 Then
                    resultBuilder.Append(fileName.Substring(startIndex))
                ElseIf badIndex &gt; 0 Then
                    resultBuilder.Append(fileName.Substring(startIndex, badIndex - startIndex))
                Else
                    resultBuilder.AppendFormat("_x{0:X2}", Convert.ToByte(fileName(badIndex)))
                End If
                startIndex = badIndex + 1
            Loop Until badIndex = -1 OrElse startIndex = fileName.Length

            Return resultBuilder.ToString()
        End Function
    End Module

    Public Module UserInterfaceHelpers
        &lt;Extension()&gt;
        Public Function GetToolbarGroup(toolBar As UltraToolbarsManager, tabKey As String, groupKey As String, groupCaption As String) As RibbonGroup
            Dim newGroup As RibbonGroup
            Dim ribbonTab As RibbonTab

            Try
                ribbonTab = toolBar.Ribbon.Tabs(tabKey) ' if this fails, we need a new toolbar
            Catch 'ex As Exception
                ribbonTab = toolBar.Ribbon.Tabs.Add(tabKey)
            End Try

            Try
                newGroup = ribbonTab.Groups(groupKey) ' if this fails, it's because the group doesn't exist, and we need to add it.
            Catch 'ex As Exception
                newGroup = ribbonTab.Groups.Add(groupKey)
                newGroup.Caption = groupCaption
            End Try
            If newGroup Is Nothing Then

            End If

            Return newGroup
        End Function

        &lt;Extension()&gt;
        Public Function AddNewToolbarButton(toolBar As UltraToolbarsManager, group As RibbonGroup, key As String, caption As String, preferredSize As RibbonToolSize, largeImage As System.Drawing.Image, smallImage As System.Drawing.Image) As ButtonTool
            Dim newButton As New ButtonTool(key)
            newButton.SharedProps.Caption = caption
            toolBar.Tools.Add(newButton)
            group.Tools.AddTool(key)
            group.Tools(key).InstanceProps.MinimumSizeOnRibbon = RibbonToolSize.Normal
            group.Tools(key).InstanceProps.PreferredSizeOnRibbon = preferredSize

            newButton.SharedProps.AppearancesLarge.Appearance.Image = largeImage
            newButton.SharedProps.AppearancesSmall.Appearance.Image = smallImage

            Return newButton
        End Function

        &lt;Extension()&gt;
        Public Function AddNewToolbarButton(manager As JiwaApplication.Manager, toolBar As UltraToolbarsManager, group As RibbonGroup, key As String, caption As String, Optional preferredSize As RibbonToolSize = RibbonToolSize.Normal, Optional largeImageName As String = Nothing, Optional smallImageName As String = Nothing) As ButtonTool

            Dim largeImage As System.Drawing.Image = GetImage(manager, largeImageName)
            Dim smallImage As System.Drawing.Image = If(GetImage(manager, smallImageName), largeImage)

            Return AddNewToolbarButton(toolBar, group, key, caption, preferredSize, largeImage, smallImage)
        End Function

        Public Function GetImage(manager As JiwaApplication.Manager, imageName As String) As System.Drawing.Image
            Return If(String.IsNullOrWhiteSpace(imageName), Nothing, manager.GetEmbeddedPicture(String.Format("JiwaFinancials.Jiwa.JiwaApplication.{0}.png", imageName), False))
        End Function

    End Module

End Namespace</Code>
  <ExceptionPolicy>Report</ExceptionPolicy>
  <Language>VisualBasic</Language>
  <PluginFormCollection>
    <PluginForm>
      <RecID>36b41913-256c-4778-87d7-bd68b1a91f97</RecID>
      <Description>Plugin Maintenance</Description>
      <ClassName>JiwaFinancials.Jiwa.JiwaPluginMaintenanceUI.frmMain</ClassName>
    </PluginForm>
  </PluginFormCollection>
  <BusinessLogicCollection>
    <BusinessLogic>
      <RecID>b018eb01-2bc9-4f44-8700-5f382f610ee3</RecID>
      <Description>Plugins</Description>
      <ClassName>JiwaFinancials.Jiwa.JiwaApplication.Plugin.Plugin</ClassName>
      <Assembly>JiwaApplication, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</Assembly>
    </BusinessLogic>
  </BusinessLogicCollection>
  <ReferenceCollection>
    <Reference>
      <RecID>00278e23-2ad4-41d3-a3e1-9187ce7555f1</RecID>
      <AssemblyFullName>JiwaApplication, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaApplication.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\JiwaApplication.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>6e4bae3c-549b-4483-84dc-4496aac75fe5</RecID>
      <AssemblyFullName>mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>mscorlib.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>fdafc8eb-0ac3-436d-8d71-eefeaa82eda5</RecID>
      <AssemblyFullName>System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>b77fae29-dfc0-4380-bb59-0441b5b34987</RecID>
      <AssemblyFullName>Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</AssemblyFullName>
      <AssemblyName>Microsoft.VisualBasic.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.VisualBasic\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualBasic.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>b031d6ee-556a-4af9-8b08-0173ab2e8b90</RecID>
      <AssemblyFullName>System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</AssemblyFullName>
      <AssemblyName>System.Drawing.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>4dd005b4-033d-4a7c-a25c-b2973486976b</RecID>
      <AssemblyFullName>JiwaODBC, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaODBC.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\JiwaODBC.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>48bfcafc-03b2-4f74-aba4-90998c5b1aae</RecID>
      <AssemblyFullName>System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.Data.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>058b8714-14cd-49cf-b196-b0f34a880de2</RecID>
      <AssemblyFullName>System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.Xml.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>a2b0b906-c427-46c1-9962-0afd38cf3c6c</RecID>
      <AssemblyFullName>System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.Runtime.Serialization.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Serialization\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Serialization.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>21eed09e-2d76-45ac-9ba1-19001af0ac86</RecID>
      <AssemblyFullName>System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.Windows.Forms.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>1c028ed8-4c38-484a-b392-69dae5ea9818</RecID>
      <AssemblyFullName>JiwaServiceModel, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaServiceModel.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\JiwaServiceModel.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>a2e0d6af-c59f-4c62-83ce-37b1e0d53b67</RecID>
      <AssemblyFullName>Infragistics4.Win.Misc.v13.1, Version=13.1.20131.2060, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb</AssemblyFullName>
      <AssemblyName>Infragistics4.Win.Misc.v13.1.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Infragistics4.Win.Misc.v13.1.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>d9f45891-ffb0-437a-b4c5-7f540443c821</RecID>
      <AssemblyFullName>Infragistics4.Win.UltraWinEditors.v13.1, Version=13.1.20131.2060, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb</AssemblyFullName>
      <AssemblyName>Infragistics4.Win.UltraWinEditors.v13.1.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Infragistics4.Win.UltraWinEditors.v13.1.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>1ce4f6ce-203c-45e7-a787-cdf365a4da0f</RecID>
      <AssemblyFullName>Infragistics4.Win.v13.1, Version=13.1.20131.2060, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb</AssemblyFullName>
      <AssemblyName>Infragistics4.Win.v13.1.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Infragistics4.Win.v13.1.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>ae61cb81-b943-4e4c-a165-2a2f4b857c48</RecID>
      <AssemblyFullName>Microsoft.SqlServer.Smo, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91</AssemblyFullName>
      <AssemblyName>Microsoft.SqlServer.Smo.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Microsoft.SqlServer.Smo.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>806174cd-a9d7-4872-baa2-822e497627c6</RecID>
      <AssemblyFullName>Microsoft.SqlServer.ConnectionInfo, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91</AssemblyFullName>
      <AssemblyName>Microsoft.SqlServer.ConnectionInfo.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Microsoft.SqlServer.ConnectionInfo.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>d312adce-92c4-4bc5-90ae-b810c9e06b49</RecID>
      <AssemblyFullName>Infragistics4.Win.UltraWinExplorerBar.v13.1, Version=13.1.20131.2060, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb</AssemblyFullName>
      <AssemblyName>Infragistics4.Win.UltraWinExplorerBar.v13.1.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Infragistics4.Win.UltraWinExplorerBar.v13.1.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>e0270dbe-fc6f-4b90-b015-be906429434c</RecID>
      <AssemblyFullName>Infragistics4.Win.UltraWinTree.v13.1, Version=13.1.20131.2060, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb</AssemblyFullName>
      <AssemblyName>Infragistics4.Win.UltraWinTree.v13.1.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Infragistics4.Win.UltraWinTree.v13.1.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>b0d9c0a7-edfa-47c6-b979-a1a2b844dcaf</RecID>
      <AssemblyFullName>FarPoint.Win.Spread, Version=8.35.20151.0, Culture=neutral, PublicKeyToken=327c3516b1b18457</AssemblyFullName>
      <AssemblyName>FarPoint.Win.Spread.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\FarPoint.Win.Spread.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>94f3bf44-48c7-4be1-95b0-d14198b6954a</RecID>
      <AssemblyFullName>Infragistics4.Win.UltraWinTabControl.v13.1, Version=13.1.20131.2060, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb</AssemblyFullName>
      <AssemblyName>Infragistics4.Win.UltraWinTabControl.v13.1.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Infragistics4.Win.UltraWinTabControl.v13.1.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>4de74746-b290-4a38-9574-d676cf9d5ffa</RecID>
      <AssemblyFullName>Infragistics4.Shared.v13.1, Version=13.1.20131.2060, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb</AssemblyFullName>
      <AssemblyName>Infragistics4.Shared.v13.1.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Infragistics4.Shared.v13.1.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>aedd12a9-0f43-4f70-b2c5-dd20e39faca5</RecID>
      <AssemblyFullName>Infragistics4.Win.UltraWinToolbars.v13.1, Version=13.1.20131.2060, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb</AssemblyFullName>
      <AssemblyName>Infragistics4.Win.UltraWinToolbars.v13.1.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Infragistics4.Win.UltraWinToolbars.v13.1.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>6766781c-765f-44ee-8a30-6f4193468c59</RecID>
      <AssemblyFullName>Infragistics4.Win.UltraWinStatusBar.v13.1, Version=13.1.20131.2060, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb</AssemblyFullName>
      <AssemblyName>Infragistics4.Win.UltraWinStatusBar.v13.1.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Infragistics4.Win.UltraWinStatusBar.v13.1.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>50df74eb-7144-4851-a849-d6b942296933</RecID>
      <AssemblyFullName>Infragistics4.Win.UltraWinSchedule.v13.1, Version=13.1.20131.2060, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb</AssemblyFullName>
      <AssemblyName>Infragistics4.Win.UltraWinSchedule.v13.1.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Infragistics4.Win.UltraWinSchedule.v13.1.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>cd0ef0be-1d46-4ce9-a412-52dda1c0a1b8</RecID>
      <AssemblyFullName>Infragistics4.Win.UltraWinListView.v13.1, Version=13.1.20131.2060, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb</AssemblyFullName>
      <AssemblyName>Infragistics4.Win.UltraWinListView.v13.1.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Infragistics4.Win.UltraWinListView.v13.1.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>a6ef1e06-0f9d-4cf4-b4dc-8c13454a8158</RecID>
      <AssemblyFullName>System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.Core.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>4da0fd51-7dc5-4c47-8d6a-b1ad371f359c</RecID>
      <AssemblyFullName>JiwaEncryption, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaEncryption.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\JiwaEncryption.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>7ef0ab5f-73ce-43ed-ad92-2752c5d6090c</RecID>
      <AssemblyFullName>Infragistics4.Win.UltraWinGrid.v13.1, Version=13.1.20131.2060, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb</AssemblyFullName>
      <AssemblyName>Infragistics4.Win.UltraWinGrid.v13.1.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Infragistics4.Win.UltraWinGrid.v13.1.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>c30050ea-3002-48ff-adb0-094b02ba3cdb</RecID>
      <AssemblyFullName>Microsoft.SqlServer.Dac, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</AssemblyFullName>
      <AssemblyName>Microsoft.SqlServer.Dac.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Microsoft.SqlServer.Dac.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>dbe152b8-3a2c-4492-8b9c-9f7e7871c118</RecID>
      <AssemblyFullName>Infragistics4.Win.AppStylistSupport.v13.1, Version=13.1.20131.2060, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb</AssemblyFullName>
      <AssemblyName>Infragistics4.Win.AppStylistSupport.v13.1.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Infragistics4.Win.AppStylistSupport.v13.1.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>6898d415-f1fc-4c68-937d-1698478c4322</RecID>
      <AssemblyFullName>JiwaLib, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaLib.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\JiwaLib.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>7bc8cd8f-4150-497b-b6c8-c949000224b3</RecID>
      <AssemblyFullName>Microsoft.ApplicationInsights, Version=2.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</AssemblyFullName>
      <AssemblyName>Microsoft.ApplicationInsights.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\Microsoft.ApplicationInsights.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>7aba57ce-ebd4-4d68-ac8c-d147f00e4a09</RecID>
      <AssemblyFullName>ActiproSoftware.Shared.WinForms, Version=16.1.330.0, Culture=neutral, PublicKeyToken=c27e062d3c1a4763</AssemblyFullName>
      <AssemblyName>ActiproSoftware.Shared.WinForms.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\ActiproSoftware.Shared.WinForms.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>535e210e-cc07-4d4e-98f8-1970492f8417</RecID>
      <AssemblyFullName>System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</AssemblyFullName>
      <AssemblyName>System.Security.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Security\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Security.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>42fd95f5-18be-407b-be1b-061ff7b95608</RecID>
      <AssemblyFullName>FarPoint.Win, Version=8.35.20151.0, Culture=neutral, PublicKeyToken=327c3516b1b18457</AssemblyFullName>
      <AssemblyName>FarPoint.Win.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\FarPoint.Win.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>3b18b177-fc81-418c-892d-17e060da2025</RecID>
      <AssemblyFullName>JiwaPluginMaintenanceUI, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaPluginMaintenanceUI.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\JiwaPluginMaintenanceUI.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>0b77e70b-9d8f-45d6-8e96-6231459177ff</RecID>
      <AssemblyFullName>JiwaDocumentTypes, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaDocumentTypes.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\JiwaDocumentTypes.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>09b6a0cb-fa79-41f6-af63-f07aa57844fe</RecID>
      <AssemblyFullName>JiwaNoteTypes, Version=7.2.1.0, Culture=neutral, PublicKeyToken=e30ce81e37f29c8c</AssemblyFullName>
      <AssemblyName>JiwaNoteTypes.dll</AssemblyName>
      <AssemblyLocation>C:\Jiwa\Jiwa 7\JiwaNoteTypes.dll</AssemblyLocation>
    </Reference>
    <Reference>
      <RecID>c4944051-612d-43c1-bc42-389b8241199f</RecID>
      <AssemblyFullName>System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</AssemblyFullName>
      <AssemblyName>System.Xml.Linq.dll</AssemblyName>
      <AssemblyLocation>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml.Linq\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.Linq.dll</AssemblyLocation>
    </Reference>
  </ReferenceCollection>
  <SystemSettingCollection>
    <SystemSetting>
      <RecID>0b902017423548cebf08</RecID>
      <IDKey>SQL Export Folder</IDKey>
      <Description>SQL Export Folder</Description>
      <DisplayOrder>1</DisplayOrder>
      <CellType>Text</CellType>
      <Contents>C:\Jiwa\SofSol\SQL\</Contents>
      <DisplayContents>C:\Jiwa\SofSol\SQL\</DisplayContents>
    </SystemSetting>
    <SystemSetting>
      <RecID>724e65c567e64e26baf8</RecID>
      <IDKey>XML Export Folder</IDKey>
      <Description>XML Export Folder</Description>
      <DisplayOrder>2</DisplayOrder>
      <CellType>Text</CellType>
      <Contents>C:\Jiwa\SofSol\XML\</Contents>
      <DisplayContents>C:\Jiwa\SofSol\XML\</DisplayContents>
    </SystemSetting>
    <SystemSetting>
      <RecID>7e5b6e9a7a73448c9e99</RecID>
      <IDKey>VS Export Folder</IDKey>
      <Description>VS Export Folder</Description>
      <DisplayOrder>33</DisplayOrder>
      <CellType>Text</CellType>
      <Contents>C:\Jiwa\SoftSol\Plugins</Contents>
      <DisplayContents>C:\Jiwa\SoftSol\Plugins</DisplayContents>
    </SystemSetting>
  </SystemSettingCollection>
</JiwaDocument>