<component id="37" name="Script Component Plus" 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="106" 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[\scriptcomponent_baade89db1884097a2b330e1ed1d714a.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_baade89db1884097a2b330e1ed1d714a.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_baade89db1884097a2b330e1ed1d714a.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{076FCF2A-9BC3-402A-BA69-D131EAE0C35D}</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">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\..\..\..\..\..\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies\CozyRoc.SSISPlus.2008.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
  </ItemGroup>
  <!-- Visual Basic supports Importing namespaces (equivalent to using statements in C#).-->
  <ItemGroup>
    <Import Include="Microsoft.VisualBasic" />
    <Import Include="System" />
    <Import Include="System.Collections" />
    <Import Include="System.Data" />
    <Import Include="System.Diagnostics" />
    <Import Include="System.Windows.Forms" />
  </ItemGroup>
  <!-- This section defines the user source files that are part of the
       project.

       Compile - Specifies a source file to compile.
       EmbeddedResource - Specifies a .resx file for embedded resources.
       None - Specifies a file that is not to be passed to the compiler (for instance,
              a text file or XML file).
       AppDesigner - Specifies the directory where the application properties files can
                     be found.
  -->
  <ItemGroup>
    <AppDesigner Include="My Project\" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
    <Compile Include="main.vb" />
    <Compile Include="My Project\AssemblyInfo.vb">
      <SubType>Code</SubType>
    </Compile>
    <EmbeddedResource Include="My Project\Resources.resx">
      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.vb</LastGenOutput>
      <CustomToolNamespace>My.Resources</CustomToolNamespace>
    </EmbeddedResource>
    <Compile Include="My Project\Resources.Designer.vb">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resources.resx</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <None Include="My Project\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.vb</LastGenOutput>
    </None>
    <Compile Include="My Project\Settings.Designer.vb">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <!-- Include the default configuration information and metadata files for the add-in.
         These files are copied to the build output directory when the project is
         built, and the path to the configuration file is passed to add-in on the command
         line when debugging.
    -->
  </ItemGroup>
  <!-- Include the build rules for a VB project.-->
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <!-- This section defines VSTA properties that describe the host-changable project properties. -->
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{A860303F-1F3F-4691-B57E-529FC101A107}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{C1B21C64-9E6F-4923-A89D-9F958503C1CE}" ApplicationType="usd" Language="vb" TemplatesPath="" />
        <Host Name="SSIS_ScriptComponent" />
        <ProjectClient>
          <HostIdentifier>SSIS_ScriptComponent</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\settings.settings]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version='1.0' encoding='iso-8859-1'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)" GeneratedClassNamespace="" GeneratedClassName="MySettings">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\bufferwrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class InputBuffer
    Inherits ScriptBufferPlus

    Dim OutputOutputID As Integer
    Dim ErrorOutputOutputID As Integer

    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)

        OutputOutputID = Component.ComponentMetaData.OutputCollection("Output").ID
        ErrorOutputOutputID = Component.ComponentMetaData.OutputCollection("Error Output").ID
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Sub DirectRowToOutput()
        MyBase.DirectRow(OutputOutputID)
    End Sub

    Public WriteOnly Property [ErrorDescription]() As String
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [ErrorDescription_IsNull] As Boolean
        Set
            If (value)
                SetNull(0)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public Sub DirectRowToErrorOutput()
        MyBase.DirectRow(ErrorOutputOutputID)
    End Sub

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {"ErrorDescription"}
        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\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_baade89db1884097a2b330e1ed1d714a.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_baade89db1884097a2b330e1ed1d714a.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2010")> 
<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("9cb81370-d050-43af-86c5-e63e75433480")> 

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

<Assembly: AssemblyVersion("1.0.0.0")> 
<Assembly: AssemblyFileVersion("1.0.0.0")> 
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\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 AdoNet() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("AdoNet").ConnectionManager
        End Get
    End Property

End Class

Public Class Variables

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\resources.resx]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\main.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' CozyRoc SQL Server Integration Services user script component
'
' Copyright (c) 2006-2009 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.Data
Imports System.Data.Common
Imports System.Text.RegularExpressions
Imports System.Collections

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


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<SortProperties(New String() {"Connection", "Statement", "Timeout", "ParseExpression", "InputColumns"})> _
<ValidateProperties("Validate")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    Private Const ColumnSeparator As String = "," + vbLf


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        ' Setup parameters value.
        Dim paramsCount As Integer = m_inputIndexes.Length
        For paramIndex As Integer = 0 To paramsCount - 1
            Dim colValue As Object = DBNull.Value

            Dim inputIndex As Integer = m_inputIndexes(paramIndex)
            If Not Row.Buffer.IsNull(inputIndex) Then
                colValue = Row.Buffer(inputIndex)
            End If

            m_command.Parameters(paramIndex).Value = colValue
        Next

        Select Case Me.ErrorRowDisposition
            Case DTSRowDisposition.RD_IgnoreFailure
                Try
                    Call m_command.ExecuteNonQuery()
                Catch ex As Exception
                End Try

                Call Row.DirectRowToOutput()

            Case DTSRowDisposition.RD_RedirectRow
                Try
                    Call m_command.ExecuteNonQuery()
                    Call Row.DirectRowToOutput()
                Catch ex As Exception
                    Row.ErrorDescription = ex.Message
                    Call Row.DirectRowToErrorOutput()
                End Try

            Case DTSRowDisposition.RD_FailComponent, DTSRowDisposition.RD_NotUsed
                Call m_command.ExecuteNonQuery()
                Call Row.DirectRowToOutput()
        End Select
    End Sub ' Input_ProcessInputRow


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

        ' Initialize ADO.NET command.
        Dim connection As DbConnection = CType( _
            MyBase.Connections.AdoNet.AcquireConnection(Nothing), _
            DbConnection)
        m_command = connection.CreateCommand()
        m_command.CommandText = Me.Statement
        m_command.CommandTimeout = Me.Timeout

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

        ' Get parameters.
        Dim params() As String = GetParameters_()

        ' Setup parameters.
        Dim paramsCount As Integer = params.Length
        For paramIndex As Integer = 0 To paramsCount - 1
            Dim parameter As DbParameter = m_command.CreateParameter()
            parameter.ParameterName = params(paramIndex)
            Call SetupParameter_(input.InputColumnCollection(paramIndex), parameter)
            Call m_command.Parameters.Add(parameter)
        Next

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


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

        If Not m_command Is Nothing Then
            Call m_command.Dispose()
            m_command = Nothing
        End If
    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 ADO.NET connection.")
            End If

            If String.IsNullOrEmpty(Me.Statement) Then
                Throw New ApplicationException("Specify SQL statement.")
            End If

            If String.IsNullOrEmpty(Me.ParseExpression) Then
                Throw New ApplicationException("Specify regular expression for parameters parse.")
            End If

            Dim params() As String = GetParameters_()

            Dim selectedCols() As String = {}
            If Not String.IsNullOrEmpty(Me.InputColumns) Then
                selectedCols = Me.InputColumns.Split( _
                    New String() {ColumnSeparator}, _
                    StringSplitOptions.None)
            End If

            If params.Length > selectedCols.Length Then
                ' Selected input columns are not enough.
                Throw New ApplicationException("Select input columns for these parameters: " & String.Join(", ", params))
            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("AdoNet").ConnectionManagerID = Me.Connection

            ' Setup input columns based on selection.
            Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
            Dim virtInput As IDTSVirtualInput100 = input.GetVirtualInput()
            Call input.InputColumnCollection.RemoveAll()

            For Each col As String In selectedCols
                If Not String.IsNullOrEmpty(col) Then
                    Dim virtColumn As IDTSVirtualInputColumn100 = virtInput.VirtualInputColumnCollection(col)
                    Call virtInput.SetUsageType(virtColumn.LineageID, DTSUsageType.UT_READONLY)
                End If
            Next

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

        Validate = result
    End Function    'Validate


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select ADO.NET Connection Manager.")> _
    <Category("Command")> _
    <Connection("AdoNetConnectionType", True)> _
    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("Specify SQL statement to execute.")> _
    <Category("Command")> _
    <TextDialog("Specify SQL statement", "", "SQL")> _
    Public Property Statement() As String
        Get
            Statement = m_statement
        End Get
        Set(ByVal value As String)
            m_statement = value
        End Set
    End Property    ' Statement


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specify number of seconds before a command times out. Set 0 for infinite time-out.")> _
    <Category("Command")> _
    <DefaultValue(0)> _
    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("Specify how to handle error rows.")> _
    <Category("Error")> _
    <DefaultValue(DTSRowDisposition.RD_FailComponent)> _
    Public Property ErrorRowDisposition() As DTSRowDisposition
        Get
            ErrorRowDisposition = m_errorRowDisposition
        End Get
        Set(ByVal value As DTSRowDisposition)
            m_errorRowDisposition = value
        End Set
    End Property    ' ErrorRowDisposition


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specify regular expression to parse statement parameters.")> _
    <Category("Parameters")> _
    <RegularExpressionDialog()> _
    <DefaultValue("@(\w+)")> _
    Public Property ParseExpression() As String
        Get
            ParseExpression = m_parseExpression
        End Get
        Set(ByVal value As String)
            m_parseExpression = value
        End Set
    End Property    ' ParseExpression


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select input columns for command parameters.")> _
    <Category("Parameters")> _
    <InputVirtualColumn("", False)> _
    Public Property InputColumns() As String
        Get
            InputColumns = m_inputColumns
        End Get
        Set(ByVal value As String)
            m_inputColumns = value
        End Set
    End Property    ' InputColumns
#End Region ' Properties


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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Parse specified statement with specified regular expression to retrieve parameters.
    Private Function GetParameters_() As String()
        Dim result As New ArrayList

        Dim mc As MatchCollection = Regex.Matches( _
            Me.Statement, _
            Me.ParseExpression, _
            RegexOptions.IgnoreCase Or RegexOptions.Multiline)

        Dim foundDuplicates As Boolean = False
        Dim paramsCount As Integer = mc.Count
        For paramIndex As Integer = 0 To paramsCount - 1
            Dim parameter As String = mc(paramIndex).Groups(1).Value

            If result.Contains(parameter) Then
                ' Found duplicate parameter. Stop processing.
                foundDuplicates = True
                Call result.Clear()
                Exit For
            End If

            Call result.Add(parameter)
        Next

        If foundDuplicates Then
            ' Setup uniquely named parameters.
            For paramIndex As Integer = 0 To paramsCount - 1
                Call result.Add("Param" & CStr(paramIndex + 1))
            Next
        End If

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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Setup parameter data type.
    Private Sub SetupParameter_( _
        ByVal inputCol As IDTSInputColumn100, _
        ByVal parameter As DbParameter)

        parameter.DbType = GetDbType_(inputCol.DataType)
        parameter.Size = inputCol.Length

        ' Get precision.
        Dim precision As Byte = CByte(inputCol.Precision)
        If inputCol.DataType = DataType.DT_DECIMAL AndAlso precision = 0 Then
            ' Decimal type has precision 29.
            ' http://msdn.microsoft.com/en-us/library/ms141036.aspx
            precision = 29
        End If

        ' Setup precision and scale.
        Dim iDbDataParameter As IDbDataParameter = parameter
        iDbDataParameter.Precision = precision
        iDbDataParameter.Scale = CByte(inputCol.Scale)
    End Sub ' SetupParameter_



    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Return ADO.NET data type from SSIS data type.
    Private Function GetDbType_(ByVal dt As DataType) As DbType
        Select Case dt
            Case DataType.DT_BOOL
                Return DbType.Boolean
            Case DataType.DT_STR, DataType.DT_WSTR
                Return DbType.String
            Case DataType.DT_I1
                Return DbType.SByte
            Case DataType.DT_UI1
                Return DbType.Byte
            Case DataType.DT_I2
                Return DbType.Int16
            Case DataType.DT_UI2
                Return DbType.UInt16
            Case DataType.DT_I4
                Return DbType.Int32
            Case DataType.DT_UI4
                Return DbType.UInt32
            Case DataType.DT_I8
                Return DbType.Int64
            Case DataType.DT_UI8
                Return DbType.UInt64
            Case DataType.DT_R4
                Return DbType.Single
            Case DataType.DT_R8
                Return DbType.Double
            Case DataType.DT_NUMERIC, DataType.DT_DECIMAL
                Return DbType.Decimal
            Case DataType.DT_CY
                Return DbType.Currency
            Case DataType.DT_DBTIMESTAMP
                Return DbType.DateTime
            Case DataType.DT_DBDATE
                Return DbType.Date
            Case DataType.DT_DBTIME
                Return DbType.Time
        End Select

        Throw New ArgumentException("Unhandled type.")
    End Function    ' GetDbType_
#End Region ' Internals


#Region "Attributes"
    Private m_connection As String
    Private m_statement As String
    Private m_timeout As Integer
    Private m_errorRowDisposition As DTSRowDisposition
    Private m_parseExpression As String
    Private m_inputColumns As String

    Private m_command As DbCommand
    Private m_inputIndexes() As Integer
#End Region ' Attributes

End Class   ' ScriptMain

]]></arrayElement></arrayElements></property>
<property id="107" 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_baade89db1884097a2b330e1ed1d714a.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
EzABAAkAAAAXAAARAnsQAAAECgYqAAAAIgIDfRAAAAQqAAAAEzABAAkAAAAYAAARAnsRAAAECgYq
AAAAIgIDfREAAAQqAAAAEzABAAkAAAAZAAARAnsSAAAECgYqAAAAIgIDfRIAAAQqAAAAEzADABMA
AAAaAAARF40kAAABCwcWciwCAHCiBwoGKgATMAQAwAAAABsAABFzWQAAChMEAm8oAAAGAm8uAAAG
GShaAAAKDBYKCG9bAAAKDRYJF9oTCBMGK0AIEQZvXAAACm9dAAAKF29eAAAKb18AAAoTBREEEQVv
YAAACiwLFwoRBG9hAAAKKxYRBBEFb2IAAAomEQYX1hMGEQYRCDG6BiwxFgkX2hMJEwcrIREEcjwC
AHARBxfWKGMAAAooUQAACm9iAAAKJhEHF9YTBxEHEQkx2REE0CQAAAEoFAAACm9kAAAKdAoAABsL
ByoTMAMATgAAABwAABEEAgNvZQAACm81AAAGb2YAAAoEA29nAAAKb2gAAAoDb2kAAAq0CwNvZQAA
Ch8OMwcHFjMDHx0LBAoGB29qAAAKBgNvawAACrRvbAAACioAABMwAgBZAgAAHQAAEQMYWUWGAAAA
DAAAABIAAAAeAAAAIQAAACUAAAAuAAAALgAAAC4AAAAuAAAAAgAAAC4AAAAuAAAAIwAAAC4AAAAH
AAAACgAAAA8AAAAVAAAAGAAAABsAAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4A
AAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAA
AC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAA
LgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAu
AAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4A
AAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAA
AC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAA
LgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAAQAAAAE
AAAAIwAAAC4AAAApAAAAKwAAACcAAAArLBkqHxAqHw4qGCofCiofEiofCyofEyofDCofFCofDyoe
Kh0qGiocKhsqHxEqckgCAHBzbQAACnoAAAAeAigXAAAKKhMwAgAtAAAAHgAAEX4VAAAELSByaAIA
cNAMAAACKBQAAApveQAACnN6AAAKCweAFQAABH4VAAAEKgAAABMwAQAGAAAAHwAAEX4WAAAEKgAA
HgKAFgAABCpCcxcAAAooEQAACoAYAAAEKgAAAB4CKHsAAAoqGzABAD8AAAAgAAARfhcAAAQtMn4Y
AAAEKBEAAAoofAAACn4XAAAELRxzOwAABoAXAAAE3hB+GAAABCgRAAAKKH0AAArcfhcAAAQqAAEM
AAACAB0ADCkAEAAAAAFCU0pCAQABAAAAAAAMAAAAdjIuMC41MDcyNwAAAAAFAGwAAABsDwAAI34A
ANgPAACgFAAAI1N0cmluZ3MAAAAAeCQAAJwCAAAjVVMAFCcAABAAAAAjR1VJRAAAACQnAACEBwAA
I0Jsb2IAAAAAAAAAAgAAAVcdogkJDwAAAPoBMwAWAAABAAAAXgAAAA0AAAAYAAAAPAAAABsAAACI
AAAAAQAAAE4AAAAgAAAABwAAABQAAAAbAAAACgAAAAEAAAAJAAAAAQAAAAIAAAADAAAAAgAAAAAA
ZBQBAAAAAAAKAKkBfwEKAN0BvwEGAO0B5gEKAEUCfwEGAMMC5gEKAEUDGwMOAJcDgAMSAAkE6AMW
ADoE6AMOAF4FgAMaAA8G5wUeABoH8QYeAM4H8QYiAAAI7QciAC8I4QcaADYI5wUiAKcI7QcGAD4J
LQkGAGsJVgkmAMwJtwkmABkKAwomADIKAwomAF8KRwoGAIkKdgoKAMgKoQoKAOAKEwAmABUL+AoG
AEoLKgsGAGgL5gEGAIwL5gEKAKULEwAGAOkLygseAP0L8QYeACwM8QYeAFkM8QYGAHcM5gESAH4M
6AMGAKYM5gEGAMAM5gEeANYM8QYeAAEN8QYeAA4N8QYeAFEN8QYGAIAN5gEGAIoN5gEiAKMN7QcK
ANgNoQoiABIO7QcGAGIO5gEeAIoO8QYWAMUO6AMeAOkO8QYmAEkEAwoeADwP8QYeAFAP8QYGAHgP
5gEGAI0P5gEeAOQP8QYeACkQ8QYmAGIQQxAGAIUQchAmAI8QQxAmAJUQQxAmALQQQxAmALoQQxAm
ANUQQxAmANsQQxAKAPIQoQoGAP4Q5gEiAAwR4QcGAHkR5gESAIsR6AMOANQRshEOAPARshEmAAgS
AwomAB4SAwomADASAwoOAEUSshEOAFkSshEOAHoSshEOAI4SshEGALwSqhIGAOMS0hIGAPYSdgoG
AF8TKgsGAH8TKgsGAJ0TqhIGALoTygsGAMgTqhIGAOMTqhIGAP4TqhIGABcUqhIGADAUqhIGAE0U
qhIAAAAAAQAAAAAAAQABAAAAAAApADcABQABAAEAAAAAAHIANwAJAAEAAgAAARAAfQA3AA0AAQAD
AAUBAACHAAAADQAFAAgABQEAAJUAAAANAAUADwABAAAAsAC8AB0ABgARAAEAAAD0ALwAKQAIABoA
AQAAAAIBvAANAAoAHgABAAAADgG8AA0ACwAgAAEAAAAYAbwAIAAMACEAAAAAACMBLwENABUANgAA
ARAAdAG8AFEAFwA6ADEACAIgADEAMQItADEAUwI6ADEAeAJHACEAVAOQAAEAqAOmAAEAtwOmAAYA
AgHcAAYADgHgAAEAtAXxAAEAtAXxAFGAOgYFAQEATQgFAQEAWggFAQEAZgimAAEAcAgyAQEAhggF
AQEAmAgFAQEAsQg2AQEAuwg6AREATglHAREAdwlLAREA5AlpAREA7AltAQghAAAAAAYYuQETAAEA
ECEAAAAABhi5ARMAAQAYIQAAAAARGPQBFwABAEQhAAAAABMI+wEbAAEAXCEAAAAAEwghAigAAQB0
IQAAAAATCEoCNQABAIwhAAAAABMIaAJCAAEApCEAAAAARgKuAmMAAQDAIQAAAABGArcCaAACANQh
AAAAAIMAyAJsAAIA7CEAAAAARgLQAnEAAgAAIgAAAAARANkCeAACABwiAAAAAAEA9wKAAAMAOCIA
AAAABhi5ARMABABAIgAAAAADCAsDiwAEAHQiAAAAAAYYuQETAAQAiCIAAAAABhi5AbIABADgIgAA
AABGCmsEvAAIAPQiAAAAAAYAggQTAAgABCMAAAAABgiUBMEACAAQIwAAAAAGCK8ExgAJACwjAAAA
AAYAywQTAAoAPCMAAAAARgriBLwACgBcIwAAAACGAPoEywAKAHQjAAAAAIYAAgXLAAoAjCMAAAAA
Bhi5ARMACgCsIwAAAABGAnIF5AAKANwjAAAAAEYDhwXrAAwA8CMAAAAARgOaBesADQD0IwAAAAAG
GLkB9QAOAAQkAAAAAAYIKAb7AA8AMCQAAAAABhi5AfUADwBAJAAAAAAGGLkBEwAQAEgkAAAAAEYC
mgXrABAAaCUAAAAARgJKBhMAEQCcJgAAAABGAlUGEwARAMAmAAAAAAYAYQYNAREARCgAAAAABgh1
BnEAEgBcKAAAAAAGCIQGwQASAGgoAAAAAAYImQZxABMAgCgAAAAABginBsEAEwCMKAAAAAAGCLUG
aAAUAKQoAAAAAAYIwQYTARQAsCgAAAAABggsBxgBFQDIKAAAAAAGCEQHHQEVANQoAAAAAAYIXAdx
ABYA7CgAAAAABghwB8EAFgD4KAAAAAAGCIQHcQAXABApAAAAAAYIlQfBABcAHCkAAAAAAQimB7wA
GAA8KQAAAAABAL8HvAAYAAgqAAAAAAEADAgjARgAZCoAAAAAAQA/CCsBGgDMLAAAAAADGLkBEwAb
ANQsAAAAABYIgwlPARsAEC0AAAAAFgiXCVQBGwAkLQAAAAAWCKMJWQEbACwtAAAAABEY9AEXABwA
QC0AAAAABhi5ARMAHABILQAAAAAWCPkJcAEcAAAAAQC1AgAAAQDuAgAAAQDuAgAAAQBJBAAAAgBT
BAAAAwBcBAAABABkBAAAAQCpBAAAAQCpBAAAAQB/BQAAAgBkBAAAAQBkBAAAAQCwBQAAAQBJBAAA
AQBJBAAAAQCwBQAAAQBqBgAAAQCTBgAAAQCTBgAAAQCTBgAAAQCTBgAAAQCTBgAAAQCTBgAAAQAc
CAAAAgAlCAAAAQBKCAAAAQCpBAkAuQETAKkAuQF6AbkAuQGJAREAuQETAMEAuQETACQAuQETACwA
uQETADQAuQETADwAuQETACQACwOLACwACwOLADQACwOLADwACwOLAMkAuQETANEAuQETANkAuQHB
AOEAWQsiAhkArgJjABkAtwJoACkAegsvAhkA0AJxAPEAlgs/AhkAuQETAPkAuQFPAkQAVAOQAEwA
+QmLAEwAwAvMAkwAuQETAAEBuQHGADkAuQGyAEEAFgzfAgkBRAzlAhEBZwzrAhkBcAxoACkBiwwT
ATkAlQz3AjkAngwTATEBuQHBACkB+gTLACkBAgXLADkBuQHGAFEAuQETAAkB7QwEA0EBZwwKA0kB
cAxoAAkBMQ0RA1EBZwwXA1kBag37AGkBqQQjAzkAkQ0oA0kAnA0tA0kAZwwyA4kAuQ03A3EBZww9
A3EAwAtDA4kAyA1oAHkB5A1IA3kB9A0XAGEBBg5xAEEASgYTAFkAHw5fA4EBMQ5kA4kAPw7BAIkA
Tw4TAYkAaA5pA3EAeA7BAEkBpw5uA5EBZwx0A3EBwQ56A1EA1w5/A5kB/g6FA0kBkQ1oAGkAEA9o
AKEBHg+LA0EAVQYTAKkBNA8TACEBag+jA8EBuQHBACEBoA+oAyEBpg+yAyEBqw+5A1kBsg/BAEkB
yg+/A5EB2g8TALEBCBDFA9EBZwzLA7kBEA9oALEBNhDSA+kBuQETAPEBohD6A+EBqhBoAOEBZwwF
BAECyhAMBAkCZwwSBBkC+QlxAOkB4xBjAOkB7BATAOkBwQ56AyEC0AIZBOkBBBEeBGkAHRE7BHEA
KhFABGkANRFoAHEAQBETAWkASRFoADECVxFGBGkAZRFoADECbxFGBDkCuQHBAEECuQETAEkCuQHB
AFECuQFnBFkCuQETAWECuQHBAGkCuQHBAHECuQEeBVkCuQHBAHkCuQETAIECuQHCBYkCuQEeBSkA
xRKEBpEAuQGKBqEAuQETAJkC6xKnBpkC8RKnBqECuQETAKkCuQETAbECuQETALkCuQHBAMECuQHB
AMkCuQHBANECuQHBANkCuQHBAOECuQHBAOkCuQHBAPECuQHBAA4AMAAIASkAgwDwAS4AKwQ2By4A
QwQ2By4AGwTZAi4A+wOxBi4ASwEQBy4AMwRzBy4AOwTZAi4AIwQWBy4AAwS6Bi4ACwTZBi4AEwTm
Bi4A6wDZAkAAKwCnAUAAEwCAAUMAEwCAAUMAGwCPAUkAgwAOAmMAGwCPAWMAEwCAAWkAgwABAoAA
KwCnAYMAcwCnAYMAGwCPAYMAewCnAYkAgwDcAaAAKwCnAaMAwwBXAqMAEwCAAcAAKwCnAcMAEwCA
AcMA6wDZAuAAKwCnAeMASwHZAgABEwCAAQABKwCnAQMBSwHZAiABKwCnASABEwCAAUABKwCnAUAB
EwCAAWABKwCnAWABEwCAAWMBgwNtBGMBSwHZAmMBcwOnAWMBewNZBGkBkwO5BGkBmwM/BWkBowMk
BYABKwCnAYkBuwPJBYkBkwO5BIkBmwPpBaABKwCnAakBmwPGBKkBiwOwBKkBkwO5BMABKwCnAcAB
EwCAAckBiwNJBskBmwNdBskBkwNSBuABKwCnAekBswOnAekBmwODBekBqwNnBekBkwNzBQACEwCA
AQACKwCnAQkCwwMQBgkCmwMXBgkCkwNzBUkCEwCeBmkCEwCeBokC8wOnAcADSwHZAgAESwHZAsgB
zQHSAdcBJwIrAjYCOwJKAkoC0gLyAv0CJwInAh4DTwORA9oDOwI7AisC9QM7AjsC/QIpBEsEUgSS
BpkGrAYEAAEABgAFAAcABgAJAAoACwALAAwAEgANABQAAADdAU8AAACWAlQAAABFAlkAAACiAl4A
AABeA5gAAAAOBc8AAAAhBdQAAAAyBdgAAABKBc8AAAAzBgABAADKCNQAAADVCNQAAADfCD4BAADn
CEIBAAD7CNQAAAALCdQAAAAYCc8AAAA+CV8BAACvCWQBAACpBHUBAgAEAAMAAgAFAAUAAgAGAAcA
AgAHAAkAAgAPAAsAAgASAA0AAQAUAA8AAQAVABEAAgAXABMAAgAfABUAAgAmABcAAQAnABcAAQAp
ABkAAgAoABkAAQArABsAAgAqABsAAgAsAB0AAQAtAB0AAQAvAB8AAgAuAB8AAgAwACEAAQAxACEA
AgAyACMAAgA3ACUAAgA4ACcAAQA5ACcAAgA8ACkAdQB1AIgArAGzAboBwQG5AsACJgQEgAAAAQAA
AAAAAAAAAAAAAAC8AAAAAgAAAAAAAAAAAAAAAQAKAAAAAAAIAAAAAAAAAAAAAAAKABMAAAAAAAEA
AAAAAAAAAAAAAJ0AagMAAAAACgAAAAAAAAAAAAAAqQDLAwAAAAAKAAAAAAAAAAAAAACpABkEAAAA
AAoAAAAAAAAAAAAAAKkAxAUAAAAACgAAAAAAAAAAAAAAqQDNBgAAAAACAAAAAAAAAAAAAAABAOEH
AAAAAAIAAAAAAAAAAAAAAAEA5gEAAAAAAAAAAAEAAAATEwAABQAEAAYABAAAABAADADsAgAAEAAZ
AOwCAAAAABsA7AItAEUCLQDHAgAAAAAAPE1vZHVsZT4AbXNjb3JsaWIATWljcm9zb2Z0LlZpc3Vh
bEJhc2ljAE15QXBwbGljYXRpb24AU2NyaXB0Q29tcG9uZW50X2JhYWRlODlkYjE4ODQwOTdhMmIz
MzBlMWVkMWQ3MTRhLnZicHJvai5NeQBNeUNvbXB1dGVyAE15UHJvamVjdABNeVdlYlNlcnZpY2Vz
AFRocmVhZFNhZmVPYmplY3RQcm92aWRlcmAxAElucHV0QnVmZmVyAFNjcmlwdENvbXBvbmVudF9i
YWFkZTg5ZGIxODg0MDk3YTJiMzMwZTFlZDFkNzE0YS52YnByb2oAVXNlckNvbXBvbmVudABDb25u
ZWN0aW9ucwBWYXJpYWJsZXMAU2NyaXB0TWFpbgBNeVJlc291cmNlcwBTY3JpcHRDb21wb25lbnRf
YmFhZGU4OWRiMTg4NDA5N2EyYjMzMGUxZWQxZDcxNGEudmJwcm9qLk15LlJlc291cmNlcwBNeVNl
dHRpbmdzAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5BcHBsaWNhdGlvblNlcnZpY2VzAEFwcGxpY2F0
aW9uQmFzZQAuY3RvcgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuRGV2aWNlcwBDb21wdXRlcgBTeXN0
ZW0AT2JqZWN0AC5jY3RvcgBnZXRfQ29tcHV0ZXIAbV9Db21wdXRlck9iamVjdFByb3ZpZGVyAGdl
dF9BcHBsaWNhdGlvbgBtX0FwcE9iamVjdFByb3ZpZGVyAFVzZXIAZ2V0X1VzZXIAbV9Vc2VyT2Jq
ZWN0UHJvdmlkZXIAZ2V0X1dlYlNlcnZpY2VzAG1fTXlXZWJTZXJ2aWNlc09iamVjdFByb3ZpZGVy
AEFwcGxpY2F0aW9uAFdlYlNlcnZpY2VzAEVxdWFscwBvAEdldEhhc2hDb2RlAFR5cGUAR2V0VHlw
ZQBUb1N0cmluZwBDcmVhdGVfX0luc3RhbmNlX18AVABpbnN0YW5jZQBEaXNwb3NlX19JbnN0YW5j
ZV9fAGdldF9HZXRJbnN0YW5jZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuTXlTZXJ2aWNlcy5JbnRl
cm5hbABDb250ZXh0VmFsdWVgMQBtX0NvbnRleHQAR2V0SW5zdGFuY2UAQ296eVJvYy5TU0lTUGx1
cy4yMDA4AENvenlSb2MuU3FsU2VydmVyLlNTSVMAU2NyaXB0QnVmZmVyUGx1cwBPdXRwdXRPdXRw
dXRJRABFcnJvck91dHB1dE91dHB1dElEAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuVHhTY3JpcHQATWlj
cm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUAU2NyaXB0Q29tcG9uZW50AE1pY3Jvc29mdC5T
cWxTZXJ2ZXIuUGlwZWxpbmVIb3N0AFBpcGVsaW5lQnVmZmVyAENvbXBvbmVudABPYmplY3RJRABJ
c0lucHV0AEJ1ZmZlcgBnZXRfU3RhdGljSW5wdXRDb2x1bW5zAERpcmVjdFJvd1RvT3V0cHV0AHNl
dF9FcnJvckRlc2NyaXB0aW9uAFZhbHVlAHNldF9FcnJvckRlc2NyaXB0aW9uX0lzTnVsbABEaXJl
Y3RSb3dUb0Vycm9yT3V0cHV0AGdldF9TdGF0aWNPdXRwdXRDb2x1bW5zAE5leHRSb3cARW5kT2ZS
b3dzZXQAU3RhdGljSW5wdXRDb2x1bW5zAEVycm9yRGVzY3JpcHRpb24ARXJyb3JEZXNjcmlwdGlv
bl9Jc051bGwAU3RhdGljT3V0cHV0Q29sdW1ucwBTY3JpcHRDb21wb25lbnRQbHVzAFByb2Nlc3NJ
bnB1dABJbnB1dElEAElucHV0X1Byb2Nlc3NJbnB1dABJbnB1dF9Qcm9jZXNzSW5wdXRSb3cAUm93
AFBhcmVudENvbXBvbmVudABNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1J1bnRpbWVXcmFwAE1pY3Jv
c29mdC5TcWxTZXJ2ZXIuRHRzLlJ1bnRpbWUuV3JhcHBlcgBJRFRTQ29ubmVjdGlvbk1hbmFnZXIx
MDAAZ2V0X0Fkb05ldABBZG9OZXQAQ29sdW1uU2VwYXJhdG9yAFByZUV4ZWN1dGUAUG9zdEV4ZWN1
dGUAVmFsaWRhdGUAZXJyTWVzc2FnZQBnZXRfQ29ubmVjdGlvbgBzZXRfQ29ubmVjdGlvbgB2YWx1
ZQBnZXRfU3RhdGVtZW50AHNldF9TdGF0ZW1lbnQAZ2V0X1RpbWVvdXQAc2V0X1RpbWVvdXQATWlj
cm9zb2Z0LlNxbFNlcnZlci5EVFNQaXBlbGluZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMu
UGlwZWxpbmUuV3JhcHBlcgBEVFNSb3dEaXNwb3NpdGlvbgBnZXRfRXJyb3JSb3dEaXNwb3NpdGlv
bgBzZXRfRXJyb3JSb3dEaXNwb3NpdGlvbgBnZXRfUGFyc2VFeHByZXNzaW9uAHNldF9QYXJzZUV4
cHJlc3Npb24AZ2V0X0lucHV0Q29sdW1ucwBzZXRfSW5wdXRDb2x1bW5zAGdldF9BZG9OZXRDb25u
ZWN0aW9uVHlwZQBHZXRQYXJhbWV0ZXJzXwBJRFRTSW5wdXRDb2x1bW4xMDAAU3lzdGVtLkRhdGEA
U3lzdGVtLkRhdGEuQ29tbW9uAERiUGFyYW1ldGVyAFNldHVwUGFyYW1ldGVyXwBpbnB1dENvbABw
YXJhbWV0ZXIARGJUeXBlAERhdGFUeXBlAEdldERiVHlwZV8AZHQAbV9jb25uZWN0aW9uAG1fc3Rh
dGVtZW50AG1fdGltZW91dABtX2Vycm9yUm93RGlzcG9zaXRpb24AbV9wYXJzZUV4cHJlc3Npb24A
bV9pbnB1dENvbHVtbnMARGJDb21tYW5kAG1fY29tbWFuZABtX2lucHV0SW5kZXhlcwBDb25uZWN0
aW9uAFN0YXRlbWVudABUaW1lb3V0AEVycm9yUm93RGlzcG9zaXRpb24AUGFyc2VFeHByZXNzaW9u
AElucHV0Q29sdW1ucwBBZG9OZXRDb25uZWN0aW9uVHlwZQBTeXN0ZW0uUmVzb3VyY2VzAFJlc291
cmNlTWFuYWdlcgBfcmVzTWdyAFN5c3RlbS5HbG9iYWxpemF0aW9uAEN1bHR1cmVJbmZvAF9yZXND
dWx0dXJlAGdldF9SZXNvdXJjZU1hbmFnZXIAZ2V0X0N1bHR1cmUAc2V0X0N1bHR1cmUAQ3VsdHVy
ZQBTeXN0ZW0uQ29uZmlndXJhdGlvbgBBcHBsaWNhdGlvblNldHRpbmdzQmFzZQBtX1ZhbHVlAG1f
U3luY09iamVjdABnZXRfVmFsdWUAU3lzdGVtLkNvbXBvbmVudE1vZGVsAEVkaXRvckJyb3dzYWJs
ZUF0dHJpYnV0ZQBFZGl0b3JCcm93c2FibGVTdGF0ZQBTeXN0ZW0uQ29kZURvbS5Db21waWxlcgBH
ZW5lcmF0ZWRDb2RlQXR0cmlidXRlAFN5c3RlbS5EaWFnbm9zdGljcwBEZWJ1Z2dlckhpZGRlbkF0
dHJpYnV0ZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuQ29tcGlsZXJTZXJ2aWNlcwBTdGFuZGFyZE1v
ZHVsZUF0dHJpYnV0ZQBIaWRlTW9kdWxlTmFtZUF0dHJpYnV0ZQBTeXN0ZW0uQ29tcG9uZW50TW9k
ZWwuRGVzaWduAEhlbHBLZXl3b3JkQXR0cmlidXRlAFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2Vy
dmljZXMAUnVudGltZUhlbHBlcnMAR2V0T2JqZWN0VmFsdWUAUnVudGltZVR5cGVIYW5kbGUAR2V0
VHlwZUZyb21IYW5kbGUAQWN0aXZhdG9yAENyZWF0ZUluc3RhbmNlAE15R3JvdXBDb2xsZWN0aW9u
QXR0cmlidXRlAHNldF9WYWx1ZQBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMAQ29tVmlz
aWJsZUF0dHJpYnV0ZQBJRFRTQ29tcG9uZW50TWV0YURhdGExMDAAZ2V0X0NvbXBvbmVudE1ldGFE
YXRhAElEVFNPdXRwdXRDb2xsZWN0aW9uMTAwAGdldF9PdXRwdXRDb2xsZWN0aW9uAElEVFNPdXRw
dXQxMDAAZ2V0X0l0ZW0AZ2V0X0lEAFN0cmluZwBTY3JpcHRCdWZmZXIARGlyZWN0Um93AHNldF9J
dGVtAFNldE51bGwASW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbgBDTFNDb21wbGlhbnRBdHRyaWJ1
dGUASURUU0lucHV0Q29sbGVjdGlvbjEwMABnZXRfSW5wdXRDb2xsZWN0aW9uAElEVFNJbnB1dDEw
MABJRFRTUnVudGltZUNvbm5lY3Rpb25Db2xsZWN0aW9uMTAwAGdldF9SdW50aW1lQ29ubmVjdGlv
bkNvbGxlY3Rpb24ASURUU1J1bnRpbWVDb25uZWN0aW9uMTAwAGdldF9Db25uZWN0aW9uTWFuYWdl
cgBFeGNlcHRpb24AREJOdWxsAGdldF9CdWZmZXIASXNOdWxsAERiUGFyYW1ldGVyQ29sbGVjdGlv
bgBnZXRfUGFyYW1ldGVycwBFeGVjdXRlTm9uUXVlcnkAUHJvamVjdERhdGEAU2V0UHJvamVjdEVy
cm9yAENsZWFyUHJvamVjdEVycm9yAGdldF9NZXNzYWdlAERiQ29ubmVjdGlvbgBBY3F1aXJlQ29u
bmVjdGlvbgBDcmVhdGVDb21tYW5kAHNldF9Db21tYW5kVGV4dABzZXRfQ29tbWFuZFRpbWVvdXQA
SW50MzIAQ3JlYXRlUGFyYW1ldGVyAHNldF9QYXJhbWV0ZXJOYW1lAElEVFNJbnB1dENvbHVtbkNv
bGxlY3Rpb24xMDAAZ2V0X0lucHV0Q29sdW1uQ29sbGVjdGlvbgBBZGQAUGlwZWxpbmVDb21wb25l
bnQAZ2V0X0hvc3RDb21wb25lbnQASURUU0J1ZmZlck1hbmFnZXIxMDAAZ2V0X0J1ZmZlck1hbmFn
ZXIAZ2V0X0xpbmVhZ2VJRABGaW5kQ29sdW1uQnlMaW5lYWdlSUQARGlzcG9zZQBJRFRTVmlydHVh
bElucHV0MTAwAElEVFNWaXJ0dWFsSW5wdXRDb2x1bW4xMDAASXNOdWxsT3JFbXB0eQBBcHBsaWNh
dGlvbkV4Y2VwdGlvbgBTdHJpbmdTcGxpdE9wdGlvbnMAU3BsaXQASm9pbgBDb25jYXQAc2V0X0Nv
bm5lY3Rpb25NYW5hZ2VySUQAR2V0VmlydHVhbElucHV0AFJlbW92ZUFsbABJRFRTVmlydHVhbElu
cHV0Q29sdW1uQ29sbGVjdGlvbjEwMABnZXRfVmlydHVhbElucHV0Q29sdW1uQ29sbGVjdGlvbgBE
VFNVc2FnZVR5cGUAU2V0VXNhZ2VUeXBlAFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucwBN
YXRjaENvbGxlY3Rpb24AU3lzdGVtLkNvbGxlY3Rpb25zAEFycmF5TGlzdABSZWdleABSZWdleE9w
dGlvbnMATWF0Y2hlcwBnZXRfQ291bnQATWF0Y2gAR3JvdXBDb2xsZWN0aW9uAGdldF9Hcm91cHMA
R3JvdXAAQ2FwdHVyZQBDb250YWlucwBDbGVhcgBDb252ZXJzaW9ucwBBcnJheQBUb0FycmF5AElE
YkRhdGFQYXJhbWV0ZXIAZ2V0X0RhdGFUeXBlAHNldF9EYlR5cGUAZ2V0X0xlbmd0aABzZXRfU2l6
ZQBnZXRfUHJlY2lzaW9uAHNldF9QcmVjaXNpb24AZ2V0X1NjYWxlAHNldF9TY2FsZQBBcmd1bWVu
dEV4Y2VwdGlvbgBTU0lTU2NyaXB0Q29tcG9uZW50RW50cnlQb2ludEF0dHJpYnV0ZQBDb3p5Um9j
LlNxbFNlcnZlci5TU0lTLkF0dHJpYnV0ZXMAVmFsaWRhdGVQcm9wZXJ0aWVzQXR0cmlidXRlAFNv
cnRQcm9wZXJ0aWVzQXR0cmlidXRlAERlZmF1bHRWYWx1ZUF0dHJpYnV0ZQBDYXRlZ29yeUF0dHJp
YnV0ZQBEZXNjcmlwdGlvbkF0dHJpYnV0ZQBDb25uZWN0aW9uQXR0cmlidXRlAFJlZ3VsYXJFeHBy
ZXNzaW9uRGlhbG9nQXR0cmlidXRlAFRleHREaWFsb2dBdHRyaWJ1dGUASW5wdXRWaXJ0dWFsQ29s
dW1uQXR0cmlidXRlAFN5c3RlbS5SZWZsZWN0aW9uAEFzc2VtYmx5AGdldF9Bc3NlbWJseQBTeXN0
ZW0uVGhyZWFkaW5nAE1vbml0b3IARW50ZXIARXhpdABEZWJ1Z2dlck5vblVzZXJDb2RlQXR0cmli
dXRlAFNjcmlwdENvbXBvbmVudF9iYWFkZTg5ZGIxODg0MDk3YTJiMzMwZTFlZDFkNzE0YS52YnBy
b2ouUmVzb3VyY2VzLnJlc291cmNlcwBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRlAFJ1
bnRpbWVDb21wYXRpYmlsaXR5QXR0cmlidXRlAEFzc2VtYmx5RmlsZVZlcnNpb25BdHRyaWJ1dGUA
R3VpZEF0dHJpYnV0ZQBBc3NlbWJseVRyYWRlbWFya0F0dHJpYnV0ZQBBc3NlbWJseUNvcHlyaWdo
dEF0dHJpYnV0ZQBBc3NlbWJseVByb2R1Y3RBdHRyaWJ1dGUAQXNzZW1ibHlDb21wYW55QXR0cmli
dXRlAEFzc2VtYmx5RGVzY3JpcHRpb25BdHRyaWJ1dGUAQXNzZW1ibHlUaXRsZUF0dHJpYnV0ZQBT
Y3JpcHRDb21wb25lbnRfYmFhZGU4OWRiMTg4NDA5N2EyYjMzMGUxZWQxZDcxNGEudmJwcm9qLmRs
bAAADU8AdQB0AHAAdQB0AAAZRQByAHIAbwByACAATwB1AHQAcAB1AHQAAICbSQBzAE4AdQBsAGwA
IABwAHIAbwBwAGUAcgB0AHkAIABjAGEAbgBuAG8AdAAgAGIAZQAgAHMAZQB0ACAAdABvACAARgBh
AGwAcwBlAC4AIABBAHMAcwBpAGcAbgAgAGEAIAB2AGEAbAB1AGUAIAB0AG8AIAB0AGgAZQAgAGMA
bwBsAHUAbQBuACAAaQBuAHMAdABlAGEAZAAuAAAhRQByAHIAbwByAEQAZQBzAGMAcgBpAHAAdABp
AG8AbgAAC0kAbgBwAHUAdAAADUEAZABvAE4AZQB0AAA1UwBlAGwAZQBjAHQAIABBAEQATwAuAE4A
RQBUACAAYwBvAG4AbgBlAGMAdABpAG8AbgAuAAAtUwBwAGUAYwBpAGYAeQAgAFMAUQBMACAAcwB0
AGEAdABlAG0AZQBuAHQALgAAYVMAcABlAGMAaQBmAHkAIAByAGUAZwB1AGwAYQByACAAZQB4AHAA
cgBlAHMAcwBpAG8AbgAgAGYAbwByACAAcABhAHIAYQBtAGUAdABlAHIAcwAgAHAAYQByAHMAZQAu
AAAFLAAKAABXUwBlAGwAZQBjAHQAIABpAG4AcAB1AHQAIABjAG8AbAB1AG0AbgBzACAAZgBvAHIA
IAB0AGgAZQBzAGUAIABwAGEAcgBhAG0AZQB0AGUAcgBzADoAIAAABSwAIAAAD0EARABPAC4ATgBF
AFQAAAtQAGEAcgBhAG0AAB9VAG4AaABhAG4AZABsAGUAZAAgAHQAeQBwAGUALgAAMU0AeQAuAFIA
ZQBzAG8AdQByAGMAZQBzAC4ATQB5AFIAZQBzAG8AdQByAGMAZQBzAAAAAMEU7VzwoftIv6wscI2Q
U50ACLd6XFYZNOCJCLA/X38R1Qo6AyAAAQMAAAEEAAASDAcGFRIYARIMBAAAEggHBhUSGAESCAQA
ABIRBwYVEhgBEhEEAAASFAcGFRIYARIUBAgAEgwECAASCAQIABIRBAgAEhQEIAECHAMgAAgEIAAS
FQMgAA4CHgAHEAEBHgAeAAcwAQEBEB4AAhMABCAAEwAHBhUSGQETAAQoABMACBbPSQu4DDTqAgYI
CImEXc2AgMyRCSAEARIhCAISJQQgAB0OBCABAQ4EIAEBAgMgAAIEKAAdDgMoAA4DKAACAwYSJAMG
EigGIAIBCBIlBSABARIcAwYSIQUgAQESIQQgABItBCgAEi0CBg4ELAAKAAUgAQIQDgQgAQEIBCAA
ETEFIAEBETEHIAIBEjUSOQYgARE9EUEDBhExAwYSRQMGHQgDKAAIBCgAETEDBhJJAwYSTQQAABJJ
BAAAEk0FAAEBEk0ECAASSQQIABJNAwYSNAIGHAQAABI0BAgAEjQFIAEBEVkIAQABAAAAAAAFIAIB
Dg4XAQAKTXlUZW1wbGF0ZQc4LjAuMC4wAAAEAQAAAAYVEhgBEgwGFRIYARIIBhUSGAESEQYVEhgB
EhQEBwESDAQHARIIBAcBEhEEBwESFBMBAA5NeS5XZWJTZXJ2aWNlcwAAEAEAC015LkNvbXB1dGVy
AAAMAQAHTXkuVXNlcgAAEwEADk15LkFwcGxpY2F0aW9uAAAEAAEcHAMHAQIDBwEIBgABEhURdQQH
ARIVAwcBDgUQAQAeAAQKAR4ABAcBHgAHIAQBDg4ODmEBADRTeXN0ZW0uV2ViLlNlcnZpY2VzLlBy
b3RvY29scy5Tb2FwSHR0cENsaWVudFByb3RvY29sEkNyZWF0ZV9fSW5zdGFuY2VfXxNEaXNwb3Nl
X19JbnN0YW5jZV9fAAAABhUSGAETAAYVEhkBEwAECgETAAUgAQETAAYHAhMAEwAFAQAAAAAFIAAS
gIUFIAASgIkGIAESgI0cBAcBHQ4FIAIBCBwGBwIdDh0OBSAAEoChBiABEoClHAUgABKAqQYgARKA
rRwEBwESLQQGEoC1BCAAEiUEIAECCAQgARwIBSAAEoC5BSABEjkIBCABARwGAAEBEoCxDwcICBwI
CBKAsRKAsQgRMQQgARwcBCAAEkUEIAASOQUgABKAyQUgARI1HAQgAQgcBSAAEoDNBSAAEoDRBSAC
CAgIEQcJEoDBEoClHQ4IEjkICAgIBAABAg4JIAIdDh0OEYDlBgACDg4dDgUAAg4ODgUgABKA2QUg
ABKA6QYgARKA3RwHIAIICBGA7RoHDAICEoClHQ4dDhKA2Q4SgN0SgLEdDggdDgQHARExCgADEoDx
Dg4RgP0GIAESgQEIBSAAEoEFBiABEoEJCAQAAQ4IByABEoEVEhUCHQ4RBwoCHQ4SgPEIEoD1DggI
CAgEIAARQQUgAQERPQQgAQEFBgcCEoEZBQYHAhE9EUENAQAIVmFsaWRhdGUAAAUgAQEdDkIBAAUA
AAAKQ29ubmVjdGlvbglTdGF0ZW1lbnQHVGltZW91dA9QYXJzZUV4cHJlc3Npb24MSW5wdXRDb2x1
bW5zAAAIAQAAAAAAAAAMAQAHQ29tbWFuZAAAVwEAUlNwZWNpZnkgbnVtYmVyIG9mIHNlY29uZHMg
YmVmb3JlIGEgY29tbWFuZCB0aW1lcyBvdXQuIFNldCAwIGZvciBpbmZpbml0ZSB0aW1lLW91dC4A
AAUgAgEOAhoBABRBZG9OZXRDb25uZWN0aW9uVHlwZQEAACcBACJTZWxlY3QgQURPLk5FVCBDb25u
ZWN0aW9uIE1hbmFnZXIuAAALAQAGQChcdyspAAAPAQAKUGFyYW1ldGVycwAAPgEAOVNwZWNpZnkg
cmVndWxhciBleHByZXNzaW9uIHRvIHBhcnNlIHN0YXRlbWVudCBwYXJhbWV0ZXJzLgAABiADAQ4O
Dh8BABVTcGVjaWZ5IFNRTCBzdGF0ZW1lbnQAA1NRTAAAJgEAIVNwZWNpZnkgU1FMIHN0YXRlbWVu
dCB0byBleGVjdXRlLgAABgEAAAAAADEBACxTZWxlY3QgaW5wdXQgY29sdW1ucyBmb3IgY29tbWFu
ZCBwYXJhbWV0ZXJzLgAACAEABAAAAAAACgEABUVycm9yAAAmAQAhU3BlY2lmeSBob3cgdG8gaGFu
ZGxlIGVycm9yIHJvd3MuAAAFIAASgUkHIAIBDhKBSQYHAhJJEkkEBwESTQgBAAIAAAAAAAQAAQEc
BAcBEjQIAQAIAAAAAAAeAQABAFQCFldyYXBOb25FeGNlcHRpb25UaHJvd3MBDAEABzEuMC4wLjAA
ACkBACQ5Y2I4MTM3MC1kMDUwLTQzYWYtODZjNS1lNjNlNzU0MzM0ODAAAAUBAAEAAB8BABpDb3B5
cmlnaHQgQCBNaWNyb3NvZnQgMjAxMAAAPAEAN1NjcmlwdENvbXBvbmVudF9iYWFkZTg5ZGIxODg0
MDk3YTJiMzMwZTFlZDFkNzE0YS52YnByb2oAAA4BAAlNaWNyb3NvZnQAAAAAdFwAAAAAAAAAAAAA
jlwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBcAAAAAAAAAAAAAAAAX0NvckRsbE1haW4AbXNj
b3JlZS5kbGwAAAAAAP8lACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAAAKAAAgA4AAABIAACA
EAAAAGAAAIAAAAAAAAAAAAAAAAAAAAIAAgAAAHgAAIADAAAAkAAAgAAAAAAAAAAAAAAAAAAAAQAA
fwAAqAAAgAAAAAAAAAAAAAAAAAAAAQABAAAAwAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAA2AAAAAAA
AAAAAAAAAAAAAAAAAQAAAAAA6AAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA+AAAAAAAAAAAAAAAAAAA
AAAAAQAAAAAACAEAAIBlAADoAgAAAAAAAAAAAABoaAAAKAEAAAAAAAAAAAAAkGkAACIAAAAAAAAA
AAAAABhhAABoBAAAAAAAAAAAAABoBDQAAABWAFMAXwBWAEUAUgBTAEkATwBOAF8ASQBOAEYATwAA
AAAAvQTv/gAAAQAAAAEAAAAAAAAAAQAAAAAAPwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAEQA
AAABAFYAYQByAEYAaQBsAGUASQBuAGYAbwAAAAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkAbwBu
AAAAAAAAALAEyAMAAAEAUwB0AHIAaQBuAGcARgBpAGwAZQBJAG4AZgBvAAAApAMAAAEAMAAwADAA
MAAwADQAYgAwAAAANAAKAAEAQwBvAG0AcABhAG4AeQBOAGEAbQBlAAAAAABNAGkAYwByAG8AcwBv
AGYAdAAAAJgAOAABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAABTAGMAcgBpAHAA
dABDAG8AbQBwAG8AbgBlAG4AdABfAGIAYQBhAGQAZQA4ADkAZABiADEAOAA4ADQAMAA5ADcAYQAy
AGIAMwAzADAAZQAxAGUAZAAxAGQANwAxADQAYQAuAHYAYgBwAHIAbwBqAAAAMAAIAAEARgBpAGwA
ZQBWAGUAcgBzAGkAbwBuAAAAAAAxAC4AMAAuADAALgAwAAAAmAA8AAEASQBuAHQAZQByAG4AYQBs
AE4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfAGIAYQBhAGQAZQA4ADkA
ZABiADEAOAA4ADQAMAA5ADcAYQAyAGIAMwAzADAAZQAxAGUAZAAxAGQANwAxADQAYQAuAHYAYgBw
AHIAbwBqAC4AZABsAGwAAABcABsAAQBMAGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAABDAG8A
cAB5AHIAaQBnAGgAdAAgAEAAIABNAGkAYwByAG8AcwBvAGYAdAAgADIAMAAxADAAAAAAAKAAPAAB
AE8AcgBpAGcAaQBuAGEAbABGAGkAbABlAG4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8A
bgBlAG4AdABfAGIAYQBhAGQAZQA4ADkAZABiADEAOAA4ADQAMAA5ADcAYQAyAGIAMwAzADAAZQAx
AGUAZAAxAGQANwAxADQAYQAuAHYAYgBwAHIAbwBqAC4AZABsAGwAAACQADgAAQBQAHIAbwBkAHUA
YwB0AE4AYQBtAGUAAAAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AYgBhAGEAZABl
ADgAOQBkAGIAMQA4ADgANAAwADkANwBhADIAYgAzADMAMABlADEAZQBkADEAZAA3ADEANABhAC4A
dgBiAHAAcgBvAGoAAAA0AAgAAQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4AAAAxAC4AMAAu
ADAALgAwAAAAOAAIAAEAQQBzAHMAZQBtAGIAbAB5ACAAVgBlAHIAcwBpAG8AbgAAADEALgAwAC4A
MAAuADAAAAAoAAAAIAAAAEAAAAABAAQAAAAAAIACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAA
gAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAd3d3d3d3d3d3d3d3d3dwBEREREREREREREREREREcAT/////////////////9HAE////
//////////////RwBP/////////////////0cAT/////////////////9HAE////////////////
//RwBP/////////////////0cAT/////////////////9HAE//////////////////RwBP//////
///////////0cAT/////////////////9HAE//////////////////RwBP/////////////////0
cAT/////////////////9HAE//////////////////RwBP/////////////////0cAT/////////
////////9HAE//////////////////RwBP/////////////////0cASIiIiIiIiIiIiIiIiIhHAE
RERERERERERERERERERwBExMTExMTExMTE7Ozkl0cATMzMzMzMzMzMzMzMzMxAAARERERERERERE
REREREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////
/////////////////8AAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAAB
gAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAA8AAAAf/
//////////////8oAAAAEAAAACAAAAABAAQAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
gAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////
AAAAAAAAAAAAB3d3d3d3d3dERERERERER0////////hHT///////+EdP///////4R0////////hH
T///////+EdP///////4R0////////hHT///////+EdIiIiIiIiIR0zMzMzMzMxHxERERERERMAA
AAAAAAAAAAAAAAAAAAAA//8AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAABAAD//wAA//8AAAAAAQACACAgEAABAAQA6AIAAAIAEBAQAAEABAAoAQAAAwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAADAAAAKA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAA==]]></arrayElement></arrayElements></property>
<property id="110" 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="904" 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_baade89db1884097a2b330e1ed1d714a</property>
<property id="905" 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="68" name="AdoNet" description="" connectionManagerID="{A1565847-DBA9-4300-83C9-1739E1DEA812}" /></connections>
<inputs>
<input id="69" name="Input" description="" hasSideEffects="true" dangling="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="False" /></input>
</inputs>
<outputs>
<output id="70" name="Output" description="" exclusionGroup="1" synchronousInputId="69" deleteOutputOnPathDetached="false" hasSideEffects="false" dangling="false" isErrorOut="false" isSorted="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="False" /></output>
<output id="753" name="Error Output" description="" exclusionGroup="1" synchronousInputId="69" deleteOutputOnPathDetached="false" hasSideEffects="false" dangling="false" isErrorOut="false" isSorted="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><outputColumns>
<outputColumn id="798" name="ErrorDescription" description="" lineageId="798" precision="0" scale="0" length="250" dataType="wstr" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" /></outputColumns><externalMetadataColumns isUsed="False" /></output>
</outputs>
</component>