GitHubGistComments.ps1
# Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. @{ GitHubGistCommentTypeName = 'GitHub.GistComment' }.GetEnumerator() | ForEach-Object { Set-Variable -Scope Script -Option ReadOnly -Name $_.Key -Value $_.Value } filter Get-GitHubGistComment { <# .SYNOPSIS Retrieves comments for a specific gist from GitHub. .DESCRIPTION Retrieves comments for a specific gist from GitHub. The Git repo for this module can be found here: http://aka.ms/PowerShellForGitHub .PARAMETER Gist The ID of the specific gist that you wish to retrieve the comments for. .PARAMETER Comment The ID of the specific comment on the gist that you wish to retrieve. .PARAMETER MediaType The format in which the API will return the body of the comment. Raw - Return the raw markdown body. Response will include body. This is the default if you do not pass any specific media type. Text - Return a text only representation of the markdown body. Response will include body_text. Html - Return HTML rendered from the body's markdown. Response will include body_html. Full - Return raw, text and HTML representations. Response will include body, body_text, and body_html. .PARAMETER AccessToken If provided, this will be used as the AccessToken for authentication with the REST Api. Otherwise, will attempt to use the configured value or will run unauthenticated. .INPUTS GitHub.Gist GitHub.GistComment GitHub.GistCommit GitHub.GistFork GitHub.GistSummary .OUTPUTS GitHub.GistComment .EXAMPLE Get-GitHubGistComment -Gist 6cad326836d38bd3a7ae Gets all comments on octocat's "hello_world.rb" gist. .EXAMPLE Get-GitHubGistComment -Gist 6cad326836d38bd3a7ae -Comment 1507813 Gets comment 1507813 from octocat's "hello_world.rb" gist. #> [CmdletBinding(PositionalBinding = $false)] [OutputType({$script:GitHubGistCommentTypeName})] param( [Parameter( Mandatory, ValueFromPipelineByPropertyName, Position = 1)] [Alias('GistId')] [string] $Gist, [Parameter(ValueFromPipelineByPropertyName)] [Alias('GistCommentId')] [ValidateNotNullOrEmpty()] [int64] $Comment, [ValidateSet('Raw', 'Text', 'Html', 'Full')] [string] $MediaType = 'Full', [string] $AccessToken ) Write-InvocationLog $telemetryProperties = @{} $uriFragment = [String]::Empty $description = [String]::Empty if ($PSBoundParameters.ContainsKey('Comment')) { $telemetryProperties['SpecifiedComment'] = $true $uriFragment = "gists/$Gist/comments/$Comment" $description = "Getting comment $Comment for gist $Gist" } else { $uriFragment = "gists/$Gist/comments" $description = "Getting comments for gist $Gist" } $params = @{ 'UriFragment' = $uriFragment 'Description' = $description 'AccessToken' = $AccessToken 'AcceptHeader' = (Get-MediaAcceptHeader -MediaType $MediaType -AsJson) 'TelemetryEventName' = $MyInvocation.MyCommand.Name 'TelemetryProperties' = $telemetryProperties } return (Invoke-GHRestMethodMultipleResult @params | Add-GitHubGistCommentAdditionalProperties) } filter Remove-GitHubGistComment { <# .SYNOPSIS Removes/deletes a comment from a gist on GitHub. .DESCRIPTION Removes/deletes a comment from a gist on GitHub. The Git repo for this module can be found here: http://aka.ms/PowerShellForGitHub .PARAMETER Gist The ID of the specific gist that you wish to remove the comment from. .PARAMETER Comment The ID of the comment to remove from the gist. .PARAMETER Force If this switch is specified, you will not be prompted for confirmation of command execution. .PARAMETER AccessToken If provided, this will be used as the AccessToken for authentication with the REST Api. Otherwise, will attempt to use the configured value or will run unauthenticated. .INPUTS GitHub.Gist GitHub.GistComment GitHub.GistCommit GitHub.GistFork GitHub.GistSummary .EXAMPLE Remove-GitHubGist -Gist 6cad326836d38bd3a7ae -Comment 12324567 Removes the specified comment from octocat's "hello_world.rb" gist (assuming you have permission). .EXAMPLE Remove-GitHubGist -Gist 6cad326836d38bd3a7ae -Comment 12324567 -Confirm:$false Removes the specified comment from octocat's "hello_world.rb" gist (assuming you have permission). Will not prompt for confirmation, as -Confirm:$false was specified. .EXAMPLE Remove-GitHubGist -Gist 6cad326836d38bd3a7ae -Comment 12324567 -Force Removes the specified comment from octocat's "hello_world.rb" gist (assuming you have permission). Will not prompt for confirmation, as -Force was specified. #> [CmdletBinding( SupportsShouldProcess, PositionalBinding = $false, ConfirmImpact="High")] [Alias('Delete-GitHubGist')] param( [Parameter( Mandatory, ValueFromPipelineByPropertyName, Position = 1)] [Alias('GistId')] [ValidateNotNullOrEmpty()] [string] $Gist, [Parameter( Mandatory, ValueFromPipelineByPropertyName, Position = 2)] [Alias('GistCommentId')] [ValidateNotNullOrEmpty()] [int64] $Comment, [switch] $Force, [string] $AccessToken ) Write-InvocationLog if ($Force -and (-not $Confirm)) { $ConfirmPreference = 'None' } if (-not $PSCmdlet.ShouldProcess($Comment, "Delete comment from gist $Gist")) { return } $telemetryProperties = @{} $params = @{ 'UriFragment' = "gists/$Gist/comments/$Comment" 'Method' = 'Delete' 'Description' = "Removing comment $Comment from gist $Gist" 'AccessToken' = $AccessToken 'TelemetryEventName' = $MyInvocation.MyCommand.Name 'TelemetryProperties' = $telemetryProperties } return Invoke-GHRestMethod @params } filter New-GitHubGistComment { <# .SYNOPSIS Creates a new comment on the specified gist from GitHub. .DESCRIPTION Creates a new comment on the specified gist from GitHub. The Git repo for this module can be found here: http://aka.ms/PowerShellForGitHub .PARAMETER Gist The ID of the specific gist that you wish to add the comment to. .PARAMETER Body The body of the comment that you wish to leave on the gist. .PARAMETER AccessToken If provided, this will be used as the AccessToken for authentication with the REST Api. Otherwise, will attempt to use the configured value or will run unauthenticated. .INPUTS GitHub.Gist GitHub.GistComment GitHub.GistCommit GitHub.GistFork GitHub.GistSummary .OUTPUTS GitHub.GistComment .EXAMPLE New-GitHubGistComment -Gist 6cad326836d38bd3a7ae -Body 'Hello World' Adds a new comment of "Hello World" to octocat's "hello_world.rb" gist. #> [CmdletBinding( SupportsShouldProcess, PositionalBinding = $false)] [OutputType({$script:GitHubGistCommentTypeName})] param( [Parameter( Mandatory, ValueFromPipelineByPropertyName, Position = 1)] [Alias('GistId')] [ValidateNotNullOrEmpty()] [string] $Gist, [Parameter( Mandatory, Position = 2)] [ValidateNotNullOrEmpty()] [string] $Body, [string] $AccessToken ) Write-InvocationLog $hashBody = @{ 'body' = $Body } if (-not $PSCmdlet.ShouldProcess($Gist, "Create new comment for gist")) { return } $telemetryProperties = @{} $params = @{ 'UriFragment' = "gists/$Gist/comments" 'Body' = (ConvertTo-Json -InputObject $hashBody) 'Method' = 'Post' 'Description' = "Creating new comment on gist $Gist" 'AccessToken' = $AccessToken 'TelemetryEventName' = $MyInvocation.MyCommand.Name 'TelemetryProperties' = $telemetryProperties } return (Invoke-GHRestMethod @params | Add-GitHubGistCommentAdditionalProperties) } filter Set-GitHubGistComment { <# .SYNOPSIS Edits a comment on the specified gist from GitHub. .DESCRIPTION Edits a comment on the specified gist from GitHub. The Git repo for this module can be found here: http://aka.ms/PowerShellForGitHub .PARAMETER Gist The ID of the gist that the comment is on. .PARAMETER Comment The ID of the comment that you wish to edit. .PARAMETER Body The new text of the comment that you wish to leave on the gist. .PARAMETER PassThru Returns the updated Comment. By default, this cmdlet does not generate any output. You can use "Set-GitHubConfiguration -DefaultPassThru" to control the default behavior of this switch. .PARAMETER AccessToken If provided, this will be used as the AccessToken for authentication with the REST Api. Otherwise, will attempt to use the configured value or will run unauthenticated. .INPUTS GitHub.Gist GitHub.GistComment GitHub.GistCommit GitHub.GistFork GitHub.GistSummary .OUTPUTS GitHub.GistComment .EXAMPLE Set-GitHubGistComment -Gist 6cad326836d38bd3a7ae -Comment 1232456 -Body 'Hello World' Updates the body of the comment with ID 1232456 octocat's "hello_world.rb" gist to be "Hello World". #> [CmdletBinding( SupportsShouldProcess, PositionalBinding = $false)] [OutputType({$script:GitHubGistCommentTypeName})] [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSReviewUnusedParameter", "", Justification="PassThru is accessed indirectly via Resolve-ParameterWithDefaultConfigurationValue")] param( [Parameter( Mandatory, ValueFromPipelineByPropertyName, Position = 1)] [Alias('GistId')] [ValidateNotNullOrEmpty()] [string] $Gist, [Parameter( Mandatory, ValueFromPipelineByPropertyName, Position = 2)] [Alias('GistCommentId')] [ValidateNotNullOrEmpty()] [int64] $Comment, [Parameter( Mandatory, Position = 3)] [ValidateNotNullOrEmpty()] [string] $Body, [switch] $PassThru, [string] $AccessToken ) Write-InvocationLog $hashBody = @{ 'body' = $Body } if (-not $PSCmdlet.ShouldProcess($Comment, "Update gist comment on gist $Gist")) { return } $telemetryProperties = @{} $params = @{ 'UriFragment' = "gists/$Gist/comments/$Comment" 'Body' = (ConvertTo-Json -InputObject $hashBody) 'Method' = 'Patch' 'Description' = "Creating new comment on gist $Gist" 'AccessToken' = $AccessToken 'TelemetryEventName' = $MyInvocation.MyCommand.Name 'TelemetryProperties' = $telemetryProperties } $result = (Invoke-GHRestMethod @params | Add-GitHubGistCommentAdditionalProperties) if (Resolve-ParameterWithDefaultConfigurationValue -Name PassThru -ConfigValueName DefaultPassThru) { return $result } } filter Add-GitHubGistCommentAdditionalProperties { <# .SYNOPSIS Adds type name and additional properties to ease pipelining to GitHub Gist Comment objects. .PARAMETER InputObject The GitHub object to add additional properties to. .PARAMETER TypeName The type that should be assigned to the object. .PARAMETER GistId The ID of the gist that the comment is for. .INPUTS [PSCustomObject] .OUTPUTS GitHub.GistComment #> [CmdletBinding()] [OutputType({$script:GitHubGisCommentTypeName})] [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseSingularNouns", "", Justification="Internal helper that is definitely adding more than one property.")] param( [Parameter( Mandatory, ValueFromPipeline)] [AllowNull()] [AllowEmptyCollection()] [PSCustomObject[]] $InputObject, [ValidateNotNullOrEmpty()] [string] $TypeName = $script:GitHubGistCommentTypeName ) foreach ($item in $InputObject) { $item.PSObject.TypeNames.Insert(0, $TypeName) if (-not (Get-GitHubConfiguration -Name DisablePipelineSupport)) { $hostName = $(Get-GitHubConfiguration -Name 'ApiHostName') if ($item.url -match "^https?://(?:www\.|api\.|)$hostName/gists/([^/]+)/comments/(.+)$") { $gistId = $Matches[1] $commentId = $Matches[2] if ($commentId -ne $item.id) { $message = "The gist comment url no longer follows the expected pattern. Please contact the PowerShellForGitHubTeam: $item.url" Write-Log -Message $message -Level Warning } } Add-Member -InputObject $item -Name 'GistCommentId' -Value $item.id -MemberType NoteProperty -Force Add-Member -InputObject $item -Name 'GistId' -Value $gistId -MemberType NoteProperty -Force if ($null -ne $item.user) { $null = Add-GitHubUserAdditionalProperties -InputObject $item.user } } Write-Output $item } } # SIG # Begin signature block # MIIjhQYJKoZIhvcNAQcCoIIjdjCCI3ICAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCpZ8N03tJRHri/ # 6gp4tCeA+qUD2iXxTuxeGDBrHtehWKCCDYEwggX/MIID56ADAgECAhMzAAABh3IX # chVZQMcJAAAAAAGHMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD # VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p # bmcgUENBIDIwMTEwHhcNMjAwMzA0MTgzOTQ3WhcNMjEwMzAzMTgzOTQ3WjB0MQsw # CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u # ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB # AQDOt8kLc7P3T7MKIhouYHewMFmnq8Ayu7FOhZCQabVwBp2VS4WyB2Qe4TQBT8aB # znANDEPjHKNdPT8Xz5cNali6XHefS8i/WXtF0vSsP8NEv6mBHuA2p1fw2wB/F0dH # sJ3GfZ5c0sPJjklsiYqPw59xJ54kM91IOgiO2OUzjNAljPibjCWfH7UzQ1TPHc4d # weils8GEIrbBRb7IWwiObL12jWT4Yh71NQgvJ9Fn6+UhD9x2uk3dLj84vwt1NuFQ # itKJxIV0fVsRNR3abQVOLqpDugbr0SzNL6o8xzOHL5OXiGGwg6ekiXA1/2XXY7yV # Fc39tledDtZjSjNbex1zzwSXAgMBAAGjggF+MIIBejAfBgNVHSUEGDAWBgorBgEE # AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUhov4ZyO96axkJdMjpzu2zVXOJcsw # UAYDVR0RBEkwR6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1 # ZXJ0byBSaWNvMRYwFAYDVQQFEw0yMzAwMTIrNDU4Mzg1MB8GA1UdIwQYMBaAFEhu # ZOVQBdOCqhc3NyK1bajKdQKVMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly93d3cu # bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY0NvZFNpZ1BDQTIwMTFfMjAxMS0w # Ny0wOC5jcmwwYQYIKwYBBQUHAQEEVTBTMFEGCCsGAQUFBzAChkVodHRwOi8vd3d3 # Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY0NvZFNpZ1BDQTIwMTFfMjAx # MS0wNy0wOC5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEAixmy # S6E6vprWD9KFNIB9G5zyMuIjZAOuUJ1EK/Vlg6Fb3ZHXjjUwATKIcXbFuFC6Wr4K # NrU4DY/sBVqmab5AC/je3bpUpjtxpEyqUqtPc30wEg/rO9vmKmqKoLPT37svc2NV # BmGNl+85qO4fV/w7Cx7J0Bbqk19KcRNdjt6eKoTnTPHBHlVHQIHZpMxacbFOAkJr # qAVkYZdz7ikNXTxV+GRb36tC4ByMNxE2DF7vFdvaiZP0CVZ5ByJ2gAhXMdK9+usx # zVk913qKde1OAuWdv+rndqkAIm8fUlRnr4saSCg7cIbUwCCf116wUJ7EuJDg0vHe # yhnCeHnBbyH3RZkHEi2ofmfgnFISJZDdMAeVZGVOh20Jp50XBzqokpPzeZ6zc1/g # yILNyiVgE+RPkjnUQshd1f1PMgn3tns2Cz7bJiVUaqEO3n9qRFgy5JuLae6UweGf # AeOo3dgLZxikKzYs3hDMaEtJq8IP71cX7QXe6lnMmXU/Hdfz2p897Zd+kU+vZvKI # 3cwLfuVQgK2RZ2z+Kc3K3dRPz2rXycK5XCuRZmvGab/WbrZiC7wJQapgBodltMI5 # GMdFrBg9IeF7/rP4EqVQXeKtevTlZXjpuNhhjuR+2DMt/dWufjXpiW91bo3aH6Ea # jOALXmoxgltCp1K7hrS6gmsvj94cLRf50QQ4U8Qwggd6MIIFYqADAgECAgphDpDS # 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/BvW1taslScxMNelDNMYIVWjCCFVYCAQEwgZUwfjELMAkG # A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx # HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z # b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAYdyF3IVWUDHCQAAAAABhzAN # BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor # BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgBImZoXVX # GVB14XQfEKM09rPIopwpWPH5bnHxfdhKXbwwQgYKKwYBBAGCNwIBDDE0MDKgFIAS # AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN # BgkqhkiG9w0BAQEFAASCAQCp9gTpn7A++LDuOyQM5s/6yqTSRL06uV9fTvOvt9XA # pUFLv1f2CLP/jyZysP1N1VfBRP6CDTPIsxb+2sijJ4plriwSrkSGS35gSROYanbr # f62nCf1EWRPzsHvzsxW1svQ0cx0y/VDgQeC0sqDplDCEl4wvAknvr0Ecvc+wthVc # HMdx1/a44c8nmnSESkqCHG+pqe3oliWmHR1mZvJ9XxJ8c11ed1yb6d3uTxFfgEy/ # b7YKUooB+Ir+fzk9tZmtphavdLMJbrRm3RwAMRgGreIJgGK2+I7dAWceOnyZMEt1 # 4NG6O//GRpboghlFHDEuM+sTOj6Vvvh+ZxrLL43IVDf4oYIS5DCCEuAGCisGAQQB # gjcDAwExghLQMIISzAYJKoZIhvcNAQcCoIISvTCCErkCAQMxDzANBglghkgBZQME # AgEFADCCAVAGCyqGSIb3DQEJEAEEoIIBPwSCATswggE3AgEBBgorBgEEAYRZCgMB # MDEwDQYJYIZIAWUDBAIBBQAEIPKFFnJ0Zh89KQYIW8cNR6PVNwe3/3EvQDxiK8BE # AOyCAgZfGD5mmYIYEjIwMjAwODE4MDMxNDI5Ljk4WjAEgAIB9KCB0KSBzTCByjEL # MAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD # VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLTArBgNVBAsTJE1pY3Jvc29mdCBJ # cmVsYW5kIE9wZXJhdGlvbnMgTGltaXRlZDEmMCQGA1UECxMdVGhhbGVzIFRTUyBF # U046MTc5RS00QkIwLTgyNDYxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1w # IFNlcnZpY2Wggg48MIIE8TCCA9mgAwIBAgITMwAAAQyqeG7czEJMwQAAAAABDDAN # BgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv # bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 # aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAeFw0x # OTEwMjMyMzE5MTZaFw0yMTAxMjEyMzE5MTZaMIHKMQswCQYDVQQGEwJVUzELMAkG # A1UECBMCV0ExEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD # b3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9u # cyBMaW1pdGVkMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjoxNzlFLTRCQjAtODI0 # NjElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZTCCASIwDQYJ # KoZIhvcNAQEBBQADggEPADCCAQoCggEBAKudNdfl6lSZkCrYsN/YoHhDLwi3GdX6 # K25sbA5KZwjdUq04SiPp9j6986k8yVYHSRQqCptZLNYLUSex2i+rQ5KzsPFyZnyW # sckAJbgkPnuNDSPgOMPrufRsvPQFWOZSTa5gr2uoKM34NZMcOmm1eVlq/j4xKTQr # ITuIcb91KoDHAip09mFUmcxdRsuwD7m9X2ND9bzRLjhSqzQhBL1iCka6rHsgQe9x # vCg9ssOo389FSsTUkQHYSVf4ITsqw7eWvi+gt5ta6a/LKoqH94qIb9wDSIDasOns # fuPhvgeyTGyB2xqT3Xm3nS+nj27gQp24CaA59+NJNGsOoo9tRr71J5ECAwEAAaOC # ARswggEXMB0GA1UdDgQWBBQJQjqvQwyGtANKKoCrTOb47mXivjAfBgNVHSMEGDAW # gBTVYzpcijGQ80N7fEYbxTNoWoVtVTBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8v # Y3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNUaW1TdGFQQ0Ff # MjAxMC0wNy0wMS5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRw # Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1RpbVN0YVBDQV8yMDEw # LTA3LTAxLmNydDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMIMA0G # CSqGSIb3DQEBCwUAA4IBAQBE98QYPyGfc3Tn8Gwxiu3Ct6imLf6lDpW0Qc4HjY29 # 9ivOpxnkRpAXntdHVThBllMOirQXlodS0O9G+uP7S7Yi3LH/Sc2gMg2G9bEZjIuX # 40We+d06rmk/FezSe0XxLmH72Zbm30A9DFW1OLc7HWXWLsRN+1difaTfPY+xqBTb # QJ0pwp9TEcRDQCC4LfV83kM0xA4RWFtDdgzaYU5ET1xo6Q5sIulrZCeX79Ik8geH # cBAvv3ndJRmxS3MrSaDMH0zTHR+oHJx5TM7J4qK5xhWWuTz4le/F6GfRXrqSqPGS # jRoSyyweRk7anx3seZ6N4qFUqvjbYb4V9CP1folybKKaMIIGcTCCBFmgAwIBAgIK # YQmBKgAAAAAAAjANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNV # BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv # c29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlm # aWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTAwNzAxMjEzNjU1WhcNMjUwNzAxMjE0 # NjU1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE # BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYD # VQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCCASIwDQYJKoZIhvcN # AQEBBQADggEPADCCAQoCggEBAKkdDbx3EYo6IOz8E5f1+n9plGt0VBDVpQoAgoX7 # 7XxoSyxfxcPlYcJ2tz5mK1vwFVMnBDEfQRsalR3OCROOfGEwWbEwRA/xYIiEVEMM # 1024OAizQt2TrNZzMFcmgqNFDdDq9UeBzb8kYDJYYEbyWEeGMoQedGFnkV+BVLHP # k0ySwcSmXdFhE24oxhr5hoC732H8RsEnHSRnEnIaIYqvS2SJUGKxXf13Hz3wV3Ws # vYpCTUBR0Q+cBj5nf/VmwAOWRH7v0Ev9buWayrGo8noqCjHw2k4GkbaICDXoeByw # 6ZnNPOcvRLqn9NxkvaQBwSAJk3jN/LzAyURdXhacAQVPIk0CAwEAAaOCAeYwggHi # MBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTVYzpcijGQ80N7fEYbxTNoWoVt # VTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0T # AQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvXzpoYxDBWBgNV # HR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9w # cm9kdWN0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYIKwYBBQUHAQEE # TjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2Nl # cnRzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNydDCBoAYDVR0gAQH/BIGVMIGS # MIGPBgkrBgEEAYI3LgMwgYEwPQYIKwYBBQUHAgEWMWh0dHA6Ly93d3cubWljcm9z # b2Z0LmNvbS9QS0kvZG9jcy9DUFMvZGVmYXVsdC5odG0wQAYIKwYBBQUHAgIwNB4y # IB0ATABlAGcAYQBsAF8AUABvAGwAaQBjAHkAXwBTAHQAYQB0AGUAbQBlAG4AdAAu # IB0wDQYJKoZIhvcNAQELBQADggIBAAfmiFEN4sbgmD+BcQM9naOhIW+z66bM9TG+ # zwXiqf76V20ZMLPCxWbJat/15/B4vceoniXj+bzta1RXCCtRgkQS+7lTjMz0YBKK # dsxAQEGb3FwX/1z5Xhc1mCRWS3TvQhDIr79/xn/yN31aPxzymXlKkVIArzgPF/Uv # eYFl2am1a+THzvbKegBvSzBEJCI8z+0DpZaPWSm8tv0E4XCfMkon/VWvL/625Y4z # u2JfmttXQOnxzplmkIz/amJ/3cVKC5Em4jnsGUpxY517IW3DnKOiPPp/fZZqkHim # bdLhnPkd/DjYlPTGpQqWhqS9nhquBEKDuLWAmyI4ILUl5WTs9/S/fmNZJQ96LjlX # dqJxqgaKD4kWumGnEcua2A5HmoDF0M2n0O99g/DhO3EJ3110mCIIYdqwUB5vvfHh # AN/nMQekkzr3ZUd46PioSKv33nJ+YWtvd6mBy6cJrDm77MbL2IK0cs0d9LiFAR6A # +xuJKlQ5slvayA1VmXqHczsI5pgt6o3gMy4SKfXAL1QnIffIrE7aKLixqduWsqdC # osnPGUFN4Ib5KpqjEWYw07t0MkvfY3v1mYovG8chr1m1rtxEPJdQcdeh0sVV42ne # V8HR3jDA/czmTfsNv11P6Z0eGTgvvM9YBS7vDaBQNdrvCScc1bN+NR4Iuto229Nf # j950iEkSoYICzjCCAjcCAQEwgfihgdCkgc0wgcoxCzAJBgNVBAYTAlVTMQswCQYD # VQQIEwJXQTEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENv # cnBvcmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25z # IExpbWl0ZWQxJjAkBgNVBAsTHVRoYWxlcyBUU1MgRVNOOjE3OUUtNEJCMC04MjQ2 # MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNloiMKAQEwBwYF # Kw4DAhoDFQDLIPRUPaYDy1yNi3ec+8Q0tEAGfaCBgzCBgKR+MHwxCzAJBgNVBAYT # AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD # VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBU # aW1lLVN0YW1wIFBDQSAyMDEwMA0GCSqGSIb3DQEBBQUAAgUA4uWr8jAiGA8yMDIw # MDgxODA5MjI1OFoYDzIwMjAwODE5MDkyMjU4WjB3MD0GCisGAQQBhFkKBAExLzAt # MAoCBQDi5avyAgEAMAoCAQACAhVFAgH/MAcCAQACAhGdMAoCBQDi5v1yAgEAMDYG # CisGAQQBhFkKBAIxKDAmMAwGCisGAQQBhFkKAwKgCjAIAgEAAgMHoSChCjAIAgEA # AgMBhqAwDQYJKoZIhvcNAQEFBQADgYEAQEt2oYeyBrv7gCbmWe0a2qmxpbukvi1K # Mm59vhbmgHQQQV0NYmufejejGmjyyETE62TcVgVtm8uoHnFMBAp8+Mw+vJwbNQ0a # My+p5cNFyW8vCerJsUORNMSQMkX8BMWFo86YZbYwUfKuTRanSgEey1aJjtfghnF5 # FGWPq/IoYGoxggMNMIIDCQIBATCBkzB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMK # V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0 # IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0Eg # MjAxMAITMwAAAQyqeG7czEJMwQAAAAABDDANBglghkgBZQMEAgEFAKCCAUowGgYJ # KoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJBDEiBCBPM/gjOhBk # Ct9ryKHXdWlGfr7ieIJjQn2qlpvf1D44PDCB+gYLKoZIhvcNAQkQAi8xgeowgecw # geQwgb0EIIOQFil+zNfptv//le6pkb7dSv8MOTLrvF8xiQasoFQpMIGYMIGApH4w # fDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl # ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMd # TWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAAEMqnhu3MxCTMEAAAAA # AQwwIgQg/CI0rhYdUnoY9+Mb/yJaUbrhzMuacxrbPmfRs2N1rO0wDQYJKoZIhvcN # AQELBQAEggEAXJb/Cok90C9J82VHmI4KGZQjMHGMPc/ztSngHrc4IuEHTauAH49U # 7NGuJkxGi08ahEpfrVjLNzEiBdYrM7IEFEm4TUHF0KQufWQpILGy96fyPZQP5cEc # aoAEQsKK5xkA/bT4ln8WnSRNpa9za5ArJgpo7fC6SPIfvH/Jk9vp2kKfu/P0atQ1 # prTQS7Sx4EVy6B7ccfvYYj6fxJHzvuz75aY1sIHpd9BlP9GxeZFVXLI5MkmsUq/F # O/2udhVQ6uHqo7tqoc+p+w6a0J4H/3Mzkgd6uZ6UmfXHJrDZbW2GMK9PU5twkOUt # Op68/dmxqfFNr1DCkg8MiE+4AIpalVrY6g== # SIG # End signature block |