File: C:/Program Files/WindowsPowerShell/Modules/Pester/3.4.0/Functions/TestResults.Tests.ps1
Set-StrictMode -Version Latest
InModuleScope Pester {
Describe "Write nunit test results (Legacy)" {
Setup -Dir "Results"
It "should write a successful test result" {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Mocked Describe')
$TestResults.AddTestResult("Successful testcase","Passed",(New-TimeSpan -Seconds 1))
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile -LegacyFormat
$xmlResult = [xml] (Get-Content $testFile)
$xmlTestCase = $xmlResult.'test-results'.'test-suite'.'results'.'test-suite'.'results'.'test-case'
$xmlTestCase.name | Should Be "Successful testcase"
$xmlTestCase.result | Should Be "Success"
$xmlTestCase.time | Should Be "1"
}
It "should write a failed test result" {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Mocked Describe')
$time = [TimeSpan]::FromSeconds(2.5)
$TestResults.AddTestResult("Failed testcase","Failed",$time,'Assert failed: "Expected: Test. But was: Testing"','at line: 28 in C:\Pester\Result.Tests.ps1')
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile -LegacyFormat
$xmlResult = [xml] (Get-Content $testFile)
$xmlTestCase = $xmlResult.'test-results'.'test-suite'.'results'.'test-suite'.'results'.'test-case'
$xmlTestCase.name | Should Be "Failed testcase"
$xmlTestCase.result | Should Be "Failure"
$xmlTestCase.time | Should Be "2.5"
$xmlTestCase.failure.message | Should Be 'Assert failed: "Expected: Test. But was: Testing"'
$xmlTestCase.failure.'stack-trace' | Should Be 'at line: 28 in C:\Pester\Result.Tests.ps1'
}
It "should write the test summary" {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Mocked Describe')
$TestResults.AddTestResult("Testcase","Passed",(New-TimeSpan -Seconds 1))
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile -LegacyFormat
$xmlResult = [xml] (Get-Content $testFile)
$xmlTestResult = $xmlResult.'test-results'
$xmlTestResult.total | Should Be 1
$xmlTestResult.failures | Should Be 0
$xmlTestResult.date | Should Be $true
$xmlTestResult.time | Should Be $true
}
it "should write the test-suite information" {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Mocked Describe')
$TestResults.AddTestResult("Successful testcase","Passed",[timespan]10000000) #1.0 seconds
$TestResults.AddTestResult("Successful testcase","Passed",[timespan]11000000) #1.1 seconds
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile -LegacyFormat
$xmlResult = [xml] (Get-Content $testFile)
$xmlTestResult = $xmlResult.'test-results'.'test-suite'.results.'test-suite'
$description = $null
if ($xmlTestResult.PSObject.Properties['description'])
{
$description = $xmlTestResult.description
}
$xmlTestResult.type | Should Be "Powershell"
$xmlTestResult.name | Should Be "Mocked Describe"
$description | Should BeNullOrEmpty
$xmlTestResult.result | Should Be "Success"
$xmlTestResult.success | Should Be "True"
$xmlTestResult.time | Should Be 2.1
}
it "should write two test-suite elements for two describes" {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Describe #1')
$TestResults.AddTestResult("Successful testcase","Passed",(New-TimeSpan -Seconds 1))
$TestResults.LeaveDescribe()
$testResults.EnterDescribe('Describe #2')
$TestResults.AddTestResult("Failed testcase","Failed",(New-TimeSpan -Seconds 2))
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile -LegacyFormat
$xmlResult = [xml] (Get-Content $testFile)
$xmlTestSuite1 = $xmlResult.'test-results'.'test-suite'.results.'test-suite'[0]
$description = $null
if ($xmlTestSuite1.PSObject.Properties['description'])
{
$description = $xmlTestSuite1.description
}
$xmlTestSuite1.name | Should Be "Describe #1"
$description | Should BeNullOrEmpty
$xmlTestSuite1.result | Should Be "Success"
$xmlTestSuite1.success | Should Be "True"
$xmlTestSuite1.time | Should Be 1.0
$xmlTestSuite2 = $xmlResult.'test-results'.'test-suite'.results.'test-suite'[1]
$description = $null
if ($xmlTestSuite2.PSObject.Properties['description'])
{
$description = $xmlTestSuite2.description
}
$xmlTestSuite2.name | Should Be "Describe #2"
$description | Should BeNullOrEmpty
$xmlTestSuite2.result | Should Be "Failure"
$xmlTestSuite2.success | Should Be "False"
$xmlTestSuite2.time | Should Be 2.0
}
it "should write parent results in tree correctly" {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Failed')
$TestResults.AddTestResult("Failed","Failed")
$TestResults.AddTestResult("Skipped","Skipped")
$TestResults.AddTestResult("Pending","Pending")
$TestResults.AddTestResult("Passed","Passed")
$TestResults.LeaveDescribe()
$testResults.EnterDescribe('Skipped')
$TestResults.AddTestResult("Skipped","Skipped")
$TestResults.AddTestResult("Pending","Pending")
$TestResults.AddTestResult("Passed","Passed")
$TestResults.LeaveDescribe()
$testResults.EnterDescribe('Pending')
$TestResults.AddTestResult("Pending","Pending")
$TestResults.AddTestResult("Passed","Passed")
$TestResults.LeaveDescribe()
$testResults.EnterDescribe('Passed')
$TestResults.AddTestResult("Passed","Passed")
$TestResults.LeaveDescribe()
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile
$xmlResult = [xml] (Get-Content $testFile)
$xmlTestSuite1 = $xmlResult.'test-results'.'test-suite'.results.'test-suite'[0]
$xmlTestSuite1.name | Should Be "Failed"
$xmlTestSuite1.result | Should Be "Failure"
$xmlTestSuite1.success | Should Be "False"
$xmlTestSuite2 = $xmlResult.'test-results'.'test-suite'.results.'test-suite'[1]
$xmlTestSuite2.name | Should Be "Skipped"
$xmlTestSuite2.result | Should Be "Ignored"
$xmlTestSuite2.success | Should Be "True"
$xmlTestSuite3 = $xmlResult.'test-results'.'test-suite'.results.'test-suite'[2]
$xmlTestSuite3.name | Should Be "Pending"
$xmlTestSuite3.result | Should Be "Inconclusive"
$xmlTestSuite3.success | Should Be "True"
$xmlTestSuite4 = $xmlResult.'test-results'.'test-suite'.results.'test-suite'[3]
$xmlTestSuite4.name | Should Be "Passed"
$xmlTestSuite4.result | Should Be "Success"
$xmlTestSuite4.success | Should Be "True"
}
it "should write the environment information" {
$state = New-PesterState "."
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $state $testFile -LegacyFormat
$xmlResult = [xml] (Get-Content $testFile)
$xmlEnvironment = $xmlResult.'test-results'.'environment'
$xmlEnvironment.'os-Version' | Should Be $true
$xmlEnvironment.platform | Should Be $true
$xmlEnvironment.cwd | Should Be (Get-Location).Path
if ($env:Username) {
$xmlEnvironment.user | Should Be $env:Username
}
$xmlEnvironment.'machine-name' | Should Be $env:ComputerName
}
it "Should validate test results against the nunit 2.5 schema" {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Describe #1')
$TestResults.AddTestResult("Successful testcase","Passed",(New-TimeSpan -Seconds 1))
$TestResults.LeaveDescribe()
$testResults.EnterDescribe('Describe #2')
$TestResults.AddTestResult("Failed testcase","Failed",(New-TimeSpan -Seconds 2))
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile -LegacyFormat
$xml = [xml] (Get-Content $testFile)
$schemePath = (Get-Module -Name Pester).Path | Split-Path | Join-Path -ChildPath "nunit_schema_2.5.xsd"
$xml.Schemas.Add($null,$schemePath) > $null
{ $xml.Validate({throw $args.Exception }) } | Should Not Throw
}
it "handles special characters in block descriptions well -!@#$%^&*()_+`1234567890[];'',./""- " {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Describe -!@#$%^&*()_+`1234567890[];'',./"- #1')
$TestResults.AddTestResult("Successful testcase -!@#$%^&*()_+`1234567890[];'',./""-","Passed",(New-TimeSpan -Seconds 1))
$TestResults.LeaveDescribe()
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile -LegacyFormat
$xml = [xml] (Get-Content $testFile)
$schemePath = (Get-Module -Name Pester).Path | Split-Path | Join-Path -ChildPath "nunit_schema_2.5.xsd"
$xml.Schemas.Add($null,$schemePath) > $null
{ $xml.Validate({throw $args.Exception }) } | Should Not Throw
}
Context 'Exporting Parameterized Tests (New Legacy)' {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Mocked Describe')
$TestResults.AddTestResult(
'Parameterized Testcase One',
'Passed',
(New-TimeSpan -Seconds 1),
$null,
$null,
'Parameterized Testcase <A>',
@{ Parameter = 'One' }
)
$TestResults.AddTestResult(
'Parameterized Testcase <A>',
'Failed',
(New-TimeSpan -Seconds 1),
'Assert failed: "Expected: Test. But was: Testing"',
'at line: 28 in C:\Pester\Result.Tests.ps1',
'Parameterized Testcase <A>',
@{ Parameter = 'Two' }
)
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile -LegacyFormat
$xmlResult = [xml] (Get-Content $testFile)
It 'should write parameterized test results correctly' {
$xmlTestSuite = $xmlResult.'test-results'.'test-suite'.'results'.'test-suite'.'results'.'test-suite'
$description = $null
if ($xmlTestSuite.PSObject.Properties['description'])
{
$description = $xmlTestSuite.description
}
$xmlTestSuite.name | Should Be 'Parameterized Testcase <A>'
$description | Should BeNullOrEmpty
$xmlTestSuite.type | Should Be 'ParameterizedTest'
$xmlTestSuite.result | Should Be 'Failure'
$xmlTestSuite.success | Should Be 'False'
$xmlTestSuite.time | Should Be '2'
foreach ($testCase in $xmlTestSuite.results.'test-case')
{
$testCase.Name | Should Match '^Parameterized Testcase (One|<A>)$'
$testCase.time | Should Be 1
}
}
it 'Should validate test results against the nunit 2.5 schema' {
$schemaPath = (Get-Module -Name Pester).Path | Split-Path | Join-Path -ChildPath "nunit_schema_2.5.xsd"
$null = $xmlResult.Schemas.Add($null,$schemaPath)
{ $xmlResult.Validate({throw $args.Exception }) } | Should Not Throw
}
}
}
Describe "Write nunit test results (Newer format)" {
Setup -Dir "Results"
It "should write a successful test result" {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Mocked Describe')
$TestResults.AddTestResult("Successful testcase",'Passed',(New-TimeSpan -Seconds 1))
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile
$xmlResult = [xml] (Get-Content $testFile)
$xmlTestCase = $xmlResult.'test-results'.'test-suite'.'results'.'test-suite'.'results'.'test-case'
$xmlTestCase.name | Should Be "Mocked Describe.Successful testcase"
$xmlTestCase.result | Should Be "Success"
$xmlTestCase.time | Should Be "1"
}
It "should write a failed test result" {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Mocked Describe')
$time = [TimeSpan]25000000 #2.5 seconds
$TestResults.AddTestResult("Failed testcase",'Failed',$time,'Assert failed: "Expected: Test. But was: Testing"','at line: 28 in C:\Pester\Result.Tests.ps1')
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile
$xmlResult = [xml] (Get-Content $testFile)
$xmlTestCase = $xmlResult.'test-results'.'test-suite'.'results'.'test-suite'.'results'.'test-case'
$xmlTestCase.name | Should Be "Mocked Describe.Failed testcase"
$xmlTestCase.result | Should Be "Failure"
$xmlTestCase.time | Should Be "2.5"
$xmlTestCase.failure.message | Should Be 'Assert failed: "Expected: Test. But was: Testing"'
$xmlTestCase.failure.'stack-trace' | Should Be 'at line: 28 in C:\Pester\Result.Tests.ps1'
}
It "should write the test summary" {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Mocked Describe')
$TestResults.AddTestResult("Testcase",'Passed',(New-TimeSpan -Seconds 1))
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile
$xmlResult = [xml] (Get-Content $testFile)
$xmlTestResult = $xmlResult.'test-results'
$xmlTestResult.total | Should Be 1
$xmlTestResult.failures | Should Be 0
$xmlTestResult.date | Should Be $true
$xmlTestResult.time | Should Be $true
}
it "should write the test-suite information" {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Mocked Describe')
$TestResults.AddTestResult("Successful testcase",'Passed',[timespan]10000000) #1.0 seconds
$TestResults.AddTestResult("Successful testcase",'Passed',[timespan]11000000) #1.1 seconds
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile
$xmlResult = [xml] (Get-Content $testFile)
$xmlTestResult = $xmlResult.'test-results'.'test-suite'.results.'test-suite'
$xmlTestResult.type | Should Be "TestFixture"
$xmlTestResult.name | Should Be "Mocked Describe"
$xmlTestResult.description | Should Be "Mocked Describe"
$xmlTestResult.result | Should Be "Success"
$xmlTestResult.success | Should Be "True"
$xmlTestResult.time | Should Be 2.1
}
it "should write two test-suite elements for two describes" {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Describe #1')
$TestResults.AddTestResult("Successful testcase",'Passed',(New-TimeSpan -Seconds 1))
$TestResults.LeaveDescribe()
$testResults.EnterDescribe('Describe #2')
$TestResults.AddTestResult("Failed testcase",'Failed',(New-TimeSpan -Seconds 2))
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile
$xmlResult = [xml] (Get-Content $testFile)
$xmlTestSuite1 = $xmlResult.'test-results'.'test-suite'.results.'test-suite'[0]
$xmlTestSuite1.name | Should Be "Describe #1"
$xmlTestSuite1.description | Should Be "Describe #1"
$xmlTestSuite1.result | Should Be "Success"
$xmlTestSuite1.success | Should Be "True"
$xmlTestSuite1.time | Should Be 1.0
$xmlTestSuite2 = $xmlResult.'test-results'.'test-suite'.results.'test-suite'[1]
$xmlTestSuite2.name | Should Be "Describe #2"
$xmlTestSuite2.description | Should Be "Describe #2"
$xmlTestSuite2.result | Should Be "Failure"
$xmlTestSuite2.success | Should Be "False"
$xmlTestSuite2.time | Should Be 2.0
}
it "should write the environment information" {
$state = New-PesterState "."
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $state $testFile
$xmlResult = [xml] (Get-Content $testFile)
$xmlEnvironment = $xmlResult.'test-results'.'environment'
$xmlEnvironment.'os-Version' | Should Be $true
$xmlEnvironment.platform | Should Be $true
$xmlEnvironment.cwd | Should Be (Get-Location).Path
if ($env:Username) {
$xmlEnvironment.user | Should Be $env:Username
}
$xmlEnvironment.'machine-name' | Should Be $env:ComputerName
}
it "Should validate test results against the nunit 2.5 schema" {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Describe #1')
$TestResults.AddTestResult("Successful testcase",'Passed',(New-TimeSpan -Seconds 1))
$TestResults.LeaveDescribe()
$testResults.EnterDescribe('Describe #2')
$TestResults.AddTestResult("Failed testcase",'Failed',(New-TimeSpan -Seconds 2))
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile
$xml = [xml] (Get-Content $testFile)
$schemePath = (Get-Module -Name Pester).Path | Split-Path | Join-Path -ChildPath "nunit_schema_2.5.xsd"
$xml.Schemas.Add($null,$schemePath) > $null
{ $xml.Validate({throw $args.Exception }) } | Should Not Throw
}
it "handles special characters in block descriptions well -!@#$%^&*()_+`1234567890[];'',./""- " {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Describe -!@#$%^&*()_+`1234567890[];'',./"- #1')
$TestResults.AddTestResult("Successful testcase -!@#$%^&*()_+`1234567890[];'',./""-",'Passed',(New-TimeSpan -Seconds 1))
$TestResults.LeaveDescribe()
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile
$xml = [xml] (Get-Content $testFile)
$schemePath = (Get-Module -Name Pester).Path | Split-Path | Join-Path -ChildPath "nunit_schema_2.5.xsd"
$xml.Schemas.Add($null,$schemePath) > $null
{ $xml.Validate({throw $args.Exception }) } | Should Not Throw
}
Context 'Exporting Parameterized Tests (Newer format)' {
#create state
$TestResults = New-PesterState -Path TestDrive:\
$testResults.EnterDescribe('Mocked Describe')
$TestResults.AddTestResult(
'Parameterized Testcase One',
'Passed',
(New-TimeSpan -Seconds 1),
$null,
$null,
'Parameterized Testcase <A>',
@{Parameter = 'One'}
)
$parameters = New-Object System.Collections.Specialized.OrderedDictionary
$parameters.Add('StringParameter', 'Two')
$parameters.Add('NullParameter', $null)
$parameters.Add('NumberParameter', -42.67)
$TestResults.AddTestResult(
'Parameterized Testcase <A>',
'Failed',
(New-TimeSpan -Seconds 1),
'Assert failed: "Expected: Test. But was: Testing"',
'at line: 28 in C:\Pester\Result.Tests.ps1',
'Parameterized Testcase <A>',
$parameters
)
#export and validate the file
$testFile = "$TestDrive\Results\Tests.xml"
Export-NunitReport $testResults $testFile
$xmlResult = [xml] (Get-Content $testFile)
It 'should write parameterized test results correctly' {
$xmlTestSuite = $xmlResult.'test-results'.'test-suite'.'results'.'test-suite'.'results'.'test-suite'
$xmlTestSuite.name | Should Be 'Mocked Describe.Parameterized Testcase <A>'
$xmlTestSuite.description | Should Be 'Parameterized Testcase <A>'
$xmlTestSuite.type | Should Be 'ParameterizedTest'
$xmlTestSuite.result | Should Be 'Failure'
$xmlTestSuite.success | Should Be 'False'
$xmlTestSuite.time | Should Be '2'
$testCase1 = $xmlTestSuite.results.'test-case'[0]
$testCase2 = $xmlTestSuite.results.'test-case'[1]
$testCase1.Name | Should Be 'Mocked Describe.Parameterized Testcase One'
$testCase1.Time | Should Be 1
$testCase2.Name | Should Be 'Mocked Describe.Parameterized Testcase <A>("Two",null,-42.67)'
$testCase2.Time | Should Be 1
}
it 'Should validate test results against the nunit 2.5 schema' {
$schemaPath = (Get-Module -Name Pester).Path | Split-Path | Join-Path -ChildPath "nunit_schema_2.5.xsd"
$null = $xmlResult.Schemas.Add($null,$schemaPath)
{ $xmlResult.Validate({throw $args.Exception }) } | Should Not Throw
}
}
}
Describe "Get-TestTime" {
function Using-Culture {
param (
[Parameter(Mandatory = $true, ValueFromPipeline = $true)]
[ScriptBlock]$ScriptBlock,
[System.Globalization.CultureInfo]$Culture='en-US'
)
$oldCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture
try
{
[System.Threading.Thread]::CurrentThread.CurrentCulture = $Culture
$ExecutionContext.InvokeCommand.InvokeScript($ScriptBlock)
}
finally
{
[System.Threading.Thread]::CurrentThread.CurrentCulture = $oldCulture
}
}
It "output is culture agnostic" {
#on cs-CZ, de-DE and other systems where decimal separator is ",". value [double]3.5 is output as 3,5
#this makes some of the tests fail, it could also leak to the nUnit report if the time was output
$TestResult = New-Object -TypeName psObject -Property @{ Time = [timespan]35000000 } #3.5 seconds
#using the string formatter here to know how the string will be output to screen
$Result = { Get-TestTime -Tests $TestResult | Out-String -Stream } | Using-Culture -Culture de-DE
$Result | Should Be "3.5"
}
It "Time is measured in seconds with 0,1 millisecond as lowest value" {
$TestResult = New-Object -TypeName psObject -Property @{ Time = [timespan]1000 }
Get-TestTime -Tests $TestResult | Should Be 0.0001
$TestResult = New-Object -TypeName psObject -Property @{ Time = [timespan]100 }
Get-TestTime -Tests $TestResult | Should Be 0
$TestResult = New-Object -TypeName psObject -Property @{ Time = [timespan]1234567 }
Get-TestTime -Tests $TestResult | Should Be 0.1235
}
}
Describe "GetFullPath" {
It "Resolves non existing path correctly" {
pushd TestDrive:\
$p = GetFullPath notexistingfile.txt
popd
$p | Should Be (Join-Path $TestDrive notexistingfile.txt)
}
It "Resolves existing path correctly" {
pushd TestDrive:\
New-Item -ItemType File -Name existingfile.txt
$p = GetFullPath existingfile.txt
popd
$p | Should Be (Join-Path $TestDrive existingfile.txt)
}
It "Resolves full path correctly" {
GetFullPath C:\Windows\System32\notepad.exe | Should Be C:\Windows\System32\notepad.exe
}
}
}
# SIG # Begin signature block
# MIInXgYJKoZIhvcNAQcCoIInTzCCJ0sCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBKD7WI8pBtccjL
# Ep1BJK+QbNkIDGYkDdkUBOY1i/oaFaCCC7QwggXLMIIEs6ADAgECAhMzAAABQGf2
# mGsxCLhyAAAAAAFAMA0GCSqGSIb3DQEBCwUAMIGOMQswCQYDVQQGEwJVUzETMBEG
# A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj
# cm9zb2Z0IENvcnBvcmF0aW9uMTgwNgYDVQQDEy9NaWNyb3NvZnQgV2luZG93cyBU
# aGlyZCBQYXJ0eSBDb21wb25lbnQgQ0EgMjAxMjAeFw0yNTExMTMxOTU5NDNaFw0y
# NjExMTAxOTU5NDNaMIGEMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
# bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0
# aW9uMS4wLAYDVQQDEyVNaWNyb3NvZnQgV2luZG93cyAzcmQgcGFydHkgQ29tcG9u
# ZW50MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEArGt4Hrjs3D7+IIab
# GkPGtg4XeWQFi8nKsdeF+N6nkYF9wsmw0qPk4OovEiJnCSRiEtLfYy3Icn4iOp7L
# 24oCa0zlgYCND3OnNfYOuVpMsq3CSkXYg3H+VMiB11hOLcctTu4RWy4ZRKsL5NVI
# AduJFgd/1Qs2mQpUuOyFfLKhu/+Z+T2c9YALxsfnPvqn8Tn8Tt8wdZuFwz7kK3jl
# e2T3YBofybAR2aH678TnOxhLe2/hEpTdKaVfcqyrIX0Mw/LwqEJnj4G8amBbQ7OG
# RnKm1VNd4nMpRt1SflNlVo1Q3Qqnj9K6mSPw99YGMCTaVr6jKPylsWyW4nsvu8m0
# MbBJJiLOi0sOTHtwQEVcBH6WM7xbODqwPaklS1wDbED1wfzImIUR8WsXJVjDm7Fg
# x4JDo8oLIjKFrEvzBfrYWsvlDg8p9XgR7EB/IJwXGuJbFzo/S+r3D5DkUZXX/72k
# XA4FeRJAgLePAuGChPvyQiLtKJeJm9ftJeukrIcs7JpJVHObAgMBAAGjggGoMIIB
# pDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUB9FDBUZ0W11vsv6qqb9t
# vKspCIowRQYDVR0RBD4wPKQ6MDgxHjAcBgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3Jh
# dGlvbjEWMBQGA1UEBRMNMjMwODA5KzUwNjIyOTAfBgNVHSMEGDAWgBRhcaeHr/9p
# 1SF2T1KTKAC+eRKrhDB0BgNVHR8EbTBrMGmgZ6BlhmNodHRwOi8vd3d3Lm1pY3Jv
# c29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBXaW5kb3dzJTIwVGhpcmQl
# MjBQYXJ0eSUyMENvbXBvbmVudCUyMENBJTIwMjAxMi5jcmwwgYEGCCsGAQUFBwEB
# BHUwczBxBggrBgEFBQcwAoZlaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9w
# cy9jZXJ0cy9NaWNyb3NvZnQlMjBXaW5kb3dzJTIwVGhpcmQlMjBQYXJ0eSUyMENv
# bXBvbmVudCUyMENBJTIwMjAxMi5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0B
# AQsFAAOCAQEAmFzJPKhkAXPOcfy9S4q1nP3XCvmABVGv/VRzFZ1e+oVtVzOFkbZ6
# osY1OpZqa9CEvtgcrtciv1y9mV1SpxAMwfEqq+Nhw2GdZ3IWqFzWFsEe2S9U196s
# XRIRIxglZMBWyzdy8rQ+P7L2+LciW4qcaw2wtv6YoI0q1isgk0t1OF5kEL0t9hhx
# UrBavTdoqZ3b5JtwDqzmIsxuLtGbE9Pqbz2gx/me+7yduYpIcYlmEmPQkg3gmWkZ
# lnSRePu7/5RXS2TGW1O5JP8aqVcMn0ZkHEhtT368pE/CxQVAkAYHNz6+enP9n+HC
# 2udu395c0fVlRHy/d53f32RukfbjakH8uzCCBeEwggPJoAMCAQICCmELqsEAAAAA
# AAkwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo
# aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
# cG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRpZmljYXRlIEF1
# dGhvcml0eSAyMDEwMB4XDTEyMDQxODIzNDgzOFoXDTI3MDQxODIzNTgzOFowgY4x
# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xODA2BgNVBAMTL01p
# Y3Jvc29mdCBXaW5kb3dzIFRoaXJkIFBhcnR5IENvbXBvbmVudCBDQSAyMDEyMIIB
# IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo5wwhAmnYy7PCkfw6iT5ozAg
# D15XMSaBmjEHslDUzmcJCGUKWqVLrtXtEC7npZm1n2gvmItYAqwgtCnEcb0oHKX9
# PJtk5MXr32ElvPDuaL/Rp8t+KgKBTmRcDFOGeVcZN2G3mPkMoE4iWZv5Gy1nPCc8
# VpBm4/1/ZX0Phr01R+iKzPTajulqTqunVeyiiR7VM0VTy/med73NLPkFuH90AR3o
# +xjhQ9EN6arcN2+9/rgP7R1NAUZOCqz8gujsVoMTjjoB7RRkdOpksmYQtmhtyHAA
# fVBILj1D7uAklcbNjsf9uOSVz91++5VeoQHNQ7EH16Qw7puGGipuwQtZonRviwID
# AQABo4IBQzCCAT8wEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFGFxp4ev/2nV
# IXZPUpMoAL55EquEMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQE
# AwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQ
# W9fOmhjEMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNv
# bS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNybDBa
# BggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0
# LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MA0GCSqG
# SIb3DQEBCwUAA4ICAQBaimfazNX9DSZBd78KRni0s94SaSt3I8JlLwFf0gP0YbpQ
# nS6MOXLzbD5qsR52bey384LczLvFaXAoc2YXP1Tr7gEWSMRG2RuAroE6jQ95bWiw
# nuotPznTyjh+vV58CG4Z3MbC9DgzaGHiUkeD4QABVtK6y4eCBTEKQYtO539fX+1f
# 0zktReuiE7/9HsKYQXFhFl/ICnAlfFlpMSTkcecKuwQX959yHsnSuxq+PQL+CQyy
# Q7RZGplTk5YhX+DWtyYBQpU2rCf9vvSFd2g9GL30vpiIIhGGUhbzRewDlxBwh6Nw
# Q3E828mGAxcM9XNbxn3hXGTt18VI1+0y4tGq08+n9ldOYfl362fyiLPeANoDj9CK
# NDc+HdhiuNKx8+Evi3I7gZZ8b/zsZnZyYBsk8qCJbVttAC7vKN2GhwXCtLnlvmTC
# KvJKFVyY4sQnhf9S42J+D7ICC9dmxwqy0z0gBBRQMlmDCn2b7Vo4EgFSui9eIHKO
# SvH953ECjDvhB77Jc/TdR9i077SkszC5iT52yrkAmFZ+q+qKuKXQOKtpdxMLFC/p
# qkEf97q9Ois0iu4Kq2PmY/eIJI4gDSs7nePCSVKsnx8OOTtd1G5QauZ9UjqqfDMV
# KQ0mXgFYp06pPXqEb3Q/YJ/kMk82AK9tcdM+pkZlX4F08f7BcdpMoEFagt3xHzGC
# GwAwghr8AgEBMIGmMIGOMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
# bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0
# aW9uMTgwNgYDVQQDEy9NaWNyb3NvZnQgV2luZG93cyBUaGlyZCBQYXJ0eSBDb21w
# b25lbnQgQ0EgMjAxMgITMwAAAUBn9phrMQi4cgAAAAABQDANBglghkgBZQMEAgEF
# AKCB+jAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAvBgkqhkiG9w0BCQQxIgQg
# C0Ks46ZT58jpdBsRRqtdYH41Ska1tmmHIJ/c2UqMR8AwUAYKKwYBBAGCNwoDHDFC
# DEA4MDM4NjJEM0Y0NUYxRUQ0RDRDMTY1QkE2MDE3RTdEQkQwMEUxRkVDQTBFNTE1
# MkM5QTQ0RDk0RDY5RjU3RTNCMFoGCisGAQQBgjcCAQwxTDBKoCSAIgBNAGkAYwBy
# AG8AcwBvAGYAdAAgAFcAaQBuAGQAbwB3AHOhIoAgaHR0cDovL3d3dy5taWNyb3Nv
# ZnQuY29tL3dpbmRvd3MwDQYJKoZIhvcNAQEBBQAEggGAgipGB/iSAN2lqCW7LVrr
# 9RvLJw3MQY3pGChoo3t5BNWxkljuSPaVV1Oq7/9y7uoMAdM7LSLPMr79hxMO8cZy
# xr3hnlhRYWQhyoC5kAATKuR38Z/Qr9MUQZKANDKmbY1Yiy5uOCsbrgpbomSTZGof
# re8DxGtr2ChzEUXsThB1ggOudrNHIFlcY5uRvwBeUNm+1ROuEcP5GQQma1ZwyUMT
# 9pqmiAjSy+ldk150GK34T8sqTYjyCisAuBx+CppXQdESygG0laEQe4nbicxWlq8A
# VTLtdUYged+ntMzW7LtLUCvhAuv8aQJYTwUaCisgv8y/fk3AM/T9F9XjyisxUWwl
# 7ID8wdcV6pCqaUOyuMYHAw/1OhWVJhM7t0h9jbi5Sd+hV0pzn2N7j8oYKfCdmEsa
# TxI6aI7lusBB+lmX+9b8c0YMt94PHq4FhfSSX8zpgwv2Pv8b/N30B/Tuw/x8Hd9y
# cuIthumjfroT9dFltJLF0UVj8XvcHoUsYxMA+LLqO2oooYIXrTCCF6kGCisGAQQB
# gjcDAwExgheZMIIXlQYJKoZIhvcNAQcCoIIXhjCCF4ICAQMxDzANBglghkgBZQME
# AgEFADCCAVoGCyqGSIb3DQEJEAEEoIIBSQSCAUUwggFBAgEBBgorBgEEAYRZCgMB
# MDEwDQYJYIZIAWUDBAIBBQAEIEeFPR9i9K3RQjeLpRA1PLNfhuz+I/xjrZ5IhqQ9
# BVgyAgZqiebfBWAYEzIwMjYwOTA1MjI1NzE1Ljg5NFowBIACAfSggdmkgdYwgdMx
# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLTArBgNVBAsTJE1p
# Y3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGltaXRlZDEnMCUGA1UECxMeblNo
# aWVsZCBUU1MgRVNOOjY1MUEtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQg
# VGltZS1TdGFtcCBTZXJ2aWNloIIR+zCCBygwggUQoAMCAQICEzMAAAIVGAPTgQcm
# fFMAAQAAAhUwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
# Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
# dCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENB
# IDIwMTAwHhcNMjUwODE0MTg0ODIwWhcNMjYxMTEzMTg0ODIwWjCB0zELMAkGA1UE
# BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc
# BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0
# IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMScwJQYDVQQLEx5uU2hpZWxkIFRT
# UyBFU046NjUxQS0wNUUwLUQ5NDcxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0
# YW1wIFNlcnZpY2UwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDDcdXe
# FXEvSURg9XTdd40pnnXtUhuB7GGUM92lfANLQFi3E/CLhdillHWV3S7pyvZeO66B
# 2DnQNTHlYcvRCFjZ32+QlKTTasT/vmFwq33WbYiHbztBHFEyYW7cEXrjrqTyqnm5
# e197q5yKrj1hpLyn53O/e5NqsPiFDxRPstr3mk4mJGrHF3So4YsQK8csRc9eKg1L
# H2nKHOGbqW3t7MvEl4VVi3FKGRq8+hk3R04KJh6HgqCgqjJqDMy5KIsKIxRbhR7h
# CybrnwUk0ZM2HtXmpdhUDqTnGPDlZ5Z0o7PSL0DmMFxtj19U6j9wDyLVvK3NwNPF
# vedy1yXLz85h42y2Rpv8iyrcLF7W+r3p8gcTX5kaYmORrWyh3Co/JxWn/a1v4GO6
# U8vkPquBRdM8XzhTzZEsodXntsHx8dGmCeNxYFC5c+BV5JekRFaKa3Q0XaUI4vOq
# Cu9L+9ip17kuf1iUoqEBn/EMTRMsgivr4j/YlO1c/fid+NMQ1WowEhJZxqQjEDAZ
# vdEHnIcLHKcgU1Utx8oCwR0LlTZ6bR8C+ZW/Syieqe/Xty5piLZ4ItaGgrUhzzkP
# Duz+WFxesGljif9GXmXfAfOzi84iG7zsMjLlBRoS6kSzJjQ1aqAjgFaXq/XCCx76
# XwNYV5Reh+FS4KBVO5Mc3cryJ2gxufxDd51QgQIDAQABo4IBSTCCAUUwHQYDVR0O
# BBYEFIkhd/FyoDAWoaP2N3BC11Kpp2PXMB8GA1UdIwQYMBaAFJ+nFV0AXmJdg/Tl
# 0mWnG1M1GelyMF8GA1UdHwRYMFYwVKBSoFCGTmh0dHA6Ly93d3cubWljcm9zb2Z0
# LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFRpbWUtU3RhbXAlMjBQQ0ElMjAy
# MDEwKDEpLmNybDBsBggrBgEFBQcBAQRgMF4wXAYIKwYBBQUHMAKGUGh0dHA6Ly93
# d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwVGltZS1T
# dGFtcCUyMFBDQSUyMDIwMTAoMSkuY3J0MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/
# BAwwCgYIKwYBBQUHAwgwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IC
# AQB3jYe1X6QZu/HMsFMLk7u+QIgE/L8HCmMLN4vneECIQ55un5V02fCb0ZUJ9irc
# ox+uPhS8pBNQBpLlmTB7WC9neWNJKcI7JLk7A2712mDfDD5BbZ45xIuTJUBYWsuf
# oiKDdML/NYy9WGpe10WEbYonWVJs3bbZyxjcTf8GsaW4CW8RP2CbFXLLE3Ln3/sk
# XnMgZwmJvJ3Gz3gkvUG0+Bck59nND7/eJNzp4O2ZpZPoMp2cmhynzCRcpY8iwER+
# QPqTVCK3C+3SYes5FqHvlKN5w4q3ihZrJUuQ9OGjXZ7SieASDVyN7l/FJka2Gsyt
# Yq8jhHscQLuTyZof148DdWIfQJVJI559o9MYzMiEcKjmneMblIxzI7d4D24RphAk
# hMmUsbcHDAabKljsL/z+ePVI6GDHUeAnTLA4kv3F8/gA5xaYJ9uyqAZsJoLtYfmw
# g13N8xqvxXtg0WqRsIZQqFzwakjIT4wqfJWffeOy5oYCU1GDt1VFRKhgsnG9SzD0
# Y7DIGkHBsT2yo4ub4ew7TSgXbc8yKjtYVdwVNkCOne6OKEEB8utcgKAY4c92RnTj
# a7Utmo5yeWvdfO+Ax76Y8/Jqxbx/Su3MmPdXkT8QqLJCU/GP0x+rbH2GKaeVdYZk
# JU94QFE6s1sNgF9rNPIs0I5OxG2Sw5JXcUG0+elC0s3vnjCCB3EwggVZoAMCAQIC
# EzMAAAAVxedrngKbSZkAAAAAABUwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYT
# AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD
# VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBS
# b290IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTIxMDkzMDE4MjIyNVoX
# DTMwMDkzMDE4MzIyNVowfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0
# b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
# dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwggIi
# MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDk4aZM57RyIQt5osvXJHm9DtWC
# 0/3unAcH0qlsTnXIyjVX9gF/bErg4r25PhdgM/9cT8dm95VTcVrifkpa/rg2Z4VG
# Iwy1jRPPdzLAEBjoYH1qUoNEt6aORmsHFPPFdvWGUNzBRMhxXFExN6AKOG6N7dcP
# 2CZTfDlhAnrEqv1yaa8dq6z2Nr41JmTamDu6GnszrYBbfowQHJ1S/rboYiXcag/P
# XfT+jlPP1uyFVk3v3byNpOORj7I5LFGc6XBpDco2LXCOMcg1KL3jtIckw+DJj361
# VI/c+gVVmG1oO5pGve2krnopN6zL64NF50ZuyjLVwIYwXE8s4mKyzbnijYjklqwB
# Sru+cakXW2dg3viSkR4dPf0gz3N9QZpGdc3EXzTdEonW/aUgfX782Z5F37ZyL9t9
# X4C626p+Nuw2TPYrbqgSUei/BQOj0XOmTTd0lBw0gg/wEPK3Rxjtp+iZfD9M269e
# wvPV2HM9Q07BMzlMjgK8QmguEOqEUUbi0b1qGFphAXPKZ6Je1yh2AuIzGHLXpyDw
# wvoSCtdjbwzJNmSLW6CmgyFdXzB0kZSU2LlQ+QuJYfM2BjUYhEfb3BvR/bLUHMVr
# 9lxSUV0S2yW6r1AFemzFER1y7435UsSFF5PAPBXbGjfHCBUYP3irRbb1Hode2o+e
# FnJpxq57t7c+auIurQIDAQABo4IB3TCCAdkwEgYJKwYBBAGCNxUBBAUCAwEAATAj
# BgkrBgEEAYI3FQIEFgQUKqdS/mTEmr6CkTxGNSnPEP8vBO4wHQYDVR0OBBYEFJ+n
# FV0AXmJdg/Tl0mWnG1M1GelyMFwGA1UdIARVMFMwUQYMKwYBBAGCN0yDfQEBMEEw
# PwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9j
# cy9SZXBvc2l0b3J5Lmh0bTATBgNVHSUEDDAKBggrBgEFBQcDCDAZBgkrBgEEAYI3
# FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAf
# BgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvXzpoYxDBWBgNVHR8ETzBNMEugSaBH
# hkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNS
# b29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUF
# BzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0Nl
# ckF1dF8yMDEwLTA2LTIzLmNydDANBgkqhkiG9w0BAQsFAAOCAgEAnVV9/Cqt4Swf
# ZwExJFvhnnJL/Klv6lwUtj5OR2R4sQaTlz0xM7U518JxNj/aZGx80HU5bbsPMeTC
# j/ts0aGUGCLu6WZnOlNN3Zi6th542DYunKmCVgADsAW+iehp4LoJ7nvfam++Kctu
# 2D9IdQHZGN5tggz1bSNU5HhTdSRXud2f8449xvNo32X2pFaq95W2KFUn0CS9QKC/
# GbYSEhFdPSfgQJY4rPf5KYnDvBewVIVCs/wMnosZiefwC2qBwoEZQhlSdYo2wh3D
# YXMuLGt7bj8sCXgU6ZGyqVvfSaN0DLzskYDSPeZKPmY7T7uG+jIa2Zb0j/aRAfbO
# xnT99kxybxCrdTDFNLB62FD+CljdQDzHVG2dY3RILLFORy3BFARxv2T5JL5zbcqO
# Cb2zAVdJVGTZc9d/HltEAY5aGZFrDZ+kKNxnGSgkujhLmm77IVRrakURR6nxt67I
# 6IleT53S0Ex2tVdUCbFpAUR+fKFhbHP+CrvsQWY9af3LwUFJfn6Tvsv4O+S3Fb+0
# zj6lMVGEvL8CwYKiexcdFYmNcP7ntdAoGokLjzbaukz5m/8K6TT4JDVnK+ANuOaM
# mdbhIurwJ0I9JZTmdHRbatGePu1+oDEzfbzL6Xu/OHBE0ZDxyKs6ijoIYn/ZcGNT
# TY3ugm2lBRDBcQZqELQdVTNYs6FwZvKhggNWMIICPgIBATCCAQGhgdmkgdYwgdMx
# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLTArBgNVBAsTJE1p
# Y3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGltaXRlZDEnMCUGA1UECxMeblNo
# aWVsZCBUU1MgRVNOOjY1MUEtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQg
# VGltZS1TdGFtcCBTZXJ2aWNloiMKAQEwBwYFKw4DAhoDFQCPp5N6Nu5gTUh+Nt+u
# 3q1d68JRIKCBgzCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5n
# dG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y
# YXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMA0G
# CSqGSIb3DQEBCwUAAgUA7kbY1TAiGA8yMDI2MDkwNTE4MDcxN1oYDzIwMjYwOTA2
# MTgwNzE3WjB0MDoGCisGAQQBhFkKBAExLDAqMAoCBQDuRtjVAgEAMAcCAQACAiXg
# MAcCAQACAhKHMAoCBQDuSCpVAgEAMDYGCisGAQQBhFkKBAIxKDAmMAwGCisGAQQB
# hFkKAwKgCjAIAgEAAgMHoSChCjAIAgEAAgMBhqAwDQYJKoZIhvcNAQELBQADggEB
# AGCHA8KbiciU1h1l+bDafTQ/h8rHiXKQ6c9WiVleKTqp2L7pC6rvPKWntnw5ZBQw
# FR9I1iwS/icXj4WzD9xnj+ch8O96S1OB9IcbqX0A+0T9Qa4hEqBelt8ZipRwsN98
# KzQVw8A9b6lsb5jitrQyOw5SUDeUh5X0IBslR9Cq5U3ZlKXX/VfTmsouuM/+gC6w
# cY1l9RDgBuWgAFSeZKyhsd8lHABuFMBjiVsRrAGkbgmYgr97HWqRe5mQ/TwjFxBY
# rLiyVGPUNMQLWEOoJcbxnYjxaIfwfgHEjNFgKWNfeO6agECzvoRhGXNh3HYhO1EC
# RrnHXaXB2J0i+ix2hrXMD0wxggQNMIIECQIBATCBkzB8MQswCQYDVQQGEwJVUzET
# MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV
# TWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1T
# dGFtcCBQQ0EgMjAxMAITMwAAAhUYA9OBByZ8UwABAAACFTANBglghkgBZQMEAgEF
# AKCCAUowGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJBDEi
# BCAt6cymtED1yPG6MI02mQyqLqBIh/gBfCkn0jSQfB5fqTCB+gYLKoZIhvcNAQkQ
# Ai8xgeowgecwgeQwgb0EIHAQ9HY8OtMUtyu1CwqtSLujPkk1EIX8pEcyKFI17uyK
# MIGYMIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
# BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEm
# MCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAAIVGAPT
# gQcmfFMAAQAAAhUwIgQgsew0sIsb+w39LQYRP+DL5wY/NRQPRmx45PLi25yYILsw
# DQYJKoZIhvcNAQELBQAEggIAOdAHE4PYB3Lt9ojRKFoNzL6HZlxndC0zHrVxigW+
# AMJKDmOv5CNbcb2Zs2ntTuazkTpXkM81kuvFelbKTHhyROt7lIhhJsGdmwjzU3Xa
# n2bJnepMrV3c6WavQnLR3mI0ufKMQNP4fQpSwwkZYQ6jbyJcycXXyM8JJFsp3vRJ
# 6YDz5mbDqD5vOXECke0TiA2rz2seVV3dM99wuWgTT64nVvr86ZFTndA2Ha82l74b
# E61AOo8jN7zCCcZ47w+fl3FpM4g1KpSNIXhug299vgQo6SJ6Hb3edzEHcqw6xQMo
# c9wmJ5i4cOX8XmH+RNMuizt3Fst/MZAHCfZFxJPzhrtnsPnaeiQ5YK9NPld9TUtL
# 9FUNEJsR9Y/Lw7q5BxeVZ66+++UvVth7PDflMihJXHvpjPJ65D26x6ruLSEzqV1n
# b9L0fkvCsdDednxU6wEkyfiXw2HTTb2XdyRWh36u+DkQg+LUci+b+nHGiNnLiIN/
# UJChkDh9tGnxRmOiK2pxtA/f8isLDuQDBvsFzPcBnhAynoxiHSqF9SmbvRSDr3gD
# HVAzr7fekOLOIBYP16rfSFoF6g9MY9bGBiJkWVVdhQl2Rdde7IwX6jw3PRCfMZVn
# dy+kKuyASDkW8WDH4gp8cn7Cao3P1hLltMb8dAZnMUtuC60y8fi1O/NrPxHZBYjx
# byw=
# SIG # End signature block