Public/Invoke-OwnerLensLight.ps1
|
function Invoke-OwnerLensLight { [CmdletBinding()] param( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] [ValidateNotNullOrEmpty()] [string]$EnterpriseApplication, [string]$TenantId = "", [string]$SubscriptionIds = "", [ValidateRange(1, 3650)] [int]$ActivityDays = 30, [ValidateRange(1, 1000000)] [int]$MaxActivityRecords = 5000, [string]$LogAnalyticsWorkspaceId = "", [ValidateRange(1, 1000000)] [int]$MaxBlobReadRecords = 5000, [string[]]$BlobReadOperationNames = @("GetBlob", "PutBlob", "PutBlock", "PutBlockList", "AppendBlock", "CopyBlob"), [ValidateNotNullOrEmpty()] [string[]]$Scopes = @("Application.Read.All", "Directory.Read.All", "Group.Read.All"), [string[]]$UserOwnerTagNames = @("userOwner", "technicalOwner", "businessOwner"), [string[]]$GroupOwnerTagNames = @("groupOwner", "ownerGroup", "teamOwner", "team"), [string[]]$TagOwnerTagNames = @("owner", "serviceOwner", "costCenter", "costCentre", "cost-center", "cost_center"), [string]$OutputPath = "", [switch]$OutputJson, [switch]$OutputTable, [switch]$SkipActivityLogs, [switch]$SkipLogin ) begin { $ErrorActionPreference = "Stop" function Write-ProgressLine { param([string]$Message) $timestamp = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss") Write-Host "[$timestamp] $Message" } try { Import-Module Microsoft.Graph.Authentication -ErrorAction Stop } catch { throw "Microsoft Graph PowerShell module missing: Microsoft.Graph.Authentication. Install: Install-Module Microsoft.Graph -Scope CurrentUser" } if (-not (Get-Command Get-AzContext -ErrorAction SilentlyContinue)) { throw "Az PowerShell module missing. Install: Install-Module Az -Scope CurrentUser" } if (-not (Get-Command Invoke-AzRestMethod -ErrorAction SilentlyContinue)) { throw "Invoke-AzRestMethod missing. Update Az.Accounts: Update-Module Az.Accounts" } $graphContext = Get-MgContext if (-not $SkipLogin -and -not $graphContext) { Write-ProgressLine "Microsoft Graph context not found. Starting Connect-MgGraph." $connectParams = @{ Scopes = $Scopes } if (-not [string]::IsNullOrWhiteSpace($TenantId)) { $connectParams.TenantId = $TenantId } Connect-MgGraph @connectParams | Out-Null } $azureContext = Get-AzContext if (-not $SkipLogin -and -not $azureContext) { Write-ProgressLine "Azure context not found. Starting Connect-AzAccount." Connect-AzAccount | Out-Null } } process { Write-ProgressLine "Resolving Enterprise Application: $EnterpriseApplication" $servicePrincipal = Resolve-EnterpriseApplication -EnterpriseApplication $EnterpriseApplication Write-ProgressLine "Resolved $($servicePrincipal.displayName) (objectId=$($servicePrincipal.objectId), appId=$($servicePrincipal.appId))" Write-ProgressLine "Loading Microsoft Graph dependency evidence" $graphDependencies = Get-GraphDependencies -ServicePrincipal $servicePrincipal Write-ProgressLine "Loading Azure RBAC/resource/activity dependency evidence" $azureDependencies = Get-AzureDependencies ` -ServicePrincipal $servicePrincipal ` -SubscriptionIds $SubscriptionIds ` -ActivityDays $ActivityDays ` -MaxActivityRecords $MaxActivityRecords ` -LogAnalyticsWorkspaceId $LogAnalyticsWorkspaceId ` -MaxBlobReadRecords $MaxBlobReadRecords ` -BlobReadOperationNames $BlobReadOperationNames ` -SkipActivityLogs:$SkipActivityLogs $report = [pscustomobject]@{ meta = [pscustomobject]@{ reportType = "enterpriseApplicationDependencies" createdAt = (Get-Date).ToUniversalTime().ToString("o") activityDays = $ActivityDays activityStartTime = $azureDependencies.activityStartTime maxActivityRecords = $MaxActivityRecords logAnalyticsWorkspaceId = $azureDependencies.logAnalyticsWorkspaceId maxBlobReadRecords = $azureDependencies.maxBlobReadRecords blobReadOperationNames = @($BlobReadOperationNames) activitySkipped = [bool]$SkipActivityLogs requestedSubscriptions = @($azureDependencies.requestedSubscriptions) ownerTagConfiguration = [pscustomobject]@{ userOwnerTagNames = @($UserOwnerTagNames) groupOwnerTagNames = @($GroupOwnerTagNames) tagOwnerTagNames = @($TagOwnerTagNames) } } enterpriseApplication = $servicePrincipal summary = [pscustomobject]@{ azureSubscriptions = @($azureDependencies.subscriptions).Count azureRoleAssignments = @($azureDependencies.roleAssignments).Count azureDependencyScopes = @($azureDependencies.resourceDependencies).Count azureActivityRecords = @($azureDependencies.activityEvidence).Count azureRbacScopeActivityRecords = @($azureDependencies.rbacScopeActivityEvidence).Count azureRbacScopeActivityCallers = @($azureDependencies.rbacScopeActivityCallers).Count azureStorageAccountsWithRbac = @($azureDependencies.storageAccountsWithRbac).Count azureBlobReadRecords = @($azureDependencies.blobReadEvidence).Count azureBlobReadCallers = @($azureDependencies.blobReadCallers).Count graphAppRoleAssignments = @($graphDependencies.appRoleAssignments).Count graphDelegatedPermissionGrants = @($graphDependencies.oauth2PermissionGrants).Count graphGroupMemberships = @($graphDependencies.memberOf).Count graphResourceServicePrincipals = @($graphDependencies.resourceServicePrincipals).Count owners = @($graphDependencies.owners).Count } azure = [pscustomobject]@{ subscriptions = @($azureDependencies.subscriptions) roleAssignments = @($azureDependencies.roleAssignments) coAssignedRoleCandidates = @($azureDependencies.coAssignedRoleCandidates) resourceDependencies = @($azureDependencies.resourceDependencies) activityEvidence = @($azureDependencies.activityEvidence) rbacScopeActivityEvidence = @($azureDependencies.rbacScopeActivityEvidence) rbacScopeActivityCallers = @($azureDependencies.rbacScopeActivityCallers) storageAccountsWithRbac = @($azureDependencies.storageAccountsWithRbac) blobReadEvidence = @($azureDependencies.blobReadEvidence) blobReadCallers = @($azureDependencies.blobReadCallers) } graph = $graphDependencies notes = @( "Azure RBAC scopes show where the Enterprise Application service principal has assigned access.", "Azure Monitor activity evidence is low-confidence usage evidence from the selected activity window; it is not proof of ownership.", "Azure RBAC scope activity callers show recent management-plane activity under scopes where the Enterprise Application service principal has RBAC; data-plane access requires resource diagnostic logs.", "Azure blob data-plane evidence is available only when -LogAnalyticsWorkspaceId points to a workspace that receives StorageBlobLogs from the relevant storage accounts.", "Microsoft Graph app role assignments and delegated permission grants show API dependencies." ) } $report | Add-Member -MemberType NoteProperty -Name ownerCandidates -Value @(Get-OwnerCandidates ` -Report $report ` -UserOwnerTagNames $UserOwnerTagNames ` -GroupOwnerTagNames $GroupOwnerTagNames ` -TagOwnerTagNames $TagOwnerTagNames) if (-not [string]::IsNullOrWhiteSpace($OutputPath)) { $resolvedOutputPath = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($OutputPath) $outputDirectory = Split-Path -Parent $resolvedOutputPath if (-not [string]::IsNullOrWhiteSpace($outputDirectory)) { New-Item -ItemType Directory -Path $outputDirectory -Force | Out-Null } $report | ConvertTo-Json -Depth 40 | Set-Content -LiteralPath $resolvedOutputPath -Encoding UTF8 Write-ProgressLine "Wrote dependency report: $resolvedOutputPath" } if ($OutputJson) { return ($report | ConvertTo-Json -Depth 40) } if ($OutputTable) { return (Format-OwnerCandidateTable -Candidates @($report.ownerCandidates)) } Format-DependencyReport -Report $report return $report } } # SIG # Begin signature block # MII9MAYJKoZIhvcNAQcCoII9ITCCPR0CAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDqxc9QdKNJBHhA # 0QLb9t7S4s/TM3ovmrsU5fd+9UQc5KCCIfYwggXMMIIDtKADAgECAhBUmNLR1FsZ # lUgTecgRwIeZMA0GCSqGSIb3DQEBDAUAMHcxCzAJBgNVBAYTAlVTMR4wHAYDVQQK # ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01pY3Jvc29mdCBJZGVu # dGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAy # MDAeFw0yMDA0MTYxODM2MTZaFw00NTA0MTYxODQ0NDBaMHcxCzAJBgNVBAYTAlVT # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01pY3Jv # c29mdCBJZGVudGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRo # b3JpdHkgMjAyMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALORKgeD # Bmf9np3gx8C3pOZCBH8Ppttf+9Va10Wg+3cL8IDzpm1aTXlT2KCGhFdFIMeiVPvH # or+Kx24186IVxC9O40qFlkkN/76Z2BT2vCcH7kKbK/ULkgbk/WkTZaiRcvKYhOuD # PQ7k13ESSCHLDe32R0m3m/nJxxe2hE//uKya13NnSYXjhr03QNAlhtTetcJtYmrV # qXi8LW9J+eVsFBT9FMfTZRY33stuvF4pjf1imxUs1gXmuYkyM6Nix9fWUmcIxC70 # ViueC4fM7Ke0pqrrBc0ZV6U6CwQnHJFnni1iLS8evtrAIMsEGcoz+4m+mOJyoHI1 # vnnhnINv5G0Xb5DzPQCGdTiO0OBJmrvb0/gwytVXiGhNctO/bX9x2P29Da6SZEi3 # W295JrXNm5UhhNHvDzI9e1eM80UHTHzgXhgONXaLbZ7LNnSrBfjgc10yVpRnlyUK # xjU9lJfnwUSLgP3B+PR0GeUw9gb7IVc+BhyLaxWGJ0l7gpPKWeh1R+g/OPTHU3mg # trTiXFHvvV84wRPmeAyVWi7FQFkozA8kwOy6CXcjmTimthzax7ogttc32H83rwjj # O3HbbnMbfZlysOSGM1l0tRYAe1BtxoYT2v3EOYI9JACaYNq6lMAFUSw0rFCZE4e7 # swWAsk0wAly4JoNdtGNz764jlU9gKL431VulAgMBAAGjVDBSMA4GA1UdDwEB/wQE # AwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIftJqhSobyhmYBAcnz1AQ # T2ioojAQBgkrBgEEAYI3FQEEAwIBADANBgkqhkiG9w0BAQwFAAOCAgEAr2rd5hnn # LZRDGU7L6VCVZKUDkQKL4jaAOxWiUsIWGbZqWl10QzD0m/9gdAmxIR6QFm3FJI9c # Zohj9E/MffISTEAQiwGf2qnIrvKVG8+dBetJPnSgaFvlVixlHIJ+U9pW2UYXeZJF # xBA2CFIpF8svpvJ+1Gkkih6PsHMNzBxKq7Kq7aeRYwFkIqgyuH4yKLNncy2RtNwx # AQv3Rwqm8ddK7VZgxCwIo3tAsLx0J1KH1r6I3TeKiW5niB31yV2g/rarOoDXGpc8 # FzYiQR6sTdWD5jw4vU8w6VSp07YEwzJ2YbuwGMUrGLPAgNW3lbBeUU0i/OxYqujY # lLSlLu2S3ucYfCFX3VVj979tzR/SpncocMfiWzpbCNJbTsgAlrPhgzavhgplXHT2 # 6ux6anSg8Evu75SjrFDyh+3XOjCDyft9V77l4/hByuVkrrOj7FjshZrM77nq81YY # uVxzmq/FdxeDWds3GhhyVKVB0rYjdaNDmuV3fJZ5t0GNv+zcgKCf0Xd1WF81E+Al # GmcLfc4l+gcK5GEh2NQc5QfGNpn0ltDGFf5Ozdeui53bFv0ExpK91IjmqaOqu/dk # ODtfzAzQNb50GQOmxapMomE2gj4d8yu8l13bS3g7LfU772Aj6PXsCyM2la+YZr9T # 03u4aUoqlmZpxJTG9F9urJh4iIAGXKKy7aIwggaoMIIEkKADAgECAhMzAASy5NjH # +PRKezsKAAAABLLkMA0GCSqGSIb3DQEBDAUAMFoxCzAJBgNVBAYTAlVTMR4wHAYD # VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJ # RCBWZXJpZmllZCBDUyBBT0MgQ0EgMDQwHhcNMjYwODEyMDg1ODE4WhcNMjYwODE1 # MDg1ODE4WjBpMQswCQYDVQQGEwJQTDEXMBUGA1UECB4OAUEA8wBkAHoAawBpAGUx # DzANBgNVBAcTBldpZWx1bjEXMBUGA1UEChMOc29mdDRwbSBzcCB6b28xFzAVBgNV # BAMTDnNvZnQ0cG0gc3Agem9vMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC # AYEAiXC7gBUSO8amBSo2+j0tuOkycf07cqnmxd4FeidgU+njUj4DwajTsLkUiq7g # F2O8XMLDRxHCxW1jtCYH+RQgQU9QS1l0vTC7l/BlU+2FslURQDrnm1qBIx2vRW3S # sH0JWH6ZnmP1PeuRaemM4OCHSXZKL04KXuM7dEo7zEGwcpXEbIy0Ehn6rSQHLLYR # oFNK2ND155poVmNnho0AikOfFNQ5Zmt4002eBI1jBbcWaN1vR4N5XQfYUKd2NnWC # e2q3kUmqax6lCNDdg2hREsUe+uf6qCRLd3BbQpzr5GWxvaJAHeKoXGCf3oFbpjeT # /JzhxcK9hCmHJxTjMccJrwW9VZ7jeVlMCVXJVRPXURLur/HMU0/EF3c8xPVwtIvX # rDumUf861dT9gt1jGv9AoJElN/XOK9FLwo12rU8qyki+NV1tOHAiCfhBU5Dny3Gz # vEuzrgKE/R8/7J2JWL9Pgb28d8mlfPZezueETJHxd3Y6sDT5+PP7oOA3G/+1Q19/ # Tz7JAgMBAAGjggHWMIIB0jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA9 # BgNVHSUENjA0BgorBgEEAYI3YQEABggrBgEFBQcDAwYcKwYBBAGCN2GCycz3dYGA # 0Y0Tg469piSB0sq0aDAdBgNVHQ4EFgQUu/Bn01b97e842Q54MLTP04OW0tQwHwYD # VR0jBBgwFoAUayVB3vtrfP0YgAotf492XapzPbgwZwYDVR0fBGAwXjBcoFqgWIZW # aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIw # SUQlMjBWZXJpZmllZCUyMENTJTIwQU9DJTIwQ0ElMjAwNC5jcmwwdAYIKwYBBQUH # AQEEaDBmMGQGCCsGAQUFBzAChlhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtp # b3BzL2NlcnRzL01pY3Jvc29mdCUyMElEJTIwVmVyaWZpZWQlMjBDUyUyMEFPQyUy # MENBJTIwMDQuY3J0MFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIBFjNo # dHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5o # dG0wDQYJKoZIhvcNAQEMBQADggIBAIKCdHRzqgKHB6u7eb4VQqKJR1gf0grlY3QR # kqZC9yNemKXqlg0iL5NYDRsysjzSZyX4rKU/ZTe8qTuruyBprgW3vF80Dmm8S0+t # m/xbJeet2RRXJHj2NaEoavxrDZ1YWb7Dn+cgrPuQACE5Arhg2lYnwO19R+YOa/R+ # z/cwP4vkeQ0w9zVpl2xdFxmM/MiJWm8DEuNTtlNOE/NstBxMX8VW7nGL8qFreOZP # 8f78acfGhX76pcHHraQxeihVBT6NHlyyEcUi95TkjUP4jAYaYJ2WzBt5ISZX9yoS # 0khleUTBwMg0gFbDQz4JoT5tPQwky9C+LLhcIs+om/fCBEW1eyoZAUuW1lQI+bZ6 # EBALlBk5x3uGjyajZTCzVYxWJ6KARyEq1HdYi0se6Nm/FZGxb94yRXwGj7etZrk6 # TvjX4sLsDT1HeAPJ+eT4Ohgdmhzq98bdFqNKXx5NFrafdV+RZ1RiCOc1JBKdDc4g # os3dzZJ0mctzN9zZpbOIev2keYRf2Q3QA+wJ6B7WMOw0LltK4pBw8UEoFnlr69wN # Fe8rK/PmxfolP9BKB7n8jWsOlI/B7aP1oodsCH3N3lfuE07wp9YfUQ7squoZ2e4N # HsHWYVL88f2qfQlrCRMOmhlE1tFqY0gm/sQV2RvJlkUk1m5lgfPT8Z5p3UGEyhWM # 3bTmqS46MIIGqDCCBJCgAwIBAgITMwAEsuTYx/j0Sns7CgAAAASy5DANBgkqhkiG # 9w0BAQwFADBaMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv # cmF0aW9uMSswKQYDVQQDEyJNaWNyb3NvZnQgSUQgVmVyaWZpZWQgQ1MgQU9DIENB # IDA0MB4XDTI2MDgxMjA4NTgxOFoXDTI2MDgxNTA4NTgxOFowaTELMAkGA1UEBhMC # UEwxFzAVBgNVBAgeDgFBAPMAZAB6AGsAaQBlMQ8wDQYDVQQHEwZXaWVsdW4xFzAV # BgNVBAoTDnNvZnQ0cG0gc3Agem9vMRcwFQYDVQQDEw5zb2Z0NHBtIHNwIHpvbzCC # AaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAIlwu4AVEjvGpgUqNvo9Lbjp # MnH9O3Kp5sXeBXonYFPp41I+A8Go07C5FIqu4BdjvFzCw0cRwsVtY7QmB/kUIEFP # UEtZdL0wu5fwZVPthbJVEUA655tagSMdr0Vt0rB9CVh+mZ5j9T3rkWnpjODgh0l2 # Si9OCl7jO3RKO8xBsHKVxGyMtBIZ+q0kByy2EaBTStjQ9eeaaFZjZ4aNAIpDnxTU # OWZreNNNngSNYwW3Fmjdb0eDeV0H2FCndjZ1gntqt5FJqmsepQjQ3YNoURLFHvrn # +qgkS3dwW0Kc6+Rlsb2iQB3iqFxgn96BW6Y3k/yc4cXCvYQphycU4zHHCa8FvVWe # 43lZTAlVyVUT11ES7q/xzFNPxBd3PMT1cLSL16w7plH/OtXU/YLdYxr/QKCRJTf1 # zivRS8KNdq1PKspIvjVdbThwIgn4QVOQ58txs7xLs64ChP0fP+ydiVi/T4G9vHfJ # pXz2Xs7nhEyR8Xd2OrA0+fjz+6DgNxv/tUNff08+yQIDAQABo4IB1jCCAdIwDAYD # VR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwPQYDVR0lBDYwNAYKKwYBBAGCN2EB # AAYIKwYBBQUHAwMGHCsGAQQBgjdhgsnM93WBgNGNE4OOvaYkgdLKtGgwHQYDVR0O # BBYEFLvwZ9NW/e3vONkOeDC0z9ODltLUMB8GA1UdIwQYMBaAFGslQd77a3z9GIAK # LX+Pdl2qcz24MGcGA1UdHwRgMF4wXKBaoFiGVmh0dHA6Ly93d3cubWljcm9zb2Z0 # LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMElEJTIwVmVyaWZpZWQlMjBDUyUy # MEFPQyUyMENBJTIwMDQuY3JsMHQGCCsGAQUFBwEBBGgwZjBkBggrBgEFBQcwAoZY # aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQl # MjBJRCUyMFZlcmlmaWVkJTIwQ1MlMjBBT0MlMjBDQSUyMDA0LmNydDBUBgNVHSAE # TTBLMEkGBFUdIAAwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQu # Y29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMA0GCSqGSIb3DQEBDAUAA4IC # AQCCgnR0c6oChweru3m+FUKiiUdYH9IK5WN0EZKmQvcjXpil6pYNIi+TWA0bMrI8 # 0mcl+KylP2U3vKk7q7sgaa4Ft7xfNA5pvEtPrZv8WyXnrdkUVyR49jWhKGr8aw2d # WFm+w5/nIKz7kAAhOQK4YNpWJ8DtfUfmDmv0fs/3MD+L5HkNMPc1aZdsXRcZjPzI # iVpvAxLjU7ZTThPzbLQcTF/FVu5xi/Kha3jmT/H+/GnHxoV++qXBx62kMXooVQU+ # jR5cshHFIveU5I1D+IwGGmCdlswbeSEmV/cqEtJIZXlEwcDINIBWw0M+CaE+bT0M # JMvQviy4XCLPqJv3wgRFtXsqGQFLltZUCPm2ehAQC5QZOcd7ho8mo2Uws1WMViei # gEchKtR3WItLHujZvxWRsW/eMkV8Bo+3rWa5Ok741+LC7A09R3gDyfnk+DoYHZoc # 6vfG3RajSl8eTRa2n3VfkWdUYgjnNSQSnQ3OIKLN3c2SdJnLczfc2aWziHr9pHmE # X9kN0APsCege1jDsNC5bSuKQcPFBKBZ5a+vcDRXvKyvz5sX6JT/QSge5/I1rDpSP # we2j9aKHbAh9zd5X7hNO8KfWH1EO7KrqGdnuDR7B1mFS/PH9qn0JawkTDpoZRNbR # amNIJv7EFdkbyZZFJNZuZYHz0/Gead1BhMoVjN205qkuOjCCBygwggUQoAMCAQIC # EzMAAAAWMZKNkgJle5oAAAAAABYwDQYJKoZIhvcNAQEMBQAwYzELMAkGA1UEBhMC # VVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjE0MDIGA1UEAxMrTWlj # cm9zb2Z0IElEIFZlcmlmaWVkIENvZGUgU2lnbmluZyBQQ0EgMjAyMTAeFw0yNjAz # MjYxODExMjlaFw0zMTAzMjYxODExMjlaMFoxCzAJBgNVBAYTAlVTMR4wHAYDVQQK # ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJRCBW # ZXJpZmllZCBDUyBBT0MgQ0EgMDQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK # AoICAQDKVfrI2+gJMM/0bQ5OVKNdvOASzLbUUMvXuf+Vl7YGuofPaZHVo3gMHF5i # nT+GMSpIcfIZ9qtXU1UG68ry8vNbQtOL4Nm30ifXpqI1+ByiAWLO1YT0WnzG7XPO # uoTeeWsNZv5FmjxCsReBZvyzyzCyXZbu1EQfJxWTH4ebUwtAiW9rqMf9eDj/wYhi # EfNteJV3ZFeibD2ztCHr9JhFdd97XbnCHgQoTIqc02X5xlRKtUGBa++OtHBBjiJ/ # uwBnzTkqu4FjpZjQeJtrmda+ur1CT2jflWIB/ypn7u7V9tvW9wJbJYt/H2EtJ0GO # NWxJZ7TEu8jWPindOO3lzPP7UtzS/mVDV94HucWaltmsra6zSG8BoEJ87IM8QSb7 # vfm/O41FhYkUv89WIj5ES2O4kxyiMSfe95CMivCuYrRP2hKvx7egPMrWgDDBkxML # grKZO9hRNUMm8vk3w5b9SogHOyJVhxyFm8aFXfIxgqDF4S0g4bhbhnzljmSlCLlu # mMZcXFGDjpF2tNoAu3VGFGYtHtTSNVKvZpgB3b4ynaoDkbPf+Wg4523jt4VneasB # gZhC1srZI2NCnCBBfgjLq04pqEKAWEohyW2K29KSkkHvt5VaE1ac3Yt+oyiOzMS5 # 7tXwQDJLGvLg/OXFO0VNvczDndfIfXYExB/ab2PuMSwd5VIBOwIDAQABo4IB3DCC # AdgwDgYDVR0PAQH/BAQDAgGGMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRr # JUHe+2t8/RiACi1/j3ZdqnM9uDBUBgNVHSAETTBLMEkGBFUdIAAwQTA/BggrBgEF # BQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9z # aXRvcnkuaHRtMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMBIGA1UdEwEB/wQI # MAYBAf8CAQAwHwYDVR0jBBgwFoAU2UEpsA8PY2zvadf1zSmepEhqMOYwcAYDVR0f # BGkwZzBloGOgYYZfaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwv # TWljcm9zb2Z0JTIwSUQlMjBWZXJpZmllZCUyMENvZGUlMjBTaWduaW5nJTIwUENB # JTIwMjAyMS5jcmwwfQYIKwYBBQUHAQEEcTBvMG0GCCsGAQUFBzAChmFodHRwOi8v # d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMElEJTIw # VmVyaWZpZWQlMjBDb2RlJTIwU2lnbmluZyUyMFBDQSUyMDIwMjEuY3J0MA0GCSqG # SIb3DQEBDAUAA4ICAQAG1VBeVHTVRBljlcZD3IiMxwPyMjQyLNaEnVu5mODm2hRB # JfH8GsBLATmrHAc8F47jmk5CnpUPiIguCbw6Z/KVj4Dsoiq228NSLMLewFfGMri7 # uwNGLISC5ccp8vUdADDEIsS2dE+QI9OwkDpv3XuUD7d+hAgcLVcMOl1AsfEZtsZe # nhGvSYUrm/FuLq0BqEGL9GXM5c+Ho9q8o+Vn/S+GWQN2y+gkRO15s0kI05nUpq/d # OD4ri9rgVs6tipEd0YZqGgD+CZNiaZWrDTOQbNPncd2F9qOsUa20miYruoT5PwJA # aI+QQiTE2ZJeMJOkOpzhTUgqVMZwZidEUZKCqudaeQA08WwnkQMfKyHzaU8j48UL # cU4hUwvMsv7fSurOe9GAdRQCPvF8WcSK5oDHe8VVJM4tv6KKCm91HqLx9JamBgRI # 6R2SfY3nu26EGznu0rCg/769z8xWm4PVcC2ZaL6VlKVqFp1NsN8YqMyf5t+bbGVb # 09noFKcJG/UwyGlxRmQBlfeBUQx5/ytlzZzsEnhrJF9fTAfje8j3OdX5lEnePTFQ # LRlvzZFBqUXnIeQKv3fHQjC9m2fo/Z01DII/qp3d8LhGVUW0BCG04fRwHJNH8iqq # CG/qofMv+kym2AxBDnHzNgRjL60JOFiBgiurvLhYQNhB95KWojFA6shQnggkMTCC # B54wggWGoAMCAQICEzMAAAAHh6M0o3uljhwAAAAAAAcwDQYJKoZIhvcNAQEMBQAw # dzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjFI # MEYGA1UEAxM/TWljcm9zb2Z0IElkZW50aXR5IFZlcmlmaWNhdGlvbiBSb290IENl # cnRpZmljYXRlIEF1dGhvcml0eSAyMDIwMB4XDTIxMDQwMTIwMDUyMFoXDTM2MDQw # MTIwMTUyMFowYzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw # b3JhdGlvbjE0MDIGA1UEAxMrTWljcm9zb2Z0IElEIFZlcmlmaWVkIENvZGUgU2ln # bmluZyBQQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALLw # wK8ZiCji3VR6TElsaQhVCbRS/3pK+MHrJSj3Zxd3KU3rlfL3qrZilYKJNqztA9OQ # acr1AwoNcHbKBLbsQAhBnIB34zxf52bDpIO3NJlfIaTE/xrweLoQ71lzCHkD7A4A # s1Bs076Iu+mA6cQzsYYH/Cbl1icwQ6C65rU4V9NQhNUwgrx9rGQ//h890Q8JdjLL # w0nV+ayQ2Fbkd242o9kH82RZsH3HEyqjAB5a8+Ae2nPIPc8sZU6ZE7iRrRZywRmr # KDp5+TcmJX9MRff241UaOBs4NmHOyke8oU1TYrkxh+YeHgfWo5tTgkoSMoayqoDp # HOLJs+qG8Tvh8SnifW2Jj3+ii11TS8/FGngEaNAWrbyfNrC69oKpRQXY9bGH6jn9 # NEJv9weFxhTwyvx9OJLXmRGbAUXN1U9nf4lXezky6Uh/cgjkVd6CGUAf0K+Jw+GE # /5VpIVbcNr9rNE50Sbmy/4RTCEGvOq3GhjITbCa4crCzTTHgYYjHs1NbOc6brH+e # KpWLtr+bGecy9CrwQyx7S/BfYJ+ozst7+yZtG2wR461uckFu0t+gCwLdN0A6cFtS # RtR8bvxVFyWwTtgMMFRuBa3vmUOTnfKLsLefRaQcVTgRnzeLzdpt32cdYKp+dhr2 # ogc+qM6K4CBI5/j4VFyC4QFeUP2YAidLtvpXRRo3AgMBAAGjggI1MIICMTAOBgNV # HQ8BAf8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFNlBKbAPD2Ns # 72nX9c0pnqRIajDmMFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIBFjNo # dHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5o # dG0wGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwDwYDVR0TAQH/BAUwAwEB/zAf # BgNVHSMEGDAWgBTIftJqhSobyhmYBAcnz1AQT2ioojCBhAYDVR0fBH0wezB5oHeg # dYZzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0 # JTIwSWRlbnRpdHklMjBWZXJpZmljYXRpb24lMjBSb290JTIwQ2VydGlmaWNhdGUl # MjBBdXRob3JpdHklMjAyMDIwLmNybDCBwwYIKwYBBQUHAQEEgbYwgbMwgYEGCCsG # AQUFBzAChnVodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01p # Y3Jvc29mdCUyMElkZW50aXR5JTIwVmVyaWZpY2F0aW9uJTIwUm9vdCUyMENlcnRp # ZmljYXRlJTIwQXV0aG9yaXR5JTIwMjAyMC5jcnQwLQYIKwYBBQUHMAGGIWh0dHA6 # Ly9vbmVvY3NwLm1pY3Jvc29mdC5jb20vb2NzcDANBgkqhkiG9w0BAQwFAAOCAgEA # fyUqnv7Uq+rdZgrbVyNMul5skONbhls5fccPlmIbzi+OwVdPQ4H55v7VOInnmezQ # EeW4LqK0wja+fBznANbXLB0KrdMCbHQpbLvG6UA/Xv2pfpVIE1CRFfNF4XKO8XYE # a3oW8oVH+KZHgIQRIwAbyFKQ9iyj4aOWeAzwk+f9E5StNp5T8FG7/VEURIVWArbA # zPt9ThVN3w1fAZkF7+YU9kbq1bCR2YD+MtunSQ1Rft6XG7b4e0ejRA7mB2IoX5hN # h3UEauY0byxNRG+fT2MCEhQl9g2i2fs6VOG19CNep7SquKaBjhWmirYyANb0RJSL # WjinMLXNOAga10n8i9jqeprzSMU5ODmrMCJE12xS/NWShg/tuLjAsKP6SzYZ+1Ry # 358ZTFcx0FS/mx2vSoU8s8HRvy+rnXqyUJ9HBqS0DErVLjQwK8VtsBdekBmdTbQV # oCgPCqr+PDPB3xajYnzevs7eidBsM71PINK2BoE2UfMwxCCX3mccFgx6UsQeRSdV # VVNSyALQe6PT12418xon2iDGE81OGCreLzDcMAZnrUAx4XQLUz6ZTl65yPUiOh3k # 7Yww94lDf+8oG2oZmDh5O1Qe38E+M3vhKwmzIeoB1dVLlz4i3IpaDcR+iuGjH2Td # aC1ZOmBXiCRKJLj4DT2uhJ04ji+tHD6n58vhavFIrmcxghqQMIIajAIBATBxMFox # CzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzAp # BgNVBAMTIk1pY3Jvc29mdCBJRCBWZXJpZmllZCBDUyBBT0MgQ0EgMDQCEzMABLLk # 2Mf49Ep7OwoAAAAEsuQwDQYJYIZIAWUDBAIBBQCgXjAQBgorBgEEAYI3AgEMMQIw # ADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAvBgkqhkiG9w0BCQQxIgQgmizK # Gw5jVv2inEXMyWpWn+B2d1EO7ySe4LlAgRSJ7aswDQYJKoZIhvcNAQEBBQAEggGA # ZJz1idCEGebGcWh3yYI08jJcM7JSyzGonN6xsFXA7nPR7RpbAesGmZj3IdZujurI # 90WYv53akSi/dm3n1usfmgmXuJVEpIdZysRgZxxIKn8prpCr8b5zf1J7HObtZpQm # HN7hh8pbRkoy2raD0G7su21Gj5D5TO03cPg5YCSaaNii7DP6oUWyrx/O6xvD9kp3 # +JJCTzvt+5AaGVHL4rY4f2n06aQ7BYzn4OAL9gIULOonaqt73K0uYR0hDYH11ATi # 9sjqHeXJcoGae27T5txJ9E4+KUUjl4eJW1pIwE73VLVVOtNwNxdviEB0sL/Hd3Vh # gTlr/zjFJlk2EqL+nbQPHdYMdcBKQ7BeETJAUO9M1j2SQVqx5y1g7YokreCfhFh/ # mE418HxFwZ6FL/ajyhj9KSraG4BdsADtfIaTmtJo8ZXIJ9RdTsnmFrerXc2ExgMR # 3X2xiOBYkRWPnm7jTdIuZKfYHzFDKGwBSYWpxe4lpvonPKaqWz5k4SlCD7f3TCMF # oYIYEDCCGAwGCisGAQQBgjcDAwExghf8MIIX+AYJKoZIhvcNAQcCoIIX6TCCF+UC # AQMxDzANBglghkgBZQMEAgEFADCCAWEGCyqGSIb3DQEJEAEEoIIBUASCAUwwggFI # AgEBBgorBgEEAYRZCgMBMDEwDQYJYIZIAWUDBAIBBQAEIH4ywjD1Dw4Wub9m6QlV # owHFwZuF9iOkS0k5Sd2yg3JuAgZqX4ZNNPQYEjIwMjYwODEzMjA1NjMzLjI3WjAE # gAIB9KCB4aSB3jCB2zELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x # EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv # bjElMCMGA1UECxMcTWljcm9zb2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UE # CxMeblNoaWVsZCBUU1MgRVNOOjc4MDAtMDVFMC1EOTQ3MTUwMwYDVQQDEyxNaWNy # b3NvZnQgUHVibGljIFJTQSBUaW1lIFN0YW1waW5nIEF1dGhvcml0eaCCDyEwggeC # MIIFaqADAgECAhMzAAAABeXPD/9mLsmHAAAAAAAFMA0GCSqGSIb3DQEBDAUAMHcx # CzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBG # BgNVBAMTP01pY3Jvc29mdCBJZGVudGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0 # aWZpY2F0ZSBBdXRob3JpdHkgMjAyMDAeFw0yMDExMTkyMDMyMzFaFw0zNTExMTky # MDQyMzFaMGExCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y # YXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVzdGFtcGlu # ZyBDQSAyMDIwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnnznUmP9 # 4MWfBX1jtQYioxwe1+eXM9ETBb1lRkd3kcFdcG9/sqtDlwxKoVIcaqDb+omFio5D # HC4RBcbyQHjXCwMk/l3TOYtgoBjxnG/eViS4sOx8y4gSq8Zg49REAf5huXhIkQRK # e3Qxs8Sgp02KHAznEa/Ssah8nWo5hJM1xznkRsFPu6rfDHeZeG1Wa1wISvlkpOQo # oTULFm809Z0ZYlQ8Lp7i5F9YciFlyAKwn6yjN/kR4fkquUWfGmMopNq/B8U/pdoZ # kZZQbxNlqJOiBGgCWpx69uKqKhTPVi3gVErnc/qi+dR8A2MiAz0kN0nh7SqINGbm # w5OIRC0EsZ31WF3Uxp3GgZwetEKxLms73KG/Z+MkeuaVDQQheangOEMGJ4pQZH55 # ngI0Tdy1bi69INBV5Kn2HVJo9XxRYR/JPGAaM6xGl57Ei95HUw9NV/uC3yFjrhc0 # 87qLJQawSC3xzY/EXzsT4I7sDbxOmM2rl4uKK6eEpurRduOQ2hTkmG1hSuWYBunF # GNv21Kt4N20AKmbeuSnGnsBCd2cjRKG79+TX+sTehawOoxfeOO/jR7wo3liwkGdz # PJYHgnJ54UxbckF914AqHOiEV7xTnD1a69w/UTxwjEugpIPMIIE67SFZ2PMo27xj # lLAHWW3l1CEAFjLNHd3EQ79PUr8FUXetXr0CAwEAAaOCAhswggIXMA4GA1UdDwEB # /wQEAwIBhjAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQUa2koOjUvSGNAz3vY # r0npPtk92yEwVAYDVR0gBE0wSzBJBgRVHSAAMEEwPwYIKwYBBQUHAgEWM2h0dHA6 # Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0bTAT # BgNVHSUEDDAKBggrBgEFBQcDCDAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAP # BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFMh+0mqFKhvKGZgEByfPUBBPaKii # MIGEBgNVHR8EfTB7MHmgd6B1hnNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtp # b3BzL2NybC9NaWNyb3NvZnQlMjBJZGVudGl0eSUyMFZlcmlmaWNhdGlvbiUyMFJv # b3QlMjBDZXJ0aWZpY2F0ZSUyMEF1dGhvcml0eSUyMDIwMjAuY3JsMIGUBggrBgEF # BQcBAQSBhzCBhDCBgQYIKwYBBQUHMAKGdWh0dHA6Ly93d3cubWljcm9zb2Z0LmNv # bS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwSWRlbnRpdHklMjBWZXJpZmljYXRp # b24lMjBSb290JTIwQ2VydGlmaWNhdGUlMjBBdXRob3JpdHklMjAyMDIwLmNydDAN # BgkqhkiG9w0BAQwFAAOCAgEAX4h2x35ttVoVdedMeGj6TuHYRJklFaW4sTQ5r+k7 # 7iB79cSLNe+GzRjv4pVjJviceW6AF6ycWoEYR0LYhaa0ozJLU5Yi+LCmcrdovkl5 # 3DNt4EXs87KDogYb9eGEndSpZ5ZM74LNvVzY0/nPISHz0Xva71QjD4h+8z2XMOZz # Y7YQ0Psw+etyNZ1CesufU211rLslLKsO8F2aBs2cIo1k+aHOhrw9xw6JCWONNboZ # 497mwYW5EfN0W3zL5s3ad4Xtm7yFM7Ujrhc0aqy3xL7D5FR2J7x9cLWMq7eb0oYi # oXhqV2tgFqbKHeDick+P8tHYIFovIP7YG4ZkJWag1H91KlELGWi3SLv10o4KGag4 # 2pswjybTi4toQcC/irAodDW8HNtX+cbz0sMptFJK+KObAnDFHEsukxD+7jFfEV9H # h/+CSxKRsmnuiovCWIOb+H7DRon9TlxydiFhvu88o0w35JkNbJxTk4MhF/KgaXn0 # GxdH8elEa2Imq45gaa8D+mTm8LWVydt4ytxYP/bqjN49D9NZ81coE6aQWm88TwIf # 4R4YZbOpMKN0CyejaPNN41LGXHeCUMYmBx3PkP8ADHD1J2Cr/6tjuOOCztfp+o9N # c+ZoIAkpUcA/X2gSMkgHAPUvIdtoSAHEUKiBhI6JQivRepyvWcl+JYbYbBh7pmgA # XVswggeXMIIFf6ADAgECAhMzAAAAVyTTleCi6ckxAAAAAABXMA0GCSqGSIb3DQEB # DAUAMGExCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp # b24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVzdGFtcGluZyBD # QSAyMDIwMB4XDTI1MTAyMzIwNDY1M1oXDTI2MTAyMjIwNDY1M1owgdsxCzAJBgNV # BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w # HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jvc29m # dCBBbWVyaWNhIE9wZXJhdGlvbnMxJzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjo3 # ODAwLTA1RTAtRDk0NzE1MDMGA1UEAxMsTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGlt # ZSBTdGFtcGluZyBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK # AoICAQCxbKUKkwh9uLMktjWQ9c7ZyZfYdFa9FsCZ4pJnl7Hv+MLKZ1XsRqn4hzaK # pG1YOQop7mAvolXzTC2fkLaocks/FRgUo0bdSQeQAjbUygI35haeFPwr9i4+Jvr7 # r3vSN1t4UoiJkxbB3mGelf0neN6164R1dun8N8UErXkm4Pck7Na4Xay5AI+CpiNA # +T+Cmr7coIq1clFtdIJIn1i0hNTYgfCZ90TuXY99nXnjDTjWmj58N5OPSAk7NxX8 # m/npDQz7DX2MAqj8jk8TOstXUg9CeY/iivVfhFsleTw41fI459c7ErZUuk3GCSUr # XIB7NsU/a7OqKFpeRbWH0ZAsYQ0oRKd7PCB1Fos01pi2bwBP+lkdgnfmZlWqRl0w # hySlAcmT8XV9IvIMp4q0fhMLhxzcRIpQyAi2rTtlmbvgkKx+GatDWKNU0OLVKWf5 # AFqaALta+JluRCdx5BGr0Nj7qEA3A6tqwBlSJWvaQ+6PWMcM5fNQbg71BMrvQ/+h # dKpkA3WhO/dR8XwlMaYDGD6XVk87PnQxj3ocEPD/dsj/AEY28uTp8tWevEY3kHm6 # cX+Vi+ONZshR3IE9VCc84pe7TxJEdtjX0zUehZfo81m/6/NJ6pV5ZYcp0qMLcaNW # NtsamL4ktuLJopFLASqjj20ku+7r1xDt1axuSxqLhNRGdWPaYwIDAQABo4IByzCC # AccwHQYDVR0OBBYEFI6DyV4tNQ4CCUhn5uNemIPtEpKnMB8GA1UdIwQYMBaAFGtp # KDo1L0hjQM972K9J6T7ZPdshMGwGA1UdHwRlMGMwYaBfoF2GW2h0dHA6Ly93d3cu # bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFB1YmxpYyUyMFJT # QSUyMFRpbWVzdGFtcGluZyUyMENBJTIwMjAyMC5jcmwweQYIKwYBBQUHAQEEbTBr # MGkGCCsGAQUFBzAChl1odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2Nl # cnRzL01pY3Jvc29mdCUyMFB1YmxpYyUyMFJTQSUyMFRpbWVzdGFtcGluZyUyMENB # JTIwMjAyMC5jcnQwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcD # CDAOBgNVHQ8BAf8EBAMCB4AwZgYDVR0gBF8wXTBRBgwrBgEEAYI3TIN9AQEwQTA/ # BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2Nz # L1JlcG9zaXRvcnkuaHRtMAgGBmeBDAEEAjANBgkqhkiG9w0BAQwFAAOCAgEAcnXA # djzpmTlJQEM9jbl3+71glVpo1rvW7GNfhzI79cni48Q0JI7CRFOc2iA8vFMPQWDf # PhMV//ZP/QgVLF21ZW1OOHOuf5YsifN5FrBSFMIVWs8EkoRZWyGb4iDv+cHslsk3 # zz6W0iYFsvmRPVK0Et8bpSSwBwNs1JDDD3QJReEa54HGWdK+OQBfWiGI3XrLVsHa # zSu9DHwKx6mXYK4F59N8OswbNb+3M3HlhorYPw5bB6pNZlwaUk7hiNk0jzdxOtCC # F8eX/wBc4ePxxYvfAQWW1BCzbF5FgBvcp2eXughYopdZoFgljk/dA+yIL4NMynt6 # N1gpOtvf3p/eCv7Av8yzn9ne8hZk8km/Xyo3DjR9Q295GfDMxCfHx0zZsa5ddBnn # Ls/xpdPgckyjfj2pm2fhdDCJQT8MOn74xQvSSCO938N6jtevfvU8U89hvhNuhmGN # XXH37AIcOg6k0IG35W5dTvzK0l0rNDUm/ZwQ/UX0f3/BIuwwNS9YwTu72YYSU48N # k8xWvwC4ES4t1tNIR1ovCxkGmXPEsFyDGFn8KzfTIGG4TdCGpPVgNnalrnpF7E8D # ZJqw9xOhPqAmAnoTToGZnbNBM29Y6OzldCodti5dyh4NzB7ZRoLsQM4YPwaYsT0u # Kq1Cy5AIzu/sjbFH6w9lPYDH/zkeMiQz7czNMrUxggdDMIIHPwIBATB4MGExCzAJ # BgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNV # BAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwAhMz # AAAAVyTTleCi6ckxAAAAAABXMA0GCWCGSAFlAwQCAQUAoIIEnDARBgsqhkiG9w0B # CRACDzECBQAwGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJ # BTEPFw0yNjA4MTMyMDU2MzNaMC8GCSqGSIb3DQEJBDEiBCA2gFk8zV63AyRNW4Dw # TpQR0zm/4LO+TVrU+c7Iy/IuizCBuQYLKoZIhvcNAQkQAi8xgakwgaYwgaMwgaAE # IPU8n2S1BW5MZYhsos7h/VVQ6VRTb0BEISkNmYVMeNtSMHwwZaRjMGExCzAJBgNV # BAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMT # KU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwAhMzAAAA # VyTTleCi6ckxAAAAAABXMIIDXgYLKoZIhvcNAQkQAhIxggNNMIIDSaGCA0UwggNB # MIICKQIBATCCAQmhgeGkgd4wgdsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo # aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y # cG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlvbnMx # JzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjo3ODAwLTA1RTAtRDk0NzE1MDMGA1UE # AxMsTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZSBTdGFtcGluZyBBdXRob3JpdHmi # IwoBATAHBgUrDgMCGgMVAP0vMTmcQlEBQTZKzfFooo9cecvDoGcwZaRjMGExCzAJ # BgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNV # BAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwMA0G # CSqGSIb3DQEBCwUAAgUA7ihXITAiGA8yMDI2MDgxMzE0NDU1M1oYDzIwMjYwODE0 # MTQ0NTUzWjB0MDoGCisGAQQBhFkKBAExLDAqMAoCBQDuKFchAgEAMAcCAQACAhUZ # MAcCAQACAhJNMAoCBQDuKaihAgEAMDYGCisGAQQBhFkKBAIxKDAmMAwGCisGAQQB # hFkKAwKgCjAIAgEAAgMHoSChCjAIAgEAAgMBhqAwDQYJKoZIhvcNAQELBQADggEB # AAmaxhbks8ygOr50l/HYh74GxupcRHUAo4Wr6FCiFtTycynhpZGdYZF0AE+SOYev # q34tzXEb4gNlDs31p562oeDNetUMfxxbgLVHVSaYSiYHdMPNPAOs1CM4eR5zxKCa # 1DGiYbCJRpzT3MWd0BAvXu7fNs9S5Fbynh1mYuLcImgG6LJrqI9IOMGGZswBUQ0y # vrJRPEEsCp+Vzg/HJnpNPmmFzjrt/yGT7W8epBzY9j4Q2Fchg2UyxhQbmupfZemo # 7ZmhaMb+MKBTj3GBfhtp1x1D7W856yzRpIWcAe+8G+c8TokXL/mgNj9pjFurVyzQ # CsMmms19Uci2AO/qEAw6vRMwDQYJKoZIhvcNAQEBBQAEggIAgSoyqVZchcKwWC/1 # owQJjGN5bpvHiGoB+1+KxnPiqxQIaEU70rDra6NtnbX7ceYpJimQLXOukllZ40aQ # NtAdE2lY7EJKtHoZmCW7kAO3KOR8SZbEYzBg9IKLZIWF6BIjizE9KZFf100JIx65 # DcSVGOBM/LcXZx/3LpqBE7j3LtloNiMf5fTeKv/aSTdyR9bTvgWc/RrqQtY78x1G # b7t0NsGH0kdHQmot0lRQDX1J7++1koVqq+uuQC515VOWDXnoao9Jcz48mkZyokGg # fqWTryCBg2JSm6WZ4ZTnxf+HSkBjGBqtYh33ArORh7Goluw+l2g2jhMrhMzPQyKw # gb560Lq3UU1ce3DlnxdKwct3o+Rl+4pShyoMUEWHwm5VFoRgXXq+J0rztGL5KgsT # gHSP5ViHLqnuy7kiJBAGziPo8jDSgD8UtYE0Qpgqko/NrN0kPseI7VZEHpNzqpN1 # l//+AL4IEMnbDALHVwbjljf767UPpmh0dIQpeJ1+Ql16YDhk65QiPD4LL8s4ancq # iKx6VcK0oaVBo4864wrqinaAw/cl50Xt4bd6pEIL1ssMAsRI6AvomoOwWUO4XYww # zsGA3wpqQD4LNUKn/98D4ht1BLHh+Bz1O1YuGVf7Tnqo2wHsGEd1AuqDJrnPrwy4 # mWtbf5XcDEvSPews51ywc1h4u4A= # SIG # End signature block |