<component id="43" name="Dynamics CRM Audit Logs Query" componentClassID="{2E42D45B-F83C-400F-8D77-61DDE6A7DF29}" description="Executes a custom script." localeId="1033" usesDispositions="false" validateExternalMetadata="True" version="4" pipelineVersion="0" contactInfo="Executes a custom script.;Microsoft Corporation;Microsoft SqlServer v9; © 2004 Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;0">
<properties>
<property id="47" name="SourceCode" dataType="System.String" state="cdata" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None"><arrayElements arrayElementCount="18"><arrayElement dataType="System.String"><![CDATA[\my project\settings.designer.vb]]></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\assemblyinfo.vb]]></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("ScriptComponent_a2ffa1368c5a4ba8afa29fe5da355496.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_a2ffa1368c5a4ba8afa29fe5da355496.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 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("13943255-8ee1-41cb-870e-a9b21b909040")> 

' 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[\my project\settings.settings]]></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[\bufferwrapper.vb]]></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)
        MyBase.New(Component, ObjectID, IsInput, Buffer)
    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)
        MyBase.New(Component, ObjectID, IsInput, Buffer)
    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[\scriptcomponent_a2ffa1368c5a4ba8afa29fe5da355496.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!-- This section defines project-level properties.

       Configuration - Specifies whether the default configuration is Release or Debug.
       Platform - Specifies what CPU the output of this project can run on.
       OutputType - Must be "Library" for VSTA.
       NoStandardLibraries - Set to "false" for VSTA.
       RootNamespace - In C#, this specifies the namespace given to new files.
                       In Visual Basic, all objects are wrapped in this namespace at runtime.
       AssemblyName - Name of the output assembly.
  -->
  <PropertyGroup>
    <ProjectTypeGuids>{A860303F-1F3F-4691-B57E-529FC101A107};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <OutputType>Library</OutputType>
    <RootNamespace>ScriptComponent_a2ffa1368c5a4ba8afa29fe5da355496.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_a2ffa1368c5a4ba8afa29fe5da355496.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{765D0055-AD45-4B55-AF06-8AB880A67535}</ProjectGuid>
  </PropertyGroup>
  <!-- This section defines properties that are set when the "Debug" configuration is
       selected.

       DebugSymbols - If true, create symbols (.pdb). If false, do not create symbols.
       Optimize - If true, optimize the build output. If false, do not optimize.
       OutputPath - Output path of the project relative to the project file.
       EnableUnmanagedDebugging - If true, starting the debugger will attach both managed and unmanaged debuggers.
       DefineConstants - Constants defined for the preprocessor.
       Warning Level - Warning level for the compiler.
  -->
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DefineConstants>
    </DefineConstants>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <DebugSymbols>true</DebugSymbols>
    <Optimize>false</Optimize>
    <OutputPath>bin\</OutputPath>
    <RegisterForComInterop>false</RegisterForComInterop>
    <RemoveIntegerChecks>false</RemoveIntegerChecks>
    <NoWarn>42016,42017,42018,42019,42032</NoWarn>
  </PropertyGroup>
  <!-- This section defines properties that are set when the "Release" configuration is
       selected.

       DebugSymbols - If true, create symbols (.pdb). If false, do not create symbols.
       Optimize - If true, optimize the build output. If false, do not optimize.
       OutputPath - Output path of the project relative to the project file.
       EnableUnmanagedDebugging - If true, starting the debugger will attach both managed and unmanaged debuggers.
       DefineConstants - Constants defined for the preprocessor.
       Warning Level - Warning level for the compiler.
  -->
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DefineConstants>
    </DefineConstants>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>bin\</OutputPath>
    <RegisterForComInterop>false</RegisterForComInterop>
    <RemoveIntegerChecks>false</RemoveIntegerChecks>
    <NoWarn>42016,42017,42018,42019,42032</NoWarn>
  </PropertyGroup>
  <!-- This section enables pre- and post-build steps. However,
       it is recommended that MSBuild tasks be used instead of these properties.
  -->
  <PropertyGroup>
    <PreBuildEvent>
    </PreBuildEvent>
    <PostBuildEvent>
    </PostBuildEvent>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="CozyRoc.Dynamics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL" />
    <Reference Include="CozyRoc.SSISPlus.2008, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL" />
    <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=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
  </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>
  <!-- This section defines the user source files that are part of the
       project.

       Compile - Specifies a source file to compile.
       EmbeddedResource - Specifies a .resx file for embedded resources.
       None - Specifies a file that is not to be passed to the compiler (for instance,
              a text file or XML file).
       AppDesigner - Specifies the directory where the application properties files can
                     be found.
  -->
  <ItemGroup>
    <AppDesigner Include="My Project\" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
    <Compile Include="main.vb" />
    <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>
    <!-- Include the default configuration information and metadata files for the add-in.
         These files are copied to the build output directory when the project is
         built, and the path to the configuration file is passed to add-in on the command
         line when debugging.
    -->
  </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="{A860303F-1F3F-4691-B57E-529FC101A107}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{C1B21C64-9E6F-4923-A89D-9F958503C1CE}" ApplicationType="usd" Language="vb" TemplatesPath="" />
        <Host Name="SSIS_ScriptComponent" />
        <ProjectClient>
          <HostIdentifier>SSIS_ScriptComponent</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\resources.designer.vb]]></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><arrayElement dataType="System.String"><![CDATA[\componentwrapper.vb]]></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 Buffer As PipelineBuffer)

        If InputID = MyBase.ComponentMetaData.InputCollection("Input").ID Then
            Input_ProcessInput(New InputBuffer(Me, InputID, True, Buffer))
        End If

        If Buffer.EndOfRowset Then
            InputsFinished = InputsFinished + 1
            If InputsFinished = 1 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)

        For I As Integer = 0 To Outputs - 1
            If OutputIDs(I) = MyBase.ComponentMetaData.OutputCollection("Output").ID Then
                OutputBuffer = New OutputBuffer(Me, OutputIDs(I), False, Buffers(I))
            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\resources.resx]]></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[\main.vb]]></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


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<ColumnMappings()> _
<SortProperties(New String() {"CrmConnection", "BatchSize", "InsertTerminator"})> _
<ValidateProperties("Validate")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
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></arrayElements></property>
<property id="48" name="BinaryCode" dataType="System.String" state="cdata" isArray="true" description="Stores the binary representation of the component" typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None"><arrayElements arrayElementCount="2"><arrayElement dataType="System.String"><![CDATA[\bin\scriptcomponent_a2ffa1368c5a4ba8afa29fe5da355496.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
LjUwNzI3AAAAAAUAbAAAAGgUAAAjfgAA1BQAADwaAAAjU3RyaW5ncwAAAAAQLwAAeAQAACNVUwCI
MwAAEAAAACNHVUlEAAAAmDMAAFAHAAAjQmxvYgAAAAAAAAACAAABVx2iCQkPAAAA+gEzABYAAAEA
AABcAAAADgAAABcAAABiAAAAQgAAAKEAAAABAAAARQAAACUAAAAIAAAAMwAAADcAAAAPAAAAAQAA
AAsAAAABAAAAAgAAAAMAAAACAAAAAAAAGgEAAAAAAAoAtgGMAQoA6gHMAQYA+gHzAQoAUgKMAQYA
0ALzAQoAUgMoAw4ApAONAxIA8wPSAxYAJATSAwYAEQXzAQYANQXzAQ4A2wmNAxoA9wrPCh4ATgwl
DCIAvAyPDAYA/AzpDCIABg2PDA4AlA1/DSIArQ2PDAYAIw4SDgYAUA47DiYAsQ6cDiYA/g7oDiYA
Fw/oDiYARA8sDwYAbg9bDwoArQ+GDwoAxQ8TACYA+g/dDwYALxAPEAYATRDzAQYAcRDzAQoAihAT
AAYAzhCvEAYA4hDzARIA6RDSAwYA9hDzAQYADBHzAQYAIxHzAR4APRElDB4AbBElDB4AlxElDB4A
xBElDB4A8RElDB4A/xElDB4AQhIlDCIAcRKPDCIAgRKPDCIAjBKPDCIAoBKPDCoA5xLJEgYA9RLz
AQYAChPzAQoAmxOGDy4AwhO3ExYAGRTSAx4APRQlDB4AqxQlDB4AEBUlDB4ALhUlDBoAnRXPCgYA
zhXpDAYAGhbzASIALhaPDCIAQxaPDAYAahZPFgYAeRZPFg8BgBYAACIAxhaPDCIAARePDCIAIBeP
DBIAYBfSAw4AqReHFw4AxReHFw4A3ReHFyYA9RfoDiYAChjoDg4AHBiHFyYAMBjoDgYAWBhGGAYA
fxhuGAYAkhhbDwYA+xgPEAYAGxkPEAYAORlGGAYAVhmvEAYAZBlGGAYAfxlGGAYAmhlGGAYAsxlG
GAYAzBlGGAYA6RlGGAAAAAABAAAAAAABAAEAAAAAACkANwAFAAEAAQAAAAAAcgA3AAkAAQACAAAB
EAB9ADcADQABAAMABQEAAIcAAAANAAUACAAFAQAAlQAAAA0ABQAPAAEAAACwALwAHQAGABEAAQAA
APQAvAAdAAYAFgABAAAAAQG8ADEABgA+AAEAAAAPAbwADQAKAEYAAQAAABsBvAANAAsASAABAAAA
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
AAACAE4EAAABAEEKAAACAEkKAAADAFMKAAABAE4EAAABAJgKAAABADMEAAABADMEAAABAJgKAAAB
AFoLAAABAIwLAAABAIwLAAABAIwLAAABAPkLAAABAHEMAAABAOEMAAABABwNAAABADENAAABAEoN
AAABAMoECQDGARMAuQDGAaoByQDGAbkBEQDGARMA0QDGARMAJADGARMALADGARMANADGARMAPADG
ARMAJAAYA4sALAAYA4sANAAYA4sAPAAYA4sA2QDGARMA4QDGARMA6QDGAdEA8QA+EFICGQC7AmMA
GQDEAmgAKQBfEF8CGQDdAnEAAQF7EG8CGQDGARMACQHGAX8CRABhA5AATADeDosATAClEPwCTADG
ARMAEQHGAcwAOQDGAa8AIQGEBL4AIQGMBL4AKQHGAcwAOQASERQDOQAbEccAOQHGAdEAIQGQBxMA
IQGXBxMAYQDGARMAQQBWESEDQQGDEScDSQGkES0DUQGtEWgASQC0Eb4AQQHcETQDWQGkEToDYQGt
EWgAQQEiEkYDaQGkEUwDcQFbEigBeQHGARMAOQD/ElgDSQCkEV0DqQHdAmIDeQESE9EAUQDGAdEA
eQEiE9YAgQHGARMAgQEpE8cAgQEzE8cAiQHGARMAiQFCE9EAiQESEWcDmQBSE20DkQGkEXYDeQBa
E74AgQFqE2gAeQB5E3EAgQGKE9EAsQGnE3sDmQHKE4IDuQHVE3EAsQHiExcAoQHdAnEAQQA6CxMA
aQD0E6QDkQAGFBMAkQAOFF0DYQArFKkDwQFSFK8DUQH/EmgAcQBkFGgAyQFyFLUDQQBFCxMAkQCI
FBMAGQGOFMMDoQHGAdEAUQGcFL4AUQHIFMgD0QHiFGgAcQHsFNEAoQEEFXEAYQBlCxMASQHiFGgA
UQFWFdkD4QF7FcwA0QGGFRMA4QGGFRMA4QGQFd8D2QGUFdEA2QGmFeUD2QGzFccAGQG+FTIBQQHE
FfUD4QGkEQAE0QHaFQcE8QHoFQ0EcQD0FWgA2QGtEWgA8QERFr4A+QEmFhMAeQCLFiMECQKcFioE
AQKsFioEAQK5FioEiQDaFi8EVADaFUIEXADoFYsAZADpFosAgQCkEaQDGQHxFmEEXAARFr4AgQD4
FmMAgQDGARMAZADeDqUEeQEQF6oEeQEXF3EAMQLeDmgAgQASEa8EiQA5F7UEbADaFUIEdADoFYsA
fADpFosAfADeDqUEdAARFr4AqQFNFxIFqQFVFxcFQQLGARMASQLGAdEAUQLGATcFWQLGARMAYQLG
AdEAaQLGAdEAcQLGAdEAeQLGAccAKQBhGFAGoQDGAVYGsQDGARMAiQKHGHMGiQKNGHMGkQLGARMA
mQLGAccAoQLGARMAqQLGAdEAsQLGAdEAuQLGAdEAwQLGAdEAyQLGAdEA0QLGAdEA2QLGAdEA4QLG
AdEADgAwADUBKQCDADQCLgADBQkDLgDjBAkDLgD7BD8HLgALBQIHLgALAdwGLgDrBOIGLgDzBAIH
LgDDBH0GLgDLBIYGLgDTBKUGLgDbBLIGLgDrAAkDQAArANcBQAATALABQwATALABQwAbAL8BSQCD
AAwCYwAbAL8BYwATALABaQCDAEUCgAArANcBgwAbAL8BgwB7ANcBgwBzANcBiQCDACACoAArANcB
owDDAIcCowATALABwAArANcBwwDrAAkDwwATALAB4AArANcB4wALAQkDAAErANcBAAETALABAwEL
AQkDIAErANcBIAETALABIwELAQkDQAErANcBQAETALABYAETALABYAErANcBgAErANcBgwELAQkD
gwFTBNcBgwFjBD0FgwFrBNcBgwFbBCkFoAErANcBwAErANcBwAETALAB4AErANcBAAIrANcBAAIT
ALABqQVzBPYFqQWDBN8FqQV7BNEFyQV7BNEFyQWLBCMGyQVzBCwG6QV7BNEF6QVzBG8FKQYTAGoG
SQYTAGoGaQa7BNcBwAgLAQkDAAkLAQkD+AH9AQICBwJXAlsCZgJrAnoCegICAw8DDwNXAlcCDwMa
A1cCQQNTA4gDuwPOA+wDawJbAlcCGgNXAhEEZwTdBB0FJAVeBmUGeAYEAAEABgAFAAcABgAIAAgA
CgAsAAwALQANADEADgAzAAAA6gFPAAAAowJUAAAAUgJZAAAArwJeAAAAawOYAAAAmATCAAAAqwTC
AAAAmATCAAAApgfiAAAArQfmAAAAuwfqAAAAywfmAAAA4gfuAAAA6gfmAAAA+QfzAAAAAwjmAAAA
FAjuAAAAHQjmAAAALQjqAAAAPwjmAAAAWAjqAAAAZwjmAAAAfQjqAAAAlQjmAAAAtAjiAAAAvgjm
AAAAzwjqAAAA4gjmAAAA/AjuAAAAAwnmAAAAEQnqAAAAIQnmAAAAOAnqAAAAQgnmAAAAUwnqAAAA
XAnmAAAAbAnqAAAAfgnmAAAAlwnqAAAAoAnmAAAAsAnqAAAAwgnmAAAAqwTCAAAAIgstAQAAIgvq
AAAA5Q3iAAAA7w3mAAAAAA7CAAAAIw6PAQAAlA6UAQAAygSlAQIABAADAAIABQAFAAIABgAHAAIA
BwAJAAIADwALAAIAEgANAAIAEwAPAAIAFwARAAEAGAATAAEAGQAVAAEAGgAXAAEAGwAZAAEAHAAb
AAEAHQAdAAEAHgAfAAEAHwAhAAEAIAAjAAEAIQAlAAEAIgAnAAEAIwApAAEAJAArAAEAJQAtAAEA
JgAvAAEAJwAxAAEAKAAzAAEAKQA1AAEAKgA3AAEAKwA5AAEALAA7AAEALQA9AAEALgA/AAEALwBB
AAEAMABDAAEAMQBFAAEAMgBHAAEAMwBJAAEANABLAAEANQBNAAEANgBPAAEANwBRAAEAOABTAAEA
OQBVAAIAOgBXAAIARwBZAAIATwBbAAEAUABbAAIAUQBdAAEAUgBdAAIAUwBfAAEAVABfAAIAVQBh
AAIAXQBjAAIAXgBlAAEAXwBlAAIAYgBnAHUAdQCIANwB4wHqAfEB6QLwAjUETARZBLsEyATVBASA
AAABAAAAAAAAAAAAAAAAALwAAAACAAAAAAAAAAAAAAABAAoAAAAAAAgAAAAAAAAAAAAAAAoAEwAA
AAAAAQAAAAAAAAAAAAAAnQB3AwAAAAAKAAAAAAAAAAAAAACmALUDAAAAAAoAAAAAAAAAAAAAAKYA
AwQAAAAACgAAAAAAAAAAAAAApgCsCgAAAAAKAAAAAAAAAAAAAACmAAEMAAAAAAEAAAAAAAAAAAAA
AJ0AfgwAAAAAAgAAAAAAAAAAAAAAAQDzAQAAAAACAAAAAAAAAAAAAAAKALUSAAAAAAIAAAAAAAAA
AAAAAAEAtxMAAAAAAAAAAAEAAACvGAAABQAEAAYABAAAABAADAD5AgAAEAAZAPkCAAAAABsA+QIt
AHUCLQD3AgAAAAAAPE1vZHVsZT4AbXNjb3JsaWIATWljcm9zb2Z0LlZpc3VhbEJhc2ljAE15QXBw
bGljYXRpb24AU2NyaXB0Q29tcG9uZW50X2EyZmZhMTM2OGM1YTRiYThhZmEyOWZlNWRhMzU1NDk2
LnZicHJvai5NeQBNeUNvbXB1dGVyAE15UHJvamVjdABNeVdlYlNlcnZpY2VzAFRocmVhZFNhZmVP
YmplY3RQcm92aWRlcmAxAElucHV0QnVmZmVyAFNjcmlwdENvbXBvbmVudF9hMmZmYTEzNjhjNWE0
YmE4YWZhMjlmZTVkYTM1NTQ5Ni52YnByb2oAT3V0cHV0QnVmZmVyAFVzZXJDb21wb25lbnQAQ29u
bmVjdGlvbnMAVmFyaWFibGVzAFNjcmlwdE1haW4ATXlSZXNvdXJjZXMAU2NyaXB0Q29tcG9uZW50
X2EyZmZhMTM2OGM1YTRiYThhZmEyOWZlNWRhMzU1NDk2LnZicHJvai5NeS5SZXNvdXJjZXMATXlT
ZXR0aW5ncwBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuQXBwbGljYXRpb25TZXJ2aWNlcwBBcHBsaWNh
dGlvbkJhc2UALmN0b3IATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkRldmljZXMAQ29tcHV0ZXIAU3lz
dGVtAE9iamVjdAAuY2N0b3IAZ2V0X0NvbXB1dGVyAG1fQ29tcHV0ZXJPYmplY3RQcm92aWRlcgBn
ZXRfQXBwbGljYXRpb24AbV9BcHBPYmplY3RQcm92aWRlcgBVc2VyAGdldF9Vc2VyAG1fVXNlck9i
amVjdFByb3ZpZGVyAGdldF9XZWJTZXJ2aWNlcwBtX015V2ViU2VydmljZXNPYmplY3RQcm92aWRl
cgBBcHBsaWNhdGlvbgBXZWJTZXJ2aWNlcwBFcXVhbHMAbwBHZXRIYXNoQ29kZQBUeXBlAEdldFR5
cGUAVG9TdHJpbmcAQ3JlYXRlX19JbnN0YW5jZV9fAFQAaW5zdGFuY2UARGlzcG9zZV9fSW5zdGFu
Y2VfXwBnZXRfR2V0SW5zdGFuY2UATWljcm9zb2Z0LlZpc3VhbEJhc2ljLk15U2VydmljZXMuSW50
ZXJuYWwAQ29udGV4dFZhbHVlYDEAbV9Db250ZXh0AEdldEluc3RhbmNlAENvenlSb2MuU1NJU1Bs
dXMuMjAwOABDb3p5Um9jLlNxbFNlcnZlci5TU0lTAFNjcmlwdEJ1ZmZlclBsdXMATWljcm9zb2Z0
LlNxbFNlcnZlci5UeFNjcmlwdABNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZQBTY3Jp
cHRDb21wb25lbnQATWljcm9zb2Z0LlNxbFNlcnZlci5QaXBlbGluZUhvc3QAUGlwZWxpbmVCdWZm
ZXIAQ29tcG9uZW50AE9iamVjdElEAElzSW5wdXQAQnVmZmVyAGdldF9TdGF0aWNJbnB1dENvbHVt
bnMAZ2V0X1N0YXRpY091dHB1dENvbHVtbnMATmV4dFJvdwBFbmRPZlJvd3NldABTdGF0aWNJbnB1
dENvbHVtbnMAU3RhdGljT3V0cHV0Q29sdW1ucwBzZXRfYWN0aW9uAFZhbHVlAHNldF9hY3Rpb25f
SXNOdWxsAHNldF9hY3Rpb25Gb3JtYXR0ZWQAc2V0X2FjdGlvbkZvcm1hdHRlZF9Jc051bGwAR3Vp
ZABzZXRfYXVkaXRpZABzZXRfYXVkaXRpZF9Jc051bGwARGF0ZVRpbWUAc2V0X2NyZWF0ZWRvbgBz
ZXRfY3JlYXRlZG9uX0lzTnVsbABzZXRfb2JqZWN0aWQAc2V0X29iamVjdGlkX0lzTnVsbABzZXRf
b2JqZWN0aWRGb3JtYXR0ZWQAc2V0X29iamVjdGlkRm9ybWF0dGVkX0lzTnVsbABzZXRfb2JqZWN0
dHlwZWNvZGUAc2V0X29iamVjdHR5cGVjb2RlX0lzTnVsbABzZXRfb2JqZWN0dHlwZWNvZGVGb3Jt
YXR0ZWQAc2V0X29iamVjdHR5cGVjb2RlRm9ybWF0dGVkX0lzTnVsbABzZXRfb3BlcmF0aW9uAHNl
dF9vcGVyYXRpb25fSXNOdWxsAHNldF9vcGVyYXRpb25Gb3JtYXR0ZWQAc2V0X29wZXJhdGlvbkZv
cm1hdHRlZF9Jc051bGwAc2V0X3VzZXJpZABzZXRfdXNlcmlkX0lzTnVsbABzZXRfdXNlcmlkRm9y
bWF0dGVkAHNldF91c2VyaWRGb3JtYXR0ZWRfSXNOdWxsAHNldF9maWVsZE5hbWUAc2V0X2ZpZWxk
TmFtZV9Jc051bGwAc2V0X29sZFZhbHVlAHNldF9vbGRWYWx1ZV9Jc051bGwAc2V0X29sZFZhbHVl
Rm9ybWF0dGVkAHNldF9vbGRWYWx1ZUZvcm1hdHRlZF9Jc051bGwAc2V0X25ld1ZhbHVlAHNldF9u
ZXdWYWx1ZV9Jc051bGwAc2V0X25ld1ZhbHVlRm9ybWF0dGVkAHNldF9uZXdWYWx1ZUZvcm1hdHRl
ZF9Jc051bGwAQWRkUm93AFNldEVuZE9mUm93c2V0AGFjdGlvbgBhY3Rpb25fSXNOdWxsAGFjdGlv
bkZvcm1hdHRlZABhY3Rpb25Gb3JtYXR0ZWRfSXNOdWxsAGF1ZGl0aWQAYXVkaXRpZF9Jc051bGwA
Y3JlYXRlZG9uAGNyZWF0ZWRvbl9Jc051bGwAb2JqZWN0aWQAb2JqZWN0aWRfSXNOdWxsAG9iamVj
dGlkRm9ybWF0dGVkAG9iamVjdGlkRm9ybWF0dGVkX0lzTnVsbABvYmplY3R0eXBlY29kZQBvYmpl
Y3R0eXBlY29kZV9Jc051bGwAb2JqZWN0dHlwZWNvZGVGb3JtYXR0ZWQAb2JqZWN0dHlwZWNvZGVG
b3JtYXR0ZWRfSXNOdWxsAG9wZXJhdGlvbgBvcGVyYXRpb25fSXNOdWxsAG9wZXJhdGlvbkZvcm1h
dHRlZABvcGVyYXRpb25Gb3JtYXR0ZWRfSXNOdWxsAHVzZXJpZAB1c2VyaWRfSXNOdWxsAHVzZXJp
ZEZvcm1hdHRlZAB1c2VyaWRGb3JtYXR0ZWRfSXNOdWxsAGZpZWxkTmFtZQBmaWVsZE5hbWVfSXNO
dWxsAG9sZFZhbHVlAG9sZFZhbHVlX0lzTnVsbABvbGRWYWx1ZUZvcm1hdHRlZABvbGRWYWx1ZUZv
cm1hdHRlZF9Jc051bGwAbmV3VmFsdWUAbmV3VmFsdWVfSXNOdWxsAG5ld1ZhbHVlRm9ybWF0dGVk
AG5ld1ZhbHVlRm9ybWF0dGVkX0lzTnVsbABTY3JpcHRDb21wb25lbnRQbHVzAElucHV0c0Zpbmlz
aGVkAFByb2Nlc3NJbnB1dABJbnB1dElEAEZpbmlzaE91dHB1dHMATWFya091dHB1dHNGaW5pc2hl
ZABQcmltZU91dHB1dABPdXRwdXRzAE91dHB1dElEcwBCdWZmZXJzAENyZWF0ZU5ld091dHB1dFJv
d3MASW5wdXRfUHJvY2Vzc0lucHV0AElucHV0X1Byb2Nlc3NJbnB1dFJvdwBSb3cAUGFyZW50Q29t
cG9uZW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRFRTUnVudGltZVdyYXAATWljcm9zb2Z0LlNxbFNl
cnZlci5EdHMuUnVudGltZS5XcmFwcGVyAElEVFNDb25uZWN0aW9uTWFuYWdlcjEwMABnZXRfQ3Jt
Q29ubmVjdGlvbgBDcm1Db25uZWN0aW9uAEZvcm1hdHRlZABQcmVFeGVjdXRlAFBvc3RFeGVjdXRl
AFZhbGlkYXRlAGVyck1lc3NhZ2UAUmVpbml0aWFsaXplTWV0YURhdGEAc2V0X0NybUNvbm5lY3Rp
b24AdmFsdWUAZ2V0X0JhdGNoU2l6ZQBzZXRfQmF0Y2hTaXplAGdldF9JbnNlcnRUZXJtaW5hdG9y
AHNldF9JbnNlcnRUZXJtaW5hdG9yAGdldF9Dcm1Db25uZWN0aW9uVHlwZQBGaXJlRXJyb3JfAG1l
c3NhZ2UATWljcm9zb2Z0LlNxbFNlcnZlci5EVFNQaXBlbGluZVdyYXAATWljcm9zb2Z0LlNxbFNl
cnZlci5EdHMuUGlwZWxpbmUuV3JhcHBlcgBJRFRTSW5wdXRDb2x1bW4xMDAAR2V0SW5wdXRDb2x1
bW5fAGV4dGVybmFsTmFtZQBDb3p5Um9jLkR5bmFtaWNzAENvenlSb2MuRHluYW1pY3MuQ3JtMjAx
MS5Pcmdhbml6YXRpb25TZXJ2aWNlAEF1ZGl0RGV0YWlsQ29sbGVjdGlvbgBPdXRwdXREZXRhaWxz
XwBkZXRhaWxzAFN5c3RlbS5Db2xsZWN0aW9ucwBIYXNodGFibGUARW50aXR5AEdldEF0dHJpYnV0
ZXNfAGVudGl0eQBBZGRPdXRwdXRSb3dfAGF1ZGl0AEdldEF0dHJpYnV0ZUxhYmVsXwBjb2RlAG1f
Y3JtQ29ubmVjdGlvbgBtX2JhdGNoU2l6ZQBtX2luc2VydFRlcm1pbnRhdG9yAENvenlSb2MuRHlu
YW1pY3MuQ3JtAElDb25uZWN0aW9uAG1fY29ubmVjdGlvbgBPcmdhbml6YXRpb25TZXJ2aWNlQ2xp
ZW50AG1fc2VydmljZQBtX2VudGl0eUlkeABtX2lkSWR4AEJhdGNoU2l6ZQBJbnNlcnRUZXJtaW5h
dG9yAENybUNvbm5lY3Rpb25UeXBlAFN5c3RlbS5SZXNvdXJjZXMAUmVzb3VyY2VNYW5hZ2VyAF9y
ZXNNZ3IAU3lzdGVtLkdsb2JhbGl6YXRpb24AQ3VsdHVyZUluZm8AX3Jlc0N1bHR1cmUAZ2V0X1Jl
c291cmNlTWFuYWdlcgBnZXRfQ3VsdHVyZQBzZXRfQ3VsdHVyZQBDdWx0dXJlAFN5c3RlbS5Db25m
aWd1cmF0aW9uAEFwcGxpY2F0aW9uU2V0dGluZ3NCYXNlAG1fVmFsdWUAbV9TeW5jT2JqZWN0AGdl
dF9WYWx1ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwARWRpdG9yQnJvd3NhYmxlQXR0cmlidXRlAEVk
aXRvckJyb3dzYWJsZVN0YXRlAFN5c3RlbS5Db2RlRG9tLkNvbXBpbGVyAEdlbmVyYXRlZENvZGVB
dHRyaWJ1dGUAU3lzdGVtLkRpYWdub3N0aWNzAERlYnVnZ2VySGlkZGVuQXR0cmlidXRlAE1pY3Jv
c29mdC5WaXN1YWxCYXNpYy5Db21waWxlclNlcnZpY2VzAFN0YW5kYXJkTW9kdWxlQXR0cmlidXRl
AEhpZGVNb2R1bGVOYW1lQXR0cmlidXRlAFN5c3RlbS5Db21wb25lbnRNb2RlbC5EZXNpZ24ASGVs
cEtleXdvcmRBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcwBSdW50aW1l
SGVscGVycwBHZXRPYmplY3RWYWx1ZQBSdW50aW1lVHlwZUhhbmRsZQBHZXRUeXBlRnJvbUhhbmRs
ZQBBY3RpdmF0b3IAQ3JlYXRlSW5zdGFuY2UATXlHcm91cENvbGxlY3Rpb25BdHRyaWJ1dGUAc2V0
X1ZhbHVlAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcwBDb21WaXNpYmxlQXR0cmlidXRl
AFN0cmluZwBTY3JpcHRCdWZmZXIAQ0xTQ29tcGxpYW50QXR0cmlidXRlAEludDMyAHNldF9JdGVt
AFNldE51bGwASW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbgBJRFRTQ29tcG9uZW50TWV0YURhdGEx
MDAAZ2V0X0NvbXBvbmVudE1ldGFEYXRhAElEVFNJbnB1dENvbGxlY3Rpb24xMDAAZ2V0X0lucHV0
Q29sbGVjdGlvbgBJRFRTSW5wdXQxMDAAZ2V0X0l0ZW0AZ2V0X0lEAGdldF9FbmRPZlJvd3NldABJ
RFRTT3V0cHV0Q29sbGVjdGlvbjEwMABnZXRfT3V0cHV0Q29sbGVjdGlvbgBJRFRTT3V0cHV0MTAw
AElEVFNSdW50aW1lQ29ubmVjdGlvbkNvbGxlY3Rpb24xMDAAZ2V0X1J1bnRpbWVDb25uZWN0aW9u
Q29sbGVjdGlvbgBJRFRTUnVudGltZUNvbm5lY3Rpb24xMDAAZ2V0X0Nvbm5lY3Rpb25NYW5hZ2Vy
AEVudGl0eVJlZmVyZW5jZQBQYWdpbmdJbmZvAE9yZ2FuaXphdGlvblJlcXVlc3QAT3JnYW5pemF0
aW9uUmVzcG9uc2UAU3lzdGVtLldlYi5TZXJ2aWNlcwBTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3Rv
Y29scwBTb2FwRXhjZXB0aW9uAEV4Y2VwdGlvbgBnZXRfQnVmZmVyAENvbnZlcnQAc2V0X0xvZ2lj
YWxOYW1lAHNldF9JZABzZXRfQ291bnQAc2V0X1BhZ2VOdW1iZXIAc2V0X1JlcXVlc3ROYW1lAEV4
ZWN1dGUAZ2V0X01vcmVSZWNvcmRzAGdldF9QYWdlTnVtYmVyAGdldF9QYWdpbmdDb29raWUAc2V0
X1BhZ2luZ0Nvb2tpZQBQcm9qZWN0RGF0YQBTZXRQcm9qZWN0RXJyb3IAU3lzdGVtLlhtbABYbWxO
b2RlAGdldF9EZXRhaWwAZ2V0X0lubmVyWG1sAENsZWFyUHJvamVjdEVycm9yAEFjcXVpcmVDb25u
ZWN0aW9uAENvbm5lY3QAR2V0U2VydmljZQBQaXBlbGluZUNvbXBvbmVudABnZXRfSG9zdENvbXBv
bmVudABJRFRTQnVmZmVyTWFuYWdlcjEwMABnZXRfQnVmZmVyTWFuYWdlcgBnZXRfTGluZWFnZUlE
AEZpbmRDb2x1bW5CeUxpbmVhZ2VJRABDbG9zZQBJc051bGxPckVtcHR5AGdldF9Jc0F0dGFjaGVk
AElEVFNJbnB1dENvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0X0lucHV0Q29sdW1uQ29sbGVjdGlvbgBn
ZXRfQ291bnQAc2V0X0Nvbm5lY3Rpb25NYW5hZ2VySUQAZ2V0X01lc3NhZ2UASURUU0V4dGVybmFs
TWV0YWRhdGFDb2x1bW4xMDAASURUU0V4dGVybmFsTWV0YWRhdGFDb2x1bW5Db2xsZWN0aW9uMTAw
AGdldF9FeHRlcm5hbE1ldGFkYXRhQ29sdW1uQ29sbGVjdGlvbgBzZXRfSXNVc2VkAFJlbW92ZUFs
bABOZXcAc2V0X05hbWUARGF0YVR5cGUAc2V0X0RhdGFUeXBlAHNldF9MZW5ndGgARW1wdHkARmly
ZUVycm9yAElFbnVtZXJhdG9yAEdldEVudW1lcmF0b3IAZ2V0X0N1cnJlbnQAZ2V0X0V4dGVybmFs
TWV0YWRhdGFDb2x1bW5JRABNb3ZlTmV4dABJRGlzcG9zYWJsZQBEaXNwb3NlAEF0dHJpYnV0ZUF1
ZGl0RGV0YWlsAEF1ZGl0RGV0YWlsAFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljAEtleVZhbHVl
UGFpcmAyAExpc3RgMQBFbnVtZXJhdG9yAGdldF9BdWRpdERldGFpbHMAZ2V0X0F1ZGl0UmVjb3Jk
AGdldF9OZXdWYWx1ZQBnZXRfT2xkVmFsdWUAQXR0cmlidXRlQ29sbGVjdGlvbgBnZXRfQXR0cmli
dXRlcwBnZXRfS2V5AENvbmNhdABDb250YWlucwBPcHRpb25TZXRWYWx1ZQBnZXRfSWQAZ2V0X05h
bWUARm9ybWF0dGVkVmFsdWVDb2xsZWN0aW9uAGdldF9Gb3JtYXR0ZWRWYWx1ZXMAVG9JbnQzMgBU
b0RhdGVUaW1lAFNTSVNTY3JpcHRDb21wb25lbnRFbnRyeVBvaW50QXR0cmlidXRlAENvenlSb2Mu
U3FsU2VydmVyLlNTSVMuQXR0cmlidXRlcwBWYWxpZGF0ZVByb3BlcnRpZXNBdHRyaWJ1dGUAU29y
dFByb3BlcnRpZXNBdHRyaWJ1dGUAQ29sdW1uTWFwcGluZ3NBdHRyaWJ1dGUARGVzY3JpcHRpb25B
dHRyaWJ1dGUAQ2F0ZWdvcnlBdHRyaWJ1dGUAQ29ubmVjdGlvbkF0dHJpYnV0ZQBEZWZhdWx0VmFs
dWVBdHRyaWJ1dGUAU3lzdGVtLlJlZmxlY3Rpb24AQXNzZW1ibHkAZ2V0X0Fzc2VtYmx5AFN5c3Rl
bS5UaHJlYWRpbmcATW9uaXRvcgBFbnRlcgBFeGl0AERlYnVnZ2VyTm9uVXNlckNvZGVBdHRyaWJ1
dGUAU2NyaXB0Q29tcG9uZW50X2EyZmZhMTM2OGM1YTRiYThhZmEyOWZlNWRhMzU1NDk2LnZicHJv
ai5SZXNvdXJjZXMucmVzb3VyY2VzAENvbXBpbGF0aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUAUnVu
dGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAQXNzZW1ibHlGaWxlVmVyc2lvbkF0dHJpYnV0ZQBH
dWlkQXR0cmlidXRlAEFzc2VtYmx5VHJhZGVtYXJrQXR0cmlidXRlAEFzc2VtYmx5Q29weXJpZ2h0
QXR0cmlidXRlAEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBBc3NlbWJseUNvbXBhbnlBdHRyaWJ1
dGUAQXNzZW1ibHlEZXNjcmlwdGlvbkF0dHJpYnV0ZQBBc3NlbWJseVRpdGxlQXR0cmlidXRlAFNj
cmlwdENvbXBvbmVudF9hMmZmYTEzNjhjNWE0YmE4YWZhMjlmZTVkYTM1NTQ5Ni52YnByb2ouZGxs
AACAm0kAcwBOAHUAbABsACAAcAByAG8AcABlAHIAdAB5ACAAYwBhAG4AbgBvAHQAIABiAGUAIABz
AGUAdAAgAHQAbwAgAEYAYQBsAHMAZQAuACAAQQBzAHMAaQBnAG4AIABhACAAdgBhAGwAdQBlACAA
dABvACAAdABoAGUAIABjAG8AbAB1AG0AbgAgAGkAbgBzAHQAZQBhAGQALgAADWEAYwB0AGkAbwBu
AAAfYQBjAHQAaQBvAG4ARgBvAHIAbQBhAHQAdABlAGQAAA9hAHUAZABpAHQAaQBkAAATYwByAGUA
YQB0AGUAZABvAG4AABFvAGIAagBlAGMAdABpAGQAACNvAGIAagBlAGMAdABpAGQARgBvAHIAbQBh
AHQAdABlAGQAAB1vAGIAagBlAGMAdAB0AHkAcABlAGMAbwBkAGUAAC9vAGIAagBlAGMAdAB0AHkA
cABlAGMAbwBkAGUARgBvAHIAbQBhAHQAdABlAGQAABNvAHAAZQByAGEAdABpAG8AbgAAJW8AcABl
AHIAYQB0AGkAbwBuAEYAbwByAG0AYQB0AHQAZQBkAAANdQBzAGUAcgBpAGQAAB91AHMAZQByAGkA
ZABGAG8AcgBtAGEAdAB0AGUAZAAAE2YAaQBlAGwAZABOAGEAbQBlAAARbwBsAGQAVgBhAGwAdQBl
AAAjbwBsAGQAVgBhAGwAdQBlAEYAbwByAG0AYQB0AHQAZQBkAAARbgBlAHcAVgBhAGwAdQBlAAAj
bgBlAHcAVgBhAGwAdQBlAEYAbwByAG0AYQB0AHQAZQBkAAALSQBuAHAAdQB0AAANTwB1AHQAcAB1
AHQAABtDAHIAbQBDAG8AbgBuAGUAYwB0AGkAbwBuAAA3UgBlAHQAcgBpAGUAdgBlAFIAZQBjAG8A
cgBkAEMAaABhAG4AZwBlAEgAaQBzAHQAbwByAHkAAA1UAGEAcgBnAGUAdAAAFVAAYQBnAGkAbgBn
AEkAbgBmAG8AACtBAHUAZABpAHQARABlAHQAYQBpAGwAQwBvAGwAbABlAGMAdABpAG8AbgAADUUA
bgB0AGkAdAB5AAAFSQBkAAA/UwBlAGwAZQBjAHQAIABEAHkAbgBhAG0AaQBjAHMAIABDAFIATQAg
AEMAbwBuAG4AZQBjAHQAaQBvAG4ALgAAJU0AYQBwACAAaQBuAHAAdQB0ACAAYwBvAGwAdQBtAG4A
cwAuAAAVTgBvACAAaQBuAHAAdQB0AHMALgAAGUQAWQBOAEEATQBJAEMAUwAtAEMAUgBNAAE7RAB5
AG4AYQBtAGkAYwBzACAAQwBSAE0AIABBAHUAZABpAHQAIABMAG8AZwBzACAAUQB1AGUAcgB5AAAv
SQBuAHAAdQB0ACAAYwBvAGwAdQBtAG4AIABuAG8AdAAgAGYAbwB1AG4AZAAuAAATRgBvAHIAbQBh
AHQAdABlAGQAADFNAHkALgBSAGUAcwBvAHUAcgBjAGUAcwAuAE0AeQBSAGUAcwBvAHUAcgBjAGUA
cwAAAABZf6bbnb5YQ60EvtlJvj6sAAi3elxWGTTgiQiwP19/EdUKOgMgAAEDAAABBAAAEgwHBhUS
GAESDAQAABIIBwYVEhgBEggEAAASEQcGFRIYARIRBAAAEhQHBhUSGAESFAQIABIMBAgAEggECAAS
EQQIABIUBCABAhwDIAAIBCAAEhUDIAAOAh4ABxABAR4AHgAHMAEBARAeAAITAAQgABMABwYVEhkB
EwAEKAATAAgWz0kLuAw06giJhF3NgIDMkQkgBAESIQgCEiUEIAAdDgMgAAIEKAAdDgQgAQEIBCAB
AQIEIAEBDgUgAQERKQUgAQERLQMoAAgDKAACAygADgQoABEpBCgAES0DBhIoAwYSLAMGEiACBggG
IAIBCBIlCSADAQgdCB0SJQUgAQESHAMGEiEFIAEBEiEEIAASNQQoABI1AgYOEkYAbwByAG0AYQB0
AHQAZQBkAAUgAQIQDgUgARI5DgUgAQESPQYgARJBEkUFIAEBEkEEIAEOCAIGAgMGEkkDBhJNAwYS
UQMGElUEAAASUQQAABJVBQABARJVBAgAElEECAASVQMGEjgCBhwEAAASOAQIABI4BSABARFhCAEA
AQAAAAAABSACAQ4OFwEACk15VGVtcGxhdGUHOC4wLjAuMAAABAEAAAAGFRIYARIMBhUSGAESCAYV
EhgBEhEGFRIYARIUBAcBEgwEBwESCAQHARIRBAcBEhQTAQAOTXkuQXBwbGljYXRpb24AABMBAA5N
eS5XZWJTZXJ2aWNlcwAAEAEAC015LkNvbXB1dGVyAAAMAQAHTXkuVXNlcgAABAABHBwDBwECAwcB
CAYAARIVEX0EBwESFQMHAQ4FEAEAHgAECgEeAAQHAR4AByAEAQ4ODg5hAQA0U3lzdGVtLldlYi5T
ZXJ2aWNlcy5Qcm90b2NvbHMuU29hcEh0dHBDbGllbnRQcm90b2NvbBJDcmVhdGVfX0luc3RhbmNl
X18TRGlzcG9zZV9fSW5zdGFuY2VfXwAAAAYVEhgBEwAGFRIZARMABAoBEwAFIAEBEwAGBwITABMA
BQEAAAAABAcBHQ4FIAIBCBwGBwIdDh0OBSAAEoChBSAAEoClBiABEoCpHAUgABKArQYgARKAsRwE
BwIICAUgABKAtQYgARKAuRwEBwESNQQgABIlBCABHAgEAAEOHAUgAgEOHAggARKAyRKAxQQgARwO
BgABARKA0QUgABKA3RsHCRKAvRKAwRKAxRI9EoDJEoDNEoDRESkSgMEEIAEcHAUgABKA4QUgABKA
5QUgAggICAcHAhKAqRI5BAABAg4FIAASgOkKBwQCAhKAqRKA0QUgABKA8QUgABKA7QYgAQERgPUI
BwISgO0SgKkKIAYBCA4ODggQAgYgARKA7RwFIAASgPkDIAAcEQcGEoDtEjkSgKkSORI5EoD5BiAA
HRKBBQQgABJFBSAAEoEVDBUSgQ0BFRGBCQIOHAkgABURgREBEwAMFRGBEQEVEYEJAg4cBxURgQkC
DhwFAAIODg49Bw0SgQESQRKBBRJBEkEVEYEJAg4cFRGBCQIOHAgdEoEFFRGBEQEVEYEJAg4cEiAV
EYERARURgQkCDhwSIAQgABMBBCAAESkFIAIBHBwFIAASgR0MFRKBDQEVEYEJAg4ODBURgREBFRGB
CQIODgcVEYEJAg4ONAcKEkESQRURgQkCDhwSgL0cEoEZHBURgQkCDg4VEYERARURgQkCDhwVEYER
ARURgQkCDg4EAAEIHAUAAREtHAYHAhIgESkEBwIODg0BAAhWYWxpZGF0ZQAABSABAR0OMQEAAwAA
AA1Dcm1Db25uZWN0aW9uCUJhdGNoU2l6ZRBJbnNlcnRUZXJtaW5hdG9yAABhAQBcSW5kaWNhdGVz
IHdoZXRoZXIgYW4gZW1wdHkgbGluZSBzaG91bGQgYmUgaW5zZXJ0ZWQgYXQgdGhlIGVuZCBvZiBl
YWNoIHNldCBvZiBkZXRhaWwgcmVjb3Jkcy4AAA0BAAhTZXR0aW5ncwAAFgEAEUNybUNvbm5lY3Rp
b25UeXBlAAAsAQAnU2VsZWN0IER5bmFtaWNzIENSTSBDb25uZWN0aW9uIE1hbmFnZXIuAAAIAQBk
AAAAAAAjAQAeU3BlY2lmaWVzIHJldHJpZXZlIGJhdGNoIHNpemUuAAAFIAASgUEHIAIBDhKBQQYH
AhJRElEEBwESVQgBAAIAAAAAAAQAAQEcBAcBEjgIAQAIAAAAAAAeAQABAFQCFldyYXBOb25FeGNl
cHRpb25UaHJvd3MBDAEABzEuMC4wLjAAACkBACQxMzk0MzI1NS04ZWUxLTQxY2ItODcwZS1hOWIy
MWI5MDkwNDAAAAUBAAEAAB8BABpDb3B5cmlnaHQgQCBNaWNyb3NvZnQgMjAxNgAAPAEAN1Njcmlw
dENvbXBvbmVudF9hMmZmYTEzNjhjNWE0YmE4YWZhMjlmZTVkYTM1NTQ5Ni52YnByb2oAAA4BAAlN
aWNyb3NvZnQAAAAAXG4AAAAAAAAAAAAAfm4AAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBuAAAA
AAAAAAAAAAAAAAAAAAAAAABfQ29yRGxsTWFpbgBtc2NvcmVlLmRsbAAAAAAA/yUAIEAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAAAKAAAgA4AAABIAACAEAAAAGAAAIAA
AAAAAAAAAAAAAAAAAAIAAgAAAHgAAIADAAAAkAAAgAAAAAAAAAAAAAAAAAAAAQAAfwAAqAAAgAAA
AAAAAAAAAAAAAAAAAQABAAAAwAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAA2AAAAAAAAAAAAAAAAAAA
AAAAAQAAAAAA6AAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA
CAEAAICFAADoAgAAAAAAAAAAAABoiAAAKAEAAAAAAAAAAAAAkIkAACIAAAAAAAAAAAAAABiBAABo
BAAAAAAAAAAAAABoBDQAAABWAFMAXwBWAEUAUgBTAEkATwBOAF8ASQBOAEYATwAAAAAAvQTv/gAA
AQAAAAEAAAAAAAAAAQAAAAAAPwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAEQAAAABAFYAYQBy
AEYAaQBsAGUASQBuAGYAbwAAAAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkAbwBuAAAAAAAAALAE
yAMAAAEAUwB0AHIAaQBuAGcARgBpAGwAZQBJAG4AZgBvAAAApAMAAAEAMAAwADAAMAAwADQAYgAw
AAAANAAKAAEAQwBvAG0AcABhAG4AeQBOAGEAbQBlAAAAAABNAGkAYwByAG8AcwBvAGYAdAAAAJgA
OAABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAABTAGMAcgBpAHAAdABDAG8AbQBw
AG8AbgBlAG4AdABfAGEAMgBmAGYAYQAxADMANgA4AGMANQBhADQAYgBhADgAYQBmAGEAMgA5AGYA
ZQA1AGQAYQAzADUANQA0ADkANgAuAHYAYgBwAHIAbwBqAAAAMAAIAAEARgBpAGwAZQBWAGUAcgBz
AGkAbwBuAAAAAAAxAC4AMAAuADAALgAwAAAAmAA8AAEASQBuAHQAZQByAG4AYQBsAE4AYQBtAGUA
AABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfAGEAMgBmAGYAYQAxADMANgA4AGMANQBh
ADQAYgBhADgAYQBmAGEAMgA5AGYAZQA1AGQAYQAzADUANQA0ADkANgAuAHYAYgBwAHIAbwBqAC4A
ZABsAGwAAABcABsAAQBMAGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAABDAG8AcAB5AHIAaQBn
AGgAdAAgAEAAIABNAGkAYwByAG8AcwBvAGYAdAAgADIAMAAxADYAAAAAAKAAPAABAE8AcgBpAGcA
aQBuAGEAbABGAGkAbABlAG4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABf
AGEAMgBmAGYAYQAxADMANgA4AGMANQBhADQAYgBhADgAYQBmAGEAMgA5AGYAZQA1AGQAYQAzADUA
NQA0ADkANgAuAHYAYgBwAHIAbwBqAC4AZABsAGwAAACQADgAAQBQAHIAbwBkAHUAYwB0AE4AYQBt
AGUAAAAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AYQAyAGYAZgBhADEAMwA2ADgA
YwA1AGEANABiAGEAOABhAGYAYQAyADkAZgBlADUAZABhADMANQA1ADQAOQA2AC4AdgBiAHAAcgBv
AGoAAAA0AAgAAQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4AAAAxAC4AMAAuADAALgAwAAAA
OAAIAAEAQQBzAHMAZQBtAGIAbAB5ACAAVgBlAHIAcwBpAG8AbgAAADEALgAwAC4AMAAuADAAAAAo
AAAAIAAAAEAAAAABAAQAAAAAAIACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA
AACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd3d3
d3d3d3d3d3d3d3dwBEREREREREREREREREREcAT/////////////////9HAE////////////////
//RwBP/////////////////0cAT/////////////////9HAE//////////////////RwBP//////
///////////0cAT/////////////////9HAE//////////////////RwBP/////////////////0
cAT/////////////////9HAE//////////////////RwBP/////////////////0cAT/////////
////////9HAE//////////////////RwBP/////////////////0cAT/////////////////9HAE
//////////////////RwBP/////////////////0cASIiIiIiIiIiIiIiIiIhHAERERERERERERE
RERERERwBExMTExMTExMTE7Ozkl0cATMzMzMzMzMzMzMzMzMxAAAREREREREREREREREREAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////
/////8AAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGA
AAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAA8AAAAf/////////////
//8oAAAAEAAAACAAAAABAAQAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICA
AIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAA
B3d3d3d3d3dERERERERER0////////hHT///////+EdP///////4R0////////hHT///////+EdP
///////4R0////////hHT///////+EdIiIiIiIiIR0zMzMzMzMxHxERERERERMAAAAAAAAAAAAAA
AAAAAAAA//8AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAABAAD//wAA//8AAAAAAQACACAgEAABAAQA6AIAAAIAEBAQAAEABAAoAQAAAwAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAYAAADAAAAJA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAA==]]></arrayElement></arrayElements></property>
<property id="55" name="UserComponentTypeName" dataType="System.String" state="default" isArray="false" description="" typeConverter="" UITypeEditor="" containsID="false" expressionType="None">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2008, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property>
<property id="234" name="VSTAProjectName" dataType="System.String" state="default" isArray="false" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None">ScriptComponent_a2ffa1368c5a4ba8afa29fe5da355496</property>
<property id="235" name="ScriptLanguage" dataType="System.String" state="default" isArray="false" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" UITypeEditor="" containsID="false" expressionType="None">VisualBasic</property></properties>
<connections>
<connection id="69" name="CrmConnection" description="" connectionManagerID="{4d54c691-1e7b-44dc-92ed-5c1985cea174}" /></connections>
<inputs>
<input id="45" name="Input" description="" hasSideEffects="true" dangling="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="True">
<externalMetadataColumn id="134" name="Entity" description="" precision="0" scale="0" length="100" dataType="wstr" codePage="0" mappedColumnId="0" />
<externalMetadataColumn id="135" name="Id" description="" precision="0" scale="0" length="0" dataType="guid" codePage="0" mappedColumnId="0" /></externalMetadataColumns></input>
</inputs>
<outputs>
<output id="46" name="Output" description="" exclusionGroup="0" synchronousInputId="0" deleteOutputOnPathDetached="false" hasSideEffects="true" dangling="false" isErrorOut="false" isSorted="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><outputColumns>
<outputColumn id="70" name="action" description="" lineageId="70" precision="0" scale="0" length="0" dataType="i4" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" />
<outputColumn id="85" name="actionFormatted" description="" lineageId="85" precision="0" scale="0" length="50" dataType="wstr" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" />
<outputColumn id="86" name="auditid" description="" lineageId="86" precision="0" scale="0" length="0" dataType="guid" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" />
<outputColumn id="87" name="createdon" description="" lineageId="87" precision="0" scale="0" length="0" dataType="dbTimeStamp" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" />
<outputColumn id="88" name="objectid" description="" lineageId="88" precision="0" scale="0" length="0" dataType="guid" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" />
<outputColumn id="89" name="objectidFormatted" description="" lineageId="89" precision="0" scale="0" length="160" dataType="wstr" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" />
<outputColumn id="90" name="objecttypecode" description="" lineageId="90" precision="0" scale="0" length="50" dataType="wstr" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" />
<outputColumn id="91" name="objecttypecodeFormatted" description="" lineageId="91" precision="0" scale="0" length="50" dataType="wstr" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" />
<outputColumn id="92" name="operation" description="" lineageId="92" precision="0" scale="0" length="0" dataType="i4" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" />
<outputColumn id="93" name="operationFormatted" description="" lineageId="93" precision="0" scale="0" length="50" dataType="wstr" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" />
<outputColumn id="94" name="userid" description="" lineageId="94" precision="0" scale="0" length="0" dataType="guid" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" />
<outputColumn id="95" name="useridFormatted" description="" lineageId="95" precision="0" scale="0" length="100" dataType="wstr" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" />
<outputColumn id="96" name="fieldName" description="" lineageId="96" precision="0" scale="0" length="50" dataType="wstr" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" />
<outputColumn id="97" name="oldValue" description="" lineageId="97" precision="0" scale="0" length="1000" dataType="wstr" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" />
<outputColumn id="98" name="oldValueFormatted" description="" lineageId="98" precision="0" scale="0" length="1000" dataType="wstr" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" />
<outputColumn id="99" name="newValue" description="" lineageId="99" precision="0" scale="0" length="1000" dataType="wstr" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" />
<outputColumn id="100" name="newValueFormatted" description="" lineageId="100" precision="0" scale="0" length="1000" dataType="wstr" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" /></outputColumns><externalMetadataColumns isUsed="False" /></output>
</outputs>
</component>