Outputs/output-html.ps1
using module "..\ORCA.psm1" class html : ORCAOutput { $OutputDirectory=$null $DisplayReport=$True html() { $this.Name="HTML" } RunOutput($Checks,$Collection) { <# OUTPUT GENERATION / Header #> # Obtain the tenant domain and date for the report $TenantDomain = ($Collection["AcceptedDomains"] | Where-Object {$_.InitialDomain -eq $True}).DomainName $ReportDate = $(Get-Date -format 'dd-MMM-yyyy HH:mm') # Summary $RecommendationCount = $($Checks | Where-Object {$_.Result -eq "Fail"}).Count $OKCount = $($Checks | Where-Object {$_.Result -eq "Pass"}).Count $InfoCount = $($Checks | Where-Object {$_.Result -eq "Informational"}).Count # Misc $ReportTitle = "Microsoft Defender for Office 365 Recommended Configuration Analyzer" $ReportSub1 = "Microsoft Defender for Office 365 Recommended" $ReportSub2 = "Configuration Analyzer Report" # Area icons $AreaIcon = @{} $AreaIcon["Default"] = "fas fa-user-cog" $AreaIcon["Connectors"] = "fas fa-plug" $AreaIcon["Anti-Spam Policies"] = "fas fa-trash" $AreaIcon["Malware Filter Policy"] = "fas fa-biohazard" $AreaIcon["Zero Hour Autopurge"] = "fas fa-trash" $AreaIcon["DKIM"] = "fas fa-file-signature" $AreaIcon["Transport Rules"] = "fas fa-list" $AreaIcon["Transport Rules"] = "fas fa-list" # Output start $output = "<!doctype html> <html lang='en'> <head> <!-- Required meta tags --> <meta charset='utf-8'> <meta name='viewport' content='width=device-width, initial-scale=1, shrink-to-fit=no'> <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.min.css' crossorigin='anonymous'> <link rel='stylesheet' href='https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css' integrity='sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T' crossorigin='anonymous'> <script src='https://code.jquery.com/jquery-3.3.1.slim.min.js' integrity='sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo' crossorigin='anonymous'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js' integrity='sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1' crossorigin='anonymous'></script> <script src='https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js' integrity='sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM' crossorigin='anonymous'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/js/all.js'></script> <style> .table-borderless td, .table-borderless th { border: 0; } .bd-callout { padding: 1rem; margin-top: 1rem; margin-bottom: 1rem; border: 1px solid #eee; border-left-width: .25rem; border-radius: .25rem } .bd-callout h4 { margin-top: 0; margin-bottom: .25rem } .bd-callout p:last-child { margin-bottom: 0 } .bd-callout code { border-radius: .25rem } .bd-callout+.bd-callout { margin-top: -.25rem } .bd-callout-info { border-left-color: #5bc0de } .bd-callout-info h4 { color: #5bc0de } .bd-callout-warning { border-left-color: #f0ad4e } .bd-callout-warning h4 { color: #f0ad4e } .bd-callout-danger { border-left-color: #d9534f } .bd-callout-danger h4 { color: #d9534f } .bd-callout-success { border-left-color: #00bd19 } .navbar-custom { background-color: #005494; color: white; padding-bottom: 10px; } /* Modify brand and text color */ .navbar-custom .navbar-brand, .navbar-custom .navbar-text { color: white; padding-top: 70px; padding-bottom: 10px; } .star-cb-group { /* remove inline-block whitespace */ font-size: 0; /* flip the order so we can use the + and ~ combinators */ unicode-bidi: bidi-override; direction: rtl; /* the hidden clearer */ } .star-cb-group * { font-size: 1rem; } .star-cb-group > input { display: none; } .star-cb-group > input + label { /* only enough room for the star */ display: inline-block; overflow: hidden; text-indent: 9999px; width: 1.7em; white-space: nowrap; cursor: pointer; } .star-cb-group > input + label:before { display: inline-block; text-indent: -9999px; content: ""\2606""; font-size: 30px; color: #005494; } .star-cb-group > input:checked ~ label:before, .star-cb-group > input + label:hover ~ label:before, .star-cb-group > input + label:hover:before { content:""\2605""; color: #e52; font-size: 30px; text-shadow: 0 0 1px #333; } .star-cb-group > .star-cb-clear + label { text-indent: -9999px; width: .5em; margin-left: -.5em; } .star-cb-group > .star-cb-clear + label:before { width: .5em; } .star-cb-group:hover > input + label:before { content: ""\2606""; color: #005494; font-size: 30px; text-shadow: none; } .star-cb-group:hover > input + label:hover ~ label:before, .star-cb-group:hover > input + label:hover:before { content: ""\2605""; color: #e52; font-size: 30px; text-shadow: 0 0 1px #333; } </style> <title>$($ReportTitle)</title> </head> <body class='app header-fixed bg-light'> <nav class='navbar fixed-top navbar-custom p-3 border-bottom'> <div class='container-fluid'> <div class='col-sm' style='text-align:left'> <div class='row'><div><i class='fas fa-binoculars'></i></div><div class='ml-3'><strong>ORCA</strong></div></div> </div> <div class='col-sm' style='text-align:center'> <strong>$($TenantDomain)</strong> </div> <div class='col-sm' style='text-align:right'> $($ReportDate) </div> </div> </nav> <div class='app-body p-3'> <main class='main'> <!-- Main content here --> <div class='container' style='padding-top:50px;'></div> <div class='card'> <div class='card-body'> <h2 class='card-title'>$($ReportSub1)</h2> <div style='text-align:right;margin-top:-65px;margin-right:8px;color:#005494;';> <b>Rate this report</b> </div> <div style='text-align:right;margin-top:-10px';> <span class='star-cb-group'> <input type='radio' id='rating-5' name='rating' value='5' onclick=""window.open('https://aka.ms/orca-feedback-1','_blank');"" /> <label for='rating-5'>5</label> <input type='radio' id='rating-4' name='rating' value='4' onclick=""window.open('https://aka.ms/orca-feedback-2','_blank');"" /> <label for='rating-4'>4</label> <input type='radio' id='rating-3' name='rating' value='3' onclick=""window.open('https://aka.ms/orca-feedback-3','_blank');"" /> <label for='rating-3'>3</label> <input type='radio' id='rating-2' name='rating' value='2' onclick=""window.open('https://aka.ms/orca-feedback-4','_blank');"" /> <label for='rating-2'>2</label> <input type='radio' id='rating-1' name='rating' value='1' onclick=""window.open('https://aka.ms/orca-feedback-5','_blank');"" /> <label for='rating-1'>1</label> <input type='radio' id='rating-0' name='rating' value='0' class='star-cb-clear' /> <label for='rating-0'>0</label> </span> </div> <h2 class='card-title' style='margin-top:-10px'>$($ReportSub2)</h2> <strong>Version $($this.VersionCheck.Version.ToString())</strong> <p>This report details any tenant configuration changes recommended within your tenant.</p>" <# OUTPUT GENERATION / Version Warning #> if($this.VersionCheck.GalleryCheck) { If($this.VersionCheck.Updated -eq $False) { $Output += " <div class='alert alert-danger pt-2' role='alert'> ORCA is out of date. You're running version $($this.VersionCheck.Version) but version $($this.VersionCheck.GalleryVersion) is available! Run Update-Module ORCA to get the latest definitions! </div> " } } else { $Output += " <div class='alert alert-info pt-2' role='alert'> VersionChecks were disabled when running ORCA. Ensure that you're periodically running Update-Module ORCA to get the latest definitions! </div> " } If($this.VersionCheck.Preview -eq $True) { $Output += " <div class='alert alert-warning pt-2' role='alert'> You are running a preview version of ORCA! Preview versions may contain errors which could result in an incorrect report. Verify the results and any configuration before deploying changes. </div> " } If(!($Collection["Services"] -band [ORCAService]::OATP)) { $Output += " <div class='alert alert-danger pt-2' role='alert'> <p>Microsoft Defender for Office 365 was <strong>NOT</strong> detected on this tenant. <strong>The purpose of ORCA is to check for Microsoft Defender for Office 365 recommended configuration</strong> - <i>however, these checks will be skipped. Other results should be relevant to base EOP configuration.</i></p> <p>Consider Office Advanced Threat Protection for:<ul><li>Automatic incident response capabilities</li><li>Attack simulation capabilities</li><li>Behavioural analysis (sandboxing) of malware</li><li>Time of click protection against URLs</li><li>Advanced anti-phishing controls</li></ul></p> </div> " } $Output += "</div> </div>" <# OUTPUT GENERATION / Summary cards #> $Output += " <div class='row p-3'>" if($InfoCount -gt 0) { $Output += " <div class='col d-flex justify-content-center text-center'> <div class='card text-white bg-secondary mb-3' style='width: 18em;'> <div class='card-header'><h6>Informational</h6></div> <div class='card-body'> <h3>$($InfoCount)</h3> </div> </div> </div> " } $Output += "<div class='col d-flex justify-content-center text-center'> <div class='card text-white bg-warning mb-3' style='width: 18rem;'> <div class='card-header'><h6>Recommendations</h6></div> <div class='card-body'> <h3>$($RecommendationCount)</h3> </div> </div> </div> <div class='col d-flex justify-content-center text-center'> <div class='card text-white bg-success mb-3' style='width: 18rem;'> <div class='card-header'><h6>OK</h6></div> <div class='card-body'> <h3>$($OKCount)</h3> </div> </div> </div> </div>" <# OUTPUT GENERATION / Config Health Index #> $Output += " <div class='card m-3'> <div class='card-body'> <div class='row'> <div class='col-sm-4 text-center align-self-center'> <div class='progress' style='height: 40px'> <div class='progress-bar progress-bar-striped bg-info' role='progressbar' style='width: $($Collection["CHI"])%;' aria-valuenow='$($Collection["CHI"])' aria-valuemin='0' aria-valuemax='100'><h2>$($Collection["CHI"]) %</h2></div> </div> </div> <div class='col-sm-8'> <h6>Configuration Health Index</h6> <p>The configuration health index is a weighted value representing your configuration. Not all configuration is considered and some configuration is weighted higher than others.<a href='https://aka.ms/orca-github' target='_blank'> See More </a></p> </div> </div> <div class='alert alert-success pt-2' > Like this report? Try similar reporting for Microsoft's Compliance solutions. Download <a href='https://aka.ms/orca-mcca-github' target='_blank'> Microsoft Compliance Config Analyzer (MCCA)</a> </div> </div> " <# OUTPUT GENERATION / Summary #> $Output += " <div class='card m-3'> <div class='card-header'> Summary </div> <div class='card-body'>" $Output += "<h5>Areas</h1> <table class='table table-borderless'>" ForEach($Area in ($Checks | Where-Object {$_.Completed -eq $true} | Group-Object Area)) { $Pass = @($Area.Group | Where-Object {$_.Result -eq "Pass"}).Count $Fail = @($Area.Group | Where-Object {$_.Result -eq "Fail"}).Count $Info = @($Area.Group | Where-Object {$_.Result -eq "Informational"}).Count $Icon = $AreaIcon[$Area.Name] If($Null -eq $Icon) { $Icon = $AreaIcon["Default"]} $Output += " <tr> <td width='20'><i class='$Icon'></i> <td><a href='`#$($Area.Name)'>$($Area.Name)</a></td> <td align='right'> <span class='badge badge-secondary' style='padding:15px;text-align:center;width:40px;"; if($Info -eq 0) { $output += "opacity: 0.1;" }; $output += "'>$($Info)</span> <span class='badge badge-warning' style='padding:15px;text-align:center;width:40px;"; if($Fail -eq 0) { $output += "opacity: 0.1;" }; $output += "'>$($Fail)</span> <span class='badge badge-success' style='padding:15px;text-align:center;width:40px;"; if($Pass -eq 0) { $output += "opacity: 0.1;" }; $output += "'>$($Pass)</span> </td> </tr> " } $Output+="</table> </div> </div> " <# OUTPUT GENERATION / Zones #> ForEach ($Area in ($Checks | Where-Object {$_.Completed -eq $True} | Group-Object Area)) { # Write the top of the card $Output += " <div class='card m-3'> <div class='card-header'> <a name='$($Area.Name)'>$($Area.Name)</a> </div> <div class='card-body'>" # Each check ForEach ($Check in ($Area.Group | Sort-Object Result -Descending)) { $Output += " <h5>$($Check.Name)</h5>" If($Check.Result -eq "Pass") { $CalloutType = "bd-callout-success" $BadgeType = "badge-success" $BadgeName = "OK" $Icon = "fas fa-thumbs-up" $Title = $Check.PassText } ElseIf($Check.Result -eq "Informational") { $CalloutType = "bd-callout-secondary" $BadgeType = "badge-secondary" $BadgeName = "Informational" $Icon = "fas fa-thumbs-up" $Title = $Check.FailRecommendation } Else { $CalloutType = "bd-callout-warning" $BadgeType = "badge-warning" $BadgeName = "Improvement" $Icon = "fas fa-thumbs-down" $Title = $Check.FailRecommendation } $Output += " <div class='bd-callout $($CalloutType) b-t-1 b-r-1 b-b-1 p-3'> <div class='container-fluid'> <div class='row'> <div class='col-1'><i class='$($Icon)'></i></div> <div class='col-8'><h5>$($Title)</h5></div> <div class='col' style='text-align:right'><h5><span class='badge $($BadgeType)'>$($BadgeName)</span></h5></div> </div>" if($Check.Importance) { $Output +=" <div class='row p-3'> <div><p>$($Check.Importance)</p></div> </div>" } If($Check.ExpandResults -eq $True) { # We should expand the results by showing a table of Config Data and Items $Output +="<h6>Effected objects</h6> <div class='row pl-2 pt-3'> <table class='table'> <thead class='border-bottom'> <tr>" If($Check.CheckType -eq [CheckType]::ObjectPropertyValue) { # Object, property, value checks need three columns $Output +=" <th>$($Check.ObjectType)</th> <th>$($Check.ItemName)</th> <th>$($Check.DataType)</th> " } Else { $Output +=" <th>$($Check.ItemName)</th> <th>$($Check.DataType)</th> " } $Output +=" <th style='width:100px'></th> </tr> </thead> <tbody> " ForEach($o in $($Check.Config | Sort-Object Level)) { $chiicon = "" $chipill = "" $chipts = [int]$($Check.ChiValue) if($o.Level -ne [ORCAConfigLevel]::None -and $o.Level -ne [ORCAConfigLevel]::Informational) { $oicon="fas fa-check-circle text-success" $LevelText = $o.Level.ToString() if($Check.ChiValue -ne [ORCACHI]::NotRated) { $chiicon = "fas fa-plus" $chipill = "badge-success" } } ElseIf($o.Level -eq [ORCAConfigLevel]::Informational) { $oicon="fas fa-info-circle text-muted" $LevelText = $o.Level.ToString() } Else { $oicon="fas fa-times-circle text-danger" $LevelText = "Not Recommended" if($Check.ChiValue -ne [ORCACHI]::NotRated) { $chiicon = "fas fa-minus" $chipill = "badge-danger" } } $Output += " <tr> " # Multi line ConfigItem or ConfigData If($o.ConfigItem -is [array] -or $o.ConfigItem -is [System.Collections.ArrayList]) { $ConfigItem = $o.ConfigItem -join "<br>" } else { $ConfigItem = $o.ConfigItem } If($o.ConfigData -is [array] -or $o.ConfigData -is [System.Collections.ArrayList]) { $ConfigData = $o.ConfigData -join "<br>" } else { $ConfigData = $o.ConfigData } If($Check.CheckType -eq [CheckType]::ObjectPropertyValue) { # Object, property, value checks need three columns $Output += " <td>$($o.Object)</td> <td>$($ConfigItem)</td> <td>$($ConfigData)</td> " } Else { $Output += " <td>$($ConfigItem)</td> <td>$($ConfigData)</td> " } $Output += " <td style='text-align:right'> <div class='d-flex justify-content-end'> " if($($o.InfoText) -match "This is a Built-In/Default policy") { $Output += " <div class='flex-row badge badge-pill badge-light'> <span style='vertical-align: middle;'>$($LevelText)</span> <span class='$($oicon)' style='vertical-align: middle;'></span> " $Output += "<p style='margin-top:5px;color:#005494;'><abbr title='$($o.InfoText)'><u>More Info</u></abbr></p></div>" } elseif($($o.InfoText) -match "The policy is not enabled and will not apply") { $Output += " <div class='flex-row badge badge-pill badge-light'> <span style='vertical-align: middle;'>$($LevelText)</span> <span class='$($oicon)' style='vertical-align: middle;'></span> " $Output += "<p style='margin-top:5px;color:#005494;'><abbr title='$($o.InfoText)'><u>More Info</u></abbr></p></div>" } elseif($o.Level -eq [ORCAConfigLevel]::Informational) { $Output += " <div class='flex-row badge badge-pill badge-light'> <span style='vertical-align: middle;'>$($LevelText)</span> <span class='$($oicon)' style='vertical-align: middle;'></span> " $Output += "<p style='margin-top:5px;color:#005494;'><abbr title='$($o.InfoText)'><u>More Info</u></abbr></p></div>" } else { $Output += " <div class='flex-row badge badge-pill badge-light'> <span style='vertical-align: middle;'>$($LevelText)</span> <span class='$($oicon)' style='vertical-align: middle;'></span> </div>" if($Check.ChiValue -ne [ORCACHI]::NotRated -and $o.Level -ne [ORCAConfigLevel]::Informational) { $Output += " <div class='flex-row badge badge-pill $($chipill)'> <span class='$($chiicon)' style='vertical-align: middle;'></span> <span style='vertical-align: middle;'>$($chipts)</span> </div> " } } $Output += " </div> </td> </tr> " } $Output +=" </tbody> </table>" # If any links exist If($Check.Links) { $Output += " <table>" ForEach($Link in $Check.Links.Keys) { $Output += " <tr> <td style='width:40px'><i class='fas fa-external-link-alt'></i></td> <td><a href='$($Check.Links[$Link])'>$Link</a></td> <tr> " } $Output += " </table> " } $Output +=" </div>" } $Output += " </div> </div> " } # End the card $Output+= " </div> </div>" } <# OUTPUT GENERATION / Footer #> $Output += " </main> </div> <footer class='app-footer'> <p><center>Bugs? Issues? Suggestions? <a href='https://aka.ms/orca-github'>GitHub!</a><center></p> </footer> </body> </html>" # Write to file if($null -eq $this.OutputDirectory) { $OutputDir = $this.DefaultOutputDirectory } else { $OutputDir = $this.OutputDirectory } $Tenant = $(($Collection["AcceptedDomains"] | Where-Object {$_.InitialDomain -eq $True}).DomainName -split '\.')[0] $ReportFileName = "ORCA-$($tenant)-$(Get-Date -Format 'yyyyMMddHHmm').html" $OutputFile = "$OutputDir\$ReportFileName" $Output | Out-File -FilePath $OutputFile If($this.DisplayReport) { Invoke-Expression "&'$OutputFile'" } $this.Completed = $True $this.Result = $OutputFile } } # SIG # Begin signature block # MIIl6QYJKoZIhvcNAQcCoIIl2jCCJdYCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCuFNfCxrNiCcm3 # 8hSXTwRzkfga3X1IXFx2jSOlHUkOr6CCC6UwggUKMIID8qADAgECAhMzAAAFOerE # zyAjdtJfAAEAAAU5MA0GCSqGSIb3DQEBCwUAMHkxCzAJBgNVBAYTAlVTMRMwEQYD # VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBUZXN0aW5nIFBD # QSAyMDEwMB4XDTIyMDUwNTIwMDgwMFoXDTIzMDUwNDIwMDgwMFowfDELMAkGA1UE # BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdQ29kZSBTaWdu # IFRlc3QgKERPIE5PVCBUUlVTVCkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK # AoIBAQCbG5wszQxPSAu4WUO6mrT0Ah7aLQY35Uu8h8eWEeaYgdyqjUlUs2hVwSQd # 8fAl2IAe++y448He+r+NzsC6vwc2iPWRF2Tjl29EGOp/Kn6Okj15/anyvlQ+7On9 # GMjDTsLDBUD6yCSCZBygPxiktkFH8CnKIZ2xCD2OUUkRoGofo+0t8COCoaiqVQzT # kQDV5ET45Gliz8etzWN9Ho2AHC4hwQZz0T/zNLUvGivqS/8ns/tsqigDNIxgT9Iy # Mm4hXjuIvjx7fzQkVyMY6ORRPZ0fJzH+ZyMCmr9QtKs6Tv0Uva4oaNPggLVnVKrJ # qwcr7oytd5sN7vqADBqtbUOIt0CNAgMBAAGjggGGMIIBgjATBgNVHSUEDDAKBggr # BgEFBQcDAzAdBgNVHQ4EFgQUx1nHx7dJRksCcK4WcH1JCzbr3TowVAYDVR0RBE0w # S6RJMEcxLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGlt # aXRlZDEWMBQGA1UEBRMNMjMwMDcyKzQ3MDA0NjAfBgNVHSMEGDAWgBS/ZaKrb3Wj # TkWWVwXPOYf0wBUcHDBcBgNVHR8EVTBTMFGgT6BNhktodHRwOi8vd3d3Lm1pY3Jv # c29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBUZXN0aW5nJTIwUENBJTIw # MjAxMCgxKS5jcmwwaQYIKwYBBQUHAQEEXTBbMFkGCCsGAQUFBzAChk1odHRwOi8v # d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMFRlc3Rp # bmclMjBQQ0ElMjAyMDEwKDEpLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEB # CwUAA4IBAQC8sVhFQnjzIfS8M/D1b4gViIvun2AjNFcx2seZJj09JzZud5f0nyue # O3aTdvC1uEdRh2h1SZD1aYTQ40KMQ6EO44bBHof26HywDQW0rKmOOiz57LGqYplJ # F39VbSohdBCogcqKa0WjEc4XGNha2MO8idELZ3A3glSTZhx2xfhGB0mLFNIwBhya # snymRDDFyDNaznN1ZpsQ/Lq6We5c7aSH8+20JlcjZXUbRfB+kJ7hpevvPQLUxp/7 # hVM3YDD1Z5sbOkbAZXZKTuk+sn0zgoQwPRTFJUhF0WTACFviMvjBNwlg/+BQRlWH # kc9wBRU1HSNqcHIdZFmJWNIkUYmyQHYjMIIGkzCCBHugAwIBAgITMwAAAC01ekaI # yQdx2AAAAAAALTANBgkqhkiG9w0BAQsFADCBkDELMAkGA1UEBhMCVVMxEzARBgNV # BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv # c29mdCBDb3Jwb3JhdGlvbjE6MDgGA1UEAxMxTWljcm9zb2Z0IFRlc3RpbmcgUm9v # dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAxMDAeFw0yMDEyMTAyMDQzMjBaFw0z # NTA2MTcyMTA0MTFaMHkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u # MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp # b24xIzAhBgNVBAMTGk1pY3Jvc29mdCBUZXN0aW5nIFBDQSAyMDEwMIIBIjANBgkq # hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvzxggau+7P/XF2PypkLRE2KcsBfOukYa # eyIuVXOaVLnG1NHKmP53Rw2OnfBezPhU7/LPKtRi8ak0CgTXxQWG8hD1TdOWCGaF # 2wJ9GNzieiOnmildrnkYzwxj8Br/gampQz+pC7lR8bNIOvxELl8RxVY6/8oOzYgI # wf3H1fU+7+pOG3KLI71FN54fcMGnybggc+3zbD2LIQXPdxL+odwH6Q1beAlsMlUQ # R9A3yMf3+nP+RjTkVhaoN2RT1jX7w4C2jraGkaEQ1sFK9uN61BEKst4unhCX4IGu # El2IAV3MpMQoUpxg8ArmiK9L6VeK7KMPNx4p9l0h09faXQ7JTtuNbQIDAQABo4IB # +jCCAfYwDgYDVR0PAQH/BAQDAgGGMBIGCSsGAQQBgjcVAQQFAgMBAAEwIwYJKwYB # BAGCNxUCBBYEFOqfXzO20F+erestpsECu0A4y+e1MB0GA1UdDgQWBBS/ZaKrb3Wj # TkWWVwXPOYf0wBUcHDBUBgNVHSAETTBLMEkGBFUdIAAwQTA/BggrBgEFBQcCARYz # aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnku # aHRtMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMA8GA1UdEwEB/wQFMAMBAf8w # HwYDVR0jBBgwFoAUowEEfjCIM+u5MZzK64V2Z/xltNEwWQYDVR0fBFIwUDBOoEyg # SoZIaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWlj # VGVzUm9vQ2VyQXV0XzIwMTAtMDYtMTcuY3JsMIGNBggrBgEFBQcBAQSBgDB+ME0G # CCsGAQUFBzAChkFodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01p # Y1Rlc1Jvb0NlckF1dF8yMDEwLTA2LTE3LmNydDAtBggrBgEFBQcwAYYhaHR0cDov # L29uZW9jc3AubWljcm9zb2Z0LmNvbS9vY3NwMA0GCSqGSIb3DQEBCwUAA4ICAQAn # tNCFsp7MD6QqU3PVbdrXMQDI9v9jyPYBEbUYktrctPmvJuj8Snm9wWewiAN5Zc81 # NQVYjuKDBpb1un4SWVCb4PDVPZ0J87tGzYe9dOJ30EYGeiIaaStkLLmLOYAM6oIn # IqIwVyIk2SE/q2lGt8OvwcZevNmPkVYjk6nyJi5EdvS6ciPRmW9bRWRT4pWU8bZI # QL938LE4lHOQAixrAQiWes5Szp2U85E0nLdaDr5w/I28J/Z1+4zW1Nao1prVCOqr # osnoNUfVf1kvswfW3FY2l1PiAYp8sGyO57GaztXdBoEOBcDLedfcPra9+NLdEF36 # NkE0g+9dbokFY7KxhUJ8WpMiCmN4yj9LKFLvQbctGMJJY9EwHFifm2pgaiaafKF1 # Gyz+NruJzEEgpysMo/f9AVBQ/qCdPQQGEWp3QDIaef4ts9QTx+RmDKCBDMTFLgFm # mhbtUY0JWjLkKn7soz/LIcDUle/p5TiFD4VhfZnAcvYQHXfuslnyp+yuhWzASnAQ # NnOIO6fc1JFIwkDkcM+k/TspfAajzHooSAwXkrOWrjRDV6wI0YzMVHrEyQ0hZ5Nn # IXbL3lrTkOPjf3NBu1naSNEaySduStDbFVjV3TXoENEnZiugJKYSwmhzoYHM1ngi # pN5rNdqJiK5ukp6E8LDzi3l5/7XctJQY3+ZgHDJosjGCGZowghmWAgEBMIGQMHkx # CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt # b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1p # Y3Jvc29mdCBUZXN0aW5nIFBDQSAyMDEwAhMzAAAFOerEzyAjdtJfAAEAAAU5MA0G # CWCGSAFlAwQCAQUAoIGwMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG # AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3DQEJBDEiBCB0i25zGOTw # lsT4yLpXd37oeSs7xYgBogBFX3+UpbYkjTBEBgorBgEEAYI3AgEMMTYwNKAUgBIA # TQBpAGMAcgBvAHMAbwBmAHShHIAaaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbSAw # DQYJKoZIhvcNAQEBBQAEggEALRdQgBQ3goDfYfKMXMGAgmDT/Jq6jbxdxRA2ClUe # sl3q/ni/4Y8IBJsVJMzbeMmrIFX6+LHbPk5RAtc2l1/juZFjyDfvTDCVHOW7FpUI # jc3oBpeqIN2zl3o817B3pxwzct3euLIzUrNQ70dK+zjpCF7Ca0J0mOkwZvclK87D # D+A8f7CKZZ2iutERKjIXAMpeoBxSjnLZm1ZDmNGvo9umIItiXiy6VBYkmaY4yxn2 # bF5XOj0lPBf1HnVGCXCXmwnL/G4JOxAMiijUYfaBIlI0Hm1qtJ7TkNsjjzafRh1Z # WQOJh/ElWme0I/wOp6gN8dMFBV+3Hn3o/aQ/Hp7lgYoO7KGCFycwghcjBgorBgEE # AYI3AwMBMYIXEzCCFw8GCSqGSIb3DQEHAqCCFwAwghb8AgEDMQ8wDQYJYIZIAWUD # BAIBBQAwggFXBgsqhkiG9w0BCRABBKCCAUYEggFCMIIBPgIBAQYKKwYBBAGEWQoD # ATAxMA0GCWCGSAFlAwQCAQUABCAXSVfod98UszbpUOoBdpbND22GoFm4QqYpmYZ4 # GlbXGgIGY/dZGG6IGBEyMDIzMDMwMjA1NDUzOS43WjAEgAIB9KCB2KSB1TCB0jEL # MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v # bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWlj # cm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMSYwJAYDVQQLEx1UaGFs # ZXMgVFNTIEVTTjoyQUQ0LTRCOTItRkEwMTElMCMGA1UEAxMcTWljcm9zb2Z0IFRp # bWUtU3RhbXAgU2VydmljZaCCEXgwggcnMIIFD6ADAgECAhMzAAABscqQQ+4L8AOr # AAEAAAGxMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpX # YXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg # Q29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAy # MDEwMB4XDTIyMDkyMDIwMjE1OVoXDTIzMTIxNDIwMjE1OVowgdIxCzAJBgNVBAYT # AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD # VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLTArBgNVBAsTJE1pY3Jvc29mdCBJ # cmVsYW5kIE9wZXJhdGlvbnMgTGltaXRlZDEmMCQGA1UECxMdVGhhbGVzIFRTUyBF # U046MkFENC00QjkyLUZBMDExJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1w # IFNlcnZpY2UwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCGoqs+1ewb # x+yDjDxHgzNlMAqTPC8QFD3ie1L7vatEYgwXQYLIQv0g63t/2CQahqZ9u2u11jjL # 4ogVHzDX3+dTcShaEl+thqat+mC0WZNoTdcIoKwjuues+aVU4yad0PI3WACV967i # Xmt3HH04MQIE91L/7D+MNPsmQGGtiWWpVdzAYCBYt1cChQOApUHK/leEqRs6s/H2 # qmm5mMqbid+WZ/Bv9tNaQDdowxDru0GgwtKxsg3cEk1Zl3BzOOhBVejdhevZ8H49 # g2Ye+IJwNQwezRXGZ/uL9ZKkFp+wMwSfpZjsbyq1EZVf7tfTMNWD/s1UMsyp+f+K # /77mEkY/7YWa/hZmQFLUwGnC86LgRDbmkgbjmNZN99HjKfJ53UjVLFI4/55+4HHR # as3UDbnSW/l8ZkcIvS8IwNP/D5TrCk2fF8OhBFj1S3zaI0rlqWTE2jM8/8M0j6eS # dNpKWJpHZedJcMhkSzuV+4liDSpqF8knUJkXYhjE5L0UrVysSKBJvxCcQmiPpOEt # /gVilgtOxFeU91Bu8GxW+C374G22ijOfB8rQMow5zvXxItL66fCRU7RoXbcIRBJK # 2jLRlbfgr5xtGZR+Jr6T0T7iW6hOdPXugqph8M07lGTxTBVryZ+Hz79Hd9lrPY79 # mGJhP9FkdX1C7Pk8caVoJ9c9DwDrMUmUTwIDAQABo4IBSTCCAUUwHQYDVR0OBBYE # FPSbZ5HvDa2EivXxZ6FRNKa9DjmTMB8GA1UdIwQYMBaAFJ+nFV0AXmJdg/Tl0mWn # G1M1GelyMF8GA1UdHwRYMFYwVKBSoFCGTmh0dHA6Ly93d3cubWljcm9zb2Z0LmNv # bS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFRpbWUtU3RhbXAlMjBQQ0ElMjAyMDEw # KDEpLmNybDBsBggrBgEFBQcBAQRgMF4wXAYIKwYBBQUHMAKGUGh0dHA6Ly93d3cu # bWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwVGltZS1TdGFt # cCUyMFBDQSUyMDIwMTAoMSkuY3J0MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAww # CgYIKwYBBQUHAwgwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4ICAQDY # 5zeSaqXlUoSK0CGgEJzVTr9XAxJgpA+qELn1/TRjl9vCcP4HZBrTCcmoANJVW7ps # EJWuSz4QZuS4yFFv+WmIc0pWe5cXg8pMOe8KdgKqDACZu213F7Sbfx8mkZTd+YQI # QVfg5hpwSEXBOQtm0hRWN2rA+dClEgj5ipf9DRWnT3qDam4+WVJ2vFQHzEg7HcXs # sY7PK//VaasvJYCFQaka17Rbep9fhhaSftgIz7KXzzu2PmP6M7+XUxGLpuXgyw3Q # 9bYUJh5FvLNAQQ2yDk93fnVnTxE5H+dHzP5wC5DBHb2KNoMoiazkhtGvWdkv+pmy # QVK4K5ID6dh4y5MnEeDYcJeu3oQIVsSRig9oEZPPE9iily4kRwKGE2VaR24JGC7K # QSybPQu+2ZLsV7ryDhmiHexCQgTlUTCcoLcfBV6aErt41hHWrtFgTF8YVQMxB07u # 1Cltw8PihoFu0UZYa7efPUivJaz0rzzOjz56hBX+j1LE1TtGzpMypwt0zoLouCYZ # VpYooLRLYNUpTzMXHTLnPbmHVkntf9mFpq/Wa1dUbr6UkiryS0mA5Tn+mia6Z1+2 # CizEaMinc05HL18NSWX4pCXhiY30bNnE9iSG4jRBiuIubK0G1Qr4Ar3WFRFWV1Vt # SM/yySyvV2yJDDI5hAiRLGtO6GnSnDuHnfb2OmGARjCCB3EwggVZoAMCAQICEzMA # AAAVxedrngKbSZkAAAAAABUwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVT # MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK # ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290 # IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTIxMDkzMDE4MjIyNVoXDTMw # MDkzMDE4MzIyNVowfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x # EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv # bjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwggIiMA0G # CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDk4aZM57RyIQt5osvXJHm9DtWC0/3u # nAcH0qlsTnXIyjVX9gF/bErg4r25PhdgM/9cT8dm95VTcVrifkpa/rg2Z4VGIwy1 # jRPPdzLAEBjoYH1qUoNEt6aORmsHFPPFdvWGUNzBRMhxXFExN6AKOG6N7dcP2CZT # fDlhAnrEqv1yaa8dq6z2Nr41JmTamDu6GnszrYBbfowQHJ1S/rboYiXcag/PXfT+ # jlPP1uyFVk3v3byNpOORj7I5LFGc6XBpDco2LXCOMcg1KL3jtIckw+DJj361VI/c # +gVVmG1oO5pGve2krnopN6zL64NF50ZuyjLVwIYwXE8s4mKyzbnijYjklqwBSru+ # cakXW2dg3viSkR4dPf0gz3N9QZpGdc3EXzTdEonW/aUgfX782Z5F37ZyL9t9X4C6 # 26p+Nuw2TPYrbqgSUei/BQOj0XOmTTd0lBw0gg/wEPK3Rxjtp+iZfD9M269ewvPV # 2HM9Q07BMzlMjgK8QmguEOqEUUbi0b1qGFphAXPKZ6Je1yh2AuIzGHLXpyDwwvoS # CtdjbwzJNmSLW6CmgyFdXzB0kZSU2LlQ+QuJYfM2BjUYhEfb3BvR/bLUHMVr9lxS # UV0S2yW6r1AFemzFER1y7435UsSFF5PAPBXbGjfHCBUYP3irRbb1Hode2o+eFnJp # xq57t7c+auIurQIDAQABo4IB3TCCAdkwEgYJKwYBBAGCNxUBBAUCAwEAATAjBgkr # BgEEAYI3FQIEFgQUKqdS/mTEmr6CkTxGNSnPEP8vBO4wHQYDVR0OBBYEFJ+nFV0A # XmJdg/Tl0mWnG1M1GelyMFwGA1UdIARVMFMwUQYMKwYBBAGCN0yDfQEBMEEwPwYI # KwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9jcy9S # ZXBvc2l0b3J5Lmh0bTATBgNVHSUEDDAKBggrBgEFBQcDCDAZBgkrBgEEAYI3FAIE # DB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNV # HSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvXzpoYxDBWBgNVHR8ETzBNMEugSaBHhkVo # dHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29D # ZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAC # hj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1 # dF8yMDEwLTA2LTIzLmNydDANBgkqhkiG9w0BAQsFAAOCAgEAnVV9/Cqt4SwfZwEx # JFvhnnJL/Klv6lwUtj5OR2R4sQaTlz0xM7U518JxNj/aZGx80HU5bbsPMeTCj/ts # 0aGUGCLu6WZnOlNN3Zi6th542DYunKmCVgADsAW+iehp4LoJ7nvfam++Kctu2D9I # dQHZGN5tggz1bSNU5HhTdSRXud2f8449xvNo32X2pFaq95W2KFUn0CS9QKC/GbYS # EhFdPSfgQJY4rPf5KYnDvBewVIVCs/wMnosZiefwC2qBwoEZQhlSdYo2wh3DYXMu # LGt7bj8sCXgU6ZGyqVvfSaN0DLzskYDSPeZKPmY7T7uG+jIa2Zb0j/aRAfbOxnT9 # 9kxybxCrdTDFNLB62FD+CljdQDzHVG2dY3RILLFORy3BFARxv2T5JL5zbcqOCb2z # AVdJVGTZc9d/HltEAY5aGZFrDZ+kKNxnGSgkujhLmm77IVRrakURR6nxt67I6Ile # T53S0Ex2tVdUCbFpAUR+fKFhbHP+CrvsQWY9af3LwUFJfn6Tvsv4O+S3Fb+0zj6l # MVGEvL8CwYKiexcdFYmNcP7ntdAoGokLjzbaukz5m/8K6TT4JDVnK+ANuOaMmdbh # IurwJ0I9JZTmdHRbatGePu1+oDEzfbzL6Xu/OHBE0ZDxyKs6ijoIYn/ZcGNTTY3u # gm2lBRDBcQZqELQdVTNYs6FwZvKhggLUMIICPQIBATCCAQChgdikgdUwgdIxCzAJ # BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLTArBgNVBAsTJE1pY3Jv # c29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGltaXRlZDEmMCQGA1UECxMdVGhhbGVz # IFRTUyBFU046MkFENC00QjkyLUZBMDExJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1l # LVN0YW1wIFNlcnZpY2WiIwoBATAHBgUrDgMCGgMVAO1ksb6kA2wO78suvU59MD+Q # RscroIGDMIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x # EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv # bjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwDQYJKoZI # hvcNAQEFBQACBQDnqmkCMCIYDzIwMjMwMzAyMDgxNDU4WhgPMjAyMzAzMDMwODE0 # NThaMHQwOgYKKwYBBAGEWQoEATEsMCowCgIFAOeqaQICAQAwBwIBAAICGB8wBwIB # AAICESwwCgIFAOeruoICAQAwNgYKKwYBBAGEWQoEAjEoMCYwDAYKKwYBBAGEWQoD # AqAKMAgCAQACAwehIKEKMAgCAQACAwGGoDANBgkqhkiG9w0BAQUFAAOBgQA7Gapk # 3eou2y7b4lOsS2iKXHBukfsIfkKAp7WwFm7jm8CPFMegxR1I8S/GSbSwTjmm04JF # L0+lXNQKkkF42XgSq7FB9MMHEHc+IStV+nrxuxQRIbL8eBP6TedOOdKqCKvIp/xz # ouP5kk76qv6TK8hU+S1gWvKSS4NbgwLxLGBcHjGCBA0wggQJAgEBMIGTMHwxCzAJ # BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jv # c29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAABscqQQ+4L8AOrAAEAAAGxMA0G # CWCGSAFlAwQCAQUAoIIBSjAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwLwYJ # KoZIhvcNAQkEMSIEIHbLhQuJbOoMpIUwlsmvsJ6fZbbUiGbRoD54vEIRkej3MIH6 # BgsqhkiG9w0BCRACLzGB6jCB5zCB5DCBvQQgg+0NixRb36ng6MvYKbt+benWHq6w # ztHDE5TiKJs0z2wwgZgwgYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz # aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENv # cnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAx # MAITMwAAAbHKkEPuC/ADqwABAAABsTAiBCAXzp+Lqo+c67YuNU2EuoiVg49Acyji # Uhl762/CPZvwBDANBgkqhkiG9w0BAQsFAASCAgAiR2NevnY2Fy9ge8M8mMZLBTo/ # W5gceoHNm8PAt+pdGorWYidKfoEfPs7Ll5xXL3TTUCdcqPQaTbB+LsS8+40Y33Ql # lEGaZfAUv6R/uhobQWXvRnTjgny8tiCBB1764Osk3UJHa8u/V7Fjb5OVlKSHmoJW # i3AnPQk3U0tFHnkljTINZRbuocNnf732vTDZD2C66wsAjA6sVBDptlfx89+0rA6w # deKSMRICLYhN1drAX2v+Q+1GxAolIawyI2VOpwm/jfPTHg1QlKfbdwaU3JC9X7p+ # OI5bLiFVXPSB+91c3cSsM8pnxj9ZRKouvSGikw39Go5nTO7cnyj2KUvxd+JmKvs2 # qOwSh8kiGgPHVs4bOYo1yWXrCAe+iKyk8RjBXcHlBSfoawy9Wqjh9d0gErBVDEYU # ga+bXn1OVpqaPNkZNIbH8gJkcix4Rd+F07WPCc37yJ4fJWElj5ZmdNER3HKOpDna # sMr7zB4qeYXt+lp92UNfZiwmdw/c+qycd8XdDupu3JjM6qzfsybmMA9JwI2YTZmI # BIMDPlb5VWyh67FoU7VmFjvyPsQiucPoVXNigzny8TX/0Z8remLdyvg9D+xC2Hpc # YDEQqS6qUIgxaM2uWnYLJ0xr90VSg7nQdnPlM5AWiYQFYIewiorDDGNUJ6Mi9d8x # 5o7DTqvOj4CgSxow0Q== # SIG # End signature block |