<component id="2" name="Dynamics CRM Entity Changes Source" componentClassID="Microsoft.ManagedComponentHost" description="Executes a custom script" localeId="1033" version="9" 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_8b85598a4c8e4d4a8c2b07d73b45f02a.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>{32C96EF5-35B9-40A5-8620-278ED34A5A5D}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>SC_8b85598a4c8e4d4a8c2b07d73b45f02a</RootNamespace>
    <AssemblyName>SC_8b85598a4c8e4d4a8c2b07d73b45f02a</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
  </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.2014, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=11.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_11.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.ManagedDTS.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=12.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=12.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=12.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=12.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;vstadebug8dcfb6ee-2146-4adc-80aa-97179b3100c7/38aa57ba-b0b7-4674-a056-0e4ef318663c&quot;" />
        <Host Name="SSIS_SC110" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC120</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

    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()

        FinishOutputs()
        MarkOutputsFinished()

    End Sub

    Public Overridable Sub CreateNewOutputRows()
    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[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 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 Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        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[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_8b85598a4c8e4d4a8c2b07d73b45f02a")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("")> 
<Assembly: AssemblyProduct("SC_8b85598a4c8e4d4a8c2b07d73b45f02a")> 
<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("696f9257-5663-4fcf-b249-0c4a697d3034")> 

' 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 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


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


    Public Const ListDelimiter As String = "," + vbLf


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub CreateNewOutputRows()
        Dim connection As IConnection = CType( _
            Me.Connections.CrmConnection.AcquireConnection(Nothing),  _
            IConnection)

        Dim colsIdx As Hashtable = GetColumnsIdx_()

        Try
            Call connection.Connect()

            ' 0 - CRM Service
            Dim service As OrganizationServiceClient = CType( _
                connection.GetService(0),  _
                OrganizationServiceClient)

            ' Setup request.
            Dim req As New OrganizationRequest()
            req.RequestName = "RetrieveEntityChanges"
            req("EntityName") = Me.Entity
            req("Columns") = New ColumnSet() With
            {
                .Columns = Me.Attributes.Split( _
                    New String() {ListDelimiter}, _
                    StringSplitOptions.None)
            }
            Dim pi As PagingInfo = New PagingInfo() With
            {
                .Count = Me.BatchSize,
                .PageNumber = 1
            }
            req("PageInfo") = pi
            req("DataVersion") = Convert.ToString(GetVariable_(Me.TokenVariable))

            While True
                Dim res As OrganizationResponse = service.Execute(req)
                Dim entityChanges As BusinessEntityChanges = CType( _
                    res("EntityChanges"),  _
                    BusinessEntityChanges)

                ' Process entity changes.
                For Each change As Object In entityChanges.Changes
                    Call MyBase.OutputBuffer.AddRow()

                    Dim newUpdated As NewOrUpdatedItem = TryCast(change, NewOrUpdatedItem)
                    Dim deleted As RemovedOrDeletedItem = TryCast(change, RemovedOrDeletedItem)

                    If Not newUpdated Is Nothing Then
                        ' New or updated.
                        MyBase.OutputBuffer.Buffer(CType(colsIdx("_Type"), Integer)) = "updated"
                        MyBase.OutputBuffer.Buffer(CType(colsIdx("Id"), Integer)) = newUpdated.NewOrUpdatedEntity.Id

                        For Each pair As KeyValuePair(Of String, Object) In newUpdated.NewOrUpdatedEntity.Attributes
                            If Not colsIdx.Contains(pair.Key) Then
                                Continue For
                            End If

                            Try
                                MyBase.OutputBuffer.Buffer(CType(colsIdx(pair.Key), Integer)) = pair.Value
                            Catch ex As Exception
                                Call FireError_(String.Format( _
                                    "Failed to process column '{0}': {1}", _
                                    pair.Key, _
                                    pair.Value))
                            End Try
                        Next
                    ElseIf Not deleted Is Nothing Then
                        ' Deleted.
                        MyBase.OutputBuffer.Buffer(CType(colsIdx("_Type"), Integer)) = "deleted"
                        MyBase.OutputBuffer.Buffer(CType(colsIdx("Id"), Integer)) = deleted.RemovedItem.Id
                    End If
                Next

                If entityChanges.MoreRecords Then
                    ' Setup next PageInfo.
                    pi.PageNumber += 1
                    pi.PagingCookie = entityChanges.PagingCookie
                Else
                    ' Reached end. Store token and exit loop.
                    SetVariable_(Me.TokenVariable, entityChanges.DataToken)
                    Exit While
                End If
            End While

            Call MyBase.OutputBuffer.SetEndOfRowset()
        Catch ex As Exception
            Call FireError_(ex.Message)
        Finally
            Call connection.Close()
        End Try
    End Sub ' CreateNewOutputRows


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    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

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

            If String.IsNullOrEmpty(Me.Attributes) Then
                Throw New Exception("Select attribute(s).")
            End If

            If String.IsNullOrEmpty(Me.TokenVariable) Then
                Throw New Exception("Select token variable.")
            End If

            Dim output As IDTSOutput100 = MyBase.ComponentMetaData.OutputCollection(0)
            If output.OutputColumnCollection.Count = 0 Then
                ' Setup output columns collection.
                Call SetupOutputColumns_()
            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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of entities in the currently selected Dynamics CRM connection.
    Public Function GetEntityList() As String()
        Dim result() As String

        Dim connection As IConnection = CType( _
            Me.DesignConnections(Me.CrmConnection).AcquireConnection(Nothing),  _
            IConnection)
        Call connection.Connect()

        Try
            result = connection.GetEntityList(2)  ' 2 - Read
            Call Array.Sort(result)
        Finally
            Call connection.Close()
        End Try

        GetEntityList = result
    End Function    ' GetEntityList


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of attributes in the currently selected entity.
    Public Function GetAttributeList() As String()
        Dim result As ArrayList = New ArrayList()

        Dim attrList() As IAttribute = GetAttributes_()
        For Each attr As IAttribute In attrList
            Call result.Add(attr.Name)
        Next

        Call result.Sort()

        GetAttributeList = CType(result.ToArray(GetType(String)), String())
    End Function    ' GetAttributeList


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetAttributes_() As IAttribute()
        If Not m_entityAttributes Is Nothing Then
            Return m_entityAttributes
        End If

        ' Cache entity attributes.
        Dim connection As IConnection = CType( _
            Me.DesignConnections(Me.CrmConnection).AcquireConnection(Nothing),  _
            IConnection)
        Call connection.Connect()

        Try
            Dim entity As IEntity = connection.GetEntity(Me.Entity)
            m_entityAttributes = entity.GetAttributes()
        Finally
            Call connection.Close()
        End Try

        GetAttributes_ = m_entityAttributes
    End Function    ' GetAttributes_


#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("Select Dynamics CRM entity.")> _
    <List("GetEntityList")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property Entity() As String
        Get
            Entity = m_entity
        End Get
        Set(ByVal value As String)
            If m_entity <> value Then
                If Not String.IsNullOrEmpty(m_entity) Then
                    ' Reset selected attributes.
                    Me.Attributes = String.Empty
                End If

                m_entity = value
            End If
        End Set
    End Property    ' Entity


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select one or more attributes to retrieve.")> _
    <List("GetAttributeList", True, False)> _
    Public Property Attributes() As String
        Get
            Attributes = m_attributes
        End Get
        Set(ByVal value As String)
            If m_attributes <> value Then
                If Not String.IsNullOrEmpty(m_attributes) Then
                    ' Force output columns to be reloaded.
                    If Me.ComponentMetaData.OutputCollection.Count > 0 Then
                        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)
                        Call output.OutputColumnCollection.RemoveAll()
                    End If
                End If

                m_attributes = value
            End If
        End Set
    End Property    ' Attributes


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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select variable containing token.")> _
    <Variable()> _
    Public Property TokenVariable() As String
        Get
            TokenVariable = m_tokenVariable
        End Get
        Set(value As String)
            m_tokenVariable = value
        End Set
    End Property    ' TokenVariable
#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 Entity Changes Source", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub ' FireError_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetVariable_(ByVal varName As String) As Object
        Dim result As Object
        Dim vars As IDTSVariables100 = Nothing

        Call Me.VariableDispenser.LockOneForRead(varName, vars)
        Try
            result = vars(varName).Value
        Finally
            Call vars.Unlock()
        End Try

        GetVariable_ = result
    End Function    ' GetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub SetVariable_(ByVal varName As String, ByVal value As Object)
        Dim vars As IDTSVariables100 = Nothing

        Call Me.VariableDispenser.LockOneForWrite(varName, vars)
        Try
            vars(varName).Value = value
        Finally
            Call vars.Unlock()
        End Try
    End Sub ' SetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub SetupOutputColumns_()
        ' Get entity attributes.
        Dim entityAttrList() As IAttribute = GetAttributes_()

        Dim attrList() As String = Me.Attributes.Split( _
            New String() {ListDelimiter}, _
            StringSplitOptions.None)

        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)
        Dim column As IDTSOutputColumn100 = Nothing

        ' Setup entity change type column.
        column = output.OutputColumnCollection.[New]()
        column.Name = "_Type"
        Call column.SetDataTypeProperties(DataType.DT_WSTR, 10, 0, 0, 0)

        ' Setup entity identifier column.
        column = output.OutputColumnCollection.[New]()
        column.Name = "Id"
        Call column.SetDataTypeProperties(DataType.DT_GUID, 0, 0, 0, 0)

        For Each value As String In attrList
            ' Find CRM attribute.
            Dim attr As IAttribute = FindAttribute_(entityAttrList, value)

            ' Setup output column.
            column = output.OutputColumnCollection.[New]()
            column.Name = attr.Name
            Call column.SetDataTypeProperties( _
                CType(attr.AttributeType, DataType), _
                attr.Length, _
                attr.Precision, _
                attr.Scale, _
                0)
        Next
    End Sub ' SetupOutputColumns_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function FindAttribute_( _
        ByVal attrList() As IAttribute, _
        ByVal name As String) As IAttribute

        Dim result As IAttribute = Nothing

        For Each attr As IAttribute In attrList
            If attr.Name.Equals(name, StringComparison.OrdinalIgnoreCase) Then
                ' Found.
                result = attr
                Exit For
            End If
        Next

        If result Is Nothing Then
            Throw New Exception(String.Format("'{0}' attribute not found.", name))
        End If

        FindAttribute_ = result
    End Function    ' FindAttribute_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns columns index.
    Private Function GetColumnsIdx_() As Hashtable
        Dim result As Hashtable = New Hashtable()

        Dim output As IDTSOutput100 = MyBase.ComponentMetaData.OutputCollection(0)
        Dim colsCount As Integer = output.OutputColumnCollection.Count
        For colIndex As Integer = 0 To colsCount - 1
            Dim column As IDTSOutputColumn100 = output.OutputColumnCollection(colIndex)
            result(column.Name) = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                output.Buffer, _
                column.LineageID)
        Next

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


#Region "Attributes"
    Private m_crmConnection As String
    Private m_entity As String
    Private m_entityAttributes() As IAttribute
    Private m_attributes As String
    Private m_batchSize As Integer
    Private m_tokenVariable As String
#End Region ' Attributes

End Class   ' ScriptMain
]]></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[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="3.0" schemaVersion="1.0">
	<msb:PropertyGroup>
		<msb:CodeName>SC_8b85598a4c8e4d4a8c2b07d73b45f02a</msb:CodeName>
		<msb:Language>msBuild</msb:Language>
		<msb:DisplayName>SC_8b85598a4c8e4d4a8c2b07d73b45f02a</msb:DisplayName>
		<msb:ProjectId>{818AAF52-44E9-4520-B9E6-27F462B9BCE9}</msb:ProjectId>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Project Include="SC_8b85598a4c8e4d4a8c2b07d73b45f02a.vbproj"/>
		<msb:File Include="My Project\AssemblyInfo.vb"/>
		<msb:File Include="My Project\Resources.Designer.vb"/>
		<msb:File Include="My Project\Settings.Designer.vb"/>
		<msb:File Include="main.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
		<msb:File Include="My Project\Resources.resx"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="My Project\Settings.settings"/>
	</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_8b85598a4c8e4d4a8c2b07d73b45f02a.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
DQkRBI63Mt0HLRFycwIAcAQofQAACnNXAAAKegcKBioTMAUAhgAAACIAABFzfgAACg0CKCUAAApv
WAAAChaMPgAAAW9ZAAAKDAhvWgAACm9bAAAKChYGF9oTBhMEK0kIb1oAAAoRBIw+AAABb38AAAoT
BQkRBW+AAAAKAm+BAAAKb4IAAAoIb4MAAAoRBW+EAAAKb4UAAAqMPgAAAW+GAAAKEQQX1hMEEQQR
BjGxCQsHKgAAHgIoFwAACioTMAIALQAAACMAABF+EgAABC0gcqkCAHDQDAAAAigUAAAKb5IAAApz
kwAACgsHgBIAAAR+EgAABCoAAAATMAEABgAAACQAABF+EwAABCoAAB4CgBMAAAQqQnMXAAAKKBEA
AAqAFQAABCoAAAAeAiiUAAAKKhswAQA/AAAAJQAAEX4UAAAELTJ+FQAABCgRAAAKKJUAAAp+FAAA
BC0cczsAAAaAFAAABN4QfhUAAAQoEQAACiiWAAAK3H4UAAAEKgABEAAAAgAdAAwpABAAAAAAtAAA
AM7K774BAAAAkQAAAGxTeXN0ZW0uUmVzb3VyY2VzLlJlc291cmNlUmVhZGVyLCBtc2NvcmxpYiwg
VmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2
MTkzNGUwODkjU3lzdGVtLlJlc291cmNlcy5SdW50aW1lUmVzb3VyY2VTZXQCAAAAAAAAAAAAAABQ
QURQQURQtAAAAEJTSkIBAAEAAAAAAAwAAAB2NC4wLjMwMzE5AAAAAAUAbAAAADAQAAAjfgAAnBAA
ACAVAAAjU3RyaW5ncwAAAAC8JQAA3AIAACNVUwCYKAAAEAAAACNHVUlEAAAAqCgAAMQHAAAjQmxv
YgAAAAAAAAACAAABVx2iCQkPAAAA+iUzABYAAAEAAABmAAAADQAAABUAAAA8AAAAGwAAAKIAAAAB
AAAATAAAACUAAAAHAAAAEQAAABcAAAAPAAAAAQAAAAsAAAABAAAAAgAAAAMAAAADAAAAAAD3FAEA
AAAAAAoAbgFEAQoAogGEAQYAsgGrAQoACgJEAQYAiAKrAQoACgPgAg4AXANFAxIAqwOKAxYA3AOK
AxIA6wOKAw4AnQRFAxoAaAVABQ4A9wXiBQYALAcZBwYA5wfWBwYAFAj/Bx4AewhmCB4AyAiyCB4A
4QiyCB4ADgn2CAYAOAklCQoAdwlQCQoAjwkTAB4AxAmnCQYA+QnZCQYAFwqrAQYAOwqrAQoAVAoT
AAYAmAp5CgYArAqrARIAswqKAwYAwAqrASIALwsGCyIAXgsGCyIAoQsGCw4A2QviBSYAIwz2CyYA
Lgz2CyYAQgz2CyYAXAz2CyYAcgz2CyYAhwz2CyYAnAz2CwYAyAytDAYA1wyrASYA4Qz2CwYA6wyt
DL8A8gwAAAYAOw2rAQYAeQ2rASYAiQ32CwoA2g1QCSYAmgf2CwYABw6rASoABw6rASYAEw72CwoA
OA5QCQYAdg6rASYAig72CyIACw8GCyIAJw8GCwYAVA+rASIAWg8GCy4A2wDUDy4AChDUDwYAHBCr
AQYAJxAZBw4ARhDiBQoAZhBQCRoAmBBABRoAqRBABRoA5xBABSIADhEGCxoALxFABQYAgxGrARYA
lBGKAyIAuBEGCw4AJRIDEg4AQRIDEhIAWRKKAw4AgBIDEh4AjhKyCB4AoxKyCB4AtRKyCB4A0BKy
CB4A4hKyCA4A+BIDEg4AChMDEgYAMBMeEwYAVxNGEwYAahMlCQYAvxPZCQYA3xPZCQYAFxT9EwYA
MBQeEwYATRR5CgYAWxQeEwYAdhQeEwYAkRQeEwYAqhQeEwYAwxQeEwYA4BQeEwAAAAABAAAAAAAB
AAEAAAAAACkANwAFAAEAAQAAAAAAXgA3AAkAAQACAAABEABpADcADQABAAMABQEAAHMAAAANAAUA
CAAFAQAAgQAAAA0ABQAPAAEAAACcAKkAHQAGABEAAQAAAM0AqQAtAAYAFwABAAAA2wCpAA0ACQAc
AAEAAADnAKkADQAKAB4AAQAAAPEAqQAgAAsAHwAAAAAA/AAIAQ0AEgA2AAABEAA5AakARQAUADoA
MQDNASAAMQD2AS0AMQAYAjoAMQA9AkcAIQAZA5AABgDbAMkABgDnAM0ABgCcANEAAQANBeEAAQAN
BeEAVoChBfUAAQBFB/UAAQBVB/UAAQBeBywBAQBxB/UAAQB+BzEBAQCKB/UAEQD3BzwBEQAgCEAB
EQCTCF4BEQCbCGIBUCAAAAAABhh+ARMAAQBYIAAAAAAGGH4BEwABAGAgAAAAABEYuQEXAAEAjCAA
AAAAEwjAARsAAQCkIAAAAAATCOYBKAABALwgAAAAABMIDwI1AAEA1CAAAAAAEwgtAkIAAQDsIAAA
AABGAnMCYwABAAghAAAAAEYCfAJoAAIAHCEAAAAAgwCNAmwAAgA0IQAAAABGApUCcQACAEghAAAA
ABEAngJ4AAIAZCEAAAAAAQC8AoAAAwCAIQAAAAAGGH4BEwAEAIghAAAAAAMI0AKLAAQAvCEAAAAA
Bhh+ARMABADQIQAAAAAGGH4BrwAEAOAhAAAAAEYKJQS7AAkA9CEAAAAARgo8BLsACQAIIgAAAACG
AFQEEwAJABAiAAAAAIYAWwQTAAkAGCIAAAAAhgBqBMAACQAwIgAAAAAGGH4BEwAJAFAiAAAAAEYD
sQQTAAkAVCIAAAAAAQC/BBMACQBwIgAAAABGAtME1QAJAMgiAAAAAEYD+QQTAA0AzCIAAAAABhh+
AeUADQDcIgAAAAAGCIEF6wAOAAgjAAAAAAYYfgHlAA4AGCMAAAAABhh+ARMADwAgIwAAAABGAvkE
EwAPANgmAAAAAAYArwX9AA8AwCcAAAAABgDDBbsAEAAcKAAAAAAGANEFuwAQAHwoAAAAAAEAAgYD
ARAA+CgAAAAABgiBBXEAEAAQKQAAAAAGCBEGCQEQABwpAAAAAAYIKQZxABEANCkAAAAABgg0BgkB
EQBoKQAAAAAGCD8GcQASAIApAAAAAAYITgYJARIA6CkAAAAABghdBmgAEwAAKgAAAAAGCGsGDgET
AAwqAAAAAAYIeQZxABQAJCoAAAAABgiLBgkBFAAwKgAAAAABCJ0GuwAVAFAqAAAAAAEAswYJARUA
fCoAAAAAAQDGBhMBFgDMKgAAAAABANsGGAEXABQrAAAAAAEA6AYTABkAECwAAAAAAQD8Bh4BGQBg
LAAAAAABADYHJwEbAPQsAAAAAAMYfgETABsA/CwAAAAAFggsCEQBGwA4LQAAAAAWCEAISQEbAEwt
AAAAABYITAhOARsAVC0AAAAAERi5ARcAHABoLQAAAAAGGH4BEwAcAHAtAAAAABYIqAhlARwAAAAB
AHoCAAABALMCAAABALMCAAABAPkDAAACAAMEAAADAAwEAAAEABQEAAAFABsEAAABAN8EAAACAOcE
AAADAPEEAAAEABsEAAABAPkDAAABAPkDAAABALgFAAABACMGAAABACMGAAABACMGAAABACMGAAAB
ACMGAAABAL4GAAABANMGAAABANMGAAACACMGAAABAAsHAAACABQHAAABAFgICQB+ARMAkQB+AW8B
oQB+AX4BEQB+ARMAqQB+ARMAJAB+ARMALAB+ARMANAB+ARMAPAB+ARMAJADQAosALADQAosANADQ
AosAPADQAosAsQB+ARMAuQB+ARMAwQB+AQkByQAIChgCGQBzAmMAGQB8AmgAKQApCiUCGQCVAnEA
2QBFCjUCGQB+ARMA4QB+AUUCRAAZA5AATACoCIsATABvCsICTAB+ARMA6QB+AdECOQB+Aa8A+QBU
BBMA+QBbBBMA+QBqBMAAAQF+AdECWQB+ARMAQQDWCuECQQBIC+0CCQGBC/MCEQG6C/kCGQHDC+sA
YQD9DAUDIQEPDRMAIQEXDQoDMQF+ARMAMQEiDQkBMQEyDRgBcQF+ARMA8QBODQ8DcQFUDRkDKQF+
ARMAKQFgDQ4BKQFqDQ4BkQGVAh8DOQGBDSQDSQG6CxMBQQGpDS0DVAC1DToDXADDDYsAOQDPDUsD
cQC6CwUDoQHmDVADSQAyDVUDWQHwDVsDqQEMDmEDqQE/BmcDZAC1DToDbADDDYsAdAAnDosAcQAv
DmMAdACoCI8DyQFEDpQD8QBUDpsDyQFbDhcAbABtDsAA0QGCDhMAUQGaDqID2QEMDmEDXABtDsAA
QQGqDsAAKQG6DmgAQQHJDnEAKQHaDgkBQQHrDnEAaQH5DnEAIQEFDxMA8QAZD+0DaQF+AQkBCQE/
D/ID6QG6C/gD4QF4D/8D+QGTD2gAGQGdDwkBWQD0DxAEAQK6CxYECQL9DAUDIQHDBR0EEQIiECME
GQJ+ARMAaQAxEHEAGQI6EDkEGQIiEBMAGQI+ED4EIQFOEFoEIQJYEAMBKQJwEG0E8QB+EPUA6QGT
D2gA+QGEEBMACQGOEIEEQQDCEIwEOQLYEJIEMQK6C5sEQQKoCKIEMQL3EBMAOQL+EJIEQQJvCq4E
+QEiEbkESQImEQkBSQI4Eb8EaQBOEWgAaQBgEWgAaQBrEWgAaQB5EWgA8QBzAuAE8QBUDugEcQB+
ARMA+QG6C/sESQIxEHEAWQCmEQIFYQLNEQgF4QHPDWgASQLfEWgAaQLtEQ4FcQAyDRQFcQJ+AQkB
eQJ+ARkDgQJ+ARMAiQJ+AXkFkQJ+AQkBmQJ+AQkBoQJ+AdYFiQJ+AQkBsQJ+AQ4BuQJ+ARMAwQJ+
AQkBKQA5E6kGeQB+Aa8GiQB+ARMA0QJfE8wG0QJlE8wG2QJ+ARMA4QJ+AQ4B6QJ+ARMA8QJ+AQkB
+QJ+AQkBAQN+AQkBCQN+AQkBEQN+AQkBGQN+AQkBIQN+AQkBKQN+AQkBMQN+AQkBDgAsAPgAKQCD
ANIBLgADBdYCLgD7BJoHLgDTBP4GLgDzBIMHLgALBdYCLgATBZoHLgDDBNYGLgDLBN8GLgDbBEYH
LgDjBFMHLgDrANYCLgATAX0HLgDrBNYCQAArAJ0BQAATAHUBQwATAHUBQwAbAIQBSQCDAOMBYwAb
AIQBYwATAHUBaQCDAPcBgAArAJ0BgwBzAJ0BgwAbAIQBgwB7AJ0BiQCDAAQCoAArAJ0BowATAHUB
owDDAE0CwAArAJ0BwwATAHUBwwDrANYC4AArAJ0B4wATAdYCAAErAJ0BAAETAHUBAwETAdYCIAEr
AJ0BIAETAHUBKQFjBMgFKQFbBHwGKQGLBGUGQAErAJ0BQAETAHUBSQFbBPAFSQFjBMgFSQFzBN0F
SQFrBHUBYAErAJ0BYAETAHUBYwFDBDgFYwE7BCoFYwETAdYCYwFLBJ0BaQFTBIAFaQFbBJgFaQFj
BMgFgAErAJ0BiQF7BBEGiQFbBBoGiQFjBMgFoAErAJ0BqQFjBMgFqQFbBD4GqQGDBJ0BwAETAHUB
wAErAJ0B4AErAJ0B6QETAMMGAAITAHUBAAIrAJ0BCQITAMMGKQK7BJ0BgAMTAdYCwAMTAdYCvgHD
AcgBzQEdAiECLAIxAkACQALIAtwC3AIdAugCAAOoAwUELwRJBGEEMQIxAjECdAQhAjECegQdAqYE
swTKBO4EGgW3Br4G0QYEAAEABgAFAAcABgAJAAgACwAJAAwADwANABEAAACiAU8AAABbAlQAAAAK
AlkAAABnAl4AAAAjA5gAAAB2BMQAAACJBMQAAACTBfAAAACTBTQBAACaBzQBAAChBzQBAACsBzgB
AAC2BzQBAADEB8QAAADnB1QBAABeCFkBAABYCGoBAgAEAAMAAgAFAAUAAgAGAAcAAgAHAAkAAgAP
AAsAAgASAA0AAgATAA8AAgAdABEAAgAlABMAAQAmABMAAQAoABUAAgAnABUAAQAqABcAAgApABcA
AgArABkAAQAsABkAAgAtABsAAQAuABsAAgAvAB0AAgA3AB8AAgA4ACEAAQA5ACEAAgA8ACMAdQB1
AIgAogGpAbABtwGvArYCMwNEA20DegOHA0YEBIAAAAEAAAAAAAAAAAAAAAAAqQAAAAQAAAAAAAAA
AAAAAAEACgAAAAAACgAAAAAAAAAAAAAACgATAAAAAAABAAAAAAAAAAAAAACdAC8DAAAAAAwAAAAA
AAAAAAAAAKYAbQMAAAAADAAAAAAAAAAAAAAApgC7AwAAAAAMAAAAAAAAAAAAAACmAB0FAAAAAAQA
AAAAAAAAAAAAAAEAqwEAAAAADAAAAAAAAAAAAAAApgDiCgAAAAABAAAAAAAAAAAAAACdAOULAAAA
AAIAAAAAAAAAAAAAAAEACgAAAAAADAAAAAAAAAAAAAAApgC1DwAAAAAAAAAAAQAAAIcTAAAFAAQA
BgAEAAAAEAAMALECAAAQABkAsQIAAAAAGwCxAi0AOwItAL0CwwArBAAAAAAAPE1vZHVsZT4AbXNj
b3JsaWIATWljcm9zb2Z0LlZpc3VhbEJhc2ljAE15QXBwbGljYXRpb24AU0NfOGI4NTU5OGE0Yzhl
NGQ0YThjMmIwN2Q3M2I0NWYwMmEuTXkATXlDb21wdXRlcgBNeVByb2plY3QATXlXZWJTZXJ2aWNl
cwBUaHJlYWRTYWZlT2JqZWN0UHJvdmlkZXJgMQBPdXRwdXRCdWZmZXIAU0NfOGI4NTU5OGE0Yzhl
NGQ0YThjMmIwN2Q3M2I0NWYwMmEAVXNlckNvbXBvbmVudABDb25uZWN0aW9ucwBWYXJpYWJsZXMA
U2NyaXB0TWFpbgBNeVJlc291cmNlcwBTQ184Yjg1NTk4YTRjOGU0ZDRhOGMyYjA3ZDczYjQ1ZjAy
YS5NeS5SZXNvdXJjZXMATXlTZXR0aW5ncwBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuQXBwbGljYXRp
b25TZXJ2aWNlcwBBcHBsaWNhdGlvbkJhc2UALmN0b3IATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkRl
dmljZXMAQ29tcHV0ZXIAU3lzdGVtAE9iamVjdAAuY2N0b3IAZ2V0X0NvbXB1dGVyAG1fQ29tcHV0
ZXJPYmplY3RQcm92aWRlcgBnZXRfQXBwbGljYXRpb24AbV9BcHBPYmplY3RQcm92aWRlcgBVc2Vy
AGdldF9Vc2VyAG1fVXNlck9iamVjdFByb3ZpZGVyAGdldF9XZWJTZXJ2aWNlcwBtX015V2ViU2Vy
dmljZXNPYmplY3RQcm92aWRlcgBBcHBsaWNhdGlvbgBXZWJTZXJ2aWNlcwBFcXVhbHMAbwBHZXRI
YXNoQ29kZQBUeXBlAEdldFR5cGUAVG9TdHJpbmcAQ3JlYXRlX19JbnN0YW5jZV9fAFQAaW5zdGFu
Y2UARGlzcG9zZV9fSW5zdGFuY2VfXwBnZXRfR2V0SW5zdGFuY2UATWljcm9zb2Z0LlZpc3VhbEJh
c2ljLk15U2VydmljZXMuSW50ZXJuYWwAQ29udGV4dFZhbHVlYDEAbV9Db250ZXh0AEdldEluc3Rh
bmNlAENvenlSb2MuU1NJU1BsdXMuMjAxNABDb3p5Um9jLlNxbFNlcnZlci5TU0lTAFNjcmlwdEJ1
ZmZlclBsdXMATWljcm9zb2Z0LlNxbFNlcnZlci5UeFNjcmlwdABNaWNyb3NvZnQuU3FsU2VydmVy
LkR0cy5QaXBlbGluZQBTY3JpcHRDb21wb25lbnQATWljcm9zb2Z0LlNxbFNlcnZlci5QaXBlbGlu
ZUhvc3QAUGlwZWxpbmVCdWZmZXIAT3V0cHV0TmFtZU1hcABDb21wb25lbnQAT2JqZWN0SUQASXNJ
bnB1dABCdWZmZXIAT3V0cHV0TWFwAGdldF9TdGF0aWNJbnB1dENvbHVtbnMAZ2V0X1N0YXRpY091
dHB1dENvbHVtbnMAQWRkUm93AFNldEVuZE9mUm93c2V0AEVuZE9mUm93c2V0AFN0YXRpY0lucHV0
Q29sdW1ucwBTdGF0aWNPdXRwdXRDb2x1bW5zAFNjcmlwdENvbXBvbmVudFBsdXMARmluaXNoT3V0
cHV0cwBNYXJrT3V0cHV0c0ZpbmlzaGVkAFByaW1lT3V0cHV0AE91dHB1dHMAT3V0cHV0SURzAEJ1
ZmZlcnMAQ3JlYXRlTmV3T3V0cHV0Um93cwBQYXJlbnRDb21wb25lbnQATWljcm9zb2Z0LlNxbFNl
cnZlci5EVFNSdW50aW1lV3JhcABNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5SdW50aW1lLldyYXBw
ZXIASURUU0Nvbm5lY3Rpb25NYW5hZ2VyMTAwAGdldF9Dcm1Db25uZWN0aW9uAENybUNvbm5lY3Rp
b24ATGlzdERlbGltaXRlcgBWYWxpZGF0ZQBlcnJNZXNzYWdlAEdldEVudGl0eUxpc3QAR2V0QXR0
cmlidXRlTGlzdABDb3p5Um9jLkR5bmFtaWNzLkNybQBJQXR0cmlidXRlAEdldEF0dHJpYnV0ZXNf
AHNldF9Dcm1Db25uZWN0aW9uAHZhbHVlAGdldF9FbnRpdHkAc2V0X0VudGl0eQBnZXRfQXR0cmli
dXRlcwBzZXRfQXR0cmlidXRlcwBnZXRfQmF0Y2hTaXplAHNldF9CYXRjaFNpemUAZ2V0X1Rva2Vu
VmFyaWFibGUAc2V0X1Rva2VuVmFyaWFibGUAZ2V0X0NybUNvbm5lY3Rpb25UeXBlAEZpcmVFcnJv
cl8AbWVzc2FnZQBHZXRWYXJpYWJsZV8AdmFyTmFtZQBTZXRWYXJpYWJsZV8AU2V0dXBPdXRwdXRD
b2x1bW5zXwBGaW5kQXR0cmlidXRlXwBhdHRyTGlzdABuYW1lAFN5c3RlbS5Db2xsZWN0aW9ucwBI
YXNodGFibGUAR2V0Q29sdW1uc0lkeF8AbV9jcm1Db25uZWN0aW9uAG1fZW50aXR5AG1fZW50aXR5
QXR0cmlidXRlcwBtX2F0dHJpYnV0ZXMAbV9iYXRjaFNpemUAbV90b2tlblZhcmlhYmxlAEVudGl0
eQBBdHRyaWJ1dGVzAEJhdGNoU2l6ZQBUb2tlblZhcmlhYmxlAENybUNvbm5lY3Rpb25UeXBlAFN5
c3RlbS5SZXNvdXJjZXMAUmVzb3VyY2VNYW5hZ2VyAF9yZXNNZ3IAU3lzdGVtLkdsb2JhbGl6YXRp
b24AQ3VsdHVyZUluZm8AX3Jlc0N1bHR1cmUAZ2V0X1Jlc291cmNlTWFuYWdlcgBnZXRfQ3VsdHVy
ZQBzZXRfQ3VsdHVyZQBWYWx1ZQBDdWx0dXJlAFN5c3RlbS5Db25maWd1cmF0aW9uAEFwcGxpY2F0
aW9uU2V0dGluZ3NCYXNlAG1fVmFsdWUAbV9TeW5jT2JqZWN0AGdldF9WYWx1ZQBTeXN0ZW0uQ29t
cG9uZW50TW9kZWwARWRpdG9yQnJvd3NhYmxlQXR0cmlidXRlAEVkaXRvckJyb3dzYWJsZVN0YXRl
AFN5c3RlbS5Db2RlRG9tLkNvbXBpbGVyAEdlbmVyYXRlZENvZGVBdHRyaWJ1dGUAU3lzdGVtLkRp
YWdub3N0aWNzAERlYnVnZ2VySGlkZGVuQXR0cmlidXRlAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5D
b21waWxlclNlcnZpY2VzAFN0YW5kYXJkTW9kdWxlQXR0cmlidXRlAEhpZGVNb2R1bGVOYW1lQXR0
cmlidXRlAFN5c3RlbS5Db21wb25lbnRNb2RlbC5EZXNpZ24ASGVscEtleXdvcmRBdHRyaWJ1dGUA
U3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcwBSdW50aW1lSGVscGVycwBHZXRPYmplY3RW
YWx1ZQBSdW50aW1lVHlwZUhhbmRsZQBHZXRUeXBlRnJvbUhhbmRsZQBBY3RpdmF0b3IAQ3JlYXRl
SW5zdGFuY2UATXlHcm91cENvbGxlY3Rpb25BdHRyaWJ1dGUAc2V0X1ZhbHVlAFN5c3RlbS5SdW50
aW1lLkludGVyb3BTZXJ2aWNlcwBDb21WaXNpYmxlQXR0cmlidXRlAFN0cmluZwBTY3JpcHRCdWZm
ZXIAQ0xTQ29tcGxpYW50QXR0cmlidXRlAEdldE91dHB1dElEAE1pY3Jvc29mdC5TcWxTZXJ2ZXIu
RFRTUGlwZWxpbmVXcmFwAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlBpcGVsaW5lLldyYXBwZXIA
SURUU0NvbXBvbmVudE1ldGFEYXRhMTAwAGdldF9Db21wb25lbnRNZXRhRGF0YQBJRFRTUnVudGlt
ZUNvbm5lY3Rpb25Db2xsZWN0aW9uMTAwAGdldF9SdW50aW1lQ29ubmVjdGlvbkNvbGxlY3Rpb24A
SURUU1J1bnRpbWVDb25uZWN0aW9uMTAwAGdldF9JdGVtAGdldF9Db25uZWN0aW9uTWFuYWdlcgBJ
Q29ubmVjdGlvbgBDb3p5Um9jLkR5bmFtaWNzAENvenlSb2MuRHluYW1pY3MuQ3JtMjAxMS5Pcmdh
bml6YXRpb25TZXJ2aWNlAFBhZ2luZ0luZm8AT3JnYW5pemF0aW9uUmVxdWVzdABPcmdhbml6YXRp
b25TZXJ2aWNlQ2xpZW50AEJ1c2luZXNzRW50aXR5Q2hhbmdlcwBPcmdhbml6YXRpb25SZXNwb25z
ZQBSZW1vdmVkT3JEZWxldGVkSXRlbQBOZXdPclVwZGF0ZWRJdGVtAFN5c3RlbS5Db2xsZWN0aW9u
cy5HZW5lcmljAEtleVZhbHVlUGFpcmAyAEV4Y2VwdGlvbgBDb2x1bW5TZXQATGlzdGAxAEVudW1l
cmF0b3IAQWNxdWlyZUNvbm5lY3Rpb24AQ29ubmVjdABHZXRTZXJ2aWNlAHNldF9SZXF1ZXN0TmFt
ZQBzZXRfSXRlbQBTdHJpbmdTcGxpdE9wdGlvbnMAU3BsaXQAc2V0X0NvbHVtbnMAc2V0X0NvdW50
AHNldF9QYWdlTnVtYmVyAENvbnZlcnQARXhlY3V0ZQBCdXNpbmVzc0VudGl0eUNoYW5nZXNDb2xs
ZWN0aW9uAGdldF9DaGFuZ2VzAEdldEVudW1lcmF0b3IAZ2V0X0N1cnJlbnQAZ2V0X0J1ZmZlcgBD
b252ZXJzaW9ucwBUb0ludGVnZXIAZ2V0X05ld09yVXBkYXRlZEVudGl0eQBHdWlkAGdldF9JZABB
dHRyaWJ1dGVDb2xsZWN0aW9uAGdldF9LZXkAQ29udGFpbnMAUHJvamVjdERhdGEAU2V0UHJvamVj
dEVycm9yAEZvcm1hdABDbGVhclByb2plY3RFcnJvcgBNb3ZlTmV4dABJRGlzcG9zYWJsZQBEaXNw
b3NlAEVudGl0eVJlZmVyZW5jZQBnZXRfUmVtb3ZlZEl0ZW0AZ2V0X01vcmVSZWNvcmRzAGdldF9Q
YWdlTnVtYmVyAGdldF9QYWdpbmdDb29raWUAc2V0X1BhZ2luZ0Nvb2tpZQBnZXRfRGF0YVRva2Vu
AGdldF9NZXNzYWdlAENsb3NlAElEVFNPdXRwdXQxMDAASXNOdWxsT3JFbXB0eQBJRFRTT3V0cHV0
Q29sbGVjdGlvbjEwMABnZXRfT3V0cHV0Q29sbGVjdGlvbgBJbnQzMgBJRFRTT3V0cHV0Q29sdW1u
Q29sbGVjdGlvbjEwMABnZXRfT3V0cHV0Q29sdW1uQ29sbGVjdGlvbgBnZXRfQ291bnQAc2V0X0Nv
bm5lY3Rpb25NYW5hZ2VySUQATWljcm9zb2Z0LlNxbFNlcnZlci5NYW5hZ2VkRFRTAE1pY3Jvc29m
dC5TcWxTZXJ2ZXIuRHRzLlJ1bnRpbWUAZ2V0X0Rlc2lnbkNvbm5lY3Rpb25zAENvbm5lY3Rpb25N
YW5hZ2VyAEFycmF5AFNvcnQAQXJyYXlMaXN0AGdldF9OYW1lAEFkZABUb0FycmF5AElFbnRpdHkA
R2V0RW50aXR5AEdldEF0dHJpYnV0ZXMAT3BlcmF0b3JzAENvbXBhcmVTdHJpbmcARW1wdHkAUmVt
b3ZlQWxsAEZpcmVFcnJvcgBJRFRTVmFyaWFibGVzMTAwAElEVFNWYXJpYWJsZURpc3BlbnNlcjEw
MABnZXRfVmFyaWFibGVEaXNwZW5zZXIATG9ja09uZUZvclJlYWQASURUU1ZhcmlhYmxlMTAwAFVu
bG9jawBMb2NrT25lRm9yV3JpdGUASURUU091dHB1dENvbHVtbjEwMABOZXcAc2V0X05hbWUARGF0
YVR5cGUAU2V0RGF0YVR5cGVQcm9wZXJ0aWVzAGdldF9BdHRyaWJ1dGVUeXBlAGdldF9MZW5ndGgA
Z2V0X1ByZWNpc2lvbgBnZXRfU2NhbGUAU3RyaW5nQ29tcGFyaXNvbgBQaXBlbGluZUNvbXBvbmVu
dABnZXRfSG9zdENvbXBvbmVudABJRFRTQnVmZmVyTWFuYWdlcjEwMABnZXRfQnVmZmVyTWFuYWdl
cgBnZXRfTGluZWFnZUlEAEZpbmRDb2x1bW5CeUxpbmVhZ2VJRABDb3p5Um9jLlNxbFNlcnZlci5T
U0lTLkF0dHJpYnV0ZXMAVmFsaWRhdGVQcm9wZXJ0aWVzQXR0cmlidXRlAFNvcnRQcm9wZXJ0aWVz
QXR0cmlidXRlAFNTSVNTY3JpcHRDb21wb25lbnRFbnRyeVBvaW50QXR0cmlidXRlAExpc3RBdHRy
aWJ1dGUARGVzY3JpcHRpb25BdHRyaWJ1dGUAQ2F0ZWdvcnlBdHRyaWJ1dGUAUmVmcmVzaFByb3Bl
cnRpZXNBdHRyaWJ1dGUAUmVmcmVzaFByb3BlcnRpZXMARGVmYXVsdFZhbHVlQXR0cmlidXRlAFZh
cmlhYmxlQXR0cmlidXRlAENvbm5lY3Rpb25BdHRyaWJ1dGUAU3lzdGVtLlJlZmxlY3Rpb24AQXNz
ZW1ibHkAZ2V0X0Fzc2VtYmx5AFN5c3RlbS5UaHJlYWRpbmcATW9uaXRvcgBFbnRlcgBFeGl0AERl
YnVnZ2VyTm9uVXNlckNvZGVBdHRyaWJ1dGUAU0NfOGI4NTU5OGE0YzhlNGQ0YThjMmIwN2Q3M2I0
NWYwMmEuUmVzb3VyY2VzLnJlc291cmNlcwBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRl
AFJ1bnRpbWVDb21wYXRpYmlsaXR5QXR0cmlidXRlAFN5c3RlbS5SdW50aW1lLlZlcnNpb25pbmcA
VGFyZ2V0RnJhbWV3b3JrQXR0cmlidXRlAEFzc2VtYmx5RmlsZVZlcnNpb25BdHRyaWJ1dGUAR3Vp
ZEF0dHJpYnV0ZQBBc3NlbWJseVRyYWRlbWFya0F0dHJpYnV0ZQBBc3NlbWJseUNvcHlyaWdodEF0
dHJpYnV0ZQBBc3NlbWJseVByb2R1Y3RBdHRyaWJ1dGUAQXNzZW1ibHlDb21wYW55QXR0cmlidXRl
AEFzc2VtYmx5RGVzY3JpcHRpb25BdHRyaWJ1dGUAQXNzZW1ibHlUaXRsZUF0dHJpYnV0ZQBTQ184
Yjg1NTk4YTRjOGU0ZDRhOGMyYjA3ZDczYjQ1ZjAyYS5kbGwAAAANTwB1AHQAcAB1AHQAABtDAHIA
bQBDAG8AbgBuAGUAYwB0AGkAbwBuAAArUgBlAHQAcgBpAGUAdgBlAEUAbgB0AGkAdAB5AEMAaABh
AG4AZwBlAHMAABVFAG4AdABpAHQAeQBOAGEAbQBlAAAPQwBvAGwAdQBtAG4AcwAABSwACgAAEVAA
YQBnAGUASQBuAGYAbwAAF0QAYQB0AGEAVgBlAHIAcwBpAG8AbgAAG0UAbgB0AGkAdAB5AEMAaABh
AG4AZwBlAHMAAAtfAFQAeQBwAGUAAA91AHAAZABhAHQAZQBkAAAFSQBkAABHRgBhAGkAbABlAGQA
IAB0AG8AIABwAHIAbwBjAGUAcwBzACAAYwBvAGwAdQBtAG4AIAAnAHsAMAB9ACcAOgAgAHsAMQB9
AAEPZABlAGwAZQB0AGUAZAAAP1MAZQBsAGUAYwB0ACAARAB5AG4AYQBtAGkAYwBzACAAQwBSAE0A
IABDAG8AbgBuAGUAYwB0AGkAbwBuAC4AADdTAGUAbABlAGMAdAAgAEQAeQBuAGEAbQBpAGMAcwAg
AEMAUgBNACAARQBuAHQAaQB0AHkALgAAKVMAZQBsAGUAYwB0ACAAYQB0AHQAcgBpAGIAdQB0AGUA
KABzACkALgAALVMAZQBsAGUAYwB0ACAAdABvAGsAZQBuACAAdgBhAHIAaQBhAGIAbABlAC4AABlE
AFkATgBBAE0ASQBDAFMALQBDAFIATQABRUQAeQBuAGEAbQBpAGMAcwAgAEMAUgBNACAARQBuAHQA
aQB0AHkAIABDAGgAYQBuAGcAZQBzACAAUwBvAHUAcgBjAGUAADUnAHsAMAB9ACcAIABhAHQAdABy
AGkAYgB1AHQAZQAgAG4AbwB0ACAAZgBvAHUAbgBkAC4AATFNAHkALgBSAGUAcwBvAHUAcgBjAGUA
cwAuAE0AeQBSAGUAcwBvAHUAcgBjAGUAcwAAACELsyYuW/hOn2PXinOAucwACLd6XFYZNOCJCLA/
X38R1Qo6AyAAAQMAAAEEAAASDAcGFRIYARIMBAAAEggHBhUSGAESCAQAABIRBwYVEhgBEhEEAAAS
FAcGFRIYARIUBAgAEgwECAASCAQIABIRBAgAEhQEIAECHAMgAAgEIAASFQMgAA4CHgAHEAEBHgAe
AAcwAQEBEB4AAhMABCAAEwAHBhUSGQETAAQoABMACBbPSQu4DDTqCImEXc2AgMyRCyAFARIhCAIS
JRIpBCAAHQ4DIAACBCgAHQ4DBhIkAwYSKAMGEhwLIAQBCB0IHRIlEikDBhIhBSABARIhBCAAEjEE
KAASMQIGDgQsAAoABSABAhAOBSAAHRI1BCABAQ4EIAEBCAQgARwOBSACAQ4cCCACEjUdEjUOBCAA
EjkEBh0SNQIGCAMoAA4DKAAIAwYSPQMGEkEEAAASPQQAABJBBQABARJBBAgAEj0ECAASQQMGEjQC
BhwEAAASNAQIABI0BSABARFNCAEAAQAAAAAABSACAQ4OGAEACk15VGVtcGxhdGUIMTAuMC4wLjAA
AAQBAAAABhUSGAESDAYVEhgBEggGFRIYARIRBhUSGAESFAQHARIMBAcBEggEBwESEQQHARIUEAEA
C015LkNvbXB1dGVyAAATAQAOTXkuQXBwbGljYXRpb24AAAwBAAdNeS5Vc2VyAAATAQAOTXkuV2Vi
U2VydmljZXMAAAQAARwcAwcBAgMHAQgGAAESFRFpBAcBEhUDBwEOBRABAB4ABAoBHgAEBwEeAAcg
BAEODg4OYQEANFN5c3RlbS5XZWIuU2VydmljZXMuUHJvdG9jb2xzLlNvYXBIdHRwQ2xpZW50UHJv
dG9jb2wSQ3JlYXRlX19JbnN0YW5jZV9fE0Rpc3Bvc2VfX0luc3RhbmNlX18AAAAGFRIYARMABhUS
GQETAAQKARMABSABARMACAcDEwATABMABCABAQIFAQAAAAAEBwEdDgYAAggSKQ4EBwIICAUgABKA
hQUgABKAiQYgARKAjRwEBwESMQQgARwcBCABHAgJIAIdDh0OEYDFBSABAR0OBAABDhwIIAESgKUS
gJkFIAASgM0GFRKAvQEcCSAAFRGAwQETAAYVEYDBARwEIAASJQQAAQgcBSACAQgcBSAAEoDVBSAA
EYDdBSAAEoDhDBUSgL0BFRGAsQIOHAwVEYDBARURgLECDhwHFRGAsQIOHAQgABMBBgABARKAtQYA
Aw4OHBwFIAASgO1EBxISORKAkRKAlRKAmRKAnRKAoRKApRwSgKkSgK0VEYCxAg4cEoC1EoC1EoC5
HQ4SgJUVEYDBARwVEYDBARURgLECDhwEAAECDgUgABKA9QYgARKA8RwFIAASgP0KBwQCAhKA8RKA
tQUgABKBAQYgARKBBRwFIAEdDggHEAEBAR0eAAMKAQ4JBwMSgJEdDh0OBCABCBwHIAESgQkSFQId
DhAHBh0SNR0OEoENEjUIHRI1BiABEoERDgsHAxKAkR0SNRKBEQYAAwgODgIFBwESgPEGBwIdDh0O
CiAGAQgODg4IEAIFIAASgR0IIAIBDhASgRkGIAESgSEcAyAAHAcHAxwcEoEZBCABARwFBwESgRkF
IAASgSUKIAUBEYEpCAgICBUHCR0OEoElHRI1EoDxEjUOHQ4IHQ4HIAICDhGBLQUAAg4OHAwHBRI1
EjUSNQgdEjUGIAESgSUcBSAAEoExBSAAEoE1BSACCAgIBSACARwcDwcHCBI5EoDxEjkIEoElCA0B
AAhWYWxpZGF0ZQAAQAEABQAAAA1Dcm1Db25uZWN0aW9uBkVudGl0eQpBdHRyaWJ1dGVzDVRva2Vu
VmFyaWFibGUJQmF0Y2hTaXplAAAGIAMBDgICFwEAEEdldEF0dHJpYnV0ZUxpc3QBAAAALwEAKlNl
bGVjdCBvbmUgb3IgbW9yZSBhdHRyaWJ1dGVzIHRvIHJldHJpZXZlLgAADQEACFNldHRpbmdzAAAG
IAEBEYFVEgEADUdldEVudGl0eUxpc3QAACABABtTZWxlY3QgRHluYW1pY3MgQ1JNIGVudGl0eS4A
AAgBAIgTAAAAACMBAB5TcGVjaWZpZXMgcmV0cmlldmUgYmF0Y2ggc2l6ZS4AACYBACFTZWxlY3Qg
dmFyaWFibGUgY29udGFpbmluZyB0b2tlbi4AABYBABFDcm1Db25uZWN0aW9uVHlwZQAALAEAJ1Nl
bGVjdCBEeW5hbWljcyBDUk0gQ29ubmVjdGlvbiBNYW5hZ2VyLgAABSAAEoFlByACAQ4SgWUGBwIS
PRI9BAcBEkEIAQACAAAAAAAEAAEBHAQHARI0CAEACAAAAAAAHgEAAQBUAhZXcmFwTm9uRXhjZXB0
aW9uVGhyb3dzAUcBABouTkVURnJhbWV3b3JrLFZlcnNpb249djQuMAEAVA4URnJhbWV3b3JrRGlz
cGxheU5hbWUQLk5FVCBGcmFtZXdvcmsgNAwBAAcxLjAuMC4wAAApAQAkNjk2ZjkyNTctNTY2My00
ZmNmLWIyNDktMGM0YTY5N2QzMDM0AAAFAQABAAAWAQARQ29weXJpZ2h0IEAgIDIwMTYAACgBACNT
Q184Yjg1NTk4YTRjOGU0ZDRhOGMyYjA3ZDczYjQ1ZjAyYQAAABhfAAAAAAAAAAAAAC5fAAAAIAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAgXwAAAAAAAAAAX0NvckRsbE1haW4AbXNjb3JlZS5kbGwAAAAA
AP8lACAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAYAACAAAAAAAAAAAAA
AAAAAAABAAEAAAAwAACAAAAAAAAAAAAAAAAAAAABAAAAAABIAAAAWGAAAIADAAAAAAAAAAAAAIAD
NAAAAFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4ARgBPAAAAAAC9BO/+AAABAAAAAQAAAAAAAAAB
AAAAAAA/AAAAAAAAAAQAAAACAAAAAAAAAAAAAAAAAAAARAAAAAEAVgBhAHIARgBpAGwAZQBJAG4A
ZgBvAAAAAAAkAAQAAABUAHIAYQBuAHMAbABhAHQAaQBvAG4AAAAAAAAAsATgAgAAAQBTAHQAcgBp
AG4AZwBGAGkAbABlAEkAbgBmAG8AAAC8AgAAAQAwADAAMAAwADAANABiADAAAABwACQAAQBGAGkA
bABlAEQAZQBzAGMAcgBpAHAAdABpAG8AbgAAAAAAUwBDAF8AOABiADgANQA1ADkAOABhADQAYwA4
AGUANABkADQAYQA4AGMAMgBiADAANwBkADcAMwBiADQANQBmADAAMgBhAAAAMAAIAAEARgBpAGwA
ZQBWAGUAcgBzAGkAbwBuAAAAAAAxAC4AMAAuADAALgAwAAAAcAAoAAEASQBuAHQAZQByAG4AYQBs
AE4AYQBtAGUAAABTAEMAXwA4AGIAOAA1ADUAOQA4AGEANABjADgAZQA0AGQANABhADgAYwAyAGIA
MAA3AGQANwAzAGIANAA1AGYAMAAyAGEALgBkAGwAbAAAAEgAEgABAEwAZQBnAGEAbABDAG8AcAB5
AHIAaQBnAGgAdAAAAEMAbwBwAHkAcgBpAGcAaAB0ACAAQAAgACAAMgAwADEANgAAAHgAKAABAE8A
cgBpAGcAaQBuAGEAbABGAGkAbABlAG4AYQBtAGUAAABTAEMAXwA4AGIAOAA1ADUAOQA4AGEANABj
ADgAZQA0AGQANABhADgAYwAyAGIAMAA3AGQANwAzAGIANAA1AGYAMAAyAGEALgBkAGwAbAAAAGgA
JAABAFAAcgBvAGQAdQBjAHQATgBhAG0AZQAAAAAAUwBDAF8AOABiADgANQA1ADkAOABhADQAYwA4
AGUANABkADQAYQA4AGMAMgBiADAANwBkADcAMwBiADQANQBmADAAMgBhAAAANAAIAAEAUAByAG8A
ZAB1AGMAdABWAGUAcgBzAGkAbwBuAAAAMQAuADAALgAwAC4AMAAAADgACAABAEEAcwBzAGUAbQBi
AGwAeQAgAFYAZQByAHMAaQBvAG4AAAAxAC4AMAAuADAALgAwAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAMAAAAQD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA]]></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_8b85598a4c8e4d4a8c2b07d73b45f02a</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="{827FCBEF-F6ED-42F3-A1C9-F2EB31AF726D}" /></connections><outputs><output id="15" name="Output" hasSideEffects="true"><externalMetadataColumns /></output></outputs></component>