Public/SubnetInjection/Get-SubnetInjectionEnterprisePolicy.ps1
|
<#
SAMPLE CODE NOTICE THIS SAMPLE CODE IS MADE AVAILABLE AS IS. MICROSOFT MAKES NO WARRANTIES, WHETHER EXPRESS OR IMPLIED, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY OR COMPLETENESS OF RESPONSES, OF RESULTS, OR CONDITIONS OF MERCHANTABILITY. THE ENTIRE RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS SAMPLE CODE REMAINS WITH THE USER. NO TECHNICAL SUPPORT IS PROVIDED. YOU MAY NOT DISTRIBUTE THIS CODE UNLESS YOU HAVE A LICENSE AGREEMENT WITH MICROSOFT THAT ALLOWS YOU TO DO SO. #> <# .SYNOPSIS Retrieves Subnet Injection Enterprise Policies for Power Platform. .DESCRIPTION This cmdlet retrieves Subnet Injection Enterprise Policies using one of four methods: - By Resource ID: Retrieves a specific policy using its Azure ARM resource ID - By Environment: Retrieves the policy linked to a specific Power Platform environment - By Subscription: Retrieves all Subnet Injection policies in the current subscription - By Resource Group: Retrieves all Subnet Injection policies in a specific resource group .OUTPUTS Microsoft.Azure.Commands.ResourceManager.Cmdlets.SdkModels.PSResource Returns PSResource object(s) representing the enterprise policy Azure resources. Throws an error if no policy is found. .EXAMPLE Get-SubnetInjectionEnterprisePolicy -PolicyResourceId "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/myResourceGroup/providers/Microsoft.PowerPlatform/enterprisePolicies/myPolicy" -TenantId "87654321-4321-4321-4321-210987654321" Retrieves a Subnet Injection Enterprise Policy by its ARM resource ID. .EXAMPLE Get-SubnetInjectionEnterprisePolicy -EnvironmentId "00000000-0000-0000-0000-000000000000" -Endpoint Prod Retrieves the Subnet Injection Enterprise Policy linked to the specified Power Platform environment. .EXAMPLE Get-SubnetInjectionEnterprisePolicy -EnvironmentId "00000000-0000-0000-0000-000000000000" -TenantId "87654321-4321-4321-4321-210987654321" -Endpoint usgovhigh Retrieves the Subnet Injection Enterprise Policy linked to an environment in the US Government High cloud. .EXAMPLE Get-SubnetInjectionEnterprisePolicy -SubscriptionId "12345678-1234-1234-1234-123456789012" Retrieves all Subnet Injection Enterprise Policies in the specified subscription. .EXAMPLE Get-SubnetInjectionEnterprisePolicy -SubscriptionId "12345678-1234-1234-1234-123456789012" -ResourceGroupName "myResourceGroup" Retrieves all Subnet Injection Enterprise Policies in the specified resource group. #> function Get-SubnetInjectionEnterprisePolicy{ [CmdletBinding(DefaultParameterSetName = 'BySubscription')] param( [Parameter(Mandatory, ParameterSetName = 'ByResourceId', HelpMessage="The full Azure ARM resource ID of the enterprise policy")] [ValidateNotNullOrEmpty()] [string]$PolicyResourceId, [Parameter(Mandatory, ParameterSetName = 'ByEnvironment', HelpMessage="The Power Platform environment ID to retrieve the linked policy for")] [ValidateNotNullOrEmpty()] [string]$EnvironmentId, [Parameter(Mandatory, ParameterSetName = 'BySubscription', HelpMessage="The Azure subscription ID to search for policies")] [Parameter(Mandatory, ParameterSetName = 'ByResourceGroup', HelpMessage="The Azure subscription ID containing the resource group")] [ValidateNotNullOrEmpty()] [string]$SubscriptionId, [Parameter(Mandatory, ParameterSetName = 'ByResourceGroup', HelpMessage="The Azure resource group name to search for policies")] [ValidateNotNullOrEmpty()] [string]$ResourceGroupName, [Parameter(Mandatory=$false, HelpMessage="The Azure AD tenant ID")] [string]$TenantId, [Parameter(Mandatory=$false, HelpMessage="The BAP endpoint to connect to")] [BAPEndpoint]$Endpoint = [BAPEndpoint]::Prod, [Parameter(Mandatory=$false, HelpMessage="Force re-authentication instead of reusing existing session")] [switch]$ForceAuth ) $ErrorActionPreference = "Stop" # For ByResourceId, extract and validate subscription ID from the resource ID if ($PSCmdlet.ParameterSetName -eq 'ByResourceId') { if ($PolicyResourceId -match "/subscriptions/([^/]+)/") { $SubscriptionId = $Matches[1] } else { throw "Invalid PolicyResourceId format. Expected format: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerPlatform/enterprisePolicies/{policyName}" } } # Connect to Azure if (-not(Connect-Azure -Endpoint $Endpoint -TenantId $TenantId -Force:$ForceAuth)) { throw "Failed to connect to Azure. Please check your credentials and try again." } # Set subscription context for non-ByEnvironment parameter sets if ($PSCmdlet.ParameterSetName -ne 'ByEnvironment') { Write-Verbose "Setting subscription context to $SubscriptionId" $null = Set-AzContext -Subscription $SubscriptionId } # Retrieve policies based on parameter set switch ($PSCmdlet.ParameterSetName) { 'BySubscription' { Write-Verbose "Retrieving all Subnet Injection enterprise policies in subscription: $SubscriptionId" $policies = Get-EnterprisePolicy -Kind ([PolicyType]::NetworkInjection) if ($null -eq $policies -or @($policies).Count -eq 0) { throw "No Subnet Injection Enterprise Policies found in subscription: $SubscriptionId" } return $policies } 'ByResourceGroup' { Write-Verbose "Retrieving all Subnet Injection enterprise policies in resource group: $ResourceGroupName" $policies = Get-EnterprisePolicy -ResourceGroupName $ResourceGroupName -Kind ([PolicyType]::NetworkInjection) if ($null -eq $policies -or @($policies).Count -eq 0) { throw "No Subnet Injection Enterprise Policies found in resource group: $ResourceGroupName" } return $policies } 'ByResourceId' { Write-Verbose "Retrieving enterprise policy: $PolicyResourceId" $policy = Get-EnterprisePolicy -PolicyArmId $PolicyResourceId if ($null -eq $policy) { throw "No enterprise policy found with resource ID: $PolicyResourceId" } return $policy } 'ByEnvironment' { Write-Verbose "Retrieving environment information for: $EnvironmentId" $environment = Get-BAPEnvironment -EnvironmentId $EnvironmentId -Endpoint $Endpoint -TenantId $TenantId if ($null -eq $environment) { throw "Failed to retrieve environment with ID: $EnvironmentId" } Write-Verbose "Environment retrieved successfully" if ($null -eq $environment.properties.enterprisePolicies -or $null -eq $environment.properties.enterprisePolicies.VNets) { throw "No Subnet Injection Enterprise Policy is linked to environment: $EnvironmentId" } $policyArmId = $environment.properties.enterprisePolicies.VNets.id Write-Verbose "Found linked Subnet Injection Enterprise Policy: $policyArmId" # Set subscription context from the policy ARM ID if ($policyArmId -match "/subscriptions/([^/]+)/") { Write-Verbose "Setting subscription context to $($Matches[1])" $null = Set-AzContext -Subscription $Matches[1] } $policy = Get-EnterprisePolicy -PolicyArmId $policyArmId if ($null -eq $policy) { throw "Could not retrieve enterprise policy details for: $policyArmId" } return $policy } } } # SIG # Begin signature block # MIIoKQYJKoZIhvcNAQcCoIIoGjCCKBYCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCzZ5xq8YlO6OFM # p5m3X21OsMLxq6cabrObTEQQ1NeFG6CCDXYwggX0MIID3KADAgECAhMzAAAEhV6Z # 7A5ZL83XAAAAAASFMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD # VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p # bmcgUENBIDIwMTEwHhcNMjUwNjE5MTgyMTM3WhcNMjYwNjE3MTgyMTM3WjB0MQsw # CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u # ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB # AQDASkh1cpvuUqfbqxele7LCSHEamVNBfFE4uY1FkGsAdUF/vnjpE1dnAD9vMOqy # 5ZO49ILhP4jiP/P2Pn9ao+5TDtKmcQ+pZdzbG7t43yRXJC3nXvTGQroodPi9USQi # 9rI+0gwuXRKBII7L+k3kMkKLmFrsWUjzgXVCLYa6ZH7BCALAcJWZTwWPoiT4HpqQ # hJcYLB7pfetAVCeBEVZD8itKQ6QA5/LQR+9X6dlSj4Vxta4JnpxvgSrkjXCz+tlJ # 67ABZ551lw23RWU1uyfgCfEFhBfiyPR2WSjskPl9ap6qrf8fNQ1sGYun2p4JdXxe # UAKf1hVa/3TQXjvPTiRXCnJPAgMBAAGjggFzMIIBbzAfBgNVHSUEGDAWBgorBgEE # AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUuCZyGiCuLYE0aU7j5TFqY05kko0w # RQYDVR0RBD4wPKQ6MDgxHjAcBgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEW # MBQGA1UEBRMNMjMwMDEyKzUwNTM1OTAfBgNVHSMEGDAWgBRIbmTlUAXTgqoXNzci # tW2oynUClTBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8vd3d3Lm1pY3Jvc29mdC5j # b20vcGtpb3BzL2NybC9NaWNDb2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3JsMGEG # CCsGAQUFBwEBBFUwUzBRBggrBgEFBQcwAoZFaHR0cDovL3d3dy5taWNyb3NvZnQu # Y29tL3BraW9wcy9jZXJ0cy9NaWNDb2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3J0 # MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIBACjmqAp2Ci4sTHZci+qk # tEAKsFk5HNVGKyWR2rFGXsd7cggZ04H5U4SV0fAL6fOE9dLvt4I7HBHLhpGdE5Uj # Ly4NxLTG2bDAkeAVmxmd2uKWVGKym1aarDxXfv3GCN4mRX+Pn4c+py3S/6Kkt5eS # DAIIsrzKw3Kh2SW1hCwXX/k1v4b+NH1Fjl+i/xPJspXCFuZB4aC5FLT5fgbRKqns # WeAdn8DsrYQhT3QXLt6Nv3/dMzv7G/Cdpbdcoul8FYl+t3dmXM+SIClC3l2ae0wO # lNrQ42yQEycuPU5OoqLT85jsZ7+4CaScfFINlO7l7Y7r/xauqHbSPQ1r3oIC+e71 # 5s2G3ClZa3y99aYx2lnXYe1srcrIx8NAXTViiypXVn9ZGmEkfNcfDiqGQwkml5z9 # nm3pWiBZ69adaBBbAFEjyJG4y0a76bel/4sDCVvaZzLM3TFbxVO9BQrjZRtbJZbk # C3XArpLqZSfx53SuYdddxPX8pvcqFuEu8wcUeD05t9xNbJ4TtdAECJlEi0vvBxlm # M5tzFXy2qZeqPMXHSQYqPgZ9jvScZ6NwznFD0+33kbzyhOSz/WuGbAu4cHZG8gKn # lQVT4uA2Diex9DMs2WHiokNknYlLoUeWXW1QrJLpqO82TLyKTbBM/oZHAdIc0kzo # STro9b3+vjn2809D0+SOOCVZMIIHejCCBWKgAwIBAgIKYQ6Q0gAAAAAAAzANBgkq # hkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x # EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv # bjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 # IDIwMTEwHhcNMTEwNzA4MjA1OTA5WhcNMjYwNzA4MjEwOTA5WjB+MQswCQYDVQQG # EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG # A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQg # Q29kZSBTaWduaW5nIFBDQSAyMDExMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC # CgKCAgEAq/D6chAcLq3YbqqCEE00uvK2WCGfQhsqa+laUKq4BjgaBEm6f8MMHt03 # a8YS2AvwOMKZBrDIOdUBFDFC04kNeWSHfpRgJGyvnkmc6Whe0t+bU7IKLMOv2akr # rnoJr9eWWcpgGgXpZnboMlImEi/nqwhQz7NEt13YxC4Ddato88tt8zpcoRb0Rrrg # OGSsbmQ1eKagYw8t00CT+OPeBw3VXHmlSSnnDb6gE3e+lD3v++MrWhAfTVYoonpy # 4BI6t0le2O3tQ5GD2Xuye4Yb2T6xjF3oiU+EGvKhL1nkkDstrjNYxbc+/jLTswM9 # sbKvkjh+0p2ALPVOVpEhNSXDOW5kf1O6nA+tGSOEy/S6A4aN91/w0FK/jJSHvMAh # dCVfGCi2zCcoOCWYOUo2z3yxkq4cI6epZuxhH2rhKEmdX4jiJV3TIUs+UsS1Vz8k # A/DRelsv1SPjcF0PUUZ3s/gA4bysAoJf28AVs70b1FVL5zmhD+kjSbwYuER8ReTB # w3J64HLnJN+/RpnF78IcV9uDjexNSTCnq47f7Fufr/zdsGbiwZeBe+3W7UvnSSmn # Eyimp31ngOaKYnhfsi+E11ecXL93KCjx7W3DKI8sj0A3T8HhhUSJxAlMxdSlQy90 # lfdu+HggWCwTXWCVmj5PM4TasIgX3p5O9JawvEagbJjS4NaIjAsCAwEAAaOCAe0w # ggHpMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRIbmTlUAXTgqoXNzcitW2o # ynUClTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYD # VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToCMZBDuRQFTuHqp8cx0SOJNDBa # BgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2Ny # bC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNfMjIuY3JsMF4GCCsG # AQUFBwEBBFIwUDBOBggrBgEFBQcwAoZCaHR0cDovL3d3dy5taWNyb3NvZnQuY29t # L3BraS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNfMjIuY3J0MIGfBgNV # HSAEgZcwgZQwgZEGCSsGAQQBgjcuAzCBgzA/BggrBgEFBQcCARYzaHR0cDovL3d3 # dy5taWNyb3NvZnQuY29tL3BraW9wcy9kb2NzL3ByaW1hcnljcHMuaHRtMEAGCCsG # AQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAHAAbwBsAGkAYwB5AF8AcwB0AGEAdABl # AG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQBn8oalmOBUeRou09h0ZyKb # C5YR4WOSmUKWfdJ5DJDBZV8uLD74w3LRbYP+vj/oCso7v0epo/Np22O/IjWll11l # hJB9i0ZQVdgMknzSGksc8zxCi1LQsP1r4z4HLimb5j0bpdS1HXeUOeLpZMlEPXh6 # I/MTfaaQdION9MsmAkYqwooQu6SpBQyb7Wj6aC6VoCo/KmtYSWMfCWluWpiW5IP0 # wI/zRive/DvQvTXvbiWu5a8n7dDd8w6vmSiXmE0OPQvyCInWH8MyGOLwxS3OW560 # STkKxgrCxq2u5bLZ2xWIUUVYODJxJxp/sfQn+N4sOiBpmLJZiWhub6e3dMNABQam # ASooPoI/E01mC8CzTfXhj38cbxV9Rad25UAqZaPDXVJihsMdYzaXht/a8/jyFqGa # J+HNpZfQ7l1jQeNbB5yHPgZ3BtEGsXUfFL5hYbXw3MYbBL7fQccOKO7eZS/sl/ah # XJbYANahRr1Z85elCUtIEJmAH9AAKcWxm6U/RXceNcbSoqKfenoi+kiVH6v7RyOA # 9Z74v2u3S5fi63V4GuzqN5l5GEv/1rMjaHXmr/r8i+sLgOppO6/8MO0ETI7f33Vt # Y5E90Z1WTk+/gFcioXgRMiF670EKsT/7qMykXcGhiJtXcVZOSEXAQsmbdlsKgEhr # /Xmfwb1tbWrJUnMTDXpQzTGCGgkwghoFAgEBMIGVMH4xCzAJBgNVBAYTAlVTMRMw # EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN # aWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNp # Z25pbmcgUENBIDIwMTECEzMAAASFXpnsDlkvzdcAAAAABIUwDQYJYIZIAWUDBAIB # BQCgga4wGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEO # MAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEID/eYhAgddqE4tFYSrqMeT6e # kFAvA6r5uk6ywSWNfS3vMEIGCisGAQQBgjcCAQwxNDAyoBSAEgBNAGkAYwByAG8A # cwBvAGYAdKEagBhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20wDQYJKoZIhvcNAQEB # BQAEggEALC+NX1o5cmST9epLifJNWhwhpZ9QXTG7wDH+hF1a9jFdyld63KaT6kkB # nBDnnU/oFToYuKXmA470vSEtMo6XTjkFDZdw1j+e91+sfjDrWb+g9cfz0nWgruzH # UY62KEIDh0+gCiKsAMh8sbHHU7wm894U1+/8zCQzz++4Hsvja3YgIUDpfoPSdETy # H5yi9wKc5Rb/OZ/Fd1WGfcYePkOFePHeLFCS7RQ2T//6s+QcMDETBImB3r8OL8FM # TGgkVnOAJVlyqZWRGTMZK4x8TXntvgiVzX+5CFmpltdKTUfcVKD+pmx7hhmAcd1C # IRcWxSRz/KGwtY99kB4Fg6+1iENqHaGCF5MwghePBgorBgEEAYI3AwMBMYIXfzCC # F3sGCSqGSIb3DQEHAqCCF2wwghdoAgEDMQ8wDQYJYIZIAWUDBAIBBQAwggFRBgsq # hkiG9w0BCRABBKCCAUAEggE8MIIBOAIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFl # AwQCAQUABCCdN036nMEgs4NEUBZdpzSHVlT7uvTnNOYRPGrd7xMq7QIGaW+u4MLK # GBIyMDI2MDEyODAyNTAxOC44MlowBIACAfSggdGkgc4wgcsxCzAJBgNVBAYTAlVT # MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK # ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVy # aWNhIE9wZXJhdGlvbnMxJzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjo5NjAwLTA1 # RTAtRDk0NzElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaCC # EeowggcgMIIFCKADAgECAhMzAAACBNjgDgeXMliYAAEAAAIEMA0GCSqGSIb3DQEB # CwUAMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH # EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNV # BAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMB4XDTI1MDEzMDE5NDI0 # N1oXDTI2MDQyMjE5NDI0N1owgcsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo # aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y # cG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlvbnMx # JzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjo5NjAwLTA1RTAtRDk0NzElMCMGA1UE # AxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZTCCAiIwDQYJKoZIhvcNAQEB # BQADggIPADCCAgoCggIBAPDdJtx57Z3rq+RYZMheF8aqqBAbFBdOerjheVS83MVK # 3sQu07gH3f2PBkVfsOtG3/h+nMY2QV0alzsQvlLzqopi/frR5eNb58i/WUCoMPfV # 3+nwCL38BnPwz3nOjSsOkrZyzP1YDJH0W1QPHnZU6z2o/f+mCke+BS8Pyzr/co0h # POazxALW0ndMzDVxGf0JmBUhjPDaIP9m85bSxsX8NF2AzxR23GMUgpNdNoj9smGx # CB7dPBrIpDaPzlFp8UVUJHn8KFqmSsFBYbA0Vo/OmZg3jqY+I69TGuIhIL2dD8as # NdQlbMsOZyGuavZtoAEl6+/DfVRiVOUtljrNSaOSBpF+mjN34aWr1NjYTcOCWvo+ # 1MQqA+7aEzq/w2JTmdO/GEOfF2Zx/xQ3uCh5WUQtds6buPzLDXEz0jLJC5QxaSis # Fo3/mv2DiW9iQyiFFcRgHS0xo4+3QWZmZAwsEWk1FWdcFNriFpe+fVp0qu9PPxWV # +cfGQfquID+HYCWphaG/RhQuwRwedoNaCoDb2vL6MfT3sykn8UcYfGT532QfYvlo # k+kBi42Yw08HsUNM9YDHsCmOv8nkyFTHSLTuBXZusBn0n1EeL58w9tL5CbgCicLm # I5OP50oK21VGz6Moq47rcIvCqWWO+dQKa5Jq85fnghc60pwVmR8N05ntwTgOKg/V # AgMBAAGjggFJMIIBRTAdBgNVHQ4EFgQUGnV2S0Bwalb8qbqqb6+7gzUZol8wHwYD # VR0jBBgwFoAUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXwYDVR0fBFgwVjBUoFKgUIZO # aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIw # VGltZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSkuY3JsMGwGCCsGAQUFBwEBBGAwXjBc # BggrBgEFBQcwAoZQaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0 # cy9NaWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIwMjAxMCgxKS5jcnQwDAYD # VR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMC # B4AwDQYJKoZIhvcNAQELBQADggIBAF5y/qxHDYdMszJQLVYkn4VH4OAD0mS/SUaw # i3jLr0KY6PxHregVuFKZx2lqTGo1uvy/13JNvhEPI2q2iGKJdu2teZArlfvL9D74 # XTMyi1O1OlM+8bd6W3JX8u87Xmasug1DtbhUfnxou3TfS05HGzxWcBBAXkGZBAw6 # 5r4RCAfh/UXi4XquXcQLXskFInTCMdJ5r+fRZiIc9HSqTP81EB/yVJRRXSBsgxrA # YiOfv5ErIKv7yXXF02Qr8XRRi5feEbScT71ZzQvgD96eW5Q3s9r285XpWLcE4lJP # RFj9rHuJnjmV4zySoLDsEU9xMiRbPGmOvacK2KueTDs4FDoU2DAi4C9g1NTuvrRb # jbVgU4vmlOwxlw0M46wDTXG/vKYIXrOScwalEe7DRFvYEAkL2q5TsJdZsxsAkt1n # pcg0pquJKYJff8wt3Nxblc7JwrRCGhE1F/hapdGyEQFpjbKYm8c7jyhJJj+Sm5i8 # FLeWMAC4s3tGnyNZLu33XqloZ4Tumuas/0UmyjLUsUqYWdb6+DjcA2EHK4ARer0J # rLmjsrYfk0WdHnCP9ItErArWLJRf3bqLVMS+ISICH89XIlsAPiSiKmKDbyn/ocO6 # Jg5nTBSSb9rlbyisiOg51TdewniLTwJ82nkjvcKy8HlA9gxwukX007/Uu+hADDdQ # 90vnkzkdMIIHcTCCBVmgAwIBAgITMwAAABXF52ueAptJmQAAAAAAFTANBgkqhkiG # 9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO # BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEy # MDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIw # MTAwHhcNMjEwOTMwMTgyMjI1WhcNMzAwOTMwMTgzMjI1WjB8MQswCQYDVQQGEwJV # UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE # ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGlt # ZS1TdGFtcCBQQ0EgMjAxMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB # AOThpkzntHIhC3miy9ckeb0O1YLT/e6cBwfSqWxOdcjKNVf2AX9sSuDivbk+F2Az # /1xPx2b3lVNxWuJ+Slr+uDZnhUYjDLWNE893MsAQGOhgfWpSg0S3po5GawcU88V2 # 9YZQ3MFEyHFcUTE3oAo4bo3t1w/YJlN8OWECesSq/XJprx2rrPY2vjUmZNqYO7oa # ezOtgFt+jBAcnVL+tuhiJdxqD89d9P6OU8/W7IVWTe/dvI2k45GPsjksUZzpcGkN # yjYtcI4xyDUoveO0hyTD4MmPfrVUj9z6BVWYbWg7mka97aSueik3rMvrg0XnRm7K # MtXAhjBcTyziYrLNueKNiOSWrAFKu75xqRdbZ2De+JKRHh09/SDPc31BmkZ1zcRf # NN0Sidb9pSB9fvzZnkXftnIv231fgLrbqn427DZM9ituqBJR6L8FA6PRc6ZNN3SU # HDSCD/AQ8rdHGO2n6Jl8P0zbr17C89XYcz1DTsEzOUyOArxCaC4Q6oRRRuLRvWoY # WmEBc8pnol7XKHYC4jMYctenIPDC+hIK12NvDMk2ZItboKaDIV1fMHSRlJTYuVD5 # C4lh8zYGNRiER9vcG9H9stQcxWv2XFJRXRLbJbqvUAV6bMURHXLvjflSxIUXk8A8 # FdsaN8cIFRg/eKtFtvUeh17aj54WcmnGrnu3tz5q4i6tAgMBAAGjggHdMIIB2TAS # BgkrBgEEAYI3FQEEBQIDAQABMCMGCSsGAQQBgjcVAgQWBBQqp1L+ZMSavoKRPEY1 # Kc8Q/y8E7jAdBgNVHQ4EFgQUn6cVXQBeYl2D9OXSZacbUzUZ6XIwXAYDVR0gBFUw # UzBRBgwrBgEEAYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNy # b3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMBMGA1UdJQQMMAoG # CCsGAQUFBwMIMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIB # hjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fO # mhjEMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9w # a2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNybDBaBggr # BgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0LmNv # bS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MA0GCSqGSIb3 # DQEBCwUAA4ICAQCdVX38Kq3hLB9nATEkW+Geckv8qW/qXBS2Pk5HZHixBpOXPTEz # tTnXwnE2P9pkbHzQdTltuw8x5MKP+2zRoZQYIu7pZmc6U03dmLq2HnjYNi6cqYJW # AAOwBb6J6Gngugnue99qb74py27YP0h1AdkY3m2CDPVtI1TkeFN1JFe53Z/zjj3G # 82jfZfakVqr3lbYoVSfQJL1AoL8ZthISEV09J+BAljis9/kpicO8F7BUhUKz/Aye # ixmJ5/ALaoHCgRlCGVJ1ijbCHcNhcy4sa3tuPywJeBTpkbKpW99Jo3QMvOyRgNI9 # 5ko+ZjtPu4b6MhrZlvSP9pEB9s7GdP32THJvEKt1MMU0sHrYUP4KWN1APMdUbZ1j # dEgssU5HLcEUBHG/ZPkkvnNtyo4JvbMBV0lUZNlz138eW0QBjloZkWsNn6Qo3GcZ # KCS6OEuabvshVGtqRRFHqfG3rsjoiV5PndLQTHa1V1QJsWkBRH58oWFsc/4Ku+xB # Zj1p/cvBQUl+fpO+y/g75LcVv7TOPqUxUYS8vwLBgqJ7Fx0ViY1w/ue10CgaiQuP # Ntq6TPmb/wrpNPgkNWcr4A245oyZ1uEi6vAnQj0llOZ0dFtq0Z4+7X6gMTN9vMvp # e784cETRkPHIqzqKOghif9lwY1NNje6CbaUFEMFxBmoQtB1VM1izoXBm8qGCA00w # ggI1AgEBMIH5oYHRpIHOMIHLMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu # Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv # cmF0aW9uMSUwIwYDVQQLExxNaWNyb3NvZnQgQW1lcmljYSBPcGVyYXRpb25zMScw # JQYDVQQLEx5uU2hpZWxkIFRTUyBFU046OTYwMC0wNUUwLUQ5NDcxJTAjBgNVBAMT # HE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2WiIwoBATAHBgUrDgMCGgMVALo9 # gdHD371If7WnDLqrNUbeT2VuoIGDMIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNV # BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv # c29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAg # UENBIDIwMTAwDQYJKoZIhvcNAQELBQACBQDtI2aNMCIYDzIwMjYwMTI3MTYzMDA1 # WhgPMjAyNjAxMjgxNjMwMDVaMHQwOgYKKwYBBAGEWQoEATEsMCowCgIFAO0jZo0C # AQAwBwIBAAICJeMwBwIBAAICEfAwCgIFAO0kuA0CAQAwNgYKKwYBBAGEWQoEAjEo # MCYwDAYKKwYBBAGEWQoDAqAKMAgCAQACAwehIKEKMAgCAQACAwGGoDANBgkqhkiG # 9w0BAQsFAAOCAQEAIj99TAtsPMfl7bsC1hNDpAgUwN5LI+c8eH8PFj4SB+YYJa94 # EiPGpTwPxuAiiFnVfh0WwfCKqHq3lmP9ySSPhgY6HcafE/WWqgnjk/CYVJZ7Keoh # WdnsV8BuVciNDo0tGa+jR5PQCwp6FAJ0tivtSQu2sefTvlP8kzEifug/TD7395EW # L7Wjd0i+LzIK0wa1eheTYeyjyPYqih/KgNv9nCzDDzVaKK/4nmKfyu6+mj4Rx14c # Mg1sr/DGQRwIIXBT1Z9PuIptEM5yCBQ/z+QeWmnHzbxsbYdnvNgWzAPF2DdGODbu # X2b7WqmSsIGSvXqKykT3qITBX7zl4sSzHOEEYjGCBA0wggQJAgEBMIGTMHwxCzAJ # BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jv # c29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAACBNjgDgeXMliYAAEAAAIEMA0G # CWCGSAFlAwQCAQUAoIIBSjAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwLwYJ # KoZIhvcNAQkEMSIEIOepIxsslVagACz4e/ZIABIsHgd96oGndO9I99APjyytMIH6 # BgsqhkiG9w0BCRACLzGB6jCB5zCB5DCBvQQg+e14Zf1bCrxV0kzqaN/HUYQmy7v/ # qRTqXRJLmtx5uf4wgZgwgYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz # aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENv # cnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAx # MAITMwAAAgTY4A4HlzJYmAABAAACBDAiBCCAufaDQpoV33gcnD8quEg9Cv3lusLr # Q43vahnqp8o33DANBgkqhkiG9w0BAQsFAASCAgDCR6746H1VbnHLdkl9mFNjXTRZ # RfLldAE3R2k0lhIIV1nwkcTV7RQx9LwsDM2oT4JsOv/mZeOqjrrZ6EEOGHORg6QA # NFLpt/8C3h4ldRqcPYQZEAtF1eFhTeygCUQzhK4hDCTf2clude3a+DDCvfSgqj6i # 9EZ3XXM7CTCBqRDiOrKn9QbgZpaAW+CXAGNe853mHJIfkMfym60Rta9M9ZqnlgKq # LAwTIi6USaYSYH3BiMeigICYGo6fj/8toIYLf9T1hF2trUyBbH3Rm03fsQOwWhq9 # Aknfxg+tI/PlnwoWHh9jgKCQ+PfgZA/lQPAR1O+zJwNunDWcOYOJkvb+tAMc245w # Rh6cVbnpz2XKsl8kOCaq4KrfCq97eAD7XCdvBMviOuah3mUd8dv+wy9M0tvhcCA9 # 5fa9htNJD+oPAmwklCsatG5YgK6fosXZfEwH2Q/vU5rDT5vgpJMGZA8k5+e3qDMr # xRTzz0FHEyPLoSgFDQ9dR4OBQbgntRHfTlomwx57lwBxQVvwss/YEUdWkqQ/KHAK # EhlZ6VmjDjIjrOG3mV18FsW1cPBS/YI3bYadIDH6QZ0iPc64rpFxZxYEjrzO2dF5 # v/TbvupBb6Pe9yrlyGsqBJVvUcmVkTS2Q+uUk1dqWX+iFdqAbTKkJkF0ttOb92/l # /N83BaRTkdcJ/k6LyA== # SIG # End signature block |