<component id="2" name="Script Component" componentClassID="Microsoft.ManagedComponentHost" description="Executes a custom script" localeId="1033" version="11" contactInfo="Includes and runs custom script code. For example, apply a business rule that limits the range of valid values in an &quot;income&quot; column or add values in two columns and calculate the average of the sum.;Microsoft Corporation; Microsoft SQL Server; Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;7"><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="30"><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("SC_2923d961693e43508c67daf914a8fad9")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("")> 
<Assembly: AssemblyProduct("SC_2923d961693e43508c67daf914a8fad9")> 
<Assembly: AssemblyCopyright("Copyright @  2016")> 
<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("0337904c-efbe-4626-9a35-d241b8405727")> 

' 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

    Public ReadOnly Property CrmConnection() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("CrmConnection").ConnectionManager
        End Get
    End Property

End Class

Public Class Variables

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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-2016 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.Web.Services.Protocols
Imports System.Text.RegularExpressions
Imports System.Collections
Imports System.Collections.Generic
Imports System.Data

Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS
Imports CozyRoc.SqlServer.SSIS.Attributes
Imports CozyRoc.Dynamics.Crm
Imports CozyRoc.Dynamics.Crm2011.OrganizationService
Imports Metadata4 = CozyRoc.Dynamics.Crm.MetadataService
Imports Metadata3 = CozyRoc.Dynamics.Crm3.MetadataService
Imports ADODB


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute()> _
<CLSCompliant(False)>
<SortProperties(New String() {
    "CrmConnection", "Entity", "Attribute", "LabelColumn", "ValueColumn", "Mapping",
    "Action", "ReplaceValue", "StateCodeColumn"})>
<ValidateProperties("Validate")> _
<FilterProperties("GetProperties")> _
Public Class ScriptMain
    Inherits UserComponent


    Public Const StatusCode As String = "statuscode"


    Public Enum NonMatchAction
        Create
        Replace
        Nullify
        Ignore
        RaiseError
    End Enum    ' NonMatchAction


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Try
            Dim label As String = Convert.ToString(GetBufferValue_(Row.Buffer, m_lcIdx))

            If Not m_dictionary Is Nothing Then
                ' Mapping specified. Use it.
                label = Convert.ToString(m_dictionary(label))
            End If

            If String.IsNullOrEmpty(label) Then
                Exit Sub
            End If

            Dim value As Object = m_values(label)
            If Not value Is Nothing Then
                Row.Buffer(m_vcIdx) = Convert.ToInt32(value)
            Else
                ' Input option value not found.
                Select Case Me.Action
                    Case NonMatchAction.Create
                        Call CreateOptionSet_(Row)

                    Case NonMatchAction.Replace
                        Row.Buffer(m_vcIdx) = Convert.ToInt32(Me.ReplaceValue)

                    Case NonMatchAction.Nullify
                        Call Row.Buffer.SetNull(m_vcIdx)

                    Case NonMatchAction.RaiseError
                        Throw New Exception(String.Format("OptionSet label not found: {0}", label))
                End Select
            End If
        Catch ex As SoapException
            Call FireError_(ex.Detail.InnerXml)
        Catch ex As Exception
            Call FireError_(ex.Message)
        End Try
    End Sub ' Input_ProcessInputRow


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

        ' Setup CRM service.
        m_connection = CType( _
            Me.Connections.CrmConnection.AcquireConnection(Nothing),  _
            IConnection)
        Call m_connection.Connect()

        ' Load OptionSet values.
        m_values = GetOptionSetValues_()

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

        ' Get input columns index.
        m_lcIdx = Me.HostComponent.BufferManager.FindColumnByLineageID(
            input.Buffer,
            input.InputColumnCollection(Me.LabelColumn).LineageID)
        m_vcIdx = Me.HostComponent.BufferManager.FindColumnByLineageID(
            input.Buffer,
            input.InputColumnCollection(Me.ValueColumn).LineageID)

        If Not String.IsNullOrEmpty(Me.StateCodeColumn) Then
            m_sccIdx = Me.HostComponent.BufferManager.FindColumnByLineageID(
                input.Buffer,
                input.InputColumnCollection(Me.StateCodeColumn).LineageID)
        End If

        If Not String.IsNullOrEmpty(Me.Mapping) Then
            ' Mapping specified. Load it.
            m_dictionary = LoadMapping_()
        End If
    End Sub ' PreExecute


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

        Call m_connection.Close()
        m_values = Nothing
        m_dictionary = Nothing
    End Sub ' PostExecute


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

        Try
            If String.IsNullOrEmpty(Me.CrmConnection) Then
                Throw New Exception("Select Dynamics CRM Connection.")
            End If

            If String.IsNullOrEmpty(Me.Entity) Then
                Throw New Exception("Select Dynamics CRM entity.")
            End If

            If String.IsNullOrEmpty(Me.Attribute) Then
                Throw New Exception("Select OptionSet attribute.")
            End If

            Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
            If input.IsAttached Then
                If String.IsNullOrEmpty(Me.LabelColumn) Then
                    Throw New Exception("Select label column.")
                End If

                If String.IsNullOrEmpty(Me.ValueColumn) Then
                    Throw New Exception("Select value column.")
                End If

                If Me.Action = NonMatchAction.Create AndAlso _
                    Me.Attribute.Equals(StatusCode, StringComparison.OrdinalIgnoreCase) AndAlso _
                    String.IsNullOrEmpty(Me.StateCodeColumn) Then

                    Throw New Exception("Select statecode column.")
                End If

                ' Setup used input columns.
                Call input.InputColumnCollection.RemoveAll()
                Dim virtInput As IDTSVirtualInput100 = input.GetVirtualInput()
                Dim virtColl As IDTSVirtualInputColumnCollection100 = virtInput.VirtualInputColumnCollection
                Call virtInput.SetUsageType( _
                    virtColl(Me.LabelColumn).LineageID, _
                    DTSUsageType.UT_READONLY)
                Call virtInput.SetUsageType( _
                    virtColl(Me.ValueColumn).LineageID, _
                    DTSUsageType.UT_READWRITE)
                If Not String.IsNullOrEmpty(Me.StateCodeColumn) Then
                    Call virtInput.SetUsageType( _
                        virtColl(Me.StateCodeColumn).LineageID, _
                        DTSUsageType.UT_READONLY)
                End If
            End If

            ' Store connection information in the runtime connection collection, too.
            ' Cannot directly use RuntimeConnectionCollection in the property get/set
            ' because of issues with multi-threading.
            Me.ComponentMetaData.RuntimeConnectionCollection("CrmConnection").ConnectionManagerID = Me.CrmConnection

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

        Validate = result
    End Function    'Validate


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of entities in the currently selected Dynamics CRM connection.
    Public Function GetEntityList() As String()
        Dim result() As String

        Dim connection As IConnection = CType( _
            Me.DesignConnections(Me.CrmConnection).AcquireConnection(Nothing),  _
            IConnection)
        Call connection.Connect()

        Try
            result = connection.GetEntityList(2)  ' 0 - None
            Call Array.Sort(result)
        Finally
            Call connection.Close()
        End Try

        GetEntityList = result
    End Function    ' GetEntityList


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of OptionSet attributes in the currently selected Dynamics CRM entity.
    Public Function GetOptionSetList() As String()
        If String.IsNullOrEmpty(Me.Entity) Then
            Throw New Exception("Select Dynamics CRM Entity.")
        End If

        If m_attributes.Contains(Me.Entity) Then
            Return CType(m_attributes(Me.Entity), String())
        End If

        ' Load entity's OptionSet attributes.
        Dim result As New ArrayList()

        Dim connection As IConnection = CType( _
            Me.DesignConnections(Me.CrmConnection).AcquireConnection(Nothing),  _
            IConnection)
        Call connection.Connect()

        Try
            Dim service As Object = connection.GetService(0)    ' 0 - CRM Service
            ' 11 - AttributeTypeCode.Picklist (CRM 2011)
            ' 12 - AttributeType.Picklist (CRM 4)
            Dim pickListType As Integer = Convert.ToInt32(IIf(TypeOf service Is OrganizationServiceClient, 11, 12))
            ' 13 - AttributeTypeCode.Status (CRM 2011)
            ' 15 - AttributeType.Status (CRM 4)
            Dim statusType As Integer = Convert.ToInt32(IIf(TypeOf service Is OrganizationServiceClient, 13, 15))

            Dim entity As IEntity = connection.GetEntity(Me.Entity)
            Dim attributes() As IAttribute = entity.GetAttributes()
            For Each attribute As IAttribute In attributes
                If attribute.CrmType = pickListType OrElse attribute.CrmType = statusType Then
                    Call result.Add(attribute.Name)
                End If
            Next

            Call result.Sort()
        Finally
            Call connection.Close()
        End Try

        m_attributes(Me.Entity) = result.ToArray(GetType(String))

        GetOptionSetList = CType(m_attributes(Me.Entity), String())
    End Function    ' GetOptionSetList


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

        ' Setup static.
        Call result.Add("CrmConnection")
        Call result.Add("Entity")
        Call result.Add("Attribute")
        Call result.Add("LabelColumn")
        Call result.Add("ValueColumn")
        Call result.Add("Mapping")
        Call result.Add("Action")

        ' Setup dynamic.
        Select Case Me.Action
            Case NonMatchAction.Create
                If String.Equals( _
                    Me.Attribute, _
                    StatusCode, _
                    StringComparison.OrdinalIgnoreCase) Then

                    Call result.Add("StateCodeColumn")
                End If

            Case NonMatchAction.Replace
                Call result.Add("ReplaceValue")
        End Select

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


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category(" Settings")> _
    <Description("Select Dynamics CRM Connection Manager.")> _
    <Connection("CrmConnectionType")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property CrmConnection() As String
        Get
            CrmConnection = m_crmConnection
        End Get
        Set(ByVal value As String)
            If m_crmConnection <> value Then
                m_crmConnection = value
                Me.Entity = String.Empty
            End If
        End Set
    End Property    ' CrmConnection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category(" Settings")> _
    <Description("Select Dynamics CRM entity.")> _
    <List("GetEntityList")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property Entity() As String
        Get
            Entity = m_entity
        End Get
        Set(ByVal value As String)
            If m_entity <> value Then
                m_entity = value
                Me.Attribute = String.Empty
            End If
        End Set
    End Property    ' Entity


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category(" Settings")> _
    <Description("Select OptionSet attribute.")> _
    <List("GetOptionSetList")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property Attribute() As String
        Get
            Attribute = m_attribute
        End Get
        Set(ByVal value As String)
            m_attribute = value
        End Set
    End Property    ' Attribute


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category(" Settings")> _
    <Description("Select column containing OptionSet label.")> _
    <InputVirtualColumn()> _
    Public Property LabelColumn() As String
        Get
            LabelColumn = m_labelCol
        End Get
        Set(ByVal value As String)
            m_labelCol = value
        End Set
    End Property    ' LabelColumn


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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category(" Settings")> _
    <Description("Select variable containing mapping (string, dictionary, recordset). Optional.")> _
    <Variable()> _
    Public Property Mapping() As String
        Get
            Mapping = m_mapping
        End Get
        Set(ByVal value As String)
            m_mapping = value
        End Set
    End Property    ' Mapping


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("No match")> _
    <Description("Select how to handle non-matching values.")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property Action() As NonMatchAction
        Get
            Action = m_action
        End Get
        Set(value As NonMatchAction)
            m_action = value
        End Set
    End Property    ' Action


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("No match")> _
    <Description("Specifies replace value to use when there is no match.")> _
    Public Property ReplaceValue() As Integer
        Get
            ReplaceValue = m_replaceValue
        End Get
        Set(value As Integer)
            m_replaceValue = value
        End Set
    End Property    ' ReplaceValue


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("No match")> _
    <Description("Select column containing state code.")> _
    <InputVirtualColumn()> _
    Public Property StateCodeColumn() As String
        Get
            StateCodeColumn = m_stateCodeCol
        End Get
        Set(ByVal value As String)
            m_stateCodeCol = value
        End Set
    End Property    ' StateCodeColumn
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property CrmConnectionType() As String()
        Get
            CrmConnectionType = New String() {"DYNAMICS-CRM"}
        End Get
    End Property    ' CrmConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub FireError_(ByVal message As String)
        Dim cancel As Boolean = False
        Call MyBase.ComponentMetaData.FireError( _
            0, _
            "Dynamics CRM OptionSet", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub ' FireError_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    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 GetBufferValue_( _
        ByVal buffer As Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer, _
        ByVal index As Integer) As Object

        Dim result As Object = Nothing

        If index <> -1 AndAlso Not buffer.IsNull(index) Then
            result = buffer(index)
        End If

        GetBufferValue_ = result
    End Function    ' GetBufferValue_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Load OptionSet attribute values.
    Private Function GetOptionSetValues_() As Hashtable
        Dim result As New Hashtable

        Dim service As Object = m_connection.GetService(0)   ' 0 - CRM Service
        Dim service2011 As OrganizationServiceClient = TryCast( _
            service,  _
            OrganizationServiceClient)
        If Not service2011 Is Nothing Then
            ' CRM 2011.
            Dim req As New OrganizationRequest()
            req.RequestName = "RetrieveAttribute"
            req("MetadataId") = New Guid()
            req("RetrieveAsIfPublished") = False
            req("EntityLogicalName") = Me.Entity
            req("LogicalName") = Me.Attribute

            Dim res As OrganizationResponse = service2011.Execute(req)
            Dim enumMeta As EnumAttributeMetadata = CType( _
                res("AttributeMetadata"),  _
                EnumAttributeMetadata)
            For Each optionMeta As OptionMetadata In enumMeta.OptionSet.Options
                ' Find invariant label.
                Dim invariantIndex As Integer = -1
                Dim count As Integer = optionMeta.Label.LocalizedLabels.Count
                For index As Integer = 0 To count - 1
                    Dim label As LocalizedLabel = optionMeta.Label.LocalizedLabels(index)
                    If label.LanguageCode = 1033 Then
                        invariantIndex = index
                        Exit For
                    End If
                Next

                If invariantIndex = -1 Then
                    ' Invariant label not found.
                    invariantIndex = 0
                End If

                result(optionMeta.Label.LocalizedLabels(invariantIndex).Label) = optionMeta.Value.Value
            Next
        Else
            Dim metadata As Object = m_connection.GetService(1) ' 1 - Metadata Service.
            Dim metadata4 As Metadata4.MetadataService = TryCast( _
                metadata,  _
                Metadata4.MetadataService)
            If Not metadata4 Is Nothing Then
                ' CRM 4.
                Dim req4 As New Metadata4.RetrieveAttributeRequest()
                req4.EntityLogicalName = Me.Entity
                req4.LogicalName = Me.Attribute

                Dim res4 As Metadata4.RetrieveAttributeResponse = CType( _
                    metadata4.Execute(req4),  _
                    Metadata4.RetrieveAttributeResponse)
                Dim options4() As Metadata4.Option = CType( _
                    res4.AttributeMetadata,  _
                    Metadata4.PicklistAttributeMetadata).Options

                For Each option4 As Metadata4.Option In options4
                    ' Find invariant label.
                    Dim invariantIndex As Integer = -1
                    Dim count As Integer = option4.Label.LocLabels.Length
                    For index As Integer = 0 To count - 1
                        Dim label As Metadata4.LocLabel = option4.Label.LocLabels(index)
                        If label.LanguageCode.Value = 1033 Then
                            invariantIndex = index
                            Exit For
                        End If
                    Next

                    If invariantIndex = -1 Then
                        ' Invariant label not found.
                        invariantIndex = 0
                    End If

                    result(option4.Label.LocLabels(invariantIndex).Label) = option4.Value.Value
                Next
            Else
                Dim metadata3 As Metadata3.MetadataService = TryCast(metadata, Metadata3.MetadataService)
                If Not metadata3 Is Nothing Then
                    ' CRM 3.
                    Dim options3() As Metadata3.Option = CType( _
                        metadata3.RetrieveAttributeMetadata(Me.Entity, Me.Attribute),  _
                        Metadata3.PicklistAttributeMetadata).Options

                    For Each option3 As Metadata3.Option In options3
                        result(option3.Description) = option3.OptionValue
                    Next
                Else
                    Throw New Exception("Unhandled service object.")
                End If
            End If
        End If

        GetOptionSetValues_ = result
    End Function    ' GetOptionSetValues_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Create OptionSet for specifed input and output columns.
    Private Sub CreateOptionSet_(ByVal row As InputBuffer)
        Dim name As String = Convert.ToString(GetBufferValue_(row.Buffer, m_lcIdx))
        Dim value As Object = GetBufferValue_(row.Buffer, m_vcIdx)
        Dim isStatusCode As Boolean = Me.Attribute.Equals( _
            StatusCode, _
            StringComparison.OrdinalIgnoreCase)

        Dim service As Object = m_connection.GetService(0)   ' 0 - CRM Service
        Dim service2011 As OrganizationServiceClient = TryCast( _
            service,  _
            OrganizationServiceClient)
        If Not service2011 Is Nothing Then
            ' CRM 2011.
            Dim req As New OrganizationRequest()
            req.RequestName = Convert.ToString(IIf(
                isStatusCode,
                "InsertStatusValue",
                "InsertOptionValue"))

            req("EntityLogicalName") = Me.Entity
            req("AttributeLogicalName") = Me.Attribute

            ' Setup label.
            Dim locLabel2011 As New LocalizedLabel()
            locLabel2011.Label = name
            locLabel2011.LanguageCode = 1033
            Dim label2011 As New Label()
            label2011.LocalizedLabels = New LocalizedLabelCollection()
            label2011.LocalizedLabels.Add(locLabel2011)
            req("Label") = label2011

            If isStatusCode Then
                req("StateCode") = Convert.ToInt32(GetBufferValue_(row.Buffer, m_sccIdx))
            End If

            If Not value Is Nothing Then
                ' Value provided. Use it.
                req("Value") = Convert.ToInt32(value)
            End If

            Dim res2011 As OrganizationResponse = service2011.Execute(req)
            If value Is Nothing Then
                ' Set new OptionSet value.
                row.Buffer(m_vcIdx) = res2011("NewOptionValue")
            End If
        Else
            Dim metadata As Object = m_connection.GetService(1) ' 1 - Metadata Service.
            Dim metadata4 As Metadata4.MetadataService = TryCast( _
                metadata,  _
                Metadata4.MetadataService)
            If Not metadata4 Is Nothing Then
                ' CRM 4.

                ' Setup label.
                Dim locLabel4 As New Metadata4.LocLabel()
                locLabel4.Label = name
                locLabel4.LanguageCode = New Metadata4.CrmNumber()
                locLabel4.LanguageCode.Value = 1033

                If isStatusCode Then
                    Dim isvReq As New Metadata4.InsertStatusValueRequest()
                    isvReq.EntityLogicalName = Me.Entity
                    isvReq.AttributeLogicalName = Me.Attribute
                    isvReq.Label = New Metadata4.CrmLabel()
                    isvReq.Label.LocLabels = New Metadata4.LocLabel() {locLabel4}
                    isvReq.StateCode = New Metadata4.CrmNumber()
                    isvReq.StateCode.Value = Convert.ToInt32(GetBufferValue_(row.Buffer, m_sccIdx))

                    If Not value Is Nothing Then
                        ' Value provided. Use it.
                        isvReq.Value = New Metadata4.CrmNumber()
                        isvReq.Value.Value = Convert.ToInt32(value)
                    End If

                    Dim isvRes As Metadata4.InsertStatusValueResponse = CType( _
                        metadata4.Execute(isvReq),  _
                        Metadata4.InsertStatusValueResponse)
                    If value Is Nothing Then
                        ' Set new OptionSet value.
                        row.Buffer(m_vcIdx) = isvRes.NewOptionValue
                    End If
                Else
                    Dim iovReq As New Metadata4.InsertOptionValueRequest()
                    iovReq.EntityLogicalName = Me.Entity
                    iovReq.AttributeLogicalName = Me.Attribute
                    iovReq.Label = New Metadata4.CrmLabel()
                    iovReq.Label.LocLabels = New Metadata4.LocLabel() {locLabel4}

                    If Not value Is Nothing Then
                        ' Value provided. Use it.
                        iovReq.Value = New Metadata4.CrmNumber()
                        iovReq.Value.Value = Convert.ToInt32(value)
                    End If

                    Dim iovRes As Metadata4.InsertOptionValueResponse = CType( _
                        metadata4.Execute(iovReq),  _
                        Metadata4.InsertOptionValueResponse)
                    If value Is Nothing Then
                        ' Set new OptionSet value.
                        row.Buffer(m_vcIdx) = iovRes.NewOptionValue
                    End If
                End If
            Else
                Dim metadata3 As Metadata3.MetadataService = TryCast(metadata, Metadata3.MetadataService)
                If Not metadata3 Is Nothing Then
                    ' CRM 3 - doesn't support it.
                    Throw New Exception("Dynamics CRM 3 doesn't support OptionSet value insert.")
                Else
                    Throw New Exception("Unhandled service object.")
                End If
            End If
        End If
    End Sub ' CreateOptionSet_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function LoadMapping_() As IDictionary
        Dim mapping As Object = GetVariable_(Me.Mapping)
        Dim mappingDict As New Hashtable
        Dim result As IDictionary = mappingDict

        If TypeOf mapping Is IDictionary Then
            result = CType(mapping, IDictionary)
        ElseIf TypeOf mapping Is IDictionary(Of String, String) Then
            Dim genericDict As IDictionary(Of String, String) = CType( _
                mapping,  _
                IDictionary(Of String, String))
            For Each pair As KeyValuePair(Of String, String) In genericDict
                mappingDict(pair.Key) = pair.Value
            Next
        ElseIf TypeOf mapping Is String Then
            ' Mappings are separated with [CR][LF].
            ' Each mapping is combination [key]=[value].
            Dim mappingList() As String = Regex.Unescape(CStr(mapping)).Split( _
                New String() {"\r\n"}, _
                StringSplitOptions.RemoveEmptyEntries)
            For Each pair As String In mappingList
                Dim keyValue() As String = pair.Split(New Char() {Chr(61)}, 2)  ' 61 (=)

                If (keyValue.Length < 2) Then
                    ' Not a valid item.
                    Continue For
                End If

                mappingDict(keyValue(0)) = keyValue(1)
            Next
        ElseIf TypeOf mapping Is Recordset Then
            ' Mapping is recordset. Use first and second fields.
            Dim rs As Recordset = CType(mapping, Recordset)
            If rs.Fields.Count < 2 Then
                Throw New Exception("Mapping.Recordset should contain at least 2 columns.")
            End If

            If Not (rs.BOF AndAlso rs.EOF) Then
                Call rs.MoveFirst()
            End If

            While Not rs.EOF
                mappingDict(Convert.ToString(rs.Fields(0).Value)) = Convert.ToString(rs.Fields(1).Value)
                Call rs.MoveNext()
            End While
        ElseIf TypeOf mapping Is DataSet Then
            ' Variable contains ADO.NET DataSet. Use first and second fields.
            Dim dt As DataTable = CType(mapping, DataSet).Tables(0)
            If dt.Columns.Count < 2 Then
                Throw New Exception("Mapping.DataSet should contain at least 2 columns.")
            End If

            For Each row As DataRow In dt.Rows
                mappingDict(row(0)) = row(1)
            Next
        Else
            Throw New Exception("Mapping parameter must contain IDictionary, String, Recordset or DataSet.")
        End If

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


#Region "Attributes"
    Private m_crmConnection As String
    Private m_entity As String
    Private m_attribute As String
    Private m_labelCol As String
    Private m_valueCol As String
    Private m_mapping As String
    Private m_action As NonMatchAction
    Private m_replaceValue As Integer
    Private m_stateCodeCol As String

    Private m_connection As IConnection
    Private m_attributes As New Hashtable
    Private m_values As Hashtable
    Private m_lcIdx As Integer
    Private m_vcIdx As Integer
    Private m_sccIdx As Integer
    Private m_dictionary As IDictionary
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[SC_2923d961693e43508c67daf914a8fad9.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<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>{69D7743D-2EC7-4CE0-879E-4895E4F489C3}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>SC_2923d961693e43508c67daf914a8fad9</RootNamespace>
    <AssemblyName>SC_2923d961693e43508c67daf914a8fad9</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <TargetFrameworkProfile></TargetFrameworkProfile>
  </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="adodb, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
      <EmbedInteropTypes>True</EmbedInteropTypes>
    </Reference>
    <Reference Include="CozyRoc.Dynamics, 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.Dynamics.dll</HintPath>
    </Reference>
    <Reference Include="CozyRoc.SSISPlus.2017, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=13.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_13.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.ManagedDTS.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Web.Services" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=14.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=14.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=14.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=14.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Compile Include="main.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </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\" />
    <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>
  </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;vstadebug0ecadbe2-dbf5-43c2-8493-a205c59f8db6/4b4706d6-fcc3-44a6-836a-423b7d67fe34&quot;" />
        <Host Name="SSIS_SC110" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC140</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</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\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[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[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:CodeName>SC_2923d961693e43508c67daf914a8fad9</msb:CodeName>
    <msb:Language>msBuild</msb:Language>
    <msb:DisplayName>SC_2923d961693e43508c67daf914a8fad9</msb:DisplayName>
    <msb:ProjectId>{B023C942-03CF-43A0-9682-C8ECE12F2427}</msb:ProjectId>
  </msb:PropertyGroup>
  <msb:ItemGroup>
    <msb:Project Include="SC_2923d961693e43508c67daf914a8fad9.vbproj" />
    <msb:File Include="main.vb" />
    <msb:File Include="BufferWrapper.vb" />
    <msb:File Include="My Project\Settings.Designer.vb" />
    <msb:File Include="My Project\Resources.resx" />
    <msb:File Include="ComponentWrapper.vb" />
    <msb:File Include="My Project\AssemblyInfo.vb" />
    <msb:File Include="My Project\Resources.Designer.vb" />
    <msb:File Include="My Project\Settings.settings" />
  </msb:ItemGroup>
</c:Project>]]></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="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[SC_2923d961693e43508c67daf914a8fad9.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAABQRQAATAEDAKRIqVoAAAAAAAAAAOAAIiALAVAAAGAAAAAIAAAAAAAAEn8A
AAAgAAAAgAAAAAAAEAAgAAAAAgAABAAAAAAAAAAGAAAAAAAAAADAAAAAAgAAAAAAAAMAYIUAABAA
ABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAMB+AABPAAAAAIAAAEgEAAAAAAAAAAAAAAAAAAAA
AAAAAKAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAAGF8AAAAgAAAAYAAAAAIA
AAAAAAAAAAAAAAAAACAAAGAucnNyYwAAAEgEAAAAgAAAAAYAAABiAAAAAAAAAAAAAAAAAABAAABA
LnJlbG9jAAAMAAAAAKAAAAACAAAAaAAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAAD0
fgAAAAAAAEgAAAACAAUAsDQAAFhJAAABAAAAAAAAAAh+AAC4AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4CKCoAAAoqHgIoKwAACiqmcywAAAqAAQAABHMtAAAKgAIA
AARzLgAACoADAAAEcy8AAAqABAAABCoufgEAAARvMAAACioufgIAAARvMQAACioufgMAAARvMgAA
CioufgQAAARvMwAACioeAig0AAAKKq5+BQAABC0ecgEAAHDQBQAAAig1AAAKbzYAAApzNwAACoAF
AAAEfgUAAAQqGn4GAAAEKh4CgAYAAAQqSgIoMgAABgJzOAAACn0SAAAEKhswAwAyAQAAAQAAEQID
bzkAAAoCexQAAAQoKQAABig6AAAKKDsAAAoKAnsXAAAELBcCexcAAAQGbzwAAAooOgAACig7AAAK
CgYoPQAACiwF3egAAAACexMAAAQGbz4AAAooOgAACgsHLCMDbzkAAAoCexUAAAQHKDoAAAooPwAA
CoxlAAABb0AAAAorcwIoIAAABgwIRQUAAAACAAAACwAAAC4AAABSAAAAQQAAACtQAgMoKwAABitH
A285AAAKAnsVAAAEAigiAAAGKEEAAAqMZQAAAW9AAAAKKyQDbzkAAAoCexUAAARvQgAACisRcjMA
AHAGKEMAAApzRAAACnreOyUoRQAACg0CCW9GAAAKb0cAAAooJwAABihIAAAK3hwlKEUAAAoTBAIR
BG9JAAAKKCcAAAYoSAAACt4AKgAAARwAAAAAAAD29gAfJwAAAQAAAAD2FQEcKAAAARMwBQANAQAA
AgAAEQIoSgAACgICexgAAARvNwAABhRvSwAACnQkAAABfREAAAQCexEAAARvTAAACgICKCoAAAZ9
EwAABAIoTQAACm9OAAAKFoxlAAABb08AAAoKAgIoUAAACm9RAAAKBm9SAAAKBm9TAAAKAigaAAAG
b1QAAApvVQAACm9WAAAKfRQAAAQCAihQAAAKb1EAAAoGb1IAAAoGb1MAAAoCKBwAAAZvVAAACm9V
AAAKb1YAAAp9FQAABAIoJAAABig9AAAKLTICAihQAAAKb1EAAAoGb1IAAAoGb1MAAAoCKCQAAAZv
VAAACm9VAAAKb1YAAAp9FgAABAIoHgAABig9AAAKLQwCAigsAAAGfRcAAAQqggIoVwAACgJ7EQAA
BG9YAAAKAhR9EwAABAIUfRcAAAQqAAAbMAMAhAEAAAMAABECKBQAAAYoPQAACiwLcnEAAHBzRAAA
CnoCKBYAAAYoPQAACiwLcrEAAHBzRAAACnoCKBgAAAYoPQAACiwLcukAAHBzRAAACnoCKE0AAApv
TgAAChaMZQAAAW9PAAAKDAhvWQAACjnYAAAAAigaAAAGKD0AAAosC3IhAQBwc0QAAAp6AigcAAAG
KD0AAAosC3JLAQBwc0QAAAp6AiggAAAGLSsCKBgAAAZydQEAcBtvWgAACiwYAigkAAAGKD0AAAos
C3KLAQBwc0QAAAp6CG9TAAAKb1sAAAoIb1wAAAoNCW9dAAAKEwQJEQQCKBoAAAZvXgAACm9fAAAK
Fm9gAAAKJgkRBAIoHAAABm9eAAAKb18AAAoXb2AAAAomAigkAAAGKD0AAAotGgkRBAIoJAAABm9e
AAAKb18AAAoWb2AAAAomAihNAAAKb2EAAApyvQEAcG9iAAAKAigUAAAGb2MAAAoXC94aJShFAAAK
EwUWCwMRBW9JAAAKUShIAAAK3gAHCgYqQRwAAAAAAAAAAAAAZgEAAGYBAAAaAAAAKAAAARswAgA+
AAAABAAAEQIoZAAACgIoFAAABm9lAAAKFG9mAAAKdCQAAAEMCG9MAAAKCBhvZwAACgsHKAEAACve
BwhvWAAACtwHCgYqAAABEAAAAgAjABAzAAcAAAAAGzAEAGMBAAAFAAARAigWAAAGKD0AAAosC3LZ
AQBwc0QAAAp6AnsSAAAEAigWAAAGb2kAAAosHAJ7EgAABAIoFgAABm8+AAAKdAUAABsKOBoBAABz
agAACgsCKGQAAAoCKBQAAAZvZQAAChRvZgAACnQkAAABDAhvTAAACggWb2sAAAooOgAACiV1MAAA
ART+Ax8LjGUAAAEfDIxlAAABKGwAAAooOgAACig/AAAKDXUwAAABFP4DHw2MZQAAAR8PjGUAAAEo
bAAACig6AAAKKD8AAAoTBAgCKBYAAAZvbQAACm9uAAAKEwUWEwYrMBEFEQaaEwcRB29vAAAKCS4L
EQdvbwAAChEEMw4HEQdvcAAACm9xAAAKJhEGF9YTBhEGEQWOaTLIB29yAAAK3gcIb1gAAArcAnsS
AAAEAigWAAAGB9BkAAABKDUAAApvcwAACm90AAAKAnsSAAAEAigWAAAGbz4AAAp0BQAAGwoGKgAB
EAAAAgBwALIiAQcAAAAAEzADAK0AAAAGAAARc2oAAAoKBnK9AQBwb3EAAAomBnIRAgBwb3EAAAom
BnIfAgBwb3EAAAomBnIzAgBwb3EAAAomBnJLAgBwb3EAAAomBnJjAgBwb3EAAAomBnJzAgBwb3EA
AAomAiggAAAGCwcsBgcXLiMrLQIoGAAABnJ1AQBwGyh1AAAKLBoGcoECAHBvcQAACiYrDAZyoQIA
cG9xAAAKJgbQZAAAASg1AAAKb3MAAAp0BQAAGyoAAAATMAEACQAAAAcAABECewgAAAQKBiqKAnsI
AAAEAxYodgAACiwSAgN9CAAABAJ+dwAACigXAAAGKhMwAQAJAAAABwAAEQJ7CQAABAoGKooCewkA
AAQDFih2AAAKLBICA30JAAAEAn53AAAKKBkAAAYqEzABAAkAAAAHAAARAnsKAAAECgYqIgIDfQoA
AAQqAAATMAEACQAAAAcAABECewsAAAQKBioiAgN9CwAABCoAABMwAQAJAAAABwAAEQJ7DAAABAoG
KiICA30MAAAEKgAAEzABAAkAAAAHAAARAnsNAAAECgYqIgIDfQ0AAAQqAAATMAEACQAAAAgAABEC
ew4AAAQKBioiAgN9DgAABCoAABMwAQAJAAAACQAAEQJ7DwAABAoGKiICA30PAAAEKgAAEzABAAkA
AAAHAAARAnsQAAAECgYqIgIDfRAAAAQqAAATMAQAEQAAAAoAABEXjWQAAAElFnK7AgBwogoGKgAA
ABMwBwAdAAAACwAAERYKAihNAAAKFnLVAgBwA353AAAKFhIAb3gAAAoqAAAAGzADADQAAAAMAAAR
FAwCKHkAAAoDEgJvegAACggDb3sAAApvfAAACig6AAAKC94HCG99AAAK3AcoOgAACgoGKgEQAAAC
ABAAFCQABwAAAAATMAIAJQAAAA0AABEUCwQVLhYDBG9+AAAKLQ0DBG9/AAAKKDoAAAoLByg6AAAK
CgYqAAAAEzADAMUCAAAOAAARczgAAAoLAnsRAAAEFm9rAAAKKDoAAAp1MAAAAQwIOS4BAABzgAAA
Cg0JcgMDAHBvgQAACglyJwMAcBIE/hUyAAABEQSMMgAAAW+CAAAKCXI9AwBwFox7AAABb4IAAAoJ
cmkDAHACKBYAAAZvggAACglyjQMAcAIoGAAABm+CAAAKCAlvgwAACnKlAwBwb4QAAAp0fAAAAW+F
AAAKb4YAAAoTBRYTBjiWAAAAEQURBpoTBxUTCBEHb4cAAApviAAACm+JAAAKF9oTCRYTCisrEQdv
hwAACm+IAAAKEQpvigAACm+LAAAKIAkEAAAzBhEKEwgrDBEKF9YTChEKEQkxzxEIFTMDFhMIBxEH
b4cAAApviAAAChEIb4oAAApvjAAAChEHb40AAAoTCxILKI4AAAqMZQAAAW90AAAKEQYX1hMGEQYR
BY5pP1////84cAEAAAJ7EQAABBdvawAACig6AAAKEwwRDHU1AAABEw0RDTnhAAAAc48AAAoTDhEO
AigWAAAGb5AAAAoRDgIoGAAABm+RAAAKEQ0RDm+SAAAKdIIAAAFvkwAACnSEAAABb5QAAAoTDxYT
EDiMAAAAEQ8REJoTERUTEhERb5UAAApvlgAACo5pF9oTExYTFCssERFvlQAACm+WAAAKERSab5cA
AApvmAAACiAJBAAAMwYRFBMSKwwRFBfWExQRFBETMc4REhUzAxYTEgcREW+VAAAKb5YAAAoREppv
mQAAChERb5oAAApvmAAACoxlAAABb3QAAAoREBfWExAREBEPjmk/af///ytsEQx1OAAAARMVERUs
VBEVAigWAAAGAigYAAAGb5sAAAp0iAAAAW+cAAAKExYWExcrJhEWEReaExgHERhvnQAAChEYb54A
AAqMZQAAAW90AAAKERcX1hMXERcRFo5pMtIrC3LJAwBwc0QAAAp6BwoGKgAAABMwBQBeAwAADwAA
EQIDbzkAAAoCexQAAAQoKQAABig6AAAKKDsAAAoKAgNvOQAACgJ7FQAABCgpAAAGKDoAAAoLAigY
AAAGcnUBAHAbb1oAAAoMAnsRAAAEFm9rAAAKKDoAAAp1MAAAAQ0JORgBAABzgAAAChMEEQQIcv0D
AHByIQQAcChsAAAKKDoAAAooOwAACm+BAAAKEQRyaQMAcAIoFgAABm+CAAAKEQRyRQQAcAIoGAAA
Bm+CAAAKc58AAAoTBREFBm+gAAAKEQUgCQQAAG+hAAAKc6IAAAoTBhEGc6MAAApvpAAAChEGb4gA
AAoRBW+lAAAKEQRybwQAcBEGb4IAAAoILC0RBHJ7BABwAgNvOQAACgJ7FgAABCgpAAAGKDoAAAoo
PwAACoxlAAABb4IAAAoHLBwRBHKPBABwByg6AAAKKD8AAAqMZQAAAW+CAAAKCREEb4MAAAoTBwc6
BAIAAANvOQAACgJ7FQAABBEHcpsEAHBvhAAACig6AAAKb0AAAAoqAnsRAAAEF29rAAAKKDoAAAoT
CBEIdTUAAAETCREJOZ8BAABzpgAAChMKEQoGb6cAAAoRCnOoAAAKb6kAAAoRCm+XAAAKIAkEAABv
qgAACgg50gAAAHOrAAAKEwsRCwIoFgAABm+sAAAKEQsCKBgAAAZvrQAAChELc64AAApvrwAAChEL
b7AAAAoXjT0AAAElFhEKom+xAAAKEQtzqAAACm+yAAAKEQtvswAACgIDbzkAAAoCexYAAAQoKQAA
Big6AAAKKD8AAApvqgAACgcsIxELc6gAAApvtAAAChELb7UAAAoHKDoAAAooPwAACm+qAAAKEQkR
C2+SAAAKdD8AAAETDAc62AAAAANvOQAACgJ7FQAABBEMb7YAAAqMZQAAAW9AAAAKKnO3AAAKEw0R
DQIoFgAABm+4AAAKEQ0CKBgAAAZvuQAAChENc64AAApvugAAChENb7sAAAoXjT0AAAElFhEKom+x
AAAKBywjEQ1zqAAACm+8AAAKEQ1vvQAACgcoOgAACig/AAAKb6oAAAoRCRENb5IAAAp0QQAAARMO
By09A285AAAKAnsVAAAEEQ5vvgAACoxlAAABb0AAAAoqEQh1OAAAASwLcrkEAHBzRAAACnpyyQMA
cHNEAAAKeioAABswBQA6AgAAEAAAEQICKB4AAAYoKAAABig6AAAKC3M4AAAKDAgNB3UmAAABLAwH
dCYAAAENOAgCAAAHdQgAABssSgd0CAAAGxMEEQRvvwAAChMFKx0RBW/AAAAKEwYIEgYowQAAChIG
KMIAAApvdAAAChEFb8MAAAot2t3CAQAAEQUsBxEFb8QAAArcB3VkAAABLGYHKMUAAAooxgAACheN
ZAAAASUWcicFAHCiF2/HAAAKEwcWEwgrMxEHEQiaF42OAAABJRYfPZ0Yb8gAAAoTCREJjmkYMg4I
EQkWmhEJF5pvdAAAChEIF9YTCBEIEQeOaTLFOEgBAAAHdREAAAI5mgAAAAd0EQAAAhMKEQpvUwAA
Bm9CAAAGGC8LcjEFAHBzRAAACnoRCm9QAAAGLAkRCm9SAAAGLVgRCm9XAAAGK08IEQpvUwAABhaM
ZQAAAW9EAAAGbz0AAAYoOgAACig7AAAKEQpvUwAABheMZQAAAW9EAAAGbz0AAAYoOgAACig7AAAK
b3QAAAoRCm9VAAAGEQpvUgAABiyoOKMAAAAHdY8AAAE5jQAAAAd0jwAAAW/JAAAKFm/KAAAKEwsR
C2/LAAAKb8wAAAoYLwtymwUAcHNEAAAKegARC2/NAAAKb84AAAoTDCsuEQxvzwAACnRHAAABEw0I
EQ0Wb9AAAAooOgAAChENF2/QAAAKKDoAAApvdAAAChEMb8MAAAotyd4hEQx1igAAASwMEQx1igAA
AW/EAAAK3HIBBgBwc0QAAAp6CQoGKgAAARwAAAIAPgA2dAAMAAAAAAIAzAFJFQIWAAAAADoCAwQF
DgQOBSjRAAAKKh4WjWQAAAEqABMwAQAJAAAACwAAEQIo0gAACgoGKgAAABMwAQAJAAAACwAAEQIo
0wAACgoGKn4CKNQAAAoCAnM2AAAGfRgAAAQCAnM4AAAGfRkAAAQqvgMCKE0AAApvTgAACnKWBgBw
b08AAApv1QAACjMRAgIDFwUOBHMtAAAGbzQAAAYqSisHAgNvNQAABgNvMAAABi3xKgYqOgIoNAAA
CgIDfRoAAAQqggJ7GgAABG9NAAAKb2EAAApyvQEAcG9iAAAKb9YAAAoqOgIoNAAACgIDfRsAAAQq
QnM0AAAKKDoAAAqAHQAABCoeAijXAAAKKgAAGzABAD8AAAAAAAAAfhwAAAQtMn4dAAAEKDoAAAoo
2AAACn4cAAAELRxzOgAABoAcAAAE3hB+HQAABCg6AAAKKNkAAArcfhwAAAQqAAEQAAACAB0ADCkA
EAAAAAA2AgMoOgAACijaAAAKKh4CKNsAAAoqLtAaAAACKDUAAAoqHgIo3AAACioAABMwAQAUAAAA
EQAAEQKMDAAAGy0IKAIAACsKKwICCgYqIgP+FQwAABsqAAAAEzACACgAAAASAAARAnveAAAKb98A
AAoKBowPAAAbLRIoAwAAKwoCe94AAAoGb+AAAAoGKkoCKDQAAAoCc+EAAAp93gAACioAQlNKQgEA
AQAAAAAADAAAAHY0LjAuMzAzMTkAAAAABQBsAAAAQBoAACN+AACsGgAAeBoAACNTdHJpbmdzAAAA
ACQ1AACkBgAAI1VTAMg7AAAQAAAAI0dVSUQAAADYOwAAgA0AACNCbG9iAAAAAAAAAAIAAAFXP6IJ
CQ8AAAD6ATMAFgAAAQAAAJYAAAAcAAAAJAAAAGAAAAAvAAAADAAAAOEAAAAGAAAArAAAAA4AAAAS
AAAAEAAAACEAAAAtAAAADwAAAAEAAAANAAAAAQAAAAMAAAADAAAAAwAAAAAACQ4BAAAAAAAGAG8L
ohQGAEoMohQGAFUJxBMPAEgVAAAGAKgJyg8GALoKyg8GAB8Myg8GAKALyg8GALkLyg8GAAYKyg8G
ANQLjw4GAJQJXBQGAOMIXBQGAG4Kyg8GACEKJQ0KACEJlRIKAHwI3g0KAHsJ3g0OAKAHMhQOADIT
4hMGADoKxBMOAL8JexQOANcJuwQGAGEXjw4OAAITMhQOAIsKuwQGAHAHjw4OALIBfw0KAPEIuA4G
AF0SwhQGAEARew8SAOoLBwcWAFcLjBUWAAYLjBUWAD0LjBUWAKsQlg4GAE8GtRYGAB0atRYaABER
KBYGABURjw4eAEMB1RIeAFAB1RIeAHQA1RIGAPsYtRYWAJEIlg4iADIBrRImACoSBwcqALIXUQUq
ANYYUQUGAPMEjw4qAHYEUQUGAJkBjw4qAEEFLAUqAIsYLAUqAAoRLAUqAEEFBgUqAAoRBgUqAMYN
UQUqANgNUQUqAEkIUQUqAL0NLAUqAL0YLAUqAC8ILAUqAKQYLAUqABUILAUGABQCoAQGANwBoAQG
AAUCoAQuAC0G6AMGAHoTtRYuAHwZ6AMGAKsOjw4KADgM3g0KAMIK3g0WAKYKjBUKAFcV3g0KACIL
3g0WABEMjBUWAFIKjBUWAGkJjBUWACYXJwMSAPwXBwcSAEwRBwcWADcXJwMiAOsArRIKAMsHZg8G
ADgJxBMGAMgIohQGANcKyg8GAO4KXBQGALgIXBQGAI8LXBQGAO8JXBQGAAYJXBQGADcGtRYGAFkG
jw4GABQayg8GAP0WohQGAGcYjw4GAHENjw4GAPMBjw4OAAoEexQyAAYGQA4eAAEA1RIeALsA1RIm
AMwXBwceAAQB1RIeAFcA1RIeACoA1RIGAC8Rjw4eAD0A1RIeADEH1RIeAJgA1RIeANIA1RI2ANIW
5wY2AHES5wYGAPoZjw4OAL4PuwQWADYalg4OAAwXexQiABkBrRIiABoArRIGALAOjw4qAEYEUQUq
AIUEUQUqAPwPUQUGAOoBoAQqAOMHLAUqAHQYLAUqAPsHLAUqAGQELAUqAFwELAUqANUNLAUqALUR
LAUqAGQEBgUqAFwEBgUGAKQBoAQGAEMGjw4OAIoWexQKAMsZlhYGAOoWjw4GAKsRjw4uAHoX6AMu
AOgP6AMuABUQ6AMuALAH6AMuAJkQ6AMSADkSBwcGAKsTFA0GAJQTjw4AAAAArwIAAAAAAQABAAAA
AABYD9EZTQABAAEAAAAAADAT0RlRAAEAAgAAARAAaBfRGWEAAQADAAAAAAAEFdMUYQAFAAgAAQAA
ANUOiwIgAAcADAABAAAARhKLAkUBGAAtAAEAAADeF4sCUQEYADIAAQAAANIWiwJhABoANgABAAAA
ghWLAmEAGwA4AAABEADSFYsCWQEcADkAoRAAAPgEuAIAAB4APAChEAAAZAG4AgAAHgA/AKEQAADb
E7gCAAAeAEIAoRAAAEgCuAIAAB4ARQChEAAAbAG4AgAAHgBHAKEQAACRF7gCAAAeAEkAoRAAAFEC
uAIAAB4ASQChEAAAdQG4AgAAHgBLAKEQAACBAbgCAAAeAE0AoRAAABYXuAIAAB4ATwChEAAAKhi4
AgAAHgBPAKEQAAAiA7gCAAAeAE8AoRAAANwPuAIAAB4ATwChEAAAkBe4AgAAHgBPAAUBAAAkFAAA
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
ABaaAjQAQBj8ADQAfQ6pAtEBsQX8ANEBqQ3PAJkBkwyvAjwAkwxqALEBnhMGALEBrwYQALEBhgYQ
AKkBgwy/AhEEFgTIAiEE3hbOArkBqQ3VAikE5BXbAukBsQXiAjEEkwz8AOkBqQ3PALkBkwziAsEB
LAToAkEE3hbwAskBHxHPAMkB2Az8ANEBnhMGANEBsw0QANEBwgUBANkBnhMGAPEDnhMGANkBFBYf
AzQA4AQmA+kBnhMGAOkBsw0QADEEnhMGAOkBwgUsAzEEnQwBAPEBnhMGAPEBrwYQAPEBlgYQACkE
nhMGAPEBsw0zA/EBqQ3VAikE8hU6A/EB4QUsA/EB0wXiAvEBnQwsA/EBkwziAvkB6Az8AAECnhMG
AAECrwYQAAEClgYQAAECsw0zAwECqQ3VAgECnQwsAwECkwziAgkC6Az8AEwAhhOOA1QAHhhqAFwA
ABpqAFwAkwytAzECaRkkAVEEZAgGAFkEbw2dAGEEKAeyAyEDpxe3AyEDpxfBA3kEdxXJA4EEfQ7P
AykCTxbWA5EEQBj8ACkCSxfcA5kEhhPiAzECHhglAjkCfQ6eAYkCnhPoA6EEmhkkAaEEmxckAaEC
nhMGAEkBvgL8AJEDbRL3A7ECnhMGAKkEHRP9A6kErRf9A8EA3RWWAcEA7wX8AMEAbw3PALEEiQUK
BGwAchkhBHQAkwxqAHQAnQwmA3QAnhMGAA4AHABcBAgAgABxBAgAhAB2BAgAiAB7BAgAjACABAgA
kACFBCkAqwAmCy4ACwDzBS4AEwD8BS4AGwAbBi4AIwAkBi4AKwBNBi4AMwBNBi4AOwAkBi4AQwBT
Bi4ASwBNBi4AUwBqBi4AWwBNBi4AYwBwBi4AawCaBi4AcwCnBkAAiwB2BEAAgwDxBkMAewAnB0MA
gwDxBkkAqwA3C2MAewAnB2MAgwDxBmkAqwBLC4AAiwB2BIMAkwB2BIMAmwB2BIMAewAnB4kAqwBY
C6AAiwB2BKkAgwAbBsAAiwB2BMMAswB2BMMAUwBNBsMAuwBAB8MAwwCsB8MAywC6B8kAgwAbBuAA
iwB2BOMAUwBNBukA0wBsC+kA2wB7C+kA4wCoC+kA6wDxBgMBUwBNBgkB0wBsCwkB2wC/CwkB8wDg
CwkB6wDxBikB0wBsCykB2wDzCykB8wAUDCkB6wDxBkkB0wBsC0kB2wAqDEkB+wB2BGkB0wBsC2kB
2wBZDGkB+wB2BIMBEwF2BIMBYwDNB4MBGwH3B4MBIwF2BIkB0wBsC4kB2wCIDIkBAwF2BKMBEwF2
BKMBYwACCKMBGwH3B6MBIwF2BKkB0wDbDKkB2wDpDKkB6wDxBsMBEwF2BMMBGwEsCMMBYwA2CMMB
IwF2BMkB0wDbDMkB2wAYDeMBEwF2BOMBGwEsCOMBYwBgCOMBIwF2BOkB0wDbDOkB2wBUDekB+wB2
BAMCEwF2BAMCGwEsCAMCYwCKCAMCIwF2BCMCEwF2BCMCYwC0CCMCMwHeCCMCIwF2BEMCEwF2BEMC
GwE+CUMCYwBKCUMCIwF2BGMCEwF2BGMCYwB0CWMCGwE+CWMCIwF2BIMCEwF2BIMCGwE+CYMCYwCe
CYMCIwF2BIkCCwF2BKMCEwF2BKMCOwHICaMCYwDPCaMCIwF2BKkCKwH6BsMCEwF2BMMCQwH5CcMC
SwEqCskCKwH6BuMCEwF2BOMCYwBwCuMCIwF2BOkCKwHxBgMDEwF2BAMDYwCaCgMDIwF2BAkDKwH6
BiMDEwF2BCMDGwE+CSMDYwC0CCMDIwF2BCkDKwH6BkMDgwDxBkMDowDECkkDKwH6BmMDgwDxBmMD
WwBNBmkDKwH6BokDKwH6BqkDKwH6BskDKwEDB+kDKwEMBwkEKwH6BsAGUwBNBgAHUwBNBqAHKwH6
BsAHKwH6BgAIKwH6BiAIKwH6BkAIKwHxBoAIKwH6BsAIKwH6BgAJKwH6BkAJKwH6BoAJKwH6BsAJ
KwH6BgAKKwEDB0AKKwEMB2AKKwH6BqAKKwEVB+AKKwEeBwALgwDxBgALiwB2BCALgwDxBiALiwB2
BEALgwDxBkALiwB2BGALgwDxBmALiwB2BIALiwB2BKALiwB2BMALiwB2BMALgwDxBuALiwB2BAAM
iwB2BAAMgwDxBj8AigRBAIoEQwCKBEUAigRHAIwESQCKBEsAjARNAIoETwCMBFEAigRTAI4EVQCO
BFcAjgRZAI4EhQDXABMBWAGBAcsB3AHqAe8B8wH4AQcCKQIzAvcCQgMCBBUEBAABAAUABQAGAAcA
BwARAAkAEwALABQADAAVAA0AFgAOABcADwAZABAAGgASABsAEwAcABQAHQAZAB4AGwAhAAAAMhOc
BQAAWg+hBQAAAhOmBQAAJhSrBQAAXRKwBQAAmAe1BQAA3xC6BQAAVxq6BQAAXgy6BQAAPA+6BQAA
HA+6BQAATw26BQAArg++BQAAvAzDBQAA+A66BQAAWwfHBQAAXxbHBQAAdhbHBQAA3xDMBQAABA3S
BQAABA3XBQAABA3XBQAARBjbBQAAig7fBQAAig7fBQAAig7fBQAA2xPlBQAA2xPlBQAA2xPlBQAA
FgPqBQAAHgPqBQAA2xPlBQAAnAXuBQIABAADAAIABQAFAAIABgAHAAIABwAJAAIACQALAAIACgAN
AAEACwANAAIAFAAPAAEAFQAPAAIAFgARAAEAFwARAAIAGAATAAEAGQATAAIAGgAVAAEAGwAVAAIA
HAAXAAEAHQAXAAIAHgAZAAEAHwAZAAIAIAAbAAEAIQAbAAIAIgAdAAEAIwAdAAIAJAAfAAEAJQAf
AAIAJgAhAAIALgAjAAIALwAlAAIANwAnAAIAOwApAAIAPQArAAEAPgArAAIAQAAtAAEAQQAtAAIA
QgAvAAIARAAxAAIARgAzAAIASAA1AAIASgA3AAIATAA5AAIATgA7AAIAUAA9AAIAUgA/AAIAUwBB
AAIAXwBDAE4AVQBcAGMAmwGgArgCeQOBA5gDpQMHBBoEKQQwBASAAAABAAAAAAAAAAAAAAAAAIsC
AAAEAAAAAAAAAAAAAAA4BJcEAAAAAAQAAAAAAAAAAAAAADgEjw4AAAAACgAAAAAAAAAAAAAAQQS7
BAAAAAAOAAAAAAAAAAAAAABKBEoYAAAAAAEAAAAAAAAAAAAAAFMEdQIAAAAABAAAAAAAAAAAAAAA
QQQAFAAAAAAOAAAAAAAAAAAAAABKBIcRAAAAAA4AAAAAAAAAAAAAAEoEZBEAAAAADgAAAAAAAAAA
AAAASgQTGQAAAAABAAAAAAAAAAAAAABTBLMTAAAAAAQAAAAAAAAAAAAAADgE6AMAAAAABAAAAAAA
AAAAAAAAOARADgAAAAAOAAAAAAAAAAAAAABKBD4DAAAAAAAAAAABAAAAEBUAABoABAAbAAQAHAAG
AAAAEAA2AF0DAAAQALkAXQMAAAAAuwBdA9EAfQG7ARAEuwEzBAAAAElEVFNDb21wb25lbnRNZXRh
RGF0YTEwMABJRFRTVmFyaWFibGUxMDAASURUU0lucHV0Q29sdW1uMTAwAElEVFNWaXJ0dWFsSW5w
dXRDb2x1bW4xMDAASURUU0lucHV0Q29sdW1uQ29sbGVjdGlvbjEwMABJRFRTVmlydHVhbElucHV0
Q29sdW1uQ29sbGVjdGlvbjEwMABJRFRTUnVudGltZUNvbm5lY3Rpb25Db2xsZWN0aW9uMTAwAElE
VFNJbnB1dENvbGxlY3Rpb24xMDAASURUU1J1bnRpbWVDb25uZWN0aW9uMTAwAElEVFNDb25uZWN0
aW9uTWFuYWdlcjEwMABJRFRTQnVmZmVyTWFuYWdlcjEwMABJRFRTVmFyaWFibGVEaXNwZW5zZXIx
MDAASURUU1ZhcmlhYmxlczEwMABJRFRTSW5wdXQxMDAASURUU1ZpcnR1YWxJbnB1dDEwMABGaWVs
ZDIwAEZpZWxkczIwAFJlY29yZHNldDIwAFJlY29yZHNldDIxAF9WdGJsR2FwNF8xAE51bGxhYmxl
YDEASUVudW1lcmFibGVgMQBDb250ZXh0VmFsdWVgMQBUaHJlYWRTYWZlT2JqZWN0UHJvdmlkZXJg
MQBJRW51bWVyYXRvcmAxAExpc3RgMQBUb0ludDMyAF9WdGJsR2FwMV8yAEtleVZhbHVlUGFpcmAy
AElEaWN0aW9uYXJ5YDIAX1Z0YmxHYXAxXzMAX1Z0YmxHYXAxXzE0AF9WdGJsR2FwM18xNABGaWVs
ZHMxNQBSZWNvcmRzZXQxNQBfVnRibEdhcDFfNgBfVnRibEdhcDJfNgBDb3p5Um9jLlNTSVNQbHVz
LjIwMTcAU0NfMjkyM2Q5NjE2OTNlNDM1MDhjNjdkYWY5MTRhOGZhZDkAPE1vZHVsZT4AQURPREIA
Z2V0X0lEAGdldF9MaW5lYWdlSUQARmluZENvbHVtbkJ5TGluZWFnZUlEAHNldF9Db25uZWN0aW9u
TWFuYWdlcklEAE9iamVjdElEAElucHV0SUQAZ2V0X0JPRgBnZXRfRU9GAF9BRE8AQ296eVJvYy5T
cWxTZXJ2ZXIuU1NJUwBNaWNyb3NvZnQuU3FsU2VydmVyLk1hbmFnZWREVFMAVABEaXNwb3NlX19J
bnN0YW5jZV9fAENyZWF0ZV9fSW5zdGFuY2VfXwB2YWx1ZV9fAEdldFZhcmlhYmxlXwBHZXRCdWZm
ZXJWYWx1ZV8ATG9hZE1hcHBpbmdfAEZpcmVFcnJvcl8AR2V0T3B0aW9uU2V0VmFsdWVzXwBDcmVh
dGVPcHRpb25TZXRfAFN5c3RlbS5EYXRhAGdldF9Db21wb25lbnRNZXRhRGF0YQBQcm9qZWN0RGF0
YQBnZXRfQXR0cmlidXRlTWV0YWRhdGEAUmV0cmlldmVBdHRyaWJ1dGVNZXRhZGF0YQBFbnVtQXR0
cmlidXRlTWV0YWRhdGEAUGlja2xpc3RBdHRyaWJ1dGVNZXRhZGF0YQBPcHRpb25NZXRhZGF0YQBP
cHRpb25TZXRNZXRhZGF0YQBtc2NvcmxpYgBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYwBNaWNy
b3NvZnQuVmlzdWFsQmFzaWMATG9ja09uZUZvclJlYWQAQWRkAGdldF9Jc0F0dGFjaGVkAEd1aWQA
RmllbGQAUmVwbGFjZQBDb3p5Um9jLkR5bmFtaWNzLkNybTMuTWV0YWRhdGFTZXJ2aWNlAENvenlS
b2MuRHluYW1pY3MuQ3JtLk1ldGFkYXRhU2VydmljZQBDb3p5Um9jLkR5bmFtaWNzLkNybTIwMTEu
T3JnYW5pemF0aW9uU2VydmljZQBHZXRTZXJ2aWNlAENyZWF0ZUluc3RhbmNlAGdldF9HZXRJbnN0
YW5jZQBpbnN0YW5jZQBnZXRfTGFuZ3VhZ2VDb2RlAHNldF9MYW5ndWFnZUNvZGUAZ2V0X1N0YXRl
Q29kZQBzZXRfU3RhdGVDb2RlAEdldEhhc2hDb2RlAFN0YXR1c0NvZGUAWG1sTm9kZQBnZXRfTWVz
c2FnZQBlcnJNZXNzYWdlAG1lc3NhZ2UARGF0YVRhYmxlAElFbnVtZXJhYmxlAElEaXNwb3NhYmxl
AEhhc2h0YWJsZQBSdW50aW1lVHlwZUhhbmRsZQBHZXRUeXBlRnJvbUhhbmRsZQBnZXRfTmFtZQBz
ZXRfTG9naWNhbE5hbWUAc2V0X0F0dHJpYnV0ZUxvZ2ljYWxOYW1lAHNldF9FbnRpdHlMb2dpY2Fs
TmFtZQB2YXJOYW1lAHNldF9SZXF1ZXN0TmFtZQBJbnB1dE5hbWUATWljcm9zb2Z0LlNxbFNlcnZl
ci5EdHMuUnVudGltZQBNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZQBVbmVzY2FwZQBE
VFNVc2FnZVR5cGUAU2V0VXNhZ2VUeXBlAGdldF9Dcm1UeXBlAGdldF9Dcm1Db25uZWN0aW9uVHlw
ZQBHZXRUeXBlAElnbm9yZQBnZXRfQ3VsdHVyZQBzZXRfQ3VsdHVyZQBfcmVzQ3VsdHVyZQBBcHBs
aWNhdGlvbkJhc2UASW50ZXJuYWxEYXRhQ29sbGVjdGlvbkJhc2UAQXBwbGljYXRpb25TZXR0aW5n
c0Jhc2UATWV0YWRhdGFTZXJ2aWNlUmVzcG9uc2UAUmV0cmlldmVBdHRyaWJ1dGVSZXNwb25zZQBJ
bnNlcnRPcHRpb25WYWx1ZVJlc3BvbnNlAEluc2VydFN0YXR1c1ZhbHVlUmVzcG9uc2UAT3JnYW5p
emF0aW9uUmVzcG9uc2UAQ2xvc2UARGlzcG9zZQBWYWxpZGF0ZQBDcmVhdGUARWRpdG9yQnJvd3Nh
YmxlU3RhdGUASUF0dHJpYnV0ZQBnZXRfQXR0cmlidXRlAHNldF9BdHRyaWJ1dGUARGlzcElkQXR0
cmlidXRlAENvbXBpbGVyR2VuZXJhdGVkQXR0cmlidXRlAEd1aWRBdHRyaWJ1dGUASGVscEtleXdv
cmRBdHRyaWJ1dGUAQ29tRXZlbnRJbnRlcmZhY2VBdHRyaWJ1dGUAR2VuZXJhdGVkQ29kZUF0dHJp
YnV0ZQBEZWJ1Z2dlck5vblVzZXJDb2RlQXR0cmlidXRlAERlYnVnZ2FibGVBdHRyaWJ1dGUAVmFy
aWFibGVBdHRyaWJ1dGUARWRpdG9yQnJvd3NhYmxlQXR0cmlidXRlAENvbVZpc2libGVBdHRyaWJ1
dGUAQXNzZW1ibHlUaXRsZUF0dHJpYnV0ZQBTdGFuZGFyZE1vZHVsZUF0dHJpYnV0ZQBIaWRlTW9k
dWxlTmFtZUF0dHJpYnV0ZQBJbnRlcmZhY2VUeXBlQXR0cmlidXRlAEFzc2VtYmx5VHJhZGVtYXJr
QXR0cmlidXRlAFRhcmdldEZyYW1ld29ya0F0dHJpYnV0ZQBEZWJ1Z2dlckhpZGRlbkF0dHJpYnV0
ZQBJbnB1dFZpcnR1YWxDb2x1bW5BdHRyaWJ1dGUAQXNzZW1ibHlGaWxlVmVyc2lvbkF0dHJpYnV0
ZQBNeUdyb3VwQ29sbGVjdGlvbkF0dHJpYnV0ZQBDb25uZWN0aW9uQXR0cmlidXRlAEFzc2VtYmx5
RGVzY3JpcHRpb25BdHRyaWJ1dGUARGVmYXVsdE1lbWJlckF0dHJpYnV0ZQBUeXBlSWRlbnRpZmll
ckF0dHJpYnV0ZQBWYWxpZGF0ZVByb3BlcnRpZXNBdHRyaWJ1dGUAUmVmcmVzaFByb3BlcnRpZXNB
dHRyaWJ1dGUARmlsdGVyUHJvcGVydGllc0F0dHJpYnV0ZQBTb3J0UHJvcGVydGllc0F0dHJpYnV0
ZQBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRlAENvQ2xhc3NBdHRyaWJ1dGUAQXNzZW1i
bHlQcm9kdWN0QXR0cmlidXRlAEFzc2VtYmx5Q29weXJpZ2h0QXR0cmlidXRlAENMU0NvbXBsaWFu
dEF0dHJpYnV0ZQBTU0lTU2NyaXB0Q29tcG9uZW50RW50cnlQb2ludEF0dHJpYnV0ZQBMaXN0QXR0
cmlidXRlAEFzc2VtYmx5Q29tcGFueUF0dHJpYnV0ZQBDYXRlZ29yeUF0dHJpYnV0ZQBSdW50aW1l
Q29tcGF0aWJpbGl0eUF0dHJpYnV0ZQBtX2F0dHJpYnV0ZQBQcmVFeGVjdXRlAFBvc3RFeGVjdXRl
AG1fVmFsdWUAZ2V0X1ZhbHVlAHNldF9WYWx1ZQBnZXRfUmVwbGFjZVZhbHVlAHNldF9SZXBsYWNl
VmFsdWUAbV9yZXBsYWNlVmFsdWUAZ2V0X09wdGlvblZhbHVlAGdldF9OZXdPcHRpb25WYWx1ZQBH
ZXRPYmplY3RWYWx1ZQB2YWx1ZQBJSWYAU3lzdGVtLlRocmVhZGluZwBTeXN0ZW0uUnVudGltZS5W
ZXJzaW9uaW5nAGdldF9NYXBwaW5nAHNldF9NYXBwaW5nAG1fbWFwcGluZwBDb21wYXJlU3RyaW5n
AFRvU3RyaW5nAFVubG9jawBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuTXlTZXJ2aWNlcy5JbnRlcm5h
bABnZXRfTGFiZWwAc2V0X0xhYmVsAExvY0xhYmVsAExvY2FsaXplZExhYmVsAENybUxhYmVsAFN5
c3RlbS5Db21wb25lbnRNb2RlbABnZXRfRGV0YWlsAFJlbW92ZUFsbABTQ18yOTIzZDk2MTY5M2U0
MzUwOGM2N2RhZjkxNGE4ZmFkOS5kbGwASXNOdWxsAFNldE51bGwAU3lzdGVtLlhtbABnZXRfSW5u
ZXJYbWwAbV9zdGF0ZUNvZGVDb2wAbV92YWx1ZUNvbABtX2xhYmVsQ29sAGdldF9JdGVtAHNldF9J
dGVtAFN5c3RlbQBDb3p5Um9jLkR5bmFtaWNzLkNybQBFbnVtAEJvb2xlYW4AU3lzdGVtLkNvbXBv
bmVudE1vZGVsLkRlc2lnbgBTY3JpcHRNYWluAGdldF9TdGF0ZUNvZGVDb2x1bW4Ac2V0X1N0YXRl
Q29kZUNvbHVtbgBnZXRfVmFsdWVDb2x1bW4Ac2V0X1ZhbHVlQ29sdW1uAGdldF9MYWJlbENvbHVt
bgBzZXRfTGFiZWxDb2x1bW4AZ2V0X0FwcGxpY2F0aW9uAE15QXBwbGljYXRpb24AU3lzdGVtLkNv
bmZpZ3VyYXRpb24AU3lzdGVtLkdsb2JhbGl6YXRpb24AZ2V0X0FjdGlvbgBzZXRfQWN0aW9uAE5v
bk1hdGNoQWN0aW9uAG1fYWN0aW9uAEludGVyYWN0aW9uAFN5c3RlbS5SZWZsZWN0aW9uAF9Db2xs
ZWN0aW9uAERhdGFUYWJsZUNvbGxlY3Rpb24ATG9jYWxpemVkTGFiZWxDb2xsZWN0aW9uAERhdGFD
b2x1bW5Db2xsZWN0aW9uAGdldF9JbnB1dENvbHVtbkNvbGxlY3Rpb24AZ2V0X1ZpcnR1YWxJbnB1
dENvbHVtbkNvbGxlY3Rpb24AZ2V0X1J1bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbgBnZXRfSW5w
dXRDb2xsZWN0aW9uAERhdGFSb3dDb2xsZWN0aW9uAElDb25uZWN0aW9uAEFjcXVpcmVDb25uZWN0
aW9uAGdldF9Dcm1Db25uZWN0aW9uAHNldF9Dcm1Db25uZWN0aW9uAG1fY3JtQ29ubmVjdGlvbgBt
X2Nvbm5lY3Rpb24AT3B0aW9uAFNvYXBFeGNlcHRpb24AZ2V0X0Rlc2NyaXB0aW9uAFN0cmluZ0Nv
bXBhcmlzb24AQ3VsdHVyZUluZm8AT3V0cHV0TmFtZU1hcABPdXRwdXRNYXAATWljcm9zb2Z0LlNx
bFNlcnZlci5EVFNSdW50aW1lV3JhcABNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1BpcGVsaW5lV3Jh
cABDaGFyAHB2YXIAQ3JtTnVtYmVyAG1fQXBwT2JqZWN0UHJvdmlkZXIAbV9Vc2VyT2JqZWN0UHJv
dmlkZXIAbV9Db21wdXRlck9iamVjdFByb3ZpZGVyAG1fTXlXZWJTZXJ2aWNlc09iamVjdFByb3Zp
ZGVyAGdldF9CdWZmZXIAUGlwZWxpbmVCdWZmZXIAU2NyaXB0QnVmZmVyAElucHV0QnVmZmVyAGJ1
ZmZlcgBnZXRfUmVzb3VyY2VNYW5hZ2VyAGdldF9Db25uZWN0aW9uTWFuYWdlcgBnZXRfQnVmZmVy
TWFuYWdlcgBTeXN0ZW0uQ29kZURvbS5Db21waWxlcgBNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5S
dW50aW1lLldyYXBwZXIATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUuV3JhcHBlcgBn
ZXRfVXNlcgBnZXRfVmFyaWFibGVEaXNwZW5zZXIARW50ZXIAZ2V0X0NvbXB1dGVyAE15Q29tcHV0
ZXIAX3Jlc01ncgBGaXJlRXJyb3IAUmFpc2VFcnJvcgBDbGVhclByb2plY3RFcnJvcgBTZXRQcm9q
ZWN0RXJyb3IASUVudW1lcmF0b3IAR2V0RW51bWVyYXRvcgBBY3RpdmF0b3IALmN0b3IALmNjdG9y
AE1vbml0b3IAQ296eVJvYy5EeW5hbWljcwBTeXN0ZW0uRGlhZ25vc3RpY3MAZ2V0X0ZpZWxkcwBN
aWNyb3NvZnQuVmlzdWFsQmFzaWMuRGV2aWNlcwBTeXN0ZW0uV2ViLlNlcnZpY2VzAGdldF9XZWJT
ZXJ2aWNlcwBNeVdlYlNlcnZpY2VzAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5BcHBsaWNhdGlvblNl
cnZpY2VzAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcwBNaWNyb3NvZnQuVmlzdWFsQmFz
aWMuQ29tcGlsZXJTZXJ2aWNlcwBTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzAFN5c3Rl
bS5SZXNvdXJjZXMAU0NfMjkyM2Q5NjE2OTNlNDM1MDhjNjdkYWY5MTRhOGZhZDkuTXkuUmVzb3Vy
Y2VzAE15UmVzb3VyY2VzAFNDXzI5MjNkOTYxNjkzZTQzNTA4YzY3ZGFmOTE0YThmYWQ5LlJlc291
cmNlcy5yZXNvdXJjZXMARGVidWdnaW5nTW9kZXMAUmVmcmVzaFByb3BlcnRpZXMAR2V0UHJvcGVy
dGllcwBnZXRfVGFibGVzAFZhcmlhYmxlcwBDb3p5Um9jLlNxbFNlcnZlci5TU0lTLkF0dHJpYnV0
ZXMAR2V0QXR0cmlidXRlcwBtX2F0dHJpYnV0ZXMAbV92YWx1ZXMATXlTZXR0aW5ncwBFcXVhbHMA
Z2V0X0xvY0xhYmVscwBzZXRfTG9jTGFiZWxzAGdldF9Mb2NhbGl6ZWRMYWJlbHMAc2V0X0xvY2Fs
aXplZExhYmVscwBTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scwBDb250YWlucwBnZXRfQ29s
dW1ucwBnZXRfU3RhdGljSW5wdXRDb2x1bW5zAGdldF9TdGF0aWNPdXRwdXRDb2x1bW5zAENvbnZl
cnNpb25zAFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucwBTeXN0ZW0uQ29sbGVjdGlvbnMA
Z2V0X0Rlc2lnbkNvbm5lY3Rpb25zAGdldF9PcHRpb25zAFN0cmluZ1NwbGl0T3B0aW9ucwBSdW50
aW1lSGVscGVycwBPcGVyYXRvcnMAUmVjb3Jkc2V0RXZlbnRzAFNjcmlwdEJ1ZmZlclBsdXMAU2Ny
aXB0Q29tcG9uZW50UGx1cwBnZXRfUm93cwBGb3JtYXQAbV9TeW5jT2JqZWN0AE15UHJvamVjdABD
b25uZWN0AERhdGFTZXQAZ2V0X09wdGlvblNldABfUmVjb3Jkc2V0AEVuZE9mUm93c2V0AFNwbGl0
AEV4aXQAT3JnYW5pemF0aW9uU2VydmljZUNsaWVudABQaXBlbGluZUNvbXBvbmVudABVc2VyQ29t
cG9uZW50AFBhcmVudENvbXBvbmVudABTY3JpcHRDb21wb25lbnQAZ2V0X0hvc3RDb21wb25lbnQA
Z2V0X0N1cnJlbnQAUmVjb3Jkc2V0RXZlbnRzX0V2ZW50AGdldF9Db3VudABNaWNyb3NvZnQuU3Fs
U2VydmVyLlR4U2NyaXB0AENvbnZlcnQAU29ydABNZXRhZGF0YVNlcnZpY2VSZXF1ZXN0AFJldHJp
ZXZlQXR0cmlidXRlUmVxdWVzdABJbnNlcnRPcHRpb25WYWx1ZVJlcXVlc3QASW5zZXJ0U3RhdHVz
VmFsdWVSZXF1ZXN0AE9yZ2FuaXphdGlvblJlcXVlc3QAR2V0T3B0aW9uU2V0TGlzdABBcnJheUxp
c3QAR2V0RW50aXR5TGlzdABNaWNyb3NvZnQuU3FsU2VydmVyLlBpcGVsaW5lSG9zdABNb3ZlRmly
c3QAR2V0VmlydHVhbElucHV0AElzSW5wdXQASW5wdXRfUHJvY2Vzc0lucHV0AE1vdmVOZXh0AG1f
Q29udGV4dABEYXRhUm93AElucHV0X1Byb2Nlc3NJbnB1dFJvdwBOZXh0Um93AHJvdwBtX3NjY0lk
eABtX2xjSWR4AG1fdmNJZHgASW5kZXgAaW5kZXgAUmVnZXgAU0NfMjkyM2Q5NjE2OTNlNDM1MDhj
NjdkYWY5MTRhOGZhZDkuTXkAVG9BcnJheQBnZXRfS2V5AE51bGxpZnkAZ2V0X0Fzc2VtYmx5AElE
aWN0aW9uYXJ5AG1fZGljdGlvbmFyeQBJRW50aXR5AGdldF9FbnRpdHkAc2V0X0VudGl0eQBHZXRF
bnRpdHkAbV9lbnRpdHkASXNOdWxsT3JFbXB0eQAAAAAAMU0AeQAuAFIAZQBzAG8AdQByAGMAZQBz
AC4ATQB5AFIAZQBzAG8AdQByAGMAZQBzAAA9TwBwAHQAaQBvAG4AUwBlAHQAIABsAGEAYgBlAGwA
IABuAG8AdAAgAGYAbwB1AG4AZAA6ACAAewAwAH0AAD9TAGUAbABlAGMAdAAgAEQAeQBuAGEAbQBp
AGMAcwAgAEMAUgBNACAAQwBvAG4AbgBlAGMAdABpAG8AbgAuAAA3UwBlAGwAZQBjAHQAIABEAHkA
bgBhAG0AaQBjAHMAIABDAFIATQAgAGUAbgB0AGkAdAB5AC4AADdTAGUAbABlAGMAdAAgAE8AcAB0
AGkAbwBuAFMAZQB0ACAAYQB0AHQAcgBpAGIAdQB0AGUALgAAKVMAZQBsAGUAYwB0ACAAbABhAGIA
ZQBsACAAYwBvAGwAdQBtAG4ALgAAKVMAZQBsAGUAYwB0ACAAdgBhAGwAdQBlACAAYwBvAGwAdQBt
AG4ALgAAFXMAdABhAHQAdQBzAGMAbwBkAGUAADFTAGUAbABlAGMAdAAgAHMAdABhAHQAZQBjAG8A
ZABlACAAYwBvAGwAdQBtAG4ALgAAG0MAcgBtAEMAbwBuAG4AZQBjAHQAaQBvAG4AADdTAGUAbABl
AGMAdAAgAEQAeQBuAGEAbQBpAGMAcwAgAEMAUgBNACAARQBuAHQAaQB0AHkALgAADUUAbgB0AGkA
dAB5AAATQQB0AHQAcgBpAGIAdQB0AGUAABdMAGEAYgBlAGwAQwBvAGwAdQBtAG4AABdWAGEAbAB1
AGUAQwBvAGwAdQBtAG4AAA9NAGEAcABwAGkAbgBnAAANQQBjAHQAaQBvAG4AAB9TAHQAYQB0AGUA
QwBvAGQAZQBDAG8AbAB1AG0AbgAAGVIAZQBwAGwAYQBjAGUAVgBhAGwAdQBlAAAZRABZAE4AQQBN
AEkAQwBTAC0AQwBSAE0AAS1EAHkAbgBhAG0AaQBjAHMAIABDAFIATQAgAE8AcAB0AGkAbwBuAFMA
ZQB0AAAjUgBlAHQAcgBpAGUAdgBlAEEAdAB0AHIAaQBiAHUAdABlAAAVTQBlAHQAYQBkAGEAdABh
AEkAZAAAK1IAZQB0AHIAaQBlAHYAZQBBAHMASQBmAFAAdQBiAGwAaQBzAGgAZQBkAAAjRQBuAHQA
aQB0AHkATABvAGcAaQBjAGEAbABOAGEAbQBlAAAXTABvAGcAaQBjAGEAbABOAGEAbQBlAAAjQQB0
AHQAcgBpAGIAdQB0AGUATQBlAHQAYQBkAGEAdABhAAAzVQBuAGgAYQBuAGQAbABlAGQAIABzAGUA
cgB2AGkAYwBlACAAbwBiAGoAZQBjAHQALgAAI0kAbgBzAGUAcgB0AFMAdABhAHQAdQBzAFYAYQBs
AHUAZQAAI0kAbgBzAGUAcgB0AE8AcAB0AGkAbwBuAFYAYQBsAHUAZQAAKUEAdAB0AHIAaQBiAHUA
dABlAEwAbwBnAGkAYwBhAGwATgBhAG0AZQAAC0wAYQBiAGUAbAAAE1MAdABhAHQAZQBDAG8AZABl
AAALVgBhAGwAdQBlAAAdTgBlAHcATwBwAHQAaQBvAG4AVgBhAGwAdQBlAABtRAB5AG4AYQBtAGkA
YwBzACAAQwBSAE0AIAAzACAAZABvAGUAcwBuACcAdAAgAHMAdQBwAHAAbwByAHQAIABPAHAAdABp
AG8AbgBTAGUAdAAgAHYAYQBsAHUAZQAgAGkAbgBzAGUAcgB0AC4AAQlcAHIAXABuAABpTQBhAHAA
cABpAG4AZwAuAFIAZQBjAG8AcgBkAHMAZQB0ACAAcwBoAG8AdQBsAGQAIABjAG8AbgB0AGEAaQBu
ACAAYQB0ACAAbABlAGEAcwB0ACAAMgAgAGMAbwBsAHUAbQBuAHMALgAAZU0AYQBwAHAAaQBuAGcA
LgBEAGEAdABhAFMAZQB0ACAAcwBoAG8AdQBsAGQAIABjAG8AbgB0AGEAaQBuACAAYQB0ACAAbABl
AGEAcwB0ACAAMgAgAGMAbwBsAHUAbQBuAHMALgAAgJNNAGEAcABwAGkAbgBnACAAcABhAHIAYQBt
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
YTM1LWQyNDFiODQwNTcyNwAADAEABzEuMC4wLjAAAEkBABouTkVURnJhbWV3b3JrLFZlcnNpb249
djQuNQEAVA4URnJhbWV3b3JrRGlzcGxheU5hbWUSLk5FVCBGcmFtZXdvcmsgNC41CAEAAQAAAAAA
CAEAAAAAAAAACAEA6gMAAAAACAEA7gMAAAAACAEA+gMAAAAACAEA/AMAAAAAGAEACk15VGVtcGxh
dGUIMTEuMC4wLjAAAGsBAAkAAAANQ3JtQ29ubmVjdGlvbgZFbnRpdHkJQXR0cmlidXRlC0xhYmVs
Q29sdW1uC1ZhbHVlQ29sdW1uB01hcHBpbmcGQWN0aW9uDFJlcGxhY2VWYWx1ZQ9TdGF0ZUNvZGVD
b2x1bW4AAA0BAAhWYWxpZGF0ZQAAEgEADUdldFByb3BlcnRpZXMAACkBACQwMDAwMDU2OS0wMDAw
LTAwMTAtODAwMC0wMEFBMDA2RDJFQTQAAAoBAAVWYWx1ZQAAKQEAJDAwMDAwNTRDLTAwMDAtMDAx
MC04MDAwLTAwQUEwMDZEMkVBNAAACQEABEl0ZW0AACkBACQwMDAwMDU2NC0wMDAwLTAwMTAtODAw
MC0wMEFBMDA2RDJFQTQAACkBACQwMDAwMDUwNi0wMDAwLTAwMTAtODAwMC0wMEFBMDA2RDJFQTQA
ACkBACQwMDAwMDU0RC0wMDAwLTAwMTAtODAwMC0wMEFBMDA2RDJFQTQAACkBACQwMDAwMDU1Ni0w
MDAwLTAwMTAtODAwMC0wMEFBMDA2RDJFQTQAAF8BAFpTeXN0ZW0uT2JqZWN0LCBtc2NvcmxpYiwg
VmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2
MTkzNGUwODkAAAsBAAZGaWVsZHMAACkBACQwMDAwMDUwRS0wMDAwLTAwMTAtODAwMC0wMEFBMDA2
RDJFQTQAACkBACQwMDAwMDU0Ri0wMDAwLTAwMTAtODAwMC0wMEFBMDA2RDJFQTQAACkBACQwMDAw
MDU1NS0wMDAwLTAwMTAtODAwMC0wMEFBMDA2RDJFQTQAAAYBAAIAAAApAQAkMDAwMDAyNjYtMDAw
MC0wMDEwLTgwMDAtMDBBQTAwNkQyRUE0AAAwAQAVQURPREIuUmVjb3Jkc2V0RXZlbnRzFUFET0RC
LlJlY29yZHNldEV2ZW50cwAARQEAJGVmNTMwNTBiLTg4MmUtNDc3Ni1iNjQzLWVkYTQ3MmU4ZTNm
MhtBRE9EQi5SZWNvcmRzZXRFdmVudHNfRXZlbnQAACkBACQwMDAwMDUzNC0wMDAwLTAwMTAtODAw
MC0wMEFBMDA2RDJFQTQAACkBACQwMDAwMDUxMi0wMDAwLTAwMTAtODAwMC0wMEFBMDA2RDJFQTQA
AGEBADRTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scy5Tb2FwSHR0cENsaWVudFByb3RvY29s
EkNyZWF0ZV9fSW5zdGFuY2VfXxNEaXNwb3NlX19JbnN0YW5jZV9fAAAAEAEAC015LkNvbXB1dGVy
AAATAQAOTXkuQXBwbGljYXRpb24AAAwBAAdNeS5Vc2VyAAATAQAOTXkuV2ViU2VydmljZXMAAA4B
AAkgU2V0dGluZ3MAACwBACdTZWxlY3QgRHluYW1pY3MgQ1JNIENvbm5lY3Rpb24gTWFuYWdlci4A
ABYBABFDcm1Db25uZWN0aW9uVHlwZQAAIAEAG1NlbGVjdCBEeW5hbWljcyBDUk0gZW50aXR5LgAA
EgEADUdldEVudGl0eUxpc3QAACABABtTZWxlY3QgT3B0aW9uU2V0IGF0dHJpYnV0ZS4AABUBABBH
ZXRPcHRpb25TZXRMaXN0AAAuAQApU2VsZWN0IGNvbHVtbiBjb250YWluaW5nIE9wdGlvblNldCBs
YWJlbC4AAC4BAClTZWxlY3QgY29sdW1uIGNvbnRhaW5pbmcgT3B0aW9uU2V0IHZhbHVlLgAAUgEA
TVNlbGVjdCB2YXJpYWJsZSBjb250YWluaW5nIG1hcHBpbmcgKHN0cmluZywgZGljdGlvbmFyeSwg
cmVjb3Jkc2V0KS4gT3B0aW9uYWwuAAANAQAITm8gbWF0Y2gAAC4BAClTZWxlY3QgaG93IHRvIGhh
bmRsZSBub24tbWF0Y2hpbmcgdmFsdWVzLgAAOwEANlNwZWNpZmllcyByZXBsYWNlIHZhbHVlIHRv
IHVzZSB3aGVuIHRoZXJlIGlzIG5vIG1hdGNoLgAAKQEAJFNlbGVjdCBjb2x1bW4gY29udGFpbmlu
ZyBzdGF0ZSBjb2RlLgAAAAC0AAAAzsrvvgEAAACRAAAAbFN5c3RlbS5SZXNvdXJjZXMuUmVzb3Vy
Y2VSZWFkZXIsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVi
bGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OSNTeXN0ZW0uUmVzb3VyY2VzLlJ1bnRpbWVSZXNv
dXJjZVNldAIAAAAAAAAAAAAAAFBBRFBBRFC0AAAA6H4AAAAAAAAAAAAAAn8AAAAgAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAPR+AAAAAAAAAAAAAAAAX0NvckRsbE1haW4AbXNjb3JlZS5kbGwAAAAAAP8l
ACAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAABgAAIAAAAAAAAAAAAAAAAAAAAEAAQAAADAAAIAA
AAAAAAAAAAAAAAAAAAEAAAAAAEgAAABYgAAA7AMAAAAAAAAAAAAA7AM0AAAAVgBTAF8AVgBFAFIA
UwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEAAAABAAAAAAAAAAEAAAAAAD8AAAAAAAAABAAA
AAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBGAGkAbABlAEkAbgBmAG8AAAAAACQABAAAAFQA
cgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBEwDAAABAFMAdAByAGkAbgBnAEYAaQBsAGUASQBu
AGYAbwAAACgDAAABADAAMAAwADAAMAA0AGIAMAAAABoAAQABAEMAbwBtAG0AZQBuAHQAcwAAAAAA
AAAiAAEAAQBDAG8AbQBwAGEAbgB5AE4AYQBtAGUAAAAAAAAAAABwACQAAQBGAGkAbABlAEQAZQBz
AGMAcgBpAHAAdABpAG8AbgAAAAAAUwBDAF8AMgA5ADIAMwBkADkANgAxADYAOQAzAGUANAAzADUA
MAA4AGMANgA3AGQAYQBmADkAMQA0AGEAOABmAGEAZAA5AAAAMAAIAAEARgBpAGwAZQBWAGUAcgBz
AGkAbwBuAAAAAAAxAC4AMAAuADAALgAwAAAAcAAoAAEASQBuAHQAZQByAG4AYQBsAE4AYQBtAGUA
AABTAEMAXwAyADkAMgAzAGQAOQA2ADEANgA5ADMAZQA0ADMANQAwADgAYwA2ADcAZABhAGYAOQAx
ADQAYQA4AGYAYQBkADkALgBkAGwAbAAAAEgAEgABAEwAZQBnAGEAbABDAG8AcAB5AHIAaQBnAGgA
dAAAAEMAbwBwAHkAcgBpAGcAaAB0ACAAQAAgACAAMgAwADEANgAAACoAAQABAEwAZQBnAGEAbABU
AHIAYQBkAGUAbQBhAHIAawBzAAAAAAAAAAAAeAAoAAEATwByAGkAZwBpAG4AYQBsAEYAaQBsAGUA
bgBhAG0AZQAAAFMAQwBfADIAOQAyADMAZAA5ADYAMQA2ADkAMwBlADQAMwA1ADAAOABjADYANwBk
AGEAZgA5ADEANABhADgAZgBhAGQAOQAuAGQAbABsAAAAaAAkAAEAUAByAG8AZAB1AGMAdABOAGEA
bQBlAAAAAABTAEMAXwAyADkAMgAzAGQAOQA2ADEANgA5ADMAZQA0ADMANQAwADgAYwA2ADcAZABh
AGYAOQAxADQAYQA4AGYAYQBkADkAAAA0AAgAAQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4A
AAAxAC4AMAAuADAALgAwAAAAOAAIAAEAQQBzAHMAZQBtAGIAbAB5ACAAVgBlAHIAcwBpAG8AbgAA
ADEALgAwAC4AMAAuADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAcAAADAAAABQ/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAA==]]></arrayElement></arrayElements></property><property id="5" 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">SC_2923d961693e43508c67daf914a8fad9</property><property id="6" 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><property id="12" name="UserComponentTypeName" dataType="System.String">CozyRoc.ScriptComponentHostPlus</property></properties><connections><connection id="14" name="CrmConnection" connectionManagerID="{2740E3C1-7459-4D75-9A53-3D69D6077076}" /></connections><inputs><input id="15" name="Input" hasSideEffects="true"><externalMetadataColumns /></input></inputs><outputs><output id="16" name="Output" synchronousInputId="15"><externalMetadataColumns /></output></outputs></component>