<component id="79" 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="83" 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="20"><arrayElement dataType="System.String"><![CDATA[\crc32.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.Collections
Imports System.IO
Imports System.Security.Cryptography


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Calculates CRC32 hash.
' Based on code found here: http://www.algorithm-code.com/wiki/CRC32_Algorithm
Public Class CRC32
    Inherits HashAlgorithm


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Initialize the cache
    Shared Sub New()
        g_AllOnes = UInteger.MaxValue
        g_cachedCRC32Tables = Hashtable.Synchronized(New Hashtable)
        g_autoCache = True
    End Sub ' New


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Creates a CRC32 object using the DefaultPolynomial
    Public Sub New()
        Call Me.New(CRC32.DefaultPolynomial)
    End Sub ' New


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Creates a CRC32 object using the specified polynomial
    Public Sub New(ByVal aPolynomial As UInteger)
        Call Me.New(aPolynomial, CRC32.AutoCache)
    End Sub ' New


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Creates a CRC32 object using the specified polynomial
    Public Sub New(ByVal aPolynomial As UInteger, ByVal cacheTable As Boolean)
        MyBase.HashSizeValue = &H20

        m_crc32Table = DirectCast(g_cachedCRC32Tables(aPolynomial), UInteger())
        If m_crc32Table Is Nothing Then
            m_crc32Table = CRC32.BuildCRC32Table(aPolynomial)
            If cacheTable Then
                Call g_cachedCRC32Tables.Add(aPolynomial, m_crc32Table)
            End If
        End If

        Call Me.Initialize()
    End Sub ' New


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Shared Sub ClearCache()
        Call g_cachedCRC32Tables.Clear()
    End Sub ' ClearCache


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Initializes an implementation of HashAlgorithm.
    Public Overrides Sub Initialize()
        m_crc = g_AllOnes
    End Sub 'Initialize


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Protected Overrides Sub HashCore( _
        ByVal buffer As Byte(), _
        ByVal offset As Integer, _
        ByVal count As Integer)

        ' Save the text in the buffer. 
        For i As Integer = offset To count - 1
            Dim tabPtr As ULong = CULng((m_crc And &HFF) Xor buffer(i))
            m_crc >>= 8
            m_crc = m_crc Xor m_crc32Table(CInt(tabPtr))
        Next
    End Sub ' HashCore


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Protected Overrides Function HashFinal() As Byte()
        Dim result As Byte() = New Byte(4 - 1) {}

        Dim finalCRC As ULong = m_crc Xor g_AllOnes
        result(0) = CByte((finalCRC >> 24) And CULng(&HFF))
        result(1) = CByte((finalCRC >> 16) And CULng(&HFF))
        result(2) = CByte((finalCRC >> 8) And CULng(&HFF))
        result(3) = CByte(finalCRC And CULng(&HFF))

        HashFinal = result
    End Function    ' HashFinal


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Computes the hash value for the specified Stream.
    Public Function ComputeHash(ByVal stream As Stream) As Byte()
        Dim buffer As Byte() = New Byte(4096 - 1) {}

        Do While True
            Dim bytesRead As Integer = stream.Read(buffer, 0, 4096)
            If bytesRead = 0 Then
                Exit Do
            End If

            Call HashCore(buffer, 0, bytesRead)
        Loop

        ComputeHash = HashFinal()
    End Function    ' ComputeHash


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Overloaded. Computes the hash value for the input data.
    Public Function ComputeHash(ByVal buffer As Byte()) As Byte()
        ComputeHash = Me.ComputeHash(buffer, 0, buffer.Length)
    End Function    ' ComputeHash


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Computes the hash value for the input data.
    Public Function ComputeHash( _
        ByVal buffer As Byte(), _
        ByVal offset As Integer, _
        ByVal count As Integer) As Byte()

        Call Me.HashCore(buffer, offset, count)
        ComputeHash = Me.HashFinal()
    End Function    ' ComputeHash


#Region "Propeties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns the default polynomial (used in WinZip, Ethernet, etc)
    Public Shared ReadOnly Property DefaultPolynomial() As UInteger
        Get
            Return &H4C11DB7
        End Get
    End Property    ' DefaultPolynomial


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Gets or sets the auto-cache setting of this class.
    Public Shared Property AutoCache() As Boolean
        Get
            Return g_autoCache
        End Get
        Set(ByVal value As Boolean)
            g_autoCache = value
        End Set
    End Property    ' AutoCache
#End Region ' Propeties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Builds a crc32 table given a polynomial
    Protected Shared Function BuildCRC32Table(ByVal ulPolynomial As UInteger) As UInteger()
        Dim result() As UInteger = New UInteger(255) {}
        Dim dwSrc As UInteger

        ' 256 values representing ASCII character codes. 
        For i As Integer = 0 To 255
            dwSrc = CUInt(i)

            For j As Integer = 8 To 1 Step -1
                If ((dwSrc And 1) = 1) Then
                    dwSrc = (dwSrc >> 1) Xor ulPolynomial
                Else
                    dwSrc >>= 1
                End If
            Next

            result(i) = dwSrc
        Next

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


#Region "Attributes"
    Protected Shared g_AllOnes As UInteger
    Protected Shared g_cachedCRC32Tables As Hashtable
    Protected Shared g_autoCache As Boolean

    Protected m_crc32Table As UInteger()
    Private m_crc As UInteger
#End Region ' Attributes
End Class   ' CRC32
]]></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_34de6a2852f74048adcd913b9e905a25.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_34de6a2852f74048adcd913b9e905a25.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("816406df-5665-459a-a1fa-4eb92a4e2951")> 

' 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\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

    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 WriteOnly Property [Checksum]() As Int32
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [Checksum_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 Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {"Checksum"}
        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\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_34de6a2852f74048adcd913b9e905a25.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_34de6a2852f74048adcd913b9e905a25.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_34de6a2852f74048adcd913b9e905a25.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{280632FD-873C-44CD-A647-8FC881B7E012}</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.Drawing" />
    <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="CRC32.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\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

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.Drawing.Design
Imports System.Windows.Forms
Imports System.Windows.Forms.Design
Imports System.Text

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


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


    Private Const ColumnSeparator As String = "," + vbCr


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        m_sb.Length = 0

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

            If Row.Buffer.IsNull(bufIndex) Then
                Call m_sb.Append("\0")
            Else
                Call m_sb.Append(Row.Buffer(bufIndex).ToString())
            End If

            m_sb.Append("\n")
        Next

        ' Setup hash.
        m_crc32.Initialize()
        Row.Checksum = BitConverter.ToInt32(m_crc32.ComputeHash(Encoding.Unicode.GetBytes(m_sb.ToString())), 0)
    End Sub ' Input_ProcessInputRow


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

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

        ' Initialize.
        m_sb = New StringBuilder()
        m_crc32 = New CRC32()

        ' Setup dynamic input columns indexes.
        Dim colsCount As Integer = input.InputColumnCollection.Count
        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
    End Sub ' PreExecute


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

        Try
            If String.IsNullOrEmpty(Me.InputColumns) Then
                Throw New ApplicationException("Select input columns.")
            End If

            ' Setup input columns based on selection.
            Dim selectedCols() As String = CStr(Me.InputColumns).Split( _
                New String() {ColumnSeparator}, _
                StringSplitOptions.None)
            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 input columns for checksum.")> _
    <Editor(GetType(ColumnsEditor), GetType(UITypeEditor))> _
    <TypeConverter(GetType(ColumnsConverter))> _
    Public Property InputColumns() As String
        Get
            InputColumns = m_inputCols
        End Get
        Set(ByVal value As String)
            m_inputCols = value
        End Set
    End Property    ' InputColumns
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Provides multiple input columns selection
    Private Class ColumnsEditor
        Inherits UITypeEditor


        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Public Overrides Function EditValue( _
            ByVal context As ITypeDescriptorContext, _
            ByVal provider As IServiceProvider, _
            ByVal value As Object) As Object

            Dim result As Object = value

            If Not context Is Nothing AndAlso _
                Not context.Instance Is Nothing AndAlso _
                Not context.PropertyDescriptor Is Nothing AndAlso _
                Not provider Is Nothing Then

                Dim edSvc As IWindowsFormsEditorService = CType(provider.GetService( _
                    GetType(IWindowsFormsEditorService)), _
                    IWindowsFormsEditorService)
                Dim descriptor As ICustomTypeDescriptor = CType( _
                    context.Instance, _
                    ICustomTypeDescriptor)
                Dim component As ScriptMain = CType( _
                    descriptor.GetPropertyOwner(context.PropertyDescriptor), _
                    ScriptMain)
                Dim virtInput As IDTSVirtualInput100 = component.ComponentMetaData.InputCollection(0).GetVirtualInput()

                ' Load selected columns.
                Dim selectedCols() As String = CStr(value).Split( _
                    New String() {ColumnSeparator}, _
                    StringSplitOptions.None)

                ' Build input columns list.
                Dim clb As CheckedListBox = New CheckedListBox()
                clb.CheckOnClick = True
                clb.BorderStyle = BorderStyle.None

                For Each inputCol As IDTSVirtualInputColumn100 In virtInput.VirtualInputColumnCollection
                    Dim selected As Boolean = ContainsString_(selectedCols, inputCol.Name)
                    Call clb.Items.Add(inputCol.Name, selected)
                Next

                Call edSvc.DropDownControl(clb)

                ' Store selected columns.
                Dim selCount As Integer = clb.CheckedItems.Count
                If selCount > 0 Then
                    selectedCols = New String(selCount - 1) {}
                    For selIndex As Integer = 0 To selCount - 1
                        Dim col As String = CStr(clb.CheckedItems(selIndex))
                        selectedCols(selIndex) = col
                    Next

                    Call Array.Sort(selectedCols)
                    result = String.Join(ColumnSeparator, selectedCols)
                End If
            End If

            EditValue = result
        End Function    ' EditValue


        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Public Overrides Function GetEditStyle( _
            ByVal context As ITypeDescriptorContext) As UITypeEditorEditStyle

            If Not context Is Nothing AndAlso Not context.Instance Is Nothing Then
                Return UITypeEditorEditStyle.DropDown
            End If

            Return MyBase.GetEditStyle(context)
        End Function    ' GetEditStyle


#Region "Internals"
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        ' Returns true if specified string exists in array.
        Private Function ContainsString_(ByVal array() As String, ByVal str As String) As Boolean
            Dim result As Boolean = False

            For Each item As String In array
                If item = str Then
                    ' Found match.
                    result = True
                    Exit For
                End If
            Next

            ContainsString_ = result
        End Function    ' ContainsString_

#End Region ' Internals


#Region "Attributes"
#End Region ' Attributes
    End Class   ' ColumnsEditor


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' The only purpose of this class is to limit edit in grid.
    Private Class ColumnsConverter
        Inherits TypeConverter

        Public Sub New()
        End Sub ' New


        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Public Overrides Function CanConvertFrom( _
            ByVal context As ITypeDescriptorContext, _
            ByVal sourceType As Type) As Boolean

            CanConvertFrom = False
        End Function    ' CanConvertFrom
    End Class   ' ColumnsConverter



#End Region ' Internals


#Region "Attributes"
    Private m_inputCols As String = String.Empty

    Private m_sb As StringBuilder
    Private m_crc32 As CRC32
    Private m_inputIndexes() As Integer
#End Region ' Attributes
End Class   ' ScriptMain
]]></arrayElement></arrayElements></property>
<property id="84" 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_34de6a2852f74048adcd913b9e905a25.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
EAAAABcAAAA/AAAAKAAAAH8AAAABAAAAPQAAACIAAAAHAAAADwAAABIAAAAKAAAAAQAAAAkAAAAB
AAAABAAAAAMAAAADAAAAAAD/EgEAAAAAAAoAzgGkAQoAAgLkAQYAEgILAgoAagKkAQYA6AILAgoA
agNAAw4AvAOlAxIACwTqAxYAPATqAw4AFwWlAwYAmgV9BQYABgb8BQYAkgZ/BgYAVAdIBxoAsAea
Bx4A0we9BwYA6gcLAhoAFgiaBx4AUwi9BwYAjAh7CAYAuQikCB4AGgkFCR4AUQm9Bx4Aagm9Bx4A
lwl/CQYAwQmuCQoAAArZCQoAGAoTAB4ATQowCgYAggpiCgYAoAoLAgYAxAoLAgoA3QoTAAYAIQsC
CwYANQsLAgYAPAsLAgYAUwsLAhIAbQvqAwYAegsLAiIA3Qu0CyIADAy0CyIANwy0CwYAbwwLAgYA
gAwLAgYAtAxIBwYA0gwLAiIA5wy0CxYAKA3qAyIATA20CyIAcw20CyIAqg20CyIAvg20CwYA2A0L
AgYA8A0LAgYABQ4LAiIAOA60CyIAfQ60CwoAlw7ZCRIA0Q7qAw4AGg/4Dh4ANg+9Bx4ATQ+9Bx4A
XQ+9ByYAhw9yDx4Alg+9ByYAyA+sDwYA4w9/Bh4A/A+9BwoAQhDZCSYAXxByDyYAZxByDwMBphAA
AAYAyhALAiYA3hByDwMB9hAAAAYAHRELAgoALRHZCQYAVxFFEQYAfhFtEQYAkRGuCQYA+hFiCgYA
GhJiCgYAOBJFEQYAVRICCwYAYxJFEQYAfhJFEQYAmRJFEQYAshJFEQYAyxJFEQYA6BJFEQAAAAAB
AAAAAAABAAEAAAAAACkANwAFAAEAAQAAAAAAcgA3AAkAAQACAAABEAB9ADcADQABAAMABQEAAIcA
AAANAAUACAAFAQAAlQAAAA0ABQAPAAEAAACwALwAHQAGABEAAQAAAPQAvAApAAYAGAABAAAAAgG8
AA0ACAAcAAEAAAAOAbwADQAJAB0AAQAAABgBvAAtAAoAHgABAAAAHgG8ACAADwAtAAMAAAApAQAA
PQAUADMAAwAAADcBAABNABQANwAAAAAASAFUAQ0AFAA5AAABEACZAbwAWQAWAD0AMQAtAiAAMQBW
Ai0AMQB4AjoAMQCdAkcAIQB5A5AABgACAdkABgAOAd0AAQBtBe4AAQBtBe4AFAB1BjoBFACcBj0B
FACwBkEBBAC8BkQBAQDJBjoBUYDrBlABAQA8B1ABAQBiB2MBAQBnB2cBAQBvB2sBEQCcCJIBEQDF
CJYBEQAyCbQBEQA6CbgBCCEAAAAABhjeARMAAQAQIQAAAAAGGN4BEwABABghAAAAABEYGQIXAAEA
RCEAAAAAEwggAhsAAQBcIQAAAAATCEYCKAABAHQhAAAAABMIbwI1AAEAjCEAAAAAEwiNAkIAAQCk
IQAAAABGAtMCYwABAMAhAAAAAEYC3AJoAAIA1CEAAAAAgwDtAmwAAgDsIQAAAABGAvUCcQACAAAi
AAAAABEA/gJ4AAIAHCIAAAAAAQAcA4AAAwA4IgAAAAAGGN4BEwAEAEAiAAAAAAMIMAOLAAQAdCIA
AAAABhjeARMABACIIgAAAAAGGN4BrwAEAJgiAAAAAEYKbQS5AAgArCIAAAAABgiEBL4ACAC8IgAA
AAAGCJcEwwAJANgiAAAAAEYKqwS5AAoA+CIAAAAAhgDDBMgACgAQIwAAAACGAMsEyAAKACgjAAAA
AAYY3gETAAoASCMAAAAARgIrBeEACgB4IwAAAABGA0AF6AAMAIwjAAAAAEYDUwXoAA0AkCMAAAAA
BhjeAfIADgCgIwAAAAAGGN4B8gAPALAjAAAAABEYGQIXABAA0CMAAAAABhjeARMAEADgIwAAAAAG
GN4B+AAQAPAjAAAAAAYY3gH9ABEAXCQAAAAAFgC/BRcAEwBoJAAAAABGAsoFEwATAHgkAAAAAEQC
1QUDARMA0CQAAAAARALyBQsBFgAwJQAAAAAGAA0GEAEWAHAlAAAAAAYADQYXARcAjCUAAAAABgAN
Bh4BGACsJQAAAAAWCCAGJwEbAMAlAAAAABYINgYrARsA1CUAAAAAFghEBi8BGwDcJQAAAAAUAFgG
NAEcADAmAAAAAAYY3gETAB0ARCYAAAAARgJTBegAHQAIJwAAAABGAvsGEwAeAKgnAAAAAAYABgdY
AR4AkCgAAAAABggaB3EAHwCoKAAAAAAGCCsHXgEfALQoAAAAAAYY3gETACAAvCgAAAAARgL7B3MB
IABoKgAAAABGAiwIfAEjAIwqAAAAAAEAOQiDASQAxCoAAAAABhjeARMAJgDMKgAAAABGAmEIigEm
ANwqAAAAAAMY3gETACgA5CoAAAAAFgjRCJoBKAAgKwAAAAAWCOUInwEoADQrAAAAABYI8QikASgA
PCsAAAAAERgZAhcAKQBQKwAAAAAGGN4BEwApAFgrAAAAABYIRwm7ASkAAAABANoCAAABABMDAAAB
ABMDAAABAEsEAAACAFUEAAADAF4EAAAEAGYEAAABAJEEAAABAJEEAAABADgFAAACAGYEAAABAGYE
AAABAGkFAAABAEsEAAABAEsEAAABAKgFAAABAKgFAAACALQFAAABAN4FAAACAOUFAAADAOwFAAAB
ABkGAAABAN4FAAABAN4FAAACAOUFAAADAOwFAAABAFIGAAABAGgGAAABAGkFAAABAA8HAAABAFIG
AAABAAUIAAACAA0IAAADAFIGAAABAAUIAAABAEkIAAACAE8IAAABAAUIAAACAHAIAAABAJEECQDe
ARMAuQDeAcUByQDeAdQBEQDeARMA0QDeARMAJADeARMALADeARMANADeARMAPADeARMAJAAwA4sA
LAAwA4sANAAwA4sAPAAwA4sA2QDeARMA4QDeARMA6QDeAV4B8QCRCm0CGQDTAmMAGQDcAmgAKQCy
CnoCGQD1AnEAAQHOCooCGQDeARMACQHeAZoCRAB5A5AATABHCYsATAD4ChcDTADeARMAEQHeAcMA
OQDeAa8AOQBCCy8DOQBLC74AKQHeAV4BMQHDBMgAMQHLBMgAOQHeAcMAUQDeARMAQQD2CzwDQQEj
DEIDSQFEDEgDUQFNDGgAaQDeARMAaQBUDE8DWQDeARMAWQBhDFYDaQBEDFkDaQB2DGEDaQB6DBMA
YQCFDHUDGQGKDFABcQCQDL4AOQCbDJgDSQCmDJ0DcQCtDKIDSQBEDKgDaQG9DK0DcQD1AnEAaQHJ
DLMDcQHfDLkDQQD7BhMAcQDeARMAUQEEDccDeQEeDWgAUQA6Dc0DgQFhDdMDUQGbDGgAeQFEDNkD
kQGGDWgAiQGUDeADGQHiDe8DsQHeAV4BGQEYDvQDUQEeDv4DeQEuDhMAmQFcDgQEwQFEDAoEoQGG
DWgAmQGKDhEE0QGjDhkEqQGzDnEA0QG/DhcA2QHeARMA4QHeAV4B6QHeAUcE8QHeAaYE+QHeAV4B
eQDeARMAgQDvD6MFgQAPEKcFiQAmEK0FCQIxELMFKQL1AroFAQLeARMAAQJOEMMAMQJzEL8FwQGD
EMYFGQKREKMFoQGdEHEAAQK3EMwFQQJ2DNIFGQLBEMgASQLWEBMAEQLmENgFAQIMEd8FWQIeDWgA
WQJEDKgDYQIjEeUFGQEoEfEFeQAsCHwBaQI3ER8GmQDeARMAKQBgES8GoQDeATUGsQDeARMAeQKG
EVIGeQKMEVIGgQLeARMAiQLeAb4AkQLeARMAmQLeAV4BoQLeAV4BqQLeAV4BsQLeAV4BuQLeAV4B
wQLeAV4ByQLeAV4B0QLeAV4BDgA8AFMBKQCDACcCLgDbA8EGLgDzAyQDLgDTAyQDLgD7A+EGLgDr
ACQDLgDjA+EGLgDrAx4HLgAjAbsGLgCzA1wGLgC7A2UGLgDDA4QGLgDLA5EGQAArAPIBQAATAMsB
QwATAMsBQwAbANoBSQCDAFkCYwAbANoBYwATAMsBaQCDADgCgAArAPIBgwBzAPIBgwB7APIBgwAb
ANoBiQCDAEUCoAArAPIBowATAMsBowDDAKICwAArAPIBwwDrACQDwwATAMsB4AArAPIB4wAjASQD
AAETAMsBAAErAPIBAwEjASQDIAErAPIBIAETAMsBQAErAPIBQAETAMsBYAETAMsBYAErAPIBgAEr
APIBgwGTAvIBgwEjASQDgwGbAjkEiQGrAq4EiQGzAnsFiQGjAk0EoAErAPIBqQETAEkGwAETAMsB
wAErAPIByQETAEkG4AErAPIB6QGrA/IBAAIrAPIBAAITAMsBgAMjASQDoAMjASQDEwIYAh0CIgJy
AnYCgQKGApUClQIdAyoDNQNyAnICZwNtA30DhQOFA4oDcgKOA8AD5gMgBIYC+AUaBiYGcgI9BkQG
VwYEAAEABgAFAAcABgALAAoADAAMAA8ADQAQAA8AAAACAk8AAAC7AlQAAABqAlkAAADHAl4AAACD
A5gAAADXBMwAAADqBNEAAADzBNUAAAADBcwAAADPBkgBAADhBkwBAAB+B28BAACMCKoBAAD9CK8B
AACRBMABAgAEAAMAAgAFAAUAAgAGAAcAAgAHAAkAAgAPAAsAAgASAA0AAQATAA8AAQAUABEAAgAV
ABMAAgApABUAAgAqABcAAQArABcAAQAyABkAAgAxABkAAgA6ABsAAgA7AB0AAQA8AB0AAgA/AB8A
dQB1AIgA9wH+AQUCDAIEAwsDXgMEgAAAAQAAAAAAAAAAAAAAAAC8AAAAAgAAAAAAAAAAAAAAAQAK
AAAAAAAIAAAAAAAAAAAAAAAKABMAAAAAAAEAAAAAAAAAAAAAAJ0AjwMAAAAACgAAAAAAAAAAAAAA
pgDNAwAAAAAKAAAAAAAAAAAAAACmABsEAAAAAAIAAAAAAAAAAAAAAAoAiwcAAAAAAgAAAAAAAAAA
AAAAAQALAgAAAAAKAAAAAAAAAAAAAACmAJALAAAAAAIAAAAAAAAAAAAAAAEAcg8AAAAAAAAAAAEA
AACuEQAABQAEAAYABAANAAwADgAMAAAAEAAMABEDAAAQABkAEQMAAAAAGwARAy0AkAItABID1wDt
BQAAAAAAPE1vZHVsZT4AbXNjb3JsaWIATWljcm9zb2Z0LlZpc3VhbEJhc2ljAE15QXBwbGljYXRp
b24AU2NyaXB0Q29tcG9uZW50XzM0ZGU2YTI4NTJmNzQwNDhhZGNkOTEzYjllOTA1YTI1LnZicHJv
ai5NeQBNeUNvbXB1dGVyAE15UHJvamVjdABNeVdlYlNlcnZpY2VzAFRocmVhZFNhZmVPYmplY3RQ
cm92aWRlcmAxAElucHV0QnVmZmVyAFNjcmlwdENvbXBvbmVudF8zNGRlNmEyODUyZjc0MDQ4YWRj
ZDkxM2I5ZTkwNWEyNS52YnByb2oAVXNlckNvbXBvbmVudABDb25uZWN0aW9ucwBWYXJpYWJsZXMA
Q1JDMzIAU2NyaXB0TWFpbgBDb2x1bW5zRWRpdG9yAENvbHVtbnNDb252ZXJ0ZXIATXlSZXNvdXJj
ZXMAU2NyaXB0Q29tcG9uZW50XzM0ZGU2YTI4NTJmNzQwNDhhZGNkOTEzYjllOTA1YTI1LnZicHJv
ai5NeS5SZXNvdXJjZXMATXlTZXR0aW5ncwBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuQXBwbGljYXRp
b25TZXJ2aWNlcwBBcHBsaWNhdGlvbkJhc2UALmN0b3IATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkRl
dmljZXMAQ29tcHV0ZXIAU3lzdGVtAE9iamVjdAAuY2N0b3IAZ2V0X0NvbXB1dGVyAG1fQ29tcHV0
ZXJPYmplY3RQcm92aWRlcgBnZXRfQXBwbGljYXRpb24AbV9BcHBPYmplY3RQcm92aWRlcgBVc2Vy
AGdldF9Vc2VyAG1fVXNlck9iamVjdFByb3ZpZGVyAGdldF9XZWJTZXJ2aWNlcwBtX015V2ViU2Vy
dmljZXNPYmplY3RQcm92aWRlcgBBcHBsaWNhdGlvbgBXZWJTZXJ2aWNlcwBFcXVhbHMAbwBHZXRI
YXNoQ29kZQBUeXBlAEdldFR5cGUAVG9TdHJpbmcAQ3JlYXRlX19JbnN0YW5jZV9fAFQAaW5zdGFu
Y2UARGlzcG9zZV9fSW5zdGFuY2VfXwBnZXRfR2V0SW5zdGFuY2UATWljcm9zb2Z0LlZpc3VhbEJh
c2ljLk15U2VydmljZXMuSW50ZXJuYWwAQ29udGV4dFZhbHVlYDEAbV9Db250ZXh0AEdldEluc3Rh
bmNlAENvenlSb2MuU1NJU1BsdXMuMjAwOABDb3p5Um9jLlNxbFNlcnZlci5TU0lTAFNjcmlwdEJ1
ZmZlclBsdXMATWljcm9zb2Z0LlNxbFNlcnZlci5UeFNjcmlwdABNaWNyb3NvZnQuU3FsU2VydmVy
LkR0cy5QaXBlbGluZQBTY3JpcHRDb21wb25lbnQATWljcm9zb2Z0LlNxbFNlcnZlci5QaXBlbGlu
ZUhvc3QAUGlwZWxpbmVCdWZmZXIAQ29tcG9uZW50AE9iamVjdElEAElzSW5wdXQAQnVmZmVyAGdl
dF9TdGF0aWNJbnB1dENvbHVtbnMAc2V0X0NoZWNrc3VtAFZhbHVlAHNldF9DaGVja3N1bV9Jc051
bGwAZ2V0X1N0YXRpY091dHB1dENvbHVtbnMATmV4dFJvdwBFbmRPZlJvd3NldABTdGF0aWNJbnB1
dENvbHVtbnMAQ2hlY2tzdW0AQ2hlY2tzdW1fSXNOdWxsAFN0YXRpY091dHB1dENvbHVtbnMAU2Ny
aXB0Q29tcG9uZW50UGx1cwBQcm9jZXNzSW5wdXQASW5wdXRJRABJbnB1dF9Qcm9jZXNzSW5wdXQA
SW5wdXRfUHJvY2Vzc0lucHV0Um93AFJvdwBQYXJlbnRDb21wb25lbnQAU3lzdGVtLlNlY3VyaXR5
LkNyeXB0b2dyYXBoeQBIYXNoQWxnb3JpdGhtAGFQb2x5bm9taWFsAGNhY2hlVGFibGUAQ2xlYXJD
YWNoZQBJbml0aWFsaXplAEhhc2hDb3JlAGJ1ZmZlcgBvZmZzZXQAY291bnQASGFzaEZpbmFsAFN5
c3RlbS5JTwBTdHJlYW0AQ29tcHV0ZUhhc2gAc3RyZWFtAGdldF9EZWZhdWx0UG9seW5vbWlhbABn
ZXRfQXV0b0NhY2hlAHNldF9BdXRvQ2FjaGUAdmFsdWUAQnVpbGRDUkMzMlRhYmxlAHVsUG9seW5v
bWlhbABnX0FsbE9uZXMAU3lzdGVtLkNvbGxlY3Rpb25zAEhhc2h0YWJsZQBnX2NhY2hlZENSQzMy
VGFibGVzAGdfYXV0b0NhY2hlAG1fY3JjMzJUYWJsZQBtX2NyYwBEZWZhdWx0UG9seW5vbWlhbABB
dXRvQ2FjaGUAQ29sdW1uU2VwYXJhdG9yAFByZUV4ZWN1dGUAVmFsaWRhdGUAZXJyTWVzc2FnZQBn
ZXRfSW5wdXRDb2x1bW5zAHNldF9JbnB1dENvbHVtbnMAbV9pbnB1dENvbHMAU3lzdGVtLlRleHQA
U3RyaW5nQnVpbGRlcgBtX3NiAG1fY3JjMzIAbV9pbnB1dEluZGV4ZXMASW5wdXRDb2x1bW5zAFN5
c3RlbS5EcmF3aW5nAFN5c3RlbS5EcmF3aW5nLkRlc2lnbgBVSVR5cGVFZGl0b3IAU3lzdGVtLkNv
bXBvbmVudE1vZGVsAElUeXBlRGVzY3JpcHRvckNvbnRleHQASVNlcnZpY2VQcm92aWRlcgBFZGl0
VmFsdWUAY29udGV4dABwcm92aWRlcgBVSVR5cGVFZGl0b3JFZGl0U3R5bGUAR2V0RWRpdFN0eWxl
AENvbnRhaW5zU3RyaW5nXwBhcnJheQBzdHIAVHlwZUNvbnZlcnRlcgBDYW5Db252ZXJ0RnJvbQBz
b3VyY2VUeXBlAFN5c3RlbS5SZXNvdXJjZXMAUmVzb3VyY2VNYW5hZ2VyAF9yZXNNZ3IAU3lzdGVt
Lkdsb2JhbGl6YXRpb24AQ3VsdHVyZUluZm8AX3Jlc0N1bHR1cmUAZ2V0X1Jlc291cmNlTWFuYWdl
cgBnZXRfQ3VsdHVyZQBzZXRfQ3VsdHVyZQBDdWx0dXJlAFN5c3RlbS5Db25maWd1cmF0aW9uAEFw
cGxpY2F0aW9uU2V0dGluZ3NCYXNlAG1fVmFsdWUAbV9TeW5jT2JqZWN0AGdldF9WYWx1ZQBFZGl0
b3JCcm93c2FibGVBdHRyaWJ1dGUARWRpdG9yQnJvd3NhYmxlU3RhdGUAU3lzdGVtLkNvZGVEb20u
Q29tcGlsZXIAR2VuZXJhdGVkQ29kZUF0dHJpYnV0ZQBTeXN0ZW0uRGlhZ25vc3RpY3MARGVidWdn
ZXJIaWRkZW5BdHRyaWJ1dGUATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkNvbXBpbGVyU2VydmljZXMA
U3RhbmRhcmRNb2R1bGVBdHRyaWJ1dGUASGlkZU1vZHVsZU5hbWVBdHRyaWJ1dGUAU3lzdGVtLkNv
bXBvbmVudE1vZGVsLkRlc2lnbgBIZWxwS2V5d29yZEF0dHJpYnV0ZQBTeXN0ZW0uUnVudGltZS5D
b21waWxlclNlcnZpY2VzAFJ1bnRpbWVIZWxwZXJzAEdldE9iamVjdFZhbHVlAFJ1bnRpbWVUeXBl
SGFuZGxlAEdldFR5cGVGcm9tSGFuZGxlAEFjdGl2YXRvcgBDcmVhdGVJbnN0YW5jZQBNeUdyb3Vw
Q29sbGVjdGlvbkF0dHJpYnV0ZQBzZXRfVmFsdWUAU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZp
Y2VzAENvbVZpc2libGVBdHRyaWJ1dGUAU3RyaW5nAEludDMyAHNldF9JdGVtAFNldE51bGwASW52
YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbgBTY3JpcHRCdWZmZXIAQ0xTQ29tcGxpYW50QXR0cmlidXRl
AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRFRTUGlwZWxpbmVXcmFwAE1pY3Jvc29mdC5TcWxTZXJ2ZXIu
RHRzLlBpcGVsaW5lLldyYXBwZXIASURUU0NvbXBvbmVudE1ldGFEYXRhMTAwAGdldF9Db21wb25l
bnRNZXRhRGF0YQBJRFRTSW5wdXRDb2xsZWN0aW9uMTAwAGdldF9JbnB1dENvbGxlY3Rpb24ASURU
U0lucHV0MTAwAGdldF9JdGVtAGdldF9JRABTeW5jaHJvbml6ZWQASGFzaFNpemVWYWx1ZQBVSW50
MzIAQWRkAENsZWFyAEJ5dGUAUmVhZABFbXB0eQBzZXRfTGVuZ3RoAGdldF9CdWZmZXIASXNOdWxs
AEFwcGVuZABFbmNvZGluZwBnZXRfVW5pY29kZQBHZXRCeXRlcwBCaXRDb252ZXJ0ZXIAVG9JbnQz
MgBJRFRTSW5wdXRDb2x1bW5Db2xsZWN0aW9uMTAwAGdldF9JbnB1dENvbHVtbkNvbGxlY3Rpb24A
Z2V0X0NvdW50AFBpcGVsaW5lQ29tcG9uZW50AGdldF9Ib3N0Q29tcG9uZW50AElEVFNCdWZmZXJN
YW5hZ2VyMTAwAGdldF9CdWZmZXJNYW5hZ2VyAElEVFNJbnB1dENvbHVtbjEwMABnZXRfTGluZWFn
ZUlEAEZpbmRDb2x1bW5CeUxpbmVhZ2VJRABJRFRTVmlydHVhbElucHV0MTAwAElEVFNWaXJ0dWFs
SW5wdXRDb2x1bW4xMDAARXhjZXB0aW9uAElzTnVsbE9yRW1wdHkAQXBwbGljYXRpb25FeGNlcHRp
b24AU3RyaW5nU3BsaXRPcHRpb25zAFNwbGl0AEdldFZpcnR1YWxJbnB1dABSZW1vdmVBbGwASURU
U1ZpcnR1YWxJbnB1dENvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0X1ZpcnR1YWxJbnB1dENvbHVtbkNv
bGxlY3Rpb24ARFRTVXNhZ2VUeXBlAFNldFVzYWdlVHlwZQBQcm9qZWN0RGF0YQBTZXRQcm9qZWN0
RXJyb3IAZ2V0X01lc3NhZ2UAQ2xlYXJQcm9qZWN0RXJyb3IAU1NJU1NjcmlwdENvbXBvbmVudEVu
dHJ5UG9pbnRBdHRyaWJ1dGUAQ296eVJvYy5TcWxTZXJ2ZXIuU1NJUy5BdHRyaWJ1dGVzAFZhbGlk
YXRlUHJvcGVydGllc0F0dHJpYnV0ZQBUeXBlQ29udmVydGVyQXR0cmlidXRlAEVkaXRvckF0dHJp
YnV0ZQBEZXNjcmlwdGlvbkF0dHJpYnV0ZQBTeXN0ZW0uV2luZG93cy5Gb3JtcwBDaGVja2VkTGlz
dEJveABJQ3VzdG9tVHlwZURlc2NyaXB0b3IAU3lzdGVtLldpbmRvd3MuRm9ybXMuRGVzaWduAElX
aW5kb3dzRm9ybXNFZGl0b3JTZXJ2aWNlAElFbnVtZXJhdG9yAGdldF9JbnN0YW5jZQBQcm9wZXJ0
eURlc2NyaXB0b3IAZ2V0X1Byb3BlcnR5RGVzY3JpcHRvcgBHZXRTZXJ2aWNlAEdldFByb3BlcnR5
T3duZXIAQ29udmVyc2lvbnMAc2V0X0NoZWNrT25DbGljawBMaXN0Qm94AEJvcmRlclN0eWxlAHNl
dF9Cb3JkZXJTdHlsZQBHZXRFbnVtZXJhdG9yAGdldF9DdXJyZW50AGdldF9OYW1lAE9iamVjdENv
bGxlY3Rpb24AZ2V0X0l0ZW1zAE1vdmVOZXh0AElEaXNwb3NhYmxlAERpc3Bvc2UAQ29udHJvbABE
cm9wRG93bkNvbnRyb2wAQ2hlY2tlZEl0ZW1Db2xsZWN0aW9uAGdldF9DaGVja2VkSXRlbXMAQXJy
YXkAU29ydABKb2luAE9wZXJhdG9ycwBDb21wYXJlU3RyaW5nAFN5c3RlbS5SZWZsZWN0aW9uAEFz
c2VtYmx5AGdldF9Bc3NlbWJseQBTeXN0ZW0uVGhyZWFkaW5nAE1vbml0b3IARW50ZXIARXhpdABE
ZWJ1Z2dlck5vblVzZXJDb2RlQXR0cmlidXRlAFNjcmlwdENvbXBvbmVudF8zNGRlNmEyODUyZjc0
MDQ4YWRjZDkxM2I5ZTkwNWEyNS52YnByb2ouUmVzb3VyY2VzLnJlc291cmNlcwBDb21waWxhdGlv
blJlbGF4YXRpb25zQXR0cmlidXRlAFJ1bnRpbWVDb21wYXRpYmlsaXR5QXR0cmlidXRlAEFzc2Vt
Ymx5RmlsZVZlcnNpb25BdHRyaWJ1dGUAR3VpZEF0dHJpYnV0ZQBBc3NlbWJseVRyYWRlbWFya0F0
dHJpYnV0ZQBBc3NlbWJseUNvcHlyaWdodEF0dHJpYnV0ZQBBc3NlbWJseVByb2R1Y3RBdHRyaWJ1
dGUAQXNzZW1ibHlDb21wYW55QXR0cmlidXRlAEFzc2VtYmx5RGVzY3JpcHRpb25BdHRyaWJ1dGUA
QXNzZW1ibHlUaXRsZUF0dHJpYnV0ZQBTY3JpcHRDb21wb25lbnRfMzRkZTZhMjg1MmY3NDA0OGFk
Y2Q5MTNiOWU5MDVhMjUudmJwcm9qLmRsbAAAAICbSQBzAE4AdQBsAGwAIABwAHIAbwBwAGUAcgB0
AHkAIABjAGEAbgBuAG8AdAAgAGIAZQAgAHMAZQB0ACAAdABvACAARgBhAGwAcwBlAC4AIABBAHMA
cwBpAGcAbgAgAGEAIAB2AGEAbAB1AGUAIAB0AG8AIAB0AGgAZQAgAGMAbwBsAHUAbQBuACAAaQBu
AHMAdABlAGEAZAAuAAARQwBoAGUAYwBrAHMAdQBtAAALSQBuAHAAdQB0AAAFXAAwAAAFXABuAAAr
UwBlAGwAZQBjAHQAIABpAG4AcAB1AHQAIABjAG8AbAB1AG0AbgBzAC4AAAUsAA0AADFNAHkALgBS
AGUAcwBvAHUAcgBjAGUAcwAuAE0AeQBSAGUAcwBvAHUAcgBjAGUAcwAAQ9bfgzKuh0S1nvw2dDG2
dQAIt3pcVhk04IkIsD9ffxHVCjoDIAABAwAAAQQAABIMBwYVEhgBEgwEAAASCAcGFRIYARIIBAAA
EhEHBhUSGAESEQQAABIUBwYVEhgBEhQECAASDAQIABIIBAgAEhEECAASFAQgAQIcAyAACAQgABIV
AyAADgIeAAcQAQEeAB4ABzABAQEQHgACEwAEIAATAAcGFRIZARMABCgAEwAIFs9JC7gMNOoIiYRd
zYCAzJEJIAQBEiEIAhIlBCAAHQ4EIAEBCAQgAQECAyAAAgQoAB0OAygACAMoAAIDBhIkAwYSKAYg
AgEIEiUFIAEBEhwDBhIhBSABARIhBCABAQkFIAIBCQIHIAMBHQUICAQgAB0FBiABHQUSMQYgAR0F
HQUIIAMdBR0FCAgDAAAJAwAAAgQAAQECBQABHQkJAgYJAwYSNQIGAgMGHQkDCAAJAwgAAgIGDgQs
AA0ABSABAhAOBCABAQ4DBhI5AwYSLAMGHQgDKAAOCCADHBJBEkUcBiABEUkSQQYgAgIdDg4HIAIC
EkESFQMGElEDBhJVBAAAElEEAAASVQUAAQESVQQIABJRBAgAElUDBhJAAgYcBAAAEkAECAASQAUg
AQERYQgBAAEAAAAAAAUgAgEODhcBAApNeVRlbXBsYXRlBzguMC4wLjAAAAQBAAAABhUSGAESDAYV
EhgBEggGFRIYARIRBhUSGAESFAQHARIMBAcBEggEBwESEQQHARIUEAEAC015LkNvbXB1dGVyAAAM
AQAHTXkuVXNlcgAAEwEADk15LldlYlNlcnZpY2VzAAATAQAOTXkuQXBwbGljYXRpb24AAAQAARwc
AwcBAgMHAQgGAAESFRF9BAcBEhUDBwEOBRABAB4ABAoBHgAEBwEeAAcgBAEODg4OYQEANFN5c3Rl
bS5XZWIuU2VydmljZXMuUHJvdG9jb2xzLlNvYXBIdHRwQ2xpZW50UHJvdG9jb2wSQ3JlYXRlX19J
bnN0YW5jZV9fE0Rpc3Bvc2VfX0luc3RhbmNlX18AAAAGFRIYARMABhUSGQETAAQKARMABSABARMA
BgcCEwATAAUBAAAAAAQHAR0OBSACAQgcBgcCHQ4dDgUgABKAoQUgABKApQYgARKAqRwGAAESNRI1
AgYIBCABHBwCHQkFIAIBHBwFBwMICwgHBwMLHQUdBQcgAwgdBQgIBwcDHQUdBQgEBwEdBQMHAQkJ
BwUdCQkdCQgIBCAAEiUEIAECCAUgARI5DgQgARwIBQAAEoC1BSABHQUOBgACCB0FCAYHBAgICAgF
IAASgL0FIAASgMEFIAASgMUGIAESgMkcBSACCAgICAcECBKAqQgIBAABAg4JIAIdDh0OEYDdBSAA
EoDNBSAAEoDhBiABEoDRHAcgAggIEYDlBgABARKA1RgHCwICEoCpHQ4SgM0OEoDREoDVHQ4IHQ4N
AQAIVmFsaWRhdGUAAAUgAQESFVgBAFNTY3JpcHRDb21wb25lbnRfMzRkZTZhMjg1MmY3NDA0OGFk
Y2Q5MTNiOWU5MDVhMjUudmJwcm9qLlNjcmlwdE1haW4rQ29sdW1uc0NvbnZlcnRlcgAAByACARIV
EhWAywEAUFNjcmlwdENvbXBvbmVudF8zNGRlNmEyODUyZjc0MDQ4YWRjZDkxM2I5ZTkwNWEyNS52
YnByb2ouU2NyaXB0TWFpbitDb2x1bW5zRWRpdG9ydVN5c3RlbS5EcmF3aW5nLkRlc2lnbi5VSVR5
cGVFZGl0b3IsIFN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJh
bCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQAAJwEAIlNlbGVjdCBpbnB1dCBjb2x1
bW5zIGZvciBjaGVja3N1bS4AAAMgABwFIAASgREFIAEcEhUGIAEcEoERBAABDhwGIAEBEYEdBSAA
EoENBSAAEoEhBSACCBwCBiABARKBKQUgABKBLQcQAQEBHR4AAwoBDgYAAg4OHQ4hBxAcHBKBARIw
EoEFEoEJCB0OEoDNEoDRAg4IHQ4SgQ0IBAcBEUkGAAMIDg4CCAcFAgIOCB0OBSAAEoE5ByACAQ4S
gTkGBwISURJRBAcBElUIAQACAAAAAAAEAAEBHAQHARJACAEACAAAAAAAHgEAAQBUAhZXcmFwTm9u
RXhjZXB0aW9uVGhyb3dzAQwBAAcxLjAuMC4wAAApAQAkODE2NDA2ZGYtNTY2NS00NTlhLWExZmEt
NGViOTJhNGUyOTUxAAAFAQABAAAfAQAaQ29weXJpZ2h0IEAgTWljcm9zb2Z0IDIwMTAAADwBADdT
Y3JpcHRDb21wb25lbnRfMzRkZTZhMjg1MmY3NDA0OGFkY2Q5MTNiOWU5MDVhMjUudmJwcm9qAAAO
AQAJTWljcm9zb2Z0AAAAAAAAVwAAAAAAAAAAAAAeVwAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
EFcAAAAAAAAAAAAAAAAAAAAAX0NvckRsbE1haW4AbXNjb3JlZS5kbGwAAAAAAP8lACBAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAAAKAAAgA4AAABI
AACAEAAAAGAAAIAAAAAAAAAAAAAAAAAAAAIAAgAAAHgAAIADAAAAkAAAgAAAAAAAAAAAAAAAAAAA
AQAAfwAAqAAAgAAAAAAAAAAAAAAAAAAAAQABAAAAwAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAA2AAA
AAAAAAAAAAAAAAAAAAAAAQAAAAAA6AAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA+AAAAAAAAAAAAAAA
AAAAAAAAAQAAAAAACAEAAIBlAADoAgAAAAAAAAAAAABoaAAAKAEAAAAAAAAAAAAAkGkAACIAAAAA
AAAAAAAAABhhAABoBAAAAAAAAAAAAABoBDQAAABWAFMAXwBWAEUAUgBTAEkATwBOAF8ASQBOAEYA
TwAAAAAAvQTv/gAAAQAAAAEAAAAAAAAAAQAAAAAAPwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAA
AEQAAAABAFYAYQByAEYAaQBsAGUASQBuAGYAbwAAAAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkA
bwBuAAAAAAAAALAEyAMAAAEAUwB0AHIAaQBuAGcARgBpAGwAZQBJAG4AZgBvAAAApAMAAAEAMAAw
ADAAMAAwADQAYgAwAAAANAAKAAEAQwBvAG0AcABhAG4AeQBOAGEAbQBlAAAAAABNAGkAYwByAG8A
cwBvAGYAdAAAAJgAOAABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAABTAGMAcgBp
AHAAdABDAG8AbQBwAG8AbgBlAG4AdABfADMANABkAGUANgBhADIAOAA1ADIAZgA3ADQAMAA0ADgA
YQBkAGMAZAA5ADEAMwBiADkAZQA5ADAANQBhADIANQAuAHYAYgBwAHIAbwBqAAAAMAAIAAEARgBp
AGwAZQBWAGUAcgBzAGkAbwBuAAAAAAAxAC4AMAAuADAALgAwAAAAmAA8AAEASQBuAHQAZQByAG4A
YQBsAE4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfADMANABkAGUANgBh
ADIAOAA1ADIAZgA3ADQAMAA0ADgAYQBkAGMAZAA5ADEAMwBiADkAZQA5ADAANQBhADIANQAuAHYA
YgBwAHIAbwBqAC4AZABsAGwAAABcABsAAQBMAGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAABD
AG8AcAB5AHIAaQBnAGgAdAAgAEAAIABNAGkAYwByAG8AcwBvAGYAdAAgADIAMAAxADAAAAAAAKAA
PAABAE8AcgBpAGcAaQBuAGEAbABGAGkAbABlAG4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBw
AG8AbgBlAG4AdABfADMANABkAGUANgBhADIAOAA1ADIAZgA3ADQAMAA0ADgAYQBkAGMAZAA5ADEA
MwBiADkAZQA5ADAANQBhADIANQAuAHYAYgBwAHIAbwBqAC4AZABsAGwAAACQADgAAQBQAHIAbwBk
AHUAYwB0AE4AYQBtAGUAAAAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AMwA0AGQA
ZQA2AGEAMgA4ADUAMgBmADcANAAwADQAOABhAGQAYwBkADkAMQAzAGIAOQBlADkAMAA1AGEAMgA1
AC4AdgBiAHAAcgBvAGoAAAA0AAgAAQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4AAAAxAC4A
MAAuADAALgAwAAAAOAAIAAEAQQBzAHMAZQBtAGIAbAB5ACAAVgBlAHIAcwBpAG8AbgAAADEALgAw
AC4AMAAuADAAAAAoAAAAIAAAAEAAAAABAAQAAAAAAIACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
gAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAd3d3d3d3d3d3d3d3d3dwBEREREREREREREREREREcAT/////////////////9HAE
//////////////////RwBP/////////////////0cAT/////////////////9HAE////////////
//////RwBP/////////////////0cAT/////////////////9HAE//////////////////RwBP//
///////////////0cAT/////////////////9HAE//////////////////RwBP//////////////
///0cAT/////////////////9HAE//////////////////RwBP/////////////////0cAT/////
////////////9HAE//////////////////RwBP/////////////////0cASIiIiIiIiIiIiIiIiI
hHAERERERERERERERERERERwBExMTExMTExMTE7Ozkl0cATMzMzMzMzMzMzMzMzMxAAARERERERE
REREREREREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
/////////////////////8AAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGA
AAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAA8AA
AAf///////////////8oAAAAEAAAACAAAAABAAQAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA
////AAAAAAAAAAAAB3d3d3d3d3dERERERERER0////////hHT///////+EdP///////4R0//////
//hHT///////+EdP///////4R0////////hHT///////+EdIiIiIiIiIR0zMzMzMzMxHxERERERE
RMAAAAAAAAAAAAAAAAAAAAAA//8AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAABAAD//wAA//8AAAAAAQACACAgEAABAAQA6AIAAAIAEBAQAAEABAAoAQAA
AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAADAAAADA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></arrayElement></arrayElements></property>
<property id="85" 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_34de6a2852f74048adcd913b9e905a25</property>
<property id="86" 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>
<property id="92" 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></properties>
<inputs>
<input id="93" name="Input" description="" hasSideEffects="true" dangling="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="False" /></input>
</inputs>
<outputs>
<output id="94" name="Output" description="" exclusionGroup="0" synchronousInputId="93" deleteOutputOnPathDetached="false" hasSideEffects="false" dangling="false" isErrorOut="false" isSorted="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><outputColumns>
<outputColumn id="95" name="Checksum" description="" lineageId="95" precision="0" scale="0" length="0" dataType="i4" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed" externalMetadataColumnId="0" mappedColumnId="0" /></outputColumns><externalMetadataColumns isUsed="False" /></output>
</outputs>
</component>