FastTrack-ScheduleManagement.psm1
Add-Type -AssemblyName System.Web -ErrorAction SilentlyContinue Function Get-FastTrackMigrationSchedule { <# .SYNOPSIS Get FastTrack schedule list. .DESCRIPTION The Get-FastTrackMigrationSchedule cmdlet invokes the REST API to retrieve the FastTrack migration schedule for the input ScheduleUserId parameter. Retrieved scheduled migrations are input to an array of schedules adn returned to the caller. In order to use this cmdlet, you must first login using the Login-FastTrackAcount cmdlet. .PARAMETER ScheduleUserId Unique Guid for FastTrack schedule. .EXAMPLE Get-FastTrackMigrationSchedule -ScheduleUserId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" .INPUTS System.String .OUTPUTS System.Management.Automation.PSObject This cmdlet generates a System.Management.Automation.PSObject object that represents the list of FastTrack schedule details. .LINK New-FastTrackMigrationSchedule Set-FastTrackMigrationSchedule Remove-FastTrackMigrationSchedule New-FastTrackMigrationScheduleFromCsv Get-FastTrackMigrationDeleteTypes #> param ( [alias("ScheduleId")] [string] $ScheduleUserId ) Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.' } Function New-FastTrackMigrationSchedule { <# .SYNOPSIS Creates a new FastTrack schedule. .DESCRIPTION The New-FastTrackMigrationSchedule cmdlet invokes the REST API to create a new FastTrack migration schedule. The Wait-TransactionComplete cmdlet is invoked to return the "completed" or "failed" status of the migration transaction invoked. In order to use this cmdlet, you must first login using the Login-FastTrackAcount cmdlet. .PARAMETER MigrationType Type of migration. Mig-ExHybrid Exchange to Exchange hybrid migration Mig-ExSimpleMRS Exchange to Exchange hybrid migration Mig-ExCutover Cutover Migration Mig-ExStaged Staged Migration Mig-IMAP IMAP Migration Mig-GmailCutover Gmail Cutover Migration Mig-GmailStaged Gmail staged Migration Mig-GroupWise GroupWise Migration Mig-GoogleDrive Google drive to OneDrive migration Mig-GoogleSites GoogleSites Migration Mig-Box Box drive to OneDrive migration Mig-FileSharesToOneDrive FileShare to OneDrive migration Mig-FileSharesToTeamSites FileShare to TeamSite migration Mig-Domino-BAM Notes user documents into BAM (Binary Tree Application Manager) migration Mig-Domino-ODME Notes user documents into ODME migration MIG-SPOnPrem Sharepoint Migration .PARAMETER Source Source for different migration types. .PARAMETER Target Target for different migration types. .PARAMETER MigrationDate Date of migration. .PARAMETER MigrationWindow Migration event window. .PARAMETER MigrationGroup Migration group. .PARAMETER Size Size of source storage. .PARAMETER IsCutover Is cutover true | false | null. .PARAMETER Region Name of region. .EXAMPLE New-FastTrackMigrationSchedule -MigrationType "Mig-Box" -Source "joe@contoso.com" -Target "Jane@contoso.net" -MigrationDate "YYYY-DD-MMTHH:MIN:SS" -MigrationWindow "Window1" -MigrationGroup "Group1" -Size 2 -PropertyBag "FilesOwned" .INPUTS System.String .OUTPUTS System.Management.Automation.PSObject This cmdlet generates a System.Management.Automation.PSObject object that represents the Transaction ID . .LINK Get-FastTrackMigrationSchedule Remove-FastTrackMigrationSchedule Set-FastTrackMigrationSchedule New-FastTrackMigrationScheduleFromCsv Get-FastTrackMigrationDeleteTypes #> [cmdletbinding()] param( [ValidateSet("Mig-ExHybrid", "Mig-ExSimpleMRS", "Mig-ExCutover", "Mig-ExStaged", "Mig-IMAP", "Mig-GmailCutover", "Mig-GmailStaged", "Mig-GroupWise", "Mig-GoogleDrive", "Mig-GoogleSites", "Mig-Box", "Mig-FileSharesToOneDrive", "Mig-FileSharesToTeamSites", "Mig-Domino-BAM", "Mig-Domino-ODME", "MIG-SPOnPrem")] [string] $MigrationType, [string] $Source, [string] $Target, [string] $MigrationDate, [string] $MigrationWindow, [string] $MigrationGroup, [string] $Size = 0, [string] $Region ) Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.' } Function Set-FastTrackMigrationSchedule { <# .SYNOPSIS Updates an existing FastTrack schedule. .DESCRIPTION The Set-FastTracikMigrationSchedule cmdlet invokes REST API with input ScheduleId parameter. The ScheduleId is used by the API to define the migration schedules to be udpated. The Wait-TransactionComplete cmdlet is invoked to return the "completed" or "failed" status of the migration transaction invoked. In order to use this cmdlet, you must first login using the Login-FastTrackAcount cmdlet. .PARAMETER ScheduleUserId Unique GUID For FastTrack Schedule. .PARAMETER MigrationType Type of migration. Mig-ExHybrid Exchange to Exchange hybrid migration Mig-ExSimpleMRS Exchange to Exchange hybrid migration Mig-ExCutover Cutover Migration Mig-ExStaged Staged Migration Mig-IMAP IMAP Migration Mig-GmailCutover Gmail Cutover Migration Mig-GmailStaged Gmail staged Migration Mig-GroupWise GroupWise Migration Mig-GoogleDrive Google drive to OneDrive migration Mig-GoogleSites GoogleSites Migration Mig-Box Box drive to OneDrive migration Mig-FileSharesToOneDrive FileShare to OneDrive migration Mig-FileSharesToTeamSites FileShare to TeamSite migration Mig-Domino-BAM Notes user documents into BAM (Binary Tree Application Manager) migration Mig-Domino-ODME Notes user documents into ODME migration MIG-SPOnPrem Sharepoint Migration .PARAMETER Source Source for different migration types. .PARAMETER Target Target for different migration types. .PARAMETER MigrationDate Date of migration. .PARAMETER MigrationWindow Migration event window. .PARAMETER MigrationGroup Migration group. .PARAMETER Size Size of source storage .PARAMETER IsCutover Is cutover true | false | null. .PARAMETER Region Name of region. .PARAMETER PropertyBag Properties for different migration types. .EXAMPLE New-FastTrackMigrationSchedule -ScheduleUserId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -MigrationType "Mig-Box" -Source "joe@contoso.com" -Target "Jane@contoso.net" -MigrationDate "YYYY-DD-MMTHH:MIN:SS" -MigrationWindow "Window1" -MigrationGroup "Group1" -Size 2 -PropertyBag "FilesOwned" .INPUTS System.String .OUTPUTS System.Management.Automation.PSObject This cmdlet generates a System.Management.Automation.PSObject object that represents the Transaction ID . .LINK Get-FastTrackMigrationSchedule Remove-FastTrackMigrationSchedule New-FastTrackMigrationSchedule New-FastTrackMigrationScheduleFromCsv Get-FastTrackMigrationDeleteTypes #> [cmdletbinding()] param( [Alias("ScheduleId")] [string] $ScheduleUserId, [ValidateSet("Mig-ExHybrid", "Mig-ExSimpleMRS", "Mig-ExCutover", "Mig-ExStaged", "Mig-IMAP", "Mig-GmailCutover", "Mig-GmailStaged", "Mig-GroupWise", "Mig-GoogleDrive", "Mig-GoogleSites", "Mig-Box", "Mig-FileSharesToOneDrive", "Mig-FileSharesToTeamSites", "Mig-Domino-BAM", "Mig-Domino-ODME", "MIG-SPOnPrem")] [string] $MigrationType, [string] $Source, [string] $Target, [string] $MigrationDate, [string] $MigrationWindow, [string] $MigrationGroup, [string] $Size = 0, [string] $Region ) Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.' } Function Remove-FastTrackMigrationSchedule { <# .SYNOPSIS Remove an existing FastTrack schedule. .DESCRIPTION The Remove-FastTracikMigrationSchedule cmdlet invokes REST API with input ScheduleId parameter. The ScheduleId is used by the API to define the migration schedules to be deleted. The DeleteType paramter is used to define the type of delete operation to be performed on the migration. In order to use this cmdlet, you must first login using the Login-FastTrackAcount cmdlet. .PARAMETER ScheduleUserId Unique Guid for FastTrack schedule. .PARAMETER DeleteType Delete type to remove specified FastTrack schedule. This can be either ForceDelete or VerifyDelete. .EXAMPLE Remove-FastTrackMigrationSchedule -ScheduleUserId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -DeleteType: "ForceDelete" .INPUTS System.String .OUTPUTS System.Management.Automation.PSObject This cmdlet generates a System.Management.Automation.PSObject object that represents the Transaction ID . .LINK Get-FastTrackMigrationSchedule Set-FastTrackMigrationSchedule New-FastTrackMigrationSchedule New-FastTrackMigrationScheduleFromCsv Get-FastTrackMigrationDeleteTypes #> param( [Alias("ScheduleId")] [string] $ScheduleUserId, [ValidateSet("ForceDelete", "VerifyDelete")] [string] $DeleteType ) Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.' } Function New-FastTrackMigrationScheduleFromCsv { <# .SYNOPSIS Creates a new FastTrack schedule from CSV .DESCRIPTION The New-FastTrackMigrationScheduleFromCsv command allows you to upload a full migration schedule in bulk as a CSV file. If you want to upload a single schedule, please use the New-FastTrackMigrationSchedule command. In order to use this command, you must first login using the Login-FastTrackAcount command. .PARAMETER MigrationType This is the type of migration you're wanting to schedule. Mig-ExHybrid Exchange to Exchange hybrid migration Mig-ExSimpleMRS Exchange to Exchange hybrid migration Mig-ExCutover Cutover Migration Mig-ExStaged Staged Migration Mig-IMAP IMAP Migration Mig-GmailCutover Gmail Cutover Migration Mig-GmailStaged Gmail staged Migration Mig-GroupWise GroupWise Migration Mig-GoogleDrive Google drive to OneDrive migration Mig-GoogleSites GoogleSites Migration Mig-Box Box drive to OneDrive migration Mig-FileSharesToOneDrive FileShare to OneDrive migration Mig-FileSharesToTeamSites FileShare to TeamSite migration Mig-Domino-BAM Notes user documents into BAM (Binary Tree Application Manager) migration Mig-Domino-ODME Notes user documents into ODME migration MIG-SPOnPrem Sharepoint Migration .PARAMETER IsCutover Is cutover $true | $false | $null. .PARAMETER Region Name of region. .PARAMETER FilePath Specifies the path to the Schedule CSV file . .EXAMPLE New-FastTrackMigrationScheduleFromCsv -MigrationType "Mig-Box" -Region "US" -FilePath "C:\filename.csv" .INPUTS System.String .OUTPUTS System.Management.Automation.PSObject This cmdlet generates a System.Management.Automation.PSObject object that represents the Transaction ID . .LINK New-FastTrackMigrationSchedule Get-FastTrackMigrationSchedule Set-FastTrackMigrationSchedule Remove-FastTrackMigrationSchedule Get-FastTrackMigrationDeleteTypes #> param( [ValidateSet("Mig-ExHybrid", "Mig-ExSimpleMRS", "Mig-ExCutover", "Mig-ExStaged", "Mig-IMAP", "Mig-GmailCutover", "Mig-GmailStaged", "Mig-GroupWise", "Mig-GoogleDrive", "Mig-GoogleSites", "Mig-Box", "Mig-FileSharesToOneDrive", "Mig-FileSharesToTeamSites", "Mig-Domino-BAM", "Mig-Domino-ODME", "MIG-SPOnPrem")] [string] $MigrationType, [string] $Region, [ValidateSet($true, $false, $null)] [Nullable[boolean]] $IsCutover, [string] $FilePath ) Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.' } Function Get-FastTrackMigrationScheduleTemplate { <# .SYNOPSIS Get sample template of CSV file which upload in FastTrack schedule. .DESCRIPTION The Get-FastTrackMigrationScheduleTemplate cmdlet invokes the REST API to retrieve the correct CSV file template, based on the input FastTrack migration type. The retrieved template is saved to the directory declared by the Path parameter. In order to use this cmdlet, you must first login using the Login-FastTrackAcount cmdlet. .PARAMETER MigrationType This is the type of migration you're wanting to schedule. Mig-ExHybrid Exchange to Exchange hybrid migration Mig-ExSimpleMRS Exchange to Exchange hybrid migration Mig-ExCutover Cutover Migration Mig-ExStaged Staged Migration Mig-IMAP IMAP Migration Mig-GmailCutover Gmail Cutover Migration Mig-GmailStaged Gmail staged Migration Mig-GroupWise GroupWise Migration Mig-GoogleDrive Google drive to OneDrive migration Mig-GoogleSites GoogleSites Migration Mig-Box Box drive to OneDrive migration Mig-FileSharesToOneDrive FileShare to OneDrive migration Mig-FileSharesToTeamSites FileShare to TeamSite migration Mig-Domino-BAM Notes user documents into BAM (Binary Tree Application Manager) migration Mig-Domino-ODME Notes user documents into ODME migration MIG-SPOnPrem Sharepoint Migration .PARAMETER Path Output path of template file. .EXAMPLE Get-FastTrackMigrationScheduleTemplate -MigrationType "Mig-Box" -Folderpath 'C:/template' .INPUTS System.String .OUTPUTS System.IO This cmdlet generates a File object. .LINK New-FastTrackMigrationScheduleFromCsv #> [cmdletbinding()] param( [ValidateSet("Mig-ExHybrid", "Mig-ExSimpleMRS", "Mig-ExCutover", "Mig-ExStaged", "Mig-IMAP", "Mig-GmailCutover", "Mig-GmailStaged", "Mig-GroupWise", "Mig-GoogleDrive", "Mig-GoogleSites", "Mig-Box", "Mig-FileSharesToOneDrive", "Mig-FileSharesToTeamSites", "Mig-Domino-BAM", "Mig-Domino-ODME", "MIG-SPOnPrem")] [string] $MigrationType, [string] $FolderPath = $null ) Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.' } Function Get-FastTrackMigrationDeleteTypes { <# .SYNOPSIS Get FastTrack delete types. .DESCRIPTION The Get-FastTrackMigrationDeleteTypes cmdlet utilizes the REST API call to retrieve a list of available delete types used to schedule deletion of FastTrack schedule. In order to use this cmdlet, you must first login using the Login-FastTrackAcount cmdlet. .EXAMPLE Get-FastTrackMigrationDeleteTypes .INPUTS System.String .OUTPUTS System.Management.Automation.PSObject This cmdlet generates a System.Management.Automation.PSObject object that represents the list of possible delete types for FastTrack schedule delete. .LINK New-FastTrackMigrationSchedule Set-FastTrackMigrationSchedule Remove-FastTrackMigrationSchedule New-FastTrackMigrationScheduleFromCsv Get-FastTrackMigrationSchedule #> Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.' } Function Get-FastTrackMigrationTypes { <# .SYNOPSIS Get FastTrack Migration Types. .DESCRIPTION This cmdlet is used to get all the migration types to execute FastTrack schedules. In order to use this cmdlet, you must first login using the Login-FastTrackAcount cmdlet. .EXAMPLE FastTrackMigrationTypes .INPUTS System.String .OUTPUTS System.Management.Automation.PSObject This cmdlet generates a System.Management.Automation.PSObject object that represents the list of possible migration types for FastTrack schedule operation. .LINK New-FastTrackMigrationSchedule Set-FastTrackMigrationSchedule New-FastTrackMIgrationScheduleFromCsv #> try { if ($global:MsoAdminProperties.Count -eq 0) { Write-Warning "Unable to retrieve Office 365 credentials! :: Please call [Login-FastTrackAccount] function." return } $header = @{ } $header.Add("Authorization", $global:MsoAdminProperties["AuthorizationResult"].CreateAuthorizationHeader()) $header.Add("TENANT_ID", $global:MsoAdminProperties["MSO-CompanyTenantInfo"]) Write-Host "Sending Migration type Get Request..." $query += "environmentType=$global:MsoComOrGov" $JsonResult = Invoke-GetRequest -Uri ([System.String]::Format("{0}Schedule/MigrationTypes?$($query)", $global:CsiApiBaseUriFormat)) -Headers $header if ($null -ne $JsonResult.StatusCode) { Write-Warning "Request failed! : $($JsonResult.StatusCode) - Error Message: $($JsonResult)" } else { Write-Host "Get request completed" return $JsonResult.MigrationTypes } return $JsonResult } catch { Write-Warning -Message:"An error occurred attempting to authenticate with this module" Write-Warning -Message: $_.Exception.Message Write-Host "Press the [enter] key to close this process" Read-Host } } Function Clear-FastTrackMigrationSchedules { <# .SYNOPSIS Allow for the deletion of multiple schedules .DESCRIPTION This PowerShell is to allow a user to select and delete multiple schedules for a customer #> Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.' } Function Update-FastTrackMigrationSchedules { <# .SYNOPSIS Allow for the update of multiple schedules .DESCRIPTION This PowerShell function is to allow a user to select and update multiple schedules for a customer. Only Migration Window, Migration Group and Migration Date can be updated. .PARAMETER MigrationDate Date of migration. .PARAMETER MigrationWindow Migration event window. .PARAMETER MigrationGroup Migration group. #> param( [string] $MigrationDate, [string] $MigrationWindow, [string] $MigrationGroup ) Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.' } # SIG # Begin signature block # MIIjhgYJKoZIhvcNAQcCoIIjdzCCI3MCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDb+jk6rl0cs+88 # xVfEam1FSfBNmtcP1b3/mMKhOlc9vKCCDYEwggX/MIID56ADAgECAhMzAAABUZ6N # j0Bxow5BAAAAAAFRMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD # VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p # bmcgUENBIDIwMTEwHhcNMTkwNTAyMjEzNzQ2WhcNMjAwNTAyMjEzNzQ2WjB0MQsw # CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u # ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB # AQCVWsaGaUcdNB7xVcNmdfZiVBhYFGcn8KMqxgNIvOZWNH9JYQLuhHhmJ5RWISy1 # oey3zTuxqLbkHAdmbeU8NFMo49Pv71MgIS9IG/EtqwOH7upan+lIq6NOcw5fO6Os # +12R0Q28MzGn+3y7F2mKDnopVu0sEufy453gxz16M8bAw4+QXuv7+fR9WzRJ2CpU # 62wQKYiFQMfew6Vh5fuPoXloN3k6+Qlz7zgcT4YRmxzx7jMVpP/uvK6sZcBxQ3Wg # B/WkyXHgxaY19IAzLq2QiPiX2YryiR5EsYBq35BP7U15DlZtpSs2wIYTkkDBxhPJ # IDJgowZu5GyhHdqrst3OjkSRAgMBAAGjggF+MIIBejAfBgNVHSUEGDAWBgorBgEE # AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUV4Iarkq57esagu6FUBb270Zijc8w # UAYDVR0RBEkwR6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1 # ZXJ0byBSaWNvMRYwFAYDVQQFEw0yMzAwMTIrNDU0MTM1MB8GA1UdIwQYMBaAFEhu # ZOVQBdOCqhc3NyK1bajKdQKVMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly93d3cu # bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY0NvZFNpZ1BDQTIwMTFfMjAxMS0w # Ny0wOC5jcmwwYQYIKwYBBQUHAQEEVTBTMFEGCCsGAQUFBzAChkVodHRwOi8vd3d3 # Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY0NvZFNpZ1BDQTIwMTFfMjAx # MS0wNy0wOC5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEAWg+A # rS4Anq7KrogslIQnoMHSXUPr/RqOIhJX+32ObuY3MFvdlRElbSsSJxrRy/OCCZdS # se+f2AqQ+F/2aYwBDmUQbeMB8n0pYLZnOPifqe78RBH2fVZsvXxyfizbHubWWoUf # NW/FJlZlLXwJmF3BoL8E2p09K3hagwz/otcKtQ1+Q4+DaOYXWleqJrJUsnHs9UiL # crVF0leL/Q1V5bshob2OTlZq0qzSdrMDLWdhyrUOxnZ+ojZ7UdTY4VnCuogbZ9Zs # 9syJbg7ZUS9SVgYkowRsWv5jV4lbqTD+tG4FzhOwcRQwdb6A8zp2Nnd+s7VdCuYF # sGgI41ucD8oxVfcAMjF9YX5N2s4mltkqnUe3/htVrnxKKDAwSYliaux2L7gKw+bD # 1kEZ/5ozLRnJ3jjDkomTrPctokY/KaZ1qub0NUnmOKH+3xUK/plWJK8BOQYuU7gK # YH7Yy9WSKNlP7pKj6i417+3Na/frInjnBkKRCJ/eYTvBH+s5guezpfQWtU4bNo/j # 8Qw2vpTQ9w7flhH78Rmwd319+YTmhv7TcxDbWlyteaj4RK2wk3pY1oSz2JPE5PNu # Nmd9Gmf6oePZgy7Ii9JLLq8SnULV7b+IP0UXRY9q+GdRjM2AEX6msZvvPCIoG0aY # HQu9wZsKEK2jqvWi8/xdeeeSI9FN6K1w4oVQM4Mwggd6MIIFYqADAgECAgphDpDS # AAAAAAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMK # V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0 # IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0 # ZSBBdXRob3JpdHkgMjAxMTAeFw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDla # MH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS # ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMT # H01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEB # AQUAA4ICDwAwggIKAoICAQCr8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgG # OBoESbp/wwwe3TdrxhLYC/A4wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S # 35tTsgosw6/ZqSuuegmv15ZZymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jz # y23zOlyhFvRGuuA4ZKxuZDV4pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/7 # 4ytaEB9NViiienLgEjq3SV7Y7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2u # M1jFtz7+MtOzAz2xsq+SOH7SnYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33 # X/DQUr+MlIe8wCF0JV8YKLbMJyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIl # XdMhSz5SxLVXPyQD8NF6Wy/VI+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP # 6SNJvBi4RHxF5MHDcnrgcuck379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLB # l4F77dbtS+dJKacTKKanfWeA5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGF # RInECUzF1KVDL3SV9274eCBYLBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiM # CwIDAQABo4IB7TCCAekwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQ # BdOCqhc3NyK1bajKdQKVMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1Ud # DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO # 4eqnxzHRI4k0MFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0 # LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y # Mi5jcmwwXgYIKwYBBQUHAQEEUjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1p # Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y # Mi5jcnQwgZ8GA1UdIASBlzCBlDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIB # FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNw # cy5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkA # XwBzAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY # 4FR5Gi7T2HRnIpsLlhHhY5KZQpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj # 82nbY78iNaWXXWWEkH2LRlBV2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUd # d5Q54ulkyUQ9eHoj8xN9ppB0g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJ # Yx8JaW5amJbkg/TAj/NGK978O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYf # wzIY4vDFLc5bnrRJOQrGCsLGra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJ # aG5vp7d0w0AFBqYBKig+gj8TTWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1j # NpeG39rz+PIWoZon4c2ll9DuXWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9B # xw4o7t5lL+yX9qFcltgA1qFGvVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96 # eiL6SJUfq/tHI4D1nvi/a7dLl+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7 # r/ww7QRMjt/fdW1jkT3RnVZOT7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5I # RcBCyZt2WwqASGv9eZ/BvW1taslScxMNelDNMYIVWzCCFVcCAQEwgZUwfjELMAkG # A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx # HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z # b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAVGejY9AcaMOQQAAAAABUTAN # BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor # BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQg9X//T7vW # Cgqh5SgAVwa4WYs+ghC1gomIltsDWJU/H2kwQgYKKwYBBAGCNwIBDDE0MDKgFIAS # AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN # BgkqhkiG9w0BAQEFAASCAQCTyp8IEwrCQUEHBl4pZCue+9hfETra8VaNRS3tZTuJ # BTZTB+NOYmd2g48s9Exo0xPQEwaYDJ35u6ac2bnyOHerLz/YQbfDrYtFFUKGhJ6r # 3/Af5XUU9Asajq0IbZy+gWbQb7auvZl7qtoJmERd5gfnscoB3Ot1hGrnOqZIIbIV # yoD5fNHhrTAldb37M02Jv/p+Ul2diKarUycfNKJPSlOQMkKx3Ksnticahg/edzUc # nMUVnV6yl0B6VN0+zUsZR44bPuB1xTr7ydTAsvJlrh1Xx9MrXgk7CYJozciM+l3R # fN6UKGkmOBiqREf5JZdR4DQT2MrZ5Dbjzxi5Drl8LZ1roYIS5TCCEuEGCisGAQQB # gjcDAwExghLRMIISzQYJKoZIhvcNAQcCoIISvjCCEroCAQMxDzANBglghkgBZQME # AgEFADCCAVEGCyqGSIb3DQEJEAEEoIIBQASCATwwggE4AgEBBgorBgEEAYRZCgMB # MDEwDQYJYIZIAWUDBAIBBQAEIMM9PDzWdIT7n2gbtaauTul7RvZPBZ6cAcilM3Rk # jIiEAgZd/CrHPVEYEzIwMjAwMTIwMTIzODU2LjM1OVowBIACAfSggdCkgc0wgcox # CzAJBgNVBAYTAlVTMQswCQYDVQQIEwJXQTEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG # A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQg # SXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJjAkBgNVBAsTHVRoYWxlcyBUU1Mg # RVNOOkE4NDEtNEJCNC1DQTkzMSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFt # cCBTZXJ2aWNloIIOPDCCBPEwggPZoAMCAQICEzMAAAEOJpHynZLbgSkAAAAAAQ4w # DQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0 # b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh # dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcN # MTkxMDIzMjMxOTE4WhcNMjEwMTIxMjMxOTE4WjCByjELMAkGA1UEBhMCVVMxCzAJ # BgNVBAgTAldBMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg # Q29ycG9yYXRpb24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlv # bnMgTGltaXRlZDEmMCQGA1UECxMdVGhhbGVzIFRTUyBFU046QTg0MS00QkI0LUNB # OTMxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2UwggEiMA0G # CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVAZeiJz2rNUm5FnQV7KLoay7FXA8r # WMadGWHVkKp5H8oV6/716Ra9o4cQxvVKouIbywDZM5OoMx1cK3UjGCJwJJ645s8N # dUX3jQPwUzk6jDQYrQUYhHzsdJ2ZOjWXJ2AqR7YKzfXqXAcXniLSe1lfvLFPctK2 # 5h7RYHTNldEglHnEYyyUSC2KELbHyJ/x4RUlGL0Z41GCBzLxmmnQXRD8VQz9mx39 # O51Mz6QBVpIBlBhcHldUqWgslL1z25uqfYXKLpR3S2pclEj/EwrWhG/OSCZBhpg0 # dbq++nzYbdhXUctNZwMI7UrKxRtcA55DNMB/ETColAHWaBei/yuEO4TjAgMBAAGj # ggEbMIIBFzAdBgNVHQ4EFgQUQeSkq9TmIF5Sa0eX1Ip3K/9T39kwHwYDVR0jBBgw # FoAU1WM6XIoxkPNDe3xGG8UzaFqFbVUwVgYDVR0fBE8wTTBLoEmgR4ZFaHR0cDov # L2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljVGltU3RhUENB # XzIwMTAtMDctMDEuY3JsMFoGCCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+aHR0 # cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNUaW1TdGFQQ0FfMjAx # MC0wNy0wMS5jcnQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDCDAN # BgkqhkiG9w0BAQsFAAOCAQEABkb5SfYYqCqg0oIbDwzIe0nM84CqpbfjqLodi7Bd # VtfMCCuAefUzJ9PmS2xZHq8MuNOl5y+pHDJN7ZibsyEThoeD0HopVG3PXVn9QXmj # lbDYRxMr3e7KGeqRtJdTrDMcnx/fNy7mHj27MmmuhcHBTOyPjU+D+RnTybqgQrMi # T0pY1LVM+PxxjCaOxSLc6eCZGNvAcRqGQJaqpGa8uCEIpGhdpbpIv1UWtIVrjOsz # AmLVoINL/YjYYE7a/ZtmFseNgyZzvWwzNYSd4XvXtMrYc/VOyUBeigfVKW1X734L # 51a6VViSIpuhD7x8LBlLjB687bvoH5QhPw4Rnb2Z90EESTCCBnEwggRZoAMCAQIC # CmEJgSoAAAAAAAIwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYD # VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRp # ZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTEwMDcwMTIxMzY1NVoXDTI1MDcwMTIx # NDY1NVowfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV # BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQG # A1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwggEiMA0GCSqGSIb3 # DQEBAQUAA4IBDwAwggEKAoIBAQCpHQ28dxGKOiDs/BOX9fp/aZRrdFQQ1aUKAIKF # ++18aEssX8XD5WHCdrc+Zitb8BVTJwQxH0EbGpUdzgkTjnxhMFmxMEQP8WCIhFRD # DNdNuDgIs0Ldk6zWczBXJoKjRQ3Q6vVHgc2/JGAyWGBG8lhHhjKEHnRhZ5FfgVSx # z5NMksHEpl3RYRNuKMYa+YaAu99h/EbBJx0kZxJyGiGKr0tkiVBisV39dx898Fd1 # rL2KQk1AUdEPnAY+Z3/1ZsADlkR+79BL/W7lmsqxqPJ6Kgox8NpOBpG2iAg16Hgc # sOmZzTznL0S6p/TcZL2kAcEgCZN4zfy8wMlEXV4WnAEFTyJNAgMBAAGjggHmMIIB # 4jAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQU1WM6XIoxkPNDe3xGG8UzaFqF # bVUwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud # EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYD # VR0fBE8wTTBLoEmgR4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwv # cHJvZHVjdHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEB # BE4wTDBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9j # ZXJ0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwgaAGA1UdIAEB/wSBlTCB # kjCBjwYJKwYBBAGCNy4DMIGBMD0GCCsGAQUFBwIBFjFodHRwOi8vd3d3Lm1pY3Jv # c29mdC5jb20vUEtJL2RvY3MvQ1BTL2RlZmF1bHQuaHRtMEAGCCsGAQUFBwICMDQe # MiAdAEwAZQBnAGEAbABfAFAAbwBsAGkAYwB5AF8AUwB0AGEAdABlAG0AZQBuAHQA # LiAdMA0GCSqGSIb3DQEBCwUAA4ICAQAH5ohRDeLG4Jg/gXEDPZ2joSFvs+umzPUx # vs8F4qn++ldtGTCzwsVmyWrf9efweL3HqJ4l4/m87WtUVwgrUYJEEvu5U4zM9GAS # inbMQEBBm9xcF/9c+V4XNZgkVkt070IQyK+/f8Z/8jd9Wj8c8pl5SpFSAK84Dxf1 # L3mBZdmptWvkx872ynoAb0swRCQiPM/tA6WWj1kpvLb9BOFwnzJKJ/1Vry/+tuWO # M7tiX5rbV0Dp8c6ZZpCM/2pif93FSguRJuI57BlKcWOdeyFtw5yjojz6f32WapB4 # pm3S4Zz5Hfw42JT0xqUKloakvZ4argRCg7i1gJsiOCC1JeVk7Pf0v35jWSUPei45 # V3aicaoGig+JFrphpxHLmtgOR5qAxdDNp9DvfYPw4TtxCd9ddJgiCGHasFAeb73x # 4QDf5zEHpJM692VHeOj4qEir995yfmFrb3epgcunCaw5u+zGy9iCtHLNHfS4hQEe # gPsbiSpUObJb2sgNVZl6h3M7COaYLeqN4DMuEin1wC9UJyH3yKxO2ii4sanblrKn # QqLJzxlBTeCG+SqaoxFmMNO7dDJL32N79ZmKLxvHIa9Zta7cRDyXUHHXodLFVeNp # 3lfB0d4wwP3M5k37Db9dT+mdHhk4L7zPWAUu7w2gUDXa7wknHNWzfjUeCLraNtvT # X4/edIhJEqGCAs4wggI3AgEBMIH4oYHQpIHNMIHKMQswCQYDVQQGEwJVUzELMAkG # A1UECBMCV0ExEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD # b3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9u # cyBMaW1pdGVkMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpBODQxLTRCQjQtQ0E5 # MzElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcG # BSsOAwIaAxUAkmNDHJXWmEV6IeyFeEIwunwyChWggYMwgYCkfjB8MQswCQYDVQQG # EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG # A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQg # VGltZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIFAOHPh2MwIhgPMjAy # MDAxMjAwOTU2NTFaGA8yMDIwMDEyMTA5NTY1MVowdzA9BgorBgEEAYRZCgQBMS8w # LTAKAgUA4c+HYwIBADAKAgEAAgIPIwIB/zAHAgEAAgIRqDAKAgUA4dDY4wIBADA2 # BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAIDB6EgoQowCAIB # AAIDAYagMA0GCSqGSIb3DQEBBQUAA4GBAC8Iw+K7ct1iIS2xAvg5MhgCMZB/0z4A # qSMw26QemfKTzWHpa9y/+8tLPdFXT6CaDzG2tYOjHtXrYMNmBOdLguFrA0FFXzvO # 9Yo8GvVdvANnULc2f2kB5txtITTCMGp8XGzdB0vAXTfod7/gH3cdE29muppu3XP3 # JBcV6zQvOLFTMYIDDTCCAwkCAQEwgZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgT # Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m # dCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENB # IDIwMTACEzMAAAEOJpHynZLbgSkAAAAAAQ4wDQYJYIZIAWUDBAIBBQCgggFKMBoG # CSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQxIgQgj0S1ApOw # jjNXzznr1D7ahNBNf9MwErzcx5L+IxhD13wwgfoGCyqGSIb3DQEJEAIvMYHqMIHn # MIHkMIG9BCBov/ePn2+tW9RhI4KYLWIbl3PTY0wpFNVTqYIUWkveMDCBmDCBgKR+ # MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS # ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMT # HU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAABDiaR8p2S24EpAAAA # AAEOMCIEIKB7/TtyVy/JI4ImbdD94/C09CJQgj8JJMn0hq0SAG8sMA0GCSqGSIb3 # DQEBCwUABIIBADyYk2jNdxK106D9uft1O7WKKiro1DGI9BnSbAB1pBohp7VJITlE # MEyYRc7lnSm6Ee/Zu5tiAe7K7c84vY73OqLAKW7xW6VWVfKGrROaB+7xEeCY26bM # V0FDAGHoeAd4Qc8L3t5zR6LJ74fxt12TRCxtitc9d7a1pxnFZFym57Aa9aHzxMi7 # cYFLHV9hlf5GD164GzxaNuni+q3dY/WI2aolJszJQpYdGV5q2cS8mDxwT0vbKx0b # gjVgI+kriMRqiW797SpFC/lY0ajwTo6qF6w02S3bJkysDm4Q0Q1OWaSA8qWSHxod # J90AagUyfWIPGzfj7/PazEUWELFCK1SJN3A= # SIG # End signature block |