Samples/Server_Multiconnection_SAN_Storage_Sample.ps1
############################################################################## # Server_Multiconnection_SAN_Storage_Sample.ps1 # # Example script to demonstrate creating a Server Profile with the following: # # - Configure 2 NICs in paired with Red # - Configure 2 NICs in paired with Black # - Configure 2 NICs in paired with NetworkSet (Production Networks) # - Configure 2 FC connections to the Production Fabric A and B # - Set requested bandwidth # - Attach SAN Storage # # VERSION 3.1 # # (C) Copyright 2013-2021 Hewlett Packard Enterprise Development LP ############################################################################## <# 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. #> ############################################################################## if (-not (get-module HPEOneView.540)) { Import-Module HPEOneView.540 } if (-not $ConnectedSessions) { $Appliance = Read-Host 'ApplianceName' $Username = Read-Host 'Username' $Password = Read-Host 'Password' -AsSecureString $ApplianceConnection = Connect-OVMgmt -Hostname $Appliance -Username $Username -Password $Password } # Now view what enclosures have been imported Write-Host "Here is the list of enclosures managed by this appliance" Get-OVEnclosure # Now list all the servers that have been imported with their current state $servers = Get-OVServer Write-Host "There are [$servers.Count] servers managed by this appliance." Get-OVServer # Make sure all the servers are powered off $servers | % { if ($_.powerState -ne "Off") { Write-Host "Server '$_.name' is ($_.powerState). Powering off..." $Server | Stop-OVServer -Confirm:$false } } # Now create a server profile for the first available server $server = Get-OVServer -NoProfile | Select -First 1 $profileName = "Profile-" + $server.serialNumber Write-Host "Creating" $profileName "for server" $server.name # Assume that networks "red" and "blue" are available for this server $netRed = Get-OVNetwork "red" $conRed1 = New-OVProfileConnection -id 1 -type Ethernet -requestedBW 1000 -network $netRed $conRed2 = New-OVProfileConnection -id 2 -type Ethernet -requestedBW 1000 -network $netRed $netProdFCA = Get-OVNetwork "Production Fabric A" $conFC1 = New-OVProfileConnection -id 3 -type FibreChannel -requestedBW 4000 -network $netProdFCA $netProdFCB = Get-OVNetwork "Production Fabric B" $conFC2 = New-OVProfileConnection -id 4 -type FibreChannel -requestedBW 4000 -network $netProdFCB $netBlack = Get-OVNetwork "black" $conBlack1 = New-OVProfileConnection -id 5 -type Ethernet -requestedBW 2000 -network $netBlack $conBlack2 = New-OVProfileConnection -id 6 -type Ethernet -requestedBW 2000 -network $netBlack $netSetProd = Get-OVNetworkSet "Production Networks" $conSet1 = New-OVProfileConnection -id 7 -type Ethernet -requestedBW 3000 -network $netSetProd $conSet2 = New-OVProfileConnection -id 8 -type Ethernet -requestedBW 3000 -network $netSetProd #Build array of connections for the profile $conList = @($conRed1, $conRed2, $conBlack1, $conBlack2, $conSet1, $conSet2, $conFC1, $conFC2) #Attach Volumes $volume1 = Get-OVStorageVolume -Name Volume1 | Get-OVProfileAttachVolume -volumeid 1 $volume2 = Get-OVStorageVolume -Name SharedVolume1 | Get-OVProfileAttachVolume -volumeid 2 $attachVolumes = @($volume1,$volume2) #Submit profile to the appliance $task = New-OVProfile -name $profileName -server $server -connections $conList -SANStorage -HostOsType VMware -StorageVolume $attachVolumes -Async #Monitor the profile async task progress Write-Host $task.name $task.taskStatus $task = $task | Wait-OVTaskComplete # Change Connection ID 5 and 6 to "green" in the profile we just created $profile = Send-OVRequest $task.associatedResource.resourceUri Write-Host "Adding network to" $profile.name #Validate the Server Power is off prior to modifying Connections (Requirement for 1.00 and 1.01) if ($server.powerState -ne "Off") { Write-Host "Server" $server.name "is" $server.powerState ". Powering it off..." $Server | Stop-OVServer -Confirm:$false } $netGreen = Get-OVNetwork "green" $conGreen1 = New-OVProfileConnection -connectionId 5 -type Ethernet -network $netGreen $conGreen2 = New-OVProfileConnection -connectionId 6 -type Ethernet -network $netGreen $profile.connections = $profile.connections + $conGreen1 + $conGreen2 $task = Set-OVResource $profile $task = Wait-OVTaskComplete -taskUri $task.uri # Display the connections for our profile $profile = Send-OVRequest $task.associatedResource.resourceUri $profile.connections | Format-Table # ADVANCED SERVER SETTINGS # First view the capabilities of the server hardware for this profile $serverType = Send-OVRequest $profile.serverHardwareTypeUri Write-Host "Boot options for this server:" $serverType.bootCapabilities # Set the boot order for the server $profile.boot.order = @("PXE", "HardDisk", "USB", "CD", "Floppy", "FibreChannelHba") $profile.boot.manageBoot = $true Write-Host "Set boot order to" $profile.boot.order #Set the BIOS setting to disable external USB ports Write-Host "There are" $serverType.biosSettings.Count "possible BIOS settings for this server" foreach ($setting in $serverType.biosSettings) { if ($setting.name.Contains("USB Control")) { foreach ($option in $setting.options) { if ($option.name.Contains("External")) { $profile.bios.manageBios = $true $profile.bios.overriddenSettings = @(@{id=$setting.id;value=$option.id}) Write-Host $setting.name ":" $option.name break } } break } } # Let's update the profile with boot order and BIOS settings and validate the result $task = Set-OVResource $profile $task = Wait-OVTaskComplete -Task $task -timeout (New-TimeSpan -Minutes 20) $profile = Send-OVRequest $task.associatedResource.resourceUri # Now update the firmware of the profile. # List available SPP's on the appliance Get-OVBaseline $sppFileName = Read-Host "Which SPP file do you want to select ('SPP*.iso'), or <Enter> to skip firmware" if ($sppFileName) { $fw = Get-OVBaseline -FileName $sppFileName # Now select the firmware SPP in the server profile if ($serverType.firmwareUpdateSupported) { $profile.firmwareSettings.manageFirmware = $true $profile.firmwareSettings.firmwareBaselineUri = $fw.uri $task = Set-OVResource $profile $task = Wait-OVTaskComplete -taskUri $task.uri -timeout (New-TimeSpan -Minutes 30) } else { Write-Host "Firmware update not supported for" $serverType.model } } # SIG # Begin signature block # MIIiHAYJKoZIhvcNAQcCoIIiDTCCIgkCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDMH/bvSGZWka0B # rlJnVS9PKW0sX8yvgazKgc1rtSLv76CCEPYwggV0MIIEXKADAgECAhEA4uyQqa0b # usW8CNcfQ2uSeDANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJHQjEbMBkGA1UE # CBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQK # Ew9TZWN0aWdvIExpbWl0ZWQxJDAiBgNVBAMTG1NlY3RpZ28gUlNBIENvZGUgU2ln # bmluZyBDQTAeFw0yMDEwMjEwMDAwMDBaFw0yMTEwMjEyMzU5NTlaMIHaMQswCQYD # VQQGEwJVUzEOMAwGA1UEEQwFOTQzMDQxEzARBgNVBAgMCkNhbGlmb3JuaWExEjAQ # BgNVBAcMCVBhbG8gQWx0bzEcMBoGA1UECQwTMzAwMCBIYW5vdmVyIFN0cmVldDEr # MCkGA1UECgwiSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgQ29tcGFueTEaMBgG # A1UECwwRSFAgQ3liZXIgU2VjdXJpdHkxKzApBgNVBAMMIkhld2xldHQgUGFja2Fy # ZCBFbnRlcnByaXNlIENvbXBhbnkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK # AoIBAQDqW2H8BiQozcKceSJau9tZAWp/YIjcOFBH7DT6DkS4tOAY/abriMVAPYiK # oxJ8GEck3wWlYFm09+IrpeEDvXCZj0D8B7ls7AMUudCikqO5GJsgL3vzJqOmmUjp # I3VsRvoJ5I4Ioq3N7jUINYSpHx3R0Sx8YMlKCRJLQO9DRveO1JSNMULIA2yatA9f # lmZ/9jTf2UJCj6n7exfqobZCSzlRoiYED6fPmzJIzFXHkZdzmZ4XlNT19sxl3uIl # BeT7DNipZ/VjnkPmddoEIn1gcsDzjuiE2+fxhkmWSwsWuDv3dDztYfoGZjbJi8bm # OhfTRZiCQUDpjDyYbFzORnoK6tu9AgMBAAGjggGQMIIBjDAfBgNVHSMEGDAWgBQO # 4TqoUzox1Yq+wbutZxoDha00DjAdBgNVHQ4EFgQUNeRTASY3ei1XaNNs+0/ZvUDs # P2owDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYB # BQUHAwMwEQYJYIZIAYb4QgEBBAQDAgQQMEoGA1UdIARDMEEwNQYMKwYBBAGyMQEC # AQMCMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeB # DAEEATBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsLnNlY3RpZ28uY29tL1Nl # Y3RpZ29SU0FDb2RlU2lnbmluZ0NBLmNybDBzBggrBgEFBQcBAQRnMGUwPgYIKwYB # BQUHMAKGMmh0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNvZGVTaWdu # aW5nQ0EuY3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTAN # BgkqhkiG9w0BAQsFAAOCAQEAev9EUlTOTH7o28vQnCN+uelty9iliqJBID4NcwYQ # BBruKhgheokkvMVW8PvGDLsELMRDCOCD6WJZB2e6mICkhglFrcVLVoWcVToBym/t # ipBXsEyYle6qTNxY+5eBC40FRxlurIZXiPgtEXa8PbNI6OGCQpEEp9wtVitUnPF3 # Q6MD/k+tyC81PaqzCXfXLC/cyTRki+8EAiSIhKSNY5h6at/29gN6+QppRJRb7ghN # zATfVwiiW2jgYb8sUzvO8dbE3WIa9dv58VZNEvnhAGbHwLz15Gf2ygQaS26AuJ3S # y4P8pXDC+oGoPiDngeQm0f9rF9AlYhmm8oeq+HGGgsesNjCCBYEwggRpoAMCAQIC # EDlyRDr5IrdR19NsEN0xNZUwDQYJKoZIhvcNAQEMBQAwezELMAkGA1UEBhMCR0Ix # GzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEa # MBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMMGEFBQSBDZXJ0aWZp # Y2F0ZSBTZXJ2aWNlczAeFw0xOTAzMTIwMDAwMDBaFw0yODEyMzEyMzU5NTlaMIGI # MQswCQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVy # c2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UE # AxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJ # KoZIhvcNAQEBBQADggIPADCCAgoCggIBAIASZRc2DsPbCLPQrFcNdu3NJ9NMrVCD # YeKqIE0JLWQJ3M6Jn8w9qez2z8Hc8dOx1ns3KBErR9o5xrw6GbRfpr19naNjQrZ2 # 8qk7K5H44m/Q7BYgkAk+4uh0yRi0kdRiZNt/owbxiBhqkCI8vP4T8IcUe/bkH47U # 5FHGEWdGCFHLhhRUP7wz/n5snP8WnRi9UY41pqdmyHJn2yFmsdSbeAPAUDrozPDc # vJ5M/q8FljUfV1q3/875PbcstvZU3cjnEjpNrkyKt1yatLcgPcp/IjSufjtoZgFE # 5wFORlObM2D3lL5TN5BzQ/Myw1Pv26r+dE5px2uMYJPexMcM3+EyrsyTO1F4lWeL # 7j1W/gzQaQ8bD/MlJmszbfduR/pzQ+V+DqVmsSl8MoRjVYnEDcGTVDAZE6zTfTen # 6106bDVc20HXEtqpSQvf2ICKCZNijrVmzyWIzYS4sT+kOQ/ZAp7rEkyVfPNrBale # FoPMuGfi6BOdzFuC00yz7Vv/3uVzrCM7LQC/NVV0CUnYSVgaf5I25lGSDvMmfRxN # F7zJ7EMm0L9BX0CpRET0medXh55QH1dUqD79dGMvsVBlCeZYQi5DGky08CVHWfoE # HpPUJkZKUIGy3r54t/xnFeHJV4QeD2PW6WK61l9VLupcxigIBCU5uA4rqfJMlxwH # Pw1S9e3vL4IPAgMBAAGjgfIwge8wHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Kl # f9AwpLQwHQYDVR0OBBYEFFN5v1qqK0rPVIDh2JvAnfKyA2bLMA4GA1UdDwEB/wQE # AwIBhjAPBgNVHRMBAf8EBTADAQH/MBEGA1UdIAQKMAgwBgYEVR0gADBDBgNVHR8E # PDA6MDigNqA0hjJodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9BQUFDZXJ0aWZpY2F0 # ZVNlcnZpY2VzLmNybDA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6 # Ly9vY3NwLmNvbW9kb2NhLmNvbTANBgkqhkiG9w0BAQwFAAOCAQEAGIdR3HQhPZyK # 4Ce3M9AuzOzw5steEd4ib5t1jp5y/uTW/qofnJYt7wNKfq70jW9yPEM7wD/ruN9c # qqnGrvL82O6je0P2hjZ8FODN9Pc//t64tIrwkZb+/UNkfv3M0gGhfX34GRnJQisT # v1iLuqSiZgR2iJFODIkUzqJNyTKzuugUGrxx8VvwQQuYAAoiAxDlDLH5zZI3Ge07 # 8eQ6tvlFEyZ1r7uq7z97dzvSxAKRPRkA0xdcOds/exgNRc2ThZYvXd9ZFk8/Ub3V # RRg/7UqO6AZhdCMWtQ1QcydER38QXYkqa4UxFMToqWpMgLxqeM+4f452cpkMnf7X # kQgWoaNflTCCBfUwggPdoAMCAQICEB2iSDBvmyYY0ILgln0z02owDQYJKoZIhvcN # AQEMBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYD # VQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3Jr # MS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 # MB4XDTE4MTEwMjAwMDAwMFoXDTMwMTIzMTIzNTk1OVowfDELMAkGA1UEBhMCR0Ix # GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEY # MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSQwIgYDVQQDExtTZWN0aWdvIFJTQSBD # b2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCG # Io0yhXoYn0nwli9jCB4t3HyfFM/jJrYlZilAhlRGdDFixRDtsocnppnLlTDAVvWk # dcapDlBipVGREGrgS2Ku/fD4GKyn/+4uMyD6DBmJqGx7rQDDYaHcaWVtH24nlteX # UYam9CflfGqLlR5bYNV+1xaSnAAvaPeX7Wpyvjg7Y96Pv25MQV0SIAhZ6DnNj9LW # zwa0VwW2TqE+V2sfmLzEYtYbC43HZhtKn52BxHJAteJf7wtF/6POF6YtVbC3sLxU # ap28jVZTxvC6eVBJLPcDuf4vZTXyIuosB69G2flGHNyMfHEo8/6nxhTdVZFuihEN # 3wYklX0Pp6F8OtqGNWHTAgMBAAGjggFkMIIBYDAfBgNVHSMEGDAWgBRTeb9aqitK # z1SA4dibwJ3ysgNmyzAdBgNVHQ4EFgQUDuE6qFM6MdWKvsG7rWcaA4WtNA4wDgYD # VR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0lBBYwFAYIKwYB # BQUHAwMGCCsGAQUFBwMIMBEGA1UdIAQKMAgwBgYEVR0gADBQBgNVHR8ESTBHMEWg # Q6BBhj9odHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVNFUlRydXN0UlNBQ2VydGlm # aWNhdGlvbkF1dGhvcml0eS5jcmwwdgYIKwYBBQUHAQEEajBoMD8GCCsGAQUFBzAC # hjNodHRwOi8vY3J0LnVzZXJ0cnVzdC5jb20vVVNFUlRydXN0UlNBQWRkVHJ1c3RD # QS5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJ # KoZIhvcNAQEMBQADggIBAE1jUO1HNEphpNveaiqMm/EAAB4dYns61zLC9rPgY7P7 # YQCImhttEAcET7646ol4IusPRuzzRl5ARokS9At3WpwqQTr81vTr5/cVlTPDoYMo # t94v5JT3hTODLUpASL+awk9KsY8k9LOBN9O3ZLCmI2pZaFJCX/8E6+F0ZXkI9amT # 3mtxQJmWunjxucjiwwgWsatjWsgVgG10Xkp1fqW4w2y1z99KeYdcx0BNYzX2MNPP # tQoOCwR/oEuuu6Ol0IQAkz5TXTSlADVpbL6fICUQDRn7UJBhvjmPeo5N9p8OHv4H # URJmgyYZSJXOSsnBf/M6BZv5b9+If8AjntIeQ3pFMcGcTanwWbJZGehqjSkEAnd8 # S0vNcL46slVaeD68u28DECV3FTSK+TbMQ5Lkuk/xYpMoJVcp+1EZx6ElQGqEV8ay # nbG8HArafGd+fS7pKEwYfsR7MUFxmksp7As9V1DSyt39ngVR5UR43QHesXWYDVQk # /fBO4+L4g71yuss9Ou7wXheSaG3IYfmm8SoKC6W59J7umDIFhZ7r+YMp08Ysfb06 # dy6LN0KgaoLtO0qqlBCk4Q34F8W2WnkzGJLjtXX4oemOCiUe5B7xn1qHI/+fpFGe # +zmAEc3btcSnqIBv5VPU4OOiwtJbGvoyJi1qV3AcPKRYLqPzW0sH3DJZ84enGm1Y # MYIQfDCCEHgCAQEwgZEwfDELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIg # TWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBM # aW1pdGVkMSQwIgYDVQQDExtTZWN0aWdvIFJTQSBDb2RlIFNpZ25pbmcgQ0ECEQDi # 7JCprRu6xbwI1x9Da5J4MA0GCWCGSAFlAwQCAQUAoHwwEAYKKwYBBAGCNwIBDDEC # MAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwG # CisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIEni7gQqofCvpTYYtV6la9WwnC85 # njgyNR6tlRG6Wr84MA0GCSqGSIb3DQEBAQUABIIBAEp0L6tDHDBrG92b69w2jA5N # TdZODLMJXfXcU+b9Gz7MgMt3JpXHDtremIRD8Je78n2rO42tzUOLpQpyC5fUddCf # InKA1ELKgG9LFygOYGwNF44Oec1dBeQAzoxxDUdhEuPOMfQHxVa/CfEoD5v48uaJ # e0D8momaxY3BP+Uzq5+yjFXB6bF0ENC9xG/PSk13jKl/J+1aMPn4PUVt4H6KmKOk # yO30wRg5pk6GOdsmW28K3tMKYTH7uACqbGG42T9JfkkyAfBfq0sPCf/qrOl2/RDy # gqgICg/PmTiUd4sIPQea35gA8lvca5RL2zcoCnqV8/giMMswsdj11NvzHSR86Fih # gg49MIIOOQYKKwYBBAGCNwMDATGCDikwgg4lBgkqhkiG9w0BBwKggg4WMIIOEgIB # AzENMAsGCWCGSAFlAwQCATCCAQ8GCyqGSIb3DQEJEAEEoIH/BIH8MIH5AgEBBgtg # hkgBhvhFAQcXAzAxMA0GCWCGSAFlAwQCAQUABCCF1QB4IOMMoWJuTeRc79G50p7t # x5Fa0I37F4thiKRIagIVAJ/1AopErGpjO9mnIRYZGdrhhzlpGA8yMDIxMDUyNjE2 # MDE1NlowAwIBHqCBhqSBgzCBgDELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFu # dGVjIENvcnBvcmF0aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3Jr # MTEwLwYDVQQDEyhTeW1hbnRlYyBTSEEyNTYgVGltZVN0YW1waW5nIFNpZ25lciAt # IEczoIIKizCCBTgwggQgoAMCAQICEHsFsdRJaFFE98mJ0pwZnRIwDQYJKoZIhvcN # AQELBQAwgb0xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEf # MB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDIw # MDggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE4MDYG # A1UEAxMvVmVyaVNpZ24gVW5pdmVyc2FsIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRo # b3JpdHkwHhcNMTYwMTEyMDAwMDAwWhcNMzEwMTExMjM1OTU5WjB3MQswCQYDVQQG # EwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5 # bWFudGVjIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMTH1N5bWFudGVjIFNIQTI1NiBU # aW1lU3RhbXBpbmcgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7 # WZ1ZVU+djHJdGoGi61XzsAGtPHGsMo8Fa4aaJwAyl2pNyWQUSym7wtkpuS7sY7Ph # zz8LVpD4Yht+66YH4t5/Xm1AONSRBudBfHkcy8utG7/YlZHz8O5s+K2WOS5/wSe4 # eDnFhKXt7a+Hjs6Nx23q0pi1Oh8eOZ3D9Jqo9IThxNF8ccYGKbQ/5IMNJsN7CD5N # +Qq3M0n/yjvU9bKbS+GImRr1wOkzFNbfx4Dbke7+vJJXcnf0zajM/gn1kze+lYhq # xdz0sUvUzugJkV+1hHk1inisGTKPI8EyQRtZDqk+scz51ivvt9jk1R1tETqS9pPJ # nONI7rtTDtQ2l4Z4xaE3AgMBAAGjggF3MIIBczAOBgNVHQ8BAf8EBAMCAQYwEgYD # VR0TAQH/BAgwBgEB/wIBADBmBgNVHSAEXzBdMFsGC2CGSAGG+EUBBxcDMEwwIwYI # KwYBBQUHAgEWF2h0dHBzOi8vZC5zeW1jYi5jb20vY3BzMCUGCCsGAQUFBwICMBka # F2h0dHBzOi8vZC5zeW1jYi5jb20vcnBhMC4GCCsGAQUFBwEBBCIwIDAeBggrBgEF # BQcwAYYSaHR0cDovL3Muc3ltY2QuY29tMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6 # Ly9zLnN5bWNiLmNvbS91bml2ZXJzYWwtcm9vdC5jcmwwEwYDVR0lBAwwCgYIKwYB # BQUHAwgwKAYDVR0RBCEwH6QdMBsxGTAXBgNVBAMTEFRpbWVTdGFtcC0yMDQ4LTMw # HQYDVR0OBBYEFK9j1sqjToVy4Ke8QfMpojh/gHViMB8GA1UdIwQYMBaAFLZ3+mlI # R59TEtXC6gcydgfRlwcZMA0GCSqGSIb3DQEBCwUAA4IBAQB16rAt1TQZXDJF/g7h # 1E+meMFv1+rd3E/zociBiPenjxXmQCmt5l30otlWZIRxMCrdHmEXZiBWBpgZjV1x # 8viXvAn9HJFHyeLojQP7zJAv1gpsTjPs1rSTyEyQY0g5QCHE3dZuiZg8tZiX6KkG # twnJj1NXQZAv4R5NTtzKEHhsQm7wtsX4YVxS9U72a433Snq+8839A9fZ9gOoD+NT # 9wp17MZ1LqpmhQSZt/gGV+HGDvbor9rsmxgfqrnjOgC/zoqUywHbnsc4uw9Sq9Hj # lANgCk2g/idtFDL8P5dA4b+ZidvkORS92uTTw+orWrOVWFUEfcea7CMDjYUq0v+u # qWGBMIIFSzCCBDOgAwIBAgIQe9Tlr7rMBz+hASMEIkFNEjANBgkqhkiG9w0BAQsF # ADB3MQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24x # HzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMTH1N5bWFu # dGVjIFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0EwHhcNMTcxMjIzMDAwMDAwWhcNMjkw # MzIyMjM1OTU5WjCBgDELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENv # cnBvcmF0aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMTEwLwYD # VQQDEyhTeW1hbnRlYyBTSEEyNTYgVGltZVN0YW1waW5nIFNpZ25lciAtIEczMIIB # IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArw6Kqvjcv2l7VBdxRwm9jTyB # +HQVd2eQnP3eTgKeS3b25TY+ZdUkIG0w+d0dg+k/J0ozTm0WiuSNQI0iqr6nCxvS # B7Y8tRokKPgbclE9yAmIJgg6+fpDI3VHcAyzX1uPCB1ySFdlTa8CPED39N0yOJM/ # 5Sym81kjy4DeE035EMmqChhsVWFX0fECLMS1q/JsI9KfDQ8ZbK2FYmn9ToXBilIx # q1vYyXRS41dsIr9Vf2/KBqs/SrcidmXs7DbylpWBJiz9u5iqATjTryVAmwlT8ClX # hVhe6oVIQSGH5d600yaye0BTWHmOUjEGTZQDRcTOPAPstwDyOiLFtG/l77CKmwID # AQABo4IBxzCCAcMwDAYDVR0TAQH/BAIwADBmBgNVHSAEXzBdMFsGC2CGSAGG+EUB # BxcDMEwwIwYIKwYBBQUHAgEWF2h0dHBzOi8vZC5zeW1jYi5jb20vY3BzMCUGCCsG # AQUFBwICMBkaF2h0dHBzOi8vZC5zeW1jYi5jb20vcnBhMEAGA1UdHwQ5MDcwNaAz # oDGGL2h0dHA6Ly90cy1jcmwud3Muc3ltYW50ZWMuY29tL3NoYTI1Ni10c3MtY2Eu # Y3JsMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIHgDB3Bggr # BgEFBQcBAQRrMGkwKgYIKwYBBQUHMAGGHmh0dHA6Ly90cy1vY3NwLndzLnN5bWFu # dGVjLmNvbTA7BggrBgEFBQcwAoYvaHR0cDovL3RzLWFpYS53cy5zeW1hbnRlYy5j # b20vc2hhMjU2LXRzcy1jYS5jZXIwKAYDVR0RBCEwH6QdMBsxGTAXBgNVBAMTEFRp # bWVTdGFtcC0yMDQ4LTYwHQYDVR0OBBYEFKUTAamfhcwbbhYeXzsxqnk2AHsdMB8G # A1UdIwQYMBaAFK9j1sqjToVy4Ke8QfMpojh/gHViMA0GCSqGSIb3DQEBCwUAA4IB # AQBGnq/wuKJfoplIz6gnSyHNsrmmcnBjL+NVKXs5Rk7nfmUGWIu8V4qSDQjYELo2 # JPoKe/s702K/SpQV5oLbilRt/yj+Z89xP+YzCdmiWRD0Hkr+Zcze1GvjUil1AEor # pczLm+ipTfe0F1mSQcO3P4bm9sB/RDxGXBda46Q71Wkm1SF94YBnfmKst04uFZrl # nCOvWxHqcalB+Q15OKmhDc+0sdo+mnrHIsV0zd9HCYbE/JElshuW6YUI6N3qdGBu # YKVWeg3IRFjc5vlIFJ7lv94AvXexmBRyFCTfxxEsHwA/w0sUxmcczB4Go5BfXFSL # PuMzW4IPxbeGAk5xn+lmRT92MYICWjCCAlYCAQEwgYswdzELMAkGA1UEBhMCVVMx # HTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMR8wHQYDVQQLExZTeW1hbnRl # YyBUcnVzdCBOZXR3b3JrMSgwJgYDVQQDEx9TeW1hbnRlYyBTSEEyNTYgVGltZVN0 # YW1waW5nIENBAhB71OWvuswHP6EBIwQiQU0SMAsGCWCGSAFlAwQCAaCBpDAaBgkq # hkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTIxMDUyNjE2 # MDE1NlowLwYJKoZIhvcNAQkEMSIEINiQ3jq4J6r+bfdfI/lmQqzSZ6rGsA25I61X # 94QVAq3gMDcGCyqGSIb3DQEJEAIvMSgwJjAkMCIEIMR0znYAfQI5Tg2l5N58FMaA # +eKCATz+9lPvXbcf32H4MAsGCSqGSIb3DQEBAQSCAQBAPZaIK/8byNmdL2UQCU7F # UdKd0GZVnsazYwcsWSf8QwpkIv672QKhtWcVAaZpC7cf1732yMlPub/Rl7xnVAF/ # SGr5WyklHjt51OmhO8mv0k+KeDSbsDcdegcUihABCMHWcjeNnHVOE2PB9EFccG9y # QU7LKCzOXzkxTwlLwdM0dsPFHqnrr5rJuZ9bOex70Pg8UvjTDAk38gElcgfB6GeU # IE358wtzOgvZuxKJh/JBkzfKMWl9Hvbe9jnarpn9inlLUz4xOwWYeLAzGObccYqN # 34MOijVh3wNV0vyQkJ5YCY7sv9ZAOAmWJdT1+T9swHIRO+MHyKgXwJ0PlRFcTSWE # SIG # End signature block |