Private/ParseJsonString.ps1
# ParseJsonString converts from string to PowerShell objects # (workaround to overcome ConvertFrom-Json limitation on PowerShell 4.0 and earlier) # Based on code by Florian Feldhaus at 'ConvertFrom-Json max length' # https://stackoverflow.com/questions/16854057/convertfrom-json-max-length # With the following changes: # - ParseJsonString calls ParseItem, not ParseJsonObject (suggested by Dmitry Lobanov) # - if-else test in ParseJsonObject is replaced by '$parsedItem = ParseItem $item' # Note: this code is much slower than ConvertFrom-Json Add-Type -Assembly System.Web.Extensions # .NET JSON Serializer $javaScriptSerializer = New-Object System.Web.Script.Serialization.JavaScriptSerializer $javaScriptSerializer.MaxJsonLength = [System.Int32]::MaxValue $javaScriptSerializer.RecursionLimit = 99 # Functions necessary to parse JSON output from .NET serializer to PowerShell Objects function ParseItem($jsonItem) { if($jsonItem.PSObject.TypeNames -match "Array") { return ParseJsonArray($jsonItem) } elseif($jsonItem.PSObject.TypeNames -match "Dictionary") { return ParseJsonObject([HashTable]$jsonItem) } else { return $jsonItem } } function ParseJsonObject($jsonObj) { $result = New-Object -TypeName PSCustomObject foreach ($key in $jsonObj.Keys) { $item = $jsonObj[$key] $parsedItem = ParseItem $item $result | Add-Member -MemberType NoteProperty -Name $key -Value $parsedItem } return $result } function ParseJsonArray($jsonArray) { $result = @() $jsonArray | ForEach-Object { $result += , (ParseItem $_) } return $result } function ParseJsonString($json) { $config = $javaScriptSerializer.DeserializeObject($json) return ParseItem($config) } # SIG # Begin signature block # MIIdhwYJKoZIhvcNAQcCoIIdeDCCHXQCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUrXQEvaxdyNT7aRhxjQ/dFKXe # yAegghhjMIIE3jCCA8agAwIBAgITMwAAAVs1WiafYIVg/AAAAAABWzANBgkqhkiG # 9w0BAQUFADB3MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G # A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEw # HwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EwHhcNMTkxMjE5MDExMzA1 # WhcNMjEwMzE3MDExMzA1WjCBzjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp # bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw # b3JhdGlvbjEpMCcGA1UECxMgTWljcm9zb2Z0IE9wZXJhdGlvbnMgUHVlcnRvIFJp # Y28xJjAkBgNVBAsTHVRoYWxlcyBUU1MgRVNOOjMyQkQtRTNENS0zQjFEMSUwIwYD # VQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNlMIIBIjANBgkqhkiG9w0B # AQEFAAOCAQ8AMIIBCgKCAQEArElLEu/9QqeW207HJEwTD7omCt3Xcu4U5VwFXfWl # ISARVzK+xf7eThxGU7pxM6zi9fvQl0UjUzS2QCXyE/7IZDiiRBEjnpQZ/B5MOK/H # e1TFewVybrUXP7jACbN6eezxBuL8c2JnBiJGdN8O5fCyT9vyw9bqC7efCVTfra/s # G0oM4+JibMipA9FTq00X7IUmjIzwIt2K4hdnt1gAHE8WNHXMua8wd0ao2Hf0+jLe # 1bqzLK2JnhdJB9g8Ja9mPlopIYT4t4p5TPXPm4JaBRVonQTVeNZUHGU9c8QRFfZm # rhpp69eWoHnZPX21uVudV7kkh/ZufQER9XJ/5snQpN/14wIDAQABo4IBCTCCAQUw # HQYDVR0OBBYEFM2ge4hOgBpcuZDdFVE9iWZJxgDeMB8GA1UdIwQYMBaAFCM0+NlS # RnAK7UD7dvuzK7DDNbMPMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly9jcmwubWlj # cm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY3Jvc29mdFRpbWVTdGFtcFBD # QS5jcmwwWAYIKwYBBQUHAQEETDBKMEgGCCsGAQUFBzAChjxodHRwOi8vd3d3Lm1p # Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jvc29mdFRpbWVTdGFtcFBDQS5jcnQw # EwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZIhvcNAQEFBQADggEBAGzeXXm6u0Mw # pEckc5+vcGmTgUfHJVhdGVg1alKCyfS84WWC7KTAZgYiG82twQpWlgCX1dKXafIN # +ttGlvDFPCmDy5jfo47FMbgmx9q63uvyEVw0NkE1TUO5uMJlKKIrtYLPRujWLdsX # GkMwWfCbLFscBtzXaBPCjpNUyz8wAUSL8H601pyW7U1c8t5HGoHsBHgq9TrkFPVX # zjHy3B+TrUfOrwxRi13xadorjbHc71y/gXQ56U4wqEYPqjVw8IPvxN9yptU26Rxq # +iW9XpfyA6ioi0JjWLpFfXZmn0jJgOFDo1/Ky32HhBg2cxfuU84gQZbm3Ifh00l4 # I5n3CabokIEwggX0MIID3KADAgECAhMzAAABhk0hdaDZB74sAAAAAAGGMA0GCSqG # SIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAw # DgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x # KDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwHhcNMjAw # MzA0MTgzOTQ2WhcNMjEwMzAzMTgzOTQ2WjB0MQswCQYDVQQGEwJVUzETMBEGA1UE # CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z # b2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNyb3NvZnQgQ29ycG9yYXRpb24w # ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC49eyyaaieg3Xb7ew+/hA3 # 4gqzRuReb9svBF6N3+iLD5A0iMddtunnmbFVQ+lNWphf/xOGef5vXMMMk744txo/ # kT6CKq0GzV+IhAqDytjH3UgGhLBNZ/UWuQPgrnhwafQ3ZclsXo1lto4pyps4+X3R # yQfnxCwqtjRxjCQ+AwIzk0vSVFnId6AwbB73w2lJ+MC+E6nVmyvikp7DT2swTF05 # JkfMUtzDosktz/pvvMWY1IUOZ71XqWUXcwfzWDJ+96WxBH6LpDQ1fCQ3POA3jCBu # 3mMiB1kSsMihH+eq1EzD0Es7iIT1MlKERPQmC+xlK+9pPAw6j+rP2guYfKrMFr39 # AgMBAAGjggFzMIIBbzAfBgNVHSUEGDAWBgorBgEEAYI3TAgBBggrBgEFBQcDAzAd # BgNVHQ4EFgQUhTFTFHuCaUCdTgZXja/OAQ9xOm4wRQYDVR0RBD4wPKQ6MDgxHjAc # BgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEWMBQGA1UEBRMNMjMwMDEyKzQ1 # ODM4NDAfBgNVHSMEGDAWgBRIbmTlUAXTgqoXNzcitW2oynUClTBUBgNVHR8ETTBL # MEmgR6BFhkNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWND # b2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3JsMGEGCCsGAQUFBwEBBFUwUzBRBggr # BgEFBQcwAoZFaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9N # aWNDb2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3J0MAwGA1UdEwEB/wQCMAAwDQYJ # KoZIhvcNAQELBQADggIBAEDkLXWKDtJ8rLh3d7XP1xU1s6Gt0jDqeHoIpTvnsREt # 9MsKriVGKdVVGSJow1Lz9+9bINmPZo7ZdMhNhWGQQnEF7z/3czh0MLO0z48cxCrj # Lch0P2sxvtcaT57LBmEy+tbhlUB6iz72KWavxuhP5zxKEChtLp8gHkp5/1YTPlvR # YFrZr/iup2jzc/Oo5N4/q+yhOsRT3KJu62ekQUUPsPU2bWsaF/hUPW/L2O1Fecf+ # 6OOJLT2bHaAzr+EBAn0KAUiwdM+AUvasG9kHLX+IXXlEZvfsXGzzxFlWzNbpM99u # mWWMQPTGZPpSCTDDs/1Ci0Br2/oXcgayYLaZCWsj1m/a0V8OHZGbppP1RrBeLQKf # ATjtAl0xrhMr4kgfvJ6ntChg9dxy4DiGWnsj//QywUs1UxVchRR7eFaP3M8/BV0e # eMotXwTNIwzSd3uAzAI+NSrN5pVlQeC0XXTueeDuxDch3S5UUdDOvdlOdlRAa+85 # Si6HmEUgx3j0YYSC1RWBdEhwsAdH6nXtXEshAAxf8PWh2wCsczMe/F4vTg4cmDsB # TZwwrHqL5krX++s61sLWA67Yn4Db6rXV9Imcf5UMCq09wJj5H93KH9qc1yCiJzDC # tbtgyHYXAkSHQNpoj7tDX6ko9gE8vXqZIGj82mwDTAY9ofRH0RSMLJqpgLrBPCKN # MIIGBzCCA++gAwIBAgIKYRZoNAAAAAAAHDANBgkqhkiG9w0BAQUFADBfMRMwEQYK # CZImiZPyLGQBGRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYD # VQQDEyRNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDcw # NDAzMTI1MzA5WhcNMjEwNDAzMTMwMzA5WjB3MQswCQYDVQQGEwJVUzETMBEGA1UE # CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z # b2Z0IENvcnBvcmF0aW9uMSEwHwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQ # Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCfoWyx39tIkip8ay4Z # 4b3i48WZUSNQrc7dGE4kD+7Rp9FMrXQwIBHrB9VUlRVJlBtCkq6YXDAm2gBr6Hu9 # 7IkHD/cOBJjwicwfyzMkh53y9GccLPx754gd6udOo6HBI1PKjfpFzwnQXq/QsEIE # ovmmbJNn1yjcRlOwhtDlKEYuJ6yGT1VSDOQDLPtqkJAwbofzWTCd+n7Wl7PoIZd+ # +NIT8wi3U21StEWQn0gASkdmEScpZqiX5NMGgUqi+YSnEUcUCYKfhO1VeP4Bmh1Q # CIUAEDBG7bfeI0a7xC1Un68eeEExd8yb3zuDk6FhArUdDbH895uyAc4iS1T/+QXD # wiALAgMBAAGjggGrMIIBpzAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQjNPjZ # UkZwCu1A+3b7syuwwzWzDzALBgNVHQ8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAw # gZgGA1UdIwSBkDCBjYAUDqyCYEBWJ5flJRP8KuEKU5VZ5KShY6RhMF8xEzARBgoJ # kiaJk/IsZAEZFgNjb20xGTAXBgoJkiaJk/IsZAEZFgltaWNyb3NvZnQxLTArBgNV # BAMTJE1pY3Jvc29mdCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eYIQea0WoUqg # pa1Mc1j0BxMuZTBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLm1pY3Jvc29m # dC5jb20vcGtpL2NybC9wcm9kdWN0cy9taWNyb3NvZnRyb290Y2VydC5jcmwwVAYI # KwYBBQUHAQEESDBGMEQGCCsGAQUFBzAChjhodHRwOi8vd3d3Lm1pY3Jvc29mdC5j # b20vcGtpL2NlcnRzL01pY3Jvc29mdFJvb3RDZXJ0LmNydDATBgNVHSUEDDAKBggr # BgEFBQcDCDANBgkqhkiG9w0BAQUFAAOCAgEAEJeKw1wDRDbd6bStd9vOeVFNAbEu # dHFbbQwTq86+e4+4LtQSooxtYrhXAstOIBNQmd16QOJXu69YmhzhHQGGrLt48ovQ # 7DsB7uK+jwoFyI1I4vBTFd1Pq5Lk541q1YDB5pTyBi+FA+mRKiQicPv2/OR4mS4N # 9wficLwYTp2OawpylbihOZxnLcVRDupiXD8WmIsgP+IHGjL5zDFKdjE9K3ILyOpw # Pf+FChPfwgphjvDXuBfrTot/xTUrXqO/67x9C0J71FNyIe4wyrt4ZVxbARcKFA7S # 2hSY9Ty5ZlizLS/n+YWGzFFW6J1wlGysOUzU9nm/qhh6YinvopspNAZ3GmLJPR5t # H4LwC8csu89Ds+X57H2146SodDW4TsVxIxImdgs8UoxxWkZDFLyzs7BNZ8ifQv+A # eSGAnhUwZuhCEl4ayJ4iIdBD6Svpu/RIzCzU2DKATCYqSCRfWupW76bemZ3KOm+9 # gSd0BhHudiG/m4LBJ1S2sWo9iaF2YbRuoROmv6pH8BJv/YoybLL+31HIjCPJZr2d # HYcSZAI9La9Zj7jkIeW1sMpjtHhUBdRBLlCslLCleKuzoJZ1GtmShxN1Ii8yqAhu # oFuMJb+g74TKIdbrHk/Jmu5J4PcBZW+JC33Iacjmbuqnl84xKf8OxVtc2E0bodj6 # L54/LlUWa8kTo/0wggd6MIIFYqADAgECAgphDpDSAAAAAAADMA0GCSqGSIb3DQEB # CwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE # BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYD # VQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAxMTAe # Fw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDlaMH4xCzAJBgNVBAYTAlVTMRMw # EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN # aWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNp # Z25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCr # 8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgGOBoESbp/wwwe3TdrxhLYC/A4 # wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S35tTsgosw6/ZqSuuegmv15ZZ # ymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jzy23zOlyhFvRGuuA4ZKxuZDV4 # pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/74ytaEB9NViiienLgEjq3SV7Y # 7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2uM1jFtz7+MtOzAz2xsq+SOH7S # nYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33X/DQUr+MlIe8wCF0JV8YKLbM # Jyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIlXdMhSz5SxLVXPyQD8NF6Wy/V # I+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP6SNJvBi4RHxF5MHDcnrgcuck # 379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLBl4F77dbtS+dJKacTKKanfWeA # 5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGFRInECUzF1KVDL3SV9274eCBY # LBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiMCwIDAQABo4IB7TCCAekwEAYJ # KwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQBdOCqhc3NyK1bajKdQKVMBkG # CSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8E # BTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO4eqnxzHRI4k0MFoGA1UdHwRT # MFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1 # Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18yMi5jcmwwXgYIKwYBBQUHAQEE # UjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2Nl # cnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18yMi5jcnQwgZ8GA1UdIASBlzCB # lDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jv # c29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNwcy5odG0wQAYIKwYBBQUHAgIw # NB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkAXwBzAHQAYQB0AGUAbQBlAG4A # dAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY4FR5Gi7T2HRnIpsLlhHhY5KZ # QpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj82nbY78iNaWXXWWEkH2LRlBV # 2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUdd5Q54ulkyUQ9eHoj8xN9ppB0 # g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJYx8JaW5amJbkg/TAj/NGK978 # O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYfwzIY4vDFLc5bnrRJOQrGCsLG # ra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJaG5vp7d0w0AFBqYBKig+gj8T # TWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1jNpeG39rz+PIWoZon4c2ll9Du # XWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9Bxw4o7t5lL+yX9qFcltgA1qFG # vVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96eiL6SJUfq/tHI4D1nvi/a7dL # l+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7r/ww7QRMjt/fdW1jkT3RnVZO # T7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5IRcBCyZt2WwqASGv9eZ/BvW1t # aslScxMNelDNMYIEjjCCBIoCAQEwgZUwfjELMAkGA1UEBhMCVVMxEzARBgNVBAgT # Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m # dCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQ # Q0EgMjAxMQITMwAAAYZNIXWg2Qe+LAAAAAABhjAJBgUrDgMCGgUAoIGiMBkGCSqG # SIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3 # AgEVMCMGCSqGSIb3DQEJBDEWBBSDnUtySy5n5Mhowc3CpFe3a/HlWzBCBgorBgEE # AYI3AgEMMTQwMqAUgBIATQBpAGMAcgBvAHMAbwBmAHShGoAYaHR0cDovL3d3dy5t # aWNyb3NvZnQuY29tMA0GCSqGSIb3DQEBAQUABIIBAJegX+9WS6MCnGPifMzql4GM # 3oI4ps3zoblcUL1idVqtgX+Zq2d5098Mdu4Lu4J63QsX06ILyScIAVJIDKy0+hbS # /hm6r9CZkWmvjSWGLQpqvKg7N4PoH2A7b1QtECv6gCYWNJU5bpl4NpSl2s41VGQp # u/dkPv6KoN5RTTO/f3ocEjOBxOW1Q1icBbAiwvIBt6uip2g1d6Y6FQvslesaoqD4 # yQo4JpdZwTUeapMbuVEyaTSSFU43sxFlAFEhjt6wJQwTNccuhWa0ZeOrLjH7VACn # sTQujUlEjn6Q9LoRn4H07kACpgM0nIwIc0lRgkv7CSmPS3hKuigDGQqKFchIugeh # ggIoMIICJAYJKoZIhvcNAQkGMYICFTCCAhECAQEwgY4wdzELMAkGA1UEBhMCVVMx # EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT # FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMYTWljcm9zb2Z0IFRpbWUt # U3RhbXAgUENBAhMzAAABWzVaJp9ghWD8AAAAAAFbMAkGBSsOAwIaBQCgXTAYBgkq # hkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yMDExMDMxNzQ1 # MTdaMCMGCSqGSIb3DQEJBDEWBBRQW2OjxkHN8tVHIZivnNpoieyANTANBgkqhkiG # 9w0BAQUFAASCAQAL6D/k3H7GnDyh0iQN6nIRx1I8NcbXRo0gsMCfJaQn9KpuhauF # DGhI9SGPjNaks+WK0XMAr5iD2qWeOZgZV9V4b4WksQJPTqfA+vjd3tM/VcL24cyn # oLIrOndVTKqx/hcOzZrjBbVlU6cFfofrghRc1dSNnEJm8lTipekoCja8EN0ZECoM # bBKxhqDf53HirbEczZbQX907W0aimNDDHca9TJiu52BC2HXLr77uYuQknchvvtF9 # FL5NhAS5qXQVbD0+b5b1AGJkvYgQSg++kvqzomJdQ3ifKscD1qh3JY72Wg38qXz+ # baGMrVf6jWEj08xHXA1MVNncSqo0kQNJZ7xB # SIG # End signature block |