<component id="2" name="Levenshtein" componentClassID="Microsoft.ManagedComponentHost" description="Executes a custom script." localeId="1033" version="9" 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="3" name="SourceCode" state="cdata" dataType="System.String" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="15"><arrayElement dataType="System.String"><![CDATA[ScriptMain.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-2010 CozyRoc LLC
' 
' Permission is hereby granted, free of charge, to any person
' obtaining a copy of this software and associated documentation
' files (the "Software"), to deal in the Software without
' restriction, including without limitation the rights to use,
' copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the
' Software is furnished to do so, subject to the following
' conditions:
' 
' The above copyright notice and this permission notice shall be
' included in all copies or substantial portions of the Software.
' 
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
' OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
' HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
' WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
' FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
' OTHER DEALINGS IN THE SOFTWARE.

' The following resources were used as a reference:
' http://www.merriampark.com/ld.htm

Imports System
Imports System.ComponentModel
Imports System.Math

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


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<SortProperties(New String() {"FirstColumn", "SecondColumn", "DistanceOutputColumn"})> _
<ValidateProperties("Validate")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Row.Buffer(m_distanceIndex) = GetLevenshteinDistance_( _
            Row.Buffer(m_firstIndex).ToString(), _
            Row.Buffer(m_secondIndex).ToString())
    End Sub ' Input_ProcessInputRow


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

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

        ' Find first column index.
        m_firstIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            input.InputColumnCollection(Me.FirstColumn).LineageID)

        ' Find second column index.
        m_secondIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            input.InputColumnCollection(Me.SecondColumn).LineageID)

        ' Find distance column index.
        m_distanceIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            output.OutputColumnCollection(Me.DistanceOutputColumn).LineageID)
    End Sub ' PreExecute


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

        m_firstIndex = -1
        m_secondIndex = -1
        m_distanceIndex = -1
    End Sub ' PostExecute


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

        Try
            If String.IsNullOrEmpty(Me.FirstColumn) Then
                Throw New Exception("Select first string column.")
            End If

            If String.IsNullOrEmpty(Me.SecondColumn) Then
                Throw New Exception("Select second string column.")
            End If

            If String.IsNullOrEmpty(Me.DistanceOutputColumn) Then
                Throw New Exception("Specify distance output column.")
            End If

            Dim managedComponent As CManagedComponentWrapper = Me.ComponentMetaData.Instantiate()
            Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
            Dim virtInput As IDTSVirtualInput100 = input.GetVirtualInput()

            Call input.InputColumnCollection.RemoveAll()

            ' Setup selected first column.
            Dim firstColumn As IDTSInputColumn100 = managedComponent.SetUsageType( _
                input.ID, _
                virtInput, _
                virtInput.VirtualInputColumnCollection(Me.FirstColumn).LineageID, _
                DTSUsageType.UT_READONLY)

            ' Setup selected second column.
            Dim secondColumn As IDTSInputColumn100 = managedComponent.SetUsageType( _
                input.ID, _
                virtInput, _
                virtInput.VirtualInputColumnCollection(Me.SecondColumn).LineageID, _
                DTSUsageType.UT_READONLY)

            ' Setup distance output column.
            Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)

            Try
                Dim column As IDTSOutputColumn100 = output.OutputColumnCollection(Me.DistanceOutputColumn)
            Catch ex As Exception
                ' Doesn't exist. Create it.
                Call output.OutputColumnCollection.RemoveAll()

                Dim distanceColumn As IDTSOutputColumn100 = output.OutputColumnCollection.[New]()
                distanceColumn.Name = Me.DistanceOutputColumn
                distanceColumn.SetDataTypeProperties(DataType.DT_I4, 0, 0, 0, 0)
            End Try
        Catch ex As Exception
            result = False
            errMessage = ex.Message
        End Try

        Validate = result
    End Function    'Validate


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select first string column.")> _
    <Category("Input")> _
    <InputVirtualColumn()> _
    Public Property FirstColumn() As String
        Get
            FirstColumn = m_firstColumn
        End Get
        Set(ByVal value As String)
            m_firstColumn = value
        End Set
    End Property    ' FirstColumn


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select second string column.")> _
    <Category("Input")> _
    <InputVirtualColumn()> _
    Public Property SecondColumn() As String
        Get
            SecondColumn = m_secondColumn
        End Get
        Set(ByVal value As String)
            m_secondColumn = value
        End Set
    End Property    ' SecondColumn


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specify distance output column name.")> _
    <DefaultValue("DistanceColumn")> _
    Public Property DistanceOutputColumn() As String
        Get
            DistanceOutputColumn = m_distanceColumn
        End Get
        Set(ByVal value As String)
            m_distanceColumn = value
        End Set
    End Property    ' DistanceOutputColumn
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Compute the distance between two strings.
    ' Returns Levenshtein cost.
    Private Shared Function GetLevenshteinDistance_(ByVal s As String, ByVal t As String) As Integer
        Dim n As Integer = s.Length
        Dim m As Integer = t.Length
        Dim d(,) As Integer = New Integer(n, m) {}

        ' Step 1.
        If n = 0 Then
            Return m
        End If

        If m = 0 Then
            Return n
        End If

        ' Step 2.
        For i As Integer = 0 To n
            d(i, 0) = i
        Next

        For j As Integer = 0 To m
            d(0, j) = j
        Next

        ' Step 3.
        For i As Integer = 1 To n
            ' Step 4.
            For j As Integer = 1 To m
                ' Step 5.
                Dim cost As Integer = CInt(IIf(t(j - 1) = s(i - 1), 0, 1))

                ' Step 6.
                d(i, j) = Min(Min(d(i - 1, j) + 1, d(i, j - 1) + 1), d(i - 1, j - 1) + cost)
            Next
        Next

        ' Step 7.
        GetLevenshteinDistance_ = d(n, m)
    End Function    ' GetLevenshteinDistance_
#End Region ' Internals


#Region "Attributes"
    Private m_firstColumn As String
    Private m_secondColumn As String
    Private m_distanceColumn As String

    Private m_firstIndex As Integer
    Private m_secondIndex As Integer
    Private m_distanceIndex As Integer
#End Region ' Attributes
End Class   ' ScriptMain
]]></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 WriteOnly Property [DistanceColumn]() As Int32
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [DistanceColumn_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() {"DistanceColumn"}
        End Get
    End Property

    Public Overloads Function NextRow() As Boolean
        NextRow = MyBase.NextRow()
    End Function

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ScriptComponent_1a0573864a3f4d7b80a17ef67ec70461.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">
  <PropertyGroup>
    <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{B70EDA42-F424-49C5-A452-4CCC970781AE}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_1a0573864a3f4d7b80a17ef67ec70461</RootNamespace>
    <AssemblyName>ScriptComponent_1a0573864a3f4d7b80a17ef67ec70461</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <OptionCompare>Binary</OptionCompare>
    <OptionExplicit>On</OptionExplicit>
    <OptionStrict>On</OptionStrict>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>.\bin\Debug\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>.\bin\Release\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="CozyRoc.SSISPlus.2014, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\CozyRoc.SSISPlus.2014.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="System">
      <Private>False</Private>
    </Reference>
    <Reference Include="System.Data">
      <Private>False</Private>
    </Reference>
    <Reference Include="Microsoft.SqlServer.ManagedDTS">
      <Private>False</Private>
    </Reference>
  </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>
  <ItemGroup>
    <AppDesigner Include="My Project\" />
  </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="" />
        <Host Name="SSIS_SC120" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC120</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <ItemGroup>
    <Compile Include="ScriptMain.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="My Project\" />
  </ItemGroup>
</Project>]]></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[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:CodeName>ScriptComponent_1a0573864a3f4d7b80a17ef67ec70461</msb:CodeName>
		<msb:DisplayName>ScriptComponent_1a0573864a3f4d7b80a17ef67ec70461</msb:DisplayName>
		<msb:ProjectId>{EE41601E-9C90-4A67-9C3D-F66A0EBBE74C}</msb:ProjectId>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Project Include="ScriptComponent_1a0573864a3f4d7b80a17ef67ec70461.vbproj"/>
		<msb:Folder Include="My Project\"/>
		<msb:File Include="ScriptMain.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
	</msb:ItemGroup>
</c:Project>]]></arrayElement></arrayElements></property><property id="4" 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_1a0573864a3f4d7b80a17ef67ec70461.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAABQRQAATAEDAIJVElQAAAAAAAAAAOAAAiELAQsAACgAAAAGAAAAAAAAzkcA
AAAgAAAAYAAAAAAAEAAgAAAAAgAABAAAAAAAAAAEAAAAAAAAAACgAAAAAgAAAAAAAAIAQIUAABAA
ABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAIBHAABLAAAAAGAAAEgDAAAAAAAAAAAAAAAAAAAA
AAAAAIAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAA1CcAAAAgAAAAKAAAAAIA
AAAAAAAAAAAAAAAAACAAAGAucnNyYwAAAEgDAAAAYAAAAAQAAAAqAAAAAAAAAAAAAAAAAABAAABA
LnJlbG9jAAAMAAAAAIAAAAACAAAALgAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAACw
RwAAAAAAAEgAAAACAAUAcCcAABAgAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4CKAEAAAoqHgIoBAAACiqmcwYAAAqAAQAABHMHAAAKgAIA
AARzCAAACoADAAAEcwkAAAqABAAABCoAABMwAQALAAAAAQAAEX4BAAAEbwoAAAoqABMwAQALAAAA
AgAAEX4CAAAEbwsAAAoqABMwAQALAAAAAwAAEX4DAAAEbwwAAAoqABMwAQALAAAABAAAEX4EAAAE
bw0AAAoqABMwAgANAAAABQAAEQIDKBEAAAooEgAACioAAAATMAEABwAAAAYAABECKBMAAAoqABMw
AQALAAAABwAAEdAFAAACKBQAAAoqABMwAQAHAAAACAAAEQIoFQAACioAEzABABAAAAAJAAARAowB
AAAbLQYoAQAAKyoCKhMwAgAQAAAACgAAEQMSAP4VAgAAGwaBAgAAGyoeAigXAAAKKhMwAgAoAAAA
CwAAEQJ7GQAACm8aAAAKCweMAwAAGy0SKAIAACsLAnsZAAAKB28bAAAKBypKAigXAAAKAnMcAAAK
fRkAAAoqADoCAwQFDgQOBSgeAAAKKgATMAEABwAAAAwAABEWjRgAAAEqADoCFgOMGQAAAW8fAAAK
KgBiAywJAhZvIAAACisLcgEAAHBzIQAACnoqAAAAEzADABEAAAANAAARF40YAAABCwcWcp4AAHCi
ByoAAAATMAEACQAAAA4AABECKCIAAAoKBioAAAATMAEACQAAAA8AABECKCMAAAoKBioAAAB+Aigl
AAAKAgJzHAAABn0GAAAEAgJzHQAABn0HAAAEKr4DAigmAAAKbycAAApyvAAAcG8oAAAKbykAAAoz
EQICAxcFDgRzEQAABm8aAAAGKkorBwIDbxsAAAYDbxYAAAYt8SoABioAADoCKBcAAAoCA30IAAAE
KgA6AigXAAAKAgN9CQAABCoAHgIoGAAABioTMAUASAAAAAAAAAADbyoAAAoCew8AAAQDbyoAAAoC
ew0AAARvKwAACm8VAAAKA28qAAAKAnsOAAAEbysAAApvFQAACigpAAAGjBkAAAFvLAAACioTMAUA
ywAAABAAABECKC0AAAoCbyYAAApvJwAAChaMGQAAAW8oAAAKCgJvJgAACm8uAAAKFowZAAABby8A
AAoLAgJvMAAACm8xAAAKBm8yAAAKBm8zAAAKAm8jAAAGbzQAAApvNQAACm82AAAKfQ0AAAQCAm8w
AAAKbzEAAAoGbzIAAAoGbzMAAAoCbyUAAAZvNAAACm81AAAKbzYAAAp9DgAABAICbzAAAApvMQAA
CgZvMgAACgdvNwAACgJvJwAABm84AAAKbzkAAApvNgAACn0PAAAEKgByAig6AAAKAhV9DQAABAIV
fQ4AAAQCFX0PAAAEKgAAABswBgBgAQAAEQAAERcKAm8jAAAGKDsAAAosC3LIAABwczwAAAp6Am8l
AAAGKDsAAAosC3IAAQBwczwAAAp6Am8nAAAGKDsAAAosC3I6AQBwczwAAAp6Am8mAAAKbz0AAAoT
BAJvJgAACm8nAAAKFowZAAABbygAAAoNCW8+AAAKEwcJbzMAAApvPwAAChEECW8pAAAKEQcRB29A
AAAKAm8jAAAGb0EAAApvQgAAChZvQwAACgwRBAlvKQAAChEHEQdvQAAACgJvJQAABm9BAAAKb0IA
AAoWb0MAAAoTBgJvJgAACm8uAAAKFowZAAABby8AAAoTBREFbzcAAAoCbycAAAZvOAAAChMI3lwl
KEQAAAoTChEFbzcAAApvRQAAChEFbzcAAApvRgAAChMJEQkCbycAAAZvRwAAChEJGRYWFhZvSAAA
CihJAAAK3holKEQAAAoTCxYKAxELb0oAAApRKEkAAAreAAYLBypBNAAAAAAAAOoAAAAWAAAAAAEA
AEIAAAAqAAABAAAAAAIAAABAAQAAQgEAABoAAAAqAAABEzABAAkAAAASAAARAnsKAAAECgYqAAAA
IgIDfQoAAAQqAAAAEzABAAkAAAATAAARAnsLAAAECgYqAAAAIgIDfQsAAAQqAAAAEzABAAkAAAAU
AAARAnsMAAAECgYqAAAAIgIDfQwAAAQqAAAAEzAIAAwBAAAVAAARAm9LAAAKDQNvSwAACgwJF9YI
F9ZzTAAACgoJFjMCCCoIFjMCCSoWCRMJEwQrEQYRBBYRBG9NAAAKEQQX1hMEEQQRCTHpFggTChMF
KxEGFhEFEQVvTQAAChEFF9YTBREFEQox6RcJEwsTBjiJAAAAFwgTDBMIK3UDEQgX2m9OAAAKAhEG
F9pvTgAACv4BFowZAAABF4wZAAABKE8AAAooUAAAChMHBhEGEQgGEQYX2hEIb1EAAAoX1gYRBhEI
F9pvUQAAChfWKFIAAAoGEQYX2hEIF9pvUQAAChEH1ihSAAAKb00AAAoRCBfWEwgRCBEMMYURBhfW
EwYRBhELPm7///8GCQhvUQAACgsHKkJTSkIBAAEAAAAAAAwAAAB2NC4wLjMwMzE5AAAAAAUAbAAA
AOQKAAAjfgAAUAsAAFgOAAAjU3RyaW5ncwAAAACoGQAAfAEAACNVUwAkGwAAEAAAACNHVUlEAAAA
NBsAANwEAAAjQmxvYgAAAAAAAAACAAABVxWiCQkOAAAA+iUzABYAAAEAAAA9AAAACwAAAA8AAAAp
AAAAGQAAAFwAAAA3AAAAFQAAAAQAAAAMAAAADwAAAAoAAAABAAAACAAAAAIAAAADAAAAAgAAAAAA
Ig4BAAAAAAAKAD8BFQEKAHMBVQEGAIMBfAEKANsBFQEGAFkCfAEKANsCsQIOAC0DFgMSAHwDWwMW
AK0DWwMSALwDWwMOALgEFgMaAIYGcAYaAJ8GcAYaAMwGtAYGAPYG4wYKADUHDgcKAE0HEwAaAIIH
ZQcGALcHlwcGANUHfAEGAPkHfAEKABIIEwAGAGAIQQgGAHQIfAEGAHsIfAEGAJIIfAESAKwIWwMG
ALkIfAEeABwJ8wgeAEsJ8wgeAHYJ8wgeAJ4J8wgeAKwJ8wgWANkJWwMeAP0J8wgeACQK8wgeAFsK
8wgeAJIK8wgeAMsK8wgeAN8K8wgeAPgK8wgGAAwLfAEeAEoL8wgeAI8L8wgeAKkL8wgeAMQL8wgK
AN4LDgciAFIMKgwKAKgMEwAKALgMDgcGANIMfAESANsMWwMOACQNAg0OAEANAg0OAFgNAg0aAHQN
cAYaAIYNcAYaAJsNcAYGALENlwcGANENlwcGAAkO7w0AAAAAAQAAAAAAAQABAAAAAAApADcABQAB
AAEAAAAAAGsANwAJAAEAAgAAARAAdgA3AA0AAQADAAUBAACAAAAADQAFAAgABQEAAI4AAAANAAUA
DwABAAAAqQC1AB0ABgARAAEAAADmALUALQAGABgAAQAAAPQAtQANAAgAHAABAAAAAAG1AA0ACQAd
AAEAAAAKAbUAIAAKAB4AMQCeASAAMQDHAS0AMQDpAToAMQAOAkcAIQDqApAABgD0ANsABgAAAd8A
AQAYBfMAAQAYBfMAAQDpBQ4BAQD3BQ4BAQAGBg4BAQAXBhEBAQAkBhEBAQAyBhEBUCAAAAAABhhP
ARMAAQBYIAAAAAAGGE8BEwABAGAgAAAAABEYigEXAAEAjCAAAAAAEwiRARsAAQCkIAAAAAATCLcB
KAABALwgAAAAABMI4AE1AAEA1CAAAAAAEwj+AUIAAQDsIAAAAABGAkQCYwABAAghAAAAAEYCTQJo
AAIAHCEAAAAAgwBeAmwAAgA0IQAAAABGAmYCcQACAEghAAAAABEAbwJ4AAIAZCEAAAAAAQCNAoAA
AwCAIQAAAAAGGE8BEwAEAIghAAAAAAMIoQKLAAQAvCEAAAAABhhPARMABADQIQAAAAAGGE8BrwAE
AOAhAAAAAEYK9gO7AAkA9CEAAAAABggNBMAACQAEIgAAAAAGCCYExQAKACAiAAAAAEYKQAS7AAsA
QCIAAAAAhgBYBMoACwBYIgAAAACGAGAEygALAHAiAAAAAAYYTwETAAsAkCIAAAAARgLMBOMACwDA
IgAAAABGA+sE7QAPANQiAAAAAEYD/gTtABAA2CIAAAAABhhPAfcAEQDoIgAAAAAGGE8B9wASAPgi
AAAAAAYYTwETABMAACMAAAAARgL+BO0AEwBUIwAAAABGAigFEwAUACwkAAAAAEYCMwUTABQATCQA
AAAABgA/Bf0AFADsJQAAAAAGCFMFcQAVAAQmAAAAAAYIYwUDARUAECYAAAAABgh5BXEAFgAoJgAA
AAAGCIoFAwEWADQmAAAAAAYImwVxABcATCYAAAAABgi0BQMBFwBYJgAAAAARAM0FCAEYAAAAAQBL
AgAAAQCEAgAAAQCEAgAAAQDKAwAAAgDUAwAAAwDdAwAABADlAwAABQDsAwAAAQAgBAAAAQAgBAAA
AQDZBAAAAgDhBAAAAwDlAwAABADsAwAAAQDlAwAAAQAUBQAAAQDKAwAAAQDKAwAAAQAUBQAAAQBI
BQAAAQBzBQAAAQBzBQAAAQBzBQAAAQDlBQAAAgDnBQkATwETAGEATwEYAXEATwEnAREATwETAHkA
TwETACQATwETACwATwETADQATwETADwATwETACQAoQKLACwAoQKLADQAoQKLADwAoQKLAIEATwET
AIkATwETAJEATwEDAZkAxgfBARkARAJjABkATQJoACkA5wfOARkAZgJxAKkAAwjeARkATwETALEA
TwHuAUQA6gKQAEwALQiLAEwANwhrAkwATwETALkATwHFADkATwGvADkAgQiFAjkAigjAANEATwED
AdkAWATKANkAYATKAOEATwHFAFkATwETAEEANQmSAukAYgmXAvEAgwmcAvkAjAloADkAkwmiAkkA
gwmnAkkAgQiFAkEAKAUTAOkAxAmsAgkBgwmyAlkA6wm5AhEBEgq/AvkAkwloAPkAQQrFAiEBgwnL
AikBbgpoABkBfArSAgEBsArYAjEBgwneAjkBbgpoAEEAMwUTAMEAFgvtAlEBTwEDAekAJAvyAvkA
MAv4AiEBQAsTAEkBbgv+AlkBgwkEA2EBbgpoAGkB0QsLA3kB6gsZAzEBQAsTADEB+gsgAzkB/gsD
ATkBWwwmA3kBcQwXAFEBgwxxAMEAjwxoAFQATwFbA1QAmgxhA8EAngxoA4kBtAxtA5EBxAx0A1QA
zgzSApkB1wx5A6EBTwETAKkBTwEDAbEBTwGjA7kBTwETAMEBTwEDAckBTwEDAdEBTwEDAdkBTwHA
AOEBTwETAOkBTwEDASkAgwB7AS4A4wKUBC4A0wJsBC4A2wJ1BEAAKwBGAUAAEwAeAUMAGwAtAUMA
EwAeAUkAgwCZAWMAGwAtAWMAEwAeAWkAgwCMAYAAKwBGAYMAcwBGAYMAGwAtAYMAewBGAYkAgwCt
AaAAKwBGAaMAwwD2AaMAEwAeAcAAKwBGAcMA6wB6AsMAEwAeAeAAKwBGAeMAIwF6AgABKwBGAQAB
EwAeAQMBIwF6AiABKwBGASABEwAeAUABEwAeAUABKwBGAUkBswJGAUkBuwLgA0kBwwLrA2ABEwAe
AWABKwBGAWMBmwJGAWMBqwKpA2MBIwF6AmMBowKVA2kBswJGAWkBwwIMBGkBuwLgA4ABKwBGAYkB
ywIuBIkBwwJCBKABKwBGAcABEwAeAcABKwBGAeABKwBGAQACKwBGAQACEwAeAYADIwF6AqADIwF6
AmcBbAFxAXYBxgHKAdUB2gHpAekBcQKAAosCxgHGAeUCMQPaAdoB2gF/AwQAAQAGAAUABwAGAAsA
CgAAAHMBTwAAACwCVAAAANsBWQAAADgCXgAAAPQCmAAAAGwEzgAAAH8E0wAAAI4E1wAAAKQEzgAA
AEIGFAEAAE4GFAEAAFsGFAECAAQAAwACAAUABQACAAYABwACAAcACQACAA8ACwACABIADQABABMA
DwABABQAEQACABUAEwACACMAFQABACQAFQACACUAFwABACYAFwACACcAGQABACgAGQB1AHUAiABL
AVIBWQFgAVgCXwJTAwSAAAAAAAAAAAAAAAAAAAAAALUAAAAEAAAAAAAAAAAAAAABAAoAAAAAAAoA
AAAAAAAAAAAAAAoAEwAAAAAAAQAAAAAAAAAAAAAAnQAAAwAAAAAMAAAAAAAAAAAAAACmAD4DAAAA
AAwAAAAAAAAAAAAAAKYAjAMAAAAABAAAAAAAAAAAAAAAAQB8AQAAAAAMAAAAAAAAAAAAAACmAM8I
AAAAAAwAAAAAAAAAAAAAAKYABwwAAAAABQAEAAYABAAAABAADACCAgAAEAAZAIICAAAAABsAggIt
AOQBLQBmAgAAAAAAPE1vZHVsZT4AbXNjb3JsaWIATWljcm9zb2Z0LlZpc3VhbEJhc2ljAE15QXBw
bGljYXRpb24AU2NyaXB0Q29tcG9uZW50XzFhMDU3Mzg2NGEzZjRkN2I4MGExN2VmNjdlYzcwNDYx
Lk15AE15Q29tcHV0ZXIATXlQcm9qZWN0AE15V2ViU2VydmljZXMAVGhyZWFkU2FmZU9iamVjdFBy
b3ZpZGVyYDEASW5wdXRCdWZmZXIAU2NyaXB0Q29tcG9uZW50XzFhMDU3Mzg2NGEzZjRkN2I4MGEx
N2VmNjdlYzcwNDYxAFVzZXJDb21wb25lbnQAQ29ubmVjdGlvbnMAVmFyaWFibGVzAFNjcmlwdE1h
aW4ATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkFwcGxpY2F0aW9uU2VydmljZXMAQXBwbGljYXRpb25C
YXNlAC5jdG9yAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5EZXZpY2VzAENvbXB1dGVyAFN5c3RlbQBP
YmplY3QALmNjdG9yAGdldF9Db21wdXRlcgBtX0NvbXB1dGVyT2JqZWN0UHJvdmlkZXIAZ2V0X0Fw
cGxpY2F0aW9uAG1fQXBwT2JqZWN0UHJvdmlkZXIAVXNlcgBnZXRfVXNlcgBtX1VzZXJPYmplY3RQ
cm92aWRlcgBnZXRfV2ViU2VydmljZXMAbV9NeVdlYlNlcnZpY2VzT2JqZWN0UHJvdmlkZXIAQXBw
bGljYXRpb24AV2ViU2VydmljZXMARXF1YWxzAG8AR2V0SGFzaENvZGUAVHlwZQBHZXRUeXBlAFRv
U3RyaW5nAENyZWF0ZV9fSW5zdGFuY2VfXwBUAGluc3RhbmNlAERpc3Bvc2VfX0luc3RhbmNlX18A
Z2V0X0dldEluc3RhbmNlAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5NeVNlcnZpY2VzLkludGVybmFs
AENvbnRleHRWYWx1ZWAxAG1fQ29udGV4dABHZXRJbnN0YW5jZQBDb3p5Um9jLlNTSVNQbHVzLjIw
MTQAQ296eVJvYy5TcWxTZXJ2ZXIuU1NJUwBTY3JpcHRCdWZmZXJQbHVzAE1pY3Jvc29mdC5TcWxT
ZXJ2ZXIuVHhTY3JpcHQATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUAU2NyaXB0Q29t
cG9uZW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuUGlwZWxpbmVIb3N0AFBpcGVsaW5lQnVmZmVyAE91
dHB1dE5hbWVNYXAAQ29tcG9uZW50AE9iamVjdElEAElzSW5wdXQAQnVmZmVyAE91dHB1dE1hcABn
ZXRfU3RhdGljSW5wdXRDb2x1bW5zAHNldF9EaXN0YW5jZUNvbHVtbgBWYWx1ZQBzZXRfRGlzdGFu
Y2VDb2x1bW5fSXNOdWxsAGdldF9TdGF0aWNPdXRwdXRDb2x1bW5zAE5leHRSb3cARW5kT2ZSb3dz
ZXQAU3RhdGljSW5wdXRDb2x1bW5zAERpc3RhbmNlQ29sdW1uAERpc3RhbmNlQ29sdW1uX0lzTnVs
bABTdGF0aWNPdXRwdXRDb2x1bW5zAFNjcmlwdENvbXBvbmVudFBsdXMAUHJvY2Vzc0lucHV0AElu
cHV0SUQASW5wdXROYW1lAElucHV0X1Byb2Nlc3NJbnB1dABJbnB1dF9Qcm9jZXNzSW5wdXRSb3cA
Um93AFBhcmVudENvbXBvbmVudABQcmVFeGVjdXRlAFBvc3RFeGVjdXRlAFZhbGlkYXRlAGVyck1l
c3NhZ2UAZ2V0X0ZpcnN0Q29sdW1uAHNldF9GaXJzdENvbHVtbgB2YWx1ZQBnZXRfU2Vjb25kQ29s
dW1uAHNldF9TZWNvbmRDb2x1bW4AZ2V0X0Rpc3RhbmNlT3V0cHV0Q29sdW1uAHNldF9EaXN0YW5j
ZU91dHB1dENvbHVtbgBHZXRMZXZlbnNodGVpbkRpc3RhbmNlXwBzAHQAbV9maXJzdENvbHVtbgBt
X3NlY29uZENvbHVtbgBtX2Rpc3RhbmNlQ29sdW1uAG1fZmlyc3RJbmRleABtX3NlY29uZEluZGV4
AG1fZGlzdGFuY2VJbmRleABGaXJzdENvbHVtbgBTZWNvbmRDb2x1bW4ARGlzdGFuY2VPdXRwdXRD
b2x1bW4AU3lzdGVtLkNvbXBvbmVudE1vZGVsAEVkaXRvckJyb3dzYWJsZUF0dHJpYnV0ZQBFZGl0
b3JCcm93c2FibGVTdGF0ZQBTeXN0ZW0uQ29kZURvbS5Db21waWxlcgBHZW5lcmF0ZWRDb2RlQXR0
cmlidXRlAFN5c3RlbS5EaWFnbm9zdGljcwBEZWJ1Z2dlckhpZGRlbkF0dHJpYnV0ZQBNaWNyb3Nv
ZnQuVmlzdWFsQmFzaWMuQ29tcGlsZXJTZXJ2aWNlcwBTdGFuZGFyZE1vZHVsZUF0dHJpYnV0ZQBI
aWRlTW9kdWxlTmFtZUF0dHJpYnV0ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVzaWduAEhlbHBL
ZXl3b3JkQXR0cmlidXRlAFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMAUnVudGltZUhl
bHBlcnMAR2V0T2JqZWN0VmFsdWUAUnVudGltZVR5cGVIYW5kbGUAR2V0VHlwZUZyb21IYW5kbGUA
QWN0aXZhdG9yAENyZWF0ZUluc3RhbmNlAE15R3JvdXBDb2xsZWN0aW9uQXR0cmlidXRlAGdldF9W
YWx1ZQBzZXRfVmFsdWUAU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzAENvbVZpc2libGVB
dHRyaWJ1dGUAU3RyaW5nAEludDMyAHNldF9JdGVtAFNldE51bGwASW52YWxpZE9wZXJhdGlvbkV4
Y2VwdGlvbgBTY3JpcHRCdWZmZXIAQ0xTQ29tcGxpYW50QXR0cmlidXRlAE1pY3Jvc29mdC5TcWxT
ZXJ2ZXIuRFRTUGlwZWxpbmVXcmFwAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlBpcGVsaW5lLldy
YXBwZXIASURUU0NvbXBvbmVudE1ldGFEYXRhMTAwAGdldF9Db21wb25lbnRNZXRhRGF0YQBJRFRT
SW5wdXRDb2xsZWN0aW9uMTAwAGdldF9JbnB1dENvbGxlY3Rpb24ASURUU0lucHV0MTAwAGdldF9J
dGVtAGdldF9JRABnZXRfQnVmZmVyAElEVFNPdXRwdXQxMDAASURUU091dHB1dENvbGxlY3Rpb24x
MDAAZ2V0X091dHB1dENvbGxlY3Rpb24AUGlwZWxpbmVDb21wb25lbnQAZ2V0X0hvc3RDb21wb25l
bnQASURUU0J1ZmZlck1hbmFnZXIxMDAAZ2V0X0J1ZmZlck1hbmFnZXIASURUU0lucHV0Q29sdW1u
Q29sbGVjdGlvbjEwMABnZXRfSW5wdXRDb2x1bW5Db2xsZWN0aW9uAElEVFNJbnB1dENvbHVtbjEw
MABnZXRfTGluZWFnZUlEAEZpbmRDb2x1bW5CeUxpbmVhZ2VJRABJRFRTT3V0cHV0Q29sdW1uQ29s
bGVjdGlvbjEwMABnZXRfT3V0cHV0Q29sdW1uQ29sbGVjdGlvbgBJRFRTT3V0cHV0Q29sdW1uMTAw
AENNYW5hZ2VkQ29tcG9uZW50V3JhcHBlcgBJRFRTVmlydHVhbElucHV0MTAwAEV4Y2VwdGlvbgBJ
c051bGxPckVtcHR5AEluc3RhbnRpYXRlAEdldFZpcnR1YWxJbnB1dABSZW1vdmVBbGwASURUU1Zp
cnR1YWxJbnB1dENvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0X1ZpcnR1YWxJbnB1dENvbHVtbkNvbGxl
Y3Rpb24ASURUU1ZpcnR1YWxJbnB1dENvbHVtbjEwMABJRFRTRGVzaWdudGltZUNvbXBvbmVudDEw
MABEVFNVc2FnZVR5cGUAU2V0VXNhZ2VUeXBlAFByb2plY3REYXRhAFNldFByb2plY3RFcnJvcgBO
ZXcAc2V0X05hbWUATWljcm9zb2Z0LlNxbFNlcnZlci5EVFNSdW50aW1lV3JhcABNaWNyb3NvZnQu
U3FsU2VydmVyLkR0cy5SdW50aW1lLldyYXBwZXIARGF0YVR5cGUAU2V0RGF0YVR5cGVQcm9wZXJ0
aWVzAENsZWFyUHJvamVjdEVycm9yAGdldF9NZXNzYWdlAGdldF9MZW5ndGgAU2V0AGdldF9DaGFy
cwBJbnRlcmFjdGlvbgBJSWYAQ29udmVyc2lvbnMAVG9JbnRlZ2VyAEdldABNYXRoAE1pbgBTU0lT
U2NyaXB0Q29tcG9uZW50RW50cnlQb2ludEF0dHJpYnV0ZQBDb3p5Um9jLlNxbFNlcnZlci5TU0lT
LkF0dHJpYnV0ZXMAVmFsaWRhdGVQcm9wZXJ0aWVzQXR0cmlidXRlAFNvcnRQcm9wZXJ0aWVzQXR0
cmlidXRlAElucHV0VmlydHVhbENvbHVtbkF0dHJpYnV0ZQBDYXRlZ29yeUF0dHJpYnV0ZQBEZXNj
cmlwdGlvbkF0dHJpYnV0ZQBEZWZhdWx0VmFsdWVBdHRyaWJ1dGUAQ29tcGlsYXRpb25SZWxheGF0
aW9uc0F0dHJpYnV0ZQBSdW50aW1lQ29tcGF0aWJpbGl0eUF0dHJpYnV0ZQBTeXN0ZW0uUnVudGlt
ZS5WZXJzaW9uaW5nAFRhcmdldEZyYW1ld29ya0F0dHJpYnV0ZQBTY3JpcHRDb21wb25lbnRfMWEw
NTczODY0YTNmNGQ3YjgwYTE3ZWY2N2VjNzA0NjEuZGxsAAAAgJtJAHMATgB1AGwAbAAgAHAAcgBv
AHAAZQByAHQAeQAgAGMAYQBuAG4AbwB0ACAAYgBlACAAcwBlAHQAIAB0AG8AIABGAGEAbABzAGUA
LgAgAEEAcwBzAGkAZwBuACAAYQAgAHYAYQBsAHUAZQAgAHQAbwAgAHQAaABlACAAYwBvAGwAdQBt
AG4AIABpAG4AcwB0AGUAYQBkAC4AAB1EAGkAcwB0AGEAbgBjAGUAQwBvAGwAdQBtAG4AAAtJAG4A
cAB1AHQAADdTAGUAbABlAGMAdAAgAGYAaQByAHMAdAAgAHMAdAByAGkAbgBnACAAYwBvAGwAdQBt
AG4ALgAAOVMAZQBsAGUAYwB0ACAAcwBlAGMAbwBuAGQAIABzAHQAcgBpAG4AZwAgAGMAbwBsAHUA
bQBuAC4AAD9TAHAAZQBjAGkAZgB5ACAAZABpAHMAdABhAG4AYwBlACAAbwB1AHQAcAB1AHQAIABj
AG8AbAB1AG0AbgAuAAAAACakAh2KKd1EvTzUEInh2AgACLd6XFYZNOCJCLA/X38R1Qo6AyAAAQMA
AAEEAAASDAcGFRIYARIMBAAAEggHBhUSGAESCAQAABIRBwYVEhgBEhEEAAASFAcGFRIYARIUBAgA
EgwECAASCAQIABIRBAgAEhQEIAECHAMgAAgEIAASFQMgAA4CHgAHEAEBHgAeAAcwAQEBEB4AAhMA
BCAAEwAHBhUSGQETAAQoABMACBbPSQu4DDTqCImEXc2AgMyRCyAFARIhCAISJRIpBCAAHQ4EIAEB
CAQgAQECAyAAAgQoAB0OAygACAMoAAIDBhIkAwYSKAkgBAEIDhIlEikFIAEBEhwDBhIhBSABARIh
BSABAhAOBCABAQ4FAAIIDg4CBg4CBggDKAAOBSABARE1CAEAAQAAAAAABSACAQ4OGAEACk15VGVt
cGxhdGUIMTAuMC4wLjAAAAQBAAAABhUSGAESDAYVEhgBEggGFRIYARIRBhUSGAESFAQHARIMBAcB
EggEBwESEQQHARIUEAEAC015LkNvbXB1dGVyAAAMAQAHTXkuVXNlcgAAEwEADk15LkFwcGxpY2F0
aW9uAAATAQAOTXkuV2ViU2VydmljZXMAAAQAARwcAwcBAgMHAQgGAAESFRFRBAcBEhUDBwEOBRAB
AB4ABAoBHgAEBwEeAAcgBAEODg4OYQEANFN5c3RlbS5XZWIuU2VydmljZXMuUHJvdG9jb2xzLlNv
YXBIdHRwQ2xpZW50UHJvdG9jb2wSQ3JlYXRlX19JbnN0YW5jZV9fE0Rpc3Bvc2VfX0luc3RhbmNl
X18AAAAGFRIYARMABhUSGQETAAQKARMABSABARMACAcDEwATABMABQEAAAAABAcBHQ4FIAIBCBwG
BwIdDh0OBCAAEnUEIAASeQUgARJ9HAQgABIlBCABHAgFIAASgIUGIAESgIEcBSAAEoCJBSAAEoCN
BSAAEoCRBiABEoCVHAUgAggICAUgABKAmQYgARKAnRwHBwISfRKAgQQAAQIOBSAAEoChBSAAEoCl
BSAAEoCtBiABEoCxHA0gBBKAlQgSgKUIEYC5BgABARKAqQUgABKAnQogBQERgMEICAgIIQcMAgIS
gJUSfRKAoRKAgRKAlRKApRKAnRKAnRKAqRKAqQcUCAIAAgAABSACAQgIBiADAQgICAQgAQMIBgAD
HAIcHAQAAQgcBQACCAgIFQcNFAgCAAIAAAgICAgICAgICAgICA0BAAhWYWxpZGF0ZQAABSABAR0O
NgEAAwAAAAtGaXJzdENvbHVtbgxTZWNvbmRDb2x1bW4URGlzdGFuY2VPdXRwdXRDb2x1bW4AAAoB
AAVJbnB1dAAAIAEAG1NlbGVjdCBmaXJzdCBzdHJpbmcgY29sdW1uLgAAIQEAHFNlbGVjdCBzZWNv
bmQgc3RyaW5nIGNvbHVtbi4AABMBAA5EaXN0YW5jZUNvbHVtbgAAKQEAJFNwZWNpZnkgZGlzdGFu
Y2Ugb3V0cHV0IGNvbHVtbiBuYW1lLgAACAEACAAAAAAAHgEAAQBUAhZXcmFwTm9uRXhjZXB0aW9u
VGhyb3dzAUcBABouTkVURnJhbWV3b3JrLFZlcnNpb249djQuMAEAVA4URnJhbWV3b3JrRGlzcGxh
eU5hbWUQLk5FVCBGcmFtZXdvcmsgNKhHAAAAAAAAAAAAAL5HAAAAIAAAAAAAAAAAAAAAAAAAAAAA
AAAAAACwRwAAAAAAAAAAX0NvckRsbE1haW4AbXNjb3JlZS5kbGwAAAAAAP8lACAAEAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAY
AACAAAAAAAAAAAAAAAAAAAABAAEAAAAwAACAAAAAAAAAAAAAAAAAAAABAAAAAABIAAAAWGAAAOwC
AAAAAAAAAAAAAOwCNAAAAFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4ARgBPAAAAAAC9BO/+AAAB
AAAAAAAAAAAAAAAAAAAAAAA/AAAAAAAAAAQAAAACAAAAAAAAAAAAAAAAAAAARAAAAAEAVgBhAHIA
RgBpAGwAZQBJAG4AZgBvAAAAAAAkAAQAAABUAHIAYQBuAHMAbABhAHQAaQBvAG4AAAAAAAAAsARM
AgAAAQBTAHQAcgBpAG4AZwBGAGkAbABlAEkAbgBmAG8AAAAoAgAAAQAwADAAMAAwADAANABiADAA
AAAsAAIAAQBGAGkAbABlAEQAZQBzAGMAcgBpAHAAdABpAG8AbgAAAAAAIAAAADAACAABAEYAaQBs
AGUAVgBlAHIAcwBpAG8AbgAAAAAAMAAuADAALgAwAC4AMAAAAIwANQABAEkAbgB0AGUAcgBuAGEA
bABOAGEAbQBlAAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwAxAGEAMAA1ADcAMwA4
ADYANABhADMAZgA0AGQANwBiADgAMABhADEANwBlAGYANgA3AGUAYwA3ADAANAA2ADEALgBkAGwA
bAAAAAAAKAACAAEATABlAGcAYQBsAEMAbwBwAHkAcgBpAGcAaAB0AAAAIAAAAJQANQABAE8AcgBp
AGcAaQBuAGEAbABGAGkAbABlAG4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4A
dABfADEAYQAwADUANwAzADgANgA0AGEAMwBmADQAZAA3AGIAOAAwAGEAMQA3AGUAZgA2ADcAZQBj
ADcAMAA0ADYAMQAuAGQAbABsAAAAAAA0AAgAAQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4A
AAAwAC4AMAAuADAALgAwAAAAOAAIAAEAQQBzAHMAZQBtAGIAbAB5ACAAVgBlAHIAcwBpAG8AbgAA
ADAALgAwAC4AMAAuADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAMAAAA0DcAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA]]></arrayElement></arrayElements></property><property id="9" name="UserComponentTypeName" dataType="System.String">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2014, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property><property id="11" 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_1a0573864a3f4d7b80a17ef67ec70461</property><property id="12" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property></properties><inputs><input id="14" name="Input" hasSideEffects="true"></input></inputs><outputs><output id="17" name="Output" synchronousInputId="14"><outputColumns><outputColumn id="18" name="DistanceColumn" lineageId="18" dataType="i4" /></outputColumns><externalMetadataColumns /></output></outputs></component>