<component id="1" name="Script Component" 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="5" 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_4ad745e01d2d4be9ba5d4d3a979724db.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_4ad745e01d2d4be9ba5d4d3a979724db.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2013")> 
<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("0894f19b-9db5-43cb-977c-c57138389841")> 

' 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 Connection() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("Connection").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 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[scriptcomponent_4ad745e01d2d4be9ba5d4d3a979724db.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_4ad745e01d2d4be9ba5d4d3a979724db.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_4ad745e01d2d4be9ba5d4d3a979724db.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{096F409E-5DF9-414A-ACC7-87D1710AA6CA}</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.Sforce, 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;vstadebugb9a11d90-d78c-459f-9499-06003e225a4a/a078631e-52f7-4da6-b789-0588d9af3a50&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[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-2013 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.Xml
Imports System.Web.Services.Protocols

Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS
Imports CozyRoc.SqlServer.SSIS.Attributes
Imports CozyRoc.Sforce.Service


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<ColumnMappings()> _
<SortProperties(New String() {"Connection", "SalesforceObject", "KeyField", "ValueField", "UseCache"})> _
<ValidateProperties("Validate")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    Private Const QueryTemplate_3P As String = "select {0} from {1} where {2}"
    Private Const ListDelimiter As String = "," + vbLf


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Dim valueList() As String

        If m_cache Is Nothing Then
            valueList = GetLookupRow_(Row)
        Else
            ' Cache is enabled.
            Dim cacheKey As String = GetCacheKey_(Row)

            If m_cache.Contains(cacheKey) Then
                valueList = CType(m_cache(cacheKey), String())
            Else
                valueList = GetLookupRow_(Row)
                m_cache(cacheKey) = valueList
            End If
        End If

        If Not valueList Is Nothing Then
            Dim output As IDTSOutput100 = MyBase.ComponentMetaData.OutputCollection(0)

            ' Lookup row found.
            Dim colsCount As Integer = m_valueIdx.Length
            For colIndex As Integer = 0 To colsCount - 1
                Dim value As String = valueList(colIndex)
                Dim valueIndex As Integer = m_valueIdx(colIndex)

                If String.IsNullOrEmpty(value) Then
                    Call Row.Buffer.SetNull(valueIndex)
                    Continue For
                End If

                Try
                    Select Case m_valueType(colIndex)
                        Case DataType.DT_DBTIMESTAMP
                        Case DataType.DT_DATE
                        Case DataType.DT_FILETIME
                        Case DataType.DT_DBDATE
                            Row.Buffer(valueIndex) = Convert.ToDateTime(value)

                        Case DataType.DT_IMAGE
                            Row.Buffer(valueIndex) = Convert.FromBase64String(value)

                        Case Else
                            Row.Buffer(valueIndex) = value
                    End Select
                Catch ex As Exception
                    Call FireError_(String.Format( _
                        "Failed to process '{0}' for column '{1}'.", _
                        value, _
                        output.OutputColumnCollection(colIndex).Name))
                End Try
            Next
        End If
    End Sub ' Input_ProcessInputRow


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

        ' Setup connection.
        m_connection = CType( _
            Me.Connections.Connection.AcquireConnection(Nothing), _
            ISforceConnection)
        m_service = CType(m_connection.Connect(), SforceService)

        If Me.UseCache Then
            m_cache = New Hashtable()
        End If

        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
        Dim colsCount As Integer = input.InputColumnCollection.Count

        ' Setup key index and where list.
        m_keyIdx = New Integer(colsCount - 1) {}
        For colIndex As Integer = 0 To colsCount - 1
            Dim inputCol As IDTSInputColumn100 = input.InputColumnCollection(colIndex)

            ' Set key index.
            m_keyIdx(colIndex) = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                input.Buffer, _
                inputCol.LineageID)

            ' Set where list.
            Dim extCol As IDTSExternalMetadataColumn100 = input.ExternalMetadataColumnCollection.GetObjectByID( _
                inputCol.ExternalMetadataColumnID)

            If Not String.IsNullOrEmpty(m_whereTemplate_P) Then
                m_whereTemplate_P += " AND "
            End If

            m_whereTemplate_P += String.Format( _
                "{0} = {1}", _
                extCol.Name, _
                "{" + colIndex.ToString() + "}")
        Next

        Dim output As IDTSOutput100 = MyBase.ComponentMetaData.OutputCollection(0)
        colsCount = output.OutputColumnCollection.Count

        ' Setup value index and field list.
        m_valueIdx = New Integer(colsCount - 1) {}
        m_valueType = New DataType(colsCount - 1) {}
        Dim fieldList As String = String.Empty
        For colIndex As Integer = 0 To colsCount - 1
            Dim outputCol As IDTSOutputColumn100 = output.OutputColumnCollection(colIndex)

            ' Set value index and type.
            m_valueIdx(colIndex) = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                input.Buffer, _
                outputCol.LineageID)
            m_valueType(colIndex) = outputCol.DataType

            ' Set field list.
            If Not String.IsNullOrEmpty(fieldList) Then
                fieldList += ", "
            End If

            fieldList += outputCol.Name
        Next

        ' Setup query template.
        m_queryTemplate_1P = String.Format( _
            QueryTemplate_3P, _
            fieldList, _
            Me.SalesforceObject, _
            "{0}")
    End Sub ' PreExecute


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

        Call m_connection.Close()
    End Sub ' PostExecute


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

        Try
            If String.IsNullOrEmpty(Me.Connection) Then
                Throw New ApplicationException("Select Salesforce connection.")
            End If

            If String.IsNullOrEmpty(Me.SalesforceObject) Then
                Throw New ApplicationException("Select object.")
            End If

            If String.IsNullOrEmpty(Me.KeyField) Then
                Throw New ApplicationException("Specify key field(s).")
            End If

            If String.IsNullOrEmpty(Me.ValueField) Then
                Throw New ApplicationException("Select value field.")
            End If

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

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

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

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

        Validate = result
    End Function    'Validate


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

        If String.IsNullOrEmpty(Me.Connection) Then
            Exit Sub
        End If

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

        If String.IsNullOrEmpty(Me.KeyField) Then
            Throw New Exception("Key field(s) not selected.")
        End If

        ' Get object fields.
        Dim fieldList() As Field = GetFields_()

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

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

        ' Setup field metadata.
        Dim keyList() As String = Me.KeyField.Split( _
            New String() {ListDelimiter}, _
            StringSplitOptions.None)
        For Each key As String In keyList
            ' Find field.
            Dim field As Field = FindField_(fieldList, key)

            Dim dtsType As DataType
            Dim fieldLen, prec, scale, codePage As Integer
            Call GetDtsTypeFromField_(field, dtsType, fieldLen, prec, scale, codePage)

            ' Setup external column.
            Dim column As IDTSExternalMetadataColumn100 = input.ExternalMetadataColumnCollection.[New]()
            column.Name = field.name
            column.DataType = dtsType
            column.Length = fieldLen
            column.Precision = prec
            column.Scale = scale
            column.CodePage = codePage
        Next
    End Sub ' ReinitializeMetaData


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of objects in the currently selected Salesforce connection.
    Public Function GetObjectList() As String()
        Dim result As New ArrayList

        Dim connection As ISforceConnection = CType( _
            Me.DesignConnections(Me.Connection).AcquireConnection(Nothing), _
            ISforceConnection)
        Dim service As SforceService = CType(connection.Connect(), SforceService)

        Try
            Dim dgr As DescribeGlobalResult = service.describeGlobal()

            For Each sobject As DescribeGlobalSObjectResult In dgr.sobjects
                If sobject.queryable Then
                    Call result.Add(sobject.name)
                End If
            Next

            Call result.Sort()
        Finally
            Call connection.Close()
        End Try

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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of fields in the currently selected object.
    Public Function GetFieldList() As String()
        Dim result As ArrayList = New ArrayList()

        Dim fieldList() As Field = GetFields_()
        For Each field As Field In fieldList
            Call result.Add(field.name)
        Next

        Call result.Sort()

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


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select Salesforce Connection Manager.")> _
    <Connection("ConnectionType")> _
    Public Property Connection() As String
        Get
            Connection = m_sforceConnection
        End Get
        Set(ByVal value As String)
            m_sforceConnection = value
        End Set
    End Property    ' Connection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select lookup object.")> _
    <List("GetObjectList")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property SalesforceObject() As String
        Get
            SalesforceObject = m_object
        End Get
        Set(ByVal value As String)
            If m_object <> value Then
                m_object = value

                m_fields = Nothing
                Me.KeyField = String.Empty
                Me.ValueField = String.Empty
            End If
        End Set
    End Property    ' SalesforceObject


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Specify one or more key fields.")> _
    <List("GetFieldList", True, False)> _
    Public Property KeyField() As String
        Get
            KeyField = m_keyField
        End Get
        Set(ByVal value As String)
            If m_keyField <> value Then
                If Not String.IsNullOrEmpty(m_keyField) Then
                    ' Force external columns to be reloaded.
                    If Me.ComponentMetaData.InputCollection.Count > 0 Then
                        Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
                        Call input.ExternalMetadataColumnCollection.RemoveAll()
                    End If
                End If

                m_keyField = value
            End If
        End Set
    End Property    ' KeyField


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Specify one or more lookup fields.")> _
    <List("GetFieldList", True, False)> _
    Public Property ValueField() As String
        Get
            ValueField = m_valueField
        End Get
        Set(ByVal value As String)
            If m_valueField <> value Then
                If Not String.IsNullOrEmpty(m_valueField) 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_valueField = value
            End If
        End Set
    End Property    ' ValueField


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select whether memory cache is used.")> _
    <DefaultValue(True)> _
    Public Property UseCache() As Boolean
        Get
            UseCache = m_useCache
        End Get
        Set(ByVal value As Boolean)
            m_useCache = value
        End Set
    End Property    ' UseCache
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property ConnectionType() As String()
        Get
            ConnectionType = New String() {"SFORCE"}
        End Get
    End Property    ' ConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub FireError_(ByVal message As String)
        Dim cancel As Boolean = False
        Call MyBase.ComponentMetaData.FireError( _
            0, _
            "Salesforce Lookup", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub ' FireError_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function FindField_( _
        ByVal fieldList() As Field, _
        ByVal name As String) As Field

        Dim result As Field = Nothing

        For Each field As Field In fieldList
            If field.name.Equals(name, StringComparison.OrdinalIgnoreCase) Then
                ' Found.
                result = field
                Exit For
            End If
        Next

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

        FindField_ = result
    End Function    ' FindField_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Setups cache key based on specified key attributes.
    Private Function GetCacheKey_(ByVal row As InputBuffer) As String
        Dim result As String = String.Empty

        For Each idx As Integer In m_keyIdx
            Dim key As String = String.Empty
            If Not row.Buffer.IsNull(idx) Then
                key = row.Buffer(idx).ToString() + "_"
            End If

            result += key
        Next

        GetCacheKey_ = result
    End Function    ' GetCacheKey_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Uses SOQL to retrieve required lookup row.
    Private Function GetLookupRow_(ByVal row As InputBuffer) As String()
        Dim result() As String = Nothing

        ' Setup fetch conditions.
        Dim colsCount As Integer = m_keyIdx.Length
        Dim whereList() As Object = New Object(colsCount - 1) {}
        For colIndex As Integer = 0 To colsCount - 1
            Dim keyIndex As Integer = m_keyIdx(colIndex)

            Dim key As String = String.Empty

            If row.Buffer.IsNull(keyIndex) Then
                key = "NULL"
            Else
                Dim keyObj As Object = row.Buffer(keyIndex)
                If TypeOf keyObj Is String Then
                    key = String.Format("'{0}'", keyObj)
                Else
                    key = keyObj.ToString()
                End If
            End If

            whereList(colIndex) = key
        Next

        ' Query data.
        Dim record As sObject = Nothing
        Dim query As String = String.Format( _
            m_queryTemplate_1P, _
            String.Format(m_whereTemplate_P, whereList))
        Try
            Dim qr As QueryResult = m_service.query(query)
            If Not qr.records Is Nothing AndAlso qr.records.Length > 0 Then
                record = qr.records(0)
            End If
        Catch ex As Exception
            Call FireError_(ex.Message)
        End Try

        If Not record Is Nothing Then
            Dim fieldsCount As Integer = m_valueIdx.Length
            result = New String(fieldsCount - 1) {}
            For fieldIndex As Integer = 0 To fieldsCount - 1
                Dim fieldNode As XmlElement = record.Any(fieldIndex)
                result(fieldIndex) = fieldNode.InnerText
            Next
        End If

        GetLookupRow_ = result
    End Function    ' GetLookupRow_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetFields_() As Field()
        Dim result() As Field = m_fields

        If result Is Nothing Then
            Dim connection As ISforceConnection = CType( _
                Me.DesignConnections(Me.Connection).AcquireConnection(Nothing), _
                ISforceConnection)
            Dim service As SforceService = CType(connection.Connect(), SforceService)

            Try
                result = service.describeSObject(Me.SalesforceObject).fields
            Finally
                Call connection.Close()
            End Try

            m_fields = result
        End If

        GetFields_ = result
    End Function    ' GetFields_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub SetupOutputColumns_()
        ' Get entity attributes.
        Dim fieldList() As Field = GetFields_()

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

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

        For Each value As String In valueList
            ' Find Salesforce field.
            Dim field As Field = FindField_(fieldList, value)

            Dim dtsType As DataType
            Dim fieldLen, prec, scale, codePage As Integer
            Call GetDtsTypeFromField_(field, dtsType, fieldLen, prec, scale, codePage)

            ' Setup output column.
            Dim column As IDTSOutputColumn100 = output.OutputColumnCollection.[New]()
            column.Name = field.name
            Call column.SetDataTypeProperties( _
                dtsType, _
                fieldLen, _
                prec, _
                scale, _
                codePage)
        Next
    End Sub ' SetupOutputColumns_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub GetDtsTypeFromField_( _
        ByVal field As Field, _
        ByRef DtsType As DataType, _
        ByRef fieldLen As Integer, _
        ByRef Precision As Integer, _
        ByRef Scale As Integer, _
        ByRef CodePage As Integer)

        fieldLen = field.length
        Precision = field.precision
        Scale = field.scale
        CodePage = 0

        Select Case field.soapType
            Case soapType.tnsID
                DtsType = DataType.DT_WSTR
            Case soapType.xsdbase64Binary
                DtsType = DataType.DT_IMAGE
            Case soapType.xsdboolean
                DtsType = DataType.DT_BOOL
            Case soapType.xsddouble
                DtsType = DataType.DT_NUMERIC
            Case soapType.xsdint
                DtsType = DataType.DT_BYREF_I4
            Case soapType.xsddate
                DtsType = DataType.DT_DBDATE
            Case soapType.xsddateTime
                DtsType = DataType.DT_DBTIMESTAMP
            Case soapType.xsdtime
                DtsType = DataType.DT_DBTIME
            Case soapType.xsdanyType
                DtsType = DataType.DT_WSTR

            Case soapType.xsdstring
                DtsType = DataType.DT_WSTR
                If fieldLen >= 4000 Then
                    ' DT_WSTR is limited to 4000.
                    DtsType = DataType.DT_NTEXT
                    fieldLen = 0
                End If

            Case Else
                Throw New Exception("Unhandled soap type.")
        End Select
    End Sub ' GetDtsTypeFromField_
#End Region ' Internals


#Region "Attributes"
    Private m_sforceConnection As String
    Private m_object As String
    Private m_keyField As String
    Private m_valueField As String
    Private m_useCache As Boolean

    Private m_connection As ISforceConnection
    Private m_service As SforceService
    Private m_cache As Hashtable
    Private m_queryTemplate_1P As String
    Private m_whereTemplate_P As String
    Private m_keyIdx() As Integer
    Private m_valueIdx() As Integer
    Private m_fields() As Field
    Private m_valueType() As DataType
#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>{EAE39CE2-1A33-4598-8157-D24F5A00E716}</msb:ProjectId>
		<msb:NoContent>Reference;Import;Folder</msb:NoContent>
		<msb:Language>msBuild</msb:Language>
		<msb:DisplayName>scriptcomponent_4ad745e01d2d4be9ba5d4d3a979724db</msb:DisplayName>
		<msb:CodeName>scriptcomponent_4ad745e01d2d4be9ba5d4d3a979724db</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_4ad745e01d2d4be9ba5d4d3a979724db.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="6" 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_4ad745e01d2d4be9ba5d4d3a979724db.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
b4cAAApUDgYWVANviAAACkUKAAAAAgAAAAsAAAAUAAAAGgAAACMAAABQAAAALAAAADUAAAA+AAAA
RwAAACtqBCCCAAAAVCtsBCAtAQAAVCtjBB8LVCtdBCCDAAAAVCtUBCADQAAAVCtLBCCFAAAAVCtC
BCCHAAAAVCs5BCCGAAAAVCswBCCCAAAAVCsnBCCCAAAAVAVKIKAPAAAyFwQgLwEAAFQFFlQrC3KJ
AgBwc1gAAAp6KgAAAB4CKBcAAAoqEzACAC0AAAAmAAARfhoAAAQtIHKzAgBw0AwAAAIoFAAACm+U
AAAKc5UAAAoLB4AaAAAEfhoAAAQqAAAAEzABAAYAAAAnAAARfhsAAAQqAAAeAoAbAAAEKkJzFwAA
CigRAAAKgB0AAAQqAAAAHgIolgAACiobMAEAPwAAACgAABF+HAAABC0yfh0AAAQoEQAACiiXAAAK
fhwAAAQtHHM8AAAGgBwAAATeEH4dAAAEKBEAAAoomAAACtx+HAAABCoAARAAAAIAHQAMKQAQAAAA
AbQAAADOyu++AQAAAJEAAABsU3lzdGVtLlJlc291cmNlcy5SZXNvdXJjZVJlYWRlciwgbXNjb3Js
aWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdh
NWM1NjE5MzRlMDg5I1N5c3RlbS5SZXNvdXJjZXMuUnVudGltZVJlc291cmNlU2V0AgAAAAAAAAAA
AAAAUEFEUEFEULQAAABCU0pCAQABAAAAAAAMAAAAdjQuMC4zMDMxOQAAAAAFAGwAAACcEAAAI34A
AAgRAADkFQAAI1N0cmluZ3MAAAAA7CYAAOgCAAAjVVMA1CkAABAAAAAjR1VJRAAAAOQpAABMCAAA
I0Jsb2IAAAAAAAAAAgAAAVcdogkJDwAAAPolMwAWAAABAAAAYAAAAA0AAAAdAAAAPQAAACMAAACk
AAAAAgAAAE0AAAAoAAAABwAAABEAAAAXAAAACgAAAAEAAAAMAAAAAQAAAAIAAAADAAAAAgAAAAAA
phUBAAAAAAAKAKkBfwEKAN0BvwEGAO0B5gEKAEUCfwEGAMMC5gEKAEUDGwMOAJcDgAMSAOYDxQMW
ABcExQMSACYExQMOAMoEgAMaAIUFXQUeAA8H+AYaAG0HXQUOAPoHgAMeABkI+AYGAEQIMQgGAPII
4QgGAB8JCgkiAIYJcQkiANMJvQkiAOwJvQkiABkKAQoGAEMKMAoKAIIKWwoKAJoKEwAiAM8KsgoG
AAQL5AoGACIL5gEGAEYL5gEKAF8LEwAGAKMLhAsGALcL5gESAL4LxQMGAMsL5gEmAC4MBQwmAF0M
BQwmAIgMBQwmAKUMBQwmAOgMBQwmABcNBQwGACUN5gEmAEENBQwGAG4N5gEGAJUN5gEGAJ0N5gEK
AMINWwomAN4NBQwmABcOBQwmAE0OBQwmAGsOBQwmAJgOBQwWANkOxQMmAP0OBQwmAEgPBQwGAOAP
5gEGAPUP5gEGAKkQMQgeALMQ+AYeAMgQ+AYqAAIBAxEqADkRAxEGAH4R5gEKAIwRWwoGAK4R5gEe
AMYR+AYeAM4R+AYuAOUR2hEyAOUR2hEeABgS+AYeAF8S+AYSAJgSxQMOAOESvxIOAP0SvxIOABUT
vxIOAC0TvxIiADsTvQkiAFATvQkiAGITvQkOAHgTvxIiAIwTvQkiAKcTvQkGAMsTuRMGAPIT4RMG
AAUUMAoGAG4U5AoGAI4U5AoGAMYUrBQGAN8UuRMGAPwUhAsGAAoVuRMGACUVuRMGAEAVuRMGAFkV
uRMGAHIVuRMGAI8VuRMAAAAAAQAAAAAAAQABAAAAAAApADcABQABAAEAAAAAAHIANwAJAAEAAgAA
ARAAfQA3AA0AAQADAAUBAACHAAAADQAFAAgABQEAAJUAAAANAAUADwABAAAAsAC8AB0ABgARAAEA
AAD0ALwALQAGABYAAQAAAAIBvAANAAgAGgABAAAADgG8AA0ACQAcAAEAAAAYAbwAIAAKAB0AAAAA
ACMBLwENABoANwAAARAAdAG8AFEAHAA7ADEACAIgADEAMQItADEAUwI6ADEAeAJHACEAVAOQAAYA
AgHJAAYADgHNAAEAKgXhAAEAKgXhAFGAuAX1AFGAyQX1AAEAuwf1AAEAzgf1AAEA1wf1AAEA4gf1
AAEA7wd1AQEADAh4AQEAJwh8AQEATgiAAQEAVgj1AAEAaQj1AAEAewiEAQEAhAiEAQEAjwiIAQEA
mAiNAREAAgmaAREAKwmeAREAngm8AREApgnAAVAgAAAAAAYYuQETAAEAWCAAAAAABhi5ARMAAQBg
IAAAAAARGPQBFwABAIwgAAAAABMI+wEbAAEApCAAAAAAEwghAigAAQC8IAAAAAATCEoCNQABANQg
AAAAABMIaAJCAAEA7CAAAAAARgKuAmMAAQAIIQAAAABGArcCaAACABwhAAAAAIMAyAJsAAIANCEA
AAAARgLQAnEAAgBIIQAAAAARANkCeAACAGQhAAAAAAEA9wKAAAMAgCEAAAAABhi5ARMABACIIQAA
AAADCAsDiwAEALwhAAAAAAYYuQETAAQA0CEAAAAABhi5Aa8ABADgIQAAAABGCmAEuwAJAPQhAAAA
AEYKdwS7AAkACCIAAAAAhgCPBMAACQAgIgAAAACGAJcEwAAJADgiAAAAAAYYuQETAAkAWCIAAAAA
RgLeBNEACQCIIgAAAABGA/0E2wANAJwiAAAAAEYDEAXbAA4AoCIAAAAABhi5AeUADwCwIgAAAAAG
CJ4F6wAQANwiAAAAAAYYuQHlABAA7CIAAAAABhi5ARMAEQD0IgAAAABGAhAF2wARAIwkAAAAAEYC
1wUTABIAxCYAAAAARgLiBRMAEgDYJgAAAAAGAO4FOAESACwoAAAAAEYCAgYTABMAZCkAAAAABgAX
BrsAEwAYKgAAAAAGACUGuwATAHgqAAAAAAYIngVxABMAkCoAAAAABggyBj4BEwCcKgAAAAAGCEcG
cQAUALQqAAAAAAYIXAY+ARQA7CoAAAAABghxBnEAFQAEKwAAAAAGCH4GPgEVAGwrAAAAAAYIiwZx
ABYAhCsAAAAABgiaBj4BFgDsKwAAAAAGCKkGwAAXAAQsAAAAAAYItgZDARcAECwAAAAAAQjDBrsA
GAAwLAAAAAABANYGPgEYAFwsAAAAAAEAFQdIARkArCwAAAAAAQAvB1EBGwAcLQAAAAABAEAHVwEc
AIguAAAAAAEATgdeAR0AAC8AAAAAAQBZBxMAHQCwLwAAAAABAHYHZAEdAIgwAAAAAAMYuQETACMA
kDAAAAAAFgg3CaIBIwDMMAAAAAAWCEsJpwEjAOAwAAAAABYIVwmsASMA6DAAAAAAERj0ARcAJAD8
MAAAAAAGGLkBEwAkAAQxAAAAABYIswnDASQAAAABALUCAAABAO4CAAABAO4CAAABADQEAAACAD4E
AAADAEcEAAAEAE8EAAAFAFYEAAABAOsEAAACAPMEAAADAE8EAAAEAFYEAAABAE8EAAABACYFAAAB
ADQEAAABADQEAAABACYFAAABAPcFAAABAEEGAAABAEEGAAABAEEGAAABAEEGAAABAEEGAAABAOEG
AAABACAHAAACACoHAAABADwHAAABADwHAAABAIsHAAACAJEHAAADAJkHAAAEAKIHAAAFAKwHAAAG
ALIHAAABAGMJCQC5ARMAqQC5Ac0BuQC5AdwBEQC5ARMAwQC5ARMAJAC5ARMALAC5ARMANAC5ARMA
PAC5ARMAJAALA4sALAALA4sANAALA4sAPAALA4sAyQC5ARMA0QC5ARMA2QC5AT4B4QATC3YCGQCu
AmMAGQC3AmgAKQA0C4MCGQDQAnEA8QBQC5MCGQC5ARMA+QC5AaMCRABUA5AATACzCYsATAB6CyAD
TAC5ARMAAQG5AUMBOQC5Aa8AEQGPBMAAEQGXBMAAGQG5AUMBWQC5ARMAQQBHDDoDIQF0DEADKQGV
DEYDMQGeDGgAIQHIDE0DOQGVDFMDQQEBDesAiQAvDWMAiQCVDF8DiQA4DWcDIQFZDW0DWQGVDHMD
CQF0DXoDOQCCDX8DSQCNDYQDaQGmDYkDSQA4DZADaQGxDZYDeQHODZwDSQH8DaMDgQGVDKkDiQEr
DnEACQE0DrADeQE7DhcAQQDXBRMAYQB+Dl8DeQCQDsoDiQC5ARMAMQG1Ds4DoQHPDmgAoQGVDNQD
WQDrDtsDqQESD+EDMQGCDWgAmQEkD2gAsQEyD+cDMQFwD+0DmQGVD2gAuQGyD/MDCQHAD/oDkQEr
DnEAYQHQAnEACQHADwAEgQHPDmgACQHHD/UAiQEkD2gAiQHNDwcECQE0DgwEQQDiBRMAeQDaDxMA
wQG5AT4BCQEIECwEMQEOEMAAUQG5AT4BQQEdED4BUQE1EHEAWQACBhMAKQHPDmgAuQFBEEMBoQFM
EBMAuQFMEBMAuQFWEEgEaQBaEHEAkQFjED4BkQFsEE4EkQF5EIQDkQGEEIQDkQGSEIQDkQGcEIQD
0QG5ARMAWQAjEXAE6QGVDHYE8QF+Dl8DgQBLEX0E2QFaEYME4QFnEcAA4QFaEHEA0QF1EYoE0QF5
ERMA0QGEEY8EAQKWEb8EWQHPDmgAgQFMEBMAIQGkEdkECQGuAuQECQE0DuwESQC/Ef8ESQCVDAQF
CQE0DhMFgQDwERoFGQL2ESEFEQICEigFIQIKEnEAgQAuEk4FMQI+El4BgQFWEGIFiQFjED4BiQFJ
EmgFaQBoEmgAaQBzEmgAaQCBEmgAaQCLEo4FQQK5ARMASQK5AT4BUQK5AagFWQK5ARMAYQK5AfAF
aQK5AT4BcQK5AT4BeQK5AUMBgQK5AT4BiQK5AbAGYQK5AT4BKQDUEwoHkQC5ARAHoQC5ARMAoQL6
Ey0HoQIAFC0HqQK5ARMAsQK5AYQDuQK5ARMAwQK5AT4ByQK5AT4B0QK5AT4B2QK5AT4B4QK5AT4B
6QK5AT4B8QK5AT4B+QK5AT4BAQO5AT4BDgAoAPgADgAsADMBKQCDAEQCLgALBf4HLgAjBf4HLgAD
Bd4HLgDbBEAHLgDjBF8HLgD7BC8DLgAbBS8DLgDTBDcHLgATBTsILgDrBKcHLgDzBLQHLgDrAC8D
LgALAUEGQAArAPsBQAATANMBQwATANMBQwAbAOIBSQCDADACYwATANMBYwAbAOIBaQCDAGkCgAAr
APsBgwBzAPsBgwAbAOIBgwB7APsBiQCDAFUCoAArAPsBowATANMBowDDAKsCwAArAPsBwwATANMB
wwDrAC8D4AArAPsB4wALAS8DAAErAPsBAAETANMBAwELAS8DIAErAPsBIAETANMBKQF7BDMGKQFz
BIUGKQGLBHEGQAErAPsBQAETANMBSQF7BDMGSQGTBNMBSQGbBLcGSQFzBMoGYAETANMBYAErAPsB
YwFLBPsBYwFTBJoFYwFjBPsBYwELAS8DYwFbBK4FaQFrBPcFaQFzBOUGaQF7BDMGgAErAPsBiQF7
BDMGiQFrBPcFiQFzBAsGoAErAPsBqQF7BDMGqQGDBEEGqQFzBEcGwAETANMBwAErAPsB4AErAPsB
6QETACQHAAITANMBAAIrAPsBCQITACQHKQLLBPsBQAMLAS8DgAMLAS8DHAIhAiYCKwJ7An8CigKP
Ap4CngImAzUDNQN7AnsCWgO3AxQENgRUBJcErgSPAo8CjwLGBI8CzAR7AtIEewLyBAkFLwVVBXIF
lAUYBx8HMgcEAAEABgAFAAcABgAJAAgACwAJAAwADwANABEAAADdAU8AAACWAlQAAABFAlkAAACi
Al4AAABeA5gAAACjBMQAAAC2BMQAAACtBfAAAACtBZIBAACkCJIBAAC1CJIBAAC+CJIBAADJCJYB
AADSCMQAAADyCLIBAABpCbcBAABjCcgBAgAEAAMAAgAFAAUAAgAGAAcAAgAHAAkAAgAPAAsAAgAS
AA0AAgATAA8AAgAbABEAAgAlABMAAQAmABMAAQAoABUAAgAnABUAAQAqABcAAgApABcAAgArABkA
AQAsABkAAgAtABsAAQAuABsAAgAvAB0AAgA4AB8AAgA5ACEAAQA6ACEAAgA9ACMAdQB1AIgAAAIH
Ag4CFQINAxQDZAMEgAAAAQAAAAAAAAAAAAAAAAC8AAAABAAAAAAAAAAAAAAAAQAKAAAAAAAKAAAA
AAAAAAAAAAAKABMAAAAAAAEAAAAAAAAAAAAAAJ0AagMAAAAACwAAAAAAAAAAAAAApgCoAwAAAAAL
AAAAAAAAAAAAAACmAPYDAAAAAAsAAAAAAAAAAAAAAKYAOgUAAAAAAQAAAAAAAAAAAAAAnQDpBgAA
AAAEAAAAAAAAAAAAAAABAOYBAAAAAAsAAAAAAAAAAAAAAKYA4QsAAAAACwAAAAAAAAAAAAAApgDk
EAAAAAAEAAAAAAAAAAAAAAABANoRAAAAAAIAAAAAAAAAAAAAAAEA2hEAAAAAAAAAAAEAAAAiFAAA
BQAEAAYABAAAABAADADsAgAAEAAZAOwCAAAAABsA7AItAJkCLQAbAwAAADxNb2R1bGU+AG1zY29y
bGliAE1pY3Jvc29mdC5WaXN1YWxCYXNpYwBNeUFwcGxpY2F0aW9uAFNjcmlwdENvbXBvbmVudF80
YWQ3NDVlMDFkMmQ0YmU5YmE1ZDRkM2E5Nzk3MjRkYi52YnByb2ouTXkATXlDb21wdXRlcgBNeVBy
b2plY3QATXlXZWJTZXJ2aWNlcwBUaHJlYWRTYWZlT2JqZWN0UHJvdmlkZXJgMQBJbnB1dEJ1ZmZl
cgBTY3JpcHRDb21wb25lbnRfNGFkNzQ1ZTAxZDJkNGJlOWJhNWQ0ZDNhOTc5NzI0ZGIudmJwcm9q
AFVzZXJDb21wb25lbnQAQ29ubmVjdGlvbnMAVmFyaWFibGVzAFNjcmlwdE1haW4ATXlSZXNvdXJj
ZXMAU2NyaXB0Q29tcG9uZW50XzRhZDc0NWUwMWQyZDRiZTliYTVkNGQzYTk3OTcyNGRiLnZicHJv
ai5NeS5SZXNvdXJjZXMATXlTZXR0aW5ncwBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuQXBwbGljYXRp
b25TZXJ2aWNlcwBBcHBsaWNhdGlvbkJhc2UALmN0b3IATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkRl
dmljZXMAQ29tcHV0ZXIAU3lzdGVtAE9iamVjdAAuY2N0b3IAZ2V0X0NvbXB1dGVyAG1fQ29tcHV0
ZXJPYmplY3RQcm92aWRlcgBnZXRfQXBwbGljYXRpb24AbV9BcHBPYmplY3RQcm92aWRlcgBVc2Vy
AGdldF9Vc2VyAG1fVXNlck9iamVjdFByb3ZpZGVyAGdldF9XZWJTZXJ2aWNlcwBtX015V2ViU2Vy
dmljZXNPYmplY3RQcm92aWRlcgBBcHBsaWNhdGlvbgBXZWJTZXJ2aWNlcwBFcXVhbHMAbwBHZXRI
YXNoQ29kZQBUeXBlAEdldFR5cGUAVG9TdHJpbmcAQ3JlYXRlX19JbnN0YW5jZV9fAFQAaW5zdGFu
Y2UARGlzcG9zZV9fSW5zdGFuY2VfXwBnZXRfR2V0SW5zdGFuY2UATWljcm9zb2Z0LlZpc3VhbEJh
c2ljLk15U2VydmljZXMuSW50ZXJuYWwAQ29udGV4dFZhbHVlYDEAbV9Db250ZXh0AEdldEluc3Rh
bmNlAENvenlSb2MuU1NJU1BsdXMuMjAxMgBDb3p5Um9jLlNxbFNlcnZlci5TU0lTAFNjcmlwdEJ1
ZmZlclBsdXMATWljcm9zb2Z0LlNxbFNlcnZlci5UeFNjcmlwdABNaWNyb3NvZnQuU3FsU2VydmVy
LkR0cy5QaXBlbGluZQBTY3JpcHRDb21wb25lbnQATWljcm9zb2Z0LlNxbFNlcnZlci5QaXBlbGlu
ZUhvc3QAUGlwZWxpbmVCdWZmZXIAT3V0cHV0TmFtZU1hcABDb21wb25lbnQAT2JqZWN0SUQASXNJ
bnB1dABCdWZmZXIAT3V0cHV0TWFwAGdldF9TdGF0aWNJbnB1dENvbHVtbnMAZ2V0X1N0YXRpY091
dHB1dENvbHVtbnMATmV4dFJvdwBFbmRPZlJvd3NldABTdGF0aWNJbnB1dENvbHVtbnMAU3RhdGlj
T3V0cHV0Q29sdW1ucwBTY3JpcHRDb21wb25lbnRQbHVzAFByb2Nlc3NJbnB1dABJbnB1dElEAElu
cHV0TmFtZQBJbnB1dF9Qcm9jZXNzSW5wdXQASW5wdXRfUHJvY2Vzc0lucHV0Um93AFJvdwBQYXJl
bnRDb21wb25lbnQATWljcm9zb2Z0LlNxbFNlcnZlci5EVFNSdW50aW1lV3JhcABNaWNyb3NvZnQu
U3FsU2VydmVyLkR0cy5SdW50aW1lLldyYXBwZXIASURUU0Nvbm5lY3Rpb25NYW5hZ2VyMTAwAGdl
dF9Db25uZWN0aW9uAENvbm5lY3Rpb24AUXVlcnlUZW1wbGF0ZV8zUABMaXN0RGVsaW1pdGVyAFBy
ZUV4ZWN1dGUAUG9zdEV4ZWN1dGUAVmFsaWRhdGUAZXJyTWVzc2FnZQBSZWluaXRpYWxpemVNZXRh
RGF0YQBHZXRPYmplY3RMaXN0AEdldEZpZWxkTGlzdABzZXRfQ29ubmVjdGlvbgB2YWx1ZQBnZXRf
U2FsZXNmb3JjZU9iamVjdABzZXRfU2FsZXNmb3JjZU9iamVjdABnZXRfS2V5RmllbGQAc2V0X0tl
eUZpZWxkAGdldF9WYWx1ZUZpZWxkAHNldF9WYWx1ZUZpZWxkAGdldF9Vc2VDYWNoZQBzZXRfVXNl
Q2FjaGUAZ2V0X0Nvbm5lY3Rpb25UeXBlAEZpcmVFcnJvcl8AbWVzc2FnZQBDb3p5Um9jLlNmb3Jj
ZQBDb3p5Um9jLlNmb3JjZS5TZXJ2aWNlAEZpZWxkAEZpbmRGaWVsZF8AZmllbGRMaXN0AG5hbWUA
R2V0Q2FjaGVLZXlfAHJvdwBHZXRMb29rdXBSb3dfAEdldEZpZWxkc18AU2V0dXBPdXRwdXRDb2x1
bW5zXwBEYXRhVHlwZQBHZXREdHNUeXBlRnJvbUZpZWxkXwBmaWVsZABEdHNUeXBlAGZpZWxkTGVu
AFByZWNpc2lvbgBTY2FsZQBDb2RlUGFnZQBtX3Nmb3JjZUNvbm5lY3Rpb24AbV9vYmplY3QAbV9r
ZXlGaWVsZABtX3ZhbHVlRmllbGQAbV91c2VDYWNoZQBJU2ZvcmNlQ29ubmVjdGlvbgBtX2Nvbm5l
Y3Rpb24AU2ZvcmNlU2VydmljZQBtX3NlcnZpY2UAU3lzdGVtLkNvbGxlY3Rpb25zAEhhc2h0YWJs
ZQBtX2NhY2hlAG1fcXVlcnlUZW1wbGF0ZV8xUABtX3doZXJlVGVtcGxhdGVfUABtX2tleUlkeABt
X3ZhbHVlSWR4AG1fZmllbGRzAG1fdmFsdWVUeXBlAFNhbGVzZm9yY2VPYmplY3QAS2V5RmllbGQA
VmFsdWVGaWVsZABVc2VDYWNoZQBDb25uZWN0aW9uVHlwZQBTeXN0ZW0uUmVzb3VyY2VzAFJlc291
cmNlTWFuYWdlcgBfcmVzTWdyAFN5c3RlbS5HbG9iYWxpemF0aW9uAEN1bHR1cmVJbmZvAF9yZXND
dWx0dXJlAGdldF9SZXNvdXJjZU1hbmFnZXIAZ2V0X0N1bHR1cmUAc2V0X0N1bHR1cmUAVmFsdWUA
Q3VsdHVyZQBTeXN0ZW0uQ29uZmlndXJhdGlvbgBBcHBsaWNhdGlvblNldHRpbmdzQmFzZQBtX1Zh
bHVlAG1fU3luY09iamVjdABnZXRfVmFsdWUAU3lzdGVtLkNvbXBvbmVudE1vZGVsAEVkaXRvckJy
b3dzYWJsZUF0dHJpYnV0ZQBFZGl0b3JCcm93c2FibGVTdGF0ZQBTeXN0ZW0uQ29kZURvbS5Db21w
aWxlcgBHZW5lcmF0ZWRDb2RlQXR0cmlidXRlAFN5c3RlbS5EaWFnbm9zdGljcwBEZWJ1Z2dlckhp
ZGRlbkF0dHJpYnV0ZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuQ29tcGlsZXJTZXJ2aWNlcwBTdGFu
ZGFyZE1vZHVsZUF0dHJpYnV0ZQBIaWRlTW9kdWxlTmFtZUF0dHJpYnV0ZQBTeXN0ZW0uQ29tcG9u
ZW50TW9kZWwuRGVzaWduAEhlbHBLZXl3b3JkQXR0cmlidXRlAFN5c3RlbS5SdW50aW1lLkNvbXBp
bGVyU2VydmljZXMAUnVudGltZUhlbHBlcnMAR2V0T2JqZWN0VmFsdWUAUnVudGltZVR5cGVIYW5k
bGUAR2V0VHlwZUZyb21IYW5kbGUAQWN0aXZhdG9yAENyZWF0ZUluc3RhbmNlAE15R3JvdXBDb2xs
ZWN0aW9uQXR0cmlidXRlAHNldF9WYWx1ZQBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMA
Q29tVmlzaWJsZUF0dHJpYnV0ZQBTdHJpbmcAU2NyaXB0QnVmZmVyAENMU0NvbXBsaWFudEF0dHJp
YnV0ZQBNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1BpcGVsaW5lV3JhcABNaWNyb3NvZnQuU3FsU2Vy
dmVyLkR0cy5QaXBlbGluZS5XcmFwcGVyAElEVFNDb21wb25lbnRNZXRhRGF0YTEwMABnZXRfQ29t
cG9uZW50TWV0YURhdGEASURUU0lucHV0Q29sbGVjdGlvbjEwMABnZXRfSW5wdXRDb2xsZWN0aW9u
AElEVFNJbnB1dDEwMABnZXRfSXRlbQBnZXRfSUQASURUU1J1bnRpbWVDb25uZWN0aW9uQ29sbGVj
dGlvbjEwMABnZXRfUnVudGltZUNvbm5lY3Rpb25Db2xsZWN0aW9uAElEVFNSdW50aW1lQ29ubmVj
dGlvbjEwMABnZXRfQ29ubmVjdGlvbk1hbmFnZXIASURUU091dHB1dDEwMABFeGNlcHRpb24AQ29u
dGFpbnMAc2V0X0l0ZW0ASURUU091dHB1dENvbGxlY3Rpb24xMDAAZ2V0X091dHB1dENvbGxlY3Rp
b24ASW50MzIASXNOdWxsT3JFbXB0eQBnZXRfQnVmZmVyAFNldE51bGwAQ29udmVydABEYXRlVGlt
ZQBUb0RhdGVUaW1lAEZyb21CYXNlNjRTdHJpbmcAUHJvamVjdERhdGEAU2V0UHJvamVjdEVycm9y
AElEVFNPdXRwdXRDb2x1bW5Db2xsZWN0aW9uMTAwAGdldF9PdXRwdXRDb2x1bW5Db2xsZWN0aW9u
AElEVFNPdXRwdXRDb2x1bW4xMDAAZ2V0X05hbWUARm9ybWF0AENsZWFyUHJvamVjdEVycm9yAElE
VFNFeHRlcm5hbE1ldGFkYXRhQ29sdW1uMTAwAElEVFNJbnB1dENvbHVtbjEwMABBY3F1aXJlQ29u
bmVjdGlvbgBDb25uZWN0AElEVFNJbnB1dENvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0X0lucHV0Q29s
dW1uQ29sbGVjdGlvbgBnZXRfQ291bnQAUGlwZWxpbmVDb21wb25lbnQAZ2V0X0hvc3RDb21wb25l
bnQASURUU0J1ZmZlck1hbmFnZXIxMDAAZ2V0X0J1ZmZlck1hbmFnZXIAZ2V0X0xpbmVhZ2VJRABG
aW5kQ29sdW1uQnlMaW5lYWdlSUQASURUU0V4dGVybmFsTWV0YWRhdGFDb2x1bW5Db2xsZWN0aW9u
MTAwAGdldF9FeHRlcm5hbE1ldGFkYXRhQ29sdW1uQ29sbGVjdGlvbgBnZXRfRXh0ZXJuYWxNZXRh
ZGF0YUNvbHVtbklEAEdldE9iamVjdEJ5SUQAQ29uY2F0AEVtcHR5AGdldF9EYXRhVHlwZQBDbG9z
ZQBBcHBsaWNhdGlvbkV4Y2VwdGlvbgBTdHJpbmdTcGxpdE9wdGlvbnMAU3BsaXQAZ2V0X0lzQXR0
YWNoZWQAc2V0X0Nvbm5lY3Rpb25NYW5hZ2VySUQAZ2V0X01lc3NhZ2UAc2V0X0lzVXNlZABSZW1v
dmVBbGwATmV3AGdldF9uYW1lAHNldF9OYW1lAHNldF9EYXRhVHlwZQBzZXRfTGVuZ3RoAHNldF9Q
cmVjaXNpb24Ac2V0X1NjYWxlAHNldF9Db2RlUGFnZQBBcnJheUxpc3QARGVzY3JpYmVHbG9iYWxS
ZXN1bHQARGVzY3JpYmVHbG9iYWxTT2JqZWN0UmVzdWx0AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuTWFu
YWdlZERUUwBNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5SdW50aW1lAGdldF9EZXNpZ25Db25uZWN0
aW9ucwBDb25uZWN0aW9uTWFuYWdlcgBkZXNjcmliZUdsb2JhbABnZXRfc29iamVjdHMAZ2V0X3F1
ZXJ5YWJsZQBBZGQAU29ydABBcnJheQBUb0FycmF5AE9wZXJhdG9ycwBDb21wYXJlU3RyaW5nAEZp
cmVFcnJvcgBTdHJpbmdDb21wYXJpc29uAElzTnVsbABzT2JqZWN0AFF1ZXJ5UmVzdWx0AFN5c3Rl
bS5YbWwAWG1sRWxlbWVudABxdWVyeQBnZXRfcmVjb3JkcwBnZXRfQW55AGdldF9Jbm5lclRleHQA
RGVzY3JpYmVTT2JqZWN0UmVzdWx0AGRlc2NyaWJlU09iamVjdABnZXRfZmllbGRzAFNldERhdGFU
eXBlUHJvcGVydGllcwBzb2FwVHlwZQBnZXRfbGVuZ3RoAGdldF9wcmVjaXNpb24AZ2V0X3NjYWxl
AGdldF9zb2FwVHlwZQBTU0lTU2NyaXB0Q29tcG9uZW50RW50cnlQb2ludEF0dHJpYnV0ZQBDb3p5
Um9jLlNxbFNlcnZlci5TU0lTLkF0dHJpYnV0ZXMAVmFsaWRhdGVQcm9wZXJ0aWVzQXR0cmlidXRl
AFNvcnRQcm9wZXJ0aWVzQXR0cmlidXRlAENvbHVtbk1hcHBpbmdzQXR0cmlidXRlAExpc3RBdHRy
aWJ1dGUARGVzY3JpcHRpb25BdHRyaWJ1dGUAQ2F0ZWdvcnlBdHRyaWJ1dGUARGVmYXVsdFZhbHVl
QXR0cmlidXRlAENvbm5lY3Rpb25BdHRyaWJ1dGUAUmVmcmVzaFByb3BlcnRpZXNBdHRyaWJ1dGUA
UmVmcmVzaFByb3BlcnRpZXMAU3lzdGVtLlJlZmxlY3Rpb24AQXNzZW1ibHkAZ2V0X0Fzc2VtYmx5
AFN5c3RlbS5UaHJlYWRpbmcATW9uaXRvcgBFbnRlcgBFeGl0AERlYnVnZ2VyTm9uVXNlckNvZGVB
dHRyaWJ1dGUAU2NyaXB0Q29tcG9uZW50XzRhZDc0NWUwMWQyZDRiZTliYTVkNGQzYTk3OTcyNGRi
LnZicHJvai5SZXNvdXJjZXMucmVzb3VyY2VzAENvbXBpbGF0aW9uUmVsYXhhdGlvbnNBdHRyaWJ1
dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuVmVyc2lvbmlu
ZwBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUAQXNzZW1ibHlGaWxlVmVyc2lvbkF0dHJpYnV0ZQBH
dWlkQXR0cmlidXRlAEFzc2VtYmx5VHJhZGVtYXJrQXR0cmlidXRlAEFzc2VtYmx5Q29weXJpZ2h0
QXR0cmlidXRlAEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBBc3NlbWJseUNvbXBhbnlBdHRyaWJ1
dGUAQXNzZW1ibHlEZXNjcmlwdGlvbkF0dHJpYnV0ZQBBc3NlbWJseVRpdGxlQXR0cmlidXRlAFNj
cmlwdENvbXBvbmVudF80YWQ3NDVlMDFkMmQ0YmU5YmE1ZDRkM2E5Nzk3MjRkYi52YnByb2ouZGxs
AAAAAAtJAG4AcAB1AHQAABVDAG8AbgBuAGUAYwB0AGkAbwBuAABTRgBhAGkAbABlAGQAIAB0AG8A
IABwAHIAbwBjAGUAcwBzACAAJwB7ADAAfQAnACAAZgBvAHIAIABjAG8AbAB1AG0AbgAgACcAewAx
AH0AJwAuAAELIABBAE4ARAAgAAATewAwAH0AIAA9ACAAewAxAH0AAAN7AAADfQAABSwAIAAAO3MA
ZQBsAGUAYwB0ACAAewAwAH0AIABmAHIAbwBtACAAewAxAH0AIAB3AGgAZQByAGUAIAB7ADIAfQAA
B3sAMAB9AAA7UwBlAGwAZQBjAHQAIABTAGEAbABlAHMAZgBvAHIAYwBlACAAYwBvAG4AbgBlAGMA
dABpAG8AbgAuAAAdUwBlAGwAZQBjAHQAIABvAGIAagBlAGMAdAAuAAArUwBwAGUAYwBpAGYAeQAg
AGsAZQB5ACAAZgBpAGUAbABkACgAcwApAC4AACdTAGUAbABlAGMAdAAgAHYAYQBsAHUAZQAgAGYA
aQBlAGwAZAAuAAAFLAAKAAAlTQBhAHAAIABpAG4AcAB1AHQAIABjAG8AbAB1AG0AbgBzAC4AABVO
AG8AIABpAG4AcAB1AHQAcwAuAAA1SwBlAHkAIABmAGkAZQBsAGQAKABzACkAIABuAG8AdAAgAHMA
ZQBsAGUAYwB0AGUAZAAuAAANUwBGAE8AUgBDAEUAACNTAGEAbABlAHMAZgBvAHIAYwBlACAATABv
AG8AawB1AHAAAC0nAHsAMAB9ACcAIABmAGkAZQBsAGQAIABuAG8AdAAgAGYAbwB1AG4AZAAuAAED
XwAACU4AVQBMAEwAAAsnAHsAMAB9ACcAASlVAG4AaABhAG4AZABsAGUAZAAgAHMAbwBhAHAAIAB0
AHkAcABlAC4AADFNAHkALgBSAGUAcwBvAHUAcgBjAGUAcwAuAE0AeQBSAGUAcwBvAHUAcgBjAGUA
cwAAAAAAbq3XenQ4GU226Gea/0nT8gAIt3pcVhk04IkIsD9ffxHVCjoDIAABAwAAAQQAABIMBwYV
EhgBEgwEAAASCAcGFRIYARIIBAAAEhEHBhUSGAESEQQAABIUBwYVEhgBEhQECAASDAQIABIIBAgA
EhEECAASFAQgAQIcAyAACAQgABIVAyAADgIeAAcQAQEeAB4ABzABAQEQHgACEwAEIAATAAcGFRIZ
ARMABCgAEwAIFs9JC7gMNOoIiYRdzYCAzJELIAUBEiEIAhIlEikEIAAdDgMgAAIEKAAdDgMGEiQD
BhIoCSAEAQgOEiUSKQUgAQESHAMGEiEFIAEBEiEEIAASMQQoABIxAgYOOnMAZQBsAGUAYwB0ACAA
ewAwAH0AIABmAHIAbwBtACAAewAxAH0AIAB3AGgAZQByAGUAIAB7ADIAfQAELAAKAAUgAQIQDgQg
AQEOBCABAQIIIAISNR0SNQ4FIAEOEhwGIAEdDhIcBSAAHRI1ECAGARI1EBE5EAgQCBAIEAgCBgID
BhI9AwYSQQMGEkUDBh0IBAYdEjUEBh0ROQMoAA4DKAACAwYSSQMGEk0EAAASSQQAABJNBQABARJN
BAgAEkkECAASTQMGEjQCBhwEAAASNAQIABI0BSABARFZCAEAAQAAAAAABSACAQ4OGAEACk15VGVt
cGxhdGUIMTAuMC4wLjAAAAQBAAAABhUSGAESDAYVEhgBEggGFRIYARIRBhUSGAESFAQHARIMBAcB
EggEBwESEQQHARIUEwEADk15LkFwcGxpY2F0aW9uAAAQAQALTXkuQ29tcHV0ZXIAABMBAA5NeS5X
ZWJTZXJ2aWNlcwAADAEAB015LlVzZXIAAAQAARwcAwcBAgMHAQgGAAESFRF1BAcBEhUDBwEOBRAB
AB4ABAoBHgAEBwEeAAcgBAEODg4OYQEANFN5c3RlbS5XZWIuU2VydmljZXMuUHJvdG9jb2xzLlNv
YXBIdHRwQ2xpZW50UHJvdG9jb2wSQ3JlYXRlX19JbnN0YW5jZV9fE0Rpc3Bvc2VfX0luc3RhbmNl
X18AAAAGFRIYARMABhUSGQETAAQKARMABSABARMACAcDEwATABMABQEAAAAABAcBHQ4FIAASgJEF
IAASgJUGIAESgJkcBSAAEoCdBiABEoChHAQHARIxBCABHBwCHQ4FIAIBHBwFIAASgK0GIAESgKUc
BAABAg4EIAASJQQgAQEIBgABEYC5DgUgAgEIHAUAAR0FDgYAAQESgKkFIAASgMEGIAESgMUcBgAD
Dg4cHBIHCh0ODggSgKUIDggSgKkIETkDIAAcBSAAEoDRBiABEoDNHAUgABKA1QUgABKA2QUgAggI
CAUgABKA3QYgARKAyQgFAAIODg4GAAMODg4OBCAAETkHAAQODhwcHBcHCwgOEoCZEoClCBKAyRKA
zQgSgMUICAkgAh0OHQ4RgOURBwcCAhKAmR0OEoClEoCpHQ4FIAASgMkFIAEBETkbBw4dEjUSgJkd
DggSgMkRORI1CA4ICB0OCB0OBSAAEoD1BiABEoD5HAUgABKA7QYgAB0SgPEEIAEIHAcgARKA/RIV
FgcIEj0dDhKA6RJBEoDtEoDxCB0SgPEQBwYdEjUdDhKA6RI1CB0SNQYAAwgODgIFBwESgJkFBwES
gKUGBwIdDh0OCiAGAQgODg4IEAIHIAICDhGBBQUAAg4OHAwHBRI1EjUSNQgdEjUEIAECCAQgARwI
CQcGDg4IDggdCAYAAg4OHRwGIAESgQ0OBiAAHRKBCQYgAB0SgRUeBxEIHQ4OEoEJHQ4dHAgOCBwS
gQ0SgKkICBKBEQgIBiABEoEZDgwHBB0SNR0SNRI9EkEFIAASgMUJIAUBETkICAgIGwcOHRI1EoCl
HQ4IEoDFETkSNQgICA4dDggdDgUgABGBHQUHARGBHQ0BAAhWYWxpZGF0ZQAABSABAR0OQQEABQAA
AApDb25uZWN0aW9uEFNhbGVzZm9yY2VPYmplY3QIS2V5RmllbGQKVmFsdWVGaWVsZAhVc2VDYWNo
ZQAABiADAQ4CAhMBAAxHZXRGaWVsZExpc3QBAAAAJwEAIlNwZWNpZnkgb25lIG9yIG1vcmUgbG9v
a3VwIGZpZWxkcy4AAA0BAAhTZXR0aW5ncwAABQEAAQAAKQEAJFNlbGVjdCB3aGV0aGVyIG1lbW9y
eSBjYWNoZSBpcyB1c2VkLgAAEwEADkNvbm5lY3Rpb25UeXBlAAAqAQAlU2VsZWN0IFNhbGVzZm9y
Y2UgQ29ubmVjdGlvbiBNYW5hZ2VyLgAABiABARGBSRIBAA1HZXRPYmplY3RMaXN0AAAaAQAVU2Vs
ZWN0IGxvb2t1cCBvYmplY3QuAAAkAQAfU3BlY2lmeSBvbmUgb3IgbW9yZSBrZXkgZmllbGRzLgAA
BSAAEoFNByACAQ4SgU0GBwISSRJJBAcBEk0IAQACAAAAAAAEAAEBHAQHARI0CAEACAAAAAAAHgEA
AQBUAhZXcmFwTm9uRXhjZXB0aW9uVGhyb3dzAUcBABouTkVURnJhbWV3b3JrLFZlcnNpb249djQu
MAEAVA4URnJhbWV3b3JrRGlzcGxheU5hbWUQLk5FVCBGcmFtZXdvcmsgNAwBAAcxLjAuMC4wAAAp
AQAkMDg5NGYxOWItOWRiNS00M2NiLTk3N2MtYzU3MTM4Mzg5ODQxAAAfAQAaQ29weXJpZ2h0IEAg
TWljcm9zb2Z0IDIwMTMAADwBADdTY3JpcHRDb21wb25lbnRfNGFkNzQ1ZTAxZDJkNGJlOWJhNWQ0
ZDNhOTc5NzI0ZGIudmJwcm9qAAAOAQAJTWljcm9zb2Z0AAAAAHBkAAAAAAAAAAAAAI5kAAAAIAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACAZAAAAAAAAAAAAAAAAAAAAABfQ29yRGxsTWFpbgBtc2NvcmVl
LmRsbAAAAAAA/yUAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAYAACAAAAAAAAAAAAAAAAA
AAABAAEAAAAwAACAAAAAAAAAAAAAAAAAAAABAAAAAABIAAAAWIAAAGgEAAAAAAAAAAAAAGgENAAA
AFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4ARgBPAAAAAAC9BO/+AAABAAAAAQAAAAAAAAABAAAA
AAA/AAAAAAAAAAQAAAACAAAAAAAAAAAAAAAAAAAARAAAAAEAVgBhAHIARgBpAGwAZQBJAG4AZgBv
AAAAAAAkAAQAAABUAHIAYQBuAHMAbABhAHQAaQBvAG4AAAAAAAAAsATIAwAAAQBTAHQAcgBpAG4A
ZwBGAGkAbABlAEkAbgBmAG8AAACkAwAAAQAwADAAMAAwADAANABiADAAAAA0AAoAAQBDAG8AbQBw
AGEAbgB5AE4AYQBtAGUAAAAAAE0AaQBjAHIAbwBzAG8AZgB0AAAAmAA4AAEARgBpAGwAZQBEAGUA
cwBjAHIAaQBwAHQAaQBvAG4AAAAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8ANABh
AGQANwA0ADUAZQAwADEAZAAyAGQANABiAGUAOQBiAGEANQBkADQAZAAzAGEAOQA3ADkANwAyADQA
ZABiAC4AdgBiAHAAcgBvAGoAAAAwAAgAAQBGAGkAbABlAFYAZQByAHMAaQBvAG4AAAAAADEALgAw
AC4AMAAuADAAAACYADwAAQBJAG4AdABlAHIAbgBhAGwATgBhAG0AZQAAAFMAYwByAGkAcAB0AEMA
bwBtAHAAbwBuAGUAbgB0AF8ANABhAGQANwA0ADUAZQAwADEAZAAyAGQANABiAGUAOQBiAGEANQBk
ADQAZAAzAGEAOQA3ADkANwAyADQAZABiAC4AdgBiAHAAcgBvAGoALgBkAGwAbAAAAFwAGwABAEwA
ZQBnAGEAbABDAG8AcAB5AHIAaQBnAGgAdAAAAEMAbwBwAHkAcgBpAGcAaAB0ACAAQAAgAE0AaQBj
AHIAbwBzAG8AZgB0ACAAMgAwADEAMwAAAAAAoAA8AAEATwByAGkAZwBpAG4AYQBsAEYAaQBsAGUA
bgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8ANABhAGQANwA0ADUAZQAw
ADEAZAAyAGQANABiAGUAOQBiAGEANQBkADQAZAAzAGEAOQA3ADkANwAyADQAZABiAC4AdgBiAHAA
cgBvAGoALgBkAGwAbAAAAJAAOAABAFAAcgBvAGQAdQBjAHQATgBhAG0AZQAAAAAAUwBjAHIAaQBw
AHQAQwBvAG0AcABvAG4AZQBuAHQAXwA0AGEAZAA3ADQANQBlADAAMQBkADIAZAA0AGIAZQA5AGIA
YQA1AGQANABkADMAYQA5ADcAOQA3ADIANABkAGIALgB2AGIAcAByAG8AagAAADQACAABAFAAcgBv
AGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADEALgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0A
YgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMQAuADAALgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAGAAAAwAAACgNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAA=]]></arrayElement></arrayElements></property><property id="7" 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_4ad745e01d2d4be9ba5d4d3a979724db</property><property id="8" 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><property id="15" name="UserComponentTypeName" dataType="System.String">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2012, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property></properties><connections><connection id="16" name="Connection" connectionManagerID="{E407898B-EE32-4F71-BD7E-D5F9228E9383}" /></connections><inputs><input id="17" name="Input" hasSideEffects="true"><externalMetadataColumns isUsed="True" /></input></inputs><outputs><output id="19" name="Output" synchronousInputId="17"><externalMetadataColumns /></output></outputs></component>