Private/Get-AzureMonitorActivityLogs.ps1

<#
.SYNOPSIS
Reads Azure Monitor activity logs for OwnerLens resource snapshots.
 
.DESCRIPTION
Fetches recent activity log records, normalizes caller and claim fields, and caches requests so resource snapshot collection can attach low-confidence activity evidence locally.
#>


if (-not $script:AzureActivityLogCache) {
  $script:AzureActivityLogCache = @{}
}

function Get-ActivityLogValue {
  param(
    [object]$Object,
    [string]$PropertyName
  )

  if (-not $Object) {
    return $null
  }

  $property = $Object.PSObject.Properties[$PropertyName]
  if (-not $property) {
    return $null
  }

  return $property.Value
}

function Get-ActivityLogField {
  param(
    [object]$Entry,
    [string]$PropertyName
  )

  $value = Get-ActivityLogValue $Entry $PropertyName
  if ($null -ne $value) {
    return $value
  }

  $properties = Get-ActivityLogValue $Entry "properties"
  return Get-ActivityLogValue $properties $PropertyName
}

function Get-ActivityLogClaim {
  param(
    [object]$Claims,
    [string[]]$ClaimNames
  )

  if (-not $Claims) {
    return $null
  }

  foreach ($claimName in $ClaimNames) {
    $value = Get-ActivityLogValue $Claims $claimName
    if ($null -ne $value -and -not [string]::IsNullOrWhiteSpace([string]$value)) {
      return $value
    }
  }

  return $null
}

function Get-ActivityLogCacheKey {
  param(
    [string]$SubscriptionId,
    [datetime]$StartTime,
    [int]$MaxRecord
  )

  $normalizedStartTime = $StartTime.ToUniversalTime().ToString("o")
  return "$SubscriptionId|$normalizedStartTime|$MaxRecord"
}

function Get-AzureMonitorActivityLogs {
  param(
    [string]$SubscriptionId,
    [datetime]$StartTime,
    [int]$MaxRecord,
    [int]$MaxRetryCount = 3,
    [int]$RetryDelaySeconds = 5
  )

  $logs = [System.Collections.Generic.List[object]]::new()
  if ($MaxRecord -le 0) {
    return $logs
  }

  $cacheKey = Get-ActivityLogCacheKey -SubscriptionId $SubscriptionId -StartTime $StartTime -MaxRecord $MaxRecord
  if ($script:AzureActivityLogCache.ContainsKey($cacheKey)) {
    return $script:AzureActivityLogCache[$cacheKey]
  }

  $endTime = Get-Date
  $filter = "eventTimestamp ge '$($StartTime.ToUniversalTime().ToString("o"))' and eventTimestamp le '$($endTime.ToUniversalTime().ToString("o"))'"
  $encodedFilter = [Uri]::EscapeDataString($filter)
  $requestPath = "/subscriptions/$SubscriptionId/providers/microsoft.insights/eventtypes/management/values?api-version=2015-04-01&`$filter=$encodedFilter"

  while ($requestPath -and $logs.Count -lt $MaxRecord) {
    $currentRequestPath = $requestPath
    $response = Invoke-OwnerLensRestRequestWithRetry `
      -OperationName "Azure Monitor activity log request" `
      -MaxRetryCount $MaxRetryCount `
      -RetryDelaySeconds $RetryDelaySeconds `
      -Request {
        if ($currentRequestPath -match "^https?://") {
          return Invoke-AzRestMethod -Method GET -Uri $currentRequestPath -ErrorAction Stop
        }

        return Invoke-AzRestMethod -Method GET -Path $currentRequestPath -ErrorAction Stop
      }

    $content = $response.Content | ConvertFrom-Json
    foreach ($entry in @($content.value)) {
      if ($logs.Count -ge $MaxRecord) {
        break
      }

      $operationName = Get-ActivityLogField $entry "operationName"
      $status = Get-ActivityLogField $entry "status"
      $subStatus = Get-ActivityLogField $entry "subStatus"
      $category = Get-ActivityLogField $entry "category"
      $resourceProviderName = Get-ActivityLogField $entry "resourceProviderName"
      $resourceType = Get-ActivityLogField $entry "resourceType"
      $authorization = Get-ActivityLogField $entry "authorization"
      $claims = Get-ActivityLogField $entry "claims"

      $logs.Add([pscustomobject]@{
        eventTimestamp = Get-ActivityLogField $entry "eventTimestamp"
        submissionTimestamp = Get-ActivityLogField $entry "submissionTimestamp"
        caller = Get-ActivityLogField $entry "caller"
        callerUserPrincipalName = Get-ActivityLogClaim $claims @(
          "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name",
          "unique_name",
          "upn",
          "preferred_username"
        )
        callerName = Get-ActivityLogClaim $claims @(
          "name",
          "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"
        )
        callerEmail = Get-ActivityLogClaim $claims @(
          "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
          "email",
          "emails",
          "preferred_username"
        )
        callerObjectId = Get-ActivityLogClaim $claims @(
          "http://schemas.microsoft.com/identity/claims/objectidentifier",
          "oid",
          "objectidentifier"
        )
        callerIdentityType = Get-ActivityLogClaim $claims @("idtyp")
        callerAppId = Get-ActivityLogClaim $claims @("appid", "azp")
        callerIpAddress = Get-ActivityLogClaim $claims @("ipaddr")
        callerTenantId = Get-ActivityLogClaim $claims @(
          "http://schemas.microsoft.com/identity/claims/tenantid",
          "tid"
        )
        operationName = Get-ActivityLogValue $operationName "localizedValue"
        operationNameValue = Get-ActivityLogValue $operationName "value"
        status = Get-ActivityLogValue $status "localizedValue"
        subStatus = Get-ActivityLogValue $subStatus "localizedValue"
        category = Get-ActivityLogValue $category "localizedValue"
        resourceGroupName = Get-ActivityLogField $entry "resourceGroupName"
        resourceId = Get-ActivityLogField $entry "resourceId"
        resourceProviderName = Get-ActivityLogValue $resourceProviderName "localizedValue"
        resourceType = Get-ActivityLogValue $resourceType "localizedValue"
        authorizationAction = Get-ActivityLogValue $authorization "action"
        authorizationScope = Get-ActivityLogValue $authorization "scope"
      }) | Out-Null
    }

    $requestPath = Get-ActivityLogValue $content "nextLink"
  }

  $script:AzureActivityLogCache[$cacheKey] = $logs
  return $script:AzureActivityLogCache[$cacheKey]
}

# SIG # Begin signature block
# MII9MwYJKoZIhvcNAQcCoII9JDCCPSACAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCA4N7/JGnftKpN/
# nVHzj9ASbE5+Asrq1Kcfm6Uv9F3OTaCCIfYwggXMMIIDtKADAgECAhBUmNLR1FsZ
# 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
# 03u4aUoqlmZpxJTG9F9urJh4iIAGXKKy7aIwggaoMIIEkKADAgECAhMzAAJ4V/U8
# qgzRmfYJAAAAAnhXMA0GCSqGSIb3DQEBDAUAMFoxCzAJBgNVBAYTAlVTMR4wHAYD
# VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJ
# RCBWZXJpZmllZCBDUyBBT0MgQ0EgMDQwHhcNMjYwNjI1MTI0NTAzWhcNMjYwNjI4
# MTI0NTAzWjBpMQswCQYDVQQGEwJQTDEXMBUGA1UECB4OAUEA8wBkAHoAawBpAGUx
# DzANBgNVBAcTBldpZWx1bjEXMBUGA1UEChMOc29mdDRwbSBzcCB6b28xFzAVBgNV
# BAMTDnNvZnQ0cG0gc3Agem9vMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKC
# AYEAuPBlbn53cMibaGR245K9vL2/yCCQchiHeYTVTY682dov+ITdla7t5ZZbQo/5
# 6UPPdCD5g++gUCL8+w6faHd3ocntt1BWbApXFOLV76InWbsGakogDm4Z/KDMHOKo
# IAK3bHCWZU5DRh7fVxvJbgdl1m5Jb1wLJfSakUhBaVHmVVXb1dI3S/UIPzhhwFQe
# R3Zqy3jb9ZanZK0FP3/QjMxrzglAknuV2Mj2XKdu/n7oIHhy9p9H9d4HIbJX0zMq
# bBpUl6n9AR5tx28Zhtgni6ymlRaPQmz4aqr0a2CevkCSBz23LmlUW9vYK1Bl2jiJ
# yQobRIGJHXEuqgUsUnKUxoPwbeY0S2FfCS+VpHUabGxXNZKIS5txyoDI9qrZqRTV
# /Stl/ypjTTJ3pUgGjHxLgPUtkY9DhzMb6k17jr0g3J016+97ppmzVgabnbkW45Mb
# EmUgkDT7UpS1K9kZZS8L09OVvhKb1XMJyzFRsdrOhR+MoS0nzQkeC4nBwTnAnZTa
# RF1BAgMBAAGjggHWMIIB0jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA9
# BgNVHSUENjA0BgorBgEEAYI3YQEABggrBgEFBQcDAwYcKwYBBAGCN2GCycz3dYGA
# 0Y0Tg469piSB0sq0aDAdBgNVHQ4EFgQUC3TR4z+u3NeCL6E9kH0m33eJQ14wHwYD
# VR0jBBgwFoAUayVB3vtrfP0YgAotf492XapzPbgwZwYDVR0fBGAwXjBcoFqgWIZW
# aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIw
# SUQlMjBWZXJpZmllZCUyMENTJTIwQU9DJTIwQ0ElMjAwNC5jcmwwdAYIKwYBBQUH
# AQEEaDBmMGQGCCsGAQUFBzAChlhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtp
# b3BzL2NlcnRzL01pY3Jvc29mdCUyMElEJTIwVmVyaWZpZWQlMjBDUyUyMEFPQyUy
# MENBJTIwMDQuY3J0MFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIBFjNo
# dHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5o
# dG0wDQYJKoZIhvcNAQEMBQADggIBAGgkNRfToOtvheMuLBxF1Cw55qwAacMzpygX
# mS+5mKCmQWHZlo7klGkBvExdm4sNofuaCfBLmcJ7XxIvle/RXMLcQp812FH3sJb9
# ZiVT9/getsvUKrrYVPsfU302Rup6Ick4wRq4LEJKKKG89JsRUk8U3OiFCPkyFd8+
# 484tGbFUPrOCUD74ag5x3ehoyVYxq+JmiVjy81iaNKiM4zYU7HFXfMmmGx/FFzRQ
# N/ELfO9g9SV4cnwmioncOEU6ZvvZxxTg23D8QIaqEggXxRirMiBdi7WGG+AYGDne
# cIpMGzNuCFw8enHyVnR2eD/ClEmSGI4ZMNh01fvefThuUQSjXEEncepTGSvjEVml
# MTJEa45qjuB38EFRrjJVFZQnOCzsLXx8HCGdVm8L1zIy99T7FBCG3wy0W3RDb7ow
# 1acaYyDzEQM+O79Cag9hzuHJW+nRtAJon2ID1qnkVnH2jnE3EvVu6/SmJV4QjgEX
# r7z3j3e6w97diJSPvpjyeI0djOLhy3FJt1tKrtVhN6RAA/586wBxyLyJz5OjxAej
# 2rXIxBfa89xKVSmDWLqmc2vdGwzYf3p/A33ocaPIibBg85X4rt17aISsk2VBR4gx
# JkWYIdOzIRNHOwYpICbz/GMP5dnytvSXayVz/7hHeaE78L1cw0pjYlaHGVzXDzAS
# IqGC9feNMIIGqDCCBJCgAwIBAgITMwACeFf1PKoM0Zn2CQAAAAJ4VzANBgkqhkiG
# 9w0BAQwFADBaMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
# cmF0aW9uMSswKQYDVQQDEyJNaWNyb3NvZnQgSUQgVmVyaWZpZWQgQ1MgQU9DIENB
# IDA0MB4XDTI2MDYyNTEyNDUwM1oXDTI2MDYyODEyNDUwM1owaTELMAkGA1UEBhMC
# UEwxFzAVBgNVBAgeDgFBAPMAZAB6AGsAaQBlMQ8wDQYDVQQHEwZXaWVsdW4xFzAV
# BgNVBAoTDnNvZnQ0cG0gc3Agem9vMRcwFQYDVQQDEw5zb2Z0NHBtIHNwIHpvbzCC
# AaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBALjwZW5+d3DIm2hkduOSvby9
# v8ggkHIYh3mE1U2OvNnaL/iE3ZWu7eWWW0KP+elDz3Qg+YPvoFAi/PsOn2h3d6HJ
# 7bdQVmwKVxTi1e+iJ1m7BmpKIA5uGfygzBziqCACt2xwlmVOQ0Ye31cbyW4HZdZu
# SW9cCyX0mpFIQWlR5lVV29XSN0v1CD84YcBUHkd2ast42/WWp2StBT9/0IzMa84J
# QJJ7ldjI9lynbv5+6CB4cvafR/XeByGyV9MzKmwaVJep/QEebcdvGYbYJ4usppUW
# j0Js+Gqq9Gtgnr5Akgc9ty5pVFvb2CtQZdo4ickKG0SBiR1xLqoFLFJylMaD8G3m
# NEthXwkvlaR1GmxsVzWSiEubccqAyPaq2akU1f0rZf8qY00yd6VIBox8S4D1LZGP
# Q4czG+pNe469INydNevve6aZs1YGm525FuOTGxJlIJA0+1KUtSvZGWUvC9PTlb4S
# m9VzCcsxUbHazoUfjKEtJ80JHguJwcE5wJ2U2kRdQQIDAQABo4IB1jCCAdIwDAYD
# VR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwPQYDVR0lBDYwNAYKKwYBBAGCN2EB
# AAYIKwYBBQUHAwMGHCsGAQQBgjdhgsnM93WBgNGNE4OOvaYkgdLKtGgwHQYDVR0O
# BBYEFAt00eM/rtzXgi+hPZB9Jt93iUNeMB8GA1UdIwQYMBaAFGslQd77a3z9GIAK
# LX+Pdl2qcz24MGcGA1UdHwRgMF4wXKBaoFiGVmh0dHA6Ly93d3cubWljcm9zb2Z0
# LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMElEJTIwVmVyaWZpZWQlMjBDUyUy
# MEFPQyUyMENBJTIwMDQuY3JsMHQGCCsGAQUFBwEBBGgwZjBkBggrBgEFBQcwAoZY
# aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQl
# MjBJRCUyMFZlcmlmaWVkJTIwQ1MlMjBBT0MlMjBDQSUyMDA0LmNydDBUBgNVHSAE
# TTBLMEkGBFUdIAAwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQu
# Y29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMA0GCSqGSIb3DQEBDAUAA4IC
# AQBoJDUX06Drb4XjLiwcRdQsOeasAGnDM6coF5kvuZigpkFh2ZaO5JRpAbxMXZuL
# DaH7mgnwS5nCe18SL5Xv0VzC3EKfNdhR97CW/WYlU/f4HrbL1Cq62FT7H1N9Nkbq
# eiHJOMEauCxCSiihvPSbEVJPFNzohQj5MhXfPuPOLRmxVD6zglA++GoOcd3oaMlW
# MaviZolY8vNYmjSojOM2FOxxV3zJphsfxRc0UDfxC3zvYPUleHJ8JoqJ3DhFOmb7
# 2ccU4Ntw/ECGqhIIF8UYqzIgXYu1hhvgGBg53nCKTBszbghcPHpx8lZ0dng/wpRJ
# khiOGTDYdNX73n04blEEo1xBJ3HqUxkr4xFZpTEyRGuOao7gd/BBUa4yVRWUJzgs
# 7C18fBwhnVZvC9cyMvfU+xQQht8MtFt0Q2+6MNWnGmMg8xEDPju/QmoPYc7hyVvp
# 0bQCaJ9iA9ap5FZx9o5xNxL1buv0piVeEI4BF6+89493usPe3YiUj76Y8niNHYzi
# 4ctxSbdbSq7VYTekQAP+fOsAcci8ic+To8QHo9q1yMQX2vPcSlUpg1i6pnNr3RsM
# 2H96fwN96HGjyImwYPOV+K7de2iErJNlQUeIMSZFmCHTsyETRzsGKSAm8/xjD+XZ
# 8rb0l2slc/+4R3mhO/C9XMNKY2JWhxlc1w8wEiKhgvX3jTCCBygwggUQoAMCAQIC
# 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+tHD6n58vhavFIrmcxghqTMIIajwIBATBxMFox
# CzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzAp
# BgNVBAMTIk1pY3Jvc29mdCBJRCBWZXJpZmllZCBDUyBBT0MgQ0EgMDQCEzMAAnhX
# 9TyqDNGZ9gkAAAACeFcwDQYJYIZIAWUDBAIBBQCgXjAQBgorBgEEAYI3AgEMMQIw
# ADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAvBgkqhkiG9w0BCQQxIgQgeXas
# OrbGAXr4VtKgV0TgNH14H4bUZLbfdxdhLNEmfvAwDQYJKoZIhvcNAQEBBQAEggGA
# JsjbtCkcgE95Kvj+RbZdceo7YHgVVbi2emfMPNstI3mMtd5zAQrRlg+XjSdIcVIr
# ue48oyZTeiiQ7dXgUL/hM6/SvfzBjcsTGXyPBXTS+5yAtxrU8gYOSbx6Bjb6gj8e
# Nvs55Ep1WzFFmpCkjq65DYWc6AjORfqKxwy4xTA9Jk2f/8IUJb8GWrqPaq70Nce6
# wMPVQiPy8phCHZih9sO0axY+fdTO4D9s/ttUGgwuPRkfLowcpOOada6MV7f2ztiJ
# lUgmV5JOShLUc0PanACgWVGZxxgqj1hW2yCjaw0G3UnMDlkZjzfNZOmzQjoJPfcv
# h4z/lKVZVUfC3uYCBmSFhHeCeJ4KvF2vFd0MZ5aaHbnjq60nE+NtiSJOkyCcqy+H
# RkeoqL2Q4t2IMkN4SY3+nxKl98LwnMuvfITrV51zptHiIXossOanUj3kr0kjMhmb
# LIPDupTR7KSuVCflQZc7jUEEWXI6DkVWnHy+2Qzr7hiyEmopASOKD3A17fb4bRRT
# oYIYEzCCGA8GCisGAQQBgjcDAwExghf/MIIX+wYJKoZIhvcNAQcCoIIX7DCCF+gC
# AQMxDzANBglghkgBZQMEAgEFADCCAWEGCyqGSIb3DQEJEAEEoIIBUASCAUwwggFI
# AgEBBgorBgEEAYRZCgMBMDEwDQYJYIZIAWUDBAIBBQAEIJ11rRMi0jitXM+UCnGu
# 1BXxNcizo8T2cPeXIk0VO/5FAgZqHFcFMHcYEjIwMjYwNjI3MTE0ODAzLjczWjAE
# gAIB9KCB4aSB3jCB2zELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x
# EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
# bjElMCMGA1UECxMcTWljcm9zb2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UE
# CxMeblNoaWVsZCBUU1MgRVNOOkE1MDAtMDVFMC1EOTQ3MTUwMwYDVQQDEyxNaWNy
# 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
# XVswggeXMIIFf6ADAgECAhMzAAAAVn6PnVgIjulgAAAAAABWMA0GCSqGSIb3DQEB
# DAUAMGExCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
# b24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVzdGFtcGluZyBD
# QSAyMDIwMB4XDTI1MTAyMzIwNDY1MVoXDTI2MTAyMjIwNDY1MVowgdsxCzAJBgNV
# BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w
# HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jvc29m
# dCBBbWVyaWNhIE9wZXJhdGlvbnMxJzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjpB
# NTAwLTA1RTAtRDk0NzE1MDMGA1UEAxMsTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGlt
# ZSBTdGFtcGluZyBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
# AoICAQC0pZ+b+6XTbv93xGVvwyf+DRBS+8upjZWzLe0jxTa0VKylNmiZk4PcEdPw
# uRH5GuEwmBvVWMAoU3Kxor1wtJeJ88ZIgGs8KCz0/jLbiWskSatXpDnPgGaoyEg+
# tmES9mdakJLgc7uNhJ6L+fGYLv/USv6XkuDc+ZLFvx3YhVwBHFLDUHibEHpcjSeR
# 6X3BrV1hvbB8amh+toWbFk7FP142G3gsfREFJW55trpk2mNL/SC1+buqIiLI/qno
# 9HNNNsydWqwedX93+tbTMfH5D5A1nnBSoqZNkkH2FTznf7alfmsN8rfa41j39YE4
# CbNuqCkR1CRuIxq9QzJQNKGbJwi+Ad1CdLbTuxOPwz6Qkve051qE+4+ozCxoIKB1
# /DBDHQ71Mp7sVK9sARizUCeV0KX8ocZkI5W9Q2qPIvXQkt7T/4YP3/KepcZYWlc6
# Nq6e9n9wpE6GM3gzl7rHHRvaaKpw+KLj+KLZmF4pqWUkRPsIqWkVKGzfDKDoX9+i
# NDFC8+dtYPg3LHqWGNaPCagtzHrDUVIK1q8sKXLfcEtFKVNTiopTFprx3tg3sSqm
# f1c7RJjS6Y68oVetYfuvGX72JqJyK12dNOSwCdGO96R0pPeWDuVEx+Z9lTy9c2I3
# RRgnNP0SOqNGbS43+HShfE+E189ip4VvI9cYbHNphTPrPHepNwIDAQABo4IByzCC
# AccwHQYDVR0OBBYEFL62M/K7q1n+HkazIu/LPUf4U0haMB8GA1UdIwQYMBaAFGtp
# KDo1L0hjQM972K9J6T7ZPdshMGwGA1UdHwRlMGMwYaBfoF2GW2h0dHA6Ly93d3cu
# bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFB1YmxpYyUyMFJT
# QSUyMFRpbWVzdGFtcGluZyUyMENBJTIwMjAyMC5jcmwweQYIKwYBBQUHAQEEbTBr
# MGkGCCsGAQUFBzAChl1odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2Nl
# cnRzL01pY3Jvc29mdCUyMFB1YmxpYyUyMFJTQSUyMFRpbWVzdGFtcGluZyUyMENB
# JTIwMjAyMC5jcnQwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcD
# CDAOBgNVHQ8BAf8EBAMCB4AwZgYDVR0gBF8wXTBRBgwrBgEEAYI3TIN9AQEwQTA/
# BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2Nz
# L1JlcG9zaXRvcnkuaHRtMAgGBmeBDAEEAjANBgkqhkiG9w0BAQwFAAOCAgEADgOo
# BcSw7bqP8trsWCf9CJ+K3zG5l6Spnnv5h76wf+FFNsQSMZitmCyrBH+VRR8oIWlt
# kXyaxpk9Ak5HhhhQRTxfKMuufxjWMJKajGH2Xu1aJKhz8kUHDfnokCbMYbF4EDYR
# ZLFG5OvUC5l7qdho3z/C0WSIdyzyAxp3FcGzoPFWHK7lieEs9CR+6YqbeUV+3ATu
# mJ5Xt/WWySaWCwLoB5IYLMY9lSAK9wflO/9B73PtsgiZIPdK7OE4jBo/54pBNh/r
# tOJ/IkqRZBJ0Z9MDopy7jWTwsHqg8r4wuTWNvHErnA+otIvrbGMrThIFccQlISew
# W3TPFaTE/+WB6PUPGpSeatgR2TG/MpIcgCoVZJm6X/mEj68nG8U+Gw1AESThxK6U
# OQlClx1WL+CZ/+YcU5iEMGOxrXmzgv7awGKXddX9PxGJHrpDzFi9MtFbF3Z1Wys6
# gLCexThYh6ILQmKcK/VYscSHtDLOv1FKviQoktZ2k1guGCOSiNOYSQCMU7vvi3fE
# Ht6du8gXQY6xXX3GcJTOr0QYrK3SAy5qmEqU2Mn5pOmNYxkMaj4Y4qyen3ceZ+2a
# XRLKncX34zfL7LpYkZRmghkmrbbuMOOMSd22lSuH0F091Uh9UkP8C7zVHOHTlQcC
# K+itDc6zw8QsciCI531NbNt2CYbNwgu3911VARExggdGMIIHQgIBATB4MGExCzAJ
# BgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNV
# BAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwAhMz
# AAAAVn6PnVgIjulgAAAAAABWMA0GCWCGSAFlAwQCAQUAoIIEnzARBgsqhkiG9w0B
# CRACDzECBQAwGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJ
# BTEPFw0yNjA2MjcxMTQ4MDNaMC8GCSqGSIb3DQEJBDEiBCAcHFbwnL1xbR+AArt0
# AQ2Z7Al6dluLjjaRoEBULpK3xTCBuQYLKoZIhvcNAQkQAi8xgakwgaYwgaMwgaAE
# ILYMMyVNpOPwlXeJODleel7gJIfrTXjdn5f2jk0GAwyoMHwwZaRjMGExCzAJBgNV
# BAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMT
# KU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwAhMzAAAA
# Vn6PnVgIjulgAAAAAABWMIIDYQYLKoZIhvcNAQkQAhIxggNQMIIDTKGCA0gwggNE
# MIICLAIBATCCAQmhgeGkgd4wgdsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo
# aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
# cG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlvbnMx
# JzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjpBNTAwLTA1RTAtRDk0NzE1MDMGA1UE
# AxMsTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZSBTdGFtcGluZyBBdXRob3JpdHmi
# IwoBATAHBgUrDgMCGgMVAP9z9ykVKpBZgF5eCDJEnZlu9gQRoGcwZaRjMGExCzAJ
# BgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNV
# BAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwMA0G
# CSqGSIb3DQEBCwUAAgUA7enFGjAiGA8yMDI2MDYyNzAzNDIxOFoYDzIwMjYwNjI4
# MDM0MjE4WjB3MD0GCisGAQQBhFkKBAExLzAtMAoCBQDt6cUaAgEAMAoCAQACAggk
# AgH/MAcCAQACAhJRMAoCBQDt6xaaAgEAMDYGCisGAQQBhFkKBAIxKDAmMAwGCisG
# AQQBhFkKAwKgCjAIAgEAAgMHoSChCjAIAgEAAgMBhqAwDQYJKoZIhvcNAQELBQAD
# ggEBADDsPoa8oWGibDhryTfMuCrywkkesZqHWlorwRmCiJYig8lP10urUWpRWn+U
# 0AwiKfVG34w4BfbiapgwgMUpAN1HspPlg4aLjXjMc340thpsPrJ0PNPCoK86qOhA
# cxvFmlDa0HhYBYzZtY41cUH9OKpMGq62Kjn/SFfkHsXY6J1UhyG81xqe8gaHphvd
# daXax+bsV1PQGuhaB67uJPogHfJmUcv6hddHz9cI07HqbfiNDGHS68+hRmrsIN8O
# hNHTcqfXksY7QYkjVvRXY+PRuYYiIXERKogVhJlCgr2j34m1GS2ac+oCu2PqOCM7
# 5ZsZwri0IDrzmN1zB5+PhBUi+eswDQYJKoZIhvcNAQEBBQAEggIADrXcY7I+37KY
# em6o3Dch/xKbI2NzNbS/0joPjYEor2Xh50bWrD5y3lHU3CXeTvGVzxmmoEHJGwMa
# /tBuJi+SMB0vdYfiNJgYL8E2F4vgYPlzJAtziNDrFiAI/3c6E+2N6nXwxI8gxr8u
# esTScZRC6pqgl3lvxJUJIG12mxyA79l67yzF5R9Gq3n0bqqmWkH9li02c30JZjXz
# Ojj8iHFwO0TgYZ70SZuFeD/tN7Zz3hE3dV5ki7SYRrK/Slmeqo+kSWymview3gXQ
# b8v2t6c0iXI0xkTDbF3breY6tZsemZcSDTlS8HkAq3XNqO+lY9xg630RF3daIBnU
# BQJNH6vtgYcmsfvlBRgHCttoKSXiidnDfJivDqBq9GYXSq/1dktJXtu/FfL60hD0
# ghGpgYtTGXnIlwBvzAQ5BCs2VdnEeAHwHbXg+LwhJkA6vQ1Ww7OoLZR0GnFo6bJf
# TLFlrZfmARsQVsW4H2tw0wp4RF7LMwZs5vWPm1YYNgPeIsGE8aETomGbALIMppz/
# uiDhbG6lgAsCxaek74jhzTy5D0Y6r5pOdUJ6Q3uHcyYLRyz7bbx/v9aKYNdhio5P
# BpCxz6p+hltRunyznFQlhDGwBb4hmXH1cnnghmg/Zkx5GhkwydRsx3eX0eeXDB7G
# pXPxzj17uWB6owgAvMQG0W9vw3L5ky8=
# SIG # End signature block