<component id="2" name="Dynamics CRM User Access" componentClassID="Microsoft.ManagedComponentHost" description="Executes a custom script." localeId="1033" version="10" contactInfo="Executes a custom script.;Microsoft Corporation;Microsoft SqlServer v9; © 2004 Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;0"><properties><property id="3" name="SourceCode" state="cdata" dataType="System.String" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="15"><arrayElement dataType="System.String"><![CDATA[ScriptMain.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' CozyRoc SQL Server Integration Services user script component
'
' Copyright (c) 2006-2012 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.Collections
Imports System.Reflection

Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS
Imports CozyRoc.SqlServer.SSIS.Attributes
Imports CRM2011 = CozyRoc.Dynamics.Crm2011.OrganizationService
Imports CRM4 = CozyRoc.Dynamics.Crm.Service
Imports CRM3 = CozyRoc.Dynamics.Crm3.Service


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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Try
            Dim targetEntity As String = Row.Buffer(m_teIndex).ToString().ToLower()
            Dim targetId As Guid = New Guid(Row.Buffer(m_tiIndex).ToString())
            Dim principalEntity As String = Row.Buffer(m_peIndex).ToString()
            Dim principalId As Guid = New Guid(Row.Buffer(m_piIndex).ToString())
            Dim ar As Integer = Convert.ToInt32(Row.Buffer(m_arIndex))

            If Not m_service2011 Is Nothing Then
                ' CRM 2011

                ' Setup Target.
                Dim target As New CRM2011.EntityReference
                target.LogicalName = targetEntity
                target.Id = targetId

                ' Setup Principal.
                Dim principal As New CRM2011.EntityReference
                principal.LogicalName = principalEntity.ToLower()
                principal.Id = principalId

                ' Revoke previous access first.
                Try
                    Dim raReq As New CRM2011.OrganizationRequest
                    raReq.RequestName = "RevokeAccess"
                    raReq("Target") = target
                    raReq("Revokee") = principal
                    Call m_service2011.Execute(raReq)
                Catch ex As Exception
                    ' Ignore the failure.
                End Try

                If ar <> 0 Then
                    ' Grant new access.
                    Dim gaReq As New CRM2011.OrganizationRequest
                    gaReq.RequestName = "GrantAccess"
                    gaReq("Target") = target

                    Dim pa As New CRM2011.PrincipalAccess
                    pa.Principal = principal
                    pa.AccessMask = CType(ar, CRM2011.AccessRights)
                    gaReq("PrincipalAccess") = pa

                    Call m_service2011.Execute(gaReq)
                End If
            ElseIf Not m_service4 Is Nothing Then
                ' CRM 4.0

                ' Setup Target.
                Dim target As New CRM4.TargetOwnedDynamic
                target.EntityName = targetEntity
                target.EntityId = targetId

                ' Setup Principal.
                Dim principal As New CRM4.SecurityPrincipal()
                principal.Type = CType( _
                    System.Enum.Parse(GetType(CRM4.SecurityPrincipalType), principalEntity), _
                    CRM4.SecurityPrincipalType)
                principal.PrincipalId = principalId

                ' Revoke previous access first.
                Try
                    Dim raReq As New CRM4.RevokeAccessRequest
                    raReq.Target = target
                    raReq.Revokee = principal
                    Call m_service4.Execute(raReq)
                Catch ex As Exception
                    ' Ignore the failure.
                End Try

                If ar <> 0 Then
                    ' Grant new access.
                    Dim gaReq As New CRM4.GrantAccessRequest
                    gaReq.Target = target

                    Dim pa As New CRM4.PrincipalAccess
                    pa.Principal = principal
                    pa.AccessMask = CType(ar, CRM4.AccessRights)
                    gaReq.PrincipalAccess = pa

                    Call m_service4.Execute(gaReq)
                End If
            Else
                ' CRM 3.0

                ' Setup Target.
                Dim target As New CRM3.TargetOwnedDynamic
                target.EntityName = targetEntity
                target.EntityId = targetId

                ' Setup Principal.
                Dim principal As New CRM3.SecurityPrincipal()
                principal.Type = CType( _
                    System.Enum.Parse(GetType(CRM3.SecurityPrincipalType), principalEntity), _
                    CRM3.SecurityPrincipalType)
                principal.PrincipalId = principalId

                ' Revoke previous access first.
                Try
                    Dim raReq As New CRM3.RevokeAccessRequest
                    raReq.Target = target
                    raReq.Revokee = principal
                    Call m_service3.Execute(raReq)
                Catch ex As Exception
                    ' Ignore the failure.
                End Try

                If ar <> 0 Then
                    Dim gaReq As New CRM3.GrantAccessRequest
                    gaReq.Target = target

                    ' Grant new access.
                    Dim pa As New CRM3.PrincipalAccess
                    pa.Principal = principal
                    pa.AccessMask = CType(ar, CRM3.AccessRights)
                    gaReq.PrincipalAccess = pa

                    Call m_service3.Execute(gaReq)
                End If
            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), _
            ICrmConnection)
        Call m_connection.Connect()

        Dim service As Object = m_connection.GetService(0)   ' 0 - CRM Service
        m_service2011 = TryCast(service, CRM2011.OrganizationServiceClient)
        If m_service2011 Is Nothing Then
            m_service4 = TryCast(service, CRM4.CrmService)
            If m_service4 Is Nothing Then
                m_service3 = TryCast(service, CRM3.CrmService)
                If m_service3 Is Nothing Then
                    Throw New Exception("Unhandled service object.")
                End If
            End If
        End If

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

        For Each inputCol As IDTSInputColumn100 In input.InputColumnCollection
            Dim extCol As IDTSExternalMetadataColumn100 = input.ExternalMetadataColumnCollection.GetObjectByID( _
                inputCol.ExternalMetadataColumnID)
            Dim index As Integer = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                input.Buffer, _
                inputCol.LineageID)

            Select Case extCol.Name
                Case "TargetEntity"
                    m_teIndex = index
                Case "TargetId"
                    m_tiIndex = index
                Case "PrincipalEntity"
                    m_peIndex = index
                Case "PrincipalId"
                    m_piIndex = index
                Case "AccessRights"
                    m_arIndex = index
                Case Else
                    Throw New Exception("Unhandled column.")
            End Select
        Next
    End Sub ' PreExecute


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

        Call m_connection.Close()
        m_teIndex = -1
        m_tiIndex = -1
        m_peIndex = -1
        m_piIndex = -1
        m_arIndex = -1
    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

            Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
            If input.IsAttached AndAlso input.InputColumnCollection.Count < 5 Then
                Throw New Exception("Map input columns.")
            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


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

        If MyBase.ComponentMetaData.InputCollection.Count = 0 Then
            ' At least one input must exist.
            Throw New Exception("No inputs.")
        End If

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

        ' Cleanup.
        input.ExternalMetadataColumnCollection.IsUsed = True
        Call input.InputColumnCollection.RemoveAll()
        Call input.ExternalMetadataColumnCollection.RemoveAll()

        Dim column As IDTSExternalMetadataColumn100

        ' Setup target entity column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "TargetEntity"
        column.DataType = DataType.DT_WSTR
        column.Length = 50

        ' Setup target id column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "TargetId"
        column.DataType = DataType.DT_GUID

        ' Setup principal entity column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "PrincipalEntity"
        column.DataType = DataType.DT_WSTR
        column.Length = 50

        ' Setup principal id column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "PrincipalId"
        column.DataType = DataType.DT_GUID

        ' Setup access rights column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "AccessRights"
        column.DataType = DataType.DT_I4
    End Sub ' ReinitializeMetaData


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select Dynamics CRM Connection Manager.")> _
    <Connection("CrmConnectionType")> _
    Public Property CrmConnection() As String
        Get
            CrmConnection = m_crmConnection
        End Get
        Set(ByVal value As String)
            m_crmConnection = value
        End Set
    End Property    ' CrmConnection
#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 Grant Access", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub ' FireError_
#End Region ' Internals


#Region "Attributes"
    Private m_crmConnection As String

    Private m_connection As ICrmConnection
    Private m_service2011 As CRM2011.OrganizationServiceClient
    Private m_service4 As CRM4.CrmService
    Private m_service3 As CRM3.CrmService
    Private m_teIndex As Integer
    Private m_tiIndex As Integer
    Private m_peIndex As Integer
    Private m_piIndex As Integer
    Private m_arIndex As Integer
#End Region ' Attributes
End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[BufferWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class InputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public 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_4e78c243aa7f45938ba249afc2ec054e.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>{B57DDA7D-C77F-4703-96CD-B6920B0AF2F8}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_a52b8cc7033d4f6c9c5ddd4a3a832e3d</RootNamespace>
    <AssemblyName>ScriptComponent_a52b8cc7033d4f6c9c5ddd4a3a832e3d</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
  </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.2016, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\130\SDK\Assemblies\CozyRoc.SSISPlus.2016.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=13.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=13.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=13.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=13.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS" />
    <Reference Include="CozyRoc.Dynamics" />
    <Reference Include="System.Web.Services" />
    <Reference Include="System.Xml" />
  </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_SC110" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC130</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <ItemGroup>
    <Compile Include="ScriptMain.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="My Project\" />
  </ItemGroup>
  <PropertyGroup>
    <OptionCompare>Binary</OptionCompare>
  </PropertyGroup>
  <PropertyGroup>
    <OptionExplicit>On</OptionExplicit>
  </PropertyGroup>
  <PropertyGroup>
    <OptionStrict>On</OptionStrict>
  </PropertyGroup>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ComponentWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services component wrapper
' This module defines the base class for your component
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class UserComponent
    Inherits ScriptComponentPlus

    Public Connections As New Connections(Me)
    Public Variables As New Variables(Me)

    Public Overrides Sub ProcessInput(ByVal InputID As Integer, ByVal InputName As String, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)

        If InputID = MyBase.ComponentMetaData.InputCollection("Input").ID Then
            Input_ProcessInput(New InputBuffer(Me, InputID, True, Buffer, OutputMap))
        End If

    End Sub

    Public Overridable Sub Input_ProcessInput(ByVal Buffer As InputBuffer)

        While Buffer.NextRow()
            Input_ProcessInputRow(Buffer)
        End While

    End Sub

    Public Overridable Sub Input_ProcessInputRow(ByVal Row As InputBuffer)

    End Sub

End Class

Public Class Connections

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

    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[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:NoContent>Reference;Import;Folder</msb:NoContent>
		<msb:ProjectId>{52E4A4A6-F98C-4B5F-B797-73847A15F03C}</msb:ProjectId>
		<msb:CodeName>ScriptComponent_4e78c243aa7f45938ba249afc2ec054e</msb:CodeName>
		<msb:Language>msBuild</msb:Language>
		<msb:DisplayName>ScriptComponent_4e78c243aa7f45938ba249afc2ec054e</msb:DisplayName>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Folder Include="My Project\"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="ScriptMain.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
		<msb:Project Include="ScriptComponent_4e78c243aa7f45938ba249afc2ec054e.vbproj"/>
	</msb:ItemGroup>
</c:Project>]]></arrayElement></arrayElements></property><property id="4" name="BinaryCode" state="cdata" dataType="System.String" isArray="true" description="Stores the binary representation of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="2"><arrayElement dataType="System.String"><![CDATA[ScriptComponent_a52b8cc7033d4f6c9c5ddd4a3a832e3d.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAABQRQAATAEDALwuhlgAAAAAAAAAAOAAIiALAVAAADAAAAAGAAAAAAAAUk4A
AAAgAAAAYAAAAAAAEAAgAAAAAgAABAAAAAAAAAAEAAAAAAAAAACgAAAAAgAAAAAAAAMAQIUAABAA
ABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAABOAABPAAAAAGAAAEgDAAAAAAAAAAAAAAAAAAAA
AAAAAIAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAAWC4AAAAgAAAAMAAAAAIA
AAAAAAAAAAAAAAAAACAAAGAucnNyYwAAAEgDAAAAYAAAAAQAAAAyAAAAAAAAAAAAAAAAAABAAABA
LnJlbG9jAAAMAAAAAIAAAAACAAAANgAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAAA0
TgAAAAAAAEgAAAACAAUAOCoAAMgjAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4CKBAAAAYqGzADAEUDAAABAAARA28TAAAKAnsGAAAEbxQA
AApvFQAACm8WAAAKCgNvEwAACgJ7BwAABG8UAAAKbxUAAApzFwAACgsDbxMAAAoCewgAAARvFAAA
Cm8VAAAKDANvEwAACgJ7CQAABG8UAAAKbxUAAApzFwAACg0DbxMAAAoCewoAAARvFAAACigYAAAK
KBkAAAoTBAJ7AwAABDnjAAAAcxoAAAoTBREFBm8bAAAKEQUHbxwAAApzGgAAChMGEQYIbxYAAApv
GwAAChEGCW8cAAAKcx0AAAoTBxEHcgEAAHBvHgAAChEHchsAAHARBW8fAAAKEQdyKQAAcBEGbx8A
AAoCewMAAAQRB28gAAAKJt4PJSghAAAKEwgoIgAACt4AEQQ56gEAAHMdAAAKEwkRCXI5AABwbx4A
AAoRCXIbAABwEQVvHwAACnMjAAAKEwoRChEGbyQAAAoRChEEbyUAAAoRCXJRAABwEQpvHwAACgJ7
AwAABBEJbyAAAAomOI8BAAACewQAAAQ5xgAAAHMmAAAKEwsRCwZvJwAAChELB28oAAAKcykAAAoT
DBEM0D4AAAEoKgAACggoKwAACigsAAAKby0AAAoRDAlvLgAACnMvAAAKEw0RDRELbzAAAAoRDREM
bzEAAAoCewQAAAQRDW8yAAAKJt4PJSghAAAKEw4oIgAACt4AEQQ5AwEAAHMzAAAKEw8RDxELbzQA
AApzNQAAChMQERARDG82AAAKERARBG83AAAKEQ8REG84AAAKAnsEAAAEEQ9vMgAACiY4vgAAAHM5
AAAKExEREQZvOgAAChERB287AAAKczwAAAoTEhES0EYAAAEoKgAACggoKwAACigsAAAKbz0AAAoR
EglvPgAACnM/AAAKExMRExERb0AAAAoRExESb0EAAAoCewUAAAQRE29CAAAKJt4PJSghAAAKExQo
IgAACt4AEQQsQHNDAAAKExURFRERb0QAAApzRQAAChMWERYREm9GAAAKERYRBG9HAAAKERURFm9I
AAAKAnsFAAAEERVvQgAACibePSUoIQAAChMXAhEXb0kAAApvSgAACigKAAAGKCIAAAreHCUoIQAA
ChMYAhEYb0sAAAooCgAABigiAAAK3gAqAAAAQXwAAAAAAADGAAAAPwAAAAUBAAAPAAAAEQAAAQAA
AADDAQAAKQAAAOwBAAAPAAAAEQAAAQAAAACJAgAAKQAAALICAAAPAAAAEQAAAQAAAAAAAAAABwMA
AAcDAAAhAAAAHQAAAQAAAAAAAAAABwMAACgDAAAcAAAAEQAAARswBACcAQAAAgAAEQIoTAAACgIC
ewsAAARvFQAABhRvTQAACnQKAAABfQIAAAQCewIAAARvTgAACgJ7AgAABBZvTwAACigYAAAKCgIG
dQsAAAF9AwAABAJ7AwAABC0zAgZ1DAAAAX0EAAAEAnsEAAAELR8CBnUNAAABfQUAAAQCewUAAAQt
C3JxAABwc1AAAAp6AihRAAAKb1IAAAoWjE4AAAFvUwAACgsHb1QAAApvVQAACgw4zAAAAAhvVgAA
CnQhAAABDQdvVwAACglvWAAACm9ZAAAKAihaAAAKb1sAAAoHb1wAAAoJb10AAApvXgAAChMEb18A
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
BgAcBZgIBgDRBYAMKgAsAcQHHgB4BaQIBgCjB5gIBgCgDcYMBgDODpgIEgAxBYwDKgCIAp8MEgDN
DYwDEgDtBGQDBgBHBJgIBgCfCJgIKgB1DZ8MEgAqA2QDEgA9BWQDEgAJD2QDEgDNDWQDEgDtBEYD
EgAqA0YDEgA9BUYDEgAJD0YDEgDNDUYDLgAIBG4IGgABADMLGgCzADMLBgBYAZgIGgBzADMLGgBL
ADMLGgAaADMLIgBJDrYEGgD8ADMLKgCvDZ8MBgA7BJgIGgCQADMLGgDKADMLJgDkBAsLDgCoCrYE
BgDLC5gIAAAAAIoBAAAAAAEAAQABAAAAwQjGAhAAAQABAAEAAAC1CsYCkQALAAsAAQAAAFsOxgKh
AAsAEAABAAAAlA3GAnkADQAUAAEAAAD1DMYCeQAOABYAAAAAANwItA+1AA8AFwAAAAAAcgu0D7kA
DwAYAAABEAAGDrQPeQAPABkABQEAAEgMAAB5ABMAHgAFAQAAOwEAAHkAEwAlAAEAogmoAQEAsglU
AgEAHgFYAgEAaQFcAgEAXgFgAgEAjA9kAgEAoA9kAgEAgg9kAgEAlg9kAgEAqg9kAgYAlA1nAgYA
9QxrAgEAaQ5vAgEAaQ5vAjEAVwp0AjEALgp8AjEAQgqEAjEAcAqNAiEAVg8RAlAgAAAAAAYY1QsG
AAEAWCAAAAAAxgJkD5UCAQAoJAAAAADGAjkHBgACAOAlAAAAAMYCRAcGAAIAGCYAAAAABgBaBZsC
AgDEJgAAAADGAl0CBgADANQnAAAAAAYIfglsAAMA6ScAAAAABgiQCRAAAwD0JwAAAAABCAMFoQIE
ABQoAAAAAAEAUgIQAAQAPSgAAAAABhjVC7YBBQBMKAAAAADGCkYNoQIKAEwoAAAAAMYKXQ2hAgoA
VCgAAAAAhgB6D28BCgBsKAAAAACGACMObwEKAIEoAAAAAAYY1QsGAAoAoSgAAAAAxgJAD6YCCgDR
KAAAAABGAzoPlQIOAOQoAAAAAEYDZA+VAg8A5igAAAAABhjVC7ICEAD1KAAAAAAGCH4JxQERABYp
AAAAAAYY1QuyAhEAJSkAAAAABhjVCwYAEgAtKQAAAAAGGNULBgASADUpAAAAABMIZQu5AhIAQSkA
AAAAEwjMCL4CEgBNKQAAAAATCFwLwwISAFkpAAAAABMIOAzJAhIAZSkAAAAAERjbC5QAEgCPKQAA
AADGAiEN7QESAJ0pAAAAAMYC/ANLARMApSkAAAAAgwAZBc4CEwCxKQAAAADGAqEHbAATALwpAAAA
ABEAPwLUAhMA3CkAAAAAAQArAtwCFADlKQAAAAAGGNULBgAVAPApAAAAAAMI0wPSARUAJCoAAAAA
BhjVCwYAFQAAAAEAfg8AAAEAKAQAAAEAcwcAAAEAMwQAAAEAkQ4AAAIA8wEAAAMAMg8AAAQAugoA
AAUA3QkAAAEA/AEAAAIAnQQAAAMAugoAAAQA3QkAAAEAugoAAAEAfg8AAAEAkQ4AAAEAkQ4AAAEA
zQkAAAEA4wMAAAEA4wMJANULAQARANULBgAZANULCgApANULEAAxANULEAA5ANULBgBBANULBgBJ
ANULFQARAdULEAAZAdULEABRAdULGgBhAdULIAB5AdULBgCBAdULBgCJAdULBgCZAdULJwCpAdUL
FQC5AdULEAAhAY4KYQAxAYYIZwDxAKEHbADBAX0LbABxANULEADJAWQHcADRAVYBdQB5ANULBgB5
AH0EEAB5APcCegCBANULBgCBAI0EEACBAI8IgABZAEgHhgDhAaELjgDhAY8LlACRANULBgCRAO4H
mACRALUHngCZANULBgCZAKcEEACZAA4DegChANULBgChAVkEpQABAlQFrgAJAukKdQChANcEtgCh
AP4CegCpANULBgCpABgOvQCpABAExABhAEgHygCxANULBgCxABgOvQC5ANULBgC5AO4HxAC5ALUH
0wCxALkN2gDBANULBgDBAKcEEADBAA4DegDJANULBgDJANcE4ADJAP4CegDRANULBgDRABgO5wDR
ABAE7gBpAEgH9ADZANULBgDZABgO5wDhANULBgDhAO4H7gDhALUH/QDZALkNBAHpACQICgFZAnkI
bACJABwEbAApATkHBgBJAV0JHgFRABAOBgBRALkDZwCJANULEAApAXICIwFhAkkJKQFpAoYILwH5
AA8JNQF5Ar0LOwEBAZsOQQH5AOoIRQEJAb4BSwGBAgQCTwFBAYkOVgGRAtcKXAH5AI4KSwEJAZoB
SwGZAqgBYgGJAmsEbAChApMHaAEBAU0PbwGpAkwFBgApAUQHBgBRAEYFBgDBAegPfAH5ABsDbwF5
AqcOSwFhAikJgQGxAoYIhwG5AtsBEABBAV0CBgBpAqcOSwGBAjYDFQB5Ai8IBgCBAi8IBgCBAmAP
jgGJAnQEEACJAuAElAGJAqoHAQDBAfAPqAFhAoULqwEhAdULtgHJAnoPbwHJAiMObwFBAdULBgD5
AJMBSwHxANULBgC5AsEKxQFpAdULBgBxAdULBgAMANMD0gEUANMD0gEcANMD0gEkANMD0gEMANUL
BgAUANULBgAcANULBgAkANULBgDxACEN7QHxAPwDSwHRAsQD+gE0AFYPEQI8AFAH0gE8AFoHKgI8
ANULBgApAEsAIwQpAFMAUAQuAAsADQMuABMAFgMuABsANQMuACMAPgNDACsAmgNDADMAjANDADsA
jANDAEMAhgNjAEMAhgODAEMAhgPJAJMAZwTjAFsAqAPjAGMAkQPpAJMAeAQDAVsAqAMDAWMAkQMJ
AZMAjAQjAXMAjAMjAXsAjAMjAVsAqAMpAZMAmQRDAWMAkQNDAYMAwQNjAWMAkQNjAYsAhgOAAkMA
hgPAAkMAhgMAA2sAjAMAA2MAkQMgA2sAjANAA2sAjANgA2sAjAOAA2sAjAPAA2MAkQPAA2sAjAPg
A2MAkQPgA2sAjAMABGMAkQMABGsAjAMgBGMAkQMgBGsAjANABGsAjANgBGsAjAOABGsAjAOABGMA
kQOgBGsAjAPABGsAjAPABGMAkQMvABABcwGbAZ8BpAHyAQUCAgABAAMAAwAFAAUACQAGAAsACgAA
AJQJ5AIAAAcF6AIAAEoN6AIAAGEN6AIAAJQJ7QIAAHQL8wIAAN4I+AIAAGAL/QIAAEoMAwMAANcD
CAMCAAcAAwABAAgAAwACAAkABQACAAwABwACAA0ACQACABUACwACABkADQACABoADwACABsAEQAC
ABwAEwACACUAFQDLAdcB3gHmAfcBCgIaAiICBIAAAAAAAAAAAAAAAAAAAAAAxgIAAAQAAAAAAAAA
AAAAADAClAIAAAAAAQAAAAAAAAAAAAAAOQJ0AQAAAAANAAAAAAAAAAAAAABCArEOAAAAAAEAAAAA
AAAAAAAAADkC4gsAAAAABAAAAAAAAAAAAAAASwIkDAAAAAANAAAAAAAAAAAAAABCAgoKAAAAAAQA
AAAAAAAAAAAAADACmAgAAAAADQAAAAAAAAAAAAAAQgIRDwAAAAANAAAAAAAAAAAAAABCAucJAAAA
AAoAAAAAAAAAAAAAAEsCsAIAAAAABAAAAAAAAAAAAAAAMAJuCAAAAAAKAAkACwAJAAAAEAAWACkC
AAAQAEUAKQIAAAAARwApAhMBAAITASUCAAAAAABJRFRTQ29tcG9uZW50TWV0YURhdGExMDAASURU
U0V4dGVybmFsTWV0YWRhdGFDb2x1bW4xMDAASURUU0lucHV0Q29sdW1uMTAwAElEVFNFeHRlcm5h
bE1ldGFkYXRhQ29sdW1uQ29sbGVjdGlvbjEwMABJRFRTSW5wdXRDb2x1bW5Db2xsZWN0aW9uMTAw
AElEVFNSdW50aW1lQ29ubmVjdGlvbkNvbGxlY3Rpb24xMDAASURUU0lucHV0Q29sbGVjdGlvbjEw
MABJRFRTUnVudGltZUNvbm5lY3Rpb24xMDAASURUU0Nvbm5lY3Rpb25NYW5hZ2VyMTAwAElEVFNC
dWZmZXJNYW5hZ2VyMTAwAElEVFNJbnB1dDEwMABtX3NlcnZpY2UyMDExAENvbnRleHRWYWx1ZWAx
AFRocmVhZFNhZmVPYmplY3RQcm92aWRlcmAxAFRvSW50MzIAbV9zZXJ2aWNlMwBtX3NlcnZpY2U0
AENvenlSb2MuU1NJU1BsdXMuMjAxNgA8TW9kdWxlPgBnZXRfSUQAZ2V0X0xpbmVhZ2VJRABGaW5k
Q29sdW1uQnlMaW5lYWdlSUQAZ2V0X0V4dGVybmFsTWV0YWRhdGFDb2x1bW5JRABzZXRfQ29ubmVj
dGlvbk1hbmFnZXJJRABPYmplY3RJRABJbnB1dElEAEdldE9iamVjdEJ5SUQAQ296eVJvYy5TcWxT
ZXJ2ZXIuU1NJUwBUAERpc3Bvc2VfX0luc3RhbmNlX18AQ3JlYXRlX19JbnN0YW5jZV9fAEZpcmVF
cnJvcl8AUmVpbml0aWFsaXplTWV0YURhdGEAZ2V0X0NvbXBvbmVudE1ldGFEYXRhAFByb2plY3RE
YXRhAG1zY29ybGliAFRhcmdldE93bmVkRHluYW1pYwBNaWNyb3NvZnQuVmlzdWFsQmFzaWMAU2Ny
aXB0Q29tcG9uZW50X2E1MmI4Y2M3MDMzZDRmNmM5YzVkZGQ0YTNhODMyZTNkAHNldF9JZABzZXRf
UHJpbmNpcGFsSWQAc2V0X0VudGl0eUlkAGdldF9Jc0F0dGFjaGVkAFRhcmdldE93bmVkAHNldF9J
c1VzZWQAR3VpZABDb3p5Um9jLkR5bmFtaWNzLkNybTMuU2VydmljZQBDb3p5Um9jLkR5bmFtaWNz
LkNybS5TZXJ2aWNlAENybVNlcnZpY2UAQ296eVJvYy5EeW5hbWljcy5Dcm0yMDExLk9yZ2FuaXph
dGlvblNlcnZpY2UAR2V0U2VydmljZQBDcmVhdGVJbnN0YW5jZQBnZXRfR2V0SW5zdGFuY2UAaW5z
dGFuY2UARW50aXR5UmVmZXJlbmNlAEdldEhhc2hDb2RlAFhtbE5vZGUAc2V0X1Jldm9rZWUAZ2V0
X01lc3NhZ2UAZXJyTWVzc2FnZQBtZXNzYWdlAElEaXNwb3NhYmxlAFJ1bnRpbWVUeXBlSGFuZGxl
AEdldFR5cGVGcm9tSGFuZGxlAGdldF9OYW1lAHNldF9OYW1lAHNldF9Mb2dpY2FsTmFtZQBzZXRf
UmVxdWVzdE5hbWUASW5wdXROYW1lAHNldF9FbnRpdHlOYW1lAE1pY3Jvc29mdC5TcWxTZXJ2ZXIu
RHRzLlBpcGVsaW5lAHNldF9UeXBlAHNldF9EYXRhVHlwZQBTZWN1cml0eVByaW5jaXBhbFR5cGUA
Z2V0X0NybUNvbm5lY3Rpb25UeXBlAEdldFR5cGUAQXBwbGljYXRpb25CYXNlAE9yZ2FuaXphdGlv
blJlc3BvbnNlAENsb3NlAERpc3Bvc2UAUGFyc2UAVmFsaWRhdGUARWRpdG9yQnJvd3NhYmxlU3Rh
dGUASGVscEtleXdvcmRBdHRyaWJ1dGUAR2VuZXJhdGVkQ29kZUF0dHJpYnV0ZQBEZWJ1Z2dhYmxl
QXR0cmlidXRlAEVkaXRvckJyb3dzYWJsZUF0dHJpYnV0ZQBDb21WaXNpYmxlQXR0cmlidXRlAFN0
YW5kYXJkTW9kdWxlQXR0cmlidXRlAEhpZGVNb2R1bGVOYW1lQXR0cmlidXRlAFRhcmdldEZyYW1l
d29ya0F0dHJpYnV0ZQBEZWJ1Z2dlckhpZGRlbkF0dHJpYnV0ZQBNeUdyb3VwQ29sbGVjdGlvbkF0
dHJpYnV0ZQBDb25uZWN0aW9uQXR0cmlidXRlAERlc2NyaXB0aW9uQXR0cmlidXRlAFZhbGlkYXRl
UHJvcGVydGllc0F0dHJpYnV0ZQBDb2x1bW5NYXBwaW5nc0F0dHJpYnV0ZQBDb21waWxhdGlvblJl
bGF4YXRpb25zQXR0cmlidXRlAENMU0NvbXBsaWFudEF0dHJpYnV0ZQBTU0lTU2NyaXB0Q29tcG9u
ZW50RW50cnlQb2ludEF0dHJpYnV0ZQBSdW50aW1lQ29tcGF0aWJpbGl0eUF0dHJpYnV0ZQBQcmVF
eGVjdXRlAFBvc3RFeGVjdXRlAGdldF9WYWx1ZQBzZXRfVmFsdWUAR2V0T2JqZWN0VmFsdWUAdmFs
dWUAU3lzdGVtLlJ1bnRpbWUuVmVyc2lvbmluZwBDb21wYXJlU3RyaW5nAFRvU3RyaW5nAHNldF9M
ZW5ndGgAc2V0X0FjY2Vzc01hc2sATWljcm9zb2Z0LlZpc3VhbEJhc2ljLk15U2VydmljZXMuSW50
ZXJuYWwAc2V0X1ByaW5jaXBhbABTZWN1cml0eVByaW5jaXBhbABTeXN0ZW0uQ29tcG9uZW50TW9k
ZWwAZ2V0X0RldGFpbABSZW1vdmVBbGwAU2NyaXB0Q29tcG9uZW50X2E1MmI4Y2M3MDMzZDRmNmM5
YzVkZGQ0YTNhODMyZTNkLmRsbABTeXN0ZW0uWG1sAGdldF9Jbm5lclhtbABnZXRfSXRlbQBzZXRf
SXRlbQBTeXN0ZW0ARW51bQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVzaWduAFNjcmlwdE1haW4A
Z2V0X0FwcGxpY2F0aW9uAE15QXBwbGljYXRpb24AZ2V0X0V4dGVybmFsTWV0YWRhdGFDb2x1bW5D
b2xsZWN0aW9uAGdldF9JbnB1dENvbHVtbkNvbGxlY3Rpb24AZ2V0X1J1bnRpbWVDb25uZWN0aW9u
Q29sbGVjdGlvbgBnZXRfSW5wdXRDb2xsZWN0aW9uAEFjcXVpcmVDb25uZWN0aW9uAElDcm1Db25u
ZWN0aW9uAGdldF9Dcm1Db25uZWN0aW9uAHNldF9Dcm1Db25uZWN0aW9uAG1fY3JtQ29ubmVjdGlv
bgBtX2Nvbm5lY3Rpb24AU29hcEV4Y2VwdGlvbgBvAE91dHB1dE5hbWVNYXAAT3V0cHV0TWFwAE1p
Y3Jvc29mdC5TcWxTZXJ2ZXIuRFRTUnVudGltZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EVFNQ
aXBlbGluZVdyYXAAbV9BcHBPYmplY3RQcm92aWRlcgBtX1VzZXJPYmplY3RQcm92aWRlcgBtX0Nv
bXB1dGVyT2JqZWN0UHJvdmlkZXIAbV9NeVdlYlNlcnZpY2VzT2JqZWN0UHJvdmlkZXIAZ2V0X0J1
ZmZlcgBQaXBlbGluZUJ1ZmZlcgBTY3JpcHRCdWZmZXIASW5wdXRCdWZmZXIAZ2V0X0Nvbm5lY3Rp
b25NYW5hZ2VyAGdldF9CdWZmZXJNYW5hZ2VyAFRvSW50ZWdlcgBTeXN0ZW0uQ29kZURvbS5Db21w
aWxlcgBNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5SdW50aW1lLldyYXBwZXIATWljcm9zb2Z0LlNx
bFNlcnZlci5EdHMuUGlwZWxpbmUuV3JhcHBlcgBnZXRfVXNlcgBnZXRfQ29tcHV0ZXIATXlDb21w
dXRlcgBUb0xvd2VyAEZpcmVFcnJvcgBDbGVhclByb2plY3RFcnJvcgBTZXRQcm9qZWN0RXJyb3IA
SUVudW1lcmF0b3IAR2V0RW51bWVyYXRvcgBBY3RpdmF0b3IALmN0b3IALmNjdG9yAENvenlSb2Mu
RHluYW1pY3MAU3lzdGVtLkRpYWdub3N0aWNzAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5EZXZpY2Vz
AFN5c3RlbS5XZWIuU2VydmljZXMAZ2V0X1dlYlNlcnZpY2VzAE15V2ViU2VydmljZXMATWljcm9z
b2Z0LlZpc3VhbEJhc2ljLkFwcGxpY2F0aW9uU2VydmljZXMAU3lzdGVtLlJ1bnRpbWUuSW50ZXJv
cFNlcnZpY2VzAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5Db21waWxlclNlcnZpY2VzAFN5c3RlbS5S
dW50aW1lLkNvbXBpbGVyU2VydmljZXMARGVidWdnaW5nTW9kZXMAVmFyaWFibGVzAENvenlSb2Mu
U3FsU2VydmVyLlNTSVMuQXR0cmlidXRlcwBFcXVhbHMAU3lzdGVtLldlYi5TZXJ2aWNlcy5Qcm90
b2NvbHMAZ2V0X1N0YXRpY0lucHV0Q29sdW1ucwBnZXRfU3RhdGljT3V0cHV0Q29sdW1ucwBDb252
ZXJzaW9ucwBTeXN0ZW0uQ29sbGVjdGlvbnMAQ29ubmVjdGlvbnMAUnVudGltZUhlbHBlcnMAT3Bl
cmF0b3JzAHNldF9QcmluY2lwYWxBY2Nlc3MAQWNjZXNzUmlnaHRzAFNjcmlwdEJ1ZmZlclBsdXMA
U2NyaXB0Q29tcG9uZW50UGx1cwBPYmplY3QATXlQcm9qZWN0AENvbm5lY3QAc2V0X1RhcmdldABF
bmRPZlJvd3NldABPcmdhbml6YXRpb25TZXJ2aWNlQ2xpZW50AFBpcGVsaW5lQ29tcG9uZW50AFVz
ZXJDb21wb25lbnQAUGFyZW50Q29tcG9uZW50AFNjcmlwdENvbXBvbmVudABnZXRfSG9zdENvbXBv
bmVudABnZXRfQ3VycmVudABnZXRfQ291bnQATWljcm9zb2Z0LlNxbFNlcnZlci5UeFNjcmlwdABD
b252ZXJ0AE9yZ2FuaXphdGlvblJlcXVlc3QAUmV2b2tlQWNjZXNzUmVxdWVzdABHcmFudEFjY2Vz
c1JlcXVlc3QATWljcm9zb2Z0LlNxbFNlcnZlci5QaXBlbGluZUhvc3QASXNJbnB1dABJbnB1dF9Q
cm9jZXNzSW5wdXQATW92ZU5leHQAbV9Db250ZXh0AE5ldwBJbnB1dF9Qcm9jZXNzSW5wdXRSb3cA
TmV4dFJvdwBtX3BlSW5kZXgAbV90ZUluZGV4AG1fcGlJbmRleABtX3RpSW5kZXgAbV9hckluZGV4
AFNjcmlwdENvbXBvbmVudF9hNTJiOGNjNzAzM2Q0ZjZjOWM1ZGRkNGEzYTgzMmUzZC5NeQBJc051
bGxPckVtcHR5AAAAABlSAGUAdgBvAGsAZQBBAGMAYwBlAHMAcwAADVQAYQByAGcAZQB0AAAPUgBl
AHYAbwBrAGUAZQAAF0cAcgBhAG4AdABBAGMAYwBlAHMAcwAAH1AAcgBpAG4AYwBpAHAAYQBsAEEA
YwBjAGUAcwBzAAAzVQBuAGgAYQBuAGQAbABlAGQAIABzAGUAcgB2AGkAYwBlACAAbwBiAGoAZQBj
AHQALgAAGVQAYQByAGcAZQB0AEUAbgB0AGkAdAB5AAARVABhAHIAZwBlAHQASQBkAAAfUAByAGkA
bgBjAGkAcABhAGwARQBuAHQAaQB0AHkAABdQAHIAaQBuAGMAaQBwAGEAbABJAGQAABlBAGMAYwBl
AHMAcwBSAGkAZwBoAHQAcwAAI1UAbgBoAGEAbgBkAGwAZQBkACAAYwBvAGwAdQBtAG4ALgAAP1MA
ZQBsAGUAYwB0ACAARAB5AG4AYQBtAGkAYwBzACAAQwBSAE0AIABDAG8AbgBuAGUAYwB0AGkAbwBu
AC4AACVNAGEAcAAgAGkAbgBwAHUAdAAgAGMAbwBsAHUAbQBuAHMALgAAG0MAcgBtAEMAbwBuAG4A
ZQBjAHQAaQBvAG4AABVOAG8AIABpAG4AcAB1AHQAcwAuAAAZRABZAE4AQQBNAEkAQwBTAC0AQwBS
AE0AATNEAHkAbgBhAG0AaQBjAHMAIABDAFIATQAgAEcAcgBhAG4AdAAgAEEAYwBjAGUAcwBzAAAL
SQBuAHAAdQB0AAAAAADtK6Z07m3TTbGjZsIPEnHCAAQgAQEIAyAAAQUgAQEREQQgAQEOBCABAQIF
IAIBDg4GIAEBEYCtByAEAQ4ODg4xBxkOETkOETkIEj0SPRJBEkUSQRJJEk0SURJVEkUSWRJdEmES
ZRJpEkUSbRJxEnUSRQUgABKAmQQgARwIAyAADgQAARwcBAABCBwFIAEBETkFIAIBDhwHIAESgO0S
QQUAAQESRQMAAAEFIAEBEj0GIAEBEYD1CAABEoDREYD9BwACHBKA0Q4GIAEBEYD5BiABARKBCQUg
AQESUQggARKBDRKBEQYgAQERgRUFIAEBEl0GIAEBEYEZBiABARKBHQUgAQESZQggARKBIRKBJQYg
AQERgSkFIAEBEnEFIAASgS0NBwYcEn0SgIESgIUIDgQgARwcBSAAEoExBSAAEoE1BSABEn0cBSAA
EoE9BSAAEoCBAyAAHAUgABKBQQMgAAgGIAESgUUIBSAAEoFJBSAAEoFNBSACCAgIBgADCA4OAgMg
AAIIBwQCAhJ9EkUEAAECDgUgABKBWQYgARKBXRwFIAASgUUGIAEBEYFhAwcBDgQHAR0OAwcBAgIG
DgogBgEIDg4OCBACDiAFARKAlQgCEoCZEoCdBSAAEoClBhUSLAESIAQgABMABhUSLAESHAcVEiwB
EoDJBhUSLAESKAQgAQIcBAcBHgACHgAFEAEAHgAECgEeAAQHARMABhUSLAETAAgGFRKA2QETAAcV
EoDZARMAAhMABAoBEwAFIAEBEwAIt3pcVhk04IkIFs9JC7gMNOoIiYRdzYCAzJEIsD9ffxHVCjoD
BhIpAwYSLQMGEjEDBhI1AgYIAwYSFAMGEhgEBhKAlQcGFRIsARIgBwYVEiwBEhwIBhUSLAESgMkH
BhUSLAESKAUgAQESDAUgAQIQDgQgAB0OCyAEAQgOEoCZEoCdBiABARKAlQQAABIgBAAAEhwFAAAS
gMkEAAASKAUgABKA0QcQAQEeAB4ABzABAQEQHgADKAAOBCgAHQ4FKAASgKUECAASIAQIABIcBQgA
EoDJBAgAEigEKAATAAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5vbkV4Y2VwdGlvblRocm93cwEIAQAC
AAAAAABHAQAaLk5FVEZyYW1ld29yayxWZXJzaW9uPXY0LjABAFQOFEZyYW1ld29ya0Rpc3BsYXlO
YW1lEC5ORVQgRnJhbWV3b3JrIDQFAQAAAAAEAQAAAAgBAAEAAAAAAA0BAAhWYWxpZGF0ZQAAGAEA
Ck15VGVtcGxhdGUIMTEuMC4wLjAAAGEBADRTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scy5T
b2FwSHR0cENsaWVudFByb3RvY29sEkNyZWF0ZV9fSW5zdGFuY2VfXxNEaXNwb3NlX19JbnN0YW5j
ZV9fAAAALAEAJ1NlbGVjdCBEeW5hbWljcyBDUk0gQ29ubmVjdGlvbiBNYW5hZ2VyLgAAFgEAEUNy
bUNvbm5lY3Rpb25UeXBlAAAQAQALTXkuQ29tcHV0ZXIAABMBAA5NeS5BcHBsaWNhdGlvbgAADAEA
B015LlVzZXIAABMBAA5NeS5XZWJTZXJ2aWNlcwAAAAAAKE4AAAAAAAAAAAAAQk4AAAAgAAAAAAAA
AAAAAAAAAAAAAAAAAAAAADROAAAAAAAAAAAAAAAAX0NvckRsbE1haW4AbXNjb3JlZS5kbGwAAAAA
AP8lACAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAABgAAIAA
AAAAAAAAAAAAAAAAAAEAAQAAADAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAAEgAAABYYAAA7AIAAAAA
AAAAAAAA7AI0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEAAAAA
AAAAAAAAAAAAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBGAGkA
bABlAEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBEwCAAAB
AFMAdAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAACgCAAABADAAMAAwADAAMAA0AGIAMAAAACwA
AgABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAAAgAAAAMAAIAAEARgBpAGwAZQBW
AGUAcgBzAGkAbwBuAAAAAAAwAC4AMAAuADAALgAwAAAAigA1AAEASQBuAHQAZQByAG4AYQBsAE4A
YQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfAGEANQAyAGIAOABjAGMANwAw
ADMAMwBkADQAZgA2AGMAOQBjADUAZABkAGQANABhADMAYQA4ADMAMgBlADMAZAAuAGQAbABsAAAA
AAAoAAIAAQBMAGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAAAgAAAAkgA1AAEATwByAGkAZwBp
AG4AYQBsAEYAaQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8A
YQA1ADIAYgA4AGMAYwA3ADAAMwAzAGQANABmADYAYwA5AGMANQBkAGQAZAA0AGEAMwBhADgAMwAy
AGUAMwBkAC4AZABsAGwAAAAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADAA
LgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMAAu
ADAALgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAwAAABUPgAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=]]></arrayElement></arrayElements></property><property id="9" name="UserComponentTypeName" dataType="System.String">CozyRoc.ScriptComponentHostPlus</property><property id="11" name="VSTAProjectName" dataType="System.String" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE">ScriptComponent_4e78c243aa7f45938ba249afc2ec054e</property><property id="12" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property></properties><connections><connection id="15" name="CrmConnection" connectionManagerID="{EB1EB761-DB8F-4F1C-96A3-1EF8BB8AE919}" /></connections><inputs><input id="16" name="Input" hasSideEffects="true"><externalMetadataColumns isUsed="True"><externalMetadataColumn id="59" name="TargetEntity" dataType="wstr" length="50" /><externalMetadataColumn id="60" name="TargetId" dataType="guid" /><externalMetadataColumn id="61" name="PrincipalEntity" dataType="wstr" length="50" /><externalMetadataColumn id="62" name="PrincipalId" dataType="guid" /><externalMetadataColumn id="63" name="AccessRights" dataType="i4" /></externalMetadataColumns></input></inputs></component>