Last active
December 22, 2015 13:42
-
-
Save jhochwald/d14deb6341166a5e6aed to your computer and use it in GitHub Desktop.
Disable Clutter for all Exchange Online (Office 365) Mailboxes in a
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<# | |
{ | |
"info": { | |
"Statement": "Code is poetry", | |
"Author": "Joerg Hochwald", | |
"Contact": "[email protected]", | |
"Link": "http://hochwald.net", | |
"Support": "https://github.com/jhochwald/MyPowerShellStuff/issues" | |
}, | |
"Copyright": "(c) 2012-2015 by Joerg Hochwald. All rights reserved." | |
} | |
Redistribution and use in source and binary forms, with or without modification, | |
are permitted provided that the following conditions are met: | |
1. Redistributions of source code must retain the above copyright notice, this list of | |
conditions and the following disclaimer. | |
2. Redistributions in binary form must reproduce the above copyright notice, | |
this list of conditions and the following disclaimer in the documentation and/or | |
other materials provided with the distribution. | |
3. Neither the name of the copyright holder nor the names of its contributors may | |
be used to endorse or promote products derived from this software without | |
specific prior written permission. | |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY | |
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | |
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | |
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
POSSIBILITY OF SUCH DAMAGE. | |
By using the Software, you agree to the License, Terms and Conditions above! | |
#> | |
<# | |
.SYNOPSIS | |
Disable Clutter for all Mailboxes | |
.DESCRIPTION | |
Disable the Exchange Online Feature Clutter for all User Mailboxes. | |
Microsoft introduced it as ON BY DEFAULT and we do not want that. | |
The user can enable the feature via OWA if he likes to have it. | |
.EXAMPLE | |
PS C:\scripts\PowerShell> .\Set-Clutter-disabled4all.ps1 | |
Disable the Exchange Online Feature Clutter for all User Mailboxes. | |
.NOTES | |
Microsoft agreed to use this script on a large tentent! | |
.LINK | |
hochwald.net http://hochwald.net | |
#> | |
#requires -version 3 | |
# Debug enabled? | |
Set-Variable -Name "debug" -Scope:Script -Value $($true) | |
# Cleanup | |
Remove-Variable cnt -Force -Confirm:$false -ErrorAction:SilentlyContinue -WarningAction:SilentlyContinue | |
# No fancy Debug messages if the script is called unattended | |
if ($RunUnattended -eq $true) { | |
Set-Variable -Name "debug" -Scope:Script -Value $($false) | |
Set-Variable -Name "ProgressPreference" -Scope:Script -Value $("SilentlyContinue") | |
# Remember to enable it again ;-) | |
Set-Variable -Name "ProgressPreference" -Scope:Global -Value $("SilentlyContinue") | |
} | |
# Make a clear screen | |
Clear-Host | |
# Check the PowerShell Version | |
if ($PSVersionTable.PSVersion.Major -lt 3) { | |
# Wrong PowerShell, inform operator | |
Write-Error -Message "Sorry your PowerShell is to old! Minimum PowerShell Version is 3.0 or newer" -ErrorAction Stop -Category ResourceUnavailable -recommendedAction "Please check installation" | |
# Exit on Error | |
exit 1 | |
} | |
<# | |
This is the part that will not work on your system! | |
You need to have the BASE Module installed... | |
Find the Functions below and replace them with your own ones! | |
# This checks that the command Get-BaseVersion exist, if not it will try to load the Base module | |
if (!(Get-Command Get-BaseVersion -errorAction SilentlyContinue)) { | |
# Where is the module | |
$BaseModule = "C:\scripts\PowerShell\modules\base.psm1" | |
If (-not(Test-Path -path $BaseModule)) { | |
# Aw Snap! PowerShell Base Module is missing | |
Write-Error -Message "Error: PowerShell Base Module missing..." -ErrorAction Stop -Category ResourceUnavailable -recommendedAction "Please review your configuration" | |
# Die hard! | |
exit 1 | |
} else { | |
try { | |
# Try to import the Base Module | |
Import-Module $BaseModule -DisableNameChecking -force -Scope Global -ErrorAction Stop | |
} catch [System.Exception] { | |
# Aw Snap! Houston, We've Got a Problem. And I mean a real one! | |
Write-Error -Message "Error: $ExceptionInfo" -ErrorAction Stop -Category ResourceUnavailable -recommendedAction "Please review your configuration" | |
# Die hard! | |
exit 1 | |
} | |
} | |
} | |
#> | |
# This is a command that you need to replace by your own | |
# It comes from the BASE Module, the one that you DO NOT have!!! | |
# | |
# Connect to Office 365 Exchange 365 | |
Reconnect-O365Exchange > $null 2>&1 3>&1 | |
# Cleanup | |
Remove-Variable timestamp -Force -Confirm:$false -ErrorAction:SilentlyContinue -WarningAction:SilentlyContinue | |
# If debug is enabled... | |
if ($debug -eq $true) { | |
# Cleanup | |
Remove-Variable StartTime -Force -Confirm:$false -ErrorAction:SilentlyContinue -WarningAction:SilentlyContinue | |
# Mark the script start to use in debug output | |
Set-Variable -Name "StartTime" -Scope:Script -Value $((get-date).ToString()) | |
} | |
# Here we go. Now we start the real work! | |
Write-Output "Collecting data from Office 365, this will take a while!" | |
# Cleanup | |
Remove-Variable mailboxes -Force -Confirm:$false -ErrorAction:SilentlyContinue -WarningAction:SilentlyContinue | |
# What to display in the Report? | |
Set-Variable -Name "mailboxes" -Scope:Script -Value $(@((Get-Mailbox -RecipientTypeDetails UserMailbox -resultsize unlimited -WarningAction SilentlyContinue -errorAction SilentlyContinue) | Where { $_.name -Notlike '*DiscoverySearchMailbox*' } | select UserPrincipalName)) | |
# Cleanup | |
Remove-Variable mailboxcount -Force -Confirm:$false -ErrorAction:SilentlyContinue -WarningAction:SilentlyContinue | |
# How many Mailboxes do we have? | |
Set-Variable -Name "mailboxcount" -Scope:Script -Value $(($mailboxes.count)) | |
# Make a clear screen | |
Clear-Host | |
# Catch zero item results to prevent exit of the script while get a null pointer exception | |
if ($mailboxcount -eq 0) { | |
# Aw Snap! | |
# No matching mailboxes found. Not even one... | |
# That seems to be a bad selection dude! | |
Write-Error -Message "Error: Something is wrong! No Mailboxes found to report..." -Category ResourceUnavailable -recommendedAction "Please check!" | |
# This is a command that you need to replace by your own | |
# It comes from the BASE Module, the one that you DO NOT have!!! | |
# | |
# Disconnect from Microsoft Office 365 and kill myself | |
Disconnect-O365 > $null 2>&1 3>&1 | |
Disconnect-all > $null 2>&1 3>&1 | |
Disconnect-O365 > $null 2>&1 3>&1 | |
# Die hard - Exit on Error | |
exit 1 | |
} else { | |
# Info for the operator | |
Write-Host "Found $mailboxcount Exchange Online User Mailboxes." -ForegroundColor "White" | |
} | |
<# | |
We start to slice the big Variable of mailboxes (UPN) | |
This seems to be very useful instead of calling Office365/Azue with a big block | |
This is called multidimensional array within PowerShell | |
#> | |
# Number to use for splits | |
# 100 should be a good start value | |
Set-Variable -Name "SlicePartsize" -Scope:Script -Value $("100") | |
# Make a split | |
Set-Variable -Name "SliceParts" -Scope:Script -Value $([Math]::Ceiling($mailboxes.count / $SlicePartsize)) | |
# Create a multidimensional array with number of values specified above (With $size) | |
$SliceArray = @() | |
# Figure out where we are and slice it | |
for ($i = 1; $i -le $SliceParts; $i++) { | |
# First we figure out where to start | |
Set-Variable -Name "start" -Scope:Script -Value $((($i - 1) * $SlicePartsize)) | |
# Now we figure out where to end and build the offset | |
Set-Variable -Name "end" -Scope:Script -Value $((($i) * $SlicePartsize) - 1) | |
# Check the counter | |
if ($end -ge ($mailboxes.count)) { | |
# Set the new offset | |
Set-Variable -Name "end" -Scope:Script -Value $(($mailboxes.count)) | |
$end = ($mailboxes.count) | |
} | |
# And here is our brand new array | |
$SliceArray +=, @($mailboxes[$start..$end]) | |
} | |
# Now we loop over all Mailboxes in all sliced arrays | |
# Catch yourself a coffee, this will take a while to complete... Snickers? | |
for ($i = 0; $i -lt $SliceArray.Length; $i++) { | |
# Build a new array | |
Set-Variable -Name "MailboxesSlice" -Scope:Script -Value $(@($SliceArray[$i])) | |
# Now we loop over all Mailboxes in this slice | |
foreach ($mb in $MailboxesSlice) { | |
# This is a command that you need to replace by your own | |
# It comes from the BASE Module, the one that you DO NOT have!!! | |
# | |
# Make sure that we are still connected... | |
Reconnect-O365Exchange | |
<# | |
Microsoft limits administrator interactions | |
This is good! Is saves us from administrators that flood the tenant | |
But this interactions needs more then we are allowed to have. | |
Sometimes a connections then gets lost, so we try to figure out | |
if we are still connected and do a reconnect if we need to! | |
This is all local and takes only a few milliseconds | |
#> | |
# Get the counter ready | |
Set-Variable -Name "cnt" -Scope:Script -Value $(($cnt + 1)) | |
Set-Variable -Name "pct" -Scope:Script -Value $(($cnt/$mailboxcount * 100)) | |
# Cleanup | |
Remove-Variable myUPN -Force -Confirm:$false -ErrorAction:SilentlyContinue -WarningAction:SilentlyContinue | |
# Get the User Principal Name | |
Set-Variable -Name "myUPN" -Scope:Script -Value $(($mb.UserPrincipalName)) | |
# Inform the operator where we are | |
if ($RunUnattended -eq $true) { | |
# Script called unattended, do nothing... Yet! | |
} else { | |
Write-Progress -Activity "Collecting Clutter details" -Status "Processing mailbox $cnt of $mailboxcount - $myUPN" -PercentComplete $pct | |
} | |
# Disable Clutter for the given User | |
Remove-Variable SetMyClutter -Force -Confirm:$false -ErrorAction:SilentlyContinue -WarningAction:SilentlyContinue | |
# Try to remove Clutter | |
try { | |
Set-Variable -Name "SetMyClutter" -Scope:Script -Value $((set-clutter -identity $myUPN -enable $false -ErrorAction:Stop -WarningAction:SilentlyContinue) > $null 2>&1 3>&1) | |
} catch { | |
# Whoopsie, we had a problem while we try to remove Clutter for this User | |
# So we try it again. | |
# This time it is a "Fire and Forget" | |
Set-Variable -Name "SetMyClutter" -Scope:Script -Value $((set-clutter -identity $myUPN -enable $false -ErrorAction:SilentlyContinue -WarningAction:SilentlyContinue) > $null 2>&1 3>&1) | |
} | |
Remove-Variable SetMyClutter -Force -Confirm:$false -ErrorAction:SilentlyContinue -WarningAction:SilentlyContinue | |
# DEBUG: Slow down, but this will take much longer, but prevents the throttling | |
Start-Sleep -Milliseconds 125 | |
# This is a command that you need to replace by your own | |
# It comes from the BASE Module, the one that you DO NOT have!!! | |
# | |
# Make sure that we are still connected... | |
Reconnect-O365Exchange | |
} | |
# Wait to prevent Office 365 throttling | |
# This is the time to Wait until we start with the next slice of users | |
# A good time is 5 - 10 Seconds | |
Start-Sleep -Seconds 5 | |
# This is a command that you need to replace by your own | |
# It comes from the BASE Module, the one that you DO NOT have!!! | |
# | |
# Make sure that we are still connected... | |
Reconnect-O365Exchange | |
} | |
# Cleanup | |
Remove-Variable mailboxes -Force -Confirm:$false -ErrorAction:SilentlyContinue -WarningAction:SilentlyContinue | |
Remove-Variable mb -Force -Confirm:$false -ErrorAction:SilentlyContinue -WarningAction:SilentlyContinue | |
# If debug is enabled... | |
if ($debug -eq $true) { | |
# Create a new time-stamp | |
Set-Variable -Name "EndTime" -Scope:Script -Value $((get-date).ToString()) | |
# find the difference between Start and Stop to display the elapsed time | |
Set-Variable -Name "TimeDiff" -Scope:Script -Value $((New-TimeSpan $StartTime $EndTime)) | |
# How long was the run? | |
Set-Variable -Name "TimeToRun" -Scope:Script -Value $(($TimeDiff.ToString())) | |
# DEBUG Output to console | |
# The only reason we use Write-Host instead of Write-Output here! | |
Write-Host "Here is some nice Debug information for you:" -ForegroundColor "White" | |
Write-Host "Users Found : $mailboxcount" | |
Write-Host "Time elapsed : $TimeToRun" | |
Write-Host "`r`nThanks for being such a patient customer...`r`n`tHave a great day!" -ForegroundColor "White" | |
# Cleanup DEBUG Variables | |
Remove-Variable EndTime -Force -Confirm:$false -ErrorAction:SilentlyContinue -WarningAction:SilentlyContinue | |
Remove-Variable TimeDiff -Force -Confirm:$false -ErrorAction:SilentlyContinue -WarningAction:SilentlyContinue | |
Remove-Variable TimeToRun -Force -Confirm:$false -ErrorAction:SilentlyContinue -WarningAction:SilentlyContinue | |
} | |
# Cleanup | |
Remove-Variable mailboxcount -Force -Confirm:$false -ErrorAction:SilentlyContinue -WarningAction:SilentlyContinue | |
# This is a command that you need to replace by your own | |
# It comes from the BASE Module, the one that you DO NOT have!!! | |
# | |
# Disconnect from Microsoft Online (Azure) | |
Disconnect-O365 > $null 2>&1 3>&1 | |
# Make a clean exit | |
exit 0 | |
# SIG # Begin signature block | |
# MIIfOgYJKoZIhvcNAQcCoIIfKzCCHycCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB | |
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR | |
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUmErUjqTG+crI9jUkZYXhyHxO | |
# 3SSgghnLMIIEFDCCAvygAwIBAgILBAAAAAABL07hUtcwDQYJKoZIhvcNAQEFBQAw | |
# VzELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNV | |
# BAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xMTA0 | |
# MTMxMDAwMDBaFw0yODAxMjgxMjAwMDBaMFIxCzAJBgNVBAYTAkJFMRkwFwYDVQQK | |
# ExBHbG9iYWxTaWduIG52LXNhMSgwJgYDVQQDEx9HbG9iYWxTaWduIFRpbWVzdGFt | |
# cGluZyBDQSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlO9l | |
# +LVXn6BTDTQG6wkft0cYasvwW+T/J6U00feJGr+esc0SQW5m1IGghYtkWkYvmaCN | |
# d7HivFzdItdqZ9C76Mp03otPDbBS5ZBb60cO8eefnAuQZT4XljBFcm05oRc2yrmg | |
# jBtPCBn2gTGtYRakYua0QJ7D/PuV9vu1LpWBmODvxevYAll4d/eq41JrUJEpxfz3 | |
# zZNl0mBhIvIG+zLdFlH6Dv2KMPAXCae78wSuq5DnbN96qfTvxGInX2+ZbTh0qhGL | |
# 2t/HFEzphbLswn1KJo/nVrqm4M+SU4B09APsaLJgvIQgAIMboe60dAXBKY5i0Eex | |
# +vBTzBj5Ljv5cH60JQIDAQABo4HlMIHiMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB | |
# Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBRG2D7/3OO+/4Pm9IWbsN1q1hSpwTBHBgNV | |
# HSAEQDA+MDwGBFUdIAAwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFs | |
# c2lnbi5jb20vcmVwb3NpdG9yeS8wMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2Ny | |
# bC5nbG9iYWxzaWduLm5ldC9yb290LmNybDAfBgNVHSMEGDAWgBRge2YaRQ2XyolQ | |
# L30EzTSo//z9SzANBgkqhkiG9w0BAQUFAAOCAQEATl5WkB5GtNlJMfO7FzkoG8IW | |
# 3f1B3AkFBJtvsqKa1pkuQJkAVbXqP6UgdtOGNNQXzFU6x4Lu76i6vNgGnxVQ380W | |
# e1I6AtcZGv2v8Hhc4EvFGN86JB7arLipWAQCBzDbsBJe/jG+8ARI9PBw+DpeVoPP | |
# PfsNvPTF7ZedudTbpSeE4zibi6c1hkQgpDttpGoLoYP9KOva7yj2zIhd+wo7AKvg | |
# IeviLzVsD440RZfroveZMzV+y5qKu0VN5z+fwtmK+mWybsd+Zf/okuEsMaL3sCc2 | |
# SI8mbzvuTXYfecPlf5Y1vC0OzAGwjn//UYCAp5LUs0RGZIyHTxZjBzFLY7Df8zCC | |
# BJ8wggOHoAMCAQICEhEhBqCB0z/YeuWCTMFrUglOAzANBgkqhkiG9w0BAQUFADBS | |
# MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEoMCYGA1UE | |
# AxMfR2xvYmFsU2lnbiBUaW1lc3RhbXBpbmcgQ0EgLSBHMjAeFw0xNTAyMDMwMDAw | |
# MDBaFw0yNjAzMDMwMDAwMDBaMGAxCzAJBgNVBAYTAlNHMR8wHQYDVQQKExZHTU8g | |
# R2xvYmFsU2lnbiBQdGUgTHRkMTAwLgYDVQQDEydHbG9iYWxTaWduIFRTQSBmb3Ig | |
# TVMgQXV0aGVudGljb2RlIC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK | |
# AoIBAQCwF66i07YEMFYeWA+x7VWk1lTL2PZzOuxdXqsl/Tal+oTDYUDFRrVZUjtC | |
# oi5fE2IQqVvmc9aSJbF9I+MGs4c6DkPw1wCJU6IRMVIobl1AcjzyCXenSZKX1GyQ | |
# oHan/bjcs53yB2AsT1iYAGvTFVTg+t3/gCxfGKaY/9Sr7KFFWbIub2Jd4NkZrItX | |
# nKgmK9kXpRDSRwgacCwzi39ogCq1oV1r3Y0CAikDqnw3u7spTj1Tk7Om+o/SWJMV | |
# TLktq4CjoyX7r/cIZLB6RA9cENdfYTeqTmvT0lMlnYJz+iz5crCpGTkqUPqp0Dw6 | |
# yuhb7/VfUfT5CtmXNd5qheYjBEKvAgMBAAGjggFfMIIBWzAOBgNVHQ8BAf8EBAMC | |
# B4AwTAYDVR0gBEUwQzBBBgkrBgEEAaAyAR4wNDAyBggrBgEFBQcCARYmaHR0cHM6 | |
# Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCQYDVR0TBAIwADAWBgNV | |
# HSUBAf8EDDAKBggrBgEFBQcDCDBCBgNVHR8EOzA5MDegNaAzhjFodHRwOi8vY3Js | |
# Lmdsb2JhbHNpZ24uY29tL2dzL2dzdGltZXN0YW1waW5nZzIuY3JsMFQGCCsGAQUF | |
# BwEBBEgwRjBEBggrBgEFBQcwAoY4aHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNv | |
# bS9jYWNlcnQvZ3N0aW1lc3RhbXBpbmdnMi5jcnQwHQYDVR0OBBYEFNSihEo4Whh/ | |
# uk8wUL2d1XqH1gn3MB8GA1UdIwQYMBaAFEbYPv/c477/g+b0hZuw3WrWFKnBMA0G | |
# CSqGSIb3DQEBBQUAA4IBAQCAMtwHjRygnJ08Kug9IYtZoU1+zETOA75+qrzE5ntz | |
# u0vxiNqQTnU3KDhjudcrD1SpVs53OZcwc82b2dkFRRyNpLgDXU/ZHC6Y4OmI5uzX | |
# BX5WKnv3FlujrY+XJRKEG7JcY0oK0u8QVEeChDVpKJwM5B8UFiT6ddx0cm5OyuNq | |
# Q6/PfTZI0b3pBpEsL6bIcf3PvdidIZj8r9veIoyvp/N3753co3BLRBrweIUe8qWM | |
# ObXciBw37a0U9QcLJr2+bQJesbiwWGyFOg32/1onDMXeU+dUPFZMyU5MMPbyXPsa | |
# jMKCvq1ZkfYbTVV7z1sB3P16028jXDJHmwHzwVEURoqbMIIFTDCCBDSgAwIBAgIQ | |
# FtT3Ux2bGCdP8iZzNFGAXDANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJHQjEb | |
# MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRow | |
# GAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDEjMCEGA1UEAxMaQ09NT0RPIFJTQSBD | |
# b2RlIFNpZ25pbmcgQ0EwHhcNMTUwNzE3MDAwMDAwWhcNMTgwNzE2MjM1OTU5WjCB | |
# kDELMAkGA1UEBhMCREUxDjAMBgNVBBEMBTM1NTc2MQ8wDQYDVQQIDAZIZXNzZW4x | |
# EDAOBgNVBAcMB0xpbWJ1cmcxGDAWBgNVBAkMD0JhaG5ob2ZzcGxhdHogMTEZMBcG | |
# A1UECgwQS3JlYXRpdlNpZ24gR21iSDEZMBcGA1UEAwwQS3JlYXRpdlNpZ24gR21i | |
# SDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK8jDmF0TO09qJndJ9eG | |
# Fqra1lf14NDhM8wIT8cFcZ/AX2XzrE6zb/8kE5sL4/dMhuTOp+SMt0tI/SON6BY3 | |
# 208v/NlDI7fozAqHfmvPhLX6p/TtDkmSH1sD8AIyrTH9b27wDNX4rC914Ka4EBI8 | |
# sGtZwZOQkwQdlV6gCBmadar+7YkVhAbIIkSazE9yyRTuffidmtHV49DHPr+ql4ji | |
# NJ/K27ZFZbwM6kGBlDBBSgLUKvufMY+XPUukpzdCaA0UzygGUdDfgy0htSSp8MR9 | |
# Rnq4WML0t/fT0IZvmrxCrh7NXkQXACk2xtnkq0bXUIC6H0Zolnfl4fanvVYyvD88 | |
# qIECAwEAAaOCAbIwggGuMB8GA1UdIwQYMBaAFCmRYP+KTfrr+aZquM/55ku9Sc4S | |
# MB0GA1UdDgQWBBSeVG4/9UvVjmv8STy4f7kGHucShjAOBgNVHQ8BAf8EBAMCB4Aw | |
# DAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAzARBglghkgBhvhCAQEE | |
# BAMCBBAwRgYDVR0gBD8wPTA7BgwrBgEEAbIxAQIBAwIwKzApBggrBgEFBQcCARYd | |
# aHR0cHM6Ly9zZWN1cmUuY29tb2RvLm5ldC9DUFMwQwYDVR0fBDwwOjA4oDagNIYy | |
# aHR0cDovL2NybC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQ29kZVNpZ25pbmdDQS5j | |
# cmwwdAYIKwYBBQUHAQEEaDBmMD4GCCsGAQUFBzAChjJodHRwOi8vY3J0LmNvbW9k | |
# b2NhLmNvbS9DT01PRE9SU0FDb2RlU2lnbmluZ0NBLmNydDAkBggrBgEFBQcwAYYY | |
# aHR0cDovL29jc3AuY29tb2RvY2EuY29tMCMGA1UdEQQcMBqBGGhvY2h3YWxkQGty | |
# ZWF0aXZzaWduLm5ldDANBgkqhkiG9w0BAQsFAAOCAQEASSZkxKo3EyEk/qW0ZCs7 | |
# CDDHKTx3UcqExigsaY0DRo9fbWgqWynItsqdwFkuQYJxzknqm2JMvwIK6BtfWc64 | |
# WZhy0BtI3S3hxzYHxDjVDBLBy91kj/mddPjen60W+L66oNEXiBuIsOcJ9e7tH6Vn | |
# 9eFEUjuq5esoJM6FV+MIKv/jPFWMp5B6EtX4LDHEpYpLRVQnuxoc38mmd+NfjcD2 | |
# /o/81bu6LmBFegHAaGDpThGf8Hk3NVy0GcpQ3trqmH6e3Cpm8Ut5UkoSONZdkYWw | |
# rzkmzFgJyoM2rnTMTh4ficxBQpB7Ikv4VEnrHRReihZ0zwN+HkXO1XEnd3hm+08j | |
# LzCCBdgwggPAoAMCAQICEEyq+crbY2/gH/dO2FsDhp0wDQYJKoZIhvcNAQEMBQAw | |
# gYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO | |
# BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSswKQYD | |
# VQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEwMDEx | |
# OTAwMDAwMFoXDTM4MDExODIzNTk1OVowgYUxCzAJBgNVBAYTAkdCMRswGQYDVQQI | |
# ExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoT | |
# EUNPTU9ETyBDQSBMaW1pdGVkMSswKQYDVQQDEyJDT01PRE8gUlNBIENlcnRpZmlj | |
# YXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA | |
# kehUktIKVrGsDSTdxc9EZ3SZKzejfSNwAHG8U9/E+ioSj0t/EFa9n3Byt2F/yUsP | |
# F6c947AEYe7/EZfH9IY+Cvo+XPmT5jR62RRr55yzhaCCenavcZDX7P0N+pxs+t+w | |
# gvQUfvm+xKYvT3+Zf7X8Z0NyvQwA1onrayzT7Y+YHBSrfuXjbvzYqOSSJNpDa2K4 | |
# Vf3qwbxstovzDo2a5JtsaZn4eEgwRdWt4Q08RWD8MpZRJ7xnw8outmvqRsfHIKCx | |
# H2XeSAi6pE6p8oNGN4Tr6MyBSENnTnIqm1y9TBsoilwie7SrmNnu4FGDwwlGTm0+ | |
# mfqVF9p8M1dBPI1R7Qu2XK8sYxrfV8g/vOldxJuvRZnio1oktLqpVj3Pb6r/SVi+ | |
# 8Kj/9Lit6Tf7urj0Czr56ENCHonYhMsT8dm74YlguIwoVqwUHZwK53Hrzw7dPamW | |
# oUi9PPevtQ0iTMARgexWO/bTouJbt7IEIlKVgJNp6I5MZfGRAy1wdALqi2cVKWlS | |
# ArvX31BqVUa/oKMoYX9w0MOiqiwhqkfOKJwGRXa/ghgntNWutMtQ5mv0TIZxMOmm | |
# 3xaG4Nj/QN370EKIf6MzOi5cHkERgWPOGHFrK+ymircxXDpqR+DDeVnWIBqv8mqY | |
# qnK8V0rSS527EPywTEHl7R09XiidnMy/s1Hap0flhFMCAwEAAaNCMEAwHQYDVR0O | |
# BBYEFLuvfgI9+qbxPISOre44mOzZMjLUMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB | |
# Af8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQAK8dVGhLeuUbtssk1BFACTTJzL | |
# 5cBUz6AljgL5/bCiDfUgmDwTLaxWorDWfhGS6S66ni6acrG9GURsYTWimrQWEmla | |
# jOHXPqQa6C8D9K5hHRAbKqSLesX+BabhwNbI/p6ujyu6PZn42HMJWEZuppz01yfT | |
# ldo3g3Ic03PgokeZAzhd1Ul5ACkcx+ybIBwHJGlXeLI5/DqEoLWcfI2/LpNiJ7c5 | |
# 2hcYrr08CWj/hJs81dYLA+NXnhT30etPyL2HI7e2SUN5hVy665ILocboaKhMFrEa | |
# mQroUyySu6EJGHUMZah7yyO3GsIohcMb/9ArYu+kewmRmGeMFAHNaAZqYyF1A4CI | |
# im6BxoXyqaQt5/SlJBBHg8rN9I15WLEGm+caKtmdAdeUfe0DSsrw2+ipAT71VpnJ | |
# Ho5JPbvlCbngT0mSPRaCQMzMWcbmOu0SLmk8bJWx/aode3+Gvh4OMkb7+xOPdX9M | |
# i0tGY/4ANEBwwcO5od2mcOIEs0G86YCR6mSceuEiA6mcbm8OZU9sh4de826g+XWl | |
# m0DoU7InnUq5wHchjf+H8t68jO8X37dJC9HybjALGg5Odu0R/PXpVrJ9v8dtCpOM | |
# pdDAth2+Ok6UotdubAvCinz6IPPE5OXNDajLkZKxfIXstRRpZg6C583OyC2mUX8h | |
# wTVThQZKXZ+tuxtfdDCCBeAwggPIoAMCAQICEC58h8wOk0pS/pT9HLfNNK8wDQYJ | |
# KoZIhvcNAQEMBQAwgYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1h | |
# bmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBM | |
# aW1pdGVkMSswKQYDVQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9y | |
# aXR5MB4XDTEzMDUwOTAwMDAwMFoXDTI4MDUwODIzNTk1OVowfTELMAkGA1UEBhMC | |
# R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9y | |
# ZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxIzAhBgNVBAMTGkNPTU9ETyBS | |
# U0EgQ29kZSBTaWduaW5nIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC | |
# AQEAppiQY3eRNH+K0d3pZzER68we/TEds7liVz+TvFvjnx4kMhEna7xRkafPnp4l | |
# s1+BqBgPHR4gMA77YXuGCbPj/aJonRwsnb9y4+R1oOU1I47Jiu4aDGTH2EKhe7VS | |
# A0s6sI4jS0tj4CKUN3vVeZAKFBhRLOb+wRLwHD9hYQqMotz2wzCqzSgYdUjBeVoI | |
# zbuMVYz31HaQOjNGUHOYXPSFSmsPgN1e1r39qS/AJfX5eNeNXxDCRFU8kDwxRstw | |
# rgepCuOvwQFvkBoj4l8428YIXUezg0HwLgA3FLkSqnmSUs2HD3vYYimkfjC9G7WM | |
# crRI8uPoIfleTGJ5iwIGn3/VCwIDAQABo4IBUTCCAU0wHwYDVR0jBBgwFoAUu69+ | |
# Aj36pvE8hI6t7jiY7NkyMtQwHQYDVR0OBBYEFCmRYP+KTfrr+aZquM/55ku9Sc4S | |
# MA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMBMGA1UdJQQMMAoG | |
# CCsGAQUFBwMDMBEGA1UdIAQKMAgwBgYEVR0gADBMBgNVHR8ERTBDMEGgP6A9hjto | |
# dHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0 | |
# aG9yaXR5LmNybDBxBggrBgEFBQcBAQRlMGMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9j | |
# cnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUFkZFRydXN0Q0EuY3J0MCQGCCsGAQUF | |
# BzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZIhvcNAQEMBQADggIB | |
# AAI/AjnD7vjKO4neDG1NsfFOkk+vwjgsBMzFYxGrCWOvq6LXAj/MbxnDPdYaCJT/ | |
# JdipiKcrEBrgm7EHIhpRHDrU4ekJv+YkdK8eexYxbiPvVFEtUgLidQgFTPG3UeFR | |
# AMaH9mzuEER2V2rx31hrIapJ1Hw3Tr3/tnVUQBg2V2cRzU8C5P7z2vx1F9vst/dl | |
# CSNJH0NXg+p+IHdhyE3yu2VNqPeFRQevemknZZApQIvfezpROYyoH3B5rW1CIKLP | |
# DGwDjEzNcweU51qOOgS6oqF8H8tjOhWn1BUbp1JHMqn0v2RH0aofU04yMHPCb7d4 | |
# gp1c/0a7ayIdiAv4G6o0pvyM9d1/ZYyMMVcx0DbsR6HPy4uo7xwYWMUGd8pLm1Gv | |
# TAhKeo/io1Lijo7MJuSy2OU4wqjtxoGcNWupWGFKCpe0S0K2VZ2+medwbVn4bSoM | |
# fxlgXwyaiGwwrFIJkBYb/yud29AgyonqKH4yjhnfe0gzHtdl+K7J+IMUk3Z9ZNCO | |
# zr41ff9yMU2fnr0ebC+ojwwGUPuMJ7N2yfTm18M04oyHIYZh/r9VdOEhdwMKaGy7 | |
# 5Mmp5s9ZJet87EUOeWZo6CLNuO+YhU2WETwJitB/vCgoE/tqylSNklzNwmWYBp7O | |
# SFvUtTeTRkF8B93P+kPvumdh/31J4LswfVyA4+YWOUunMYIE2TCCBNUCAQEwgZEw | |
# fTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G | |
# A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxIzAhBgNV | |
# BAMTGkNPTU9ETyBSU0EgQ29kZSBTaWduaW5nIENBAhAW1PdTHZsYJ0/yJnM0UYBc | |
# MAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEMMQowCKACgAChAoAAMBkGCSqGSIb3 | |
# DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEV | |
# MCMGCSqGSIb3DQEJBDEWBBSPV1r+seg+naqWvFtsDm6RZqc4nDANBgkqhkiG9w0B | |
# AQEFAASCAQBy+wM/IFWeXsV27SO8gH0gyxJTuuSLGvI5pfTuF89lp9E344DEo4nf | |
# 88SFbaMwuHi4truXsSZnirzFnqXLqVi/qLar5KZPfHWJoGKNzawQH2aA2synRNbA | |
# hLVmKjZwRl0r9lkGaqWu7l6f+nnrI6Sc8r14YwkACZbzLPVI+ZbqBxP0BYzLEXEQ | |
# g8bCr6j7fS6oK2JbeWvwRfOO1q/SYKDwRRwPasUsOcftCA5OwoT8fKmAat+qqsRN | |
# +yzRep90NqGnKCIW/yYjupM39aeGyRflsx7LaAmeZk5Xo8ZL4eYTDg/riqNQce1X | |
# 87EZRnkYIX/Atdk6V1z2OtJMG6ofFsJ0oYICojCCAp4GCSqGSIb3DQEJBjGCAo8w | |
# ggKLAgEBMGgwUjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt | |
# c2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gRzICEhEh | |
# BqCB0z/YeuWCTMFrUglOAzAJBgUrDgMCGgUAoIH9MBgGCSqGSIb3DQEJAzELBgkq | |
# hkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1MTIxMTEyMjUzM1owIwYJKoZIhvcN | |
# AQkEMRYEFCAHoh2qOQmktO1XHJfgsKwxmCWmMIGdBgsqhkiG9w0BCRACDDGBjTCB | |
# ijCBhzCBhAQUs2MItNTN7U/PvWa5Vfrjv7EsKeYwbDBWpFQwUjELMAkGA1UEBhMC | |
# QkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExKDAmBgNVBAMTH0dsb2JhbFNp | |
# Z24gVGltZXN0YW1waW5nIENBIC0gRzICEhEhBqCB0z/YeuWCTMFrUglOAzANBgkq | |
# hkiG9w0BAQEFAASCAQBhWJqfvD/XUEgz7VTtzVGr0ppxshnDqQt61+Ythv9y2haW | |
# HZw48d0xmdmYCDN5iE8QtvTniP9HRc0t59JeTBjBz2YxZORuSMFnDjsYS7SLDHm6 | |
# 8TEy5SCjf50B0/BN9pjn7tHy/mvEimoLfnmKdlJNK0scabo0TdZHHNafgY4Msmr/ | |
# /flIjaKnL4uCdf4CVDKEtSa3CSmdoNieYmsdVk7dEuyKV8aaCHPohBtZl1o97qfc | |
# plOjH4uRqH4vAdu/4N+qtSbSQx+/ZztxTp9glVyFhAO9pZW2Mh09VR4OsjTM3Yew | |
# n5mGiDQUtY860xsceEOEuqHMvL65ONdZ0i2J/hUP | |
# SIG # End signature block |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment