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

Imports System
Imports System.ComponentModel
Imports System.Collections.Generic

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


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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Call m_list.Add(New RangeValue( _
            Row.Buffer(m_startIndex), _
            Row.Buffer(m_endIndex), _
            Row.Buffer(m_valueIndex)))
    End Sub ' Input_ProcessInputRow


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

        ' Setup range list object.
        Dim vars As IDTSVariables100
        Call Me.VariableDispenser.LockOneForWrite(Me.ResultVariable, vars)
        Try
            Try
                Dim rvd As RangeValueDictionary = CType( _
                    vars(Me.ResultVariable).Value, _
                    RangeValueDictionary)
                m_list = rvd.Ranges
            Catch ex As Exception
                ' Dictionary not yet initialized.
                m_list = New List(Of RangeValue)
                vars(Me.ResultVariable).Value = New RangeValueDictionary(m_list)
            End Try
        Finally
            Call vars.Unlock()
        End Try

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

        ' Find range start column index.
        m_startIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            input.InputColumnCollection(Me.StartColumn).LineageID)

        ' Find range end column index.
        m_endIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            input.InputColumnCollection(Me.EndColumn).LineageID)

        ' Find value column index.
        m_valueIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            input.InputColumnCollection(Me.ValueColumn).LineageID)
    End Sub ' PreExecute


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

        ' Sort for binary search to work.
        Call m_list.Sort()

        m_list = Nothing
        m_startIndex = -1
        m_endIndex = -1
        m_valueIndex = -1
    End Sub ' PostExecute


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

        Try
            If String.IsNullOrEmpty(Me.StartColumn) Then
                Throw New Exception("Select range start column.")
            ElseIf String.IsNullOrEmpty(Me.EndColumn) Then
                Throw New Exception("Select range end colum.")
            ElseIf String.IsNullOrEmpty(Me.ValueColumn) Then
                Throw New Exception("Select value colum.")
            ElseIf String.IsNullOrEmpty(Me.ResultVariable) Then
                Throw New Exception("Select dictionary result variable.")
            Else
                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 range start column.
                Dim startColumn As IDTSInputColumn100 = managedComponent.SetUsageType( _
                    input.ID, _
                    virtInput, _
                    virtInput.VirtualInputColumnCollection(Me.StartColumn).LineageID, _
                    DTSUsageType.UT_READONLY)

                ' Setup selected range start column.
                Dim endColumn As IDTSInputColumn100 = managedComponent.SetUsageType( _
                    input.ID, _
                    virtInput, _
                    virtInput.VirtualInputColumnCollection(Me.EndColumn).LineageID, _
                    DTSUsageType.UT_READONLY)

                ' Setup selected value column.
                Dim valueColumn As IDTSInputColumn100 = managedComponent.SetUsageType( _
                    input.ID, _
                    virtInput, _
                    virtInput.VirtualInputColumnCollection(Me.ValueColumn).LineageID, _
                    DTSUsageType.UT_READONLY)
            End If
        Catch ex As Exception
            result = False
            errMessage = ex.Message
        End Try

        Validate = result
    End Function    ' Validate


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select range start column.")> _
    <Category("Input")> _
    <InputVirtualColumn()> _
    Public Property StartColumn() As String
        Get
            StartColumn = m_startColumn
        End Get
        Set(ByVal value As String)
            m_startColumn = value
        End Set
    End Property    ' StartColumn


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select range end column.")> _
    <Category("Input")> _
    <InputVirtualColumn()> _
    Public Property EndColumn() As String
        Get
            EndColumn = m_endColumn
        End Get
        Set(ByVal value As String)
            m_endColumn = value
        End Set
    End Property    ' EndColumn


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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select variable with dictionary object.")> _
    <Category("Result")> _
    <Variable()> _
    Public Property ResultVariable() As String
        Get
            ResultVariable = m_resultVar
        End Get
        Set(ByVal value As String)
            m_resultVar = value
        End Set
    End Property    ' ResultVariable

#End Region ' Properties


#Region "Attributes"
    Private m_startColumn As String
    Private m_endColumn As String
    Private m_valueColumn As String
    Private m_resultVar As String

    Private m_list As List(Of RangeValue)
    Private m_startIndex As Integer
    Private m_endIndex As Integer
    Private m_valueIndex As Integer
#End Region ' Attributes
End Class   ' ScriptMain
]]></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[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[ScriptComponent_db237b1b862b4617bf8f943a1156d8a0.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>{F0195816-78E8-47D8-933A-0BC412C0E1C1}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_db237b1b862b4617bf8f943a1156d8a0</RootNamespace>
    <AssemblyName>ScriptComponent_db237b1b862b4617bf8f943a1156d8a0</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="RangeDictionary.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="My Project\" />
  </ItemGroup>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[RangeDictionary.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-2009 CozyRoc LLC
' 
' Permission is hereby granted, free of charge, to any person
' obtaining a copy of this software and associated documentation
' files (the "Software"), to deal in the Software without
' restriction, including without limitation the rights to use,
' copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the
' Software is furnished to do so, subject to the following
' conditions:
' 
' The above copyright notice and this permission notice shall be
' included in all copies or substantial portions of the Software.
' 
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
' OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
' HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
' WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
' FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
' OTHER DEALINGS IN THE SOFTWARE.

Imports System
Imports System.Collections
Imports System.Collections.Generic


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Container class for range value.
Public Class RangeValue
    Implements IComparable(Of RangeValue)


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Sub New(ByVal startR As Object, ByVal endR As Object, ByVal value As Object)
        m_start = CType(startR, IComparable)
        m_end = CType(endR, IComparable)
        m_value = value
    End Sub ' RangeValue


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Function CompareTo(ByVal other As RangeValue) As Integer Implements IComparable(Of RangeValue).CompareTo
        Dim compareStart As Integer = m_start.CompareTo(other.m_start)
        Dim compareEnd As Integer = m_end.CompareTo(other.m_end)

        If compareStart < 0 AndAlso compareEnd < 0 Then
            Return -1
        End If

        If compareStart > 0 AndAlso compareEnd > 0 Then
            Return 1
        End If

        If compareStart = 0 AndAlso compareEnd = 0 Then
            Return 0
        End If

        Throw New ArgumentException("Overlapping Range.")
    End Function    ' CompareTo


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns:
    ' 0 if value is in the specified range.
    ' < 0 if value is below the range.
    ' > 0 if value is above the range.
    Public Function CompareTo(ByVal key As Object) As Integer
        Dim compareStart As Integer = m_start.CompareTo(key)
        Dim compareEnd As Integer = m_end.CompareTo(key)

        If compareStart <= 0 AndAlso compareEnd >= 0 Then
            Return 0
        ElseIf compareEnd < 0 Then
            Return -1
        End If

        Return 1
    End Function    ' CompareTo


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public ReadOnly Property Value() As Object
        Get
            Return m_value
        End Get
    End Property    ' Value
#End Region ' Properties


#Region "Attributes"
    Private m_start As IComparable
    Private m_end As IComparable
    Private m_value As Object
#End Region ' Attributes
End Class   ' RangeValue


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' The only implemented IDictionary interface methods are: Contains, Item Get
'
' Uses binary search to find value in specialized Ranges array.
Public Class RangeValueDictionary
    Implements IDictionary


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Sub New(ByVal list As List(Of RangeValue))
        m_list = list
    End Sub ' RangeValueDictionary


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Sub CopyTo(ByVal array As Array, ByVal index As Integer) Implements ICollection.CopyTo
        Throw New Exception("Not Implemented.")
    End Sub ' CopyTo


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Sub Add(ByVal key As Object, ByVal value As Object) Implements IDictionary.Add
        Throw New Exception("Not Implemented.")
    End Sub ' Add


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Sub Clear() Implements IDictionary.Clear
        Throw New Exception("Not Implemented.")
    End Sub ' Clear


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Function Contains(ByVal key As Object) As Boolean Implements IDictionary.Contains
        Contains = GetKeyIndex_(key) >= 0
    End Function    ' Contains


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Function GetEnumerator() As IDictionaryEnumerator Implements IDictionary.GetEnumerator
        Throw New Exception("Not Implemented.")
    End Function    ' GetEnumerator


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Sub Remove(ByVal key As Object) Implements IDictionary.Remove
        Throw New Exception("Not Implemented.")
    End Sub ' Remove


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Function GetEnumerator1() As IEnumerator Implements IEnumerable.GetEnumerator
        Throw New Exception("Not Implemented.")
    End Function    ' GetEnumerator1


#Region "Properties"
    Public ReadOnly Property Ranges() As List(Of RangeValue)
        Get
            Return m_list
        End Get
    End Property    ' Ranges


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public ReadOnly Property Count() As Integer Implements ICollection.Count
        Get
            Throw New Exception("Not Implemented.")
        End Get
    End Property    ' Count


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public ReadOnly Property IsSynchronized() As Boolean Implements ICollection.IsSynchronized
        Get
            IsSynchronized = False
        End Get
    End Property    ' IsSynchronized


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public ReadOnly Property SyncRoot() As Object Implements ICollection.SyncRoot
        Get
            Return m_list
        End Get
    End Property    ' SyncRoot


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public ReadOnly Property IsFixedSize() As Boolean Implements IDictionary.IsFixedSize
        Get
            IsFixedSize = True
        End Get
    End Property    ' IsFixedSize


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public ReadOnly Property IsReadOnly() As Boolean Implements IDictionary.IsReadOnly
        Get
            IsReadOnly = True
        End Get
    End Property    ' IsReadOnly


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Default Public Property Item(ByVal key As Object) As Object Implements IDictionary.Item
        Get
            Dim index As Integer = GetKeyIndex_(key)
            Dim rangeValue As RangeValue = m_list(index)

            Return rangeValue.Value
        End Get
        Set(ByVal value As Object)
            Throw New Exception("Not Implemented.")
        End Set
    End Property    ' Item


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public ReadOnly Property Keys() As ICollection Implements IDictionary.Keys
        Get
            Throw New Exception("Not Implemented.")
        End Get
    End Property    ' Keys


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public ReadOnly Property Values() As ICollection Implements IDictionary.Values
        Get
            Throw New Exception("Not Implemented.")
        End Get
    End Property    ' Values
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetKeyIndex_(ByVal key As Object) As Integer
        If Not m_cachedKey Is Nothing AndAlso m_cachedKey.CompareTo(key) = 0 Then
            ' Searched key index is already cached.
            Return m_cachedIndex
        End If

        m_cachedKey = CType(key, IComparable)
        m_cachedIndex = BinarySearch_(key)

        GetKeyIndex_ = m_cachedIndex
    End Function    ' GetKeyIndex_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Binary search for specified key.
    Private Function BinarySearch_(ByVal key As Object) As Integer
        Dim min As Integer = 0
        Dim max As Integer = m_list.Count - 1

        Do While min <= max
            Dim mid As Integer = (min + max) >> 1
            Dim compare As Integer = m_list(mid).CompareTo(key)

            If compare = 0 Then
                Return mid
            End If

            If compare < 0 Then
                min = mid + 1
            Else
                max = mid - 1
            End If
        Loop

        Return Not min
    End Function    ' BinarySearch_
#End Region ' Internals


#Region "Attributes"
    Private m_list As List(Of RangeValue)
    Private m_cachedKey As IComparable
    Private m_cachedIndex As Integer
#End Region ' Attributes
End Class   ' RangeDictionary
]]></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_db237b1b862b4617bf8f943a1156d8a0</msb:CodeName>
		<msb:DisplayName>ScriptComponent_db237b1b862b4617bf8f943a1156d8a0</msb:DisplayName>
		<msb:ProjectId>{DE7E8FD7-CCF7-4260-B13C-6A93AD07C380}</msb:ProjectId>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Project Include="ScriptComponent_db237b1b862b4617bf8f943a1156d8a0.vbproj"/>
		<msb:Folder Include="My Project\"/>
		<msb:File Include="ScriptMain.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="RangeDictionary.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
	</msb:ItemGroup>
</c:Project>]]></arrayElement></arrayElements></property><property id="18" 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_db237b1b862b4617bf8f943a1156d8a0.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
AAAKAm89AAAGb1kAAApvWgAAChZvWwAAChMG3holKEYAAAoTCBYKAxEIb1wAAApRKEkAAAreAAYL
ByoAQRwAAAAAAAACAAAAEwEAABUBAAAaAAAAKAAAARMwAQAJAAAAIwAAEQJ7EAAABAoGKgAAACIC
A30QAAAEKgAAABMwAQAJAAAAJAAAEQJ7EQAABAoGKgAAACICA30RAAAEKgAAABMwAQAJAAAAJQAA
EQJ7EgAABAoGKgAAACICA30SAAAEKgAAABMwAQAJAAAAJgAAEQJ7EwAABAoGKgAAACICA30TAAAE
KgAAAEJTSkIBAAEAAAAAAAwAAAB2NC4wLjMwMzE5AAAAAAUAbAAAAFgOAAAjfgAAxA4AAKwPAAAj
U3RyaW5ncwAAAABwHgAALAEAACNVUwCcHwAAEAAAACNHVUlEAAAArB8AAFAFAAAjQmxvYgAAAAAA
AAACAAABVxeiCwkOAAAA+iUzABYAAAEAAABCAAAADQAAABcAAABAAAAAJwAAAAIAAABmAAAAPAAA
ACYAAAAGAAAAFQAAABoAAAARAAAACwAAAAEAAAAIAAAAAgAAAAMAAAACAAAAAAB3DwEAAAAAAAoA
XwE1AQoAkwF1AQYAowGcAQoA+wE1AQYAeQKcAQoA+wLRAg4ATQM2AxIAnAN7AxYAzQN7AxIA3AN7
Aw4AgAQ2AwYA8AScAQYALgWcAQYAaQVWBQYAkAV1BQYAnAWcAQYAyAVWBQYA8wVWBQYAdAZWBRoA
aghUCBoAgwhUCBoAsAiYCAYA2gjHCAoAGQnyCAoAMQkTABoAZglJCQYAmwl7CQYAuQmcAQYA3Qmc
AQoA9gkTAAYAOgobCgYATgqcARIAVQp7AwYAYgqcAR4AxQqcCh4A9AqcCh4AHwucCgYAMwucAQYA
RQtWBQYAUQucAQYAbQtbCyIA2guyCyIA6wuyCyIAKgyyCwoAOgzyCAYAbwycARYAdQx7Ax4AmQyc
Ch4AwAycCh4A9wycCh4AMw2cCh4ATA2cCh4AlA2cCh4A2Q2cCh4A8w2cCh4ADg6cChIANA57Aw4A
fQ5bDg4AmQ5bDg4AsQ5bDhoAzQ5UCBoA3w5UCA4A9A5bDgYABg97CQYAJg97CQYAXg9EDwAAAAAB
AAAAAAABAAEAAAAAACkANwAFAAEAAQAAAAAAawA3AAkAAQACAAABEAB2ADcADQABAAMABQEAAIAA
AAANAAUACAAFAQAAjgAAAA0ABQAPAAEAAACpALUAHQAGABEAAQAAAOYAtQAtAAYAFgABAAAA9AC1
AA0ACAAaAAEAAAAAAbUADQAJABsAAQAAAAoBtQANAAoAHAABAAAAFQG1AA0ADQAgAAEAAAAqAbUA
IAAQADQAMQC+ASAAMQDnAS0AMQAJAjoAMQAuAkcAIQAKA5AABgD0AMkABgAAAc0AAQDgBOEAAQDg
BOEAAQA6BQgBAQBCBQgBAQBIBQwBAQCvBkwBAQC2BggBAQDCBlQBAQDKB30BAQDYB30BAQDkB30B
AQDyB30BAQCvBkwBAQD+B1QBAQALCFQBAQAWCFQBUCAAAAAABhhvARMAAQBYIAAAAAAGGG8BEwAB
AGAgAAAAABEYqgEXAAEAjCAAAAAAEwixARsAAQCkIAAAAAATCNcBKAABALwgAAAAABMIAAI1AAEA
1CAAAAAAEwgeAkIAAQDsIAAAAABGAmQCYwABAAghAAAAAEYCbQJoAAIAHCEAAAAAgwB+AmwAAgA0
IQAAAABGAoYCcQACAEghAAAAABEAjwJ4AAIAZCEAAAAAAQCtAoAAAwCAIQAAAAAGGG8BEwAEAIgh
AAAAAAMIwQKLAAQAvCEAAAAABhhvARMABADQIQAAAAAGGG8BrwAEAOAhAAAAAEYKFgS7AAkA9CEA
AAAARgotBLsACQAIIgAAAACGAEUEwAAJACAiAAAAAIYATQTAAAkAOCIAAAAABhhvARMACQBYIgAA
AABGApQE0QAJAIgiAAAAAEYDswTbAA0AnCIAAAAARgPGBNsADgCgIgAAAAAGGG8B5QAPALAiAAAA
AAYYbwHlABAAwCIAAAAABhhvAfIAEQDsIgAAAABmAxAF+QAUAEgjAAAAAAYAEAX/ABUAjCMAAAAA
BggkBQQBFgCgIwAAAAAGGG8BEwEWALAjAAAAAGYDogUdARcAvCMAAAAAZgO1BSQBGQDIIwAAAABm
A7kFEwAbANQjAAAAAGYDvwVjABsA+CMAAAAAZgPeBSoBHAAQJAAAAABmA+wFLwEcABwkAAAAAGYD
/wU0AR0ANCQAAAAABggOBjkBHQBIJAAAAABmCxkGaAAdAGAkAAAAAGYLIwbAAB0AcCQAAAAAZgs2
BgQBHQCEJAAAAABmC0MGwAAdAJQkAAAAAGYLUwbAAB0ApCQAAAAAZgtiBkIBHQDUJAAAAABmC2sG
JAEeAOAkAAAAAGYLgAZHASAA+CQAAAAAZguJBkcBIAAQJQAAAAABAJQG/wAgAGglAAAAAAEAoQb/
ACEAxCUAAAAABhhvARMAIgDMJQAAAABGAsYE2wAiACwmAAAAAEYCHQcTACMAfCcAAAAARgIoBxMA
IwCsJwAAAAAGADQHcgEjAAgpAAAAAAYISAdxACQAICkAAAAABghYB3gBJAAsKQAAAAAGCGgHcQAl
AEQpAAAAAAYIdgd4ASUAUCkAAAAABgiEB3EAJgBoKQAAAAAGCJQHeAEmAHQpAAAAAAYIpAdxACcA
jCkAAAAABgi3B3gBJwAAAAEAawIAAAEApAIAAAEApAIAAAEA6gMAAAIA9AMAAAMA/QMAAAQABQQA
AAUADAQAAAEAoQQAAAIAqQQAAAMABQQAAAQADAQAAAEABQQAAAEA3AQAAAEA6gMAAAEA6gMAAAEA
/gQAAAIABQUAAAMACgUAAAEAGgUAAAEAIAUAAAEAlwUAAAEAqQUAAAIArwUAAAEAIAUAAAIACgUA
AAEAIAUAAAEAIAUAAAEAIAUAAAEAIAUAAAIACgUAAAEAIAUAAAEAIAUAAAEA3AQAAAEAPQcAAAEA
CgUAAAEACgUAAAEACgUAAAEACgULABIADAA5AAkAbwETAKEAbwGEAbEAbwGTAREAbwETALkAbwET
ACwAbwETADQAbwETADwAbwETAEQAbwETACwAwQKLADQAwQKLADwAwQKLAEQAwQKLAMEAbwETAMkA
bwETANEAbwF4AdkAqgktAhkAZAJjABkAbQJoACkAywk6AhkAhgJxAOkA5wlKAhkAbwETAPEAbwFa
AkwACgOQAFQAJAWLAFQAEQrXAlQAbwETAPkAbwHmAjkAbwGvAAkBRQTAAAkBTQTAABEBbwHmAlkA
bwETAEEA3gr2AhkBCwv8AiEBYgYCAykBLAtoACQAEAUJA2kAEAX/ADEBbwF4AZkAogUdAXEAtQUk
AXEAuQUTAHEAvwVjAHEA3gUqAXEA7AUvATkB3gU0AZkAGQZoAJkAIwbAAJkANgYEAXEAQwbAAHEA
UwbAAHEAYgZCAXEAawYkAXEAgAZHAXEAiQZHAUEBbwF4AVwAYgYzA1wAGQZoAEkBbwF4ATkAhAtX
A0kAYgZcA1wAtQXXAkEAHQcTAEEABAxhA1kBGgxnA1EBYgZwA2EBJAUEAWkBRgx3A1wAbwETAGEB
EQovAWkBVgwXAFEBaAwTAFkAhwx+A3kBrgyEAykBhAtoACkB3QyKA4kBYgaQA5EBCg1oAIEBGA2X
A0EAKAcTAFwALg0TAAEBYA2rAxkBbg2wAykBeg22A4kBig0TAKEBuA28A6kBYgbCA7EBCg1oALkB
Gw7JA0EBKA5xAMkBbwETANEBbwF4AdkBbwH/A+EBbwETAOkBbwF4AfEBbwF4AfkBbwETAAECbwHb
BAkCbwETABECbwF4ASkAgwDnAS4AMwMIBS4AIwPgBC4AKwPpBEAAKwCyAUAAEwCKAUMAGwCZAUMA
EwCKAUkAgwAZAmMAGwCZAWMAEwCKAWkAgwD4AYAAKwCyAYMAGwCZAYMAcwCyAYMAewCyAYkAgwAF
AqAAKwCyAaMAwwBiAqMAEwCKAcAAKwCyAcMA6wDrAsMAEwCKAeAAKwCyAeMACwHrAgABKwCyAQAB
EwCKAQMBCwHrAiABKwCyASABEwCKAUABKwCyAUABEwCKAWABEwCKAWABKwCyAYABKwCyAYMB6wFN
A6ABKwCyAaMB+wIFBKMB6wKyAaMBCwHrAqMB8wLxA8ABEwCKAcABKwCyAeABKwCyAQACKwCyAQAC
EwCKAUkCCwM/BEkCEwNKBEkCAwOyAWkCAwOyAWkCEwNqBGkCCwM/BIkCCwM/BIkCEwOIBIkCAwOy
AakCGwOyAakCCwOiBKkCEwOuBEADCwHrAmADCwHrAtMB2AHdAeIBMgI2AkECRgJVAlUC3QLxAvEC
MgIyAg8DDwMVAzICGQMeAyMDNgIyAhUDMgIyAjkDQANAAzYCRQOdA9cDRgJGAkYCRgIEAAEABgAF
AAcABgALAAgADAAJAA0AEgAAAJMBTwAAAEwCVAAAAPsBWQAAAFgCXgAAABQDmAAAAFkExAAAAGwE
xAAAAFAFDwEAANAGVwEAANcGYAEAAN0GZAEAAOwGDwEAAPUGZAEAAAEHZAEAAAwHaAEAABEHbQEA
ABYHbQEAACMIgAEAAC8IgAEAADkIgAEAAEUIgAECAAQAAwACAAUABQACAAYABwACAAcACQACAA8A
CwACABIADQACABMADwACAB8AEQACACgAEwACACkAFQACACoAFwACACsAGQACACwAGwACAC0AHQAB
AC8AHwACAC4AHwACADAAIQACADEAIwABADoAJQACADkAJQACADsAJwABADwAJwACAD0AKQABAD4A
KQACAD8AKwABAEAAKwALADoATwAMAFIAYwAMAEQAVwAMAEYAWQAMAEgAWwAMAEoAXQAMAEwAXwAM
AE4AYQAMAEIAVQAMAFQAZQAMAFYAZwAMAFgAaQAMAFoAawAMAFwAbQAMAF4AbwAMAGAAcQAMAGIA
cwB1AHUAiADrALcBvgHFAcwBxALLAiwDBIAAAAAAAAAAAAAAAAAAAAAAtQAAAAQAAAAAAAAAAAAA
AAEACgAAAAAACgAAAAAAAAAAAAAACgATAAAAAAABAAAAAAAAAAAAAACdACADAAAAAAwAAAAAAAAA
AAAAAKYAXgMAAAAADAAAAAAAAAAAAAAApgCsAwAAAAAEAAAAAAAAAAAAAAABAJwBAAAAAAwAAAAA
AAAAAAAAAKYAeAoAAAAADAAAAAAAAAAAAAAApgCPCwAAAAAFAAQABgAEAAAAEAAMAKICAAAQABkA
ogIAAAAAGwCiAi0AUAItANICAAAAAAA8TW9kdWxlPgBtc2NvcmxpYgBNaWNyb3NvZnQuVmlzdWFs
QmFzaWMATXlBcHBsaWNhdGlvbgBTY3JpcHRDb21wb25lbnRfZGIyMzdiMWI4NjJiNDYxN2JmOGY5
NDNhMTE1NmQ4YTAuTXkATXlDb21wdXRlcgBNeVByb2plY3QATXlXZWJTZXJ2aWNlcwBUaHJlYWRT
YWZlT2JqZWN0UHJvdmlkZXJgMQBJbnB1dEJ1ZmZlcgBTY3JpcHRDb21wb25lbnRfZGIyMzdiMWI4
NjJiNDYxN2JmOGY5NDNhMTE1NmQ4YTAAVXNlckNvbXBvbmVudABDb25uZWN0aW9ucwBWYXJpYWJs
ZXMAUmFuZ2VWYWx1ZQBSYW5nZVZhbHVlRGljdGlvbmFyeQBTY3JpcHRNYWluAE1pY3Jvc29mdC5W
aXN1YWxCYXNpYy5BcHBsaWNhdGlvblNlcnZpY2VzAEFwcGxpY2F0aW9uQmFzZQAuY3RvcgBNaWNy
b3NvZnQuVmlzdWFsQmFzaWMuRGV2aWNlcwBDb21wdXRlcgBTeXN0ZW0AT2JqZWN0AC5jY3RvcgBn
ZXRfQ29tcHV0ZXIAbV9Db21wdXRlck9iamVjdFByb3ZpZGVyAGdldF9BcHBsaWNhdGlvbgBtX0Fw
cE9iamVjdFByb3ZpZGVyAFVzZXIAZ2V0X1VzZXIAbV9Vc2VyT2JqZWN0UHJvdmlkZXIAZ2V0X1dl
YlNlcnZpY2VzAG1fTXlXZWJTZXJ2aWNlc09iamVjdFByb3ZpZGVyAEFwcGxpY2F0aW9uAFdlYlNl
cnZpY2VzAEVxdWFscwBvAEdldEhhc2hDb2RlAFR5cGUAR2V0VHlwZQBUb1N0cmluZwBDcmVhdGVf
X0luc3RhbmNlX18AVABpbnN0YW5jZQBEaXNwb3NlX19JbnN0YW5jZV9fAGdldF9HZXRJbnN0YW5j
ZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuTXlTZXJ2aWNlcy5JbnRlcm5hbABDb250ZXh0VmFsdWVg
MQBtX0NvbnRleHQAR2V0SW5zdGFuY2UAQ296eVJvYy5TU0lTUGx1cy4yMDE0AENvenlSb2MuU3Fs
U2VydmVyLlNTSVMAU2NyaXB0QnVmZmVyUGx1cwBNaWNyb3NvZnQuU3FsU2VydmVyLlR4U2NyaXB0
AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlBpcGVsaW5lAFNjcmlwdENvbXBvbmVudABNaWNyb3Nv
ZnQuU3FsU2VydmVyLlBpcGVsaW5lSG9zdABQaXBlbGluZUJ1ZmZlcgBPdXRwdXROYW1lTWFwAENv
bXBvbmVudABPYmplY3RJRABJc0lucHV0AEJ1ZmZlcgBPdXRwdXRNYXAAZ2V0X1N0YXRpY0lucHV0
Q29sdW1ucwBnZXRfU3RhdGljT3V0cHV0Q29sdW1ucwBOZXh0Um93AEVuZE9mUm93c2V0AFN0YXRp
Y0lucHV0Q29sdW1ucwBTdGF0aWNPdXRwdXRDb2x1bW5zAFNjcmlwdENvbXBvbmVudFBsdXMAUHJv
Y2Vzc0lucHV0AElucHV0SUQASW5wdXROYW1lAElucHV0X1Byb2Nlc3NJbnB1dABJbnB1dF9Qcm9j
ZXNzSW5wdXRSb3cAUm93AFBhcmVudENvbXBvbmVudABJQ29tcGFyYWJsZWAxAHN0YXJ0UgBlbmRS
AHZhbHVlAENvbXBhcmVUbwBvdGhlcgBrZXkAZ2V0X1ZhbHVlAElDb21wYXJhYmxlAG1fc3RhcnQA
bV9lbmQAbV92YWx1ZQBWYWx1ZQBTeXN0ZW0uQ29sbGVjdGlvbnMASURpY3Rpb25hcnkAU3lzdGVt
LkNvbGxlY3Rpb25zLkdlbmVyaWMATGlzdGAxAGxpc3QAQXJyYXkAQ29weVRvAGFycmF5AGluZGV4
AEFkZABDbGVhcgBDb250YWlucwBJRGljdGlvbmFyeUVudW1lcmF0b3IAR2V0RW51bWVyYXRvcgBS
ZW1vdmUASUVudW1lcmF0b3IAR2V0RW51bWVyYXRvcjEAZ2V0X1JhbmdlcwBnZXRfQ291bnQAZ2V0
X0lzU3luY2hyb25pemVkAGdldF9TeW5jUm9vdABnZXRfSXNGaXhlZFNpemUAZ2V0X0lzUmVhZE9u
bHkAZ2V0X0l0ZW0Ac2V0X0l0ZW0ASUNvbGxlY3Rpb24AZ2V0X0tleXMAZ2V0X1ZhbHVlcwBHZXRL
ZXlJbmRleF8AQmluYXJ5U2VhcmNoXwBtX2xpc3QAbV9jYWNoZWRLZXkAbV9jYWNoZWRJbmRleABS
YW5nZXMAQ291bnQASXNTeW5jaHJvbml6ZWQAU3luY1Jvb3QASXNGaXhlZFNpemUASXNSZWFkT25s
eQBJdGVtAEtleXMAVmFsdWVzAFByZUV4ZWN1dGUAUG9zdEV4ZWN1dGUAVmFsaWRhdGUAZXJyTWVz
c2FnZQBnZXRfU3RhcnRDb2x1bW4Ac2V0X1N0YXJ0Q29sdW1uAGdldF9FbmRDb2x1bW4Ac2V0X0Vu
ZENvbHVtbgBnZXRfVmFsdWVDb2x1bW4Ac2V0X1ZhbHVlQ29sdW1uAGdldF9SZXN1bHRWYXJpYWJs
ZQBzZXRfUmVzdWx0VmFyaWFibGUAbV9zdGFydENvbHVtbgBtX2VuZENvbHVtbgBtX3ZhbHVlQ29s
dW1uAG1fcmVzdWx0VmFyAG1fc3RhcnRJbmRleABtX2VuZEluZGV4AG1fdmFsdWVJbmRleABTdGFy
dENvbHVtbgBFbmRDb2x1bW4AVmFsdWVDb2x1bW4AUmVzdWx0VmFyaWFibGUAU3lzdGVtLkNvbXBv
bmVudE1vZGVsAEVkaXRvckJyb3dzYWJsZUF0dHJpYnV0ZQBFZGl0b3JCcm93c2FibGVTdGF0ZQBT
eXN0ZW0uQ29kZURvbS5Db21waWxlcgBHZW5lcmF0ZWRDb2RlQXR0cmlidXRlAFN5c3RlbS5EaWFn
bm9zdGljcwBEZWJ1Z2dlckhpZGRlbkF0dHJpYnV0ZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuQ29t
cGlsZXJTZXJ2aWNlcwBTdGFuZGFyZE1vZHVsZUF0dHJpYnV0ZQBIaWRlTW9kdWxlTmFtZUF0dHJp
YnV0ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVzaWduAEhlbHBLZXl3b3JkQXR0cmlidXRlAFN5
c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMAUnVudGltZUhlbHBlcnMAR2V0T2JqZWN0VmFs
dWUAUnVudGltZVR5cGVIYW5kbGUAR2V0VHlwZUZyb21IYW5kbGUAQWN0aXZhdG9yAENyZWF0ZUlu
c3RhbmNlAE15R3JvdXBDb2xsZWN0aW9uQXR0cmlidXRlAHNldF9WYWx1ZQBTeXN0ZW0uUnVudGlt
ZS5JbnRlcm9wU2VydmljZXMAQ29tVmlzaWJsZUF0dHJpYnV0ZQBTdHJpbmcAU2NyaXB0QnVmZmVy
AENMU0NvbXBsaWFudEF0dHJpYnV0ZQBNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1BpcGVsaW5lV3Jh
cABNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZS5XcmFwcGVyAElEVFNDb21wb25lbnRN
ZXRhRGF0YTEwMABnZXRfQ29tcG9uZW50TWV0YURhdGEASURUU0lucHV0Q29sbGVjdGlvbjEwMABn
ZXRfSW5wdXRDb2xsZWN0aW9uAElEVFNJbnB1dDEwMABnZXRfSUQAQXJndW1lbnRFeGNlcHRpb24A
SUVudW1lcmFibGUARXhjZXB0aW9uAFN5c3RlbS5SZWZsZWN0aW9uAERlZmF1bHRNZW1iZXJBdHRy
aWJ1dGUAZ2V0X0J1ZmZlcgBNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1J1bnRpbWVXcmFwAE1pY3Jv
c29mdC5TcWxTZXJ2ZXIuRHRzLlJ1bnRpbWUuV3JhcHBlcgBJRFRTVmFyaWFibGVzMTAwAElEVFNW
YXJpYWJsZURpc3BlbnNlcjEwMABnZXRfVmFyaWFibGVEaXNwZW5zZXIATG9ja09uZUZvcldyaXRl
AElEVFNWYXJpYWJsZTEwMABQcm9qZWN0RGF0YQBTZXRQcm9qZWN0RXJyb3IAQ2xlYXJQcm9qZWN0
RXJyb3IAVW5sb2NrAEludDMyAFBpcGVsaW5lQ29tcG9uZW50AGdldF9Ib3N0Q29tcG9uZW50AElE
VFNCdWZmZXJNYW5hZ2VyMTAwAGdldF9CdWZmZXJNYW5hZ2VyAElEVFNJbnB1dENvbHVtbkNvbGxl
Y3Rpb24xMDAAZ2V0X0lucHV0Q29sdW1uQ29sbGVjdGlvbgBJRFRTSW5wdXRDb2x1bW4xMDAAZ2V0
X0xpbmVhZ2VJRABGaW5kQ29sdW1uQnlMaW5lYWdlSUQAU29ydABDTWFuYWdlZENvbXBvbmVudFdy
YXBwZXIASURUU1ZpcnR1YWxJbnB1dDEwMABJc051bGxPckVtcHR5AEluc3RhbnRpYXRlAEdldFZp
cnR1YWxJbnB1dABSZW1vdmVBbGwASURUU1ZpcnR1YWxJbnB1dENvbHVtbkNvbGxlY3Rpb24xMDAA
Z2V0X1ZpcnR1YWxJbnB1dENvbHVtbkNvbGxlY3Rpb24ASURUU1ZpcnR1YWxJbnB1dENvbHVtbjEw
MABJRFRTRGVzaWdudGltZUNvbXBvbmVudDEwMABEVFNVc2FnZVR5cGUAU2V0VXNhZ2VUeXBlAGdl
dF9NZXNzYWdlAFNTSVNTY3JpcHRDb21wb25lbnRFbnRyeVBvaW50QXR0cmlidXRlAENvenlSb2Mu
U3FsU2VydmVyLlNTSVMuQXR0cmlidXRlcwBWYWxpZGF0ZVByb3BlcnRpZXNBdHRyaWJ1dGUAU29y
dFByb3BlcnRpZXNBdHRyaWJ1dGUASW5wdXRWaXJ0dWFsQ29sdW1uQXR0cmlidXRlAENhdGVnb3J5
QXR0cmlidXRlAERlc2NyaXB0aW9uQXR0cmlidXRlAFZhcmlhYmxlQXR0cmlidXRlAENvbXBpbGF0
aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAU3lz
dGVtLlJ1bnRpbWUuVmVyc2lvbmluZwBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUAU2NyaXB0Q29t
cG9uZW50X2RiMjM3YjFiODYyYjQ2MTdiZjhmOTQzYTExNTZkOGEwLmRsbAAAC0kAbgBwAHUAdAAA
JU8AdgBlAHIAbABhAHAAcABpAG4AZwAgAFIAYQBuAGcAZQAuAAAhTgBvAHQAIABJAG0AcABsAGUA
bQBlAG4AdABlAGQALgAANVMAZQBsAGUAYwB0ACAAcgBhAG4AZwBlACAAcwB0AGEAcgB0ACAAYwBv
AGwAdQBtAG4ALgAAL1MAZQBsAGUAYwB0ACAAcgBhAG4AZwBlACAAZQBuAGQAIABjAG8AbAB1AG0A
LgAAJ1MAZQBsAGUAYwB0ACAAdgBhAGwAdQBlACAAYwBvAGwAdQBtAC4AAEVTAGUAbABlAGMAdAAg
AGQAaQBjAHQAaQBvAG4AYQByAHkAIAByAGUAcwB1AGwAdAAgAHYAYQByAGkAYQBiAGwAZQAuAAAA
AABNXCnxsGdOQobzA0A+EpYmAAi3elxWGTTgiQiwP19/EdUKOgMgAAEDAAABBAAAEgwHBhUSGAES
DAQAABIIBwYVEhgBEggEAAASEQcGFRIYARIRBAAAEhQHBhUSGAESFAQIABIMBAgAEggECAASEQQI
ABIUBCABAhwDIAAIBCAAEhUDIAAOAh4ABxABAR4AHgAHMAEBARAeAAITAAQgABMABwYVEhkBEwAE
KAATAAgWz0kLuAw06giJhF3NgIDMkQsgBQESIQgCEiUSKQQgAB0OAyAAAgQoAB0OAwYSJAMGEigJ
IAQBCA4SJRIpBSABARIcAwYSIQUgAQESIQYVEjEBEiwGIAMBHBwcBSABCBIsBCABCBwDIAAcAwYS
NQIGHAMoABwJIAEBFRI9ARIsBiACARJBCAUgAgEcHAQgABJFBCABARwEIAASSQggABUSPQESLAQg
ARwcBCAAEk0HBhUSPQESLAIGCAgoABUSPQESLAMoAAgDKAACBCgBHBwEKAASTQUgAQIQDgQgAQEO
AgYOAygADgUgAQERVQgBAAEAAAAAAAUgAgEODhgBAApNeVRlbXBsYXRlCDEwLjAuMC4wAAAEAQAA
AAYVEhgBEgwGFRIYARIIBhUSGAESEQYVEhgBEhQEBwESDAQHARIIBAcBEhEEBwESFBABAAtNeS5D
b21wdXRlcgAADAEAB015LlVzZXIAABMBAA5NeS5XZWJTZXJ2aWNlcwAAEwEADk15LkFwcGxpY2F0
aW9uAAAEAAEcHAMHAQIDBwEIBgABEhURcQQHARIVAwcBDgUQAQAeAAQKAR4ABAcBHgAHIAQBDg4O
DmEBADRTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scy5Tb2FwSHR0cENsaWVudFByb3RvY29s
EkNyZWF0ZV9fSW5zdGFuY2VfXxNEaXNwb3NlX19JbnN0YW5jZV9fAAAABhUSGAETAAYVEhkBEwAE
CgETAAUgAQETAAgHAxMAEwATAAQgAQECBQEAAAAABAcBHQ4FIAASgI0FIAASgJEGIAESgJUcBSAB
CBMABQcDCAgIAwcBHAQHARJFBAcBEkkIBwEVEj0BEiwGFRI9ARIsBSABEwAIBgcDCBwSLAQHARJN
BwcFCAgICAgJAQAESXRlbQAABCAAEiUEIAEcCAUgABKArQggAgEOEBKAqQYgARKAsRwGAAEBEoCh
BSAAEoC9BSAAEoDBBSAAEoDFBiABEoDJHAUgAggICA0HBBKAlRKAqRIwEoChBAABAg4FIAASgM0F
IAASgNEFIAASgNUGIAESgNkcDSAEEoDJCBKA0QgRgOEZBwkCAhKAyRKAlRKAzRKAyRKAyRKA0RKA
oQ0BAAhWYWxpZGF0ZQAABSABAR0OOQEABAAAAAtTdGFydENvbHVtbglFbmRDb2x1bW4LVmFsdWVD
b2x1bW4OUmVzdWx0VmFyaWFibGUAAAoBAAVJbnB1dAAAHwEAGlNlbGVjdCByYW5nZSBzdGFydCBj
b2x1bW4uAAAdAQAYU2VsZWN0IHJhbmdlIGVuZCBjb2x1bW4uAAAZAQAUU2VsZWN0IHZhbHVlIGNv
bHVtbi4AAAsBAAZSZXN1bHQAACwBACdTZWxlY3QgdmFyaWFibGUgd2l0aCBkaWN0aW9uYXJ5IG9i
amVjdC4AAAQgAQEICAEACAAAAAAAHgEAAQBUAhZXcmFwTm9uRXhjZXB0aW9uVGhyb3dzAUcBABou
TkVURnJhbWV3b3JrLFZlcnNpb249djQuMAEAVA4URnJhbWV3b3JrRGlzcGxheU5hbWUQLk5FVCBG
cmFtZXdvcmsgNLxOAAAAAAAAAAAAAN5OAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQTgAAAAAA
AAAAAAAAAAAAAAAAAAAAX0NvckRsbE1haW4AbXNjb3JlZS5kbGwAAAAAAP8lACAAEAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAABgAAIAA
AAAAAAAAAAAAAAAAAAEAAQAAADAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAAEgAAABYYAAA7AIAAAAA
AAAAAAAA7AI0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEAAAAA
AAAAAAAAAAAAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBGAGkA
bABlAEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBEwCAAAB
AFMAdAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAACgCAAABADAAMAAwADAAMAA0AGIAMAAAACwA
AgABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAAAgAAAAMAAIAAEARgBpAGwAZQBW
AGUAcgBzAGkAbwBuAAAAAAAwAC4AMAAuADAALgAwAAAAjAA1AAEASQBuAHQAZQByAG4AYQBsAE4A
YQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfAGQAYgAyADMANwBiADEAYgA4
ADYAMgBiADQANgAxADcAYgBmADgAZgA5ADQAMwBhADEAMQA1ADYAZAA4AGEAMAAuAGQAbABsAAAA
AAAoAAIAAQBMAGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAAAgAAAAlAA1AAEATwByAGkAZwBp
AG4AYQBsAEYAaQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8A
ZABiADIAMwA3AGIAMQBiADgANgAyAGIANAA2ADEANwBiAGYAOABmADkANAAzAGEAMQAxADUANgBk
ADgAYQAwAC4AZABsAGwAAAAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADAA
LgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMAAu
ADAALgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAwAAADwPgAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=]]></arrayElement></arrayElements></property><property id="23" name="UserComponentTypeName" dataType="System.String">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2014, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property><property id="25" 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_db237b1b862b4617bf8f943a1156d8a0</property><property id="26" 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="28" name="Input" hasSideEffects="true"></input></inputs></component>