<component id="402" name="Oracle Destination" componentClassID="{2E42D45B-F83C-400F-8D77-61DDE6A7DF29}" description="Executes a custom script." localeId="1033" usesDispositions="false" validateExternalMetadata="True" version="4" pipelineVersion="0" contactInfo="Executes a custom script.;Microsoft Corporation;Microsoft SqlServer v9; © 2004 Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;0">
<properties>
<property id="403" name="SourceCode" dataType="System.String" state="cdata" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None"><arrayElements arrayElementCount="18"><arrayElement dataType="System.String"><![CDATA[\my project\settings.designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On



Partial Friend NotInheritable Class MySettings
    Inherits System.Configuration.ApplicationSettingsBase

    Private Shared m_Value As MySettings

    Private Shared m_SyncObject As Object = New Object

    <System.Diagnostics.DebuggerNonUserCode()> _
    Public Shared ReadOnly Property Value() As MySettings
        Get
            If (MySettings.m_Value Is Nothing) Then
                System.Threading.Monitor.Enter(MySettings.m_SyncObject)
                If (MySettings.m_Value Is Nothing) Then
                    Try
                        MySettings.m_Value = New MySettings
                    Finally
                        System.Threading.Monitor.Exit(MySettings.m_SyncObject)
                    End Try
                End If
            End If
            Return MySettings.m_Value
        End Get
    End Property
End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\assemblyinfo.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices

' General Information about an assembly is controlled through the following 
' set of attributes. Change these attribute values to modify the information
' associated with an assembly.

' Review the values of the assembly attributes

<Assembly: AssemblyTitle("ScriptComponent_e8c6f2cbccf645ae862b6dbf4ea8a3d9.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_e8c6f2cbccf645ae862b6dbf4ea8a3d9.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("eb0f77bf-f704-4eab-9f47-fa00eeb72583")> 

' Version information for an assembly consists of the following four values:
'
'      Major Version
'      Minor Version 
'      Build Number
'      Revision
'
' You can specify all the values or you can default the Build and Revision Numbers 
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>

<Assembly: AssemblyVersion("1.0.0.0")> 
<Assembly: AssemblyFileVersion("1.0.0.0")> 
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\main.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' 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.

' The following resources were used as a reference:
' http://blog.jun.bz/2008/07/super-fast-ssis-oracle-loader.html

Imports System
Imports System.ComponentModel
Imports System.Collections
Imports System.Data
Imports System.Data.Common
Imports System.Reflection
Imports System.IO

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


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<ColumnMappings()> _
<SortProperties(New String() { _
    "Connection", "BatchSize", "Timeout", _
    "IsTableVariable", "Table", "TableVariable"})> _
<FilterProperties("GetProperties")> _
<ValidateProperties("Validate")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    Private Const OracleTypeProperty As String = "OracleType"


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Dim colsCount As Integer = m_inputIndexes.Length
        For colIndex As Integer = 0 To colsCount - 1
            Dim bufIndex As Integer = m_inputIndexes(colIndex)
            Dim param As DbParameter = m_command.Parameters.Item(colIndex)
            Dim value As Object = Nothing

            If Not Row.Buffer.IsNull(bufIndex) Then
                value = Row.Buffer(bufIndex)

                Select Case param.DbType
                    Case DbType.Object
                        ' Blob columns need special handling.
                        value = GetOracleBlob_(CType(value, BlobColumn))
                End Select
            End If

            Dim buffer() As Object = CType(param.Value, Object())
            buffer(m_currentRow) = value
        Next

        m_currentRow += 1

        If m_currentRow = Me.BatchSize Then
            ' Time to send current batch of data.
            Try
                Call m_command.ExecuteNonQuery()
            Catch ex As Exception
                Call FireError_(ex.Message)
            End Try

            m_currentRow = 0
        End If
    End Sub ' Input_ProcessInputRow


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

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

        ' Setup dynamic input columns indexes.
        m_inputIndexes = New Integer(colsCount - 1) {}
        For colIndex As Integer = 0 To colsCount - 1
            m_inputIndexes(colIndex) = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                input.Buffer, _
                input.InputColumnCollection(colIndex).LineageID)
        Next

        ' Setup Oracle command.
        Call m_command.GetType().InvokeMember( _
            "BindByName", _
            BindingFlags.SetProperty Or BindingFlags.Public Or BindingFlags.Instance, _
            Nothing, _
            m_command, _
            New Object() {True})
        Call m_command.GetType().InvokeMember( _
            "ArrayBindCount", _
            BindingFlags.SetProperty Or BindingFlags.Public Or BindingFlags.Instance, _
            Nothing, _
            m_command, _
            New Object() {Me.BatchSize})
        m_command.CommandTimeout = Me.Timeout
        m_command.CommandType = CommandType.Text

        ' Setup command parameters.
        Dim colsList As String = String.Empty
        Dim paramsList As String = String.Empty
        For colIndex As Integer = 0 To colsCount - 1
            Dim extCol As IDTSExternalMetadataColumn100 = input.ExternalMetadataColumnCollection.GetObjectByID( _
                input.InputColumnCollection(colIndex).ExternalMetadataColumnID)

            If Not String.IsNullOrEmpty(colsList) Then
                colsList += ", "
                paramsList += ", "
            End If

            colsList += String.Format("""{0}""", extCol.Name)
            paramsList += String.Format(":{0}", extCol.Name)

            Dim parameter As DbParameter = m_command.CreateParameter()
            parameter.ParameterName = extCol.Name

            Dim paramType As Type = parameter.GetType()
            Call paramType.InvokeMember( _
                "OracleDbType", _
                BindingFlags.SetProperty Or BindingFlags.Public Or BindingFlags.Instance, _
                Nothing, _
                parameter, _
                New Object() {System.Enum.Parse( _
                    paramType.GetProperty("OracleDbType").PropertyType, _
                    extCol.CustomPropertyCollection(OracleTypeProperty).Value.ToString())})

            parameter.Value = New Object(Me.BatchSize) {}
            parameter.Direction = ParameterDirection.Input

            Call m_command.Parameters.Add(parameter)
        Next

        Dim destTable As String = Me.Table
        If Me.IsTableVariable Then
            ' Destination table is contained in variable.
            destTable = CStr(GetVariable_(Me.TableVariable))
        End If

        If String.IsNullOrEmpty(destTable) Then
            Throw New Exception("Destination table not specified. Check package protection level.")
        End If

        ' Setup command statement.
        m_command.CommandText = String.Format( _
            "INSERT INTO {0} ( {1} ) VALUES ( {2} )", _
            destTable, _
            colsList, _
            paramsList)

        m_currentRow = 0

        ' Setup OracleClob constructor.
        Dim clobType As Type = Type.GetType( _
            "Oracle.DataAccess.Types.OracleClob, " + _
            m_command.Connection.GetType().Assembly.FullName)
        m_clobCI = clobType.GetConstructor(New Type() {m_command.Connection.GetType()})

        ' Setup OracleBlob constructor.
        Dim blobType As Type = Type.GetType( _
            "Oracle.DataAccess.Types.OracleBlob, " + _
            m_command.Connection.GetType().Assembly.FullName)
        m_blobCI = blobType.GetConstructor(New Type() {Connection.GetType()})
    End Sub ' PreExecute


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

        If m_currentRow > 0 Then
            Call m_command.GetType().InvokeMember( _
                "ArrayBindCount", _
                BindingFlags.SetProperty Or BindingFlags.Public Or BindingFlags.Instance, _
                Nothing, _
                m_command, _
                New Object() {m_currentRow})
            Call m_command.ExecuteNonQuery()
            m_currentRow = 0
        End If
    End Sub ' PostExecute


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub AcquireConnections(ByVal Transaction As Object)
        Call MyBase.AcquireConnections(Transaction)

        ' Setup command.
        Dim conn As DbConnection = CType( _
            Me.Connections.Oracle.AcquireConnection(Transaction), _
            DbConnection)
        m_command = conn.CreateCommand()
    End Sub ' AcquireConnections


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

        If Not m_command Is Nothing Then
            ' Dispose command and connection.
            Dim conn As DbConnection = m_command.Connection
            Call m_command.Dispose()
            Call conn.Dispose()
            m_command = Nothing
        End If
    End Sub ' ReleaseConnections


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of current properties based on current state.
    Public Function GetProperties() As String()
        Dim result As New ArrayList

        Call result.Add("Connection")
        Call result.Add("IsTableVariable")
        Call result.Add(IIf(Me.IsTableVariable, "TableVariable", "Table"))
        Call result.Add("BatchSize")
        Call result.Add("Timeout")

        Return CType(result.ToArray(GetType(String)), String())
    End Function    ' GetProperties


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

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

            If String.IsNullOrEmpty(Me.Table) Then
                Throw New Exception("Select destination table.")
            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

            Me.ComponentMetaData.RuntimeConnectionCollection("Oracle").ConnectionManagerID = Me.Connection
        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.Connection) Then
            Throw New Exception("Connection not selected.")
        End If

        If String.IsNullOrEmpty(Me.Table) Then
            Throw New Exception("Destination table not selected.")
        End If

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

        ' Get table schema.
        Dim tableSchema As DataTable
        Using connection As DbConnection = CType( _
            Me.DesignConnections(Me.Connection).AcquireConnection(Nothing), _
            DbConnection), _
            command As DbCommand = connection.CreateCommand()

            command.CommandType = CommandType.TableDirect

            ' Setup destination table.
            If Me.IsTableVariable Then
                command.CommandText = CStr(GetVariable_(Me.TableVariable))
            Else
                command.CommandText = Me.Table
            End If

            tableSchema = command.ExecuteReader(CommandBehavior.SchemaOnly).GetSchemaTable()
        End Using

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

        ' Setup column metadata.
        Dim colsCount As Integer = tableSchema.Rows.Count
        For colIndex As Integer = 0 To colsCount - 1
            Dim columnRow As DataRow = tableSchema.Rows(colIndex)

            Dim column As IDTSExternalMetadataColumn100 = input.ExternalMetadataColumnCollection.NewAt( _
                colIndex)
            column.Name = CStr(columnRow("ColumnName"))

            ' Get type.
            Dim rawType As Type = CType(columnRow("DataType"), Type)
            Dim columnType As DataType = DataRecordTypeToBufferType_(rawType)
            If CBool(columnRow("IsLong")) Then
                ' This is extended type. Have to modify the column type a bit.
                Select Case columnType
                    Case DataType.DT_WSTR
                        columnType = DataType.DT_NTEXT

                    Case DataType.DT_STR
                        columnType = DataType.DT_TEXT

                    Case DataType.DT_BYTES
                        columnType = DataType.DT_IMAGE
                End Select
            End If

            ' Get length.
            Dim length As Integer = 0
            Select Case columnType
                Case DataType.DT_WSTR, DataType.DT_STR, DataType.DT_BYTES, DataType.DT_IMAGE, DataType.DT_NTEXT, DataType.DT_TEXT
                    length = CInt(columnRow("ColumnSize"))
            End Select

            ' Get code page.
            Dim codepage As Integer = 0
            If columnType = DataType.DT_STR Then
                codepage = -1
            End If

            ' Get precision and scale.
            Dim precision As Integer = 0
            Dim scale As Integer = 0
            If columnType = DataType.DT_NUMERIC OrElse columnType = DataType.DT_BYREF_DECIMAL Then
                If columnRow.IsNull("NumericPrecision") Then
                    precision = 29
                Else
                    precision = CInt(columnRow("NumericPrecision"))
                End If

                If columnRow.IsNull("NumericScale") Then
                    scale = 0
                Else
                    scale = CInt(columnRow("NumericScale"))
                End If

                If scale = 255 Then
                    scale = 0
                End If
            End If

            column.DataType = columnType
            column.Length = length
            column.Precision = precision
            column.Scale = scale
            column.CodePage = codepage

            ' Include Oracle type as property.
            Dim propType As IDTSCustomProperty100 = column.CustomPropertyCollection.[New]()
            propType.Name = OracleTypeProperty
            propType.Value = columnRow("ProviderType")
        Next
    End Sub ' ReinitializeMetaData


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of tables in the currently selected Oracle connection.
    Public Function GetTables() As String()
        Dim result As ArrayList = New ArrayList()

        Dim connection As DbConnection = CType( _
            Me.DesignConnections(Me.Connection).AcquireConnection(Nothing), _
            DbConnection)

        Try
            Dim tables As DataTable = connection.GetSchema("Tables")
            For Each table As DataRow In tables.Rows
                Dim tableType As String = table(2).ToString().ToUpper()
                If tableType <> "USER" Then
                    ' Include only user tables.
                End If

                Dim tableName As String = String.Format( _
                    """{0}"".""{1}""", _
                    table(0), _
                    table(1))

                Call result.Add(tableName)
            Next
        Finally
            Call connection.Dispose()
        End Try

        Return CType(result.ToArray(GetType(String)), String())
    End Function    ' GetTables


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select connection to Oracle Data Provider for .NET")> _
    <Category("Connection")> _
    <Connection("AdoNetConnectionType")> _
    Public Property Connection() As String
        Get
            Connection = m_connection
        End Get
        Set(ByVal value As String)
            m_connection = value
        End Set
    End Property    ' Connection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies the number of rows to be sent as a batch to the database.")> _
    <Category("Connection")> _
    <DefaultValue(10000)> _
    Public Property BatchSize() As Integer
        Get
            BatchSize = m_batchSize
        End Get
        Set(ByVal value As Integer)
            m_batchSize = value
        End Set
    End Property    ' BatchSize


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies the number of seconds allowed for the bulk copy operation to complete before it is aborted.")> _
    <Category("Connection")> _
    <DefaultValue(30)> _
    Public Property Timeout() As Integer
        Get
            Timeout = m_timeout
        End Get
        Set(ByVal value As Integer)
            m_timeout = value
        End Set
    End Property    ' Timeout


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Indicates whether the destination table is stored in a variable.")> _
    <Category("Destination")> _
    <RefreshProperties(RefreshProperties.All)> _
    <DefaultValue(False)> _
    Public Property IsTableVariable() As Boolean
        Get
            IsTableVariable = m_isTableVariable
        End Get
        Set(ByVal value As Boolean)
            If m_isTableVariable <> value Then
                m_isTableVariable = value
                Me.Table = String.Empty
            End If
        End Set
    End Property    ' IsTableVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Destination table to load in bulk.")> _
    <Category("Destination")> _
    <List("GetTables")> _
    Public Property Table() As String
        Get
            Table = m_table
        End Get
        Set(ByVal value As String)
            If m_table <> value Then
                If Not String.IsNullOrEmpty(m_table) 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_table = value
            End If
        End Set
    End Property    ' Table


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies the variable that contains the destination table.")> _
    <Category("Destination")> _
    <Variable()> _
    Public Property TableVariable() As String
        Get
            TableVariable = Me.Table
        End Get
        Set(ByVal value As String)
            Me.Table = value
        End Set
    End Property    ' TableVariable
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property AdoNetConnectionType() As String()
        Get
            AdoNetConnectionType = New String() {"ADO.NET"}
        End Get
    End Property    ' AdoNetConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns SSIS data type from .NET type. Uses private PipelineComponent method.
    Private Function DataRecordTypeToBufferType_(ByVal type As Type) As DataType
        DataRecordTypeToBufferType_ = CType( _
            GetType(PipelineComponent).InvokeMember( _
                "DataRecordTypeToBufferType", _
                BindingFlags.InvokeMethod Or BindingFlags.NonPublic Or BindingFlags.Static, _
                Nothing, _
                Nothing, _
                New Object() {type}), _
            DataType)
    End Function    ' DataRecordTypeToBufferType_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetVariable_(ByVal varName As String) As Object
        Dim result As Object

        Dim vars As IDTSVariables100 = Nothing
        Call MyBase.VariableDispenser.LockOneForRead(varName, vars)
        Try
            result = vars(varName).Value
        Finally
            Call vars.Unlock()
        End Try

        GetVariable_ = result
    End Function    ' GetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Creates Oracle specific BLOB out of SSIS BLOB.
    Private Function GetOracleBlob_(ByVal blob As BlobColumn) As Stream
        Dim result As Stream

        If blob.ColumnInfo.DataType = DataType.DT_STR OrElse _
            blob.ColumnInfo.DataType = DataType.DT_WSTR Then

            result = CType(m_clobCI.Invoke(New Object() {m_command.Connection}), Stream)
        Else
            result = CType(m_blobCI.Invoke(New Object() {m_command.Connection}), Stream)
        End If

        Dim data() As Byte = blob.GetBlobData(0, CInt(blob.Length))
        Call result.Write(data, 0, data.Length)
        Call result.Flush()

        GetOracleBlob_ = result
    End Function    ' GetOracleBlob_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub FireError_(ByVal message As String)
        Dim cancel As Boolean = False
        Call MyBase.ComponentMetaData.FireError( _
            0, _
            "Oracle Destination", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub ' FireError_
#End Region ' Internals


#Region "Attributes"
    Private m_connection As String
    Private m_batchSize As Integer
    Private m_timeout As Integer
    Private m_isTableVariable As Boolean
    Private m_table As String

    Private m_command As DbCommand
    Private m_inputIndexes() As Integer
    Private m_currentRow As Integer
    Private m_clobCI As ConstructorInfo
    Private m_blobCI As ConstructorInfo
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\bufferwrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class InputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer)
        MyBase.New(Component, ObjectID, IsInput, Buffer)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overloads Function NextRow() As Boolean
        NextRow = MyBase.NextRow()
    End Function

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\resources.designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On


Namespace My.Resources
    
    '''<summary>
    '''   A strongly-typed resource class, for looking up localized strings, etc.
    '''</summary>
    'This class was auto-generated by the Strongly Typed Resource Builder
    'class via a tool like ResGen or Visual Studio.NET.
    'To add or remove a member, edit your .ResX file then rerun ResGen
    'with the /str option, or rebuild your VS project.
    Class MyResources
        
        Private Shared _resMgr As System.Resources.ResourceManager
        
        Private Shared _resCulture As System.Globalization.CultureInfo
        
        Friend Sub New()
            MyBase.New
        End Sub
        
        '''<summary>
        '''   Returns the cached ResourceManager instance used by this class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared ReadOnly Property ResourceManager() As System.Resources.ResourceManager
            Get
                If (_resMgr Is Nothing) Then
                    Dim temp As System.Resources.ResourceManager = New System.Resources.ResourceManager("My.Resources.MyResources", GetType(MyResources).Assembly)
                    _resMgr = temp
                End If
                Return _resMgr
            End Get
        End Property
        
        '''<summary>
        '''   Overrides the current thread's CurrentUICulture property for all
        '''   resource lookups using this strongly typed resource class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared Property Culture() As System.Globalization.CultureInfo
            Get
                Return _resCulture
            End Get
            Set
                _resCulture = value
            End Set
        End Property
    End Class
End Namespace
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\componentwrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services component wrapper
' This module defines the base class for your component
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class UserComponent
    Inherits ScriptComponentPlus

    Public Connections As New Connections(Me)
    Public Variables As New Variables(Me)

    Public Overrides Sub ProcessInput(ByVal InputID As Integer, ByVal Buffer As PipelineBuffer)

        If InputID = MyBase.ComponentMetaData.InputCollection("Input").ID Then
            Input_ProcessInput(New InputBuffer(Me, InputID, True, Buffer))
        End If

    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 Oracle() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("Oracle").ConnectionManager
        End Get
    End Property

End Class

Public Class Variables

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\resources.resx]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\settings.settings]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version='1.0' encoding='iso-8859-1'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)" GeneratedClassNamespace="" GeneratedClassName="MySettings">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\scriptcomponent_e8c6f2cbccf645ae862b6dbf4ea8a3d9.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!-- This section defines project-level properties.

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

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

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

       Compile - Specifies a source file to compile.
       EmbeddedResource - Specifies a .resx file for embedded resources.
       None - Specifies a file that is not to be passed to the compiler (for instance,
              a text file or XML file).
       AppDesigner - Specifies the directory where the application properties files can
                     be found.
  -->
  <ItemGroup>
    <AppDesigner Include="My Project\" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
    <Compile Include="main.vb" />
    <Compile Include="My Project\AssemblyInfo.vb">
      <SubType>Code</SubType>
    </Compile>
    <EmbeddedResource Include="My Project\Resources.resx">
      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.vb</LastGenOutput>
      <CustomToolNamespace>My.Resources</CustomToolNamespace>
    </EmbeddedResource>
    <Compile Include="My Project\Resources.Designer.vb">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resources.resx</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <None Include="My Project\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.vb</LastGenOutput>
    </None>
    <Compile Include="My Project\Settings.Designer.vb">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <!-- Include the default configuration information and metadata files for the add-in.
         These files are copied to the build output directory when the project is
         built, and the path to the configuration file is passed to add-in on the command
         line when debugging.
    -->
  </ItemGroup>
  <!-- Include the build rules for a VB project.-->
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <!-- This section defines VSTA properties that describe the host-changable project properties. -->
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{A860303F-1F3F-4691-B57E-529FC101A107}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{C1B21C64-9E6F-4923-A89D-9F958503C1CE}" ApplicationType="usd" Language="vb" TemplatesPath="" />
        <Host Name="SSIS_ScriptComponent" />
        <ProjectClient>
          <HostIdentifier>SSIS_ScriptComponent</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</Project>]]></arrayElement></arrayElements></property>
<property id="404" name="BinaryCode" dataType="System.String" state="cdata" isArray="true" description="Stores the binary representation of the component" typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None"><arrayElements arrayElementCount="2"><arrayElement dataType="System.String"><![CDATA[\bin\scriptcomponent_e8c6f2cbccf645ae862b6dbf4ea8a3d9.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
2gfHBwYAHAgKCAYApQiUCAYA0gi9CCIAOQkkCSIAhglwCSIAnwlwCSIAzAm0CQYA9gnjCQoANQoO
CgoATQoTACIAggplCgYAtwqXCgYA1QrmAQYA+QrmAQoAEgsTAAYAVgs3CwYAagvmARIAcQvFAwYA
fgvmASYA4Qu4CyYAEAy4CyYAOwy4CyYAWAy4CyYAmwy4Cx4AygzHBwYA1gzmAR4A4Ay7Bx4A5wzH
BwoAOQ0OCiYAcw24CwYAkQ3mASYAlw24CxYA2A3FAyYA/A24CyYAIw64CwYAWg7mAQYAYg4KCAYA
bw4KCB4Alg67ByYAuA64CwYAdw8KCCYAoQ+4CyYA3g+4CwYA9A/mAR4A/w+7BwoAJBAOCh4AQBDH
BwYATRAKCCIAJgRwCQYAuhCnEAoAxBATAAYA1BDmAR4ACRG7Bx4AExG7ByoAAgE6ESoAcBE6ER4A
ghHHBx4AjxG7BwYAvBHmAR4A3RG7BwYAXBKnEAoAlBIOChoAtRI7BRoAxhI7BRoABBM7BRYAGxPF
AxIAaxPFAw4AtBOSEw4A0BOSEw4A6hOSEw4AAhSSEw4AGhSSEyIALhRwCSIAQBRwCQ4AVRSSEyIA
YxRwCSIAeRRwCSIAlBRwCQ4AphSSEwYAyRS4FAYA3BTjCQYARRWXCgYAZRWXCgYAgxUKCAYAoBU3
CwYArhUKCAYAyRUKCAYA5BUKCAYA/RUKCAYAFhYKCAYAMxYKCAAAAAABAAAAAAABAAEAAAAAACkA
NwAFAAEAAQAAAAAAcgA3AAkAAQACAAABEAB9ADcADQABAAMABQEAAIcAAAANAAUACAAFAQAAlQAA
AA0ABQAPAAEAAACwALwAHQAGABEAAQAAAPQAvAApAAYAFgABAAAAAgG8AA0ACAAaAAEAAAAOAbwA
DQAJABwAAQAAABgBvAAgAAoAHQAAAAAAIwEvAQ0AFQA4AAABEAB0AbwATQAXADwAMQAIAiAAMQAx
Ai0AMQBTAjoAMQB4AkcAIQBUA5AABgACAccABgAOAcsAAQAIBdwAAQAIBdwAUYCOBfAAAQB+B/AA
AQCLBzUBAQCXBzUBAQChBzgBAQCzB/AAAQDkBzsBAQDuBz8BAQD9BzUBAQAsCEMBAQA1CEMBEQC1
CFMBEQDeCFcBEQBRCXUBEQBZCXkBCCEAAAAABhi5ARMAAQAQIQAAAAAGGLkBEwABABghAAAAABEY
9AEXAAEARCEAAAAAEwj7ARsAAQBcIQAAAAATCCECKAABAHQhAAAAABMISgI1AAEAjCEAAAAAEwho
AkIAAQCkIQAAAABGAq4CYwABAMAhAAAAAEYCtwJoAAIA1CEAAAAAgwDIAmwAAgDsIQAAAABGAtAC
cQACAAAiAAAAABEA2QJ4AAIAHCIAAAAAAQD3AoAAAwA4IgAAAAAGGLkBEwAEAEAiAAAAAAMICwOL
AAQAdCIAAAAABhi5ARMABACIIgAAAAAGGLkBrwAEAJgiAAAAAEYKSAS5AAgArCIAAAAARgpfBLkA
CADAIgAAAACGAHcEvgAIANgiAAAAAIYAfwS+AAgA8CIAAAAABhi5ARMACAAQIwAAAABGAsYEzwAI
AEAjAAAAAEYD2wTWAAoAVCMAAAAARgPuBNYACwBYIwAAAAAGGLkB4AAMAGgjAAAAAAYIfAXmAA0A
lCMAAAAABhi5AeAADQCkIwAAAAAGGLkBEwAOAKwjAAAAAEYC7gTWAA4AsCQAAAAARgKhBRMADwAg
KAAAAABGAqwFEwAPAIgoAAAAAEYCuAUIAQ8AzCgAAAAARgLXBRMAEAAMKQAAAAAGAOoFuQAQAIgp
AAAAAAYA+AUNARAATCoAAAAARgIMBhMAEQB4LQAAAAAGACEGuQARAIAuAAAAAAYIKwZxABEAmC4A
AAAABgg6BhMBEQCkLgAAAAAGCE8GaAASALwuAAAAAAYIXQYYARIAyC4AAAAABghrBmgAEwDgLgAA
AAAGCHcGGAETAOwuAAAAAAYIgwa+ABQABC8AAAAABgiXBh0BFAAkLwAAAAAGCKsGcQAVADwvAAAA
AAYItQYTARUApC8AAAAABgi/BnEAFgC8LwAAAAAGCNEGEwEWAMgvAAAAAAEI4wa5ABcA6C8AAAAA
AQAFByIBFwAkMAAAAAABACYHKQEYAHQwAAAAAAEAVwcuARkAKDEAAAAAAQBrBxMBGgBUMQAAAAAD
GLkBEwAbAFwxAAAAABYI6ghbARsAmDEAAAAAFgj+CGABGwCsMQAAAAAWCAoJZQEbALQxAAAAABEY
9AEXABwAyDEAAAAABhi5ARMAHADQMQAAAAAWCGYJfAEcAAAAAQC1AgAAAQDuAgAAAQDuAgAAAQAm
BAAAAgAwBAAAAwA5BAAABABBBAAAAQDTBAAAAgBBBAAAAQBBBAAAAQAEBQAAAQAmBAAAAQAmBAAA
AQAEBQAAAQDLBQAAAQABBgAAAQBJBgAAAQBJBgAAAQBJBgAAAQBJBgAAAQBJBgAAAQBJBgAAAQAh
BwAAAQAzBwAAAQBmBwAAAQB2BwAAAQAWCQkAuQETAKEAuQGGAbEAuQGVAREAuQETALkAuQETACQA
uQETACwAuQETADQAuQETADwAuQETACQACwOLACwACwOLADQACwOLADwACwOLAMEAuQETAMkAuQET
ANEAuQETAdkAxgouAhkArgJjABkAtwJoACkA5wo7AhkA0AJxAOkAAwtLAhkAuQETAPEAuQFbAkQA
VAOQAEwAZgmLAEwALQvYAkwAuQETAPkAuQEdATkAuQGvAAkBdwS+AAkBfwS+ABEBuQEdAVEAuQET
AEEA+gvwAhkBJwz2AiEBSAz8AikBUQxoABkBewwDAzEBSAwJAzkBtAzmAHkA/QwVA1kBSAwbAzkA
DA0iA0kAFw0nA0kASAwsA0EBHg0xA0EBZgk3A3kAKQ1oAGEBRQ0+A0kBVQ1xAGEBYQ0XAEEAoQUT
ACkBtA1YA3kBzg1oAFEA6g1eA4EBEQ5kAykBDA1oAHkBSAxqA5EBNg5oAIkBRA5xAxkAyAJsACkA
dg53A3kAgw4YAXkAog6FAwEBsg7wACkB4A6MA5EBBQ9oALkBIg+SAwEBMA+ZAwEBPg+eA2kBRQ9x
AAEBTg+kA3kAVQ+qA0EBZQ8TASkAhA+wA8EBkA9sAGkBwQ+3A8kBSAy9A9EBZgk3A9kB+Q/EA0EB
LQsIAUEBEhDLA1kBIBDSA+kB0ALXA0kBuQETAQEBTg/cA3kAMBATAXkAKwbkAykAVhDqA/kBYxBx
ACkAyALwAykAcBD2A0EArAUTAEEAuAUIAVkAfxAiBPEBkRAnBEEA1wUTAAECnxATAAkCuQETAAkC
IBDSAxEC0BAyBAkC2hA5BCkB4hC+ADkB8RATAVEADAYTACEBzg1oAFEAWhFXBDECSAxdBDkCfxAi
BHkAnxFkBEECrRFtBFECnxATALkByBEdAXkB0xETALkB0xETACEC7xFzBFkCzg1oAFkCSAx5BLkB
+BGSAykCSAwpAWkB/hETAekBBxKABOkBERKFBCkCFw2KBGkBGxKPBGkBKBIYAWkBMxIYAWkBQRIY
AWkBSxIYAckBWBKVBNEB/hETAdEBLQsIAfEBaBLBBFkCchLIBGECgBI3AykCSAwsAwEBjBJxAGkC
nhLOBAEBTg/VBGECrBK+AEEA3xIGBXkC9RIMBXECSAwVBYECZgk3A3ECFBMTAHEAKBMkBYkC/AYq
BYEANxMuBXEAPhM0BXEASRM4BWkAVRM/BWkAWxMTABkBYRNYBZECuQETAJkCuQETAaECuQETAakC
uQGEBbECuQETALkCuQETAcECuQETAckCuQETAdECuQETAdkCuQEdAeECuQF+BtkCuQEYAfECuQET
AIkAuQHSB5kAuQETAPkC0RTvB/kC1xTvBwEDuQETAAkDuQEYAREDuQETABkDuQETASEDuQETASkD
uQETATEDuQETATkDuQETAUEDuQETAUkDuQETAVEDuQETAQ4AKADzACkAgwDoAS4AqwXlAi4AgwUu
CC4AowW7CC4AswV+CC4AawX5By4AcwUCCC4AewUhCC4A6wDlAi4ACwFYCC4AiwXlAi4AkwVeCC4A
mwV+CEAAEwCMAUAAKwCzAUMAEwCMAUMAGwCbAUkAgwAGAmMAEwCMAWMAGwCbAWkAgwD5AYAAKwCz
AYMAcwCzAYMAewCzAYMAGwCbAYkAgwAaAqAAKwCzAaMAwwBjAqMAEwCMAcAAKwCzAcMA6wDlAsMA
EwCMAeAAKwCzAeMACwHlAgABEwCMAQABKwCzAQMBCwHlAiABKwCzASABEwCMASkBCwXuBSkBAwXU
BSkBEwX+BUABKwCzAUABEwCMAUkBMwXLBkkBEwXUBkkBCwXuBWABEwCMAWABKwCzAWMB2wSzAWMB
8wSKBWMB+wSzAWMBCwHlAmMB4wRjBWMB6wRxBWkBCwXuBWkBEwVnB2kBMwVeB4ABKwCzAYkBCwVF
BokBIwXlAokBEwWFBokBKwWMAaABKwCzAakBEwVWBqkBGwU2BqkBCwVFBsABKwCzAcABEwCMAckB
OwWzAckBCwVFBskBEwUdB+ABKwCzAQACKwCzAQACEwCMAQkCEwDmBykCEwDmB0kCYwWzAUADCwHl
AoADCwHlAtQB2QHeAeMBMwI3AkICRwJWAlYC3gLrAusCMwIzAhADRQP+Ax0ELAQsBEQETASbBNwE
RwI3AjcCMwJHAvIERwL4BP8EHAVHBTMC2gfhB/QHBAABAAYABQAHAAYACQAIAAsACQAMABAADQAS
AAAA3QFPAAAAlgJUAAAARQJZAAAAogJeAAAAXgOYAAAAiwTCAAAAngTCAAAAhwXrAAAAPghHAQAA
SQhLAQAAUwhLAQAAWwhPAQAAawhHAQAAcQhHAQAAfwjCAAAApQhrAQAAHAlwAQAAFgmBAQIABAAD
AAIABQAFAAIABgAHAAIABwAJAAIADwALAAIAEgANAAIAEwAPAAIAGwARAAIAJwATAAEAKAATAAIA
KQAVAAEAKgAVAAIAKwAXAAEALAAXAAEALgAZAAIALQAZAAIALwAbAAEAMAAbAAIAMQAdAAEAMgAd
AAIAMwAfAAIAOQAhAAIAOgAjAAEAOwAjAAIAPgAlAHUAdQCIALgBvwHGAc0BxQLMAjsDQQQEgAAA
AQAAAAAAAAAAAAAAAAC8AAAAAgAAAAAAAAAAAAAAAQAKAAAAAAAIAAAAAAAAAAAAAAAKABMAAAAA
AAEAAAAAAAAAAAAAAJ0AagMAAAAACgAAAAAAAAAAAAAApgCoAwAAAAAKAAAAAAAAAAAAAACmAPYD
AAAAAAoAAAAAAAAAAAAAAKYAGAUAAAAAAgAAAAAAAAAAAAAAAQC7BwAAAAACAAAAAAAAAAAAAAAB
AOYBAAAAAAoAAAAAAAAAAAAAAKYAlAsAAAAACgAAAAAAAAAAAAAApgAbEQAAAAAAAAAAAQAAAPkU
AAAFAAQABgAEAAAAEAAMAOwCAAAQABkA7AIAAAAAGwDsAi0AUQItANMCAAAAPE1vZHVsZT4AbXNj
b3JsaWIATWljcm9zb2Z0LlZpc3VhbEJhc2ljAE15QXBwbGljYXRpb24AU2NyaXB0Q29tcG9uZW50
X2U4YzZmMmNiY2NmNjQ1YWU4NjJiNmRiZjRlYThhM2Q5LnZicHJvai5NeQBNeUNvbXB1dGVyAE15
UHJvamVjdABNeVdlYlNlcnZpY2VzAFRocmVhZFNhZmVPYmplY3RQcm92aWRlcmAxAElucHV0QnVm
ZmVyAFNjcmlwdENvbXBvbmVudF9lOGM2ZjJjYmNjZjY0NWFlODYyYjZkYmY0ZWE4YTNkOS52YnBy
b2oAVXNlckNvbXBvbmVudABDb25uZWN0aW9ucwBWYXJpYWJsZXMAU2NyaXB0TWFpbgBNeVJlc291
cmNlcwBTY3JpcHRDb21wb25lbnRfZThjNmYyY2JjY2Y2NDVhZTg2MmI2ZGJmNGVhOGEzZDkudmJw
cm9qLk15LlJlc291cmNlcwBNeVNldHRpbmdzAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5BcHBsaWNh
dGlvblNlcnZpY2VzAEFwcGxpY2F0aW9uQmFzZQAuY3RvcgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMu
RGV2aWNlcwBDb21wdXRlcgBTeXN0ZW0AT2JqZWN0AC5jY3RvcgBnZXRfQ29tcHV0ZXIAbV9Db21w
dXRlck9iamVjdFByb3ZpZGVyAGdldF9BcHBsaWNhdGlvbgBtX0FwcE9iamVjdFByb3ZpZGVyAFVz
ZXIAZ2V0X1VzZXIAbV9Vc2VyT2JqZWN0UHJvdmlkZXIAZ2V0X1dlYlNlcnZpY2VzAG1fTXlXZWJT
ZXJ2aWNlc09iamVjdFByb3ZpZGVyAEFwcGxpY2F0aW9uAFdlYlNlcnZpY2VzAEVxdWFscwBvAEdl
dEhhc2hDb2RlAFR5cGUAR2V0VHlwZQBUb1N0cmluZwBDcmVhdGVfX0luc3RhbmNlX18AVABpbnN0
YW5jZQBEaXNwb3NlX19JbnN0YW5jZV9fAGdldF9HZXRJbnN0YW5jZQBNaWNyb3NvZnQuVmlzdWFs
QmFzaWMuTXlTZXJ2aWNlcy5JbnRlcm5hbABDb250ZXh0VmFsdWVgMQBtX0NvbnRleHQAR2V0SW5z
dGFuY2UAQ296eVJvYy5TU0lTUGx1cy4yMDA4AENvenlSb2MuU3FsU2VydmVyLlNTSVMAU2NyaXB0
QnVmZmVyUGx1cwBNaWNyb3NvZnQuU3FsU2VydmVyLlR4U2NyaXB0AE1pY3Jvc29mdC5TcWxTZXJ2
ZXIuRHRzLlBpcGVsaW5lAFNjcmlwdENvbXBvbmVudABNaWNyb3NvZnQuU3FsU2VydmVyLlBpcGVs
aW5lSG9zdABQaXBlbGluZUJ1ZmZlcgBDb21wb25lbnQAT2JqZWN0SUQASXNJbnB1dABCdWZmZXIA
Z2V0X1N0YXRpY0lucHV0Q29sdW1ucwBnZXRfU3RhdGljT3V0cHV0Q29sdW1ucwBOZXh0Um93AEVu
ZE9mUm93c2V0AFN0YXRpY0lucHV0Q29sdW1ucwBTdGF0aWNPdXRwdXRDb2x1bW5zAFNjcmlwdENv
bXBvbmVudFBsdXMAUHJvY2Vzc0lucHV0AElucHV0SUQASW5wdXRfUHJvY2Vzc0lucHV0AElucHV0
X1Byb2Nlc3NJbnB1dFJvdwBSb3cAUGFyZW50Q29tcG9uZW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIu
RFRTUnVudGltZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUnVudGltZS5XcmFwcGVyAElE
VFNDb25uZWN0aW9uTWFuYWdlcjEwMABnZXRfT3JhY2xlAE9yYWNsZQBPcmFjbGVUeXBlUHJvcGVy
dHkAUHJlRXhlY3V0ZQBQb3N0RXhlY3V0ZQBBY3F1aXJlQ29ubmVjdGlvbnMAVHJhbnNhY3Rpb24A
UmVsZWFzZUNvbm5lY3Rpb25zAEdldFByb3BlcnRpZXMAVmFsaWRhdGUAZXJyTWVzc2FnZQBSZWlu
aXRpYWxpemVNZXRhRGF0YQBHZXRUYWJsZXMAZ2V0X0Nvbm5lY3Rpb24Ac2V0X0Nvbm5lY3Rpb24A
dmFsdWUAZ2V0X0JhdGNoU2l6ZQBzZXRfQmF0Y2hTaXplAGdldF9UaW1lb3V0AHNldF9UaW1lb3V0
AGdldF9Jc1RhYmxlVmFyaWFibGUAc2V0X0lzVGFibGVWYXJpYWJsZQBnZXRfVGFibGUAc2V0X1Rh
YmxlAGdldF9UYWJsZVZhcmlhYmxlAHNldF9UYWJsZVZhcmlhYmxlAGdldF9BZG9OZXRDb25uZWN0
aW9uVHlwZQBEYXRhVHlwZQBEYXRhUmVjb3JkVHlwZVRvQnVmZmVyVHlwZV8AdHlwZQBHZXRWYXJp
YWJsZV8AdmFyTmFtZQBTeXN0ZW0uSU8AU3RyZWFtAEJsb2JDb2x1bW4AR2V0T3JhY2xlQmxvYl8A
YmxvYgBGaXJlRXJyb3JfAG1lc3NhZ2UAbV9jb25uZWN0aW9uAG1fYmF0Y2hTaXplAG1fdGltZW91
dABtX2lzVGFibGVWYXJpYWJsZQBtX3RhYmxlAFN5c3RlbS5EYXRhAFN5c3RlbS5EYXRhLkNvbW1v
bgBEYkNvbW1hbmQAbV9jb21tYW5kAG1faW5wdXRJbmRleGVzAG1fY3VycmVudFJvdwBTeXN0ZW0u
UmVmbGVjdGlvbgBDb25zdHJ1Y3RvckluZm8AbV9jbG9iQ0kAbV9ibG9iQ0kAQ29ubmVjdGlvbgBC
YXRjaFNpemUAVGltZW91dABJc1RhYmxlVmFyaWFibGUAVGFibGUAVGFibGVWYXJpYWJsZQBBZG9O
ZXRDb25uZWN0aW9uVHlwZQBTeXN0ZW0uUmVzb3VyY2VzAFJlc291cmNlTWFuYWdlcgBfcmVzTWdy
AFN5c3RlbS5HbG9iYWxpemF0aW9uAEN1bHR1cmVJbmZvAF9yZXNDdWx0dXJlAGdldF9SZXNvdXJj
ZU1hbmFnZXIAZ2V0X0N1bHR1cmUAc2V0X0N1bHR1cmUAVmFsdWUAQ3VsdHVyZQBTeXN0ZW0uQ29u
ZmlndXJhdGlvbgBBcHBsaWNhdGlvblNldHRpbmdzQmFzZQBtX1ZhbHVlAG1fU3luY09iamVjdABn
ZXRfVmFsdWUAU3lzdGVtLkNvbXBvbmVudE1vZGVsAEVkaXRvckJyb3dzYWJsZUF0dHJpYnV0ZQBF
ZGl0b3JCcm93c2FibGVTdGF0ZQBTeXN0ZW0uQ29kZURvbS5Db21waWxlcgBHZW5lcmF0ZWRDb2Rl
QXR0cmlidXRlAFN5c3RlbS5EaWFnbm9zdGljcwBEZWJ1Z2dlckhpZGRlbkF0dHJpYnV0ZQBNaWNy
b3NvZnQuVmlzdWFsQmFzaWMuQ29tcGlsZXJTZXJ2aWNlcwBTdGFuZGFyZE1vZHVsZUF0dHJpYnV0
ZQBIaWRlTW9kdWxlTmFtZUF0dHJpYnV0ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVzaWduAEhl
bHBLZXl3b3JkQXR0cmlidXRlAFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMAUnVudGlt
ZUhlbHBlcnMAR2V0T2JqZWN0VmFsdWUAUnVudGltZVR5cGVIYW5kbGUAR2V0VHlwZUZyb21IYW5k
bGUAQWN0aXZhdG9yAENyZWF0ZUluc3RhbmNlAE15R3JvdXBDb2xsZWN0aW9uQXR0cmlidXRlAHNl
dF9WYWx1ZQBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMAQ29tVmlzaWJsZUF0dHJpYnV0
ZQBTdHJpbmcAU2NyaXB0QnVmZmVyAENMU0NvbXBsaWFudEF0dHJpYnV0ZQBNaWNyb3NvZnQuU3Fs
U2VydmVyLkRUU1BpcGVsaW5lV3JhcABNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZS5X
cmFwcGVyAElEVFNDb21wb25lbnRNZXRhRGF0YTEwMABnZXRfQ29tcG9uZW50TWV0YURhdGEASURU
U0lucHV0Q29sbGVjdGlvbjEwMABnZXRfSW5wdXRDb2xsZWN0aW9uAElEVFNJbnB1dDEwMABnZXRf
SXRlbQBnZXRfSUQASURUU1J1bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbjEwMABnZXRfUnVudGlt
ZUNvbm5lY3Rpb25Db2xsZWN0aW9uAElEVFNSdW50aW1lQ29ubmVjdGlvbjEwMABnZXRfQ29ubmVj
dGlvbk1hbmFnZXIARGJQYXJhbWV0ZXIARXhjZXB0aW9uAERiVHlwZQBEYlBhcmFtZXRlckNvbGxl
Y3Rpb24AZ2V0X1BhcmFtZXRlcnMAZ2V0X0J1ZmZlcgBJc051bGwAZ2V0X0RiVHlwZQBFeGVjdXRl
Tm9uUXVlcnkAUHJvamVjdERhdGEAU2V0UHJvamVjdEVycm9yAGdldF9NZXNzYWdlAENsZWFyUHJv
amVjdEVycm9yAElEVFNFeHRlcm5hbE1ldGFkYXRhQ29sdW1uMTAwAEludDMyAElEVFNJbnB1dENv
bHVtbkNvbGxlY3Rpb24xMDAAZ2V0X0lucHV0Q29sdW1uQ29sbGVjdGlvbgBnZXRfQ291bnQAUGlw
ZWxpbmVDb21wb25lbnQAZ2V0X0hvc3RDb21wb25lbnQASURUU0J1ZmZlck1hbmFnZXIxMDAAZ2V0
X0J1ZmZlck1hbmFnZXIASURUU0lucHV0Q29sdW1uMTAwAGdldF9MaW5lYWdlSUQARmluZENvbHVt
bkJ5TGluZWFnZUlEAEJvb2xlYW4AQmluZGluZ0ZsYWdzAEJpbmRlcgBJbnZva2VNZW1iZXIAc2V0
X0NvbW1hbmRUaW1lb3V0AENvbW1hbmRUeXBlAHNldF9Db21tYW5kVHlwZQBFbXB0eQBJRFRTRXh0
ZXJuYWxNZXRhZGF0YUNvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0X0V4dGVybmFsTWV0YWRhdGFDb2x1
bW5Db2xsZWN0aW9uAGdldF9FeHRlcm5hbE1ldGFkYXRhQ29sdW1uSUQAR2V0T2JqZWN0QnlJRABJ
c051bGxPckVtcHR5AENvbmNhdABnZXRfTmFtZQBGb3JtYXQAQ3JlYXRlUGFyYW1ldGVyAHNldF9Q
YXJhbWV0ZXJOYW1lAFByb3BlcnR5SW5mbwBHZXRQcm9wZXJ0eQBnZXRfUHJvcGVydHlUeXBlAElE
VFNDdXN0b21Qcm9wZXJ0eUNvbGxlY3Rpb24xMDAAZ2V0X0N1c3RvbVByb3BlcnR5Q29sbGVjdGlv
bgBJRFRTQ3VzdG9tUHJvcGVydHkxMDAARW51bQBQYXJzZQBQYXJhbWV0ZXJEaXJlY3Rpb24Ac2V0
X0RpcmVjdGlvbgBBZGQAQ29udmVyc2lvbnMAc2V0X0NvbW1hbmRUZXh0AERiQ29ubmVjdGlvbgBB
c3NlbWJseQBnZXRfQXNzZW1ibHkAZ2V0X0Z1bGxOYW1lAEdldENvbnN0cnVjdG9yAEFjcXVpcmVD
b25uZWN0aW9uAENyZWF0ZUNvbW1hbmQARGlzcG9zZQBTeXN0ZW0uQ29sbGVjdGlvbnMAQXJyYXlM
aXN0AEludGVyYWN0aW9uAElJZgBBcnJheQBUb0FycmF5AGdldF9Jc0F0dGFjaGVkAHNldF9Db25u
ZWN0aW9uTWFuYWdlcklEAERhdGFUYWJsZQBEYXRhUm93AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuTWFu
YWdlZERUUwBNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5SdW50aW1lAGdldF9EZXNpZ25Db25uZWN0
aW9ucwBDb25uZWN0aW9uTWFuYWdlcgBEYkRhdGFSZWFkZXIAQ29tbWFuZEJlaGF2aW9yAEV4ZWN1
dGVSZWFkZXIAR2V0U2NoZW1hVGFibGUASURpc3Bvc2FibGUAc2V0X0lzVXNlZABSZW1vdmVBbGwA
RGF0YVJvd0NvbGxlY3Rpb24AZ2V0X1Jvd3MATmV3QXQAc2V0X05hbWUAVG9Cb29sZWFuAFRvSW50
ZWdlcgBzZXRfRGF0YVR5cGUAc2V0X0xlbmd0aABzZXRfUHJlY2lzaW9uAHNldF9TY2FsZQBzZXRf
Q29kZVBhZ2UATmV3AElFbnVtZXJhdG9yAEdldFNjaGVtYQBHZXRFbnVtZXJhdG9yAGdldF9DdXJy
ZW50AFRvVXBwZXIAT3BlcmF0b3JzAENvbXBhcmVTdHJpbmcATW92ZU5leHQASURUU1ZhcmlhYmxl
czEwMABJRFRTVmFyaWFibGVEaXNwZW5zZXIxMDAAZ2V0X1ZhcmlhYmxlRGlzcGVuc2VyAExvY2tP
bmVGb3JSZWFkAElEVFNWYXJpYWJsZTEwMABVbmxvY2sAQnVmZmVyQ29sdW1uAGdldF9Db2x1bW5J
bmZvAEludm9rZQBnZXRfTGVuZ3RoAEdldEJsb2JEYXRhAFdyaXRlAEZsdXNoAEZpcmVFcnJvcgBT
U0lTU2NyaXB0Q29tcG9uZW50RW50cnlQb2ludEF0dHJpYnV0ZQBDb3p5Um9jLlNxbFNlcnZlci5T
U0lTLkF0dHJpYnV0ZXMAVmFsaWRhdGVQcm9wZXJ0aWVzQXR0cmlidXRlAEZpbHRlclByb3BlcnRp
ZXNBdHRyaWJ1dGUAU29ydFByb3BlcnRpZXNBdHRyaWJ1dGUAQ29sdW1uTWFwcGluZ3NBdHRyaWJ1
dGUAQ29ubmVjdGlvbkF0dHJpYnV0ZQBDYXRlZ29yeUF0dHJpYnV0ZQBEZXNjcmlwdGlvbkF0dHJp
YnV0ZQBMaXN0QXR0cmlidXRlAERlZmF1bHRWYWx1ZUF0dHJpYnV0ZQBSZWZyZXNoUHJvcGVydGll
c0F0dHJpYnV0ZQBSZWZyZXNoUHJvcGVydGllcwBWYXJpYWJsZUF0dHJpYnV0ZQBTeXN0ZW0uVGhy
ZWFkaW5nAE1vbml0b3IARW50ZXIARXhpdABEZWJ1Z2dlck5vblVzZXJDb2RlQXR0cmlidXRlAFNj
cmlwdENvbXBvbmVudF9lOGM2ZjJjYmNjZjY0NWFlODYyYjZkYmY0ZWE4YTNkOS52YnByb2ouUmVz
b3VyY2VzLnJlc291cmNlcwBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRlAFJ1bnRpbWVD
b21wYXRpYmlsaXR5QXR0cmlidXRlAEFzc2VtYmx5RmlsZVZlcnNpb25BdHRyaWJ1dGUAR3VpZEF0
dHJpYnV0ZQBBc3NlbWJseVRyYWRlbWFya0F0dHJpYnV0ZQBBc3NlbWJseUNvcHlyaWdodEF0dHJp
YnV0ZQBBc3NlbWJseVByb2R1Y3RBdHRyaWJ1dGUAQXNzZW1ibHlDb21wYW55QXR0cmlidXRlAEFz
c2VtYmx5RGVzY3JpcHRpb25BdHRyaWJ1dGUAQXNzZW1ibHlUaXRsZUF0dHJpYnV0ZQBTY3JpcHRD
b21wb25lbnRfZThjNmYyY2JjY2Y2NDVhZTg2MmI2ZGJmNGVhOGEzZDkudmJwcm9qLmRsbAAAAAAL
SQBuAHAAdQB0AAANTwByAGEAYwBsAGUAABVCAGkAbgBkAEIAeQBOAGEAbQBlAAAdQQByAHIAYQB5
AEIAaQBuAGQAQwBvAHUAbgB0AAAFLAAgAAALIgB7ADAAfQAiAAAJOgB7ADAAfQAAGU8AcgBhAGMA
bABlAEQAYgBUAHkAcABlAAAVTwByAGEAYwBsAGUAVAB5AHAAZQAAgIFEAGUAcwB0AGkAbgBhAHQA
aQBvAG4AIAB0AGEAYgBsAGUAIABuAG8AdAAgAHMAcABlAGMAaQBmAGkAZQBkAC4AIABDAGgAZQBj
AGsAIABwAGEAYwBrAGEAZwBlACAAcAByAG8AdABlAGMAdABpAG8AbgAgAGwAZQB2AGUAbAAuAABN
SQBOAFMARQBSAFQAIABJAE4AVABPACAAewAwAH0AIAAoACAAewAxAH0AIAApACAAVgBBAEwAVQBF
AFMAIAAoACAAewAyAH0AIAApAABJTwByAGEAYwBsAGUALgBEAGEAdABhAEEAYwBjAGUAcwBzAC4A
VAB5AHAAZQBzAC4ATwByAGEAYwBsAGUAQwBsAG8AYgAsACAAAElPAHIAYQBjAGwAZQAuAEQAYQB0
AGEAQQBjAGMAZQBzAHMALgBUAHkAcABlAHMALgBPAHIAYQBjAGwAZQBCAGwAbwBiACwAIAAAFUMA
bwBuAG4AZQBjAHQAaQBvAG4AAB9JAHMAVABhAGIAbABlAFYAYQByAGkAYQBiAGwAZQAAG1QAYQBi
AGwAZQBWAGEAcgBpAGEAYgBsAGUAAAtUAGEAYgBsAGUAABNCAGEAdABjAGgAUwBpAHoAZQAAD1QA
aQBtAGUAbwB1AHQAACVTAGUAbABlAGMAdAAgAGMAbwBuAG4AZQBjAHQAaQBvAG4ALgAAM1MAZQBs
AGUAYwB0ACAAZABlAHMAdABpAG4AYQB0AGkAbwBuACAAdABhAGIAbABlAC4AACVNAGEAcAAgAGkA
bgBwAHUAdAAgAGMAbwBsAHUAbQBuAHMALgAAFU4AbwAgAGkAbgBwAHUAdABzAC4AADFDAG8AbgBu
AGUAYwB0AGkAbwBuACAAbgBvAHQAIABzAGUAbABlAGMAdABlAGQALgAAP0QAZQBzAHQAaQBuAGEA
dABpAG8AbgAgAHQAYQBiAGwAZQAgAG4AbwB0ACAAcwBlAGwAZQBjAHQAZQBkAC4AABVDAG8AbAB1
AG0AbgBOAGEAbQBlAAARRABhAHQAYQBUAHkAcABlAAANSQBzAEwAbwBuAGcAABVDAG8AbAB1AG0A
bgBTAGkAegBlAAAhTgB1AG0AZQByAGkAYwBQAHIAZQBjAGkAcwBpAG8AbgAAGU4AdQBtAGUAcgBp
AGMAUwBjAGEAbABlAAAZUAByAG8AdgBpAGQAZQByAFQAeQBwAGUAAA1UAGEAYgBsAGUAcwAACVUA
UwBFAFIAABciAHsAMAB9ACIALgAiAHsAMQB9ACIAAA9BAEQATwAuAE4ARQBUAAA1RABhAHQAYQBS
AGUAYwBvAHIAZABUAHkAcABlAFQAbwBCAHUAZgBmAGUAcgBUAHkAcABlAAAlTwByAGEAYwBsAGUA
IABEAGUAcwB0AGkAbgBhAHQAaQBvAG4AADFNAHkALgBSAGUAcwBvAHUAcgBjAGUAcwAuAE0AeQBS
AGUAcwBvAHUAcgBjAGUAcwAAAADxOru480E1SoI8oep9h0ymAAi3elxWGTTgiQiwP19/EdUKOgMg
AAEDAAABBAAAEgwHBhUSGAESDAQAABIIBwYVEhgBEggEAAASEQcGFRIYARIRBAAAEhQHBhUSGAES
FAQIABIMBAgAEggECAASEQQIABIUBCABAhwDIAAIBCAAEhUDIAAOAh4ABxABAR4AHgAHMAEBARAe
AAITAAQgABMABwYVEhkBEwAEKAATAAgWz0kLuAw06giJhF3NgIDMkQkgBAESIQgCEiUEIAAdDgMg
AAIEKAAdDgMGEiQDBhIoBiACAQgSJQUgAQESHAMGEiEFIAEBEiEEIAASLQQoABItAgYOFE8AcgBh
AGMAbABlAFQAeQBwAGUABCABARwFIAECEA4EIAEBDgQgAQEIBCABAQIGIAERMRIVBCABHA4GIAES
NRI5AgYIAgYCAwYSPQMGHQgDBhJBAygADgMoAAgDKAACAwYSRQMGEkkEAAASRQQAABJJBQABARJJ
BAgAEkUECAASSQMGEjQCBhwEAAASNAQIABI0BSABARFVCAEAAQAAAAAABSACAQ4OFwEACk15VGVt
cGxhdGUHOC4wLjAuMAAABAEAAAAGFRIYARIMBhUSGAESCAYVEhgBEhEGFRIYARIUBAcBEgwEBwES
CAQHARIRBAcBEhQQAQALTXkuQ29tcHV0ZXIAAAwBAAdNeS5Vc2VyAAATAQAOTXkuQXBwbGljYXRp
b24AABMBAA5NeS5XZWJTZXJ2aWNlcwAABAABHBwDBwECAwcBCAYAARIVEXEEBwESFQMHAQ4FEAEA
HgAECgEeAAQHAR4AByAEAQ4ODg5hAQA0U3lzdGVtLldlYi5TZXJ2aWNlcy5Qcm90b2NvbHMuU29h
cEh0dHBDbGllbnRQcm90b2NvbBJDcmVhdGVfX0luc3RhbmNlX18TRGlzcG9zZV9fSW5zdGFuY2Vf
XwAAAAYVEhgBEwAGFRIZARMABAoBEwAFIAEBEwAGBwITABMABQEAAAAABAcBHQ4FIAASgI0FIAAS
gJEGIAESgJUcBSAAEoCZBiABEoCdHAQHARItBSAAEoCtBiABEoChCAQgABIlBCABAggEIAEcCAUg
ABGAqQMgABwCHRwGAAEBEoClEgcJCB0cCAgSgKEcEoClCBGAqQUgABKAvQUgABKAwQUgABKAxQYg
ARKAyRwFIAIICAgNIAUcDhGA0RKA1RwdHAYgAQERgNkFIAASgN0GIAESgLUIBAABAg4FAAIODg4F
AAIODhwFIAASgKEGIAESgOEOBSAAEoDlBiABEoDpHAYAAhwSFQ4GIAEBEYDxBCABCBwEAAEOHAcA
BA4OHBwcBSAAEoD5BSAAEoD9BQABEhUOByABEkEdEhUeBxASFRIVCA4OEoCVDggIEoC1EoChEhUI
HRwIHRIVBAcBHRwEIAEcHAQgABI9BQcBEoD5BgADHAIcHAcgARKBDRIVAh0OBwcCHQ4SgQUKBwQC
AhKAlRKApQUgABKBGQYgARKBHRwIIAESgSERgSUFIAASgREFIAASgS0GIAESgRUIBAABAhwEAAEI
HAQgAQIOBSABARExBSAAEoDpJQcSCBKAlRKBERI9EoD5CAgSgLUSgRURMQgIEoDpEhUICBExETEG
IAESgREOBSAAEoExBgADCA4OAgYAAw4OHBwVBwgSgPkdDhKBBRKBERKBFQ4OEoExBQcBEoCVBgcC
HQ4dDgYHAhExHRwFIAASgT0IIAIBDhASgTkGIAESgUEcBwcDHBwSgTkFIAARgUUDBhExBSABHB0c
AyAACQYgAh0FCAgHIAMBHQUICBAHBh0FEjUSNRGBRRGBRR0cCiAGAQgODg4IEAINAQAIVmFsaWRh
dGUAABIBAA1HZXRQcm9wZXJ0aWVzAAAFIAEBHQ5JAQAGAAAACkNvbm5lY3Rpb24JQmF0Y2hTaXpl
B1RpbWVvdXQPSXNUYWJsZVZhcmlhYmxlBVRhYmxlDVRhYmxlVmFyaWFibGUAABkBABRBZG9OZXRD
b25uZWN0aW9uVHlwZQAADwEACkNvbm5lY3Rpb24AADcBADJTZWxlY3QgY29ubmVjdGlvbiB0byBP
cmFjbGUgRGF0YSBQcm92aWRlciBmb3IgLk5FVAAADgEACUdldFRhYmxlcwAAEAEAC0Rlc3RpbmF0
aW9uAAAnAQAiRGVzdGluYXRpb24gdGFibGUgdG8gbG9hZCBpbiBidWxrLgAABiABARGBdUUBAEBJ
bmRpY2F0ZXMgd2hldGhlciB0aGUgZGVzdGluYXRpb24gdGFibGUgaXMgc3RvcmVkIGluIGEgdmFy
aWFibGUuAAAIAQAQJwAAAABIAQBDU3BlY2lmaWVzIHRoZSBudW1iZXIgb2Ygcm93cyB0byBiZSBz
ZW50IGFzIGEgYmF0Y2ggdG8gdGhlIGRhdGFiYXNlLgAAQAEAO1NwZWNpZmllcyB0aGUgdmFyaWFi
bGUgdGhhdCBjb250YWlucyB0aGUgZGVzdGluYXRpb24gdGFibGUuAAAIAQAeAAAAAABqAQBlU3Bl
Y2lmaWVzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBhbGxvd2VkIGZvciB0aGUgYnVsayBjb3B5IG9w
ZXJhdGlvbiB0byBjb21wbGV0ZSBiZWZvcmUgaXQgaXMgYWJvcnRlZC4AAAcgAgEOEoD9BgcCEkUS
RQQHARJJCAEAAgAAAAAABAABARwEBwESNAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5vbkV4Y2VwdGlv
blRocm93cwEMAQAHMS4wLjAuMAAAKQEAJGViMGY3N2JmLWY3MDQtNGVhYi05ZjQ3LWZhMDBlZWI3
MjU4MwAABQEAAQAAHwEAGkNvcHlyaWdodCBAIE1pY3Jvc29mdCAyMDEzAAA8AQA3U2NyaXB0Q29t
cG9uZW50X2U4YzZmMmNiY2NmNjQ1YWU4NjJiNmRiZjRlYThhM2Q5LnZicHJvagAADgEACU1pY3Jv
c29mdAAAAAAcaAAAAAAAAAAAAAA+aAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGgAAAAAAAAA
AAAAAAAAAAAAAAAAAF9Db3JEbGxNYWluAG1zY29yZWUuZGxsAAAAAAD/JQAgQAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAAAKAAAgA4AAABIAACAEAAAAGAA
AIAAAAAAAAAAAAAAAAAAAAIAAgAAAHgAAIADAAAAkAAAgAAAAAAAAAAAAAAAAAAAAQAAfwAAqAAA
gAAAAAAAAAAAAAAAAAAAAQABAAAAwAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAA2AAAAAAAAAAAAAAA
AAAAAAAAAQAAAAAA6AAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAQAA
AAAACAEAAICFAADoAgAAAAAAAAAAAABoiAAAKAEAAAAAAAAAAAAAkIkAACIAAAAAAAAAAAAAABiB
AABoBAAAAAAAAAAAAABoBDQAAABWAFMAXwBWAEUAUgBTAEkATwBOAF8ASQBOAEYATwAAAAAAvQTv
/gAAAQAAAAEAAAAAAAAAAQAAAAAAPwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAEQAAAABAFYA
YQByAEYAaQBsAGUASQBuAGYAbwAAAAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkAbwBuAAAAAAAA
ALAEyAMAAAEAUwB0AHIAaQBuAGcARgBpAGwAZQBJAG4AZgBvAAAApAMAAAEAMAAwADAAMAAwADQA
YgAwAAAANAAKAAEAQwBvAG0AcABhAG4AeQBOAGEAbQBlAAAAAABNAGkAYwByAG8AcwBvAGYAdAAA
AJgAOAABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAABTAGMAcgBpAHAAdABDAG8A
bQBwAG8AbgBlAG4AdABfAGUAOABjADYAZgAyAGMAYgBjAGMAZgA2ADQANQBhAGUAOAA2ADIAYgA2
AGQAYgBmADQAZQBhADgAYQAzAGQAOQAuAHYAYgBwAHIAbwBqAAAAMAAIAAEARgBpAGwAZQBWAGUA
cgBzAGkAbwBuAAAAAAAxAC4AMAAuADAALgAwAAAAmAA8AAEASQBuAHQAZQByAG4AYQBsAE4AYQBt
AGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfAGUAOABjADYAZgAyAGMAYgBjAGMA
ZgA2ADQANQBhAGUAOAA2ADIAYgA2AGQAYgBmADQAZQBhADgAYQAzAGQAOQAuAHYAYgBwAHIAbwBq
AC4AZABsAGwAAABcABsAAQBMAGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAABDAG8AcAB5AHIA
aQBnAGgAdAAgAEAAIABNAGkAYwByAG8AcwBvAGYAdAAgADIAMAAxADMAAAAAAKAAPAABAE8AcgBp
AGcAaQBuAGEAbABGAGkAbABlAG4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4A
dABfAGUAOABjADYAZgAyAGMAYgBjAGMAZgA2ADQANQBhAGUAOAA2ADIAYgA2AGQAYgBmADQAZQBh
ADgAYQAzAGQAOQAuAHYAYgBwAHIAbwBqAC4AZABsAGwAAACQADgAAQBQAHIAbwBkAHUAYwB0AE4A
YQBtAGUAAAAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AZQA4AGMANgBmADIAYwBi
AGMAYwBmADYANAA1AGEAZQA4ADYAMgBiADYAZABiAGYANABlAGEAOABhADMAZAA5AC4AdgBiAHAA
cgBvAGoAAAA0AAgAAQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4AAAAxAC4AMAAuADAALgAw
AAAAOAAIAAEAQQBzAHMAZQBtAGIAbAB5ACAAVgBlAHIAcwBpAG8AbgAAADEALgAwAC4AMAAuADAA
AAAoAAAAIAAAAEAAAAABAAQAAAAAAIACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICA
AIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
d3d3d3d3d3d3d3d3d3dwBEREREREREREREREREREcAT/////////////////9HAE////////////
//////RwBP/////////////////0cAT/////////////////9HAE//////////////////RwBP//
///////////////0cAT/////////////////9HAE//////////////////RwBP//////////////
///0cAT/////////////////9HAE//////////////////RwBP/////////////////0cAT/////
////////////9HAE//////////////////RwBP/////////////////0cAT/////////////////
9HAE//////////////////RwBP/////////////////0cASIiIiIiIiIiIiIiIiIhHAERERERERE
RERERERERERwBExMTExMTExMTE7Ozkl0cATMzMzMzMzMzMzMzMzMxAAAREREREREREREREREREAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////
/////////8AAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA
AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAA8AAAAf/////////
//////8oAAAAEAAAACAAAAABAAQAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAA
AICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAA
AAAAB3d3d3d3d3dERERERERER0////////hHT///////+EdP///////4R0////////hHT///////
+EdP///////4R0////////hHT///////+EdIiIiIiIiIR0zMzMzMzMxHxERERERERMAAAAAAAAAA
AAAAAAAAAAAA//8AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAABAAD//wAA//8AAAAAAQACACAgEAABAAQA6AIAAAIAEBAQAAEABAAoAQAAAwAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAYAAADAAAAFA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAA==]]></arrayElement></arrayElements></property>
<property id="411" name="UserComponentTypeName" dataType="System.String" state="default" isArray="false" description="" typeConverter="" UITypeEditor="" containsID="false" expressionType="None">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2008, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property>
<property id="2622" name="VSTAProjectName" dataType="System.String" state="default" isArray="false" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None">ScriptComponent_e8c6f2cbccf645ae862b6dbf4ea8a3d9</property>
<property id="2623" name="ScriptLanguage" dataType="System.String" state="default" isArray="false" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" UITypeEditor="" containsID="false" expressionType="None">VisualBasic</property></properties>
<connections>
<connection id="412" name="Oracle" description="" connectionManagerID="{51D3CE30-34AE-4F61-BE16-47E7B6378383}" /></connections>
<inputs>
<input id="629" name="Input" description="" hasSideEffects="true" dangling="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="True">
<externalMetadataColumn id="2627" name="COL1" description="" precision="38" scale="0" length="0" dataType="numeric" codePage="0" mappedColumnId="0"><properties>
<property id="2628" name="OracleType" dataType="System.Int32" state="default" isArray="false" description="" typeConverter="" UITypeEditor="" containsID="false" expressionType="None">107</property></properties></externalMetadataColumn>
<externalMetadataColumn id="2629" name="COL2" description="" precision="0" scale="0" length="0" dataType="dbTimeStamp" codePage="0" mappedColumnId="0"><properties>
<property id="2630" name="OracleType" dataType="System.Int32" state="default" isArray="false" description="" typeConverter="" UITypeEditor="" containsID="false" expressionType="None">123</property></properties></externalMetadataColumn>
<externalMetadataColumn id="2631" name="COL3" description="" precision="38" scale="127" length="0" dataType="numeric" codePage="0" mappedColumnId="0"><properties>
<property id="2632" name="OracleType" dataType="System.Int32" state="default" isArray="false" description="" typeConverter="" UITypeEditor="" containsID="false" expressionType="None">107</property></properties></externalMetadataColumn>
<externalMetadataColumn id="2633" name="COL4" description="" precision="0" scale="0" length="250" dataType="wstr" codePage="0" mappedColumnId="0"><properties>
<property id="2634" name="OracleType" dataType="System.Int32" state="default" isArray="false" description="" typeConverter="" UITypeEditor="" containsID="false" expressionType="None">119</property></properties></externalMetadataColumn>
<externalMetadataColumn id="2635" name="COL5" description="" precision="0" scale="0" length="250" dataType="wstr" codePage="0" mappedColumnId="0"><properties>
<property id="2636" name="OracleType" dataType="System.Int32" state="default" isArray="false" description="" typeConverter="" UITypeEditor="" containsID="false" expressionType="None">119</property></properties></externalMetadataColumn></externalMetadataColumns></input>
</inputs>
</component>