Samples/Wipe_Appliance.ps1
############################################################################## # Wipe_Appliance.ps1 # - Remove ALL resource from an appliance (useful to clean a system between demos). # # VERSION 3.00 # # (C) Copyright 2013-2018 Hewlett Packard Enterprise Development LP ############################################################################## # The information contained herein is subject to change without notice. # The only warranties for HP products and services are set forth in the # express warranty statements accompanying such products and services. # Nothing herein should be construed as constituting an additional warranty. # HP shall not be liable for technical or editorial errors or omissions # contained herein. # ############################################################################## [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High')] param ( [Parameter (Mandatory)] [ValidateNotNullorEmpty()] [String]$Hostname, [Parameter (Mandatory)] [ValidateNotNullorEmpty()] [String]$Username, [Parameter (Mandatory)] [ValidateNotNullorEmpty()] [Object]$Password ) if ($PSCmdlet.ShouldProcess($Hostname,("remove all resources on appliance"))) { if (! (Get-Module -Name 'HPOneView.410')) { Import-Module HPOneView.410 } # First connect to the CI Management Appliance (if not already connected) if (! $ConnectedSessions) { Try { $Params = @{ Hostname = $Hostname; Username = $Username; Password = $Password } Connect-HPOVMgmt @Params } Catch { PSCmdlet.ThrowTerminatingError($_) } } Try { ############################################################ # REMOVE CONFIGURATION (for cleanup after/between demos) # ############################################################ # Delete ALL Server Profiles $tasks = Get-HPOVServerProfile | Remove-HPOVServerProfile -Force -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Server Profile tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL Server Profile Templates $tasks = Get-HPOVServerProfileTemplate | Remove-HPOVServerProfileTemplate -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Server Profile Template tasks failed to complete successfully.' -ErrorAction Stop } # Remove ALL iPDUs $tasks = Get-HPOVPowerDevice | Remove-HPOVPowerDevice -Force -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Power Device tasks failed to complete successfully.' -ErrorAction Stop } # Remove ALL Enclosures $tasks = Get-HPOVEnclosure | Remove-HPOVEnclosure -Force -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Enclosure tasks failed to complete successfully.' -ErrorAction Stop } # Remove ALL Rack Servers $tasks = Get-HPOVServer | Remove-HPOVServer -Force -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Server Hardware Resources tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL Enclosure Groups: $tasks = Get-HPOVEnclosureGroup | Remove-HPOVEnclosureGroup -Force -Confirm:$false if ($tasks | ? Message -ne 'Resource deleted successfully.') { $Tasks | ? Message -ne 'Resource deleted successfully.' | Format-List Write-Error '1 or more Remove Enclosure Group requests failed to complete successfully.' -ErrorAction Stop } # Delete ALL Logical Interconnect Groups $tasks = Get-HPOVLogicalInterconnectGroup | Remove-HPOVLogicalInterconnectGroup -Force -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Logical Interconnect Group tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL Network-Sets $tasks = Get-HPOVNetworkSet | Remove-HPOVNetworkSet -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Network Set tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL Networks $tasks = Get-HPOVNetwork | Remove-HPOVNetwork -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Network tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL Storage Volumes $tasks = Get-HPOVStorageVolume | Remove-HPOVStorageVolume -Force -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Storage Volume tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL Storage Pools $tasks = Get-HPOVStoragePool | Remove-HPOVStoragePool -Force -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Storage Pool tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL Storage Systems $tasks = Get-HPOVStorageSYstem | Remove-HPOVStorageSystem -Force -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Storage System tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL SAN Managers $tasks = Get-HPOVSanManager | Remove-HPOVSanManager -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove SAN Manager tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL Unmanaged Devices $tasks = Get-HPOVUnmanagedDevice | Remove-HPOVUnmanagedDevice -Force -Confirm:$false if ($tasks | ? Message -ne 'Resource deleted successfully.') { $Tasks | ? Message -ne 'Resource deleted successfully.' | Format-List Write-Error '1 or more Remove Unmanaged Device requests failed to complete successfully.' -ErrorAction Stop } } Catch { $PSCmdlet.ThrowTerminatingError($_) } } elseif ($PSBoundParameters['Whatif']) { "[{0}] -WhatIf provided." -f $MyInvocation.InvocationName.ToString().ToUpper() | Write-Verbose } else { "[{0}] User cancelled." -f $MyInvocation.InvocationName.ToString().ToUpper() | Write-Verbose } # SIG # Begin signature block # MIInQAYJKoZIhvcNAQcCoIInMTCCJy0CAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCGYCDc/R1kq0cb # a9N/QL+1j2jC0R69+Ga15VLteeqCAaCCFhowggVMMIIDNKADAgECAhMzAAAANdjV # WVsGcUErAAAAAAA1MA0GCSqGSIb3DQEBBQUAMH8xCzAJBgNVBAYTAlVTMRMwEQYD # VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAMTIE1pY3Jvc29mdCBDb2RlIFZlcmlm # aWNhdGlvbiBSb290MB4XDTEzMDgxNTIwMjYzMFoXDTIzMDgxNTIwMzYzMFowbzEL # MAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU # cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0 # ZXJuYWwgQ0EgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3 # GjPm8gAELTngTlvtH7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrW # lymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6s # YapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpP # hNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSo # RcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNC # bxWyuHv77+ldU9U0WicCAwEAAaOB0DCBzTATBgNVHSUEDDAKBggrBgEFBQcDAzAS # BgNVHRMBAf8ECDAGAQH/AgECMB0GA1UdDgQWBBStvZh6NLQm9/rEJlTvA73gJMtU # GjALBgNVHQ8EBAMCAYYwHwYDVR0jBBgwFoAUYvsKIVt/Q24R2glUUGv10pZx8Z4w # VQYDVR0fBE4wTDBKoEigRoZEaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9j # cmwvcHJvZHVjdHMvTWljcm9zb2Z0Q29kZVZlcmlmUm9vdC5jcmwwDQYJKoZIhvcN # AQEFBQADggIBADYrovLhMx/kk/fyaYXGZA7Jm2Mv5HA3mP2U7HvP+KFCRvntak6N # NGk2BVV6HrutjJlClgbpJagmhL7BvxapfKpbBLf90cD0Ar4o7fV3x5v+OvbowXvT # gqv6FE7PK8/l1bVIQLGjj4OLrSslU6umNM7yQ/dPLOndHk5atrroOxCZJAC8UP14 # 9uUjqImUk/e3QTA3Sle35kTZyd+ZBapE/HSvgmTMB8sBtgnDLuPoMqe0n0F4x6GE # NlRi8uwVCsjq0IT48eBr9FYSX5Xg/N23dpP+KUol6QQA8bQRDsmEntsXffUepY42 # KRk6bWxGS9ercCQojQWj2dUk8vig0TyCOdSogg5pOoEJ/Abwx1kzhDaTBkGRIywi # pacBK1C0KK7bRrBZG4azm4foSU45C20U30wDMB4fX3Su9VtZA1PsmBbg0GI1dRtI # uH0T5XpIuHdSpAeYJTsGm3pOam9Ehk8UTyd5Jz1Qc0FMnEE+3SkMc7HH+x92DBdl # BOvSUBCSQUns5AZ9NhVEb4m/aX35TUDBOpi2oH4x0rWuyvtT1T9Qhs1ekzttXXya # Pz/3qSVYhN0RSQCix8ieN913jm1xi+BbgTRdVLrM9ZNHiG3n71viKOSAG0DkDyrR # fyMVZVqsmZRDP0ZVJtbE+oiV4pGaoy0Lhd6sjOD5Z3CfcXkCMfdhoinEMIIFajCC # BFKgAwIBAgIRAMrweR1t1bu9z9KSImtE18gwDQYJKoZIhvcNAQELBQAwfTELMAkG # A1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMH # U2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxIzAhBgNVBAMTGkNP # TU9ETyBSU0EgQ29kZSBTaWduaW5nIENBMB4XDTE3MTEwOTAwMDAwMFoXDTE4MTEw # OTIzNTk1OVowgdIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQRDAU5NDMwNDELMAkGA1UE # CAwCQ0ExEjAQBgNVBAcMCVBhbG8gQWx0bzEcMBoGA1UECQwTMzAwMCBIYW5vdmVy # IFN0cmVldDErMCkGA1UECgwiSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgQ29t # cGFueTEaMBgGA1UECwwRSFAgQ3liZXIgU2VjdXJpdHkxKzApBgNVBAMMIkhld2xl # dHQgUGFja2FyZCBFbnRlcnByaXNlIENvbXBhbnkwggEiMA0GCSqGSIb3DQEBAQUA # A4IBDwAwggEKAoIBAQCfY9MkbYyF0XdnYSEOHfuTNDmCvkzhhNsjbeI9I9/mkvQs # 2MoyUPKPVNdXom5/FAmY34gOZ1/NEz2Fzbmx1TYfdNyj30iIrXMK5xhSdR3BmAvu # plWQnlaetJXsjvBJe/DwWYzWolyedV33bFV3owX9GqfkW6b1R4xpnOESfNBh5K7J # iXKDaK8As++Cx0+f4K77FsTWHflUeao519uIsFbFRxURQjxql0ydx8GpCCzEF6pa # KQVx/WG7g/368P5GmqxVeH86kN4i1qGudQ+dMLwxdhm3fHNpXBnEOsdGfuWtC2ls # pBY6LuTNP6fcXBRctJTCH5rA6F+QzhmfmXndMBKzAgMBAAGjggGNMIIBiTAfBgNV # HSMEGDAWgBQpkWD/ik366/mmarjP+eZLvUnOEjAdBgNVHQ4EFgQUTkSybbkdnXe7 # pkRTy3t6SaDOyKswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwEwYDVR0l # BAwwCgYIKwYBBQUHAwMwEQYJYIZIAYb4QgEBBAQDAgQQMEYGA1UdIAQ/MD0wOwYM # KwYBBAGyMQECAQMCMCswKQYIKwYBBQUHAgEWHWh0dHBzOi8vc2VjdXJlLmNvbW9k # by5uZXQvQ1BTMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2Eu # Y29tL0NPTU9ET1JTQUNvZGVTaWduaW5nQ0EuY3JsMHQGCCsGAQUFBwEBBGgwZjA+ # BggrBgEFBQcwAoYyaHR0cDovL2NydC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQ29k # ZVNpZ25pbmdDQS5jcnQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9kb2Nh # LmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAByfbvBvqLus0/hnJSNhw5PagGRRWNDwf # sd09noRqnkpgwbtMoP8tHOCuAbEMqrhSczgkhhk6g3yq4GSno2wnJ4qbPG4SP9zt # HHluPmHLdEQhRQIJ9bphZiItQzbGIHFbM0W4w/U7OT2CPBZbiZ7EXTknGnkOZmJm # uwk9MUfzgVPRRFlw0gfV10QW2dRGHCQkxtyBe9yArO3Ha6o/qEKV7GAo5dut/Su4 # NRUaUEFTkz3dcOLJN5oVjiGrhGmzgKIiEos4qxpp4Aqba8RNodgLNi3MGeVwCypm # bzObZPJGrgAxuP1r4KNBQfG9jj/IQb6XMWm0pIy4Pd8AmFwRsl+jlTCCBXQwggRc # oAMCAQICECdm7lbrSfOOq9dwovyE3iIwDQYJKoZIhvcNAQEMBQAwbzELMAkGA1UE # BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBF # eHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwg # Q0EgUm9vdDAeFw0wMDA1MzAxMDQ4MzhaFw0yMDA1MzAxMDQ4MzhaMIGFMQswCQYD # VQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdT # YWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09N # T0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEB # BQADggIPADCCAgoCggIBAJHoVJLSClaxrA0k3cXPRGd0mSs3o30jcABxvFPfxPoq # Eo9LfxBWvZ9wcrdhf8lLDxenPeOwBGHu/xGXx/SGPgr6Plz5k+Y0etkUa+ecs4Wg # gnp2r3GQ1+z9DfqcbPrfsIL0FH75vsSmL09/mX+1/GdDcr0MANaJ62ss0+2PmBwU # q37l42782KjkkiTaQ2tiuFX96sG8bLaL8w6NmuSbbGmZ+HhIMEXVreENPEVg/DKW # USe8Z8PKLrZr6kbHxyCgsR9l3kgIuqROqfKDRjeE6+jMgUhDZ05yKptcvUwbKIpc # Inu0q5jZ7uBRg8MJRk5tPpn6lRfafDNXQTyNUe0LtlyvLGMa31fIP7zpXcSbr0WZ # 4qNaJLS6qVY9z2+q/0lYvvCo//S4rek3+7q49As6+ehDQh6J2ITLE/HZu+GJYLiM # KFasFB2cCudx688O3T2plqFIvTz3r7UNIkzAEYHsVjv206LiW7eyBCJSlYCTaeiO # TGXxkQMtcHQC6otnFSlpUgK7199QalVGv6CjKGF/cNDDoqosIapHziicBkV2v4IY # J7TVrrTLUOZr9EyGcTDppt8WhuDY/0Dd+9BCiH+jMzouXB5BEYFjzhhxayvspoq3 # MVw6akfgw3lZ1iAar/JqmKpyvFdK0kuduxD8sExB5e0dPV4onZzMv7NR2qdH5YRT # AgMBAAGjgfQwgfEwHwYDVR0jBBgwFoAUrb2YejS0Jvf6xCZU7wO94CTLVBowHQYD # VR0OBBYEFLuvfgI9+qbxPISOre44mOzZMjLUMA4GA1UdDwEB/wQEAwIBhjAPBgNV # HRMBAf8EBTADAQH/MBEGA1UdIAQKMAgwBgYEVR0gADBEBgNVHR8EPTA7MDmgN6A1 # hjNodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vQWRkVHJ1c3RFeHRlcm5hbENBUm9v # dC5jcmwwNQYIKwYBBQUHAQEEKTAnMCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51 # c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUAA4IBAQBkv4PxX5qF0M24oSlXDeha # 99HpPvJ2BG7xUnC7Hjz/TQ10asyBgiXTw6AqXUz1uouhbcRUCXXH4ycOXYR5N0AT # d/W0rBzQO6sXEtbvNBh+K+l506tXRQyvKPrQ2+VQlYi734VXaX2S2FLKc4G/HPPm # uG5mEQWzHpQtf5GVklnxTM6jkXFMfEcMOwsZ9qGxbIY+XKrELoLL+QeWukhNkPKU # yKlzousGeyOd3qLzTVWfemFFmBhox15AayP1eXrvjLVri7dvRvR78T1LBNiTgFla # 4EEkHbKPFWBYR9vvbkb9FfXZX5qz29i45ECzzZc5roW7HY683Ieb0abv8TtvEDhv # MIIF4DCCA8igAwIBAgIQLnyHzA6TSlL+lP0ct800rzANBgkqhkiG9w0BAQwFADCB # hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G # A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV # BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTMwNTA5 # MDAwMDAwWhcNMjgwNTA4MjM1OTU5WjB9MQswCQYDVQQGEwJHQjEbMBkGA1UECBMS # R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD # T01PRE8gQ0EgTGltaXRlZDEjMCEGA1UEAxMaQ09NT0RPIFJTQSBDb2RlIFNpZ25p # bmcgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmmJBjd5E0f4rR # 3elnMRHrzB79MR2zuWJXP5O8W+OfHiQyESdrvFGRp8+eniWzX4GoGA8dHiAwDvth # e4YJs+P9omidHCydv3Lj5HWg5TUjjsmK7hoMZMfYQqF7tVIDSzqwjiNLS2PgIpQ3 # e9V5kAoUGFEs5v7BEvAcP2FhCoyi3PbDMKrNKBh1SMF5WgjNu4xVjPfUdpA6M0ZQ # c5hc9IVKaw+A3V7Wvf2pL8Al9fl4141fEMJEVTyQPDFGy3CuB6kK46/BAW+QGiPi # XzjbxghdR7ODQfAuADcUuRKqeZJSzYcPe9hiKaR+ML0btYxytEjy4+gh+V5MYnmL # Agaff9ULAgMBAAGjggFRMIIBTTAfBgNVHSMEGDAWgBS7r34CPfqm8TyEjq3uOJjs # 2TIy1DAdBgNVHQ4EFgQUKZFg/4pN+uv5pmq4z/nmS71JzhIwDgYDVR0PAQH/BAQD # AgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwEwYDVR0lBAwwCgYIKwYBBQUHAwMwEQYD # VR0gBAowCDAGBgRVHSAAMEwGA1UdHwRFMEMwQaA/oD2GO2h0dHA6Ly9jcmwuY29t # b2RvY2EuY29tL0NPTU9ET1JTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHEG # CCsGAQUFBwEBBGUwYzA7BggrBgEFBQcwAoYvaHR0cDovL2NydC5jb21vZG9jYS5j # b20vQ09NT0RPUlNBQWRkVHJ1c3RDQS5jcnQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9v # Y3NwLmNvbW9kb2NhLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAAj8COcPu+Mo7id4M # bU2x8U6ST6/COCwEzMVjEasJY6+rotcCP8xvGcM91hoIlP8l2KmIpysQGuCbsQci # GlEcOtTh6Qm/5iR0rx57FjFuI+9UUS1SAuJ1CAVM8bdR4VEAxof2bO4QRHZXavHf # WGshqknUfDdOvf+2dVRAGDZXZxHNTwLk/vPa/HUX2+y392UJI0kfQ1eD6n4gd2HI # TfK7ZU2o94VFB696aSdlkClAi997OlE5jKgfcHmtbUIgos8MbAOMTM1zB5TnWo46 # BLqioXwfy2M6FafUFRunUkcyqfS/ZEfRqh9TTjIwc8Jvt3iCnVz/RrtrIh2IC/gb # qjSm/Iz13X9ljIwxVzHQNuxHoc/Li6jvHBhYxQZ3ykubUa9MCEp6j+KjUuKOjswm # 5LLY5TjCqO3GgZw1a6lYYUoKl7RLQrZVnb6Z53BtWfhtKgx/GWBfDJqIbDCsUgmQ # Fhv/K53b0CDKieoofjKOGd97SDMe12X4rsn4gxSTdn1k0I7OvjV9/3IxTZ+evR5s # L6iPDAZQ+4wns3bJ9ObXwzTijIchhmH+v1V04SF3AwpobLvkyanmz1kl63zsRQ55 # ZmjoIs2475iFTZYRPAmK0H+8KCgT+2rKVI2SXM3CZZgGns5IW9S1N5NGQXwH3c/6 # Q++6Z2H/fUnguzB9XIDj5hY5S6cxghB8MIIQeAIBATCBkjB9MQswCQYDVQQGEwJH # QjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3Jk # MRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDEjMCEGA1UEAxMaQ09NT0RPIFJT # QSBDb2RlIFNpZ25pbmcgQ0ECEQDK8HkdbdW7vc/SkiJrRNfIMA0GCWCGSAFlAwQC # AQUAoHwwEAYKKwYBBAGCNwIBDDECMAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcC # AQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIE # IEbGfgwQkG/zvrhxrx00gSFCCX/suqtHjPybzL8SCBVgMA0GCSqGSIb3DQEBAQUA # BIIBAGgLuDWHgvMHP4y7g2hkaYv5Zs+4dQ9CPzEZOHv5CpBH347xoqz6Qd7UUj1u # zgsWwqXFKmfqdVZZFqz/0uyRP3CVKQLYt6uvMoIshM5P2QzPdJI+ORvaVeAFzB/c # LYD1SHO7tpXcQ/sZg037rrZ2J7tHxDpwARAKWTPYmIXh1mXYxWzLslrouCH6/16O # YIXkJV2rsAhCSXdPTt+RZ3UDn/07A5cezix3xrzUdGHc0WSpOgHr6bT7l/GlxP8n # On4T9MnRpZUxrti9PuMggEcBqoHcY+qX5SJnRiQJ5FWa2RWjPimDU7In0+daZ79h # d6RUlqAabUYzMrStQ4X8mxetjNGhgg48MIIOOAYKKwYBBAGCNwMDATGCDigwgg4k # BgkqhkiG9w0BBwKggg4VMIIOEQIBAzENMAsGCWCGSAFlAwQCATCCAQ4GCyqGSIb3 # DQEJEAEEoIH+BIH7MIH4AgEBBgtghkgBhvhFAQcXAzAxMA0GCWCGSAFlAwQCAQUA # BCCY/VdnRfn0WEfWEKrpjDEq53o9dIgAliYZPFeJZgsXpgIUJCtzH3GDhcdiVUz/ # UVs+oLdhq14YDzIwMTgwNjMwMDUwMTA3WjADAgEeoIGGpIGDMIGAMQswCQYDVQQG # EwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5 # bWFudGVjIFRydXN0IE5ldHdvcmsxMTAvBgNVBAMTKFN5bWFudGVjIFNIQTI1NiBU # aW1lU3RhbXBpbmcgU2lnbmVyIC0gRzKgggqLMIIFODCCBCCgAwIBAgIQewWx1Elo # UUT3yYnSnBmdEjANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UEBhMCVVMxFzAVBgNV # BAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 # b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo # b3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9v # dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNjAxMTIwMDAwMDBaFw0zMTAx # MTEyMzU5NTlaMHcxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jw # b3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazEoMCYGA1UE # AxMfU3ltYW50ZWMgU0hBMjU2IFRpbWVTdGFtcGluZyBDQTCCASIwDQYJKoZIhvcN # AQEBBQADggEPADCCAQoCggEBALtZnVlVT52Mcl0agaLrVfOwAa08cawyjwVrhpon # ADKXak3JZBRLKbvC2Sm5Luxjs+HPPwtWkPhiG37rpgfi3n9ebUA41JEG50F8eRzL # y60bv9iVkfPw7mz4rZY5Ln/BJ7h4OcWEpe3tr4eOzo3HberSmLU6Hx45ncP0mqj0 # hOHE0XxxxgYptD/kgw0mw3sIPk35CrczSf/KO9T1sptL4YiZGvXA6TMU1t/HgNuR # 7v68kldyd/TNqMz+CfWTN76ViGrF3PSxS9TO6AmRX7WEeTWKeKwZMo8jwTJBG1kO # qT6xzPnWK++32OTVHW0ROpL2k8mc40juu1MO1DaXhnjFoTcCAwEAAaOCAXcwggFz # MA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMGYGA1UdIARfMF0w # WwYLYIZIAYb4RQEHFwMwTDAjBggrBgEFBQcCARYXaHR0cHM6Ly9kLnN5bWNiLmNv # bS9jcHMwJQYIKwYBBQUHAgIwGRoXaHR0cHM6Ly9kLnN5bWNiLmNvbS9ycGEwLgYI # KwYBBQUHAQEEIjAgMB4GCCsGAQUFBzABhhJodHRwOi8vcy5zeW1jZC5jb20wNgYD # VR0fBC8wLTAroCmgJ4YlaHR0cDovL3Muc3ltY2IuY29tL3VuaXZlcnNhbC1yb290 # LmNybDATBgNVHSUEDDAKBggrBgEFBQcDCDAoBgNVHREEITAfpB0wGzEZMBcGA1UE # AxMQVGltZVN0YW1wLTIwNDgtMzAdBgNVHQ4EFgQUr2PWyqNOhXLgp7xB8ymiOH+A # dWIwHwYDVR0jBBgwFoAUtnf6aUhHn1MS1cLqBzJ2B9GXBxkwDQYJKoZIhvcNAQEL # BQADggEBAHXqsC3VNBlcMkX+DuHUT6Z4wW/X6t3cT/OhyIGI96ePFeZAKa3mXfSi # 2VZkhHEwKt0eYRdmIFYGmBmNXXHy+Je8Cf0ckUfJ4uiNA/vMkC/WCmxOM+zWtJPI # TJBjSDlAIcTd1m6JmDy1mJfoqQa3CcmPU1dBkC/hHk1O3MoQeGxCbvC2xfhhXFL1 # TvZrjfdKer7zzf0D19n2A6gP41P3CnXsxnUuqmaFBJm3+AZX4cYO9uiv2uybGB+q # ueM6AL/OipTLAduexzi7D1Kr0eOUA2AKTaD+J20UMvw/l0Dhv5mJ2+Q5FL3a5NPD # 6itas5VYVQR9x5rsIwONhSrS/66pYYEwggVLMIIEM6ADAgECAhBUWPKq10HWRLyE # qXugllLmMA0GCSqGSIb3DQEBCwUAMHcxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRT # eW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0 # d29yazEoMCYGA1UEAxMfU3ltYW50ZWMgU0hBMjU2IFRpbWVTdGFtcGluZyBDQTAe # Fw0xNzAxMDIwMDAwMDBaFw0yODA0MDEyMzU5NTlaMIGAMQswCQYDVQQGEwJVUzEd # MBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVj # IFRydXN0IE5ldHdvcmsxMTAvBgNVBAMTKFN5bWFudGVjIFNIQTI1NiBUaW1lU3Rh # bXBpbmcgU2lnbmVyIC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB # AQCZ8/zYBAkDhvnXXKaTwEJ86nxjz10A4o7zwJDfjyn1GOqUt5Ll17Cgc4Ho6Qqb # SnwB/52PpDmnDupF9CIMOnDtOUWL5MUbXPBFaEYkBWN2mxz8nmwqsVblin9Sca7y # NdVGIwYcz0gtHbTNuNl2I44c/z6/uwZcaQemZQ74Xq59Lu1NrjXvydcAQv0olQ6f # XXJCCbzD2kTS7cxHhOT8yi2sWL6u967ZRA0It8J31hpDcNFuA95SksQQCHHZuiJV # 8h+87ZudO+JeHUyD/5cPewvnVYNO0g3rvtfsrm5HuZ/fpdZRvARV7f8ncEzJ7SpL # E+GxuUwPyQHuVWVfaQJ4Zss/AgMBAAGjggHHMIIBwzAMBgNVHRMBAf8EAjAAMGYG # A1UdIARfMF0wWwYLYIZIAYb4RQEHFwMwTDAjBggrBgEFBQcCARYXaHR0cHM6Ly9k # LnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGRoXaHR0cHM6Ly9kLnN5bWNiLmNv # bS9ycGEwQAYDVR0fBDkwNzA1oDOgMYYvaHR0cDovL3RzLWNybC53cy5zeW1hbnRl # Yy5jb20vc2hhMjU2LXRzcy1jYS5jcmwwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgw # DgYDVR0PAQH/BAQDAgeAMHcGCCsGAQUFBwEBBGswaTAqBggrBgEFBQcwAYYeaHR0 # cDovL3RzLW9jc3Aud3Muc3ltYW50ZWMuY29tMDsGCCsGAQUFBzAChi9odHRwOi8v # dHMtYWlhLndzLnN5bWFudGVjLmNvbS9zaGEyNTYtdHNzLWNhLmNlcjAoBgNVHREE # ITAfpB0wGzEZMBcGA1UEAxMQVGltZVN0YW1wLTIwNDgtNTAdBgNVHQ4EFgQUCbXB # /pZylylDmsngArqu+P0vuvYwHwYDVR0jBBgwFoAUr2PWyqNOhXLgp7xB8ymiOH+A # dWIwDQYJKoZIhvcNAQELBQADggEBABezCojpXFpeIGs7ChWybMWpijKH07H0HFOu # hb4/m//XvLeUhbTHUn6U6L3tYbLUp5nkw8mTwTU9C+hoCl1WmL2xIjvRRHrXv/Bt # UTKK1SPfOAE39uJTK3orEY+3TWx6MwMbfGsJlBe75NtY1CETZefs0SXKLHWanH/8 # ybsqaKvEfbTPo8lsp9nEAJyJCneR9E2i+zE7hm725h9QA4abv8tCq+Z2m3JaEQGK # xu+lb5Xn3a665iJl8BhZGxHJzYC32JdHH0II+KxxH7BGU7PUstWjq1B1SBIXgq3P # 4EFPMn7NlRy/kYoIPaSnZwKW3yRMpdBBwIJgo4oXMkvTvM+ktIwxggJaMIICVgIB # ATCBizB3MQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRp # b24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMTH1N5 # bWFudGVjIFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0ECEFRY8qrXQdZEvISpe6CWUuYw # CwYJYIZIAWUDBAIBoIGkMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkq # hkiG9w0BCQUxDxcNMTgwNjMwMDUwMTA3WjAvBgkqhkiG9w0BCQQxIgQgmtnGqRmW # 5HF0DmlmeReTH/NUitdgqbL48CoPvQqgZO4wNwYLKoZIhvcNAQkQAi8xKDAmMCQw # IgQgz3rBetBH7NX9w2giAxsS1O8Hi28rTF5rpB+P8s9LrWcwCwYJKoZIhvcNAQEB # BIIBACmFB9qrN3I3ybHejy6JR3bM0Iu4OWDioMdxdGHSapUCqeO1AVzP5626GF7y # FfuP7mW5ROmL+6bip/qZK58AF3omX8o0Xv0CyB4I1ofO0/UsomZ1EX+1iniQ+YIv # g8utvDZoY+AxyddzKt3OhadgtiOKzl1CCe+B+O5qOnNaqBWoS/BxdapsB6UktBHI # VfQnDQEKA1xBflxKnlLS0CNztk8RsPo0Lozz8JhKS/QCdCsaOXFeXy/JGNTumlWo # nkq75DDwdnXCzprHyGn5+0rsPHOfo17jc+RUsFeYUklm8Lxq0vTXeStKZSQwC3Bz # ni77b7nUyXQNUqL3yTis/C0S+As= # SIG # End signature block |