<component id="2" name="Dynamics CRM Opportunity State" componentClassID="{874F7595-FB5F-40FF-96AF-FBFF8250E3EF}" description="Executes a custom script." localeId="1033" version="7" 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="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[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\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("ScriptComponent_9745e92176eb4102bf453925359014c3.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_9745e92176eb4102bf453925359014c3.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2012")> 
<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("8bbd4082-c20c-4695-ac1b-eb181c1d001e")> 

' 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[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 Overrides Sub ProcessInput(ByVal InputID As Integer, ByVal InputName As String, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)

        If InputID = MyBase.ComponentMetaData.InputCollection("Input").ID Then
            Input_ProcessInput(New InputBuffer(Me, InputID, True, Buffer, OutputMap))
        End If

    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[scriptcomponent_9745e92176eb4102bf453925359014c3.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-16"?>
<Project ToolsVersion="4.0" 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>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <OutputType>Library</OutputType>
    <RootNamespace>ScriptComponent_9745e92176eb4102bf453925359014c3.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_9745e92176eb4102bf453925359014c3.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{35395EE6-016B-4A9E-B4DF-8ECA79A1E8D5}</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,42353,42354,42355</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,42353,42354,42355</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.2012, 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.SSISPlus.2012.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=10.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.Web.Services" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=11.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=11.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=11.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=11.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="{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;vstadebugc527b0d4-8cec-47e2-883d-1028a7c69e03/72363684-7081-4727-a4e1-83ad17ad8774&quot;" />
        <Host Name="SSIS_ScriptComponent" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC110</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <PropertyGroup>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
  </PropertyGroup>
  <PropertyGroup>
    <TargetFrameworkProfile>
    </TargetFrameworkProfile>
  </PropertyGroup>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[BufferWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class InputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overloads Function NextRow() As Boolean
        NextRow = MyBase.NextRow()
    End Function

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class
]]></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-2012 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.Web.Services.Protocols

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


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<ColumnMappings()> _
<ValidateProperties("Validate")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Class Consts
        Public Const Opportunity As String = "opportunity"
        Public Const OpportunityClose As String = "opportunityclose"
        Public Const OpportunityState As String = "opportunitystatecode"
        Public Const OpportunityStatus As String = "opportunitystatuscode"
        Public Const ReferenceType As String = "ReferenceType"
        Public Const OpportunityId As String = "opportunityid"
    End Class


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Try
            If Not m_service2011 Is Nothing Then
                Call Process2011_(Row.Buffer)
            ElseIf Not m_service4 Is Nothing Then
                Call Process4_(Row.Buffer)
            Else
                Call Process3_(Row.Buffer)
            End If
        Catch ex As SoapException
            Call FireError_(ex.Detail.InnerXml)
        Catch ex As Exception
            Call FireError_(ex.Message)
        End Try
    End Sub ' Input_ProcessInputRow


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

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

        Dim service As Object = m_connection.GetService(0)   ' 0 - CRM Service

        m_service2011 = TryCast(service, CRM2011.OrganizationServiceClient)
        If m_service2011 Is Nothing Then
            m_service4 = TryCast(service, CRM4.CrmService)
            If m_service4 Is Nothing Then
                m_service3 = TryCast(service, CRM3.CrmService)
                If m_service3 Is Nothing Then
                    Throw New Exception("Unhandled service object.")
                End If
            End If
        End If

        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
        m_closeEntity = m_connection.ConstructEntity(Consts.OpportunityClose)

        ' Get input column indexes.
        Dim colsCount As Integer = input.InputColumnCollection.Count
        m_inputIdx = New Integer(colsCount - 1) {}
        For colIndex As Integer = 0 To colsCount - 1
            Dim inputCol As IDTSInputColumn100 = Input.InputColumnCollection(colIndex)

            Dim extColumn As IDTSExternalMetadataColumn100 = Input.ExternalMetadataColumnCollection.GetObjectByID( _
                    inputCol.ExternalMetadataColumnID)

            If extColumn.Name = Consts.OpportunityState Then
                m_stateIdx = colIndex
            ElseIf extColumn.Name = Consts.OpportunityStatus Then
                m_statusIdx = colIndex
            Else
                Dim refType As String = CStr(extColumn.CustomPropertyCollection(Consts.ReferenceType).Value)
                Call m_closeEntity.SetupAttribute(extColumn.Name, refType)
            End If

            m_inputIdx(colIndex) = MyBase.HostComponent.BufferManager.FindColumnByLineageID( _
                input.Buffer, _
                inputCol.LineageID)
        Next

        If m_stateIdx = -1 Then
            Throw New Exception(Consts.OpportunityState + " not mapped.")
        End If
    End Sub ' PreExecute


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

        Call m_connection.Close()
        m_closeEntity = Nothing
        m_inputIdx = Nothing
        m_stateIdx = -1
        m_statusIdx = -1
    End Sub ' PostExecute


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

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

            Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
            If input.IsAttached AndAlso input.InputColumnCollection.Count = 0 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
        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

        If String.IsNullOrEmpty(Me.CrmConnection) Then
            Throw New Exception("Connection not selected.")
        End If

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

        ' Get opportunityclose attributes.
        Dim connection As ICrmConnection = Nothing
        Dim attributes As ICrmAttribute()
        Try
            Dim manager As ConnectionManager = Me.DesignConnections(Me.CrmConnection)
            connection = CType(manager.AcquireConnection(Nothing), ICrmConnection)
            Call connection.Connect()

            attributes = connection.GetEntityAttributes(Consts.OpportunityClose)
        Finally
            If Not connection Is Nothing Then
                Call connection.Close()
            End If
        End Try

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

        Dim extColumn As IDTSExternalMetadataColumn100

        ' Setup column metadata.
        For Each attribute As ICrmAttribute In attributes
            extColumn = input.ExternalMetadataColumnCollection.[New]()
            extColumn.Name = attribute.Name
            extColumn.DataType = CType(attribute.AttributeType, DataType)
            extColumn.Length = attribute.Length
            extColumn.Precision = attribute.Precision
            extColumn.Scale = attribute.Scale
            extColumn.CodePage = 0

            ' Setup reference type property.
            Dim prop As IDTSCustomProperty100 = extColumn.CustomPropertyCollection.[New]()
            prop.Name = Consts.ReferenceType
            prop.Value = attribute.Reference
        Next

        ' Include opportunity state column.
        extColumn = input.ExternalMetadataColumnCollection.[New]()
        extColumn.Name = Consts.OpportunityState
        extColumn.DataType = DataType.DT_I4

        ' Include opportunity status column.
        extColumn = input.ExternalMetadataColumnCollection.[New]()
        extColumn.Name = Consts.OpportunityStatus
        extColumn.DataType = DataType.DT_I4
    End Sub ' ReinitializeMetaData


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <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
#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 Opportunity State", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub ' FireError_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub GetValues_( _
        ByRef buffer As PipelineBuffer, _
        ByRef state As Integer, _
        ByRef status As Integer)

        state = -1
        status = -1

        Dim entityIndex As Integer = 0
        Dim colsCount As Integer = m_inputIdx.Length
        For colIndex As Integer = 0 To colsCount - 1
            Dim bufIndex As Integer = m_inputIdx(colIndex)

            ' Get value.
            Dim value As Object = Nothing
            If Not buffer.IsNull(bufIndex) Then
                value = buffer(bufIndex)

                If TypeOf value Is BlobColumn Then
                    value = buffer.GetString(bufIndex)
                End If
            End If

            If colIndex = m_stateIdx Then
                state = Convert.ToInt32(value)
            ElseIf colIndex = m_statusIdx Then
                status = Convert.ToInt32(value)
            Else
                m_closeEntity.SetAttributeValue(entityIndex, value)
                entityIndex += 1
            End If
        Next

        If state < 0 OrElse state > 2 Then
            Throw New Exception("Unhandled opportunity state.")
        End If
    End Sub ' GetValues_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub Process2011_(ByVal buffer As PipelineBuffer)
        Dim req As CRM2011.OrganizationRequest = New CRM2011.OrganizationRequest()

        Dim state, status As Integer
        Call GetValues_(buffer, state, status)

        Dim osv As CRM2011.OptionSetValue

        ' Setup status.
        osv = New CRM2011.OptionSetValue()
        osv.Value = status
        req("Status") = osv

        Select Case state
            Case 0
                req.RequestName = "SetState"

                ' Setup entity
                Dim entityRef As CRM2011.EntityReference = New CRM2011.EntityReference()
                entityRef.LogicalName = Consts.Opportunity
                entityRef.Id = New Guid(m_closeEntity.GetAttributeValue(Consts.OpportunityId).ToString())
                req("EntityMoniker") = entityRef

                ' Setup state.
                osv = New CRM2011.OptionSetValue()
                osv.Value = state
                req("State") = osv

            Case 1
                req.RequestName = "WinOpportunity"
                req("OpportunityClose") = m_closeEntity.ConstructDynamicEntity()
            Case 2
                req.RequestName = "LoseOpportunity"
                req("OpportunityClose") = m_closeEntity.ConstructDynamicEntity()
        End Select

        Call m_service2011.Execute(req)
    End Sub ' Process2011_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub Process4_(ByVal buffer As PipelineBuffer)
        Dim req As CRM4.Request = Nothing

        Dim state, status As Integer
        Call GetValues_(buffer, state, status)

        Select Case CType(state, CRM4.OpportunityState)
            Case CRM4.OpportunityState.Open
                Dim stateReq As CRM4.SetStateDynamicEntityRequest = New CRM4.SetStateDynamicEntityRequest()

                ' Setup entity.
                Dim moniker As CRM4.Moniker = New CRM4.Moniker()
                moniker.Name = Consts.Opportunity
                moniker.Id = New Guid(m_closeEntity.GetAttributeValue(Consts.OpportunityId).ToString())
                stateReq.Entity = moniker

                ' Setup state.
                stateReq.State = "Open"

                ' Setup status.
                stateReq.Status = status

                req = stateReq

            Case CRM4.OpportunityState.Won
                Dim winReq As CRM4.WinOpportunityRequest = New CRM4.WinOpportunityRequest()
                winReq.Status = status
                winReq.OpportunityClose = CType( _
                    m_closeEntity.ConstructDynamicEntity(),  _
                    CRM4.BusinessEntity)
                winReq.Status = status

                req = winReq

            Case CRM4.OpportunityState.Lost
                Dim loseReq As CRM4.LoseOpportunityRequest = New CRM4.LoseOpportunityRequest()
                loseReq.Status = status
                loseReq.OpportunityClose = CType( _
                    m_closeEntity.ConstructDynamicEntity(),  _
                    CRM4.BusinessEntity)
                loseReq.Status = status

                req = loseReq
        End Select

        Call m_service4.Execute(req)
    End Sub ' Process4_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub Process3_(ByVal buffer As PipelineBuffer)
        Dim req As CRM3.Request = Nothing

        Dim state, status As Integer
        Call GetValues_(buffer, state, status)

        Select Case CType(state, CRM3.OpportunityState)
            Case CRM3.OpportunityState.Open
                Dim stateReq As CRM3.SetStateDynamicEntityRequest = New CRM3.SetStateDynamicEntityRequest()

                ' Setup entity.
                Dim moniker As CRM3.Moniker = New CRM3.Moniker()
                moniker.Name = Consts.Opportunity
                moniker.Id = New Guid(m_closeEntity.GetAttributeValue(Consts.OpportunityId).ToString())
                stateReq.Entity = moniker

                ' Setup state.
                stateReq.State = "Open"

                ' Setup status.
                stateReq.Status = status

                req = stateReq

            Case CRM3.OpportunityState.Won
                Dim winReq As CRM3.WinOpportunityRequest = New CRM3.WinOpportunityRequest()
                winReq.Status = status
                winReq.OpportunityClose = CType( _
                    m_closeEntity.ConstructDynamicEntity(),  _
                    CRM3.BusinessEntity)
                winReq.Status = status

                req = winReq

            Case CRM3.OpportunityState.Lost
                Dim loseReq As CRM3.LoseOpportunityRequest = New CRM3.LoseOpportunityRequest()
                loseReq.Status = status
                loseReq.OpportunityClose = CType( _
                    m_closeEntity.ConstructDynamicEntity(),  _
                    CRM3.BusinessEntity)
                loseReq.Status = status

                req = loseReq
        End Select

        Call m_service3.Execute(req)
    End Sub ' Process3_
#End Region ' Internals


#Region "Attributes"
    Private m_crmConnection As String

    Private m_connection As ICrmConnection
    Private m_service2011 As CRM2011.OrganizationServiceClient
    Private m_service4 As CRM4.CrmService
    Private m_service3 As CRM3.CrmService
    Private m_closeEntity As ICrmEntity
    Private m_inputIdx() As Integer
    Private m_stateIdx As Integer = -1
    Private m_statusIdx As Integer = -1
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Project]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<c:Project xmlns:c="http://schemas.microsoft.com/codeprojectml/2010/08/main" xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" runtimeVersion="4.0" schemaVersion="1.0">
	<msb:PropertyGroup>
		<msb:ProjectId>{78835E48-62E5-4A70-A787-D7C432EE44A6}</msb:ProjectId>
		<msb:NoContent>Reference;Import;Folder</msb:NoContent>
		<msb:Language>msBuild</msb:Language>
		<msb:DisplayName>scriptcomponent_9745e92176eb4102bf453925359014c3</msb:DisplayName>
		<msb:CodeName>scriptcomponent_9745e92176eb4102bf453925359014c3</msb:CodeName>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
		<msb:File Include="main.vb"/>
		<msb:File Include="My Project\Settings.Designer.vb"/>
		<msb:File Include="My Project\Resources.Designer.vb"/>
		<msb:File Include="My Project\AssemblyInfo.vb"/>
		<msb:File Include="My Project\Resources.resx"/>
		<msb:File Include="My Project\Settings.settings"/>
		<msb:Project Include="scriptcomponent_9745e92176eb4102bf453925359014c3.vbproj"/>
	</msb:ItemGroup>
</c:Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Settings.settings]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version='1.0' encoding='iso-8859-1'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)" GeneratedClassNamespace="" GeneratedClassName="MySettings">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\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[ScriptComponent_9745e92176eb4102bf453925359014c3.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
AAomKh4CKBcAAAoqHgIoFwAACioTMAIALQAAABwAABF+GQAABC0gclkDAHDQDQAAAigUAAAKb5sA
AApznAAACgsHgBkAAAR+GQAABCoAAAATMAEABgAAAB0AABF+GgAABCoAAB4CgBoAAAQqQnMXAAAK
KBEAAAqAHAAABCoAAAAeAiidAAAKKhswAQA/AAAAHgAAEX4bAAAELTJ+HAAABCgRAAAKKJ4AAAp+
GwAABC0cczEAAAaAGwAABN4QfhwAAAQoEQAACiifAAAK3H4bAAAEKgABEAAAAgAdAAwpABAAAAAB
tAAAAM7K774BAAAAkQAAAGxTeXN0ZW0uUmVzb3VyY2VzLlJlc291cmNlUmVhZGVyLCBtc2Nvcmxp
YiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1
YzU2MTkzNGUwODkjU3lzdGVtLlJlc291cmNlcy5SdW50aW1lUmVzb3VyY2VTZXQCAAAAAAAAAAAA
AABQQURQQURQtAAAAEJTSkIBAAEAAAAAAAwAAAB2NC4wLjMwMzE5AAAAAAUAbAAAAKgPAAAjfgAA
FBAAACgVAAAjU3RyaW5ncwAAAAA8JQAAjAMAACNVUwDIKAAAEAAAACNHVUlEAAAA2CgAAAwHAAAj
QmxvYgAAAAAAAAACAAABVx2iCQkPAAAA+iUzABYAAAEAAABnAAAADgAAABwAAAAyAAAAGwAAAKsA
AAAGAAAAPgAAAB4AAAAHAAAADQAAAA8AAAAJAAAAAQAAAA0AAAABAAAAAwAAAAMAAAACAAAAAADq
FAEAAAAAAAoAsAGGAQoA5AHGAQYA9AHtAQoATAKGAQYAygLtAQoATAMiAw4AngOHAxIA7QPMAxYA
HgTMAxIALQTMAw4A0QSHAxoAjAVkBQ4AlgaHAx4A8AbDBh4ANQcYBx4ANQdLBw4AdAeHAwYALggd
CAYAWwhGCCIAwgitCCIADwn5CCIAKAn5CCIAVQk9CQYAfwlsCQoAvgmXCQoA1gkTACIACwruCQYA
QAogCgYAXgrtAQYAggrtAQoAmwoTAAYA3wrACgYA8wrtARIA+grMAwYABwvtASYAagtBCyYAmQtB
CyYAxAtBCyYA4QtBCyYAJAxBCyoAhQxnDAYAkwztAQoAqAyXCS4AzwzEDCYADQ1BCyYAKw1BCwYA
Yw3tASYAeQ1BCyYAug1BCwoAOw6XCSYAUw5BCyYAkA5BCwoApg6XCRYAwQ7MAyYA5Q5BCwYARA/t
AQ4AgA+HAzIAzQ+tDzIAAgGtDxoAPRBkBRYAyxDMAwYA4BDtAR4AAhHDBh4AERHDBh4AJRHDBgYA
NRHtATYANRHtAR4AkxHDBh4AsBEYBx4AuBEYBx4AwBEYBx4A3REYBx4A8xEYBx4A3gcYBx4AKhIY
Bx4AThIYBx4AsBFLBx4AuBFLBx4AwBFLBx4A3RFLBx4A8xFLBx4A3gdLBx4AKhJLBx4AThJLBxIA
VxLMAw4AoBJ+Eg4AvBJ+Eg4A1BJ+EiIA6BL5CAYADxP9EgYANhMlEwYASRNsCQYAshMgCgYA0hMg
CgYAChTwEwYAIxT9EgYAQBTACgYAThT9EgYAaRT9EgYAhBT9EgYAnRT9EgYAthT9EgYA0xT9EgAA
AAABAAAAAAABAAEAAAAAACkANwAFAAEAAQAAAAAAcgA3AAkAAQACAAABEAB9ADcADQABAAMABQEA
AIcAAAANAAUACAAFAQAAlQAAAA0ABQAPAAEAAACwALwAHQAGABEAAQAAAPQAvAAtAAYAFgABAAAA
AgG8AA0ACAAaAAEAAAAOAbwADQAJABwAAQAAABgBvAAgAAoAHQADAAAAIwEAAA0AEwArAAAAAAAq
ATYBDQAZACwAAAEQAHsBvABRABsAMAAxAA8CIAAxADgCLQAxAFoCOgAxAH8CRwAhAFsDkAAGAAIB
yQAGAA4BzQABADEF4QABADEF4QABAIYGEQEBAKUGFAEBAAoHGAEBAEAHHAEBAGkHIAEBAH8HJAEB
AI0HKAEBAJgHLAEBAKMHLAFWgMEHEQFWgM0HEQFWgN4HEQFWgO8HEQFWgAEIEQFWgA8IEQERAD4I
9QERAGcI+QERANoIFwIRAOIIGwJQIAAAAAAGGMABEwABAFggAAAAAAYYwAETAAEAYCAAAAAAERj7
ARcAAQCMIAAAAAATCAICGwABAKQgAAAAABMIKAIoAAEAvCAAAAAAEwhRAjUAAQDUIAAAAAATCG8C
QgABAOwgAAAAAEYCtQJjAAEACCEAAAAARgK+AmgAAgAcIQAAAACDAM8CbAACADQhAAAAAEYC1wJx
AAIASCEAAAAAEQDgAngAAgBkIQAAAAABAP4CgAADAIAhAAAAAAYYwAETAAQAiCEAAAAAAwgSA4sA
BAC8IQAAAAAGGMABEwAEANAhAAAAAAYYwAGvAAQA4CEAAAAARgpnBLsACQD0IQAAAABGCn4EuwAJ
AAgiAAAAAIYAlgTAAAkAICIAAAAAhgCeBMAACQA4IgAAAAAGGMABEwAJAFgiAAAAAEYC5QTRAAkA
iCIAAAAARgMEBdsADQCcIgAAAABGAxcF2wAOAKAiAAAAAAYYwAHlAA8AsCIAAAAABgilBesAEADc
IgAAAAAGGMAB5QAQAOwiAAAAAAYYwAETABEABCMAAAAARgIXBdsAEQCgIwAAAABGAsUFEwASAGQl
AAAAAEYC0AUTABIAlCUAAAAABgDcBfUAEgBAJgAAAABGAvAFEwATAPAnAAAAAAYIpQVxABMACCgA
AAAABggFBvsAEwAUKAAAAAABCB0GuwAUADQoAAAAAAEAMwb7ABQAYCgAAAAAAQBGBgABFQAsKQAA
AAABAGUGCwEYAEQqAAAAAAEAcgYLARkARCsAAAAAAQB8BgsBGgBELAAAAAAGGMABEwAbAEwsAAAA
AAMYwAETABsAVCwAAAAAFghzCP0BGwCQLAAAAAAWCIcIAgIbAKQsAAAAABYIkwgHAhsArCwAAAAA
ERj7ARcAHADALAAAAAAGGMABEwAcAMgsAAAAABYI7wgeAhwAAAABALwCAAABAPUCAAABAPUCAAAB
ADsEAAACAEUEAAADAE4EAAAEAFYEAAAFAF0EAAABAPIEAAACAPoEAAADAFYEAAAEAF0EAAABAFYE
AAABAC0FAAABADsEAAABADsEAAABAC0FAAABAOUFAAABABcGAAABAD4GAAABAFEGAAACAFgGAAAD
AF4GAAABAFEGAAABAFEGAAABAFEGAAABAJ8ICQDAARMAqQDAASgCuQDAATcCEQDAARMAwQDAARMA
JADAARMALADAARMANADAARMAPADAARMAJAASA4sALAASA4sANAASA4sAPAASA4sAyQDAARMA0QDA
ARMA2QDAAfsA4QBPCtECGQC1AmMAGQC+AmgAKQBwCt4CGQDXAnEA8QCMCu4CGQDAARMA+QDAAf4C
RABbA5AATADvCIsATAC2CnsDTADAARMAAQHAAYoDOQDAAa8AEQGWBMAAEQGeBMAAGQHAAYoDWQDA
ARMAQQCDC5oDIQGwC6ADKQHRC6YDMQHaC2gAIQEEDK0DOQHRC7MDQQE9DOsAOQCdDL8DWQG0DMQD
SQHXDMsDYQHiDHEAWQHvDBcAUQEBDXEAQQDFBRMAYQA+DdoDaQBQDRMAaQBYDd8DUQHAAfsAaQBp
DeQDMQGWDeoDgQGwDWgAgQHRC/ADMQHiDfcDcQEHDmgAiQEkDv0DaQEyDnEAkQFFDgQEaQFzDgsE
mQHRCxEEoQHvCBgEqQHXAhwEiQCyDiEEWQDTDicEsQH6Di0EMQGdDGgAcQEMD2gAuQEaDzMEQQDQ
BRMAaQAwDxMACQE2D0oEwQHAAfsAMQFZD8AAQQFoD/sAWQDwBRMAKQGwDWgAWQDfD1oE2QHRC2AE
0QE+DdoDaQD1D2cEiQEJEIoDgQEUEBMAiQEUEBMAiQEeEG8EyQEyDnEAaQEiEPsAyQErEGgAaQFG
EHUEyQFTEGgAaQFeEHwEyQFpEGgAaQF3EHwEyQGFEGgAaQGPEHwEaQGZEHwEmQEeEIEEoQEiEPsA
yQGmEHEAoQG2CocECQG0EBEBIQG6ELAESQDEELsESQDRC98DSQDWEMAE8QHoEMUEiQDwEMoEAQLA
ARMA+QHAARMA+QG2CnwEAQI6EdkEAQJDEfsACQLAARMACQJTEfsAiQBjEd8EEQLAAfsACQJ1EeQE
iQB8ERgEcQCoEesEOQLAARMAMQLAARMAMQIiEPsAMQJ1EeQEOQIKEgkFOQIVEvsAOQIfEnwEQQLA
ARMAQQIfEnwEQQI5EhAFSQLAARMASQIfEnwESQI5EhAFeQCoERcFeQLAARMAcQLAARMAcQIiEPsA
cQJ1EeQEeQIKEj0FeQIVEvsAeQIfEnwEgQLAARMAgQIfEnwEgQI5EkQFiQLAARMAiQIfEnwEiQI5
EkQFgQCoEUsFqQLAARMAsQLAAfsAuQLAARMAwQLAAfsAyQLAAfsAKQAYE8MFkQDAAckFoQDAARMA
2QI+E+YF2QJEE+YF4QLAARMA6QLAAXwE8QLAARMA+QLAAfsAAQPAAfsACQPAAfsAEQPAAfsAGQPA
AfsAIQPAAfsAKQPAAfsAMQPAAfsAOQPAAfsADgBMADMBDgBQAEoBDgBUAGsBDgBYAJQBDgBcAL8B
DgBgANoBKQCDAIsCLgBDBb0GLgA7BZ0GLgBbBb0GLgALAZcGLgALBfAFLgDrAI8DLgBTBY8DLgAz
BY8DLgBLBfoGLgATBfkFLgAbBRgGLgAjBWAGLgArBW0GQAArAFYCQAATAC4CQwATAC4CQwAbAD0C
SQCDAKkCYwAbAD0CYwATAC4CaQCDAJwCgAArAFYCgwAbAD0CgwB7AFYCgwBzAFYCiQCDAL0CoAAr
AFYCowDDAAYDowATAC4CwAArAFYCwwATAC4CwwDrAI8D4AArAFYC4wALAY8DAAErAFYCAAETAC4C
AwELAY8DIAErAFYCIAETAC4CKQHTBJYFKQHLBH8FQAErAFYCQAETAC4CYAErAFYCYAETAC4CYwEL
AY8DYwGzBFYCYwG7BHEFYwHDBFYCaQETAN0FgAErAFYCiQETAN0FoAErAFYCqQEDBVYCwAETAC4C
wAErAFYC4AErAFYCAAITAC4CAAIrAFYCQAMLAY8DgAMLAY8DdwJ8AoEChgLWAtoC5QLqAvkC+QKB
A5UDlQPWAtYCugPRAzkETwSMBOoCqQTWAtAE9AQgBVQF0QXYBesFBAABAAYABQAHAAYACQAIAAsA
CQANAAsADgANAAAA5AFPAAAAnQJUAAAATAJZAAAAqQJeAAAAZQOYAAAAqgTEAAAAvQTEAAAAtwXw
AAAAtwUvAQAArwfEAAAALggNAgAApQgSAgAAnwgjAgIABAADAAIABQAFAAIABgAHAAIABwAJAAIA
DwALAAIAEgANAAIAEwAPAAIAGwARAAIAIwATAAEAJAATAAIAJQAVAAIALQAXAAIALgAZAAEALwAZ
AAIAMgAbAHUAdQCIAFsCYgJpAnACaANvAwSAAAABAAAAAAAAAAAAAAAAALwAAAAEAAAAAAAAAAAA
AAABAAoAAAAAAAoAAAAAAAAAAAAAAAoAEwAAAAAAAQAAAAAAAAAAAAAAnQBxAwAAAAALAAAAAAAA
AAAAAACmAK8DAAAAAAsAAAAAAAAAAAAAAKYA/QMAAAAACwAAAAAAAAAAAAAApgBBBQAAAAABAAAA
AAAAAAAAAACdALIGAAAAAAQAAAAAAAAAAAAAAAEA7QEAAAAACwAAAAAAAAAAAAAApgAdCwAAAAAE
AAAAAAAAAAAAAAAKAFMMAAAAAAQAAAAAAAAAAAAAAAEAxAwAAAAACwAAAAAAAAAAAAAApgCODwAA
AAACAAAAAAAAAAAAAAABAAoAAAAAAAAAAAABAAAAZhMAAAUABAAGAAQADAALAAAAEAAMAPMCAAAQ
ABkA8wIAAAAAGwDzAi0A9AItAHYDAAAAAAA8TW9kdWxlPgBtc2NvcmxpYgBNaWNyb3NvZnQuVmlz
dWFsQmFzaWMATXlBcHBsaWNhdGlvbgBTY3JpcHRDb21wb25lbnRfOTc0NWU5MjE3NmViNDEwMmJm
NDUzOTI1MzU5MDE0YzMudmJwcm9qLk15AE15Q29tcHV0ZXIATXlQcm9qZWN0AE15V2ViU2Vydmlj
ZXMAVGhyZWFkU2FmZU9iamVjdFByb3ZpZGVyYDEASW5wdXRCdWZmZXIAU2NyaXB0Q29tcG9uZW50
Xzk3NDVlOTIxNzZlYjQxMDJiZjQ1MzkyNTM1OTAxNGMzLnZicHJvagBVc2VyQ29tcG9uZW50AENv
bm5lY3Rpb25zAFZhcmlhYmxlcwBTY3JpcHRNYWluAENvbnN0cwBNeVJlc291cmNlcwBTY3JpcHRD
b21wb25lbnRfOTc0NWU5MjE3NmViNDEwMmJmNDUzOTI1MzU5MDE0YzMudmJwcm9qLk15LlJlc291
cmNlcwBNeVNldHRpbmdzAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5BcHBsaWNhdGlvblNlcnZpY2Vz
AEFwcGxpY2F0aW9uQmFzZQAuY3RvcgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuRGV2aWNlcwBDb21w
dXRlcgBTeXN0ZW0AT2JqZWN0AC5jY3RvcgBnZXRfQ29tcHV0ZXIAbV9Db21wdXRlck9iamVjdFBy
b3ZpZGVyAGdldF9BcHBsaWNhdGlvbgBtX0FwcE9iamVjdFByb3ZpZGVyAFVzZXIAZ2V0X1VzZXIA
bV9Vc2VyT2JqZWN0UHJvdmlkZXIAZ2V0X1dlYlNlcnZpY2VzAG1fTXlXZWJTZXJ2aWNlc09iamVj
dFByb3ZpZGVyAEFwcGxpY2F0aW9uAFdlYlNlcnZpY2VzAEVxdWFscwBvAEdldEhhc2hDb2RlAFR5
cGUAR2V0VHlwZQBUb1N0cmluZwBDcmVhdGVfX0luc3RhbmNlX18AVABpbnN0YW5jZQBEaXNwb3Nl
X19JbnN0YW5jZV9fAGdldF9HZXRJbnN0YW5jZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuTXlTZXJ2
aWNlcy5JbnRlcm5hbABDb250ZXh0VmFsdWVgMQBtX0NvbnRleHQAR2V0SW5zdGFuY2UAQ296eVJv
Yy5TU0lTUGx1cy4yMDEyAENvenlSb2MuU3FsU2VydmVyLlNTSVMAU2NyaXB0QnVmZmVyUGx1cwBN
aWNyb3NvZnQuU3FsU2VydmVyLlR4U2NyaXB0AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlBpcGVs
aW5lAFNjcmlwdENvbXBvbmVudABNaWNyb3NvZnQuU3FsU2VydmVyLlBpcGVsaW5lSG9zdABQaXBl
bGluZUJ1ZmZlcgBPdXRwdXROYW1lTWFwAENvbXBvbmVudABPYmplY3RJRABJc0lucHV0AEJ1ZmZl
cgBPdXRwdXRNYXAAZ2V0X1N0YXRpY0lucHV0Q29sdW1ucwBnZXRfU3RhdGljT3V0cHV0Q29sdW1u
cwBOZXh0Um93AEVuZE9mUm93c2V0AFN0YXRpY0lucHV0Q29sdW1ucwBTdGF0aWNPdXRwdXRDb2x1
bW5zAFNjcmlwdENvbXBvbmVudFBsdXMAUHJvY2Vzc0lucHV0AElucHV0SUQASW5wdXROYW1lAElu
cHV0X1Byb2Nlc3NJbnB1dABJbnB1dF9Qcm9jZXNzSW5wdXRSb3cAUm93AFBhcmVudENvbXBvbmVu
dABNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1J1bnRpbWVXcmFwAE1pY3Jvc29mdC5TcWxTZXJ2ZXIu
RHRzLlJ1bnRpbWUuV3JhcHBlcgBJRFRTQ29ubmVjdGlvbk1hbmFnZXIxMDAAZ2V0X0NybUNvbm5l
Y3Rpb24AQ3JtQ29ubmVjdGlvbgBQcmVFeGVjdXRlAFBvc3RFeGVjdXRlAFZhbGlkYXRlAGVyck1l
c3NhZ2UAUmVpbml0aWFsaXplTWV0YURhdGEAc2V0X0NybUNvbm5lY3Rpb24AdmFsdWUAZ2V0X0Ny
bUNvbm5lY3Rpb25UeXBlAEZpcmVFcnJvcl8AbWVzc2FnZQBHZXRWYWx1ZXNfAGJ1ZmZlcgBzdGF0
ZQBzdGF0dXMAUHJvY2VzczIwMTFfAFByb2Nlc3M0XwBQcm9jZXNzM18AbV9jcm1Db25uZWN0aW9u
AElDcm1Db25uZWN0aW9uAG1fY29ubmVjdGlvbgBDb3p5Um9jLkR5bmFtaWNzAENvenlSb2MuRHlu
YW1pY3MuQ3JtMjAxMS5Pcmdhbml6YXRpb25TZXJ2aWNlAE9yZ2FuaXphdGlvblNlcnZpY2VDbGll
bnQAbV9zZXJ2aWNlMjAxMQBDb3p5Um9jLkR5bmFtaWNzLkNybS5TZXJ2aWNlAENybVNlcnZpY2UA
bV9zZXJ2aWNlNABDb3p5Um9jLkR5bmFtaWNzLkNybTMuU2VydmljZQBtX3NlcnZpY2UzAElDcm1F
bnRpdHkAbV9jbG9zZUVudGl0eQBtX2lucHV0SWR4AG1fc3RhdGVJZHgAbV9zdGF0dXNJZHgAQ3Jt
Q29ubmVjdGlvblR5cGUAT3Bwb3J0dW5pdHkAT3Bwb3J0dW5pdHlDbG9zZQBPcHBvcnR1bml0eVN0
YXRlAE9wcG9ydHVuaXR5U3RhdHVzAFJlZmVyZW5jZVR5cGUAT3Bwb3J0dW5pdHlJZABTeXN0ZW0u
UmVzb3VyY2VzAFJlc291cmNlTWFuYWdlcgBfcmVzTWdyAFN5c3RlbS5HbG9iYWxpemF0aW9uAEN1
bHR1cmVJbmZvAF9yZXNDdWx0dXJlAGdldF9SZXNvdXJjZU1hbmFnZXIAZ2V0X0N1bHR1cmUAc2V0
X0N1bHR1cmUAVmFsdWUAQ3VsdHVyZQBTeXN0ZW0uQ29uZmlndXJhdGlvbgBBcHBsaWNhdGlvblNl
dHRpbmdzQmFzZQBtX1ZhbHVlAG1fU3luY09iamVjdABnZXRfVmFsdWUAU3lzdGVtLkNvbXBvbmVu
dE1vZGVsAEVkaXRvckJyb3dzYWJsZUF0dHJpYnV0ZQBFZGl0b3JCcm93c2FibGVTdGF0ZQBTeXN0
ZW0uQ29kZURvbS5Db21waWxlcgBHZW5lcmF0ZWRDb2RlQXR0cmlidXRlAFN5c3RlbS5EaWFnbm9z
dGljcwBEZWJ1Z2dlckhpZGRlbkF0dHJpYnV0ZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuQ29tcGls
ZXJTZXJ2aWNlcwBTdGFuZGFyZE1vZHVsZUF0dHJpYnV0ZQBIaWRlTW9kdWxlTmFtZUF0dHJpYnV0
ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVzaWduAEhlbHBLZXl3b3JkQXR0cmlidXRlAFN5c3Rl
bS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMAUnVudGltZUhlbHBlcnMAR2V0T2JqZWN0VmFsdWUA
UnVudGltZVR5cGVIYW5kbGUAR2V0VHlwZUZyb21IYW5kbGUAQWN0aXZhdG9yAENyZWF0ZUluc3Rh
bmNlAE15R3JvdXBDb2xsZWN0aW9uQXR0cmlidXRlAHNldF9WYWx1ZQBTeXN0ZW0uUnVudGltZS5J
bnRlcm9wU2VydmljZXMAQ29tVmlzaWJsZUF0dHJpYnV0ZQBTdHJpbmcAU2NyaXB0QnVmZmVyAENM
U0NvbXBsaWFudEF0dHJpYnV0ZQBNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1BpcGVsaW5lV3JhcABN
aWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZS5XcmFwcGVyAElEVFNDb21wb25lbnRNZXRh
RGF0YTEwMABnZXRfQ29tcG9uZW50TWV0YURhdGEASURUU0lucHV0Q29sbGVjdGlvbjEwMABnZXRf
SW5wdXRDb2xsZWN0aW9uAElEVFNJbnB1dDEwMABnZXRfSXRlbQBnZXRfSUQASURUU1J1bnRpbWVD
b25uZWN0aW9uQ29sbGVjdGlvbjEwMABnZXRfUnVudGltZUNvbm5lY3Rpb25Db2xsZWN0aW9uAElE
VFNSdW50aW1lQ29ubmVjdGlvbjEwMABnZXRfQ29ubmVjdGlvbk1hbmFnZXIAU3lzdGVtLldlYi5T
ZXJ2aWNlcwBTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scwBTb2FwRXhjZXB0aW9uAEV4Y2Vw
dGlvbgBnZXRfQnVmZmVyAFByb2plY3REYXRhAFNldFByb2plY3RFcnJvcgBTeXN0ZW0uWG1sAFht
bE5vZGUAZ2V0X0RldGFpbABnZXRfSW5uZXJYbWwAQ2xlYXJQcm9qZWN0RXJyb3IAZ2V0X01lc3Nh
Z2UASURUU0V4dGVybmFsTWV0YWRhdGFDb2x1bW4xMDAASURUU0lucHV0Q29sdW1uMTAwAEFjcXVp
cmVDb25uZWN0aW9uAENvbm5lY3QAR2V0U2VydmljZQBJbnQzMgBDb25zdHJ1Y3RFbnRpdHkASURU
U0lucHV0Q29sdW1uQ29sbGVjdGlvbjEwMABnZXRfSW5wdXRDb2x1bW5Db2xsZWN0aW9uAGdldF9D
b3VudABJRFRTRXh0ZXJuYWxNZXRhZGF0YUNvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0X0V4dGVybmFs
TWV0YWRhdGFDb2x1bW5Db2xsZWN0aW9uAGdldF9FeHRlcm5hbE1ldGFkYXRhQ29sdW1uSUQAR2V0
T2JqZWN0QnlJRABnZXRfTmFtZQBPcGVyYXRvcnMAQ29tcGFyZVN0cmluZwBJRFRTQ3VzdG9tUHJv
cGVydHlDb2xsZWN0aW9uMTAwAGdldF9DdXN0b21Qcm9wZXJ0eUNvbGxlY3Rpb24ASURUU0N1c3Rv
bVByb3BlcnR5MTAwAENvbnZlcnNpb25zAFNldHVwQXR0cmlidXRlAFBpcGVsaW5lQ29tcG9uZW50
AGdldF9Ib3N0Q29tcG9uZW50AElEVFNCdWZmZXJNYW5hZ2VyMTAwAGdldF9CdWZmZXJNYW5hZ2Vy
AGdldF9MaW5lYWdlSUQARmluZENvbHVtbkJ5TGluZWFnZUlEAENsb3NlAElzTnVsbE9yRW1wdHkA
QXBwbGljYXRpb25FeGNlcHRpb24AZ2V0X0lzQXR0YWNoZWQAc2V0X0Nvbm5lY3Rpb25NYW5hZ2Vy
SUQASUNybUF0dHJpYnV0ZQBNaWNyb3NvZnQuU3FsU2VydmVyLk1hbmFnZWREVFMATWljcm9zb2Z0
LlNxbFNlcnZlci5EdHMuUnVudGltZQBDb25uZWN0aW9uTWFuYWdlcgBnZXRfRGVzaWduQ29ubmVj
dGlvbnMAR2V0RW50aXR5QXR0cmlidXRlcwBzZXRfSXNVc2VkAFJlbW92ZUFsbABOZXcAc2V0X05h
bWUAZ2V0X0F0dHJpYnV0ZVR5cGUARGF0YVR5cGUAc2V0X0RhdGFUeXBlAGdldF9MZW5ndGgAc2V0
X0xlbmd0aABnZXRfUHJlY2lzaW9uAHNldF9QcmVjaXNpb24AZ2V0X1NjYWxlAHNldF9TY2FsZQBz
ZXRfQ29kZVBhZ2UAZ2V0X1JlZmVyZW5jZQBFbXB0eQBGaXJlRXJyb3IASXNOdWxsAEJsb2JDb2x1
bW4AR2V0U3RyaW5nAENvbnZlcnQAVG9JbnQzMgBTZXRBdHRyaWJ1dGVWYWx1ZQBPcHRpb25TZXRW
YWx1ZQBPcmdhbml6YXRpb25SZXF1ZXN0AEVudGl0eVJlZmVyZW5jZQBHdWlkAHNldF9JdGVtAHNl
dF9SZXF1ZXN0TmFtZQBzZXRfTG9naWNhbE5hbWUAR2V0QXR0cmlidXRlVmFsdWUAc2V0X0lkAENv
bnN0cnVjdER5bmFtaWNFbnRpdHkAT3JnYW5pemF0aW9uUmVzcG9uc2UARXhlY3V0ZQBSZXF1ZXN0
AE1vbmlrZXIAU2V0U3RhdGVEeW5hbWljRW50aXR5UmVxdWVzdABXaW5PcHBvcnR1bml0eVJlcXVl
c3QATG9zZU9wcG9ydHVuaXR5UmVxdWVzdABzZXRfRW50aXR5AHNldF9TdGF0ZQBzZXRfU3RhdHVz
AEJ1c2luZXNzRW50aXR5AHNldF9PcHBvcnR1bml0eUNsb3NlAFJlc3BvbnNlAFNTSVNTY3JpcHRD
b21wb25lbnRFbnRyeVBvaW50QXR0cmlidXRlAENvenlSb2MuU3FsU2VydmVyLlNTSVMuQXR0cmli
dXRlcwBWYWxpZGF0ZVByb3BlcnRpZXNBdHRyaWJ1dGUAQ29sdW1uTWFwcGluZ3NBdHRyaWJ1dGUA
Q29ubmVjdGlvbkF0dHJpYnV0ZQBEZXNjcmlwdGlvbkF0dHJpYnV0ZQBTeXN0ZW0uUmVmbGVjdGlv
bgBBc3NlbWJseQBnZXRfQXNzZW1ibHkAU3lzdGVtLlRocmVhZGluZwBNb25pdG9yAEVudGVyAEV4
aXQARGVidWdnZXJOb25Vc2VyQ29kZUF0dHJpYnV0ZQBTY3JpcHRDb21wb25lbnRfOTc0NWU5MjE3
NmViNDEwMmJmNDUzOTI1MzU5MDE0YzMudmJwcm9qLlJlc291cmNlcy5yZXNvdXJjZXMAQ29tcGls
YXRpb25SZWxheGF0aW9uc0F0dHJpYnV0ZQBSdW50aW1lQ29tcGF0aWJpbGl0eUF0dHJpYnV0ZQBT
eXN0ZW0uUnVudGltZS5WZXJzaW9uaW5nAFRhcmdldEZyYW1ld29ya0F0dHJpYnV0ZQBBc3NlbWJs
eUZpbGVWZXJzaW9uQXR0cmlidXRlAEd1aWRBdHRyaWJ1dGUAQXNzZW1ibHlUcmFkZW1hcmtBdHRy
aWJ1dGUAQXNzZW1ibHlDb3B5cmlnaHRBdHRyaWJ1dGUAQXNzZW1ibHlQcm9kdWN0QXR0cmlidXRl
AEFzc2VtYmx5Q29tcGFueUF0dHJpYnV0ZQBBc3NlbWJseURlc2NyaXB0aW9uQXR0cmlidXRlAEFz
c2VtYmx5VGl0bGVBdHRyaWJ1dGUAU2NyaXB0Q29tcG9uZW50Xzk3NDVlOTIxNzZlYjQxMDJiZjQ1
MzkyNTM1OTAxNGMzLnZicHJvai5kbGwAAAAAC0kAbgBwAHUAdAAAG0MAcgBtAEMAbwBuAG4AZQBj
AHQAaQBvAG4AADNVAG4AaABhAG4AZABsAGUAZAAgAHMAZQByAHYAaQBjAGUAIABvAGIAagBlAGMA
dAAuAAAhbwBwAHAAbwByAHQAdQBuAGkAdAB5AGMAbABvAHMAZQAAKW8AcABwAG8AcgB0AHUAbgBp
AHQAeQBzAHQAYQB0AGUAYwBvAGQAZQAAK28AcABwAG8AcgB0AHUAbgBpAHQAeQBzAHQAYQB0AHUA
cwBjAG8AZABlAAAbUgBlAGYAZQByAGUAbgBjAGUAVAB5AHAAZQAAQW8AcABwAG8AcgB0AHUAbgBp
AHQAeQBzAHQAYQB0AGUAYwBvAGQAZQAgAG4AbwB0ACAAbQBhAHAAcABlAGQALgAAP1MAZQBsAGUA
YwB0ACAARAB5AG4AYQBtAGkAYwBzACAAQwBSAE0AIABjAG8AbgBuAGUAYwB0AGkAbwBuAC4AACVN
AGEAcAAgAGkAbgBwAHUAdAAgAGMAbwBsAHUAbQBuAHMALgAAFU4AbwAgAGkAbgBwAHUAdABzAC4A
ADFDAG8AbgBuAGUAYwB0AGkAbwBuACAAbgBvAHQAIABzAGUAbABlAGMAdABlAGQALgAAGUQAWQBO
AEEATQBJAEMAUwAtAEMAUgBNAAE9RAB5AG4AYQBtAGkAYwBzACAAQwBSAE0AIABPAHAAcABvAHIA
dAB1AG4AaQB0AHkAIABTAHQAYQB0AGUAADlVAG4AaABhAG4AZABsAGUAZAAgAG8AcABwAG8AcgB0
AHUAbgBpAHQAeQAgAHMAdABhAHQAZQAuAAANUwB0AGEAdAB1AHMAABFTAGUAdABTAHQAYQB0AGUA
ABdvAHAAcABvAHIAdAB1AG4AaQB0AHkAABtvAHAAcABvAHIAdAB1AG4AaQB0AHkAaQBkAAAbRQBu
AHQAaQB0AHkATQBvAG4AaQBrAGUAcgAAC1MAdABhAHQAZQAAHVcAaQBuAE8AcABwAG8AcgB0AHUA
bgBpAHQAeQAAIU8AcABwAG8AcgB0AHUAbgBpAHQAeQBDAGwAbwBzAGUAAB9MAG8AcwBlAE8AcABw
AG8AcgB0AHUAbgBpAHQAeQAACU8AcABlAG4AADFNAHkALgBSAGUAcwBvAHUAcgBjAGUAcwAuAE0A
eQBSAGUAcwBvAHUAcgBjAGUAcwAAANHn7fGklE5Pj7ebL9PXnoEACLd6XFYZNOCJCLA/X38R1Qo6
AyAAAQMAAAEEAAASDAcGFRIYARIMBAAAEggHBhUSGAESCAQAABIRBwYVEhgBEhEEAAASFAcGFRIY
ARIUBAgAEgwECAASCAQIABIRBAgAEhQEIAECHAMgAAgEIAASFQMgAA4CHgAHEAEBHgAeAAcwAQEB
EB4AAhMABCAAEwAHBhUSGQETAAQoABMACBbPSQu4DDTqCImEXc2AgMyRCyAFARIhCAISJRIpBCAA
HQ4DIAACBCgAHQ4DBhIkAwYSKAkgBAEIDhIlEikFIAEBEhwDBhIhBSABARIhBCAAEjEEKAASMQUg
AQIQDgQgAQEOCiADARASJRAIEAgFIAEBEiUCBg4DBhI1AwYSOQMGEj0DBhJBAwYSRQMGHQgCBggD
KAAOFm8AcABwAG8AcgB0AHUAbgBpAHQAeQAgbwBwAHAAbwByAHQAdQBuAGkAdAB5AGMAbABvAHMA
ZQAobwBwAHAAbwByAHQAdQBuAGkAdAB5AHMAdABhAHQAZQBjAG8AZABlACpvAHAAcABvAHIAdAB1
AG4AaQB0AHkAcwB0AGEAdAB1AHMAYwBvAGQAZQAaUgBlAGYAZQByAGUAbgBjAGUAVAB5AHAAZQAa
bwBwAHAAbwByAHQAdQBuAGkAdAB5AGkAZAADBhJJAwYSTQQAABJJBAAAEk0FAAEBEk0ECAASSQQI
ABJNAwYSOAIGHAQAABI4BAgAEjgFIAEBEVkIAQABAAAAAAAFIAIBDg4YAQAKTXlUZW1wbGF0ZQgx
MC4wLjAuMAAABAEAAAAGFRIYARIMBhUSGAESCAYVEhgBEhEGFRIYARIUBAcBEgwEBwESCAQHARIR
BAcBEhQQAQALTXkuQ29tcHV0ZXIAAAwBAAdNeS5Vc2VyAAATAQAOTXkuQXBwbGljYXRpb24AABMB
AA5NeS5XZWJTZXJ2aWNlcwAABAABHBwDBwECAwcBCAYAARIVEXUEBwESFQMHAQ4FEAEAHgAECgEe
AAQHAR4AByAEAQ4ODg5hAQA0U3lzdGVtLldlYi5TZXJ2aWNlcy5Qcm90b2NvbHMuU29hcEh0dHBD
bGllbnRQcm90b2NvbBJDcmVhdGVfX0luc3RhbmNlX18TRGlzcG9zZV9fSW5zdGFuY2VfXwAAAAYV
EhgBEwAGFRIZARMABAoBEwAFIAEBEwAIBwMTABMAEwAEIAEBAgUBAAAAAAQHAR0OBSAAEoCRBSAA
EoCVBiABEoCZHAUgABKAnQYgARKAoRwEBwESMQQgABIlBgABARKAqQUgABKAsQgHAhKApRKAqQQg
ARwcBCABHAgFIAESRQ4FIAASgMEGIAESgLkcBSAAEoDFBiABEoC1CAYAAwgODgIFIAASgM0GIAES
gNEcAyAAHAQAAQ4cBSACCA4OBSAAEoDZBSAAEoDdBSACCAgIEAcICBKAmRwIEoC1EoC5DggEAAEC
DgoHBAICEoCZEoCpBSAAEoDtBiABEoDpHAcgAR0SgOUOBSAAEoC1BiABARGA8QQgAQEIBSAAEoDR
BCABARwcBwkdEoDlEjUSgLUSgJkSgOkSgOUSgNEIHRKA5QYHAh0OHQ4KIAYBCA4ODggQAgQgAQII
BCABDggEAAEIHAUgAgEIHAgHBggICAgcCAUgAgEOHAQgARwOBiABARGBDQggARKBERKBARQHCBKA
/RKBAQgIEoEFCBGBCRGBCQYgAQESgRkGIAEBEoEtCCABEoExEoEVHAcKEoEVCAgSgRkSgR0SgSES
gSURgSkRgQkRgQkGIAEBEoE5BiABARKBTQggARKBURKBNRwHChKBNQgIEoE5EoE9EoFBEoFFEYFJ
EYEJEYEJDQEACFZhbGlkYXRlAAAWAQARQ3JtQ29ubmVjdGlvblR5cGUAACwBACdTZWxlY3QgRHlu
YW1pY3MgQ1JNIENvbm5lY3Rpb24gTWFuYWdlci4AAAUgABKBaQcgAgEOEoFpBgcCEkkSSQQHARJN
CAEAAgAAAAAABAABARwEBwESOAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5vbkV4Y2VwdGlvblRocm93
cwFHAQAaLk5FVEZyYW1ld29yayxWZXJzaW9uPXY0LjABAFQOFEZyYW1ld29ya0Rpc3BsYXlOYW1l
EC5ORVQgRnJhbWV3b3JrIDQMAQAHMS4wLjAuMAAAKQEAJDhiYmQ0MDgyLWMyMGMtNDY5NS1hYzFi
LWViMTgxYzFkMDAxZQAABQEAAQAAHwEAGkNvcHlyaWdodCBAIE1pY3Jvc29mdCAyMDEyAAA8AQA3
U2NyaXB0Q29tcG9uZW50Xzk3NDVlOTIxNzZlYjQxMDJiZjQ1MzkyNTM1OTAxNGMzLnZicHJvagAA
DgEACU1pY3Jvc29mdAAAAAAA6F0AAAAAAAAAAAAA/l0AAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAA
APBdAAAAAAAAAABfQ29yRGxsTWFpbgBtc2NvcmVlLmRsbAAAAAAA/yUAIEAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAYAACAAAAAAAAAAAAA
AAAAAAABAAEAAAAwAACAAAAAAAAAAAAAAAAAAAABAAAAAABIAAAAWGAAAGgEAAAAAAAAAAAAAGgE
NAAAAFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4ARgBPAAAAAAC9BO/+AAABAAAAAQAAAAAAAAAB
AAAAAAA/AAAAAAAAAAQAAAACAAAAAAAAAAAAAAAAAAAARAAAAAEAVgBhAHIARgBpAGwAZQBJAG4A
ZgBvAAAAAAAkAAQAAABUAHIAYQBuAHMAbABhAHQAaQBvAG4AAAAAAAAAsATIAwAAAQBTAHQAcgBp
AG4AZwBGAGkAbABlAEkAbgBmAG8AAACkAwAAAQAwADAAMAAwADAANABiADAAAAA0AAoAAQBDAG8A
bQBwAGEAbgB5AE4AYQBtAGUAAAAAAE0AaQBjAHIAbwBzAG8AZgB0AAAAmAA4AAEARgBpAGwAZQBE
AGUAcwBjAHIAaQBwAHQAaQBvAG4AAAAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8A
OQA3ADQANQBlADkAMgAxADcANgBlAGIANAAxADAAMgBiAGYANAA1ADMAOQAyADUAMwA1ADkAMAAx
ADQAYwAzAC4AdgBiAHAAcgBvAGoAAAAwAAgAAQBGAGkAbABlAFYAZQByAHMAaQBvAG4AAAAAADEA
LgAwAC4AMAAuADAAAACYADwAAQBJAG4AdABlAHIAbgBhAGwATgBhAG0AZQAAAFMAYwByAGkAcAB0
AEMAbwBtAHAAbwBuAGUAbgB0AF8AOQA3ADQANQBlADkAMgAxADcANgBlAGIANAAxADAAMgBiAGYA
NAA1ADMAOQAyADUAMwA1ADkAMAAxADQAYwAzAC4AdgBiAHAAcgBvAGoALgBkAGwAbAAAAFwAGwAB
AEwAZQBnAGEAbABDAG8AcAB5AHIAaQBnAGgAdAAAAEMAbwBwAHkAcgBpAGcAaAB0ACAAQAAgAE0A
aQBjAHIAbwBzAG8AZgB0ACAAMgAwADEAMgAAAAAAoAA8AAEATwByAGkAZwBpAG4AYQBsAEYAaQBs
AGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AOQA3ADQANQBlADkA
MgAxADcANgBlAGIANAAxADAAMgBiAGYANAA1ADMAOQAyADUAMwA1ADkAMAAxADQAYwAzAC4AdgBi
AHAAcgBvAGoALgBkAGwAbAAAAJAAOAABAFAAcgBvAGQAdQBjAHQATgBhAG0AZQAAAAAAUwBjAHIA
aQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwA5ADcANAA1AGUAOQAyADEANwA2AGUAYgA0ADEAMAAy
AGIAZgA0ADUAMwA5ADIANQAzADUAOQAwADEANABjADMALgB2AGIAcAByAG8AagAAADQACAABAFAA
cgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADEALgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBl
AG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMQAuADAALgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAwAAAAQPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAA=]]></arrayElement></arrayElements></property><property id="9" name="UserComponentTypeName" dataType="System.String">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2012, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property><property id="11" 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">ScriptComponent_9745e92176eb4102bf453925359014c3</property><property id="12" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property></properties><connections><connection id="13" name="CrmConnection" connectionManagerID="{A7DC69F1-76BF-42C7-80DB-5A57D9A0E744}" /></connections><inputs><input id="14" name="Input" hasSideEffects="true"><externalMetadataColumns isUsed="True" /></input></inputs></component>