<component id="1" name="WMI Source" componentClassID="{2E42D45B-F83C-400F-8D77-61DDE6A7DF29}" description="Executes a custom script." localeId="1033" usesDispositions="false" validateExternalMetadata="True" version="4" pipelineVersion="0" 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="5" name="SourceCode" dataType="System.String" state="cdata" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None"><arrayElements arrayElementCount="18"><arrayElement dataType="System.String"><![CDATA[\my project\settings.designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On



Partial Friend NotInheritable Class MySettings
    Inherits System.Configuration.ApplicationSettingsBase

    Private Shared m_Value As MySettings

    Private Shared m_SyncObject As Object = New Object

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

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

' Review the values of the assembly attributes

<Assembly: AssemblyTitle("ScriptComponent_30602fd6525f4ae99cce9b4c3821fc88.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_30602fd6525f4ae99cce9b4c3821fc88.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2011")> 
<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("85b42c62-387d-472c-9d08-13c21f7f8a6f")> 

' 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[\my project\settings.settings]]></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[\bufferwrapper.vb]]></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 OutputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer)
        MyBase.New(Component, ObjectID, IsInput, Buffer)
    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 Sub AddRow()
        MyBase.AddRow()
    End Sub

    Public Overloads Sub SetEndOfRowset()
        MyBase.SetEndOfRowset()
    End Sub

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\scriptcomponent_30602fd6525f4ae99cce9b4c3821fc88.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!-- This section defines project-level properties.

       Configuration - Specifies whether the default configuration is Release or Debug.
       Platform - Specifies what CPU the output of this project can run on.
       OutputType - Must be "Library" for VSTA.
       NoStandardLibraries - Set to "false" for VSTA.
       RootNamespace - In C#, this specifies the namespace given to new files.
                       In Visual Basic, all objects are wrapped in this namespace at runtime.
       AssemblyName - Name of the output assembly.
  -->
  <PropertyGroup>
    <ProjectTypeGuids>{A860303F-1F3F-4691-B57E-529FC101A107};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <OutputType>Library</OutputType>
    <RootNamespace>ScriptComponent_30602fd6525f4ae99cce9b4c3821fc88.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_30602fd6525f4ae99cce9b4c3821fc88.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{F109C6D3-F36B-49F9-A7DD-363AB041343A}</ProjectGuid>
  </PropertyGroup>
  <!-- This section defines properties that are set when the "Debug" configuration is
       selected.

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

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

       Compile - Specifies a source file to compile.
       EmbeddedResource - Specifies a .resx file for embedded resources.
       None - Specifies a file that is not to be passed to the compiler (for instance,
              a text file or XML file).
       AppDesigner - Specifies the directory where the application properties files can
                     be found.
  -->
  <ItemGroup>
    <AppDesigner Include="My Project\" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
    <Compile Include="main.vb" />
    <Compile Include="My Project\AssemblyInfo.vb">
      <SubType>Code</SubType>
    </Compile>
    <EmbeddedResource Include="My Project\Resources.resx">
      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.vb</LastGenOutput>
      <CustomToolNamespace>My.Resources</CustomToolNamespace>
    </EmbeddedResource>
    <Compile Include="My Project\Resources.Designer.vb">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resources.resx</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <None Include="My Project\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.vb</LastGenOutput>
    </None>
    <Compile Include="My Project\Settings.Designer.vb">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <!-- Include the default configuration information and metadata files for the add-in.
         These files are copied to the build output directory when the project is
         built, and the path to the configuration file is passed to add-in on the command
         line when debugging.
    -->
  </ItemGroup>
  <!-- Include the build rules for a VB project.-->
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <!-- This section defines VSTA properties that describe the host-changable project properties. -->
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{A860303F-1F3F-4691-B57E-529FC101A107}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{C1B21C64-9E6F-4923-A89D-9F958503C1CE}" ApplicationType="usd" Language="vb" TemplatesPath="" />
        <Host Name="SSIS_ScriptComponent" />
        <ProjectClient>
          <HostIdentifier>SSIS_ScriptComponent</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[\my project\resources.designer.vb]]></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><arrayElement dataType="System.String"><![CDATA[\componentwrapper.vb]]></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 OutputBuffer As OutputBuffer

    Public Overridable Sub FinishOutputs()
    End Sub

    Private Sub MarkOutputsFinished()

        If OutputBuffer IsNot Nothing Then
            OutputBuffer.SetEndOfRowset
            OutputBuffer = Nothing
        End If

    End Sub

    Public Overrides Sub PrimeOutput(ByVal Outputs As Integer, ByVal OutputIDs() As Integer, ByVal Buffers() As PipelineBuffer)

        For I As Integer = 0 To Outputs - 1
            If OutputIDs(I) = MyBase.ComponentMetaData.OutputCollection("Output").ID Then
                OutputBuffer = New OutputBuffer(Me, OutputIDs(I), False, Buffers(I))
            End If
        Next

        CreateNewOutputRows()

        FinishOutputs()
        MarkOutputsFinished()

    End Sub

    Public Overridable Sub CreateNewOutputRows()
    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 Connection() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("Connection").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[\my project\resources.resx]]></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[\main.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' CozyRoc SQL Server Integration Services user script component
'
' Copyright (c) 2006-2011 CozyRoc LLC
' 
' Permission is hereby granted, free of charge, to any person
' obtaining a copy of this software and associated documentation
' files (the "Software"), to deal in the Software without
' restriction, including without limitation the rights to use,
' copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the
' Software is furnished to do so, subject to the following
' conditions:
' 
' The above copyright notice and this permission notice shall be
' included in all copies or substantial portions of the Software.
' 
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
' OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
' HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
' WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
' FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
' OTHER DEALINGS IN THE SOFTWARE.

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

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


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<SortProperties(New String() {"Connection", "IsQueryVariable", "Query", "QueryVariable"})> _
<ValidateProperties("Validate")> _
<FilterProperties("GetProperties")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub CreateNewOutputRows()
        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)
        Dim colsCount As Integer = output.OutputColumnCollection.Count
        Dim colIndex As Integer = 0

        ' Setup column indexes.
        Dim colsIdx As New Hashtable
        For Each column As IDTSOutputColumn100 In output.OutputColumnCollection
            Call colsIdx.Add( _
                column.Name, _
                Me.HostComponent.BufferManager.FindColumnByLineageID( _
                    output.Buffer, _
                    column.LineageID))
        Next

        Dim scope As ManagementScope = CType( _
            Me.Connections.Connection.AcquireConnection(Nothing), _
            ManagementScope)
        Try
            Dim rawData As ManagementObjectCollection = GetQueryResult_(scope, False)

            For Each rawRow As ManagementObject In rawData
                ' Get packed row values.
                Dim packed_values() As Object = New Object(colsCount - 1) {}
                colIndex = 0
                For Each column As DictionaryEntry In colsIdx
                    packed_values(colIndex) = rawRow(CStr(column.Key))
                    colIndex += 1
                Next

                Dim rows As List(Of Object()) = UnwindRow_(packed_values)
                For Each row As Object() In rows
                    Call Me.OutputBuffer.AddRow()

                    colIndex = 0
                    For Each column As DictionaryEntry In colsIdx
                        Dim name As String = CStr(column.Key)
                        Dim index As Integer = CInt(column.Value)
                        Dim value As Object = row(colIndex)

                        If value Is Nothing Then
                            Call Me.OutputBuffer.Buffer.SetNull(index)
                        Else
                            Try
                                Me.OutputBuffer.Buffer(index) = GetValue_( _
                                output.OutputColumnCollection(name), _
                                value)
                            Catch ex As Exception
                                Throw New Exception(String.Format( _
                                    "Failed to set column '{0}'. {1}", _
                                    name, _
                                    ex.Message))
                            End Try
                        End If

                        colIndex += 1
                    Next
                Next
            Next
        Catch ex As Exception
            Call FireError_(ex.Message)
        Finally
            Call Me.Connections.Connection.ReleaseConnection(scope)
        End Try
    End Sub ' CreateNewOutputRows


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

        Try
            If String.IsNullOrEmpty(Me.Connection) Then
                Throw New ApplicationException("Select WMI connection.")
            End If

            If String.IsNullOrEmpty(Me.Query) Then
                Throw New ApplicationException("Specify WQL query.")
            End If

            Dim output As IDTSOutput100 = MyBase.ComponentMetaData.OutputCollection(0)
            If output.OutputColumnCollection.Count = 0 Then
                ' Setup collection output columns.
                Call SetupOutputColumns_()
            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("Connection").ConnectionManagerID = Me.Connection

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

        Validate = result
    End Function    'Validate


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

        Call result.Add("Connection")

        Call result.Add("IsQueryVariable")
        Call result.Add(IIf(Me.IsQueryVariable, "QueryVariable", "Query"))

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



#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select WMI Connection Manager.")> _
    <Connection("WmiConnectionType")> _
    Public Property Connection() As String
        Get
            Connection = m_connection
        End Get
        Set(ByVal value As String)
            m_connection = value
        End Set
    End Property    ' Connection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies if Query property references package variable.")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property IsQueryVariable() As Boolean
        Get
            IsQueryVariable = m_isQueryVar
        End Get
        Set(ByVal value As Boolean)
            If m_isQueryVar <> value Then
                m_isQueryVar = value
                m_query = String.Empty
            End If
        End Set
    End Property    ' IsQueryVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies WMI query.")> _
    <TextDialog("Specify query", Nothing, "sql")> _
    Public Property Query() As String
        Get
            Query = m_query
        End Get
        Set(ByVal value As String)
            m_query = value
        End Set
    End Property    ' Query


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies variable containing query.")> _
    <Variable()> _
    Public Property QueryVariable() As String
        Get
            QueryVariable = Me.Query
        End Get
        Set(ByVal value As String)
            Me.Query = value
        End Set
    End Property    ' QueryVariable
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property WmiConnectionType() As String()
        Get
            WmiConnectionType = New String() {"WMI"}
        End Get
    End Property    ' WmiConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns variable value.
    Private Function GetVariable_(ByVal varName As String) As Object
        Dim result As Object
        Dim vars As IDTSVariables100

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

        GetVariable_ = result
    End Function    ' GetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' This function is based on the Microsoft's WMI Source sample code.
    ' http://sqlsrvintegrationsrv.codeplex.com/sourcecontrol/network/Show?projectName=SQLSrvIntegrationSrv&changeSetId=40668#348153
    ' 
    ' Unwind WMI row ( unwind array in any column )
    ' we use the same approach to handle WMI arrays as WMI ODBC driver 
    ' input row is unwinded into several output rows
    ' output rows should represent every possible combination of WMI arrays elements in different columns
    ' for details see msdn :
    ' http://msdn.microsoft.com/en-us/library/aa392328(VS.85).aspx#_hmm_mapping_wmi_arrays_to_odbc
    ' 
    ' Here is an example :
    '
    ' input row : { a1, {b1,b2}, {c1,c2,c3} }
    '
    ' output rows :
    ' 
    ' { a1 , b1, c1 }
    ' { a1 , b1, c2 }
    ' { a1 , b1, c3 }
    ' { a1 , b2, c1 }
    ' { a1 , b2, c2 }
    ' { a1 , b2, c3 }
    Private Function UnwindRow_(ByVal arr() As Object) As List(Of Object())
        Dim result As New List(Of Object())

        Dim buf() As Object = New Object(arr.Length - 1) {}
        Call UnwindRow_(arr, 0, buf, result)

        UnwindRow_ = result
    End Function    ' UnwindRow_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub UnwindRow_( _
        ByVal arr() As Object, _
        ByVal pos As Integer, _
        ByVal buf() As Object, _
        ByVal result As List(Of Object()))

        While pos < arr.Length
            If Not arr(pos) Is Nothing AndAlso arr(pos).GetType().IsArray Then
                ' This is array. Unwind it.
                Dim inner As Array = CType(arr(pos), Array)

                If inner.Length = 0 Then
                    ' empty array will be represented as null value
                    inner = New Object(0) {}
                End If

                For Each obj As Object In inner
                    buf(pos) = obj
                    Call UnwindRow_(arr, pos + 1, buf, result)
                Next

                Return
            End If

            buf(pos) = arr(pos)
            pos += 1
        End While

        Call result.Add(CType(buf.Clone(), Object()))
    End Sub    ' UnwindRow_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub SetupOutputColumns_()
        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)
        Dim scope As ManagementScope = CType( _
            Me.DesignConnections(Me.Connection).AcquireConnection(Nothing), _
            ManagementScope)

        Try
            ' Get WMI columns.
            Dim objEnum As ManagementObjectCollection.ManagementObjectEnumerator = GetQueryResult_(scope, True).GetEnumerator()
            Call objEnum.Reset()
            Call objEnum.MoveNext()
            Dim props As PropertyDataCollection = objEnum.Current.Properties

            For Each prop As PropertyData In props
                Dim dtsType As DataType
                Dim length, precision, scale, codePage As Integer
                Call GetDtsTypeFromProperty_(prop, dtsType, length, precision, scale, codePage)

                Dim column As IDTSOutputColumn100 = output.OutputColumnCollection.[New]()
                column.Name = prop.Name
                column.Description = CStr(GetQualifier_(prop, "Description", String.Empty))
                Call column.SetDataTypeProperties(dtsType, length, precision, scale, codePage)
            Next
        Finally
            Call Me.DesignConnections(Me.Connection).ReleaseConnection(scope)
        End Try
    End Sub ' SetupOutputColumns_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetQueryResult_( _
        ByVal scope As ManagementScope, _
        ByVal onlyMeta As Boolean) As ManagementObjectCollection

        ' Get query.
        Dim query As String = Me.Query
        If Me.IsQueryVariable Then
            query = GetVariable_(query).ToString()
        End If

        Dim result As ManagementObjectCollection
        Dim objQuery As New ObjectQuery(query)
        Dim searcher As New ManagementObjectSearcher(scope, objQuery)
        searcher.Options.PrototypeOnly = onlyMeta
        result = searcher.Get()

        Try
            Dim count As Integer = result.Count
        Catch ex As ManagementException
            If ex.ErrorCode = ManagementStatus.InvalidClass OrElse _
                ex.ErrorCode = ManagementStatus.NotFound Then
                Throw New Exception("Invalid WQL query.")
            Else
                Throw
            End If
        End Try

        GetQueryResult_ = result
    End Function    ' GetQueryResult_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get SSIS type from PropertyData.
    Private Sub GetDtsTypeFromProperty_( _
        ByVal prop As PropertyData, _
        ByRef dtsType As DataType, _
        ByRef length As Integer, _
        ByRef precision As Integer, _
        ByRef scale As Integer, _
        ByRef codePage As Integer)

        length = CType(GetQualifier_(prop, "MaxLen", 0), Integer)
        precision = 0
        scale = 0
        codePage = 0

        Select Case prop.Type
            Case CimType.Boolean
                dtsType = DataType.DT_BOOL

            Case CimType.Char16, CimType.String
                dtsType = DataType.DT_WSTR
                If length = 0 Then
                    length = 256
                End If

            Case CimType.DateTime
                dtsType = DataType.DT_DBTIMESTAMP

            Case CimType.None
                dtsType = DataType.DT_NULL

            Case CimType.Object
                dtsType = DataType.DT_IMAGE

            Case CimType.Real32
                dtsType = DataType.DT_R4

            Case CimType.Real64
                dtsType = DataType.DT_R8

            Case CimType.SInt16
                dtsType = DataType.DT_I2

            Case CimType.SInt32
                dtsType = DataType.DT_I4

            Case CimType.SInt64
                dtsType = DataType.DT_I8

            Case CimType.SInt8
                dtsType = DataType.DT_I1

            Case CimType.UInt16
                dtsType = DataType.DT_UI2

            Case CimType.UInt32
                dtsType = DataType.DT_UI4

            Case CimType.UInt64
                dtsType = DataType.DT_UI8

            Case CimType.UInt8
                dtsType = DataType.DT_UI1

            Case Else
                Throw New Exception("Unhandled column type.")
        End Select
    End Sub ' GetDtsTypeFromProperty_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get qualifier from PropertyData.
    Private Function GetQualifier_( _
        ByVal prop As PropertyData, _
        ByVal qualName As String, _
        ByVal defValue As Object) As Object

        Dim result As Object = defValue
        Try
            result = prop.Qualifiers(qualName).Value
        Catch ex As Exception
        End Try

        GetQualifier_ = result
    End Function    ' GetQualifier_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetValue_( _
        ByVal column As IDTSOutputColumn100, _
        ByVal value As Object) As Object

        Dim result As Object = value

        Select Case column.DataType
            Case DataType.DT_WSTR
                result = CStr(result).Substring( _
                    0, _
                    System.Math.Min(column.Length, CStr(result).Length))

            Case DataType.DT_DBTIMESTAMP
                result = ManagementDateTimeConverter.ToDateTime(CStr(value))

            Case DataType.DT_I8
                If TypeOf result Is TimeSpan Then
                    result = CType(result, TimeSpan).Ticks
                End If
        End Select

        GetValue_ = result
    End Function    ' GetValue_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub FireError_(ByVal message As String)
        Dim cancel As Boolean
        Call Me.ComponentMetaData.FireError(0, "WMI Source", message, String.Empty, 0, cancel)
    End Sub ' FireError_
#End Region ' Internals


#Region "Attributes"
    Private m_connection As String
    Private m_isQueryVar As Boolean
    Private m_query As String
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement></arrayElements></property>
<property id="6" name="BinaryCode" dataType="System.String" state="cdata" isArray="true" description="Stores the binary representation of the component" typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None"><arrayElements arrayElementCount="2"><arrayElement dataType="System.String"><![CDATA[\bin\scriptcomponent_30602fd6525f4ae99cce9b4c3821fc88.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAABQRQAATAEDACDvmU0AAAAAAAAAAOAAAiELAQgAAEAAAAAMAAAAAAAAvl4A
AAAgAAAAYAAAAABAAAAgAAAAAgAABAAAAAAAAAAEAAAAAAAAAACgAAAAAgAAAAAAAAIAQIUAABAA
ABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAHBeAABLAAAAAGAAALgJAAAAAAAAAAAAAAAAAAAA
AAAAAIAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAAxD4AAAAgAAAAQAAAAAIA
AAAAAAAAAAAAAAAAACAAAGAucnNyYwAAALgJAAAAYAAAAAoAAABCAAAAAAAAAAAAAAAAAABAAABA
LnJlbG9jAAAMAAAAAIAAAAACAAAATAAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAACg
XgAAAAAAAEgAAAACAAUAKDAAAEguAAABAAAAAAAAAFAgAAC4AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAALQAAADOyu++AQAAAJEAAABsU3lzdGVtLlJlc291cmNlcy5S
ZXNvdXJjZVJlYWRlciwgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5I1N5c3RlbS5SZXNvdXJjZXMuUnVudGlt
ZVJlc291cmNlU2V0AgAAAAAAAAAAAAAAUEFEUEFEULQAAAAeAigBAAAKKh4CKAQAAAoqpnMGAAAK
gAEAAARzBwAACoACAAAEcwgAAAqAAwAABHMJAAAKgAQAAAQqAAATMAEACwAAAAEAABF+AQAABG8K
AAAKKgATMAEACwAAAAIAABF+AgAABG8LAAAKKgATMAEACwAAAAMAABF+AwAABG8MAAAKKgATMAEA
CwAAAAQAABF+BAAABG8NAAAKKgATMAIADQAAAAUAABECAygRAAAKKBIAAAoqAAAAEzABAAcAAAAG
AAARAigTAAAKKgATMAEACwAAAAcAABHQBQAAAigUAAAKKgATMAEABwAAAAgAABECKBUAAAoqABMw
AQAQAAAACQAAEQKMAQAAGy0GKAEAACsqAioTMAIAEAAAAAoAABEDEgD+FQIAABsGgQIAABsqHgIo
FwAACioTMAIAKAAAAAsAABECexkAAApvGgAACgsHjAMAABstEigCAAArCwJ7GQAACgdvGwAACgcq
SgIoFwAACgJzHAAACn0ZAAAKKgAyAgMEBQ4EKB4AAAoqAAAAEzABAAcAAAAMAAARFo0hAAABKgAT
MAEABwAAAA0AABEWjSEAAAEqAB4CKB8AAAoqHgIoIAAACioTMAEACQAAAA4AABECKCEAAAoKBioA
AAB+AigjAAAKAgJzHAAABn0GAAAEAgJzHgAABn0HAAAEKgYqAABuAnsIAAAELBICewgAAARvFQAA
BgIUfQgAAAQqEzAGAFUAAAAPAAARFgMX2gsKKzYEBpQCKCQAAApvJQAACnIBAABwbyYAAApvJwAA
CjMTAgIEBpQWBQaacxEAAAZ9CAAABAYX1goGBzHGAm8bAAAGAm8YAAAGAm8ZAAAGKgAAAAYqAAA6
AigXAAAKAgN9CQAABCoAEzACACAAAAAQAAARAnsJAAAEbyQAAApvKAAACnIPAABwbykAAApvKgAA
Cio6AigXAAAKAgN9CgAABCoAHgIoFwAABiobMAUAlAIAABEAABECbyQAAApvJQAAChaMMQAAAW8m
AAAKDQlvKwAACm8sAAAKCxYKcy0AAAoMCW8rAAAKby4AAAoTEis9ERJvLwAACnQRAAABEwUIEQVv
MAAACgJvMQAACm8yAAAKCW8zAAAKEQVvNAAACm81AAAKjDEAAAFvNgAAChESbzcAAAotut4WERJ1
NQAAASwMERJ1NQAAAW84AAAK3AJ7BgAABG8dAAAGFG85AAAKdA4AAAETBAIRBBZvMAAABhMGEQZv
OgAAChMTOH8BAAARE287AAAKdCoAAAETCAcX2hfWjQMAAAETBxYKCG88AAAKExQrOxEUby8AAAol
LQUmERUrCnkrAAABcSsAAAETChEHBhEIEgooPQAACig+AAAKbz8AAAooEQAACqIGF9YKERRvNwAA
Ci28AhEHby0AAAYTCREJb0AAAAoTFjjhAAAAEhYoQQAAChMLAnsIAAAEbxQAAAYWCghvPAAAChMX
OLIAAAARF28vAAAKJS0FJhEVKwp5KwAAAXErAAABEwwSDCg9AAAKKD4AAAoTDhIMKEIAAAooQwAA
ChMNEQsGmigRAAAKEw8RDy0UAnsIAAAEb0QAAAoRDW9FAAAKK1QCewgAAARvRAAAChENAglvKwAA
ChEOb0YAAAoRDygRAAAKbzMAAAYoEQAACm9HAAAK3iElKEgAAAoTEHIlAABwEQ4REG9JAAAKKEoA
AApzSwAACnoGF9YKERdvNwAACjpC////EhYoTQAACjoT////3g4SFv4WCwAAG284AAAK3BETb04A
AAo6df7//949ERMsBxETbzgAAArc3i8lKEgAAAoTEQIREW9JAAAKbzQAAAYoTAAACt4TAnsGAAAE
bx0AAAYRBG9PAAAK3CpBkAAAAgAAACsAAABXAAAAggAAABYAAAAAAAABAAAAAMgBAAAzAAAA+wEA
ACEAAAAsAAABAgAAAD0BAAD9AAAAOgIAAA4AAAAAAAABAgAAALsAAACbAQAAVgIAAAwAAAAAAAAB
AAAAALAAAAC0AQAAZAIAABwAAAAsAAABAgAAALAAAADQAQAAgAIAABMAAAAAAAABGzACAJsAAAAS
AAARAm8jAAAGKFAAAAosC3JlAABwc1EAAAp6Am8nAAAGKFAAAAosC3KTAABwc1EAAAp6AigkAAAK
byUAAAoWjDEAAAFvJgAACgwIbysAAApvLAAAChYzBgJvLwAABgJvJAAACm8oAAAKcg8AAHBvKQAA
CgJvIwAABm9SAAAKFwreGCUoSAAACg0WCgMJb0kAAApRKEwAAAreAAYLByoAAQwAAAAAAAB/fwAY
LAAAARMwBABVAAAAEwAAEXNTAAAKCwdyDwAAcG9UAAAKJgdyuQAAcG9UAAAKJgcCbyUAAAZy2QAA
cHL1AABwKFUAAAooEQAACm9UAAAKJgfQIQAAASgUAAAKb1YAAAp0DAAAGyoAAAATMAEACQAAABQA
ABECewsAAAQKBioAAAAiAgN9CwAABCoAAAATMAEACQAAABUAABECewwAAAQKBioAAAByAnsMAAAE
Ay4SAgN9DAAABAJ+VwAACn0NAAAEKgAAABMwAQAJAAAAFgAAEQJ7DQAABAoGKgAAACICA30NAAAE
KgAAABMwAQAJAAAAFwAAEQJvJwAABgoGKgAAACICA28oAAAGKgAAABMwAwATAAAAGAAAEReNIQAA
AQsHFnIBAQBwogcKBioAGzADADIAAAAZAAARAm9YAAAKAxICb1kAAAoIA29aAAAKb1sAAAooEQAA
CgveBwhvXAAACtwHKBEAAAoKBioAAAEMAAACAA4AFCIABwAAAAETMAUAIQAAABoAABFzXQAACgsD
jrcX2hfWjQMAAAEKAgMWBgdvLgAABgcMCCoAAAAbMAUAqAAAABsAABE4hwAAAAMEmixyAwSab14A
AApvXwAACixjAwSadDwAAAEKBm9gAAAKFjMHF40DAAABCgZvYQAACgwrIghvLwAACigRAAAKCwUE
BygRAAAKogIDBBfWBQ4Eby4AAAYIbzcAAAot1t5ACHU1AAABLAsIdTUAAAFvOAAACtwqBQQDBJoo
EQAACqIEF9YQAgQDjrc/cP///w4EBW9iAAAKdA0AABtvYwAACioBDAAAAgAyADVnABQAAAABGzAH
AO4AAAAcAAARAm8kAAAKbyUAAAoWjDEAAAFvJgAACgoCb2QAAAoCbyMAAAZvZQAAChRvZgAACnQO
AAABCwIHF28wAAAGbzoAAAoMCG9nAAAKCG9OAAAKJghvOwAACm9oAAAKDQlvaQAAChMLK2URC29q
AAAKEwkCEQkSBhIHEggSChIEbzEAAAYGbysAAApvawAAChMFEQURCW9sAAAKb20AAAoRBQIRCXIJ
AQBwflcAAApvMgAABig+AAAKb24AAAoRBREGEQcRCBEKEQRvbwAAChELb3AAAAotkt4YAm9kAAAK
Am8jAAAGb2UAAAoHb3EAAArcKgAAAQwAAAIANACh1QAYAAAAARswAgCAAAAAHQAAEQJvJwAABgwC
byUAAAYsDQIIbywAAAZvFQAACgwIc3IAAAoLAwdzcwAAChMEEQRvdAAACgRvdQAAChEEb3YAAAoN
CW93AAAKEwXeMSUoSAAAChMGEQZveAAACiAQEASALg4RBm94AAAKIAIQBIAzC3IhAQBwc0sAAAp6
/hoJCgYqAQwAAAAAQQAKSwAxRgAAARMwBQBIAgAAHgAAEQUCA3JHAQBwFowxAAABbzIAAAYoQwAA
ClQOBBZUDgUWVA4GFlQDb3kAAApFaAAAACYAAABsAAAAPgAAAEMAAAA0AAAAOQAAAGwAAABsAAAA
CAAAAGwAAABsAAAAAgAAAGwAAAArAAAAbAAAAGwAAABOAAAAZgAAAFQAAABaAAAASAAAAGAAAABs
AAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwA
AABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAA
AGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAA
bAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABs
AAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwA
AABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAHQAAAGwAAAAIAAAAK2oEHwtUK28EIIIAAABU
BUoWM2MFIAABAABUK1oEIIcAAABUK1EEF1QrTAQgLQEAAFQrQwQaVCs+BBtUKzkEGFQrNAQZVCsv
BB8UVCspBB8QVCsjBB8SVCsdBB8TVCsXBB8VVCsRBB8RVCsLclUBAHBzSwAACnoqGzACADcAAAAf
AAARBSgRAAAKCwNvegAACgRvewAACm98AAAKKBEAAAoL3g4lKEgAAAoMKEwAAAreAAcoEQAACgoG
KgABDAAAAAAHABkgAA4sAAABEzAEAI0AAAAgAAARBCgRAAAKCwNvfQAACgwIIIIAAAAzJQcoPgAA
ChYDb34AAAoHKD4AAApvfwAACiiAAAAKb4EAAAoLK0kIIIcAAAAzEwQoPgAACiiCAAAKjE8AAAEL
Ky4IHxQzKQd1TAAAASwhByUtBCYJKwp5TAAAAXFMAAABEwQSBCiDAAAKjFAAAAELBygRAAAKCgYq
AAAAEzAHABsAAAAhAAARAm8kAAAKFnKDAQBwA35XAAAKFhIAb4QAAAoqAB4CKBcAAAoqEzACAC0A
AAAiAAARfg4AAAQtIHKZAQBw0AwAAAIoFAAACm+OAAAKc48AAAoLB4AOAAAEfg4AAAQqAAAAEzAB
AAYAAAAjAAARfg8AAAQqAAAeAoAPAAAEKkJzFwAACigRAAAKgBEAAAQqAAAAHgIokAAACiobMAEA
PwAAACQAABF+EAAABC0yfhEAAAQoEQAACiiRAAAKfhAAAAQtHHM6AAAGgBAAAATeEH4RAAAEKBEA
AAookgAACtx+EAAABCoAAQwAAAIAHQAMKQAQAAAAAUJTSkIBAAEAAAAAAAwAAAB2Mi4wLjUwNzI3
AAAAAAUAbAAAAMgPAAAjfgAANBAAANAUAAAjU3RyaW5ncwAAAAAEJQAAzAEAACNVUwDQJgAAEAAA
ACNHVUlEAAAA4CYAAGgHAAAjQmxvYgAAAAAAAAACAAABVxWiCQkPAAAA+gEzABYAAAEAAABnAAAA
DQAAABEAAAA7AAAAJgAAAJ0AAABEAAAAJAAAAAcAAAAQAAAAFQAAAA0AAAABAAAACgAAAAEAAAAC
AAAAAwAAAAIAAAAAAJEUAQAAAAAACgCqAYABCgDeAcABBgDuAecBCgBGAoABBgDEAucBCgBGAxwD
DgCYA4EDEgDnA8YDFgAYBMYDDgDBBIEDGgCMBWQFBgCcBoEGHgDnBtUGHgACB9UGHgAxB9UGGgA+
B2QFIgD5B9AHBgCaCIkIBgDHCLIIJgAuCRkJJgB7CWUJJgCUCWUJJgDBCakJBgDrCdgJCgAqCgMK
CgBCChMAJgB3CloKBgCsCowKBgDKCucBBgDuCucBCgAHCxMABgBLCywLBgBfC+cBEgBmC8YDBgBz
C+cBIgCJC9AHIgC4C9AHIgDlC9AHIgADDNAHIgBGDNAHBgCIDHUMHgCSDNUGBgCjDHUMBgCzDOcB
BgC9DHUMNwDJDAAABgDkDHUMMwD6DAAABgAFDecBIgALDdAHFgBxDcYDIgCVDdAHBgD4DecBHgAe
DtUGCgA7DgMKCgBiDgMKBgDDDucBBgDwDnUMCgD6DhMABgAKD+cBGgAeD2QFGgAvD2QFGgBtD2QF
HgChD9UGAwG4DwAAKgADAe4PKgAkEO4PHgB+ENUGHgCKENUGHgCjENUGHgC3ENUGHgDsENUGHgAL
EdUGHgAcEdUGHgBDEdUGBgBREecBBgBnEecBHgB6EdUGBgCWEecBBgC0EecBEgDEEcYDDgANEusR
DgAnEusRDgBDEusRDgBbEusRJgBvEmUJDgCEEusRJgCYEmUJJgCzEmUJDgDFEusRBgDpEtcSBgAQ
E/8SBgAjE9gJBgCME4wKBgCsE4wKBgDKE9cSBgDnEywLBgD1E9cSBgAQFNcSBgArFNcSBgBEFNcS
BgBdFNcSBgB6FNcSAAAAAAEAAAAAAAEAAQAAAAAAKQA3AAUAAQABAAAAAAByADcACQABAAIAAAEQ
AH0ANwANAAEAAwAFAQAAhwAAAA0ABQAIAAUBAACVAAAADQAFAA8AAQAAALAAvQAdAAYAEQABAAAA
9QC9ACkABgAXAAEAAAADAb0ADQAJABwAAQAAAA8BvQANAAoAHgABAAAAGQG9ACAACwAfAAAAAAAk
ATABDQAOADUAAAEQAHUBvQBRABAAOQAxAAkCIAAxADICLQAxAFQCOgAxAHkCRwAhAFUDkAAGAAMB
xwAGAA8BywAGALAAzwABADEF3QABADEF3QABADEISAEBAD4ISwEBAEsISAERAKoIVgERANMIWgER
AEYJeAERAE4JfAEIIQAAAAAGGLoBEwABABAhAAAAAAYYugETAAEAGCEAAAAAERj1ARcAAQBEIQAA
AAATCPwBGwABAFwhAAAAABMIIgIoAAEAdCEAAAAAEwhLAjUAAQCMIQAAAAATCGkCQgABAKQhAAAA
AEYCrwJjAAEAwCEAAAAARgK4AmgAAgDUIQAAAACDAMkCbAACAOwhAAAAAEYC0QJxAAIAACIAAAAA
EQDaAngAAgAcIgAAAAABAPgCgAADADgiAAAAAAYYugETAAQAQCIAAAAAAwgMA4sABAB0IgAAAAAG
GLoBEwAEAIgiAAAAAAYYugGvAAQAmCIAAAAARgpJBLkACACsIgAAAABGCmAEuQAIAMAiAAAAAIYA
eAQTAAgAyCIAAAAAhgB/BBMACADQIgAAAACGAI4EvgAIAOgiAAAAAAYYugETAAgACCMAAAAARgPV
BBMACAAMIwAAAAABAOMEEwAIACgjAAAAAEYC9wTTAAgAjCMAAAAARgMdBRMACwCQIwAAAAAGGLoB
4QALAKAjAAAAAAYIpQXnAAwAzCMAAAAABhi6AeEADADcIwAAAAAGGLoBEwANAOQjAAAAAEYCHQUT
AA0AGCcAAAAABgC/BfEADQDQJwAAAAAGANMFuQAOADQoAAAAAAYIpQVxAA4ATCgAAAAABgjhBfcA
DgBYKAAAAAAGCPYFvgAPAHAoAAAAAAYICgb8AA8AkCgAAAAABggeBnEAEACoKAAAAAAGCCgG9wAQ
ALQoAAAAAAYIMgZxABEAzCgAAAAABghEBvcAEQDYKAAAAAABCFYGuQASAPgoAAAAAAEAbAYBARIA
SCkAAAAAAQCjBgYBEwB4KQAAAAABAKMGEQEUADwqAAAAAAEAwQYTABgASCsAAAAAAQASByABGADk
KwAAAAABAEcHKAEaADguAAAAAAEAjAc5ASAAjC4AAAAAAQANCEEBIwAoLwAAAAABAB4I9wAlAFAv
AAAAAAMYugETACYAWC8AAAAAFgjfCF4BJgCULwAAAAAWCPMIYwEmAKgvAAAAABYI/whoASYAsC8A
AAAAERj1ARcAJwDELwAAAAAGGLoBEwAnAMwvAAAAABYIWwl/AScAAAABALYCAAABAO8CAAABAO8C
AAABACcEAAACADEEAAADADoEAAAEAEIEAAABAAMFAAACAAsFAAADABUFAAABACcEAAABACcEAAAB
AMgFAAABAPAFAAABAPAFAAABAPAFAAABAPAFAAABAHkGAAABAK4GAAABAK4GAAACALIGAAADALYG
AAAEALoGAAABACIHAAACACgHAAABAF8HAAACAGQHAAADAGwHAAAEAHMHAAAFAH0HAAAGAIMHAAAB
AF8HAAACAJoHAAADAKMHAAABABcIAAACAPAFAAABACkIAAABAAsJCQC6ARMAqQC6AYkBuQC6AZgB
EQC6ARMAwQC6ARMAJAC6ARMALAC6ARMANAC6ARMAPAC6ARMAJAAMA4sALAAMA4sANAAMA4sAPAAM
A4sAyQC6ARMA0QC6ARMA2QC6AfcA4QC7CjECGQCvAmMAGQC4AmgAKQDcCj4CGQDRAnEA8QD4Ck4C
GQC6ARMA+QC6AV4CRABVA5AATABbCYsATAAiC9sCTAC6ARMAAQG6AfwAOQC6Aa8AEQF4BBMAEQF/
BBMAEQGOBL4AGQG6AfwAUQC6ARMAQQCiC/MCIQHQC/kCKQHzC/8CMQH8C2gAIQEmDAsDOQHzCxED
QQFfDOcAMQEpDR0DkQFEDWgASQG6ARMAkQFODSMDaQFcDSkDiQBoDXEAUQCDDS0DmQGqDTMDMQG8
DWgAiQDHDWgAoQHVDTkDSQHrDT8DaQHvDb4AqQEEDhMAWQAMDkUDaQBODUoDcQFcDVADSQFODVYD
WQEzDikDuQHRAlwDsQHzCwEBVABODWgDXABcDYsAWQFbCSkDuQFHDnoDOQC8DX8DSQBRDoQDkQHz
C4kDSQBZDo8DwQFuDpUDYQF+DnEACQGKDpwDYQG6AfcAwQGRDhcAXADvDb4AcQHvDb4AWQCjDqMD
CQG1DusDyQG6AfcAQQHYDvcA0QG6ARMA0QHrDfsD2QEGDwAE0QEQDwcECQEYD0gBQQBIDyEE8QFe
DycE6QHzCzAE+QFbCSkD6QF9DxMAVAC6ARMAGQDJAmwAKQCED74A4QGQD2gA4QFODSMD4QGbDykD
VADrDdsCUQAOEF0EEQLzC2MEGQIMDkUDcQE2EBMAsQE8EGoEAQJODXAECQJcDXYEkQFLEHsEeQBo
DXEAiQBPEPcAiQBYEPcAiQBoEIAECQLvDb4AGQKjDqMDIQK6AfcAKQK6AaUEKQLKEK4EOQLWEPwA
KQLoELQEaQBEDWgAMQL9ELkEeQATEdEEeQA0Ed0EUQLzC+MEWQJbCSkDiQBaEfIEiQCQD2gACQGQ
D2gAaQJsEfcECQFwEf0EcQKfEQMFYQKqEQoFIQG6ERsFiQK6ARMAkQK6AfcAmQK6AfcAoQK6AUcF
qQK6AfcAsQK6AfcAuQK6AcAFwQK6AfkF0QK6ARMAKQDyEmgGkQC6AW4GoQC6ARMA4QIYE4sG4QIe
E4sG6QK6ARMA8QK6AYQD+QK6ARMAAQO6AfcACQO6AfcAEQO6AfcAGQO6AfcAIQO6AfcAKQO6AfcA
MQO6AfcAOQO6AfcAKQCDAOsBLgDbBFcHLgDTBBoHLgCrBJ4GLgCzBL0GLgDLBPoGLgDrBBoHLgCj
BJUGLgDjBOgCLgC7BMoGLgDrAOgCLgATAfQGLgDDBOgCQAArALYBQAATAI8BQwATAI8BQwAbAJ4B
SQCDAAkCYwATAI8BYwAbAJ4BaQCDAPwBgAArALYBgwBzALYBgwB7ALYBgwAbAJ4BiQCDAB0CoAAr
ALYBowATAI8BowDDAGYCwAArALYBwwDrAOgCwwATAI8B4AArALYB4wATAegCAAETAI8BAAErALYB
AwETAegCIAETAI8BIAErALYBKQFTBJwFKQFLBIUFQAErALYBQAETAI8BSQFjBI8BSQFTBAAGYAET
AI8BYAErALYBYwErBLYBYwEzBCYFYwFDBE0FYwETAegCYwE7BDkFaQFTBN8FaQFbBMcFgAErALYB
iQFTBD4GiQFrBLYBoAErALYBwAETAI8BwAErALYByQETAIIG4AErALYB6QETAIIGAAITAI8BAAIr
ALYBCQKbBLYBgAMTAegCwAMTAegC1wHcAeEB5gE2AjoCRQJKAlkCWQLhAu4C7gI2AgYDGAOoA/AD
EgRKAjYCSgJKAhoENwQ/BFMEigS/BNcE6gQOBTYCdgZ9BpAGBAABAAYABQAHAAYACQAIAAsACQAM
AA4ADQAQAAAA3gFPAAAAlwJUAAAARgJZAAAAowJeAAAAXwOYAAAAmgTCAAAArQTCAAAAtAXsAAAA
tAVOAQAAUwhSAQAAYwhOAQAAaQhOAQAAdwjCAAAAmghuAQAAEQlzAQAACwmEAQIABAADAAIABQAF
AAIABgAHAAIABwAJAAIADwALAAIAEgANAAIAEwAPAAIAHQARAAIAIwATAAEAJAATAAIAJQAVAAEA
JgAVAAIAJwAXAAEAKAAXAAEAKgAZAAIAKQAZAAIAKwAbAAIANgAdAAIANwAfAAEAOAAfAAIAOwAh
AHUAdQCIALsBwgHJAdAByALPAmEDcgMPBFAEBIAAAAEAAAAAAAAAAAAAAAAAvQAAAAIAAAAAAAAA
AAAAAAEACgAAAAAACAAAAAAAAAAAAAAACgATAAAAAAABAAAAAAAAAAAAAACdAGsDAAAAAAoAAAAA
AAAAAAAAAKYAqQMAAAAACgAAAAAAAAAAAAAApgD3AwAAAAAKAAAAAAAAAAAAAACmAEEFAAAAAAIA
AAAAAAAAAAAAAAoA1QYAAAAACgAAAAAAAAAAAAAApgCsBwAAAAACAAAAAAAAAAAAAAABAOcBAAAA
AAoAAAAAAAAAAAAAAKYAzw8AAAAAAAAAAAEAAABAEwAABQAEAAYABAAAABAADADtAgAAEAAZAO0C
AAAAABsA7QItAFQCLQDWAgAAADxNb2R1bGU+AG1zY29ybGliAE1pY3Jvc29mdC5WaXN1YWxCYXNp
YwBNeUFwcGxpY2F0aW9uAFNjcmlwdENvbXBvbmVudF8zMDYwMmZkNjUyNWY0YWU5OWNjZTliNGMz
ODIxZmM4OC52YnByb2ouTXkATXlDb21wdXRlcgBNeVByb2plY3QATXlXZWJTZXJ2aWNlcwBUaHJl
YWRTYWZlT2JqZWN0UHJvdmlkZXJgMQBPdXRwdXRCdWZmZXIAU2NyaXB0Q29tcG9uZW50XzMwNjAy
ZmQ2NTI1ZjRhZTk5Y2NlOWI0YzM4MjFmYzg4LnZicHJvagBVc2VyQ29tcG9uZW50AENvbm5lY3Rp
b25zAFZhcmlhYmxlcwBTY3JpcHRNYWluAE15UmVzb3VyY2VzAFNjcmlwdENvbXBvbmVudF8zMDYw
MmZkNjUyNWY0YWU5OWNjZTliNGMzODIxZmM4OC52YnByb2ouTXkuUmVzb3VyY2VzAE15U2V0dGlu
Z3MATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkFwcGxpY2F0aW9uU2VydmljZXMAQXBwbGljYXRpb25C
YXNlAC5jdG9yAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5EZXZpY2VzAENvbXB1dGVyAFN5c3RlbQBP
YmplY3QALmNjdG9yAGdldF9Db21wdXRlcgBtX0NvbXB1dGVyT2JqZWN0UHJvdmlkZXIAZ2V0X0Fw
cGxpY2F0aW9uAG1fQXBwT2JqZWN0UHJvdmlkZXIAVXNlcgBnZXRfVXNlcgBtX1VzZXJPYmplY3RQ
cm92aWRlcgBnZXRfV2ViU2VydmljZXMAbV9NeVdlYlNlcnZpY2VzT2JqZWN0UHJvdmlkZXIAQXBw
bGljYXRpb24AV2ViU2VydmljZXMARXF1YWxzAG8AR2V0SGFzaENvZGUAVHlwZQBHZXRUeXBlAFRv
U3RyaW5nAENyZWF0ZV9fSW5zdGFuY2VfXwBUAGluc3RhbmNlAERpc3Bvc2VfX0luc3RhbmNlX18A
Z2V0X0dldEluc3RhbmNlAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5NeVNlcnZpY2VzLkludGVybmFs
AENvbnRleHRWYWx1ZWAxAG1fQ29udGV4dABHZXRJbnN0YW5jZQBDb3p5Um9jLlNTSVNQbHVzLjIw
MDgAQ296eVJvYy5TcWxTZXJ2ZXIuU1NJUwBTY3JpcHRCdWZmZXJQbHVzAE1pY3Jvc29mdC5TcWxT
ZXJ2ZXIuVHhTY3JpcHQATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUAU2NyaXB0Q29t
cG9uZW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuUGlwZWxpbmVIb3N0AFBpcGVsaW5lQnVmZmVyAENv
bXBvbmVudABPYmplY3RJRABJc0lucHV0AEJ1ZmZlcgBnZXRfU3RhdGljSW5wdXRDb2x1bW5zAGdl
dF9TdGF0aWNPdXRwdXRDb2x1bW5zAEFkZFJvdwBTZXRFbmRPZlJvd3NldABFbmRPZlJvd3NldABT
dGF0aWNJbnB1dENvbHVtbnMAU3RhdGljT3V0cHV0Q29sdW1ucwBTY3JpcHRDb21wb25lbnRQbHVz
AEZpbmlzaE91dHB1dHMATWFya091dHB1dHNGaW5pc2hlZABQcmltZU91dHB1dABPdXRwdXRzAE91
dHB1dElEcwBCdWZmZXJzAENyZWF0ZU5ld091dHB1dFJvd3MAUGFyZW50Q29tcG9uZW50AE1pY3Jv
c29mdC5TcWxTZXJ2ZXIuRFRTUnVudGltZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUnVu
dGltZS5XcmFwcGVyAElEVFNDb25uZWN0aW9uTWFuYWdlcjEwMABnZXRfQ29ubmVjdGlvbgBDb25u
ZWN0aW9uAFZhbGlkYXRlAGVyck1lc3NhZ2UAR2V0UHJvcGVydGllcwBzZXRfQ29ubmVjdGlvbgB2
YWx1ZQBnZXRfSXNRdWVyeVZhcmlhYmxlAHNldF9Jc1F1ZXJ5VmFyaWFibGUAZ2V0X1F1ZXJ5AHNl
dF9RdWVyeQBnZXRfUXVlcnlWYXJpYWJsZQBzZXRfUXVlcnlWYXJpYWJsZQBnZXRfV21pQ29ubmVj
dGlvblR5cGUAR2V0VmFyaWFibGVfAHZhck5hbWUAU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMA
TGlzdGAxAFVud2luZFJvd18AYXJyAHBvcwBidWYAcmVzdWx0AFNldHVwT3V0cHV0Q29sdW1uc18A
U3lzdGVtLk1hbmFnZW1lbnQATWFuYWdlbWVudE9iamVjdENvbGxlY3Rpb24ATWFuYWdlbWVudFNj
b3BlAEdldFF1ZXJ5UmVzdWx0XwBzY29wZQBvbmx5TWV0YQBQcm9wZXJ0eURhdGEARGF0YVR5cGUA
R2V0RHRzVHlwZUZyb21Qcm9wZXJ0eV8AcHJvcABkdHNUeXBlAGxlbmd0aABwcmVjaXNpb24Ac2Nh
bGUAY29kZVBhZ2UAR2V0UXVhbGlmaWVyXwBxdWFsTmFtZQBkZWZWYWx1ZQBNaWNyb3NvZnQuU3Fs
U2VydmVyLkRUU1BpcGVsaW5lV3JhcABNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZS5X
cmFwcGVyAElEVFNPdXRwdXRDb2x1bW4xMDAAR2V0VmFsdWVfAGNvbHVtbgBGaXJlRXJyb3JfAG1l
c3NhZ2UAbV9jb25uZWN0aW9uAG1faXNRdWVyeVZhcgBtX3F1ZXJ5AElzUXVlcnlWYXJpYWJsZQBR
dWVyeQBRdWVyeVZhcmlhYmxlAFdtaUNvbm5lY3Rpb25UeXBlAFN5c3RlbS5SZXNvdXJjZXMAUmVz
b3VyY2VNYW5hZ2VyAF9yZXNNZ3IAU3lzdGVtLkdsb2JhbGl6YXRpb24AQ3VsdHVyZUluZm8AX3Jl
c0N1bHR1cmUAZ2V0X1Jlc291cmNlTWFuYWdlcgBnZXRfQ3VsdHVyZQBzZXRfQ3VsdHVyZQBWYWx1
ZQBDdWx0dXJlAFN5c3RlbS5Db25maWd1cmF0aW9uAEFwcGxpY2F0aW9uU2V0dGluZ3NCYXNlAG1f
VmFsdWUAbV9TeW5jT2JqZWN0AGdldF9WYWx1ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwARWRpdG9y
QnJvd3NhYmxlQXR0cmlidXRlAEVkaXRvckJyb3dzYWJsZVN0YXRlAFN5c3RlbS5Db2RlRG9tLkNv
bXBpbGVyAEdlbmVyYXRlZENvZGVBdHRyaWJ1dGUAU3lzdGVtLkRpYWdub3N0aWNzAERlYnVnZ2Vy
SGlkZGVuQXR0cmlidXRlAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5Db21waWxlclNlcnZpY2VzAFN0
YW5kYXJkTW9kdWxlQXR0cmlidXRlAEhpZGVNb2R1bGVOYW1lQXR0cmlidXRlAFN5c3RlbS5Db21w
b25lbnRNb2RlbC5EZXNpZ24ASGVscEtleXdvcmRBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuQ29t
cGlsZXJTZXJ2aWNlcwBSdW50aW1lSGVscGVycwBHZXRPYmplY3RWYWx1ZQBSdW50aW1lVHlwZUhh
bmRsZQBHZXRUeXBlRnJvbUhhbmRsZQBBY3RpdmF0b3IAQ3JlYXRlSW5zdGFuY2UATXlHcm91cENv
bGxlY3Rpb25BdHRyaWJ1dGUAc2V0X1ZhbHVlAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNl
cwBDb21WaXNpYmxlQXR0cmlidXRlAFN0cmluZwBTY3JpcHRCdWZmZXIAQ0xTQ29tcGxpYW50QXR0
cmlidXRlAElEVFNDb21wb25lbnRNZXRhRGF0YTEwMABnZXRfQ29tcG9uZW50TWV0YURhdGEASURU
U091dHB1dENvbGxlY3Rpb24xMDAAZ2V0X091dHB1dENvbGxlY3Rpb24ASURUU091dHB1dDEwMABn
ZXRfSXRlbQBnZXRfSUQASURUU1J1bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbjEwMABnZXRfUnVu
dGltZUNvbm5lY3Rpb25Db2xsZWN0aW9uAElEVFNSdW50aW1lQ29ubmVjdGlvbjEwMABnZXRfQ29u
bmVjdGlvbk1hbmFnZXIAU3lzdGVtLkNvbGxlY3Rpb25zAEhhc2h0YWJsZQBNYW5hZ2VtZW50T2Jq
ZWN0AERpY3Rpb25hcnlFbnRyeQBFeGNlcHRpb24ASUVudW1lcmF0b3IATWFuYWdlbWVudE9iamVj
dEVudW1lcmF0b3IASURpY3Rpb25hcnlFbnVtZXJhdG9yAEVudW1lcmF0b3IASW50MzIASURUU091
dHB1dENvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0X091dHB1dENvbHVtbkNvbGxlY3Rpb24AZ2V0X0Nv
dW50AEdldEVudW1lcmF0b3IAZ2V0X0N1cnJlbnQAZ2V0X05hbWUAUGlwZWxpbmVDb21wb25lbnQA
Z2V0X0hvc3RDb21wb25lbnQASURUU0J1ZmZlck1hbmFnZXIxMDAAZ2V0X0J1ZmZlck1hbmFnZXIA
Z2V0X0J1ZmZlcgBnZXRfTGluZWFnZUlEAEZpbmRDb2x1bW5CeUxpbmVhZ2VJRABBZGQATW92ZU5l
eHQASURpc3Bvc2FibGUARGlzcG9zZQBBY3F1aXJlQ29ubmVjdGlvbgBNYW5hZ2VtZW50QmFzZU9i
amVjdABnZXRfS2V5AENvbnZlcnNpb25zAFRvSW50ZWdlcgBTZXROdWxsAHNldF9JdGVtAFByb2pl
Y3REYXRhAFNldFByb2plY3RFcnJvcgBnZXRfTWVzc2FnZQBGb3JtYXQAQ2xlYXJQcm9qZWN0RXJy
b3IAUmVsZWFzZUNvbm5lY3Rpb24ASXNOdWxsT3JFbXB0eQBBcHBsaWNhdGlvbkV4Y2VwdGlvbgBz
ZXRfQ29ubmVjdGlvbk1hbmFnZXJJRABBcnJheUxpc3QASW50ZXJhY3Rpb24ASUlmAEFycmF5AFRv
QXJyYXkARW1wdHkASURUU1ZhcmlhYmxlczEwMABJRFRTVmFyaWFibGVEaXNwZW5zZXIxMDAAZ2V0
X1ZhcmlhYmxlRGlzcGVuc2VyAExvY2tPbmVGb3JSZWFkAElEVFNWYXJpYWJsZTEwMABVbmxvY2sA
Z2V0X0lzQXJyYXkAZ2V0X0xlbmd0aABDbG9uZQBQcm9wZXJ0eURhdGFDb2xsZWN0aW9uAFByb3Bl
cnR5RGF0YUVudW1lcmF0b3IATWljcm9zb2Z0LlNxbFNlcnZlci5NYW5hZ2VkRFRTAE1pY3Jvc29m
dC5TcWxTZXJ2ZXIuRHRzLlJ1bnRpbWUAZ2V0X0Rlc2lnbkNvbm5lY3Rpb25zAENvbm5lY3Rpb25N
YW5hZ2VyAFJlc2V0AGdldF9Qcm9wZXJ0aWVzAE5ldwBzZXRfTmFtZQBzZXRfRGVzY3JpcHRpb24A
U2V0RGF0YVR5cGVQcm9wZXJ0aWVzAE9iamVjdFF1ZXJ5AE1hbmFnZW1lbnRPYmplY3RTZWFyY2hl
cgBNYW5hZ2VtZW50RXhjZXB0aW9uAEVudW1lcmF0aW9uT3B0aW9ucwBnZXRfT3B0aW9ucwBzZXRf
UHJvdG90eXBlT25seQBHZXQATWFuYWdlbWVudFN0YXR1cwBnZXRfRXJyb3JDb2RlAENpbVR5cGUA
Z2V0X1R5cGUAUXVhbGlmaWVyRGF0YUNvbGxlY3Rpb24AZ2V0X1F1YWxpZmllcnMAUXVhbGlmaWVy
RGF0YQBUaW1lU3BhbgBnZXRfRGF0YVR5cGUATWF0aABNaW4AU3Vic3RyaW5nAE1hbmFnZW1lbnRE
YXRlVGltZUNvbnZlcnRlcgBEYXRlVGltZQBUb0RhdGVUaW1lAGdldF9UaWNrcwBJbnQ2NABGaXJl
RXJyb3IAU1NJU1NjcmlwdENvbXBvbmVudEVudHJ5UG9pbnRBdHRyaWJ1dGUAQ296eVJvYy5TcWxT
ZXJ2ZXIuU1NJUy5BdHRyaWJ1dGVzAEZpbHRlclByb3BlcnRpZXNBdHRyaWJ1dGUAVmFsaWRhdGVQ
cm9wZXJ0aWVzQXR0cmlidXRlAFNvcnRQcm9wZXJ0aWVzQXR0cmlidXRlAENvbm5lY3Rpb25BdHRy
aWJ1dGUARGVzY3JpcHRpb25BdHRyaWJ1dGUAVGV4dERpYWxvZ0F0dHJpYnV0ZQBSZWZyZXNoUHJv
cGVydGllc0F0dHJpYnV0ZQBSZWZyZXNoUHJvcGVydGllcwBWYXJpYWJsZUF0dHJpYnV0ZQBTeXN0
ZW0uUmVmbGVjdGlvbgBBc3NlbWJseQBnZXRfQXNzZW1ibHkAU3lzdGVtLlRocmVhZGluZwBNb25p
dG9yAEVudGVyAEV4aXQARGVidWdnZXJOb25Vc2VyQ29kZUF0dHJpYnV0ZQBTY3JpcHRDb21wb25l
bnRfMzA2MDJmZDY1MjVmNGFlOTljY2U5YjRjMzgyMWZjODgudmJwcm9qLlJlc291cmNlcy5yZXNv
dXJjZXMAQ29tcGlsYXRpb25SZWxheGF0aW9uc0F0dHJpYnV0ZQBSdW50aW1lQ29tcGF0aWJpbGl0
eUF0dHJpYnV0ZQBBc3NlbWJseUZpbGVWZXJzaW9uQXR0cmlidXRlAEd1aWRBdHRyaWJ1dGUAQXNz
ZW1ibHlUcmFkZW1hcmtBdHRyaWJ1dGUAQXNzZW1ibHlDb3B5cmlnaHRBdHRyaWJ1dGUAQXNzZW1i
bHlQcm9kdWN0QXR0cmlidXRlAEFzc2VtYmx5Q29tcGFueUF0dHJpYnV0ZQBBc3NlbWJseURlc2Ny
aXB0aW9uQXR0cmlidXRlAEFzc2VtYmx5VGl0bGVBdHRyaWJ1dGUAU2NyaXB0Q29tcG9uZW50XzMw
NjAyZmQ2NTI1ZjRhZTk5Y2NlOWI0YzM4MjFmYzg4LnZicHJvai5kbGwAAAAAAA1PAHUAdABwAHUA
dAAAFUMAbwBuAG4AZQBjAHQAaQBvAG4AAD9GAGEAaQBsAGUAZAAgAHQAbwAgAHMAZQB0ACAAYwBv
AGwAdQBtAG4AIAAnAHsAMAB9ACcALgAgAHsAMQB9AAEtUwBlAGwAZQBjAHQAIABXAE0ASQAgAGMA
bwBuAG4AZQBjAHQAaQBvAG4ALgAAJVMAcABlAGMAaQBmAHkAIABXAFEATAAgAHEAdQBlAHIAeQAu
AAAfSQBzAFEAdQBlAHIAeQBWAGEAcgBpAGEAYgBsAGUAABtRAHUAZQByAHkAVgBhAHIAaQBhAGIA
bABlAAALUQB1AGUAcgB5AAAHVwBNAEkAABdEAGUAcwBjAHIAaQBwAHQAaQBvAG4AACVJAG4AdgBh
AGwAaQBkACAAVwBRAEwAIABxAHUAZQByAHkALgAADU0AYQB4AEwAZQBuAAAtVQBuAGgAYQBuAGQA
bABlAGQAIABjAG8AbAB1AG0AbgAgAHQAeQBwAGUALgAAFVcATQBJACAAUwBvAHUAcgBjAGUAADFN
AHkALgBSAGUAcwBvAHUAcgBjAGUAcwAuAE0AeQBSAGUAcwBvAHUAcgBjAGUAcwAAAN4oQBlqHXNO
qtWKrFeTmM0ACLd6XFYZNOCJCLA/X38R1Qo6AyAAAQMAAAEEAAASDAcGFRIYARIMBAAAEggHBhUS
GAESCAQAABIRBwYVEhgBEhEEAAASFAcGFRIYARIUBAgAEgwECAASCAQIABIRBAgAEhQEIAECHAMg
AAgEIAASFQMgAA4CHgAHEAEBHgAeAAcwAQEBEB4AAhMABCAAEwAHBhUSGQETAAQoABMACBbPSQu4
DDTqCImEXc2AgMyRCSAEARIhCAISJQQgAB0OAyAAAgQoAB0OAwYSJAMGEigDBhIcCSADAQgdCB0S
JQMGEiEFIAEBEiEEIAASLQQoABItBSABAhAOBCABAQ4EIAEBAgQgARwOCiABFRIxAR0cHRwOIAQB
HRwIHRwVEjEBHRwHIAISNRI5AhAgBgESPRARQRAIEAgQCBAIByADHBI9DhwGIAIcEkUcAgYOAgYC
AygADgMoAAIDBhJJAwYSTQQAABJJBAAAEk0FAAEBEk0ECAASSQQIABJNAwYSNAIGHAQAABI0BAgA
EjQFIAEBEVkIAQABAAAAAAAFIAIBDg4XAQAKTXlUZW1wbGF0ZQc4LjAuMC4wAAAEAQAAAAYVEhgB
EgwGFRIYARIIBhUSGAESEQYVEhgBEhQEBwESDAQHARIIBAcBEhEEBwESFBABAAtNeS5Db21wdXRl
cgAADAEAB015LlVzZXIAABMBAA5NeS5BcHBsaWNhdGlvbgAAEwEADk15LldlYlNlcnZpY2VzAAAE
AAEcHAMHAQIDBwEIBgABEhURdQQHARIVAwcBDgUQAQAeAAQKAR4ABAcBHgAHIAQBDg4ODmEBADRT
eXN0ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scy5Tb2FwSHR0cENsaWVudFByb3RvY29sEkNyZWF0
ZV9fSW5zdGFuY2VfXxNEaXNwb3NlX19JbnN0YW5jZV9fAAAABhUSGAETAAYVEhkBEwAECgETAAUg
AQETAAYHAhMAEwAFAQAAAAAEBwEdDgUgABKAkQUgABKAlQYgARKAmRwEBwIICAUgABKAnQYgARKA
oRwEBwESLQUgABKAyQUgABKAtQMgABwFIAASgM0FIAASgNEFIAIICAgFIAIBHBwEIAEcHAUgABKA
uQUgABKA2QUgABKAvQQAAQ4cBhUSMQEdHAkgABURgMEBEwAHFRGAwQEdHAQAAQgcBCAAEiUEIAEB
CAUgARJFHAUgAgEIHAYAAQESgLEGAAMODhwcBCABARxCBxgICBKApRKAmRI5EkUSNR0cEoCpFRIx
AR0cEYCtHRwRgK0IDhwSgLESgLESgLUSgLkSgL0RgK0VEYDBAR0cEoC9BAABAg4KBwQCAhKAmRKA
sQQgAQgcBgADHAIcHAcgARKA8RIVAh0OBwcCHQ4SgOkGBwIdDh0OBSAAEoD5CCACAQ4QEoD1BiAB
EoD9HAcHAxwcEoD1EAcDHRwVEjEBHRwVEjEBHRwCHRwJBwMSgPEcEoC1BSAAEoEJBiABEoENHAUg
ABKBAQUgABKBBQQgABI9BCAAEkUJIAUBEUEICAgIGgcMEoCZEjkSgLkSgQEIEkURQQgIEj0IEoEF
CCACARI5EoERBSAAEoEdBCAAEjUFIAARgSERBwcSNRKBEQ4SNRKBFQgSgRkFIAARgSUFBwERgSUF
IAASgSkGIAESgS0OBwcDHBwSgLEEIAARQQUAAggICAUgAg4ICAYAARGBPQ4DIAAKDAcFHBwRQRGB
MRGBMQogBgEIDg4OCBACEgEADUdldFByb3BlcnRpZXMAAA0BAAhWYWxpZGF0ZQAABSABAR0ONwEA
BAAAAApDb25uZWN0aW9uD0lzUXVlcnlWYXJpYWJsZQVRdWVyeQ1RdWVyeVZhcmlhYmxlAAAWAQAR
V21pQ29ubmVjdGlvblR5cGUAACMBAB5TZWxlY3QgV01JIENvbm5lY3Rpb24gTWFuYWdlci4AAAYg
AwEODg4XAQANU3BlY2lmeSBxdWVyef8Dc3FsAAAZAQAUU3BlY2lmaWVzIFdNSSBxdWVyeS4AAAYg
AQERgWU9AQA4U3BlY2lmaWVzIGlmIFF1ZXJ5IHByb3BlcnR5IHJlZmVyZW5jZXMgcGFja2FnZSB2
YXJpYWJsZS4AACkBACRTcGVjaWZpZXMgdmFyaWFibGUgY29udGFpbmluZyBxdWVyeS4AAAUgABKB
bQcgAgEOEoFtBgcCEkkSSQQHARJNCAEAAgAAAAAABAABARwEBwESNAgBAAgAAAAAAB4BAAEAVAIW
V3JhcE5vbkV4Y2VwdGlvblRocm93cwEMAQAHMS4wLjAuMAAAKQEAJDg1YjQyYzYyLTM4N2QtNDcy
Yy05ZDA4LTEzYzIxZjdmOGE2ZgAABQEAAQAAHwEAGkNvcHlyaWdodCBAIE1pY3Jvc29mdCAyMDEx
AAA8AQA3U2NyaXB0Q29tcG9uZW50XzMwNjAyZmQ2NTI1ZjRhZTk5Y2NlOWI0YzM4MjFmYzg4LnZi
cHJvagAADgEACU1pY3Jvc29mdAAAAACYXgAAAAAAAAAAAACuXgAAACAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAoF4AAAAAAAAAAF9Db3JEbGxNYWluAG1zY29yZWUuZGxsAAAAAAD/JQAgQAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAAAoAACADgAAAEgAAIAQ
AAAAYAAAgAAAAAAAAAAAAAAAAAAAAgACAAAAeAAAgAMAAACQAACAAAAAAAAAAAAAAAAAAAABAAB/
AACoAACAAAAAAAAAAAAAAAAAAAABAAEAAADAAACAAAAAAAAAAAAAAAAAAAABAAAAAADYAAAAAAAA
AAAAAAAAAAAAAAABAAAAAADoAAAAAAAAAAAAAAAAAAAAAAABAAAAAAD4AAAAAAAAAAAAAAAAAAAA
AAABAAAAAAAIAQAAgGUAAOgCAAAAAAAAAAAAAGhoAAAoAQAAAAAAAAAAAACQaQAAIgAAAAAAAAAA
AAAAGGEAAGgEAAAAAAAAAAAAAGgENAAAAFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4ARgBPAAAA
AAC9BO/+AAABAAAAAQAAAAAAAAABAAAAAAA/AAAAAAAAAAQAAAACAAAAAAAAAAAAAAAAAAAARAAA
AAEAVgBhAHIARgBpAGwAZQBJAG4AZgBvAAAAAAAkAAQAAABUAHIAYQBuAHMAbABhAHQAaQBvAG4A
AAAAAAAAsATIAwAAAQBTAHQAcgBpAG4AZwBGAGkAbABlAEkAbgBmAG8AAACkAwAAAQAwADAAMAAw
ADAANABiADAAAAA0AAoAAQBDAG8AbQBwAGEAbgB5AE4AYQBtAGUAAAAAAE0AaQBjAHIAbwBzAG8A
ZgB0AAAAmAA4AAEARgBpAGwAZQBEAGUAcwBjAHIAaQBwAHQAaQBvAG4AAAAAAFMAYwByAGkAcAB0
AEMAbwBtAHAAbwBuAGUAbgB0AF8AMwAwADYAMAAyAGYAZAA2ADUAMgA1AGYANABhAGUAOQA5AGMA
YwBlADkAYgA0AGMAMwA4ADIAMQBmAGMAOAA4AC4AdgBiAHAAcgBvAGoAAAAwAAgAAQBGAGkAbABl
AFYAZQByAHMAaQBvAG4AAAAAADEALgAwAC4AMAAuADAAAACYADwAAQBJAG4AdABlAHIAbgBhAGwA
TgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AMwAwADYAMAAyAGYAZAA2
ADUAMgA1AGYANABhAGUAOQA5AGMAYwBlADkAYgA0AGMAMwA4ADIAMQBmAGMAOAA4AC4AdgBiAHAA
cgBvAGoALgBkAGwAbAAAAFwAGwABAEwAZQBnAGEAbABDAG8AcAB5AHIAaQBnAGgAdAAAAEMAbwBw
AHkAcgBpAGcAaAB0ACAAQAAgAE0AaQBjAHIAbwBzAG8AZgB0ACAAMgAwADEAMQAAAAAAoAA8AAEA
TwByAGkAZwBpAG4AYQBsAEYAaQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AEMAbwBtAHAAbwBu
AGUAbgB0AF8AMwAwADYAMAAyAGYAZAA2ADUAMgA1AGYANABhAGUAOQA5AGMAYwBlADkAYgA0AGMA
MwA4ADIAMQBmAGMAOAA4AC4AdgBiAHAAcgBvAGoALgBkAGwAbAAAAJAAOAABAFAAcgBvAGQAdQBj
AHQATgBhAG0AZQAAAAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwAzADAANgAwADIA
ZgBkADYANQAyADUAZgA0AGEAZQA5ADkAYwBjAGUAOQBiADQAYwAzADgAMgAxAGYAYwA4ADgALgB2
AGIAcAByAG8AagAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADEALgAwAC4A
MAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMQAuADAALgAw
AC4AMAAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACA
AAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAB3d3d3d3d3d3d3d3d3d3AERERERERERERERERERERwBP/////////////////0cAT/////
////////////9HAE//////////////////RwBP/////////////////0cAT/////////////////
9HAE//////////////////RwBP/////////////////0cAT/////////////////9HAE////////
//////////RwBP/////////////////0cAT/////////////////9HAE//////////////////Rw
BP/////////////////0cAT/////////////////9HAE//////////////////RwBP//////////
///////0cAT/////////////////9HAE//////////////////RwBIiIiIiIiIiIiIiIiIiEcARE
RERERERERERERERERHAETExMTExMTExMTs7OSXRwBMzMzMzMzMzMzMzMzMzEAABERERERERERERE
REREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////
////////////////wAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGA
AAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAADwAAAB///
/////////////ygAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA
AACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8A
AAAAAAAAAAAHd3d3d3d3d0RERERERERHT///////+EdP///////4R0////////hHT///////+EdP
///////4R0////////hHT///////+EdP///////4R0iIiIiIiIhHTMzMzMzMzEfEREREREREwAAA
AAAAAAAAAAAAAAAAAAD//wAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAEAAP//AAD//wAAAAABAAIAICAQAAEABADoAgAAAgAQEBAAAQAEACgBAAADAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABQAAAMAAAAwD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA]]></arrayElement></arrayElements></property>
<property id="13" name="UserComponentTypeName" dataType="System.String" state="default" isArray="false" description="" typeConverter="" UITypeEditor="" containsID="false" expressionType="None">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2008, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property>
<property id="594" name="VSTAProjectName" dataType="System.String" state="default" isArray="false" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE" UITypeEditor="" containsID="false" expressionType="None">ScriptComponent_30602fd6525f4ae99cce9b4c3821fc88</property>
<property id="595" name="ScriptLanguage" dataType="System.String" state="default" isArray="false" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" UITypeEditor="" containsID="false" expressionType="None">VisualBasic</property></properties>
<connections>
<connection id="37" name="Connection" description="" connectionManagerID="{c5148ac1-2ebf-4b5d-be60-fc5af93e2300}" /></connections>
<outputs>
<output id="4" name="Output" description="" exclusionGroup="0" synchronousInputId="0" deleteOutputOnPathDetached="false" hasSideEffects="true" dangling="false" isErrorOut="false" isSorted="false" errorOrTruncationOperation="" errorRowDisposition="NotUsed" truncationRowDisposition="NotUsed"><externalMetadataColumns isUsed="False" /></output>
</outputs>
</component>