<component id="2" name="Audit" componentClassID="Microsoft.ManagedComponentHost" description="Executes a custom script" localeId="1033" version="11" contactInfo="Includes and runs custom script code. For example, apply a business rule that limits the range of valid values in an &quot;income&quot; column or add values in two columns and calculate the average of the sum.;Microsoft Corporation; Microsoft SQL Server; Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;7"><properties><property id="3" name="SourceCode" state="cdata" dataType="System.String" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="30"><arrayElement dataType="System.String"><![CDATA[SC_6ad45d3034474ff4ba9b8f9cdbd17de6.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{A5ED2BC2-175F-4064-8646-CF06A6E137C6}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>SC_6ad45d3034474ff4ba9b8f9cdbd17de6</RootNamespace>
    <AssemblyName>SC_6ad45d3034474ff4ba9b8f9cdbd17de6</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <TargetFrameworkProfile></TargetFrameworkProfile>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>.\bin\Debug\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>.\bin\Release\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="CozyRoc.Dynamics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\110\SDK\Assemblies\CozyRoc.Dynamics.dll</HintPath>
    </Reference>
    <Reference Include="CozyRoc.SSISPlus.2017, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=13.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.ManagedDTS\v4.0_13.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.ManagedDTS.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Web.Services" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=14.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=14.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=14.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=14.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Compile Include="main.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </ItemGroup>
  <!-- Visual Basic supports Importing namespaces (equivalent to using statements in C#).-->
  <ItemGroup>
    <Import Include="Microsoft.VisualBasic" />
    <Import Include="System" />
    <Import Include="System.Collections" />
    <Import Include="System.Data" />
    <Import Include="System.Diagnostics" />
    <Import Include="System.Windows.Forms" />
  </ItemGroup>
  <ItemGroup>
    <AppDesigner Include="My Project\" />
    <Compile Include="My Project\AssemblyInfo.vb">
      <SubType>Code</SubType>
    </Compile>
    <EmbeddedResource Include="My Project\Resources.resx">
      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.vb</LastGenOutput>
      <CustomToolNamespace>My.Resources</CustomToolNamespace>
    </EmbeddedResource>
    <Compile Include="My Project\Resources.Designer.vb">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resources.resx</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <None Include="My Project\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.vb</LastGenOutput>
    </None>
    <Compile Include="My Project\Settings.Designer.vb">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
  </ItemGroup>
  <!-- Include the build rules for a VB project.-->
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <!-- This section defines VSTA properties that describe the host-changable project properties. -->
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{30D016F9-3734-4E33-A861-5E7D899E18F3}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{B3A685AA-7EAF-4BC6-9940-57959FA5AC07}" ApplicationType="usd" Language="vb" TemplatesPath="" DebugInfoExeName="devenv.exe" DebugInfoCommandLine="/vstaHostDebugUri:&quot;vstadebug9b38d93b-4cfd-4a39-af77-44e163bb7227/8cf975cd-0e94-4b17-a554-cfb85e3953cb&quot;" />
        <Host Name="SSIS_SC110" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC140</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ComponentWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services component wrapper
' This module defines the base class for your component
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class UserComponent
    Inherits ScriptComponentPlus

    Public Connections As New Connections(Me)
    Public Variables As New Variables(Me)

    Public OutputBuffer As OutputBuffer

    Dim InputsFinished As Integer = 0

    Public Overrides Sub ProcessInput(ByVal InputID As Integer, ByVal InputName As String, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)

        If InputID = MyBase.ComponentMetaData.InputCollection("Input").ID Then
            Input_ProcessInput(New InputBuffer(Me, InputID, True, Buffer, OutputMap))
        End If

        If Buffer.EndOfRowset Then
            InputsFinished = InputsFinished + 1
            If InputsFinished = 0 Then
                FinishOutputs()
                MarkOutputsFinished()
            End If
        End If

    End Sub

    Public Overridable Sub FinishOutputs()
    End Sub

    Private Sub MarkOutputsFinished()

        If OutputBuffer IsNot Nothing Then
            OutputBuffer.SetEndOfRowset
            OutputBuffer = Nothing
        End If

    End Sub

    Public Overrides Sub PrimeOutput(ByVal Outputs As Integer, ByVal OutputIDs() As Integer, ByVal Buffers() As PipelineBuffer, ByVal OutputMap As OutputNameMap)

        For I As Integer = 0 To Outputs - 1
            If OutputIDs(I) = GetOutputID(OutputMap, "Output") Then
                OutputBuffer = New OutputBuffer(Me, OutputIDs(I), False, Buffers(I), OutputMap)
            End If
        Next

        CreateNewOutputRows()

    End Sub

    Public Overridable Sub CreateNewOutputRows()
    End Sub

    Public Overridable Sub Input_ProcessInput(ByVal Buffer As InputBuffer)

        While Buffer.NextRow()
            Input_ProcessInputRow(Buffer)
        End While

    End Sub

    Public Overridable Sub Input_ProcessInputRow(ByVal Row As InputBuffer)

    End Sub

End Class

Public Class Connections

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

    Public ReadOnly Property CrmConnection() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("CrmConnection").ConnectionManager
        End Get
    End Property

End Class

Public Class Variables

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Settings.settings]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version='1.0' encoding='iso-8859-1'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)" GeneratedClassNamespace="" GeneratedClassName="MySettings">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\AssemblyInfo.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Imports System
Imports System.Reflection
Imports 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.

' Review the values of the assembly attributes

<Assembly: AssemblyTitle("SC_6ad45d3034474ff4ba9b8f9cdbd17de6")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("")> 
<Assembly: AssemblyProduct("SC_6ad45d3034474ff4ba9b8f9cdbd17de6")> 
<Assembly: AssemblyCopyright("Copyright @  2016")> 
<Assembly: AssemblyTrademark("")> 
<Assembly: CLSCompliant(True)> 

<Assembly: ComVisible(False)> 

'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("5b395152-bf3a-4f8d-b7c9-aa34085de81f")> 

' 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")> 
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[main.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' COZYROC SQL Server Integration Services user script component
'
' Copyright (c) 2006-2016 COZYROC LLC
' 
' 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.

Imports System
Imports System.ComponentModel
Imports System.Collections
Imports System.Collections.Generic
Imports System.Web.Services.Protocols

Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS
Imports CozyRoc.SqlServer.SSIS.Attributes
Imports CozyRoc.Dynamics.Crm
Imports CozyRoc.Dynamics.Crm2011.OrganizationService
Imports CRM2011 = CozyRoc.Dynamics.Crm2011.OrganizationService


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute()> _
<CLSCompliant(False)> _
<ColumnMappings()> _
<SortProperties(New String() {"CrmConnection", "BatchSize", "InsertTerminator"})> _
<ValidateProperties("Validate")> _
Public Class ScriptMain
    Inherits UserComponent


    Public Const Formatted As String = "Formatted"


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Try
            ' Setup entity reference.
            Dim entityRef As New EntityReference()
            entityRef.LogicalName = Convert.ToString(Row.Buffer(m_entityIdx))
            entityRef.Id = New Guid(Convert.ToString(Row.Buffer(m_idIdx)))

            ' Setup paging info.
            Dim pi As PagingInfo = New PagingInfo()
            pi.Count = Me.BatchSize
            pi.PageNumber = 1

            ' Setup audit request.
            Dim req As New OrganizationRequest()
            req.RequestName = "RetrieveRecordChangeHistory"
            req("Target") = entityRef
            req("PagingInfo") = pi

            While True
                Dim res As OrganizationResponse = m_service.Execute(req)
                Dim details As AuditDetailCollection = CType( _
                    res("AuditDetailCollection"),  _
                    AuditDetailCollection)

                Call OutputDetails_(details)

                If details.MoreRecords Then
                    ' Setup next PageInfo.
                    pi.PageNumber += 1
                    pi.PagingCookie = details.PagingCookie
                Else
                    ' Reached end. Exit loop.
                    Exit While
                End If
            End While

            If Me.InsertTerminator Then
                Call OutputBuffer.AddRow()
            End If

            If Row.EndOfRowset() Then
                Call OutputBuffer.SetEndOfRowset()
            End If
        Catch ex As SoapException
            Call FireError_(ex.Detail.InnerXml)
        Catch ex As Exception
            Call FireError_(ex.ToString())
        End Try
    End Sub ' Input_ProcessInputRow


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub PreExecute()
        Call MyBase.PreExecute()

        ' Setup CRM service.
        m_connection = CType( _
            Me.Connections.CrmConnection.AcquireConnection(Nothing),  _
            IConnection)
        Call m_connection.Connect()

        m_service = CType(m_connection.GetService(0), OrganizationServiceClient)

        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
        Dim inputCol As IDTSInputColumn100

        ' Get input column indexes.
        inputCol = GetInputColumn_("Entity")
        m_entityIdx = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            inputCol.LineageID)

        inputCol = GetInputColumn_("Id")
        m_idIdx = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            inputCol.LineageID)
    End Sub ' PreExecute


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub PostExecute()
        Call MyBase.PostExecute()

        Call m_connection.Close()
    End Sub ' PostExecute


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Function Validate(ByRef errMessage As String) As Boolean
        Dim result As Boolean

        Try
            If String.IsNullOrEmpty(Me.CrmConnection) Then
                Throw New Exception("Select Dynamics CRM Connection.")
            End If

            Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
            If input.IsAttached AndAlso _
                (input.InputColumnCollection.Count = 0 OrElse _
                input.InputColumnCollection.Count < 2) Then
                Throw New Exception("Map input columns.")
            End If

            ' Store connection information in the runtime connection collection, too.
            ' Cannot directly use RuntimeConnectionCollection in the property get/set
            ' because of issues with multi-threading.
            Me.ComponentMetaData.RuntimeConnectionCollection("CrmConnection").ConnectionManagerID = Me.CrmConnection

            result = True
        Catch ex As Exception
            result = False
            errMessage = ex.Message
        End Try

        Validate = result
    End Function    ' Validate


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub ReinitializeMetaData()
        Call MyBase.ReinitializeMetaData()

        If MyBase.ComponentMetaData.InputCollection.Count = 0 Then
            ' At least one input must exist.
            Throw New Exception("No inputs.")
        End If

        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)

        ' Cleanup.
        input.ExternalMetadataColumnCollection.IsUsed = True
        Call input.InputColumnCollection.RemoveAll()
        Call input.ExternalMetadataColumnCollection.RemoveAll()

        Dim column As IDTSExternalMetadataColumn100

        ' Setup entity.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "Entity"
        column.DataType = DataType.DT_WSTR
        column.Length = 100

        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "Id"
        column.DataType = DataType.DT_GUID
    End Sub ' ReinitializeMetaData


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select Dynamics CRM Connection Manager.")> _
    <Connection("CrmConnectionType")> _
    Public Property CrmConnection() As String
        Get
            CrmConnection = m_crmConnection
        End Get
        Set(ByVal value As String)
            m_crmConnection = value
        End Set
    End Property    ' CrmConnection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Specifies retrieve batch size.")> _
    <DefaultValue(100)> _
    Public Property BatchSize() As Integer
        Get
            BatchSize = m_batchSize
        End Get
        Set(ByVal value As Integer)
            m_batchSize = value
        End Set
    End Property    ' BatchSize


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Indicates whether an empty line should be inserted at the end of each set of detail records.")> _
    Public Property InsertTerminator() As Boolean
        Get
            InsertTerminator = m_insertTermintator
        End Get
        Set(ByVal value As Boolean)
            m_insertTermintator = value
        End Set
    End Property    ' InsertTerminator
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property CrmConnectionType() As String()
        Get
            CrmConnectionType = New String() {"DYNAMICS-CRM"}
        End Get
    End Property    ' CrmConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub FireError_(ByVal message As String)
        Dim cancel As Boolean = False
        Call MyBase.ComponentMetaData.FireError( _
            0, _
            "Dynamics CRM Audit Logs Query", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub     ' FireError_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Find input column of specified external column name.
    Private Function GetInputColumn_(ByVal externalName As String) As IDTSInputColumn100
        Dim result As IDTSInputColumn100 = Nothing
        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
        Dim extColumn As IDTSExternalMetadataColumn100 = input.ExternalMetadataColumnCollection(externalName)

        ' Find input column for specified external column.
        For Each inputCol As IDTSInputColumn100 In input.InputColumnCollection
            If inputCol.ExternalMetadataColumnID = extColumn.ID Then
                ' Found input column.
                result = inputCol
                Exit For
            End If
        Next

        If result Is Nothing Then
            Throw New Exception("Input column not found.")
        End If

        GetInputColumn_ = result
    End Function    ' GetInputColumn_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Audit details output.
    Private Sub OutputDetails_(ByVal details As AuditDetailCollection)
        For Each detail As AuditDetail In details.AuditDetails
            If Not TypeOf detail Is AttributeAuditDetail Then
                Continue For
            End If

            Dim attributeDetail As AttributeAuditDetail = CType(detail, AttributeAuditDetail)

            ' Setup audit.
            Dim audit As Hashtable = GetAttributes_(detail.AuditRecord)
            Dim newAttrs As Hashtable = GetAttributes_(attributeDetail.NewValue)
            Dim oldAttrs As Hashtable = GetAttributes_(attributeDetail.OldValue)

            If Not attributeDetail.NewValue Is Nothing Then
                For Each attribute As KeyValuePair(Of String, Object) In attributeDetail.NewValue.Attributes
                    Call AddOutputRow_(audit)

                    With OutputBuffer
                        .fieldName = attribute.Key
                        .oldValue = Convert.ToString(oldAttrs(attribute.Key))
                        .oldValueFormatted = Convert.ToString(oldAttrs(attribute.Key + Formatted))
                        .newValue = Convert.ToString(newAttrs(attribute.Key))
                        .newValueFormatted = Convert.ToString(newAttrs(attribute.Key + Formatted))
                    End With
                Next
            End If

            If Not attributeDetail.OldValue Is Nothing Then
                For Each attribute As KeyValuePair(Of String, Object) In attributeDetail.OldValue.Attributes
                    If Not newAttrs.Contains(attribute.Key) Then
                        Call AddOutputRow_(audit)

                        With OutputBuffer
                            .fieldName = attribute.Key
                            .oldValue = Convert.ToString(oldAttrs(attribute.Key))
                            .oldValueFormatted = Convert.ToString(oldAttrs(attribute.Key + Formatted))
                        End With
                    End If
                Next
            End If
        Next
    End Sub     ' OutputDetails_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetAttributes_(ByVal entity As Entity) As Hashtable
        Dim result As New Hashtable

        If entity Is Nothing Then
            Return result
        End If

        For Each attribute As KeyValuePair(Of String, Object) In entity.Attributes
            Dim value As Object = attribute.Value
            Dim formattedValue As Object = attribute.Value

            Dim entityRef As EntityReference = TryCast(value, EntityReference)
            Dim osv As OptionSetValue = TryCast(value, OptionSetValue)

            If Not entityRef Is Nothing Then
                value = entityRef.Id
                formattedValue = entityRef.Name
            ElseIf Not osv Is Nothing Then
                value = osv.Value
                formattedValue = GetAttributeLabel_(osv.Value)
            End If

            result(attribute.Key) = value
            result(attribute.Key + Formatted) = formattedValue
        Next

        For Each attribute As KeyValuePair(Of String, String) In entity.FormattedValues
            result(attribute.Key + Formatted) = attribute.Value
        Next

        GetAttributes_ = result
    End Function    ' GetAttributes_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub AddOutputRow_(ByVal audit As Hashtable)
        With OutputBuffer
            Call .AddRow()

            .action = Convert.ToInt32(audit("action"))
            .actionFormatted = Convert.ToString(audit("action" + Formatted))
            .auditid = New Guid(Convert.ToString(audit("auditid")))
            .createdon = Convert.ToDateTime(audit("createdon"))
            .objectid = New Guid(Convert.ToString(audit("objectid")))
            .objectidFormatted = Convert.ToString(audit("objectid" + Formatted))
            .objecttypecode = Convert.ToString(audit("objecttypecode"))
            .objecttypecodeFormatted = Convert.ToString(audit("objecttypecode" + Formatted))
            .operation = Convert.ToInt32(audit("operation"))
            .operationFormatted = Convert.ToString(audit("operation" + Formatted))
            .userid = New Guid(Convert.ToString(audit("userid")))
            .useridFormatted = Convert.ToString(audit("userid" + Formatted))
        End With
    End Sub     ' AddOutputRow_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns attribute label for input code. Most probably not needed.
    ' DO NOTHING FOR NOW.
    Private Function GetAttributeLabel_(ByVal code As Integer) As String
        Dim result As String = String.Empty

        GetAttributeLabel_ = result
    End Function    ' GetAttributeLabel_
#End Region ' Internals


#Region "Attributes"
    Private m_crmConnection As String
    Private m_batchSize As Integer
    Private m_insertTermintator As Boolean

    Private m_connection As IConnection
    Private m_service As OrganizationServiceClient
    Private m_entityIdx As Integer
    Private m_idIdx As Integer
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[BufferWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class InputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overloads Function NextRow() As Boolean
        NextRow = MyBase.NextRow()
    End Function

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class

<CLSCompliant(False)> _
Public Class OutputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public WriteOnly Property [action]() As Int32
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [action_IsNull] As Boolean
        Set
            If (value)
                SetNull(0)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [actionFormatted]() As String
        Set
            Me(1) = Value
        End Set
    End Property
    Public WriteOnly Property [actionFormatted_IsNull] As Boolean
        Set
            If (value)
                SetNull(1)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [auditid]() As Guid
        Set
            Me(2) = Value
        End Set
    End Property
    Public WriteOnly Property [auditid_IsNull] As Boolean
        Set
            If (value)
                SetNull(2)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [createdon]() As DateTime
        Set
            Me(3) = Value
        End Set
    End Property
    Public WriteOnly Property [createdon_IsNull] As Boolean
        Set
            If (value)
                SetNull(3)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [objectid]() As Guid
        Set
            Me(4) = Value
        End Set
    End Property
    Public WriteOnly Property [objectid_IsNull] As Boolean
        Set
            If (value)
                SetNull(4)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [objectidFormatted]() As String
        Set
            Me(5) = Value
        End Set
    End Property
    Public WriteOnly Property [objectidFormatted_IsNull] As Boolean
        Set
            If (value)
                SetNull(5)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [objecttypecode]() As String
        Set
            Me(6) = Value
        End Set
    End Property
    Public WriteOnly Property [objecttypecode_IsNull] As Boolean
        Set
            If (value)
                SetNull(6)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [objecttypecodeFormatted]() As String
        Set
            Me(7) = Value
        End Set
    End Property
    Public WriteOnly Property [objecttypecodeFormatted_IsNull] As Boolean
        Set
            If (value)
                SetNull(7)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [operation]() As Int32
        Set
            Me(8) = Value
        End Set
    End Property
    Public WriteOnly Property [operation_IsNull] As Boolean
        Set
            If (value)
                SetNull(8)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [operationFormatted]() As String
        Set
            Me(9) = Value
        End Set
    End Property
    Public WriteOnly Property [operationFormatted_IsNull] As Boolean
        Set
            If (value)
                SetNull(9)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [userid]() As Guid
        Set
            Me(10) = Value
        End Set
    End Property
    Public WriteOnly Property [userid_IsNull] As Boolean
        Set
            If (value)
                SetNull(10)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [useridFormatted]() As String
        Set
            Me(11) = Value
        End Set
    End Property
    Public WriteOnly Property [useridFormatted_IsNull] As Boolean
        Set
            If (value)
                SetNull(11)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [fieldName]() As String
        Set
            Me(12) = Value
        End Set
    End Property
    Public WriteOnly Property [fieldName_IsNull] As Boolean
        Set
            If (value)
                SetNull(12)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [oldValue]() As String
        Set
            Me(13) = Value
        End Set
    End Property
    Public WriteOnly Property [oldValue_IsNull] As Boolean
        Set
            If (value)
                SetNull(13)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [oldValueFormatted]() As String
        Set
            Me(14) = Value
        End Set
    End Property
    Public WriteOnly Property [oldValueFormatted_IsNull] As Boolean
        Set
            If (value)
                SetNull(14)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [newValue]() As String
        Set
            Me(15) = Value
        End Set
    End Property
    Public WriteOnly Property [newValue_IsNull] As Boolean
        Set
            If (value)
                SetNull(15)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [newValueFormatted]() As String
        Set
            Me(16) = Value
        End Set
    End Property
    Public WriteOnly Property [newValueFormatted_IsNull] As Boolean
        Set
            If (value)
                SetNull(16)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {"action", "actionFormatted", "auditid", "createdon", "objectid", "objectidFormatted", "objecttypecode", "objecttypecodeFormatted", "operation", "operationFormatted", "userid", "useridFormatted", "fieldName", "oldValue", "oldValueFormatted", "newValue", "newValueFormatted"}
        End Get
    End Property

    Public Overloads Sub AddRow()
        MyBase.AddRow()
    End Sub

    Public Overloads Sub SetEndOfRowset()
        MyBase.SetEndOfRowset()
    End Sub

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Project]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<c:Project xmlns:c="http://schemas.microsoft.com/codeprojectml/2010/08/main" xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" runtimeVersion="4.0" schemaVersion="1.0">
  <msb:PropertyGroup>
    <msb:CodeName>SC_6ad45d3034474ff4ba9b8f9cdbd17de6</msb:CodeName>
    <msb:Language>msBuild</msb:Language>
    <msb:DisplayName>SC_6ad45d3034474ff4ba9b8f9cdbd17de6</msb:DisplayName>
    <msb:ProjectId>{D373316C-5363-4F19-8495-E1FB63CCA020}</msb:ProjectId>
  </msb:PropertyGroup>
  <msb:ItemGroup>
    <msb:Project Include="SC_6ad45d3034474ff4ba9b8f9cdbd17de6.vbproj" />
    <msb:File Include="My Project\Settings.settings" />
    <msb:File Include="main.vb" />
    <msb:File Include="BufferWrapper.vb" />
    <msb:File Include="My Project\Settings.Designer.vb" />
    <msb:File Include="My Project\Resources.resx" />
    <msb:File Include="ComponentWrapper.vb" />
    <msb:File Include="My Project\AssemblyInfo.vb" />
    <msb:File Include="My Project\Resources.Designer.vb" />
  </msb:ItemGroup>
</c:Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Settings.Designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On



Partial Friend NotInheritable Class MySettings
    Inherits System.Configuration.ApplicationSettingsBase

    Private Shared m_Value As MySettings

    Private Shared m_SyncObject As Object = New Object

    <System.Diagnostics.DebuggerNonUserCode()> _
    Public Shared ReadOnly Property Value() As MySettings
        Get
            If (MySettings.m_Value Is Nothing) Then
                System.Threading.Monitor.Enter(MySettings.m_SyncObject)
                If (MySettings.m_Value Is Nothing) Then
                    Try
                        MySettings.m_Value = New MySettings
                    Finally
                        System.Threading.Monitor.Exit(MySettings.m_SyncObject)
                    End Try
                End If
            End If
            Return MySettings.m_Value
        End Get
    End Property
End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Resources.resx]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?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.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: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" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
            </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" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
            </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>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Resources.Designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On


Namespace My.Resources
    
    '''<summary>
    '''   A strongly-typed resource class, for looking up localized strings, etc.
    '''</summary>
    'This class was auto-generated by the Strongly Typed Resource Builder
    'class via a tool like ResGen or Visual Studio.NET.
    'To add or remove a member, edit your .ResX file then rerun ResGen
    'with the /str option, or rebuild your VS project.
    Class MyResources
        
        Private Shared _resMgr As System.Resources.ResourceManager
        
        Private Shared _resCulture As System.Globalization.CultureInfo
        
        Friend Sub New()
            MyBase.New
        End Sub
        
        '''<summary>
        '''   Returns the cached ResourceManager instance used by this class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared ReadOnly Property ResourceManager() As System.Resources.ResourceManager
            Get
                If (_resMgr Is Nothing) Then
                    Dim temp As System.Resources.ResourceManager = New System.Resources.ResourceManager("My.Resources.MyResources", GetType(MyResources).Assembly)
                    _resMgr = temp
                End If
                Return _resMgr
            End Get
        End Property
        
        '''<summary>
        '''   Overrides the current thread's CurrentUICulture property for all
        '''   resource lookups using this strongly typed resource class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared Property Culture() As System.Globalization.CultureInfo
            Get
                Return _resCulture
            End Get
            Set
                _resCulture = value
            End Set
        End Property
    End Class
End Namespace
]]></arrayElement></arrayElements></property><property id="4" name="BinaryCode" state="cdata" dataType="System.String" isArray="true" description="Stores the binary representation of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="2"><arrayElement dataType="System.String"><![CDATA[SC_6ad45d3034474ff4ba9b8f9cdbd17de6.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
PwIDBEcAuiAAAAAABhhhEQYASACsMAAAAAADCKMEUABIAOAwAAAAAAYYYREGAEgAAAABAPgJAAAB
AAsWAAABAP8EAAABAP4JAAABAP4JAAABAP4JAAABAAoFAAABAJ4FAAABAJsTAAABAGYWAAABALsU
AAABAO4EAAABACgVAAACAAkCAAADAKwVAAAEAPgPAAAFAPAOAAABACgVAAACAAkCAAADAKwVAAAE
APgPAAAFAPAOAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJ
AAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAAB
APgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJ
AAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABABICAAACALsFAAAD
APgPAAAEAPAOAAABADUUAAACAHYRAAADABgUAAAEAPAOAAABAPgPAAABAAsWAAABACgVAAABACgV
AAABAOAOAAABALMEAAABALMECQBhEQEAEQBhEQYAGQBhEQoAKQBhERAAMQBhERAAOQBhERAAQQBh
ERAASQBhERAAUQBhERAAWQBhERUAYQBhERUAaQBhERAAcQBhERAAeQBhERAAgQBhERoAkQBhESAA
qQBhEQYAsQBhEQYAuQBhEQYA0QBhESYA6QBhERAAAQFhEQYACQFhEQYAEQFhES4AGQFhERAAwQFh
ERAAyQFhERAA0QFhERAA2QFhEQEAKQJhEQYAmQBhEQYAoQBhEQYADABhEQYAFABhEQYAHABhEQYA
JABhEQYADACjBFAAFACjBFAAHACjBFAAJACjBFAAwQBhEQYA2QBcBVUA2QBSFl0A8QBhEWMAMQFh
EQYA4QG/D4MA8QG3DIkAQQLGCY4ASQJXCpMAMQGOBRAAAQJhERAAMQE4A5gAOQFhEQYAOQFIFQEA
OQFQDwEAQQFhEQYAQQGrBRAAQQHADJ8AKQGICaUAUQK3DK4ASQGkEbMAOQFBD7cASQESBbsAOQEj
BRAAWQLvEL8AUQGrCsYAYQKqDLsAWQLdEMwAWQFXCrsA6QF5CQYAGQJQDtkAIQGUFAYAIQF/BIkA
6QHVAt4AaQIwDuQAcQK3DOoAEQIgFfEAgQIpEPcAYQG/D7cAaQGwAbcAiQK+Af0A6QGECQYAIQF9
BgYAkQJtFg4BWQFhERAAYQE/A7MAYQH2DRMBmQI+FbcAaQIQDhkBoQK3DB8BqQLxARAAWQHzBLsA
EQLAAgYAcQI+FbcAYQHRDSYBsQJxAxUAmQLLCgYAsQLLCgYAsQLmFSwBcQF3BRAAcQHxBTIBcQFg
CgEAkQJ1FkoBaQLTEE0BsQK3DG0BmQI1EXQBeQEyFXoBaQHUAbcAcQGpAbcAeQHTFbMAwQKDBgYA
SQGKE7sBgQFCBMIBiQHkCcIBiQGsCcIBsQFVE8gBLAA1EdsBNAAyFVAAPABKFlAAkQG3DNkAkQJ2
FPoBNADTFbMAkQHBEwACkQFhEQYAPACYCTwCMQExA0ECMQFuBbsAuQGYCbcAkQHADEcCsQFkE00C
RAA1EdsBTAAyFVAAVABKFlAAVACYCTwCTADTFbMASQJPAXUCSQLFBXoC4QFhEYEC2QIHFrMA2QKv
FLMA4QHADJAC4QGXDAEA4QJhERAA2QLqFQYA2QKsFAYAEQJhEQYAYQGpAbcA8QGcFLMA6QEaApsC
qQITEKMCIQJhEQYA6QKtEKkC6QLBFKkCwQCDEwACwQDMBLcAwQBXCrsA8QKUBLYCZADcFc0CbACY
CVAAbACiCeQCbABhEQYADgAcAA4DKQCrAB0GLgALAFYELgATAF8ELgAbAH4ELgAjAIcELgArALAE
LgAzALAELgA7AIcELgBDALYELgBLALAELgBTAM0ELgBbALAELgBjANMELgBrAP0ELgBzAAoFQACL
AFQFQACDAFkFQwB7AGIFQwCDAFkFSQCrAC4GYwB7AGIFYwCDAFkFaQCrAEIGgACLAFQFgwCTAFQF
gwCbAFQFgwB7AGIFiQCrAE8GoACLAFQFqQCDAH4EwACLAFQFwwCzAFQFwwBTALAEwwC7AFQFwwDD
AHsFwwDLAK0FyQCDAH4E4ACLAFQF4wBTALAE6QDTAGMG6QDbAHEG6QDjAJ4GAwFTALAECQHTAGMG
CQHbALUGCQHrANkGIwFTALAEKQHTAGMGKQHbAOIGowGDAFkFowGjALsFwwGDAFkFwwFbALAESQbz
AFQFgApTALAEwApTALAEQAuDAFkFQAuLAFQFYAuDAFkFYAuLAFQFgAuDAFkFgAuLAFQFoAuDAFkF
oAuLAFQFwAuLAFQF4AuLAFQFAAyLAFQFAAyDAFkFIAyLAFQFQAyLAFQFQAyDAFkFawDQAAMBOQE9
AUEBRQFYAX4BBQKWAq4CwQIEAAEABQAFAAYABwAHAAsACAANAAoAMQAMADIADgAzAAAAwhALBAAA
LQ0QBAAAqBAVBAAA+BEaBAAAAxAfBAAAOAYkBAAAeA4pBAAAFgotBAAAGBExBAAAAgY1BAAAzhM1
BAAA5RM1BAAAzhM1BAAAdQ0tBAAAiQwxBAAACQQpBAAAtAsxBAAANQQ6BAAA9QsxBAAAEQ1ABAAA
XwwxBAAAKAQ6BAAA4QsxBAAAlAMpBAAAHAsxBAAA5AQpBAAACAwxBAAAqgMpBAAAOQsxBAAAPQ0t
BAAAdAwxBAAA8gMpBAAAlgsxBAAAHQQ6BAAAzwsxBAAAgAMpBAAAAQsxBAAAhAUpBAAAIgwxBAAA
vQkpBAAANwwxBAAAxgMpBAAAXAsxBAAA9QkpBAAASwwxBAAA3AMpBAAAeQsxBAAA5RM1BAAAeA5G
BAAA+AlMBAAApwRRBAIABAADAAIABQAFAAIABgAHAAIABwAJAAIACQALAAIACgANAAEACwANAAIA
EgAPAAEAEwAPAAIAFAARAAEAFQARAAIAFgATAAEAFwATAAIAGAAVAAIAIAAXAAIAIQAZAAIAJQAb
AAEAJgAdAAEAJwAfAAEAKAAhAAEAKQAjAAEAKgAlAAEAKwAnAAEALAApAAEALQArAAEALgAtAAEA
LwAvAAEAMAAxAAEAMQAzAAEAMgA1AAEAMwA3AAEANAA5AAEANQA7AAEANgA9AAEANwA/AAEAOABB
AAEAOQBDAAEAOgBFAAEAOwBHAAEAPABJAAEAPQBLAAEAPgBNAAEAPwBPAAEAQABRAAEAQQBTAAEA
QgBVAAEAQwBXAAEARABZAAEARQBbAAEARgBdAAEARwBfAAIASABhAAIAVQBjAAIAWQBlAAIAYQBn
ADQAOwBCAEkAzgHlAfIBUwJgAm0CswLGAtUC3AIEgAAAAQAAAAAAAAAAAAAAAABmAQAABAAAAAAA
AAAAAAAA6gL3AgAAAAAEAAAAAAAAAAAAAADqAskMAAAAAAoAAAAAAAAAAAAAAPMCGwMAAAAADgAA
AAAAAAAAAAAA/AJSFQAAAAABAAAAAAAAAAAAAAAFA4oBAAAAAAEAAAAAAAAAAAAAAAUDgBEAAAAA
BAAAAAAAAAAAAAAA8wLSEQAAAAAOAAAAAAAAAAAAAAD8Ah0PAAAAAA4AAAAAAAAAAAAAAPwCixUA
AAAADgAAAAAAAAAAAAAA/AL6DgAAAAAEAAAAAAAAAAAAAADqAp8MAAAAAAAAAAABAAAA4hIAAA0A
BAAOAAQAAAAQABwAPQIAABAAvQA9AgAAAAC/AD0COwG8AjsB3wIAAAAAAElEVFNDb21wb25lbnRN
ZXRhRGF0YTEwMABJRFRTRXh0ZXJuYWxNZXRhZGF0YUNvbHVtbjEwMABJRFRTSW5wdXRDb2x1bW4x
MDAASURUU0V4dGVybmFsTWV0YWRhdGFDb2x1bW5Db2xsZWN0aW9uMTAwAElEVFNJbnB1dENvbHVt
bkNvbGxlY3Rpb24xMDAASURUU1J1bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbjEwMABJRFRTSW5w
dXRDb2xsZWN0aW9uMTAwAElEVFNSdW50aW1lQ29ubmVjdGlvbjEwMABJRFRTQ29ubmVjdGlvbk1h
bmFnZXIxMDAASURUU0J1ZmZlck1hbmFnZXIxMDAASURUU0lucHV0MTAwAENvbnRleHRWYWx1ZWAx
AFRocmVhZFNhZmVPYmplY3RQcm92aWRlcmAxAExpc3RgMQBUb0ludDMyAEtleVZhbHVlUGFpcmAy
AFNDXzZhZDQ1ZDMwMzQ0NzRmZjRiYTliOGY5Y2RiZDE3ZGU2AENvenlSb2MuU1NJU1BsdXMuMjAx
NwA8TW9kdWxlPgBnZXRfSUQAZ2V0X0xpbmVhZ2VJRABGaW5kQ29sdW1uQnlMaW5lYWdlSUQAZ2V0
X0V4dGVybmFsTWV0YWRhdGFDb2x1bW5JRABzZXRfQ29ubmVjdGlvbk1hbmFnZXJJRABPYmplY3RJ
RABJbnB1dElEAEdldE91dHB1dElEAENvenlSb2MuU3FsU2VydmVyLlNTSVMAVABEaXNwb3NlX19J
bnN0YW5jZV9fAENyZWF0ZV9fSW5zdGFuY2VfXwBHZXRBdHRyaWJ1dGVMYWJlbF8AR2V0SW5wdXRD
b2x1bW5fAEZpcmVFcnJvcl8AR2V0QXR0cmlidXRlc18AT3V0cHV0RGV0YWlsc18AQWRkT3V0cHV0
Um93XwBSZWluaXRpYWxpemVNZXRhRGF0YQBnZXRfQ29tcG9uZW50TWV0YURhdGEAUHJvamVjdERh
dGEAbXNjb3JsaWIAU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMATWljcm9zb2Z0LlZpc3VhbEJh
c2ljAGdldF9JZABzZXRfSWQAZ2V0X0lzQXR0YWNoZWQASW5wdXRzRmluaXNoZWQATWFya091dHB1
dHNGaW5pc2hlZABzZXRfSXNVc2VkAHNldF91c2VyaWRGb3JtYXR0ZWQAc2V0X29iamVjdGlkRm9y
bWF0dGVkAHNldF9vYmplY3R0eXBlY29kZUZvcm1hdHRlZABzZXRfb2xkVmFsdWVGb3JtYXR0ZWQA
c2V0X25ld1ZhbHVlRm9ybWF0dGVkAHNldF9vcGVyYXRpb25Gb3JtYXR0ZWQAc2V0X2FjdGlvbkZv
cm1hdHRlZABzZXRfdXNlcmlkAHNldF9vYmplY3RpZABzZXRfYXVkaXRpZABHdWlkAGdldF9BdWRp
dFJlY29yZABDb3p5Um9jLkR5bmFtaWNzLkNybTIwMTEuT3JnYW5pemF0aW9uU2VydmljZQBHZXRT
ZXJ2aWNlAG1fc2VydmljZQBDcmVhdGVJbnN0YW5jZQBnZXRfR2V0SW5zdGFuY2UAaW5zdGFuY2UA
RW50aXR5UmVmZXJlbmNlAEdldEhhc2hDb2RlAFhtbE5vZGUAc2V0X29iamVjdHR5cGVjb2RlAGdl
dF9NZXNzYWdlAGVyck1lc3NhZ2UAbWVzc2FnZQBnZXRfUGFnaW5nQ29va2llAHNldF9QYWdpbmdD
b29raWUASURpc3Bvc2FibGUASGFzaHRhYmxlAFJ1bnRpbWVUeXBlSGFuZGxlAEdldFR5cGVGcm9t
SGFuZGxlAGdldF9OYW1lAHNldF9OYW1lAHNldF9maWVsZE5hbWUAc2V0X0xvZ2ljYWxOYW1lAGV4
dGVybmFsTmFtZQBzZXRfUmVxdWVzdE5hbWUASW5wdXROYW1lAFRvRGF0ZVRpbWUATWljcm9zb2Z0
LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUAc2V0X0RhdGFUeXBlAGdldF9Dcm1Db25uZWN0aW9uVHlw
ZQBHZXRUeXBlAGdldF9DdWx0dXJlAHNldF9DdWx0dXJlAF9yZXNDdWx0dXJlAEFwcGxpY2F0aW9u
QmFzZQBBcHBsaWNhdGlvblNldHRpbmdzQmFzZQBPcmdhbml6YXRpb25SZXNwb25zZQBDbG9zZQBE
aXNwb3NlAFZhbGlkYXRlAEVkaXRvckJyb3dzYWJsZVN0YXRlAEd1aWRBdHRyaWJ1dGUASGVscEtl
eXdvcmRBdHRyaWJ1dGUAR2VuZXJhdGVkQ29kZUF0dHJpYnV0ZQBEZWJ1Z2dlck5vblVzZXJDb2Rl
QXR0cmlidXRlAERlYnVnZ2FibGVBdHRyaWJ1dGUARWRpdG9yQnJvd3NhYmxlQXR0cmlidXRlAENv
bVZpc2libGVBdHRyaWJ1dGUAQXNzZW1ibHlUaXRsZUF0dHJpYnV0ZQBTdGFuZGFyZE1vZHVsZUF0
dHJpYnV0ZQBIaWRlTW9kdWxlTmFtZUF0dHJpYnV0ZQBEZWZhdWx0VmFsdWVBdHRyaWJ1dGUAQXNz
ZW1ibHlUcmFkZW1hcmtBdHRyaWJ1dGUAVGFyZ2V0RnJhbWV3b3JrQXR0cmlidXRlAERlYnVnZ2Vy
SGlkZGVuQXR0cmlidXRlAEFzc2VtYmx5RmlsZVZlcnNpb25BdHRyaWJ1dGUATXlHcm91cENvbGxl
Y3Rpb25BdHRyaWJ1dGUAQ29ubmVjdGlvbkF0dHJpYnV0ZQBBc3NlbWJseURlc2NyaXB0aW9uQXR0
cmlidXRlAFZhbGlkYXRlUHJvcGVydGllc0F0dHJpYnV0ZQBTb3J0UHJvcGVydGllc0F0dHJpYnV0
ZQBDb2x1bW5NYXBwaW5nc0F0dHJpYnV0ZQBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRl
AEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBBc3NlbWJseUNvcHlyaWdodEF0dHJpYnV0ZQBDTFND
b21wbGlhbnRBdHRyaWJ1dGUAU1NJU1NjcmlwdENvbXBvbmVudEVudHJ5UG9pbnRBdHRyaWJ1dGUA
QXNzZW1ibHlDb21wYW55QXR0cmlidXRlAENhdGVnb3J5QXR0cmlidXRlAFJ1bnRpbWVDb21wYXRp
YmlsaXR5QXR0cmlidXRlAFByZUV4ZWN1dGUAUG9zdEV4ZWN1dGUAbV9WYWx1ZQBnZXRfVmFsdWUA
c2V0X1ZhbHVlAGdldF9PbGRWYWx1ZQBzZXRfb2xkVmFsdWUAR2V0T2JqZWN0VmFsdWUAT3B0aW9u
U2V0VmFsdWUAZ2V0X05ld1ZhbHVlAHNldF9uZXdWYWx1ZQB2YWx1ZQBnZXRfQmF0Y2hTaXplAHNl
dF9CYXRjaFNpemUAbV9iYXRjaFNpemUAU3lzdGVtLlRocmVhZGluZwBTeXN0ZW0uUnVudGltZS5W
ZXJzaW9uaW5nAFRvU3RyaW5nAHNldF9MZW5ndGgATWljcm9zb2Z0LlZpc3VhbEJhc2ljLk15U2Vy
dmljZXMuSW50ZXJuYWwAU3lzdGVtLkNvbXBvbmVudE1vZGVsAGdldF9EZXRhaWwAQXR0cmlidXRl
QXVkaXREZXRhaWwAUmVtb3ZlQWxsAFNDXzZhZDQ1ZDMwMzQ0NzRmZjRiYTliOGY5Y2RiZDE3ZGU2
LmRsbABzZXRfdXNlcmlkRm9ybWF0dGVkX0lzTnVsbABzZXRfb2JqZWN0aWRGb3JtYXR0ZWRfSXNO
dWxsAHNldF9vYmplY3R0eXBlY29kZUZvcm1hdHRlZF9Jc051bGwAc2V0X29sZFZhbHVlRm9ybWF0
dGVkX0lzTnVsbABzZXRfbmV3VmFsdWVGb3JtYXR0ZWRfSXNOdWxsAHNldF9vcGVyYXRpb25Gb3Jt
YXR0ZWRfSXNOdWxsAHNldF9hY3Rpb25Gb3JtYXR0ZWRfSXNOdWxsAHNldF91c2VyaWRfSXNOdWxs
AHNldF9vYmplY3RpZF9Jc051bGwAc2V0X2F1ZGl0aWRfSXNOdWxsAHNldF9vYmplY3R0eXBlY29k
ZV9Jc051bGwAc2V0X2ZpZWxkTmFtZV9Jc051bGwAc2V0X29sZFZhbHVlX0lzTnVsbABzZXRfbmV3
VmFsdWVfSXNOdWxsAHNldF9jcmVhdGVkb25fSXNOdWxsAHNldF9vcGVyYXRpb25fSXNOdWxsAHNl
dF9hY3Rpb25fSXNOdWxsAFNldE51bGwAU3lzdGVtLlhtbABnZXRfSW5uZXJYbWwAZ2V0X0l0ZW0A
c2V0X0l0ZW0AU3lzdGVtAENvenlSb2MuRHluYW1pY3MuQ3JtAFN5c3RlbS5Db21wb25lbnRNb2Rl
bC5EZXNpZ24AU2NyaXB0TWFpbgBzZXRfY3JlYXRlZG9uAGdldF9BcHBsaWNhdGlvbgBNeUFwcGxp
Y2F0aW9uAHNldF9vcGVyYXRpb24AU3lzdGVtLkNvbmZpZ3VyYXRpb24AU3lzdGVtLkdsb2JhbGl6
YXRpb24Ac2V0X2FjdGlvbgBTeXN0ZW0uUmVmbGVjdGlvbgBBdHRyaWJ1dGVDb2xsZWN0aW9uAEZv
cm1hdHRlZFZhbHVlQ29sbGVjdGlvbgBBdWRpdERldGFpbENvbGxlY3Rpb24AZ2V0X0V4dGVybmFs
TWV0YWRhdGFDb2x1bW5Db2xsZWN0aW9uAGdldF9JbnB1dENvbHVtbkNvbGxlY3Rpb24AZ2V0X1J1
bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbgBnZXRfSW5wdXRDb2xsZWN0aW9uAElDb25uZWN0aW9u
AEFjcXVpcmVDb25uZWN0aW9uAGdldF9Dcm1Db25uZWN0aW9uAHNldF9Dcm1Db25uZWN0aW9uAG1f
Y3JtQ29ubmVjdGlvbgBtX2Nvbm5lY3Rpb24ASW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbgBTb2Fw
RXhjZXB0aW9uAEN1bHR1cmVJbmZvAFBhZ2luZ0luZm8AT3V0cHV0TmFtZU1hcABPdXRwdXRNYXAA
TWljcm9zb2Z0LlNxbFNlcnZlci5EVFNSdW50aW1lV3JhcABNaWNyb3NvZnQuU3FsU2VydmVyLkRU
U1BpcGVsaW5lV3JhcABnZXRfUGFnZU51bWJlcgBzZXRfUGFnZU51bWJlcgBtX0FwcE9iamVjdFBy
b3ZpZGVyAG1fVXNlck9iamVjdFByb3ZpZGVyAG1fQ29tcHV0ZXJPYmplY3RQcm92aWRlcgBtX015
V2ViU2VydmljZXNPYmplY3RQcm92aWRlcgBnZXRfQnVmZmVyAFBpcGVsaW5lQnVmZmVyAFNjcmlw
dEJ1ZmZlcgBJbnB1dEJ1ZmZlcgBPdXRwdXRCdWZmZXIAZ2V0X1Jlc291cmNlTWFuYWdlcgBnZXRf
Q29ubmVjdGlvbk1hbmFnZXIAZ2V0X0J1ZmZlck1hbmFnZXIAU3lzdGVtLkNvZGVEb20uQ29tcGls
ZXIATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUnVudGltZS5XcmFwcGVyAE1pY3Jvc29mdC5TcWxT
ZXJ2ZXIuRHRzLlBpcGVsaW5lLldyYXBwZXIAZ2V0X1VzZXIARW50ZXIAZ2V0X0NvbXB1dGVyAE15
Q29tcHV0ZXIAX3Jlc01ncgBGaXJlRXJyb3IAQ2xlYXJQcm9qZWN0RXJyb3IAU2V0UHJvamVjdEVy
cm9yAGdldF9JbnNlcnRUZXJtaW5hdG9yAHNldF9JbnNlcnRUZXJtaW5hdG9yAElFbnVtZXJhdG9y
AEdldEVudW1lcmF0b3IAbV9pbnNlcnRUZXJtaW50YXRvcgBBY3RpdmF0b3IALmN0b3IALmNjdG9y
AE1vbml0b3IAT3V0cHV0SURzAENvenlSb2MuRHluYW1pY3MAU3lzdGVtLkRpYWdub3N0aWNzAGdl
dF9Nb3JlUmVjb3JkcwBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuRGV2aWNlcwBTeXN0ZW0uV2ViLlNl
cnZpY2VzAGdldF9XZWJTZXJ2aWNlcwBNeVdlYlNlcnZpY2VzAE1pY3Jvc29mdC5WaXN1YWxCYXNp
Yy5BcHBsaWNhdGlvblNlcnZpY2VzAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcwBNaWNy
b3NvZnQuVmlzdWFsQmFzaWMuQ29tcGlsZXJTZXJ2aWNlcwBTeXN0ZW0uUnVudGltZS5Db21waWxl
clNlcnZpY2VzAFN5c3RlbS5SZXNvdXJjZXMAU0NfNmFkNDVkMzAzNDQ3NGZmNGJhOWI4ZjljZGJk
MTdkZTYuTXkuUmVzb3VyY2VzAE15UmVzb3VyY2VzAFNDXzZhZDQ1ZDMwMzQ0NzRmZjRiYTliOGY5
Y2RiZDE3ZGU2LlJlc291cmNlcy5yZXNvdXJjZXMARGVidWdnaW5nTW9kZXMAVmFyaWFibGVzAENv
enlSb2MuU3FsU2VydmVyLlNTSVMuQXR0cmlidXRlcwBnZXRfQXR0cmlidXRlcwBnZXRfRm9ybWF0
dGVkVmFsdWVzAE15U2V0dGluZ3MARXF1YWxzAGdldF9BdWRpdERldGFpbHMAZGV0YWlscwBTeXN0
ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scwBDb250YWlucwBnZXRfU3RhdGljSW5wdXRDb2x1bW5z
AGdldF9TdGF0aWNPdXRwdXRDb2x1bW5zAFN5c3RlbS5Db2xsZWN0aW9ucwBDb25uZWN0aW9ucwBC
dWZmZXJzAFJ1bnRpbWVIZWxwZXJzAEZpbmlzaE91dHB1dHMAU2NyaXB0QnVmZmVyUGx1cwBTY3Jp
cHRDb21wb25lbnRQbHVzAENyZWF0ZU5ld091dHB1dFJvd3MAQ29uY2F0AG1fU3luY09iamVjdABN
eVByb2plY3QAQ29ubmVjdABnZXRfRW5kT2ZSb3dzZXQAU2V0RW5kT2ZSb3dzZXQAYXVkaXQARXhp
dABPcmdhbml6YXRpb25TZXJ2aWNlQ2xpZW50AFBpcGVsaW5lQ29tcG9uZW50AFVzZXJDb21wb25l
bnQAUGFyZW50Q29tcG9uZW50AFNjcmlwdENvbXBvbmVudABnZXRfSG9zdENvbXBvbmVudABnZXRf
Q3VycmVudABnZXRfQ291bnQAc2V0X0NvdW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuVHhTY3JpcHQA
Q29udmVydABPcmdhbml6YXRpb25SZXF1ZXN0AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuUGlwZWxpbmVI
b3N0AElzSW5wdXQASW5wdXRfUHJvY2Vzc0lucHV0AFByaW1lT3V0cHV0AE1vdmVOZXh0AG1fQ29u
dGV4dABOZXcAQWRkUm93AElucHV0X1Byb2Nlc3NJbnB1dFJvdwBOZXh0Um93AG1faWRJZHgAbV9l
bnRpdHlJZHgAU0NfNmFkNDVkMzAzNDQ3NGZmNGJhOWI4ZjljZGJkMTdkZTYuTXkAZ2V0X0tleQBn
ZXRfQXNzZW1ibHkARW50aXR5AGVudGl0eQBJc051bGxPckVtcHR5AAAAMU0AeQAuAFIAZQBzAG8A
dQByAGMAZQBzAC4ATQB5AFIAZQBzAG8AdQByAGMAZQBzAAA3UgBlAHQAcgBpAGUAdgBlAFIAZQBj
AG8AcgBkAEMAaABhAG4AZwBlAEgAaQBzAHQAbwByAHkAAA1UAGEAcgBnAGUAdAAAFVAAYQBnAGkA
bgBnAEkAbgBmAG8AACtBAHUAZABpAHQARABlAHQAYQBpAGwAQwBvAGwAbABlAGMAdABpAG8AbgAA
DUUAbgB0AGkAdAB5AAAFSQBkAAA/UwBlAGwAZQBjAHQAIABEAHkAbgBhAG0AaQBjAHMAIABDAFIA
TQAgAEMAbwBuAG4AZQBjAHQAaQBvAG4ALgAAJU0AYQBwACAAaQBuAHAAdQB0ACAAYwBvAGwAdQBt
AG4AcwAuAAAbQwByAG0AQwBvAG4AbgBlAGMAdABpAG8AbgAAFU4AbwAgAGkAbgBwAHUAdABzAC4A
ABlEAFkATgBBAE0ASQBDAFMALQBDAFIATQABO0QAeQBuAGEAbQBpAGMAcwAgAEMAUgBNACAAQQB1
AGQAaQB0ACAATABvAGcAcwAgAFEAdQBlAHIAeQAAL0kAbgBwAHUAdAAgAGMAbwBsAHUAbQBuACAA
bgBvAHQAIABmAG8AdQBuAGQALgAAE0YAbwByAG0AYQB0AHQAZQBkAAANYQBjAHQAaQBvAG4AAB9h
AGMAdABpAG8AbgBGAG8AcgBtAGEAdAB0AGUAZAAAD2EAdQBkAGkAdABpAGQAABNjAHIAZQBhAHQA
ZQBkAG8AbgAAEW8AYgBqAGUAYwB0AGkAZAAAI28AYgBqAGUAYwB0AGkAZABGAG8AcgBtAGEAdAB0
AGUAZAAAHW8AYgBqAGUAYwB0AHQAeQBwAGUAYwBvAGQAZQAAL28AYgBqAGUAYwB0AHQAeQBwAGUA
YwBvAGQAZQBGAG8AcgBtAGEAdAB0AGUAZAAAE28AcABlAHIAYQB0AGkAbwBuAAAlbwBwAGUAcgBh
AHQAaQBvAG4ARgBvAHIAbQBhAHQAdABlAGQAAA11AHMAZQByAGkAZAAAH3UAcwBlAHIAaQBkAEYA
bwByAG0AYQB0AHQAZQBkAACAm0kAcwBOAHUAbABsACAAcAByAG8AcABlAHIAdAB5ACAAYwBhAG4A
bgBvAHQAIABiAGUAIABzAGUAdAAgAHQAbwAgAEYAYQBsAHMAZQAuACAAQQBzAHMAaQBnAG4AIABh
ACAAdgBhAGwAdQBlACAAdABvACAAdABoAGUAIABjAG8AbAB1AG0AbgAgAGkAbgBzAHQAZQBhAGQA
LgAAE2YAaQBlAGwAZABOAGEAbQBlAAARbwBsAGQAVgBhAGwAdQBlAAAjbwBsAGQAVgBhAGwAdQBl
AEYAbwByAG0AYQB0AHQAZQBkAAARbgBlAHcAVgBhAGwAdQBlAAAjbgBlAHcAVgBhAGwAdQBlAEYA
bwByAG0AYQB0AHQAZQBkAAALSQBuAHAAdQB0AAANTwB1AHQAcAB1AHQAAAAAwOx97ADO40+T4yqP
ymnRgQAEIAEBCAMgAAEFIAEBEREEIAEBDgQgAQECBSACAQ4OBSABARFFByAEAQ4ODg4FIAEBHQ4G
FRI4ARIMBhUSOAESCAYVEjgBEmUGFRI4ARI0BCAAEwAHAAESbRGBGQUgABKBHQcgAgEOEoEdFwcH
EoCZEoCdEoChEoClEoCdEoCpEoCtBSAAEoD5BCABHAgEAAEcHAQAAQ4cBiABARGBAQUgAgEOHAgg
ARKBKRKAoQQgARwOAyAAAgMgAAgDIAAOBgABARKArQUgABKBMQMAAAEIBwISgLESgLUEIAEcHAUg
ABKBNQUgABKBOQYgARKAsRwFIAASgUEFIAASgUUFIAIICAgKBwQCAhKAsRKArQQAAQIOBSAAEoFN
BSAAEoFRBiABEoFVHAUgABKBWQUgABKAuQYgAQERgV0DBwEOAwcBCAMHAQIEBwEdDgIGDgogBgEI
Dg4OCBACFAcGEoC1EoC1EoCxEoC5EoC9EoC1BiABEoC5HAUgABKAvQMgABw8BwsdEoDBCBKAwRKA
xRKAyRKAyRKAyRURgNEBFRGA1QIOHBURgNUCDhwVEYDRARURgNUCDhwVEYDVAg4cBiAAHRKAwQUg
ABKA2QUgABKBZQwVEoDNARURgNUCDhwJIAAVEYDRARMADBURgNEBFRGA1QIOHAcVEYDVAg4cBQAC
Dg4OBCABAhw2BwoSgMkSgMkVEYDRARURgNUCDhwVEYDVAg4cHBwSgJkSgN0VEYDRARURgNUCDg4V
EYDVAg4OBCAAEwEFIAARgQEFIAIBHBwFIAASgWkMFRKAzQEVEYDVAg4ODBURgNEBFRGA1QIODgcV
EYDVAg4OBAABCBwGAAERgQUcDiAFARKA9QgCEoD5EoD9BSACAQgcBAcCCAgHAAIIEoD9DgUgABKB
DQQAAQEcBAcBHgACHgAFEAEAHgAECgEeAAQHARMABhUSOAETAAcGFRJxARMABhUScQETAAITAAQK
ARMABSABARMACLd6XFYZNOCJCLA/X38R1Qo6CImEXc2AgMyRCBbPSQu4DDTqEkYAbwByAG0AYQB0
AHQAZQBkAAcGFRI4ARIMBwYVEjgBEggHBhUSOAESZQcGFRI4ARI0AwYSeQMGEn0CBggCBgIEBhKA
kQQGEoCVAwYSKAMGEiwDBhIgBAYSgPUDBhIwAgYcBAAAEgwEAAASCAQAABJlBAAAEjQEAAASeQQA
ABJ9BQABARJ9BSABARIcBSABAhAOBCAAHQ4GIAESgLUOBiABARKApQggARKAyRKA2QYgAQESgMkE
IAEOCAYgAQERgQULIAQBCA4SgPkSgP0NIAQBCB0IHRKA+RKA/QYgAQESgPUEAAASMAQgABJtBxAB
AR4AHgAHMAEBARAeAAQIABIMBAgAEggECAASZQQIABI0BAgAEnkECAASfQMoAA4DKAAIAygAAgQo
AB0OBSgAEYEBBSgAEYEFBSgAEoENBAgAEjAEKAATAAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5vbkV4
Y2VwdGlvblRocm93cwEIAQACAAAAAAAoAQAjU0NfNmFkNDVkMzAzNDQ3NGZmNGJhOWI4ZjljZGJk
MTdkZTYAAAUBAAAAABYBABFDb3B5cmlnaHQgQCAgMjAxNgAABQEAAQAAKQEAJDViMzk1MTUyLWJm
M2EtNGY4ZC1iN2M5LWFhMzQwODVkZTgxZgAADAEABzEuMC4wLjAAAEkBABouTkVURnJhbWV3b3Jr
LFZlcnNpb249djQuNQEAVA4URnJhbWV3b3JrRGlzcGxheU5hbWUSLk5FVCBGcmFtZXdvcmsgNC41
BAEAAAAIAQABAAAAAAAYAQAKTXlUZW1wbGF0ZQgxMS4wLjAuMAAAMQEAAwAAAA1Dcm1Db25uZWN0
aW9uCUJhdGNoU2l6ZRBJbnNlcnRUZXJtaW5hdG9yAAANAQAIVmFsaWRhdGUAAGEBADRTeXN0ZW0u
V2ViLlNlcnZpY2VzLlByb3RvY29scy5Tb2FwSHR0cENsaWVudFByb3RvY29sEkNyZWF0ZV9fSW5z
dGFuY2VfXxNEaXNwb3NlX19JbnN0YW5jZV9fAAAAEAEAC015LkNvbXB1dGVyAAATAQAOTXkuQXBw
bGljYXRpb24AAAwBAAdNeS5Vc2VyAAATAQAOTXkuV2ViU2VydmljZXMAAA0BAAhTZXR0aW5ncwAA
LAEAJ1NlbGVjdCBEeW5hbWljcyBDUk0gQ29ubmVjdGlvbiBNYW5hZ2VyLgAAFgEAEUNybUNvbm5l
Y3Rpb25UeXBlAAAjAQAeU3BlY2lmaWVzIHJldHJpZXZlIGJhdGNoIHNpemUuAAAIAQBkAAAAAABh
AQBcSW5kaWNhdGVzIHdoZXRoZXIgYW4gZW1wdHkgbGluZSBzaG91bGQgYmUgaW5zZXJ0ZWQgYXQg
dGhlIGVuZCBvZiBlYWNoIHNldCBvZiBkZXRhaWwgcmVjb3Jkcy4AALQAAADOyu++AQAAAJEAAABs
U3lzdGVtLlJlc291cmNlcy5SZXNvdXJjZVJlYWRlciwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAu
MCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5I1N5c3Rl
bS5SZXNvdXJjZXMuUnVudGltZVJlc291cmNlU2V0AgAAAAAAAAAAAAAAUEFEUEFEULQAAAD0aAAA
AAAAAAAAAAAOaQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGkAAAAAAAAAAAAAAABfQ29yRGxs
TWFpbgBtc2NvcmVlLmRsbAAAAAAA/yUAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAQAAAAGAAAgAAAAAAAAAAAAAAAAAAA
AQABAAAAMAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAASAAAAFiAAADsAwAAAAAAAAAAAADsAzQAAABW
AFMAXwBWAEUAUgBTAEkATwBOAF8ASQBOAEYATwAAAAAAvQTv/gAAAQAAAAEAAAAAAAAAAQAAAAAA
PwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAEQAAAABAFYAYQByAEYAaQBsAGUASQBuAGYAbwAA
AAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkAbwBuAAAAAAAAALAETAMAAAEAUwB0AHIAaQBuAGcA
RgBpAGwAZQBJAG4AZgBvAAAAKAMAAAEAMAAwADAAMAAwADQAYgAwAAAAGgABAAEAQwBvAG0AbQBl
AG4AdABzAAAAAAAAACIAAQABAEMAbwBtAHAAYQBuAHkATgBhAG0AZQAAAAAAAAAAAHAAJAABAEYA
aQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAABTAEMAXwA2AGEAZAA0ADUAZAAzADAAMwA0
ADQANwA0AGYAZgA0AGIAYQA5AGIAOABmADkAYwBkAGIAZAAxADcAZABlADYAAAAwAAgAAQBGAGkA
bABlAFYAZQByAHMAaQBvAG4AAAAAADEALgAwAC4AMAAuADAAAABwACgAAQBJAG4AdABlAHIAbgBh
AGwATgBhAG0AZQAAAFMAQwBfADYAYQBkADQANQBkADMAMAAzADQANAA3ADQAZgBmADQAYgBhADkA
YgA4AGYAOQBjAGQAYgBkADEANwBkAGUANgAuAGQAbABsAAAASAASAAEATABlAGcAYQBsAEMAbwBw
AHkAcgBpAGcAaAB0AAAAQwBvAHAAeQByAGkAZwBoAHQAIABAACAAIAAyADAAMQA2AAAAKgABAAEA
TABlAGcAYQBsAFQAcgBhAGQAZQBtAGEAcgBrAHMAAAAAAAAAAAB4ACgAAQBPAHIAaQBnAGkAbgBh
AGwARgBpAGwAZQBuAGEAbQBlAAAAUwBDAF8ANgBhAGQANAA1AGQAMwAwADMANAA0ADcANABmAGYA
NABiAGEAOQBiADgAZgA5AGMAZABiAGQAMQA3AGQAZQA2AC4AZABsAGwAAABoACQAAQBQAHIAbwBk
AHUAYwB0AE4AYQBtAGUAAAAAAFMAQwBfADYAYQBkADQANQBkADMAMAAzADQANAA3ADQAZgBmADQA
YgBhADkAYgA4AGYAOQBjAGQAYgBkADEANwBkAGUANgAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBl
AHIAcwBpAG8AbgAAADEALgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUA
cgBzAGkAbwBuAAAAMQAuADAALgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABgAAAMAAAAIDkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAA]]></arrayElement></arrayElements></property><property id="5" name="VSTAProjectName" dataType="System.String" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE">SC_6ad45d3034474ff4ba9b8f9cdbd17de6</property><property id="6" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property><property id="12" name="UserComponentTypeName" dataType="System.String">CozyRoc.ScriptComponentHostPlus</property></properties><connections><connection id="14" name="CrmConnection" connectionManagerID="{37C19EAD-B835-42AA-B214-3AC085DDCAFE}" /></connections><inputs><input id="15" name="Input" hasSideEffects="true"><externalMetadataColumns isUsed="True"><externalMetadataColumn id="16" name="Entity" dataType="wstr" length="100" /><externalMetadataColumn id="17" name="Id" dataType="guid" /></externalMetadataColumns></input></inputs><outputs><output id="18" name="Output" hasSideEffects="true"><outputColumns><outputColumn id="19" name="action" lineageId="19" dataType="i4" /><outputColumn id="20" name="actionFormatted" lineageId="20" length="50" dataType="wstr" /><outputColumn id="21" name="auditid" lineageId="21" dataType="guid" /><outputColumn id="22" name="createdon" lineageId="22" dataType="dbTimeStamp" /><outputColumn id="23" name="objectid" lineageId="23" dataType="guid" /><outputColumn id="24" name="objectidFormatted" lineageId="24" length="160" dataType="wstr" /><outputColumn id="25" name="objecttypecode" lineageId="25" length="50" dataType="wstr" /><outputColumn id="26" name="objecttypecodeFormatted" lineageId="26" length="50" dataType="wstr" /><outputColumn id="27" name="operation" lineageId="27" dataType="i4" /><outputColumn id="28" name="operationFormatted" lineageId="28" length="50" dataType="wstr" /><outputColumn id="29" name="userid" lineageId="29" dataType="guid" /><outputColumn id="30" name="useridFormatted" lineageId="30" length="100" dataType="wstr" /><outputColumn id="31" name="fieldName" lineageId="31" length="50" dataType="wstr" /><outputColumn id="32" name="oldValue" lineageId="32" length="1000" dataType="wstr" /><outputColumn id="33" name="oldValueFormatted" lineageId="33" length="1000" dataType="wstr" /><outputColumn id="34" name="newValue" lineageId="34" length="1000" dataType="wstr" /><outputColumn id="35" name="newValueFormatted" lineageId="35" length="1000" dataType="wstr" /></outputColumns><externalMetadataColumns /></output></outputs></component>