<component id="17" name="Column Encryption" componentClassID="{874F7595-FB5F-40FF-96AF-FBFF8250E3EF}" description="Executes a custom script." localeId="1033" version="7" contactInfo="Executes a custom script.;Microsoft Corporation;Microsoft SqlServer v9; © 2004 Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;0"><properties><property id="18" name="SourceCode" state="cdata" dataType="System.String" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="30"><arrayElement dataType="System.String"><![CDATA[My Project\Settings.Designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On



Partial Friend NotInheritable Class MySettings
    Inherits System.Configuration.ApplicationSettingsBase

    Private Shared m_Value As MySettings

    Private Shared m_SyncObject As Object = New Object

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

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

' Review the values of the assembly attributes

<Assembly: AssemblyTitle("ScriptComponent_3d2264e1d41345ed8285b6454247d735.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_3d2264e1d41345ed8285b6454247d735.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2013")> 
<Assembly: AssemblyTrademark("")> 
<Assembly: CLSCompliant(True)> 

<Assembly: ComVisible(False)> 

'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("fb12c2fe-f991-4db6-9a41-c0ac23fc40b1")> 

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

<Assembly: AssemblyVersion("1.0.0.0")> 
<Assembly: AssemblyFileVersion("1.0.0.0")> 
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ComponentWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services component wrapper
' This module defines the base class for your component
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class UserComponent
    Inherits ScriptComponentPlus

    Public Connections As New Connections(Me)
    Public Variables As New Variables(Me)

    Public Overrides Sub ProcessInput(ByVal InputID As Integer, ByVal InputName As String, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)

        If InputID = MyBase.ComponentMetaData.InputCollection("Input").ID Then
            Input_ProcessInput(New InputBuffer(Me, InputID, True, Buffer, OutputMap))
        End If

    End Sub

    Public Overridable Sub Input_ProcessInput(ByVal Buffer As InputBuffer)

        While Buffer.NextRow()
            Input_ProcessInputRow(Buffer)
        End While

    End Sub

    Public Overridable Sub Input_ProcessInputRow(ByVal Row As InputBuffer)

    End Sub

End Class

Public Class Connections

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class

Public Class Variables

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[scriptcomponent_3d2264e1d41345ed8285b6454247d735.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-16"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!-- This section defines project-level properties.

       Configuration - Specifies whether the default configuration is Release or Debug.
       Platform - Specifies what CPU the output of this project can run on.
       OutputType - Must be "Library" for VSTA.
       NoStandardLibraries - Set to "false" for VSTA.
       RootNamespace - In C#, this specifies the namespace given to new files.
                       In Visual Basic, all objects are wrapped in this namespace at runtime.
       AssemblyName - Name of the output assembly.
  -->
  <PropertyGroup>
    <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <OutputType>Library</OutputType>
    <RootNamespace>ScriptComponent_3d2264e1d41345ed8285b6454247d735.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_3d2264e1d41345ed8285b6454247d735.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{690A63FC-9E11-4F3D-95E8-A6864D3F9D73}</ProjectGuid>
  </PropertyGroup>
  <!-- This section defines properties that are set when the "Debug" configuration is
       selected.

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

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

       Compile - Specifies a source file to compile.
       EmbeddedResource - Specifies a .resx file for embedded resources.
       None - Specifies a file that is not to be passed to the compiler (for instance,
              a text file or XML file).
       AppDesigner - Specifies the directory where the application properties files can
                     be found.
  -->
  <ItemGroup>
    <AppDesigner Include="My Project\" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
    <Compile Include="main.vb" />
    <Compile Include="My Project\AssemblyInfo.vb">
      <SubType>Code</SubType>
    </Compile>
    <EmbeddedResource Include="My Project\Resources.resx">
      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.vb</LastGenOutput>
      <CustomToolNamespace>My.Resources</CustomToolNamespace>
    </EmbeddedResource>
    <Compile Include="My Project\Resources.Designer.vb">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resources.resx</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <None Include="My Project\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.vb</LastGenOutput>
    </None>
    <Compile Include="My Project\Settings.Designer.vb">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <!-- Include the default configuration information and metadata files for the add-in.
         These files are copied to the build output directory when the project is
         built, and the path to the configuration file is passed to add-in on the command
         line when debugging.
    -->
  </ItemGroup>
  <!-- Include the build rules for a VB project.-->
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <!-- This section defines VSTA properties that describe the host-changable project properties. -->
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{30D016F9-3734-4E33-A861-5E7D899E18F3}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{B3A685AA-7EAF-4BC6-9940-57959FA5AC07}" ApplicationType="usd" Language="vb" TemplatesPath="" DebugInfoExeName="devenv.exe" DebugInfoCommandLine="/vstaHostDebugUri:&quot;vstadebugfcff0a08-3172-4156-9fe6-a1b50757c68a/9e7bac10-63c0-4946-b30b-20a0fe98fdb8&quot;" />
        <Host Name="SSIS_ScriptComponent" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC110</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <PropertyGroup>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
  </PropertyGroup>
  <PropertyGroup>
    <TargetFrameworkProfile>
    </TargetFrameworkProfile>
  </PropertyGroup>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[BufferWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class InputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overloads Function NextRow() As Boolean
        NextRow = MyBase.NextRow()
    End Function

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[main.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' COZYROC SQL Server Integration Services user script component
'
' Copyright (c) 2006-2013 COZYROC LLC
' 
' Permission is hereby granted, free of charge, to any person
' obtaining a copy of this software and associated documentation
' files (the "Software"), to deal in the Software without
' restriction, including without limitation the rights to use,
' copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the
' Software is furnished to do so, subject to the following
' conditions:
' 
' The above copyright notice and this permission notice shall be
' included in all copies or substantial portions of the Software.
' 
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
' OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
' HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
' WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
' FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
' OTHER DEALINGS IN THE SOFTWARE.

Imports System
Imports System.ComponentModel
Imports System.Collections
Imports System.Drawing.Design
Imports System.Windows.Forms.Design
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates
Imports System.Text
Imports System.IO

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


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<SortProperties(New String() { _
    "InputColumns", "Action", "EncryptionType", _
    "IsCertificateFileVariable", "CertificateFile", "CertificateFileVariable", _
    "IsPasswordVariable", "Password", "PasswordVariable"})> _
<ValidateProperties("Validate")> _
<FilterProperties("GetProperties")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    Private Const ColumnSeparator As String = "," + vbLf
    Private Const Salt As String = "7ADC83D055D6459c8C1793C8D41A36FE"


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Dim colsCount As Integer = m_inputIdx.Length

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

            If Row.Buffer.IsNull(bufIndex) Then
                Continue For
            End If

            Dim blob As BlobColumn = CType(Row.Buffer(bufIndex), BlobColumn)
            Dim data() As Byte = blob.GetBlobData(0, CInt(blob.Length))

            Select Case Me.EncryptionType
                Case EncryptionTypes.AES, EncryptionTypes.TripleDES, _
                    EncryptionTypes.DES, EncryptionTypes.RC2

                    ' Setup crypto stream.
                    Dim cs As CryptoStream
                    Dim ms As New MemoryStream
                    Dim sAlg As SymmetricAlgorithm = CType(m_encryptor, SymmetricAlgorithm)
                    If Me.Action = ActionTypes.Encryption Then
                        cs = New CryptoStream(ms, sAlg.CreateEncryptor(), CryptoStreamMode.Write)
                    Else
                        cs = New CryptoStream(ms, sAlg.CreateDecryptor(), CryptoStreamMode.Read)
                    End If

                    Try
                        Call cs.Write(data, 0, data.Length)
                    Finally
                        Call cs.Dispose()
                    End Try

                    data = ms.ToArray()

                Case EncryptionTypes.RSA
                    Dim rsaCer As X509Certificate2 = CType(m_encryptor, X509Certificate2)

                    Dim rsaCsp As RSACryptoServiceProvider
                    If Me.Action = ActionTypes.Encryption Then
                        rsaCsp = CType(rsaCer.PublicKey.Key, RSACryptoServiceProvider)
                        data = rsaCsp.Encrypt(data, True)
                    Else
                        rsaCsp = CType(rsaCer.PrivateKey, RSACryptoServiceProvider)
                        data = rsaCsp.Decrypt(data, True)
                    End If

                    ' RSACryptoServiceProvider reverses the order of encrypted bytes.
                    ' Reverse back to make the data compatible with CAPI.
                    Call Array.Reverse(data)
            End Select

            ' Set new column data.
            Call blob.ResetBlobData()
            Call blob.AddBlobData(data)
        Next
    End Sub ' Input_ProcessInputRow


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

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

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

        m_encryptor = CreateEncryptor_()
    End Sub ' PreExecute


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

        Try
            If Me.EncryptionType <> EncryptionTypes.RSA AndAlso _
                String.IsNullOrEmpty(Me.Password) Then
                Throw New Exception("Specify password.")
            End If

            If Me.EncryptionType = EncryptionTypes.RSA AndAlso _
                String.IsNullOrEmpty(Me.CertificateFile) Then

                Throw New Exception("Specify certificate file.")
            End If

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

            ' Setup input columns based on selection.
            Dim selectedCols() As String = CStr(Me.InputColumns).Split( _
                New String() {ColumnSeparator}, _
                StringSplitOptions.None)
            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_READWRITE)
                End If
            Next

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

        Validate = result
    End Function    'Validate


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

        ' Setup static.
        Call result.Add("InputColumns")
        Call result.Add("Action")
        Call result.Add("EncryptionType")
        Call result.Add("IsPasswordVariable")

        ' Setup dynamic.
        Call result.Add(IIf(Me.IsPasswordVariable, "PasswordVariable", "Password"))

        If Me.EncryptionType = EncryptionTypes.RSA Then
            Call result.Add("IsCertificateFileVariable")
            Call result.Add(IIf( _
                Me.IsCertificateFileVariable, _
                "CertificateFileVariable", _
                "CertificateFile"))
        End If

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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns only columns with type DT_IMAGE.
    Public Function GetInputColumns() As Object()
        Dim result As New ArrayList

        Dim virtInput As IDTSVirtualInput100 = MyBase.ComponentMetaData.InputCollection(0).GetVirtualInput()
        For Each virtColumn As IDTSVirtualInputColumn100 In virtInput.VirtualInputColumnCollection
            If virtColumn.DataType = DataType.DT_IMAGE Then
                Call result.Add(virtColumn.Name)
            End If
        Next

        Call result.Sort()

        GetInputColumns = result.ToArray()
    End Function    ' GetInputColumns


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select input columns you want to process.")> _
    <List("GetInputColumns", True, False)> _
    Public Property InputColumns() As String
        Get
            InputColumns = m_inputCols
        End Get
        Set(ByVal value As String)
            Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
            If Not input.IsAttached Then
                ' Reset when no input is attached.
                value = String.Empty
            End If

            m_inputCols = value
        End Set
    End Property    ' InputColumns


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select action.")> _
    Public Property Action() As ActionTypes
        Get
            Action = m_action
        End Get
        Set(ByVal value As ActionTypes)
            m_action = value
        End Set
    End Property    ' Action


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select encryption type.")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property EncryptionType() As EncryptionTypes
        Get
            EncryptionType = m_type
        End Get
        Set(ByVal value As EncryptionTypes)
            m_type = value
        End Set
    End Property    ' EncryptionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies if Password property references package variable.")> _
    <RefreshProperties(RefreshProperties.All)> _
    <NonEssential()> _
    Public Property IsPasswordVariable() As Boolean
        Get
            IsPasswordVariable = m_isPasswordVar
        End Get
        Set(ByVal value As Boolean)
            If m_isPasswordVar <> value Then
                m_isPasswordVar = value
                m_password = String.Empty
            End If
        End Set
    End Property    ' IsPasswordVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specify password.")> _
    <PasswordPropertyText(True)> _
    Public Property Password() As String
        Get
            Password = m_password
        End Get
        Set(ByVal value As String)
            m_password = value
        End Set
    End Property    ' Password


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies variable containing password.")> _
    <Variable()> _
    Public Property PasswordVariable() As String
        Get
            PasswordVariable = m_password
        End Get
        Set(ByVal value As String)
            m_password = value
        End Set
    End Property    ' PasswordVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies if CertificateFile property references package variable.")> _
    <RefreshProperties(RefreshProperties.All)> _
    <NonEssential()> _
    Public Property IsCertificateFileVariable() As Boolean
        Get
            IsCertificateFileVariable = m_isCertificateVar
        End Get
        Set(ByVal value As Boolean)
            If m_isCertificateVar <> value Then
                m_isCertificateVar = value
                m_certificate = String.Empty
            End If
        End Set
    End Property    ' IsCertificateFileVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select certificate file (.cer|.pem)")> _
    <Editor(GetType(FileNameEditor), GetType(UITypeEditor))> _
    Public Property CertificateFile() As String
        Get
            CertificateFile = m_certificate
        End Get
        Set(ByVal value As String)
            m_certificate = value
        End Set
    End Property    ' CertificateFile


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies variable containing certificate file.")> _
    <Variable()> _
    Public Property CertificateFileVariable() As String
        Get
            CertificateFileVariable = m_certificate
        End Get
        Set(ByVal value As String)
            m_certificate = value
        End Set
    End Property    ' CertificateFileVariable
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetVariable_(ByVal varName As String) As Object
        Dim result As Object
        Dim vars As IDTSVariables100 = Nothing

        Call Me.VariableDispenser.LockOneForRead(varName, vars)
        Try
            result = vars(varName).Value
        Finally
            Call vars.Unlock()
        End Try

        GetVariable_ = result
    End Function    ' GetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function CreateEncryptor_() As Object
        Dim result As Object

        ' Get password.
        Dim password As String = Me.Password
        If Me.IsPasswordVariable AndAlso _
            Not String.IsNullOrEmpty(Me.PasswordVariable) Then

            password = GetVariable_(Me.PasswordVariable).ToString()
        End If

        If password = "" Then
            password = Nothing
        End If

        ' Setup key derivation from password.
        Dim der As New Rfc2898DeriveBytes( _
            Me.Password, _
            Encoding.ASCII.GetBytes(Salt))

        Select Case Me.EncryptionType
            Case EncryptionTypes.AES
                Dim aes As Rijndael = Rijndael.Create()
                aes.Key = der.GetBytes(32)
                aes.IV = der.GetBytes(16)
                result = aes

            Case EncryptionTypes.RSA
                ' Get certificate file.
                Dim cerFile As String = Me.CertificateFile
                If Me.IsCertificateFileVariable AndAlso _
                    Not String.IsNullOrEmpty(Me.CertificateFileVariable) Then

                    cerFile = GetVariable_(Me.CertificateFileVariable).ToString()
                End If

                Dim cer As X509Certificate2 = New X509Certificate2(cerFile, password)
                If Me.Action = ActionTypes.Decryption AndAlso cer.PrivateKey Is Nothing Then
                    Throw New Exception("Private key not found.")
                End If

                result = cer

            Case EncryptionTypes.TripleDES
                Dim tripleDes As TripleDES = TripleDESCryptoServiceProvider.Create()
                tripleDes.Key = der.GetBytes(24)
                tripleDes.IV = der.GetBytes(8)
                result = tripleDes

            Case EncryptionTypes.DES
                Dim des As DES = des.Create()
                des.Key = der.GetBytes(8)
                des.IV = der.GetBytes(8)
                result = des

            Case EncryptionTypes.RC2
                Dim rc2 As RC2 = rc2.Create()
                rc2.Key = der.GetBytes(16)
                rc2.IV = der.GetBytes(8)
                result = rc2

            Case Else
                Throw New Exception("Unhandled encryption type.")
        End Select

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


#Region "Attributes"
    Public Enum ActionTypes
        Encryption
        Decryption
    End Enum    ' ActionTypes

    Public Enum EncryptionTypes
        AES
        RSA
        TripleDES
        DES
        RC2
    End Enum    ' EncryptionTypes

    Private m_inputCols As String = String.Empty
    Private m_action As ActionTypes = ActionTypes.Encryption
    Private m_type As EncryptionTypes = EncryptionTypes.AES
    Private m_isPasswordVar As Boolean
    Private m_password As String
    Private m_isCertificateVar As Boolean
    Private m_certificate As String

    Private m_inputIdx() As Integer
    Private m_encryptor As Object
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Project]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<c:Project xmlns:c="http://schemas.microsoft.com/codeprojectml/2010/08/main" xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" runtimeVersion="4.0" schemaVersion="1.0">
	<msb:PropertyGroup>
		<msb:Language>msBuild</msb:Language>
		<msb:NoContent>Reference;Import;Folder</msb:NoContent>
		<msb:ProjectId>{0B647B8A-C266-4349-80BC-302A0D233466}</msb:ProjectId>
		<msb:DisplayName>scriptcomponent_3d2264e1d41345ed8285b6454247d735</msb:DisplayName>
		<msb:CodeName>scriptcomponent_3d2264e1d41345ed8285b6454247d735</msb:CodeName>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:File Include="BufferWrapper.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="main.vb"/>
		<msb:File Include="My Project\AssemblyInfo.vb"/>
		<msb:File Include="My Project\Resources.Designer.vb"/>
		<msb:File Include="My Project\Settings.Designer.vb"/>
		<msb:File Include="My Project\Resources.resx"/>
		<msb:File Include="My Project\Settings.settings"/>
		<msb:Project Include="scriptcomponent_3d2264e1d41345ed8285b6454247d735.vbproj"/>
	</msb:ItemGroup>
</c:Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Settings.settings]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version='1.0' encoding='iso-8859-1'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)" GeneratedClassNamespace="" GeneratedClassName="MySettings">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Resources.resx]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Resources.Designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On


Namespace My.Resources
    
    '''<summary>
    '''   A strongly-typed resource class, for looking up localized strings, etc.
    '''</summary>
    'This class was auto-generated by the Strongly Typed Resource Builder
    'class via a tool like ResGen or Visual Studio.NET.
    'To add or remove a member, edit your .ResX file then rerun ResGen
    'with the /str option, or rebuild your VS project.
    Class MyResources
        
        Private Shared _resMgr As System.Resources.ResourceManager
        
        Private Shared _resCulture As System.Globalization.CultureInfo
        
        Friend Sub New()
            MyBase.New
        End Sub
        
        '''<summary>
        '''   Returns the cached ResourceManager instance used by this class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared ReadOnly Property ResourceManager() As System.Resources.ResourceManager
            Get
                If (_resMgr Is Nothing) Then
                    Dim temp As System.Resources.ResourceManager = New System.Resources.ResourceManager("My.Resources.MyResources", GetType(MyResources).Assembly)
                    _resMgr = temp
                End If
                Return _resMgr
            End Get
        End Property
        
        '''<summary>
        '''   Overrides the current thread's CurrentUICulture property for all
        '''   resource lookups using this strongly typed resource class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared Property Culture() As System.Globalization.CultureInfo
            Get
                Return _resCulture
            End Get
            Set
                _resCulture = value
            End Set
        End Property
    End Class
End Namespace
]]></arrayElement></arrayElements></property><property id="19" name="BinaryCode" state="cdata" dataType="System.String" isArray="true" description="Stores the binary representation of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="2"><arrayElement dataType="System.String"><![CDATA[ScriptComponent_3d2264e1d41345ed8285b6454247d735.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
b3VyY2VzLlJ1bnRpbWVSZXNvdXJjZVNldAIAAAAAAAAAAAAAAFBBRFBBRFC0AAAAQlNKQgEAAQAA
AAAADAAAAHY0LjAuMzAzMTkAAAAABQBsAAAAWBAAACN+AADEEAAAJBUAACNTdHJpbmdzAAAAAOgl
AABsAgAAI1VTAFQoAAAQAAAAI0dVSUQAAABkKAAAuAkAACNCbG9iAAAAAAAAAAIAAAFXHaIJCQ8A
AAD6JTMAFgAAAQAAAGIAAAAPAAAAIQAAADwAAAAdAAAAjAAAAAkAAABQAAAAIwAAAAYAAAATAAAA
HQAAAAoAAAABAAAACgAAAAEAAAAEAAAAAwAAAAIAAAAAAOYUAQAAAAAACgDFAZsBCgD5AdsBBgAJ
AgICCgBhApsBBgDfAgICCgBhAzcDDgCzA5wDEgACBOEDFgAzBOEDEgBCBOEDDgDmBJwDBgBBCAIC
BgCPCH4IBgC8CKcIGgAjCQ4JGgBwCVoJGgCJCVoJGgC2CZ4JBgDgCc0JCgAfCvgJCgA3ChMAGgBs
Ck8KBgChCoEKBgC/CgICBgDjCgICCgD8ChMABgBACyELBgBUCwICEgBbC+EDBgBoCwICHgDLC6IL
HgD6C6ILHgAlDKILFgBIDOEDBgBwDFMMBgCHDH0MBgCUDFMMGgDVDKcMBgDmDFMMBgAoDVMMBgBJ
DX0MBgBQDVMMGgCHDacMBgCfDVMMBgDaDQICBgACDgICHgAIDqILFgBJDuEDHgBtDqILHgCUDqIL
HgDLDqILHgDfDqILBgD5DgICBgARDwICHgBED6ILHgCJD6ILCgCjD/gJBgDwD90PCgD+DxMABgAO
EN0PIgB/EFcQBgCnEAICIgDHEFcQIgDYEFcQIgAWEVcQBgAtEVMMBgBAEVMMBgBsCFMMBgB2CFMM
BgB6CFMMCgBJEfgJBgBtEWEREgCfEeEDDgDoEcYRDgACEsYRDgAeEsYRDgA2EsYRGgBMEloJGgBn
EloJGgB5EloJDgCOEsYRGgCgEloJGgDbEloJDgDrEsYRBgALE/kSBgAyEyETBgBFE80JBgCuE4EK
BgDOE4EKBgAGFOwTBgAfFPkSBgA8FCELBgBKFPkSBgBlFPkSBgCAFPkSBgCZFPkSBgCyFPkSBgDP
FPkSAAAAAAEAAAAAAAEAAQAAAAAAKQA3AAUAAQABAAAAAAByADcACQABAAIAAAEQAH0ANwANAAEA
AwAFAQAAhwAAAA0ABQAIAAUBAACVAAAADQAFAA8AAQAAALAAvAAdAAYAEQABAAAA9AC8AC0ABgAW
AAEAAAACAbwADQAIABoAAQAAAA4BvAANAAkAGwABAAAAGAG8ACAACgAcAAIBAAAjAQAAMQAVADYA
AgEAAC8BAAAxABgANgAAAAAAPwFLAQ0AHgA2AAABEACQAbwAPQAgADoAMQAkAiAAMQBNAi0AMQBv
AjoAMQCUAkcAIQBwA5AABgACAckABgAOAc0AAQBGBeEAAQBGBeEAUYBWBesAUYBmBesAAQBAB+sA
AQBMB2gBAQBVB2wBAQBcB3ABAQBsB+sAAQB3B3ABAQCKB+sAAQCYB3MBAQCjB3cBBgZGCIwBVoBO
CGgBVoBZCGgBBgZGCIwBVoBkCGwBVoBoCGwBVoBsCGwBVoB2CGwBVoB6CGwBEQCfCKgBEQDICKwB
EQA7CcoBEQBDCXcBUCAAAAAABhjVARMAAQBYIAAAAAAGGNUBEwABAGAgAAAAABEYEAIXAAEAjCAA
AAAAEwgXAhsAAQCkIAAAAAATCD0CKAABALwgAAAAABMIZgI1AAEA1CAAAAAAEwiEAkIAAQDsIAAA
AABGAsoCYwABAAghAAAAAEYC0wJoAAIAHCEAAAAAgwDkAmwAAgA0IQAAAABGAuwCcQACAEghAAAA
ABEA9QJ4AAIAZCEAAAAAAQATA4AAAwCAIQAAAAAGGNUBEwAEAIghAAAAAAMIJwOLAAQAvCEAAAAA
BhjVARMABADQIQAAAAAGGNUBrwAEAOAhAAAAAEYKfAS7AAkA9CEAAAAARgqTBLsACQAIIgAAAACG
AKsEwAAJACAiAAAAAIYAswTAAAkAOCIAAAAABhjVARMACQBYIgAAAABGAvoE0QAJAIgiAAAAAEYD
GQXbAA0AnCIAAAAARgMsBdsADgCgIgAAAAAGGNUB5QAPALAiAAAAAAYY1QHlABAAwCIAAAAABhjV
ARMAEQDkIgAAAABGAiwF2wARAFAkAAAAAEYCawUTABIA7CQAAAAABgB2BTQBEgD8JQAAAAAGAIoF
uwATAKwmAAAAAAYAmAU6ARMAUCcAAAAABgioBXEAEwBoJwAAAAAGCLkFPwETAKQnAAAAAAYI0AVE
ARQAvCcAAAAABgjbBUkBFADIJwAAAAAGCOYFTwEVAOAnAAAAAAYI+QVUARUA7CcAAAAABggMBsAA
FgAEKAAAAAAGCCMGWgEWACQoAAAAAAYIOgZxABcAPCgAAAAABghHBj8BFwBIKAAAAAAGCFQGcQAY
AGAoAAAAAAYIaQY/ARgAbCgAAAAABgh+BsAAGQCEKAAAAAAGCJwGWgEZAKQoAAAAAAYIugZxABoA
vCgAAAAABgjOBj8BGgDIKAAAAAAGCOIGcQAbAOAoAAAAAAYI/gY/ARsA7CgAAAAAAQAaB18BHAA8
KQAAAAABAC8HZAEdAOAqAAAAAAMY1QETAB0A6CoAAAAAFgjUCLABHQAkKwAAAAAWCOgItQEdADgr
AAAAABYI9Ai6AR0AQCsAAAAAERgQAhcAHgBUKwAAAAAGGNUBEwAeAFwrAAAAABYIUAnOAR4AAAAB
ANECAAABAAoDAAABAAoDAAABAFAEAAACAFoEAAADAGMEAAAEAGsEAAAFAHIEAAABAAcFAAACAA8F
AAADAGsEAAAEAHIEAAABAGsEAAABAEIFAAABAFAEAAABAFAEAAABAEIFAAABAH8FAAABAMoFAAAB
AMoFAAABAMoFAAABAMoFAAABAMoFAAABAMoFAAABAMoFAAABAMoFAAABAMoFAAABACcHAAABAAAJ
CQDVARMAgQDVAdgBkQDVAecBEQDVARMAmQDVARMAJADVARMALADVARMANADVARMAPADVARMAJAAn
A4sALAAnA4sANAAnA4sAPAAnA4sAoQDVARMAqQDVARMAsQDVAT8BuQCwCnwCGQDKAmMAGQDTAmgA
KQDRCokCGQDsAnEAyQDtCpkCGQDVARMA0QDVAakCRABwA5AATABQCYsATAAXCyYDTADVARMA2QDV
AVoBOQDVAa8A6QCrBMAA6QCzBMAA8QDVAVoBWQDVARMAQQDkC0AD+QARDEUDAQEyDEsDCQE7DGgA
4QBCDOsAOQD/DFIDSQAKDVcDSQAyDFwDEQERDWEDEQEcDWUDIQHVARMAKQE5DWwDGQHVAXIDKQFh
DWwDGQFxDX8DSQF3DRMAIQF/DYcDMQGRDYwDWQGzDZIDOQG7DZgDMQHDDZIDOQHSDZgDaQHgDaAD
EQHoDRMAEQH2DacDQQBrBRMACQElDsoDeQE/DmgAWQBbDtADgQGCDtYDCQH/DGgAeQEyDNwDkQGn
DmgAiQG1DuMD4QADD/IDqQHVAT8B4QAkD/cDCQEqDwEEeQE6DxMAmQFoDwcEuQEyDA0EoQGnDmgA
mQGWDxQEyQGvDxwEqQG/D3EAyQHLDxcA0QHVARMA0QH6DzwE2QEKEEEE0QF/DUgEuQEaEFsE4QEo
EGQBoQGIEGEEoQGVEHEA4QGeEMAA8QF3DRMA0QGzEBMA0QF/DToBCQG4EMAAQQDxEIgEAQIHEY4E
+QEyDJcECQJQCWQB+QEmERMAOQJTEaYEQQJ2Ea0EQQKAEbMEEQLVAbkEGQKJEcAEEQKAEcYEKQGQ
EacDKQGYEacDMQHVAecBIQKJEcwEIQKQEacDKQKJEdIEKQKQEacDMQKJEdgESQLVARMAUQLVAT8B
WQLVAT8BYQLVARoFaQLVARMAcQLVAbwFgQLVAT8BiQLVARMAkQLVAVoBmQLVAZYGoQLVAcAHKQAU
E3MIaQDVAXkIeQDVARMAsQI6E5YIsQJAE5YIuQLVARMAwQLVAaAIyQLVARMA0QLVAT8B2QLVAT8B
4QLVAT8B6QLVAT8B8QLVAT8B+QLVAT8BAQPVAT8BCQPVAT8BEQPVAT8BDgAoAO4ADgAsAPMACABY
AI8BCABcAJQBCABkAI8BCABoAJQBCABsAJkBCABwAJ4BCAB0AKMBKQCDAF4CLgBbBDUDLgArBBUJ
LgAzBCIJLgBTBKkJLgATBKUILgAbBK4ILgAjBM0ILgBjBGwJLgDrADUDLgALAXkGLgA7BDUDLgBD
BEwJLgBLBGwJQAATAN4BQAArAJQBQwATAN4BQwAbAO0BSQCDADYCYwATAN4BYwAbAO0BaQCDAG8C
gAArAJQBgwBzAJQBgwB7AJQBgwAbAO0BiQCDAEoCoAArAJQBowDDALECowATAN4BwAArAJQBwwAT
AN4BwwDrADUD4AArAJQB4wALATUDAAErAJQBAAETAN4BAwELATUDCQHbA8cHCQG7A94HIAErAJQB
IAETAN4BKQG7A18IQAErAJQBQAETAN4BSQGzA94BSQG7A0IIYAETAN4BYAErAJQBYwGbAwwFYwGT
A/kEYwELATUDYwGjAyAFYwGLA5QBaQG7A8MFaQGrA5QBaQGzA94BgAErAJQBiQHLA3kGiQG7A38G
oAErAJQBqQG7A0wGqQHDA5QBwAErAJQBwAETAN4ByQGrA5QByQG7AwQGyQGzA94B4AErAJQB6QHT
A54G6QG7A5cHAAIrAJQBAAITAN4BCQK7Aw0ICQLDA5QBKQITAI0ISQITAI0IaQILBJQBQAMLATUD
YAMLATUDIgInAiwCMQKBAoUCkAKVAqQCpAIsAzsDOwOBAoECrQPpAyMEUwRnBJUCeAR+BIMEgQKV
ApUCgQKVApUCngTeBIEIiAibCAQAAQAGAAUABwAGAAsACAAOABEADwATAAAA+QFPAAAAsgJUAAAA
YQJZAAAAvgJeAAAAegOYAAAAvwTEAAAA0gTEAAAArwd6AQAAvAd+AQAAwweDAQAA0geIAQAA5Qd6
AQAA7gd6AQAA/weIAQAAGQh6AQAAKQh6AQAAjwjAAQAABgnFAQAAAAnTAQIABAADAAIABQAFAAIA
BgAHAAIABwAJAAIADwALAAIAEgANAAIAEwAPAAIAIgARAAEAIwARAAIAJAATAAEAJQATAAIAJgAV
AAEAJwAVAAEAKQAXAAIAKAAXAAIAKgAZAAEAKwAZAAIALAAbAAEALQAbAAIALgAdAAEALwAdAAIA
MAAfAAEAMQAfAAIAMgAhAAEAMwAhAAIANwAjAAIAOAAlAAEAOQAlAAIAPAAnAHUAdQCIAAYCDQIU
AhsCEwMaA1AEBIAAAAEAAAAAAAAAAAAAAAAAvAAAAAQAAAAAAAAAAAAAAAEACgAAAAAACgAAAAAA
AAAAAAAACgATAAAAAAABAAAAAAAAAAAAAACdAIYDAAAAAAsAAAAAAAAAAAAAAKYAxAMAAAAACwAA
AAAAAAAAAAAApgASBAAAAAAEAAAAAAAAAAAAAAABAAICAAAAAAsAAAAAAAAAAAAAAKYAfgsAAAAA
CwAAAAAAAAAAAAAApgA0EAAAAAAEAAAAAAAAAAAAAAAKAL4SAAAAAAQAAAAAAAAAAAAAAAoAzBIA
AAAAAAAAAAEAAABiEwAABQAEAAYABAAMAAsADQALAAAAEAAMAAgDAAAQABkACAMAAAAAGwAIAy0A
nwItACEDAAAAPE1vZHVsZT4AbXNjb3JsaWIATWljcm9zb2Z0LlZpc3VhbEJhc2ljAE15QXBwbGlj
YXRpb24AU2NyaXB0Q29tcG9uZW50XzNkMjI2NGUxZDQxMzQ1ZWQ4Mjg1YjY0NTQyNDdkNzM1LnZi
cHJvai5NeQBNeUNvbXB1dGVyAE15UHJvamVjdABNeVdlYlNlcnZpY2VzAFRocmVhZFNhZmVPYmpl
Y3RQcm92aWRlcmAxAElucHV0QnVmZmVyAFNjcmlwdENvbXBvbmVudF8zZDIyNjRlMWQ0MTM0NWVk
ODI4NWI2NDU0MjQ3ZDczNS52YnByb2oAVXNlckNvbXBvbmVudABDb25uZWN0aW9ucwBWYXJpYWJs
ZXMAU2NyaXB0TWFpbgBBY3Rpb25UeXBlcwBFbmNyeXB0aW9uVHlwZXMATXlSZXNvdXJjZXMAU2Ny
aXB0Q29tcG9uZW50XzNkMjI2NGUxZDQxMzQ1ZWQ4Mjg1YjY0NTQyNDdkNzM1LnZicHJvai5NeS5S
ZXNvdXJjZXMATXlTZXR0aW5ncwBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuQXBwbGljYXRpb25TZXJ2
aWNlcwBBcHBsaWNhdGlvbkJhc2UALmN0b3IATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkRldmljZXMA
Q29tcHV0ZXIAU3lzdGVtAE9iamVjdAAuY2N0b3IAZ2V0X0NvbXB1dGVyAG1fQ29tcHV0ZXJPYmpl
Y3RQcm92aWRlcgBnZXRfQXBwbGljYXRpb24AbV9BcHBPYmplY3RQcm92aWRlcgBVc2VyAGdldF9V
c2VyAG1fVXNlck9iamVjdFByb3ZpZGVyAGdldF9XZWJTZXJ2aWNlcwBtX015V2ViU2VydmljZXNP
YmplY3RQcm92aWRlcgBBcHBsaWNhdGlvbgBXZWJTZXJ2aWNlcwBFcXVhbHMAbwBHZXRIYXNoQ29k
ZQBUeXBlAEdldFR5cGUAVG9TdHJpbmcAQ3JlYXRlX19JbnN0YW5jZV9fAFQAaW5zdGFuY2UARGlz
cG9zZV9fSW5zdGFuY2VfXwBnZXRfR2V0SW5zdGFuY2UATWljcm9zb2Z0LlZpc3VhbEJhc2ljLk15
U2VydmljZXMuSW50ZXJuYWwAQ29udGV4dFZhbHVlYDEAbV9Db250ZXh0AEdldEluc3RhbmNlAENv
enlSb2MuU1NJU1BsdXMuMjAxMgBDb3p5Um9jLlNxbFNlcnZlci5TU0lTAFNjcmlwdEJ1ZmZlclBs
dXMATWljcm9zb2Z0LlNxbFNlcnZlci5UeFNjcmlwdABNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5Q
aXBlbGluZQBTY3JpcHRDb21wb25lbnQATWljcm9zb2Z0LlNxbFNlcnZlci5QaXBlbGluZUhvc3QA
UGlwZWxpbmVCdWZmZXIAT3V0cHV0TmFtZU1hcABDb21wb25lbnQAT2JqZWN0SUQASXNJbnB1dABC
dWZmZXIAT3V0cHV0TWFwAGdldF9TdGF0aWNJbnB1dENvbHVtbnMAZ2V0X1N0YXRpY091dHB1dENv
bHVtbnMATmV4dFJvdwBFbmRPZlJvd3NldABTdGF0aWNJbnB1dENvbHVtbnMAU3RhdGljT3V0cHV0
Q29sdW1ucwBTY3JpcHRDb21wb25lbnRQbHVzAFByb2Nlc3NJbnB1dABJbnB1dElEAElucHV0TmFt
ZQBJbnB1dF9Qcm9jZXNzSW5wdXQASW5wdXRfUHJvY2Vzc0lucHV0Um93AFJvdwBQYXJlbnRDb21w
b25lbnQAQ29sdW1uU2VwYXJhdG9yAFNhbHQAUHJlRXhlY3V0ZQBWYWxpZGF0ZQBlcnJNZXNzYWdl
AEdldFByb3BlcnRpZXMAR2V0SW5wdXRDb2x1bW5zAGdldF9JbnB1dENvbHVtbnMAc2V0X0lucHV0
Q29sdW1ucwB2YWx1ZQBnZXRfQWN0aW9uAHNldF9BY3Rpb24AZ2V0X0VuY3J5cHRpb25UeXBlAHNl
dF9FbmNyeXB0aW9uVHlwZQBnZXRfSXNQYXNzd29yZFZhcmlhYmxlAHNldF9Jc1Bhc3N3b3JkVmFy
aWFibGUAZ2V0X1Bhc3N3b3JkAHNldF9QYXNzd29yZABnZXRfUGFzc3dvcmRWYXJpYWJsZQBzZXRf
UGFzc3dvcmRWYXJpYWJsZQBnZXRfSXNDZXJ0aWZpY2F0ZUZpbGVWYXJpYWJsZQBzZXRfSXNDZXJ0
aWZpY2F0ZUZpbGVWYXJpYWJsZQBnZXRfQ2VydGlmaWNhdGVGaWxlAHNldF9DZXJ0aWZpY2F0ZUZp
bGUAZ2V0X0NlcnRpZmljYXRlRmlsZVZhcmlhYmxlAHNldF9DZXJ0aWZpY2F0ZUZpbGVWYXJpYWJs
ZQBHZXRWYXJpYWJsZV8AdmFyTmFtZQBDcmVhdGVFbmNyeXB0b3JfAG1faW5wdXRDb2xzAG1fYWN0
aW9uAG1fdHlwZQBtX2lzUGFzc3dvcmRWYXIAbV9wYXNzd29yZABtX2lzQ2VydGlmaWNhdGVWYXIA
bV9jZXJ0aWZpY2F0ZQBtX2lucHV0SWR4AG1fZW5jcnlwdG9yAElucHV0Q29sdW1ucwBBY3Rpb24A
RW5jcnlwdGlvblR5cGUASXNQYXNzd29yZFZhcmlhYmxlAFBhc3N3b3JkAFBhc3N3b3JkVmFyaWFi
bGUASXNDZXJ0aWZpY2F0ZUZpbGVWYXJpYWJsZQBDZXJ0aWZpY2F0ZUZpbGUAQ2VydGlmaWNhdGVG
aWxlVmFyaWFibGUARW51bQB2YWx1ZV9fAEVuY3J5cHRpb24ARGVjcnlwdGlvbgBBRVMAUlNBAFRy
aXBsZURFUwBERVMAUkMyAFN5c3RlbS5SZXNvdXJjZXMAUmVzb3VyY2VNYW5hZ2VyAF9yZXNNZ3IA
U3lzdGVtLkdsb2JhbGl6YXRpb24AQ3VsdHVyZUluZm8AX3Jlc0N1bHR1cmUAZ2V0X1Jlc291cmNl
TWFuYWdlcgBnZXRfQ3VsdHVyZQBzZXRfQ3VsdHVyZQBWYWx1ZQBDdWx0dXJlAFN5c3RlbS5Db25m
aWd1cmF0aW9uAEFwcGxpY2F0aW9uU2V0dGluZ3NCYXNlAG1fVmFsdWUAbV9TeW5jT2JqZWN0AGdl
dF9WYWx1ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwARWRpdG9yQnJvd3NhYmxlQXR0cmlidXRlAEVk
aXRvckJyb3dzYWJsZVN0YXRlAFN5c3RlbS5Db2RlRG9tLkNvbXBpbGVyAEdlbmVyYXRlZENvZGVB
dHRyaWJ1dGUAU3lzdGVtLkRpYWdub3N0aWNzAERlYnVnZ2VySGlkZGVuQXR0cmlidXRlAE1pY3Jv
c29mdC5WaXN1YWxCYXNpYy5Db21waWxlclNlcnZpY2VzAFN0YW5kYXJkTW9kdWxlQXR0cmlidXRl
AEhpZGVNb2R1bGVOYW1lQXR0cmlidXRlAFN5c3RlbS5Db21wb25lbnRNb2RlbC5EZXNpZ24ASGVs
cEtleXdvcmRBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcwBSdW50aW1l
SGVscGVycwBHZXRPYmplY3RWYWx1ZQBSdW50aW1lVHlwZUhhbmRsZQBHZXRUeXBlRnJvbUhhbmRs
ZQBBY3RpdmF0b3IAQ3JlYXRlSW5zdGFuY2UATXlHcm91cENvbGxlY3Rpb25BdHRyaWJ1dGUAc2V0
X1ZhbHVlAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcwBDb21WaXNpYmxlQXR0cmlidXRl
AFN0cmluZwBTY3JpcHRCdWZmZXIAQ0xTQ29tcGxpYW50QXR0cmlidXRlAE1pY3Jvc29mdC5TcWxT
ZXJ2ZXIuRFRTUGlwZWxpbmVXcmFwAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlBpcGVsaW5lLldy
YXBwZXIASURUU0NvbXBvbmVudE1ldGFEYXRhMTAwAGdldF9Db21wb25lbnRNZXRhRGF0YQBJRFRT
SW5wdXRDb2xsZWN0aW9uMTAwAGdldF9JbnB1dENvbGxlY3Rpb24ASURUU0lucHV0MTAwAGdldF9J
dGVtAGdldF9JRABFbXB0eQBCbG9iQ29sdW1uAFN5c3RlbS5TZWN1cml0eS5DcnlwdG9ncmFwaHkA
Q3J5cHRvU3RyZWFtAFN5c3RlbS5JTwBNZW1vcnlTdHJlYW0AU3ltbWV0cmljQWxnb3JpdGhtAFN5
c3RlbS5TZWN1cml0eS5DcnlwdG9ncmFwaHkuWDUwOUNlcnRpZmljYXRlcwBYNTA5Q2VydGlmaWNh
dGUyAFJTQUNyeXB0b1NlcnZpY2VQcm92aWRlcgBnZXRfQnVmZmVyAElzTnVsbABnZXRfTGVuZ3Ro
AEdldEJsb2JEYXRhAElDcnlwdG9UcmFuc2Zvcm0AQ3JlYXRlRW5jcnlwdG9yAFN0cmVhbQBDcnlw
dG9TdHJlYW1Nb2RlAENyZWF0ZURlY3J5cHRvcgBXcml0ZQBEaXNwb3NlAFRvQXJyYXkAUHVibGlj
S2V5AGdldF9QdWJsaWNLZXkAQXN5bW1ldHJpY0FsZ29yaXRobQBnZXRfS2V5AEVuY3J5cHQAZ2V0
X1ByaXZhdGVLZXkARGVjcnlwdABBcnJheQBSZXZlcnNlAFJlc2V0QmxvYkRhdGEAQWRkQmxvYkRh
dGEASW50MzIASURUU0lucHV0Q29sdW1uQ29sbGVjdGlvbjEwMABnZXRfSW5wdXRDb2x1bW5Db2xs
ZWN0aW9uAGdldF9Db3VudABQaXBlbGluZUNvbXBvbmVudABnZXRfSG9zdENvbXBvbmVudABJRFRT
QnVmZmVyTWFuYWdlcjEwMABnZXRfQnVmZmVyTWFuYWdlcgBJRFRTSW5wdXRDb2x1bW4xMDAAZ2V0
X0xpbmVhZ2VJRABGaW5kQ29sdW1uQnlMaW5lYWdlSUQASURUU1ZpcnR1YWxJbnB1dDEwMABJRFRT
VmlydHVhbElucHV0Q29sdW1uMTAwAEV4Y2VwdGlvbgBJc051bGxPckVtcHR5AFN0cmluZ1NwbGl0
T3B0aW9ucwBTcGxpdABHZXRWaXJ0dWFsSW5wdXQAUmVtb3ZlQWxsAElEVFNWaXJ0dWFsSW5wdXRD
b2x1bW5Db2xsZWN0aW9uMTAwAGdldF9WaXJ0dWFsSW5wdXRDb2x1bW5Db2xsZWN0aW9uAERUU1Vz
YWdlVHlwZQBTZXRVc2FnZVR5cGUAUHJvamVjdERhdGEAU2V0UHJvamVjdEVycm9yAGdldF9NZXNz
YWdlAENsZWFyUHJvamVjdEVycm9yAFN5c3RlbS5Db2xsZWN0aW9ucwBBcnJheUxpc3QAQWRkAElu
dGVyYWN0aW9uAElJZgBJRW51bWVyYXRvcgBHZXRFbnVtZXJhdG9yAGdldF9DdXJyZW50AE1pY3Jv
c29mdC5TcWxTZXJ2ZXIuRFRTUnVudGltZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUnVu
dGltZS5XcmFwcGVyAERhdGFUeXBlAGdldF9EYXRhVHlwZQBnZXRfTmFtZQBNb3ZlTmV4dABJRGlz
cG9zYWJsZQBTb3J0AGdldF9Jc0F0dGFjaGVkAElEVFNWYXJpYWJsZXMxMDAASURUU1ZhcmlhYmxl
RGlzcGVuc2VyMTAwAGdldF9WYXJpYWJsZURpc3BlbnNlcgBMb2NrT25lRm9yUmVhZABJRFRTVmFy
aWFibGUxMDAAVW5sb2NrAFJmYzI4OThEZXJpdmVCeXRlcwBSaWpuZGFlbABPcGVyYXRvcnMAQ29t
cGFyZVN0cmluZwBTeXN0ZW0uVGV4dABFbmNvZGluZwBnZXRfQVNDSUkAR2V0Qnl0ZXMAQ3JlYXRl
AHNldF9LZXkAc2V0X0lWAFNTSVNTY3JpcHRDb21wb25lbnRFbnRyeVBvaW50QXR0cmlidXRlAENv
enlSb2MuU3FsU2VydmVyLlNTSVMuQXR0cmlidXRlcwBGaWx0ZXJQcm9wZXJ0aWVzQXR0cmlidXRl
AFZhbGlkYXRlUHJvcGVydGllc0F0dHJpYnV0ZQBTb3J0UHJvcGVydGllc0F0dHJpYnV0ZQBOb25F
c3NlbnRpYWxBdHRyaWJ1dGUAUmVmcmVzaFByb3BlcnRpZXNBdHRyaWJ1dGUAUmVmcmVzaFByb3Bl
cnRpZXMARGVzY3JpcHRpb25BdHRyaWJ1dGUAVmFyaWFibGVBdHRyaWJ1dGUAUGFzc3dvcmRQcm9w
ZXJ0eVRleHRBdHRyaWJ1dGUAU3lzdGVtLkRlc2lnbgBTeXN0ZW0uRHJhd2luZwBFZGl0b3JBdHRy
aWJ1dGUATGlzdEF0dHJpYnV0ZQBTeXN0ZW0uUmVmbGVjdGlvbgBBc3NlbWJseQBnZXRfQXNzZW1i
bHkAU3lzdGVtLlRocmVhZGluZwBNb25pdG9yAEVudGVyAEV4aXQARGVidWdnZXJOb25Vc2VyQ29k
ZUF0dHJpYnV0ZQBTY3JpcHRDb21wb25lbnRfM2QyMjY0ZTFkNDEzNDVlZDgyODViNjQ1NDI0N2Q3
MzUudmJwcm9qLlJlc291cmNlcy5yZXNvdXJjZXMAQ29tcGlsYXRpb25SZWxheGF0aW9uc0F0dHJp
YnV0ZQBSdW50aW1lQ29tcGF0aWJpbGl0eUF0dHJpYnV0ZQBTeXN0ZW0uUnVudGltZS5WZXJzaW9u
aW5nAFRhcmdldEZyYW1ld29ya0F0dHJpYnV0ZQBBc3NlbWJseUZpbGVWZXJzaW9uQXR0cmlidXRl
AEd1aWRBdHRyaWJ1dGUAQXNzZW1ibHlUcmFkZW1hcmtBdHRyaWJ1dGUAQXNzZW1ibHlDb3B5cmln
aHRBdHRyaWJ1dGUAQXNzZW1ibHlQcm9kdWN0QXR0cmlidXRlAEFzc2VtYmx5Q29tcGFueUF0dHJp
YnV0ZQBBc3NlbWJseURlc2NyaXB0aW9uQXR0cmlidXRlAEFzc2VtYmx5VGl0bGVBdHRyaWJ1dGUA
U2NyaXB0Q29tcG9uZW50XzNkMjI2NGUxZDQxMzQ1ZWQ4Mjg1YjY0NTQyNDdkNzM1LnZicHJvai5k
bGwAAAAAC0kAbgBwAHUAdAAAI1MAcABlAGMAaQBmAHkAIABwAGEAcwBzAHcAbwByAGQALgAAM1MA
cABlAGMAaQBmAHkAIABjAGUAcgB0AGkAZgBpAGMAYQB0AGUAIABmAGkAbABlAC4AAAUsAAoAABlJ
AG4AcAB1AHQAQwBvAGwAdQBtAG4AcwAADUEAYwB0AGkAbwBuAAAdRQBuAGMAcgB5AHAAdABpAG8A
bgBUAHkAcABlAAAlSQBzAFAAYQBzAHMAdwBvAHIAZABWAGEAcgBpAGEAYgBsAGUAACFQAGEAcwBz
AHcAbwByAGQAVgBhAHIAaQBhAGIAbABlAAARUABhAHMAcwB3AG8AcgBkAAAzSQBzAEMAZQByAHQA
aQBmAGkAYwBhAHQAZQBGAGkAbABlAFYAYQByAGkAYQBiAGwAZQAAL0MAZQByAHQAaQBmAGkAYwBh
AHQAZQBGAGkAbABlAFYAYQByAGkAYQBiAGwAZQAAH0MAZQByAHQAaQBmAGkAYwBhAHQAZQBGAGkA
bABlAAABAEE3AEEARABDADgAMwBEADAANQA1AEQANgA0ADUAOQBjADgAQwAxADcAOQAzAEMAOABE
ADQAMQBBADMANgBGAEUAAC1QAHIAaQB2AGEAdABlACAAawBlAHkAIABuAG8AdAAgAGYAbwB1AG4A
ZAAuAAA1VQBuAGgAYQBuAGQAbABlAGQAIABlAG4AYwByAHkAcAB0AGkAbwBuACAAdAB5AHAAZQAu
AAAxTQB5AC4AUgBlAHMAbwB1AHIAYwBlAHMALgBNAHkAUgBlAHMAbwB1AHIAYwBlAHMAAAAAAGFH
hi3+2+xDgBdCaZSb+O0ACLd6XFYZNOCJCLA/X38R1Qo6AyAAAQMAAAEEAAASDAcGFRIYARIMBAAA
EggHBhUSGAESCAQAABIRBwYVEhgBEhEEAAASFAcGFRIYARIUBAgAEgwECAASCAQIABIRBAgAEhQE
IAECHAMgAAgEIAASFQMgAA4CHgAHEAEBHgAeAAcwAQEBEB4AAhMABCAAEwAHBhUSGQETAAQoABMA
CBbPSQu4DDTqCImEXc2AgMyRCyAFARIhCAISJRIpBCAAHQ4DIAACBCgAHQ4DBhIkAwYSKAkgBAEI
DhIlEikFIAEBEhwDBhIhBSABARIhAgYOBCwACgBANwBBAEQAQwA4ADMARAAwADUANQBEADYANAA1
ADkAYwA4AEMAMQA3ADkAMwBDADgARAA0ADEAQQAzADYARgBFAAUgAQIQDgQgAB0cBCABAQ4EIAAR
MAUgAQERMAQgABE0BSABARE0BCABAQIEIAEcDgMgABwDBhEwAwYRNAIGAgMGHQgCBhwDKAAOBCgA
ETAEKAARNAMoAAICBggEAAAAAAQBAAAABAIAAAAEAwAAAAQEAAAAAwYSNQMGEjkEAAASNQQAABI5
BQABARI5BAgAEjUECAASOQMGEjwEAAASPAQIABI8BSABARFFCAEAAQAAAAAABSACAQ4OGAEACk15
VGVtcGxhdGUIMTAuMC4wLjAAAAYVEhgBEgwGFRIYARIIBhUSGAESEQYVEhgBEhQEBwESDAQHARII
BAcBEhEEBwESFBMBAA5NeS5BcHBsaWNhdGlvbgAAEwEADk15LldlYlNlcnZpY2VzAAAQAQALTXku
Q29tcHV0ZXIAAAwBAAdNeS5Vc2VyAAAEAAEcHAMHAQIDBwEIBgABEhURYQQHARIVAwcBDgUQAQAe
AAQKAR4ABAcBHgAHIAQBDg4ODmEBADRTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scy5Tb2Fw
SHR0cENsaWVudFByb3RvY29sEkNyZWF0ZV9fSW5zdGFuY2VfXxNEaXNwb3NlX19JbnN0YW5jZV9f
AAAABhUSGAETAAYVEhkBEwAECgETAAUgAQETAAgHAxMAEwATAAUBAAAAAAQHAR0OBCAAEn0FIAAS
gIEGIAESgIUcBCAAEiUEIAECCAQgARwIAyAACQYgAh0FCAgFIAASgKEMIAMBEoClEoChEYCpByAD
AR0FCAgEIAAdBQUgABKArQUgABKAsQcgAh0FHQUCBgABARKAtQUgAQEdBRwHDAgSgIkICB0FEoCN
EoCREoCVEoCZEoCdCBE0BSAAEoC9BSAAEoDBBSAAEoDFBiABEoDJHAUgAggICAgHBAgSgIUICAQA
AQIOCSACHQ4dDhGA2QUgABKAzQUgABKA3QYgARKA0RwHIAIICBGA4QYAAQESgNUYBwsCAhKAhR0O
EoDNDhKA0RKA1R0OCB0OBCABCBwGAAMcAhwcByABEoC1EhUCHQ4HBwIdDhKA6QUgABKA8QUgABGA
9RAHBR0cEoDpEoDNEoDREoDxBQcBEoCFBAcBETAEBwERNAUgABKBAQggAgEOEBKA/QYgARKBBRwH
BwMcHBKA/QYAAwgODgIFAAASgSEFIAEdBQ4GIAIBDh0FBQAAEoENBSABHQUIBQAAEoERBQAAEoEV
BQAAEoEZGgcLHBKBCQ4cEoENEoCZDhKBERKBFRKBGRE0EgEADUdldFByb3BlcnRpZXMAAA0BAAhW
YWxpZGF0ZQAABSABAR0OgJoBAAkAAAAMSW5wdXRDb2x1bW5zBkFjdGlvbg5FbmNyeXB0aW9uVHlw
ZRlJc0NlcnRpZmljYXRlRmlsZVZhcmlhYmxlD0NlcnRpZmljYXRlRmlsZRdDZXJ0aWZpY2F0ZUZp
bGVWYXJpYWJsZRJJc1Bhc3N3b3JkVmFyaWFibGUIUGFzc3dvcmQQUGFzc3dvcmRWYXJpYWJsZQAA
BiABARGBPUABADtTcGVjaWZpZXMgaWYgUGFzc3dvcmQgcHJvcGVydHkgcmVmZXJlbmNlcyBwYWNr
YWdlIHZhcmlhYmxlLgAARwEAQlNwZWNpZmllcyBpZiBDZXJ0aWZpY2F0ZUZpbGUgcHJvcGVydHkg
cmVmZXJlbmNlcyBwYWNrYWdlIHZhcmlhYmxlLgAALAEAJ1NwZWNpZmllcyB2YXJpYWJsZSBjb250
YWluaW5nIHBhc3N3b3JkLgAABQEAAQAAFgEAEVNwZWNpZnkgcGFzc3dvcmQuAAAHIAIBEhUSFYD3
AQB8U3lzdGVtLldpbmRvd3MuRm9ybXMuRGVzaWduLkZpbGVOYW1lRWRpdG9yLCBTeXN0ZW0uRGVz
aWduLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAz
ZjVmN2YxMWQ1MGEzYXVTeXN0ZW0uRHJhd2luZy5EZXNpZ24uVUlUeXBlRWRpdG9yLCBTeXN0ZW0u
RHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
PWIwM2Y1ZjdmMTFkNTBhM2EAACgBACNTZWxlY3QgY2VydGlmaWNhdGUgZmlsZSAoLmNlcnwucGVt
KQAABiADAQ4CAhYBAA9HZXRJbnB1dENvbHVtbnMBAAAALgEAKVNlbGVjdCBpbnB1dCBjb2x1bW5z
IHlvdSB3YW50IHRvIHByb2Nlc3MuAAA0AQAvU3BlY2lmaWVzIHZhcmlhYmxlIGNvbnRhaW5pbmcg
Y2VydGlmaWNhdGUgZmlsZS4AABwBABdTZWxlY3QgZW5jcnlwdGlvbiB0eXBlLgAAEwEADlNlbGVj
dCBhY3Rpb24uAAAFIAASgVUHIAIBDhKBVQYHAhI1EjUEBwESOQgBAAIAAAAAAAQAAQEcBAcBEjwE
IAEBCAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5vbkV4Y2VwdGlvblRocm93cwFHAQAaLk5FVEZyYW1l
d29yayxWZXJzaW9uPXY0LjABAFQOFEZyYW1ld29ya0Rpc3BsYXlOYW1lEC5ORVQgRnJhbWV3b3Jr
IDQMAQAHMS4wLjAuMAAAKQEAJGZiMTJjMmZlLWY5OTEtNGRiNi05YTQxLWMwYWMyM2ZjNDBiMQAA
HwEAGkNvcHlyaWdodCBAIE1pY3Jvc29mdCAyMDEzAAA8AQA3U2NyaXB0Q29tcG9uZW50XzNkMjI2
NGUxZDQxMzQ1ZWQ4Mjg1YjY0NTQyNDdkNzM1LnZicHJvagAADgEACU1pY3Jvc29mdAAAtF4AAAAA
AAAAAAAAzl4AAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBeAAAAAAAAAAAAAAAAX0NvckRsbE1h
aW4AbXNjb3JlZS5kbGwAAAAAAP8lACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAYAACAAAAAAAAAAAAA
AAAAAAABAAEAAAAwAACAAAAAAAAAAAAAAAAAAAABAAAAAABIAAAAWGAAAGgEAAAAAAAAAAAAAGgE
NAAAAFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4ARgBPAAAAAAC9BO/+AAABAAAAAQAAAAAAAAAB
AAAAAAA/AAAAAAAAAAQAAAACAAAAAAAAAAAAAAAAAAAARAAAAAEAVgBhAHIARgBpAGwAZQBJAG4A
ZgBvAAAAAAAkAAQAAABUAHIAYQBuAHMAbABhAHQAaQBvAG4AAAAAAAAAsATIAwAAAQBTAHQAcgBp
AG4AZwBGAGkAbABlAEkAbgBmAG8AAACkAwAAAQAwADAAMAAwADAANABiADAAAAA0AAoAAQBDAG8A
bQBwAGEAbgB5AE4AYQBtAGUAAAAAAE0AaQBjAHIAbwBzAG8AZgB0AAAAmAA4AAEARgBpAGwAZQBE
AGUAcwBjAHIAaQBwAHQAaQBvAG4AAAAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8A
MwBkADIAMgA2ADQAZQAxAGQANAAxADMANAA1AGUAZAA4ADIAOAA1AGIANgA0ADUANAAyADQANwBk
ADcAMwA1AC4AdgBiAHAAcgBvAGoAAAAwAAgAAQBGAGkAbABlAFYAZQByAHMAaQBvAG4AAAAAADEA
LgAwAC4AMAAuADAAAACYADwAAQBJAG4AdABlAHIAbgBhAGwATgBhAG0AZQAAAFMAYwByAGkAcAB0
AEMAbwBtAHAAbwBuAGUAbgB0AF8AMwBkADIAMgA2ADQAZQAxAGQANAAxADMANAA1AGUAZAA4ADIA
OAA1AGIANgA0ADUANAAyADQANwBkADcAMwA1AC4AdgBiAHAAcgBvAGoALgBkAGwAbAAAAFwAGwAB
AEwAZQBnAGEAbABDAG8AcAB5AHIAaQBnAGgAdAAAAEMAbwBwAHkAcgBpAGcAaAB0ACAAQAAgAE0A
aQBjAHIAbwBzAG8AZgB0ACAAMgAwADEAMwAAAAAAoAA8AAEATwByAGkAZwBpAG4AYQBsAEYAaQBs
AGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AMwBkADIAMgA2ADQA
ZQAxAGQANAAxADMANAA1AGUAZAA4ADIAOAA1AGIANgA0ADUANAAyADQANwBkADcAMwA1AC4AdgBi
AHAAcgBvAGoALgBkAGwAbAAAAJAAOAABAFAAcgBvAGQAdQBjAHQATgBhAG0AZQAAAAAAUwBjAHIA
aQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwAzAGQAMgAyADYANABlADEAZAA0ADEAMwA0ADUAZQBk
ADgAMgA4ADUAYgA2ADQANQA0ADIANAA3AGQANwAzADUALgB2AGIAcAByAG8AagAAADQACAABAFAA
cgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADEALgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBl
AG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMQAuADAALgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAwAAADgPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAA=]]></arrayElement></arrayElements></property><property id="24" name="UserComponentTypeName" dataType="System.String">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2012, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property><property id="26" name="VSTAProjectName" dataType="System.String" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE">ScriptComponent_3d2264e1d41345ed8285b6454247d735</property><property id="27" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property></properties><inputs><input id="29" name="Input" hasSideEffects="true"></input></inputs><outputs><output id="31" name="Output" synchronousInputId="29"><externalMetadataColumns /></output></outputs></component>