403Webshell
Server IP : 209.209.40.120  /  Your IP : 216.73.217.112
Web Server : Microsoft-IIS/10.0
System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586
User : NEWWWW$ ( 0)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Windows/SecureBoot/ExampleRolloutScripts/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Windows/SecureBoot/ExampleRolloutScripts/Deploy-OrchestratorTask.ps1
<#
.SYNOPSIS
    Deploys the Secure Boot Rollout Orchestrator as a Windows Scheduled Task.

.DESCRIPTION
    Creates a scheduled task that runs the orchestrator continuously in the background.
    The task runs with bypass execution policy so no security prompts appear.
    
    The orchestrator will:
    - Poll for device updates on the specified interval
    - Automatically generate waves and deploy GPOs
    - Continue until all eligible devices are updated
    
    Monitor progress using: Get-SecureBootRolloutStatus.ps1

.PARAMETER AggregationInputPath
    UNC path to JSON device data (from detection GPO)

.PARAMETER ReportBasePath
    Local path for reports and state files

.PARAMETER TargetOU
    OU to link GPOs (optional - defaults to domain root)

.PARAMETER PollIntervalMinutes
    Minutes between status checks. Default: 30

.PARAMETER UseWinCS
    Use WinCS (Windows Configuration System) instead of AvailableUpdatesPolicy GPO.
    When enabled, deploys WinCsFlags.exe scheduled task to endpoints instead of registry GPO.

.PARAMETER WinCSKey
    The WinCS key for Secure Boot configuration. Default: F33E0C8E002

.PARAMETER ServiceAccount
    Account to run the task. Default: SYSTEM
    For domain operations, use a domain admin service account.

.PARAMETER AllowListPath
    Path to a file containing hostnames to ALLOW for rollout (targeted/pilot rollout).
    Supports .txt (one hostname per line) or .csv (with Hostname/ComputerName/Name column).
    When specified, ONLY these devices will be included in rollout.

.PARAMETER AllowADGroup
    Name of an AD security group containing computer accounts to ALLOW.
    Example: "SecureBoot-Pilot-Computers"

.PARAMETER ExclusionListPath
    Path to a file containing hostnames to EXCLUDE from rollout (VIP/executive devices).
    Supports .txt (one hostname per line) or .csv (with Hostname/ComputerName/Name column).

.PARAMETER ExcludeADGroup
    Name of an AD security group containing computer accounts to exclude.
    Example: "VIP-Computers"

.PARAMETER ScriptPath
    Path to the orchestrator script. Default: Same folder as this script.

.PARAMETER Uninstall
    Remove the scheduled task

.EXAMPLE
    .\Deploy-OrchestratorTask.ps1 -AggregationInputPath "\\server\SecureBootData$" -ReportBasePath "C:\SecureBootReports" -ServiceAccount "DOMAIN\svc_secureboot"

.EXAMPLE
    .\Deploy-OrchestratorTask.ps1 -AggregationInputPath "\\server\SecureBootData$" -ReportBasePath "C:\SecureBootReports"

.EXAMPLE
    # Deploy using WinCS method instead of AvailableUpdatesPolicy
    .\Deploy-OrchestratorTask.ps1 -AggregationInputPath "\\server\SecureBootData$" -ReportBasePath "C:\SecureBootReports" -UseWinCS

.EXAMPLE
    .\Deploy-OrchestratorTask.ps1 -Uninstall
#>

[CmdletBinding()]
param(
    [Parameter(Mandatory = $false)]
    [string]$AggregationInputPath,
    
    [Parameter(Mandatory = $false)]
    [string]$ReportBasePath,
    
    [Parameter(Mandatory = $false)]
    [string]$TargetOU,
    
    [Parameter(Mandatory = $false)]
    [int]$PollIntervalMinutes = 30,
    
    [Parameter(Mandatory = $false)]
    [switch]$UseWinCS,
    
    [Parameter(Mandatory = $false)]
    [string]$WinCSKey = "F33E0C8E002",
    
    [Parameter(Mandatory = $false)]
    [string]$ServiceAccount = "SYSTEM",
    
    [Parameter(Mandatory = $false)]
    [string]$AllowListPath,
    
    [Parameter(Mandatory = $false)]
    [string]$AllowADGroup,
    
    [Parameter(Mandatory = $false)]
    [string]$ExclusionListPath,
    
    [Parameter(Mandatory = $false)]
    [string]$ExcludeADGroup,
    
    [Parameter(Mandatory = $false)]
    [string]$ScriptPath,
    
    [Parameter(Mandatory = $false)]
    [switch]$Uninstall
)

$ErrorActionPreference = "Stop"
$TaskName = "SecureBoot-Rollout-Orchestrator"
$DownloadUrl = "https://aka.ms/getsecureboot"
$DownloadSubPage = "Deployment and Monitoring Samples"

# ============================================================================
# DEPENDENCY VALIDATION
# ============================================================================

function Test-ScriptDependencies {
    <#
    .SYNOPSIS
        Validates that all required scripts are present.
    .DESCRIPTION
        Checks for required script dependencies and provides download instructions if missing.
    #>
    param(
        [Parameter(Mandatory = $true)]
        [string]$ScriptDirectory,
        
        [Parameter(Mandatory = $true)]
        [string[]]$RequiredScripts
    )
    
    $missingScripts = @()
    
    foreach ($script in $RequiredScripts) {
        $scriptPath = Join-Path $ScriptDirectory $script
        if (-not (Test-Path $scriptPath)) {
            $missingScripts += $script
        }
    }
    
    if ($missingScripts.Count -gt 0) {
        Write-Host ""
        Write-Host ("=" * 70) -ForegroundColor Red
        Write-Host "  MISSING DEPENDENCIES" -ForegroundColor Red
        Write-Host ("=" * 70) -ForegroundColor Red
        Write-Host ""
        Write-Host "The following required scripts were not found:" -ForegroundColor Yellow
        foreach ($script in $missingScripts) {
            Write-Host "  - $script" -ForegroundColor White
        }
        Write-Host ""
        Write-Host "Please download the latest scripts from:" -ForegroundColor Cyan
        Write-Host "  URL: $DownloadUrl" -ForegroundColor White
        Write-Host "  Navigate to: '$DownloadSubPage'" -ForegroundColor White
        Write-Host ""
        Write-Host "Extract all scripts to the same directory and run again." -ForegroundColor Yellow
        Write-Host ""
        return $false
    }
    
    return $true
}

# Required scripts for orchestrator deployment
$requiredScripts = @(
    "Start-SecureBootRolloutOrchestrator.ps1",
    "Aggregate-SecureBootData.ps1",
    "Deploy-GPO-SecureBootCollection.ps1",
    "Detect-SecureBootCertUpdateStatus.ps1",
    "Get-SecureBootRolloutStatus.ps1",
    "Enable-SecureBootUpdateTask.ps1"
)

if (-not (Test-ScriptDependencies -ScriptDirectory $PSScriptRoot -RequiredScripts $requiredScripts)) {
    exit 1
}

# ============================================================================
# UNINSTALL
# ============================================================================

if ($Uninstall) {
    Write-Host ""
    Write-Host "Removing scheduled task: $TaskName" -ForegroundColor Yellow
    
    $existingTask = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
    if ($existingTask) {
        Stop-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
        Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false
        Write-Host "Task removed successfully." -ForegroundColor Green
    } else {
        Write-Host "Task not found." -ForegroundColor Gray
    }
    exit 0
}

# ============================================================================
# VALIDATION
# ============================================================================

if (-not $AggregationInputPath -or -not $ReportBasePath) {
    Write-Host "ERROR: -AggregationInputPath and -ReportBasePath are required." -ForegroundColor Red
    Write-Host ""
    Write-Host "Example:" -ForegroundColor Yellow
    Write-Host '  .\Deploy-OrchestratorTask.ps1 -AggregationInputPath "\\server\SecureBootData$" -ReportBasePath "C:\SecureBootReports"'
    exit 1
}

# Find orchestrator script
if (-not $ScriptPath) {
    $ScriptPath = Join-Path $PSScriptRoot "Start-SecureBootRolloutOrchestrator.ps1"
}

if (-not (Test-Path $ScriptPath)) {
    Write-Host "ERROR: Orchestrator script not found: $ScriptPath" -ForegroundColor Red
    exit 1
}

# Find aggregation script (needed by orchestrator)
$aggregateScript = Join-Path $PSScriptRoot "Aggregate-SecureBootData.ps1"
if (-not (Test-Path $aggregateScript)) {
    Write-Host "WARNING: Aggregate-SecureBootData.ps1 not found in script directory" -ForegroundColor Yellow
    Write-Host "         Orchestrator may fail if it cannot find this script." -ForegroundColor Yellow
}

Write-Host ""
Write-Host ("=" * 70) -ForegroundColor Cyan
Write-Host "  Secure Boot Rollout Orchestrator - Task Deployment" -ForegroundColor Cyan
Write-Host ("=" * 70) -ForegroundColor Cyan
Write-Host ""

# For display, show relative paths (script names only)
$displayScriptPath = Split-Path $ScriptPath -Leaf

Write-Host "Configuration:" -ForegroundColor Yellow
Write-Host "  Task Name:         $TaskName"
Write-Host "  Orchestrator:      $displayScriptPath"
Write-Host "  Input Path:        $AggregationInputPath"
Write-Host "  Report Path:       $ReportBasePath"
Write-Host "  Target OU:         $(if ($TargetOU) { $TargetOU } else { '(domain root)' })"
Write-Host "  Poll Interval:     $PollIntervalMinutes minutes"
Write-Host "  Service Account:   $ServiceAccount"
Write-Host "  Deployment Method: $(if ($UseWinCS) { "WinCS (WinCsFlags.exe)" } else { "AvailableUpdatesPolicy (GPO)" })"
if ($UseWinCS) {
    Write-Host "  WinCS Key:         $WinCSKey"
}
Write-Host ""

# ============================================================================
# GPO DETECTION - AUTO-DEPLOY IF MISSING
# ============================================================================

$CollectionGPOName = "SecureBoot-EventCollection"
$deployGpoScript = Join-Path $PSScriptRoot "Deploy-GPO-SecureBootCollection.ps1"

# Check if GroupPolicy module is available
if (Get-Module -ListAvailable -Name GroupPolicy) {
    Import-Module GroupPolicy -ErrorAction SilentlyContinue
    
    Write-Host "Checking for Detection GPO..." -ForegroundColor Yellow
    
    try {
        # Get the domain from the AggregationInputPath (e.g., \\domain\share)
        $domainFromPath = if ($AggregationInputPath -match '^\\\\([^\\]+)\\') {
            $matches[1]
        } else {
            $env:USERDNSDOMAIN
        }
        
        # Check if GPO exists
        $existingGpo = Get-GPO -Name $CollectionGPOName -ErrorAction SilentlyContinue
        
        if ($existingGpo) {
            Write-Host "  Detection GPO found: $CollectionGPOName" -ForegroundColor Green
        } else {
            Write-Host ""
            Write-Host ("=" * 70) -ForegroundColor Yellow
            Write-Host "  DETECTION GPO NOT FOUND" -ForegroundColor Yellow
            Write-Host ("=" * 70) -ForegroundColor Yellow
            Write-Host ""
            Write-Host "The detection GPO '$CollectionGPOName' was not found." -ForegroundColor Yellow
            Write-Host "This GPO is required to collect device status data." -ForegroundColor Yellow
            Write-Host ""
            
            # Ask user if they want to deploy the GPO now
            Write-Host "Would you like to deploy the Detection GPO now? (Y/N)" -ForegroundColor Cyan
            $response = Read-Host
            
            if ($response -match '^[Yy]') {
                Write-Host ""
                Write-Host "Launching GPO Deployment..." -ForegroundColor Cyan
                Write-Host ""
                
                # Build parameters for GPO deployment
                $gpoParams = @{
                    DomainName = $domainFromPath
                    CollectionSharePath = $AggregationInputPath
                    ScriptSourcePath = Join-Path $PSScriptRoot "Detect-SecureBootCertUpdateStatus.ps1"
                }
                
                if ($TargetOU) {
                    $gpoParams.OUPath = $TargetOU
                } else {
                    # Use AutoDetectOU to let user select
                    $gpoParams.AutoDetectOU = $true
                }
                
                # Run the GPO deployment script
                & $deployGpoScript @gpoParams
                
                if ($LASTEXITCODE -ne 0) {
                    Write-Host "GPO deployment may have encountered issues. Review the output above." -ForegroundColor Yellow
                    Write-Host "You can continue with orchestrator deployment or press Ctrl+C to abort." -ForegroundColor Yellow
                    Write-Host ""
                    Read-Host "Press Enter to continue"
                } else {
                    Write-Host ""
                    Write-Host "Detection GPO deployed successfully!" -ForegroundColor Green
                    Write-Host ""
                }
            } else {
                Write-Host ""
                Write-Host "Skipping GPO deployment. The orchestrator will not receive device data" -ForegroundColor Yellow
                Write-Host "until the Detection GPO is deployed manually." -ForegroundColor Yellow
                Write-Host ""
                Write-Host "To deploy the Detection GPO later, run:" -ForegroundColor Cyan
                Write-Host "  .\Deploy-GPO-SecureBootCollection.ps1 -DomainName `"$domainFromPath`" -AutoDetectOU" -ForegroundColor White
                Write-Host ""
            }
        }
    } catch {
        Write-Host "  Unable to check for GPO: $($_.Exception.Message)" -ForegroundColor Yellow
        Write-Host "  Continuing with orchestrator deployment..." -ForegroundColor Gray
    }
} else {
    Write-Host "  GroupPolicy module not available - skipping GPO check" -ForegroundColor Gray
    Write-Host "  Ensure Detection GPO is deployed separately." -ForegroundColor Gray
}

Write-Host ""

# ============================================================================
# BUILD ARGUMENTS
# ============================================================================

$arguments = @(
    "-NoProfile"
    "-ExecutionPolicy Bypass"
    "-File `"$ScriptPath`""
    "-AggregationInputPath `"$AggregationInputPath`""
    "-ReportBasePath `"$ReportBasePath`""
    "-PollIntervalMinutes $PollIntervalMinutes"
)

if ($TargetOU) {
    $arguments += "-TargetOU `"$TargetOU`""
}

if ($UseWinCS) {
    $arguments += "-UseWinCS"
    $arguments += "-WinCSKey `"$WinCSKey`""
}

if ($AllowListPath) {
    $arguments += "-AllowListPath `"$AllowListPath`""
}

if ($AllowADGroup) {
    $arguments += "-AllowADGroup `"$AllowADGroup`""
}

if ($ExclusionListPath) {
    $arguments += "-ExclusionListPath `"$ExclusionListPath`""
}

if ($ExcludeADGroup) {
    $arguments += "-ExcludeADGroup `"$ExcludeADGroup`""
}

$argumentString = $arguments -join " "

# Don't display raw arguments with full paths - it's confusing for published scripts
# The task will use the full path internally


# ============================================================================
# CREATE SCHEDULED TASK
# ============================================================================

# Check for existing task
$existingTask = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
if ($existingTask) {
    Write-Host "Task already exists. Updating..." -ForegroundColor Yellow
    Stop-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
    Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false
}

# Create task action
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument $argumentString -WorkingDirectory $PSScriptRoot

# Create trigger - run once, immediately (orchestrator loops internally)
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(1)

# Create principal
if ($ServiceAccount -eq "SYSTEM") {
    $principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
} else {
    # Normalize local account format: COMPUTERNAME\User -> User
    # Register-ScheduledTask does not accept COMPUTERNAME\User or .\User for local accounts
    $taskUser = $ServiceAccount
    if ($ServiceAccount -match "^$([regex]::Escape($env:COMPUTERNAME))\\(.+)$") {
        $taskUser = $Matches[1]
        Write-Host "  Note: Local account detected, using '$taskUser' for task registration" -ForegroundColor Gray
    }

    # Prompt for password
    Write-Host "Enter password for $ServiceAccount" -ForegroundColor Yellow
    $cred = Get-Credential -UserName $taskUser -Message "Service account credentials for scheduled task"
    if (-not $cred) {
        Write-Host "Credential entry cancelled. Aborting." -ForegroundColor Red
        exit 1
    }
    $principal = New-ScheduledTaskPrincipal -UserId $taskUser -LogonType Password -RunLevel Highest
}

# Task settings
$settings = New-ScheduledTaskSettingsSet `
    -AllowStartIfOnBatteries `
    -DontStopIfGoingOnBatteries `
    -StartWhenAvailable `
    -RunOnlyIfNetworkAvailable `
    -RestartCount 3 `
    -RestartInterval (New-TimeSpan -Minutes 5) `
    -ExecutionTimeLimit (New-TimeSpan -Days 30)  # Allow long-running

# Register task
try {
    if ($ServiceAccount -eq "SYSTEM") {
        Register-ScheduledTask -TaskName $TaskName -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Description "Secure Boot Certificate Rollout - Automated GPO deployment"
    } else {
        # Use New-ScheduledTask to embed the principal (with RunLevel Highest) into a task object,
        # then register with -InputObject + -User/-Password (separate parameter set from -Principal)
        $taskDefinition = New-ScheduledTask -Action $action -Trigger $trigger -Principal $principal -Settings $settings
        $taskDefinition.Description = "Secure Boot Certificate Rollout - Automated GPO deployment"
        # Note: Register-ScheduledTask requires plain text password - no SecureString overload exists
        $netCred = $cred.GetNetworkCredential()
        Register-ScheduledTask -TaskName $TaskName -InputObject $taskDefinition -User $taskUser -Password $netCred.Password -ErrorAction Stop
        $netCred = $null
    }
    Write-Host "Scheduled task created successfully!" -ForegroundColor Green
} catch {
    Write-Host "Failed to create scheduled task: $($_.Exception.Message)" -ForegroundColor Red
    exit 1
}

# ============================================================================
# CREATE STATUS SHORTCUT
# ============================================================================

$statusScript = Join-Path $PSScriptRoot "Get-SecureBootRolloutStatus.ps1"
if (Test-Path $statusScript) {
    Write-Host ""
    Write-Host "To check rollout status, run:" -ForegroundColor Yellow
    Write-Host "  .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath `"$ReportBasePath`"" -ForegroundColor Cyan
}

# ============================================================================
# OUTPUT
# ============================================================================

Write-Host ""
Write-Host ("=" * 70) -ForegroundColor Green
Write-Host "  DEPLOYMENT COMPLETE" -ForegroundColor Green
Write-Host ("=" * 70) -ForegroundColor Green
Write-Host ""
Write-Host "The orchestrator will start in approximately 1 minute." -ForegroundColor White
Write-Host ""
Write-Host "MONITORING:" -ForegroundColor Yellow
Write-Host "  View task status:    Get-ScheduledTask -TaskName '$TaskName' | Select State"
Write-Host "  View task log:       Get-Content '$ReportBasePath\RolloutState\Orchestrator_$(Get-Date -Format 'yyyyMMdd').log' -Tail 50"
Write-Host "  View rollout state:  Get-Content '$ReportBasePath\RolloutState\RolloutState.json' | ConvertFrom-Json"
Write-Host "  View dashboard:      Start '$ReportBasePath\Aggregation_*\SecureBoot_Dashboard*.html'"
Write-Host "  Quick status:        .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath '$ReportBasePath'"
Write-Host ""
Write-Host "MANAGEMENT:" -ForegroundColor Yellow
Write-Host "  Start manually:      Start-ScheduledTask -TaskName '$TaskName'"
Write-Host "  Stop:                Stop-ScheduledTask -TaskName '$TaskName'"
Write-Host "  Remove:              .\Deploy-OrchestratorTask.ps1 -Uninstall"
Write-Host ""

# SIG # Begin signature block
# MIIpyAYJKoZIhvcNAQcCoIIpuTCCKbUCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAhai1fTeMgZT/W
# RzS6QKGF2mE77In1fIATPvAv95cREaCCDeUwgga9MIIEpaADAgECAhMzAAAAHEif
# gd+hsLd3AAAAAAAcMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEG
# A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj
# cm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0
# aWZpY2F0ZSBBdXRob3JpdHkgMjAxMDAeFw0yNDA4MDgyMTM2MjNaFw0zNTA2MjMy
# MjA0MDFaMF8xCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y
# YXRpb24xMDAuBgNVBAMTJ01pY3Jvc29mdCBXaW5kb3dzIENvZGUgU2lnbmluZyBQ
# Q0EgMjAyNDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJp9a30nwXYq
# Lq7j1TT/zCtt7vxU+CCj+7BkifS/B2gXKGU7OV9SXRJGP1yFs5p6jpsYi4cYzF56
# AV0AEmmEjV8wT2lvPU5BhN3wV30HqYPIYEj5P3WXf0kXD9fvjUf1GAtXEriJ8w7A
# LNaVEm9Rs4ePA0ZsYHaCbU5kBUJQDXv76hafOcQgdFCA3I3zYtfzX2vOwx87uDOa
# CuyKORZih9c3zTf+TLC5QYLyhVMBnDXEHDOrvaw92DSyIqpdgRWpufzqDFy1egVj
# koXZhb+9pZ9heUzNXTXhOoXzexh6YzAL4flBWm+Bc1hQyESenEvBJznV+25u3h77
# jjgMUY44+WXQ4u9qddDe/U5SeAaKRvvibmi4z7QRpLvZsla0CPiOUGz00Do5sfkC
# 0EwlsSzfM3+8A9rsyFVOgWDVPzt98OJP2EoaEOq8GE9GCoN2i7/4C2FCwff1BSCT
# JWZO1Wcr2MteJE6UxGV+ihA8nN51YPKD2dYGoewrXvRzC/1HoUeSvlZf0mf9GHEt
# vvkbJVRRo6PBf0md5t87Vb1mM/fIp1eypyaxmXkgpcBwuylsOq2kSVOJ5wBPoaEs
# sJkeMcKnEuuu++UKdDHlS0DtsYjN0QnOucvTdSsdvhzKOSjJF3XVqr9f2C945LXT
# 5rxKIHUIEDBcNYU6BKDDH6rfpKOOCSilAgMBAAGjggFGMIIBQjAOBgNVHQ8BAf8E
# BAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFB6C3w7XjLPXAjSDDtqr
# rWW5r7jsMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMA8GA1UdEwEB/wQFMAMB
# Af8wHwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYDVR0fBE8wTTBL
# oEmgR4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMv
# TWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEBBE4wTDBKBggr
# BgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNS
# b29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwDQYJKoZIhvcNAQEMBQADggIBAENf+N8/
# u+mUjDtc9btoA52RBc0XVDSBMQBMqxu56hXHBwuctUWs1XBqDDMIFCHu9c6Y/UF+
# TN8EIgjnujApKYmHP4f4EM3ARSmlzrpF5ozOJx0BA5FUv1jmpdf/2ZbqpvCxlxv/
# G1R4KjrSmmqPHzs6igw3b7RTbj7BxIS8fOIkwYWQhB2fLjlg+3HSrDGPFIhpIJWV
# amMIR7a72OGonjdf45rspwqIHuynZU4avy9ruB/Rhhbwm+fMb8BMecIaTmkohx/E
# ZZ5GNWcN6oTYW3G2BM3B3YznWkl9t4shP60fMue+2ksdHGWSE8EVTdSmGUdj0jrU
# c46lGVFJISF3/MxcxnlNeP1Khyr+ZzT4Ets/I7mufpaLnLalzMR2zIuhGOAWWswe
# sbjtFzkVUFgDR2SW903I0XKlbPEA6q8epHGJ9roxh85nsEKcBNUw4Scp68KCqSpF
# BaKiyV1skd+l8U50WNePMb9Bzz0OfASal8v5sQG+DW01kN+I+RKUIbM5I50wJjiH
# ymQFNDsbobFx9I95mCEEPU7fUZ3VT/HOUVbkmX7ltIC/eQAu5GO8fu+ceETMybvb
# oxUM4dYNC+PzooUxfmC0DuKRwB21bX9+acuIBkxIm4Ed3O19w1VLoA7UNOUuJ7z6
# NQ2W/+q7cnfOPl2QVL4qlgCblUT2vmQpllV3MIIHIDCCBQigAwIBAgITMwAAASJs
# BjOj0VK23QAAAAABIjANBgkqhkiG9w0BAQwFADBfMQswCQYDVQQGEwJVUzEeMBwG
# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTAwLgYDVQQDEydNaWNyb3NvZnQg
# V2luZG93cyBDb2RlIFNpZ25pbmcgUENBIDIwMjQwHhcNMjYwMzA1MTk1ODI0WhcN
# MjcwMzAzMTk1ODI0WjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
# bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0
# aW9uMR4wHAYDVQQDExVNaWNyb3NvZnQgQ29ycG9yYXRpb24wggIiMA0GCSqGSIb3
# DQEBAQUAA4ICDwAwggIKAoICAQCeFlu3IJtMm0DcCUF5EKHUKh/L06a1JyvxX2aV
# aapyABxwDINwxmSS0MR5ObqvX4TKhYX2Ic7+HNhNjxZg7UJUTMamRDcmnS3QHYOe
# oqsgveL1mGQsvBqWROEi2tBe8PrwJrYd4tefld81kaQ1cnbzuUuou3fuAHNudJnA
# CW5SqPmZHF565Ij7jwMeJPxU5JHsPAs/Y11aWPxI85kVEUecjfOMpIx5oTXnNi9U
# nw7BSv/SSrXfkyAyFyqu+PN9ymIWLmOAPaAnJ+QxGRZ9D7jJy4fZK0RxO1GlPTaj
# h9xgbz7SDSeC70z8Ro8mgO3ImrCDv4KdJztT5dnCieVXLMSxCqWikfKznmoCaAqG
# 5skdylL5CFi8TQVKASb2QR0MjS1fqX0FpOkgibu7+m2EPzjp36SkgZ1TXVfAO3j5
# BjRZT/VXaWS0Zk+eNn8/SQf8U/LRRpnuJXhkOWVBNIGq5ew6EsKIQm5Dter5NTSK
# J8gUlqiwDKZ1HuaTEWn1PmgN0YYF9av8fDTeVbEPQe04yv47o8lYpldFM0B9kWOc
# kIc0U+hXNC/+pnDVUh2fjN+JtMaLKTTOciXM2F0tt3CbdKO+cCmlCzSuhN9aeQ2m
# GEnQY3v3V3W15uaUpYELTYOTeTwDVkYJXCZK/zNRXxU38rQ+LwxLOeRVNvEYh2Js
# 0nuX0QIDAQABo4IBvjCCAbowDgYDVR0PAQH/BAQDAgeAMB8GA1UdJQQYMBYGCisG
# AQQBgjc9BgEGCCsGAQUFBwMDMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFJ8ytbdA
# tti7ifaKbKxtPwbvlJiSMFQGA1UdEQRNMEukSTBHMS0wKwYDVQQLEyRNaWNyb3Nv
# ZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxFjAUBgNVBAUTDTIzMDg2NSs1
# MDY5NjUwHwYDVR0jBBgwFoAUHoLfDteMs9cCNIMO2qutZbmvuOwwagYDVR0fBGMw
# YTBfoF2gW4ZZaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWlj
# cm9zb2Z0JTIwV2luZG93cyUyMENvZGUlMjBTaWduaW5nJTIwUENBJTIwMjAyNC5j
# cmwwdwYIKwYBBQUHAQEEazBpMGcGCCsGAQUFBzAChltodHRwOi8vd3d3Lm1pY3Jv
# c29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMFdpbmRvd3MlMjBDb2Rl
# JTIwU2lnbmluZyUyMFBDQSUyMDIwMjQuY3J0MA0GCSqGSIb3DQEBDAUAA4ICAQCY
# WFIyjTfk5OvOrxA8oAS2jbS6/P0DDLLiqZsyy6dY9vfid+P2uawuygeoVwkvGqMO
# 0UDWuupsy8VQ/5Fw+GXfx7n9AfvoVg30rHm883siWQ9/GaayCh219lbearlRziyq
# TZoz7ShvA23fRoKs3I9LlXWWOH1d5CeFtuyX0D4oRBU1pQS+ijDSv848ZiLwqjig
# Q7XBaYiPNVQI8xMkkVeIc6B575rVsxqLF5rQFMuXZhwU+BXEbVa4tmVAzY9geP3X
# dOP+L/OwWQV83Z6poT/RW6QMqkNpgf7Pc3oSGKGTpr32AwHIutwmWaEaj8asyDUj
# FABzJBG6AH8pugTf440r61uNlw6mDXppfOZVyuHuH93uNzaINvuW/Y/yEYSDdTvy
# 6Sn5GwWrHKNA23UR18Abu7B2uOeDhiTq69oePmKEAPjjHMTQBrZUX+VBwv+v7MJB
# r8A0s4zg/AY+A/LmN5veQpcAjTj9H+2mKEQobRTUHKBDW1T1fXYQb1JdWQXDK9In
# 6Lx8EaWOExYktAceGfzxC9NoCjxBUb8ba6QOQXNaqrzQlDzGwqxLsiClN+H6h58p
# BfFF2OoSaLlgpih0WRfp7sTGddsp6ajbAAX7VSI/W32o2G7KaDIc1jiok64BnBRo
# ewtKnNm3Ny0ulmJ6IgIZA5DOAxT9tPtEtNhwHmhshzGCGzkwghs1AgEBMHYwXzEL
# MAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEwMC4G
# A1UEAxMnTWljcm9zb2Z0IFdpbmRvd3MgQ29kZSBTaWduaW5nIFBDQSAyMDI0AhMz
# AAABImwGM6PRUrbdAAAAAAEiMA0GCWCGSAFlAwQCAQUAoIH6MBkGCSqGSIb3DQEJ
# AzEMBgorBgEEAYI3AgEEMC8GCSqGSIb3DQEJBDEiBCDPD4AexrlzLseR83SIjy8z
# HXGTOXWf9o/CRq+ElNbYAzBQBgorBgEEAYI3CgMcMUIMQDkzNjZBQTdGMURCQjE3
# QTE4MThDMTUyNzc1NDQ4QjFEOUFCQzhEMDBBNTFERTY1QjJDOTNCNDY3RTkyNEJE
# M0UwWgYKKwYBBAGCNwIBDDFMMEqgJIAiAE0AaQBjAHIAbwBzAG8AZgB0ACAAVwBp
# AG4AZABvAHcAc6EigCBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vd2luZG93czAN
# BgkqhkiG9w0BAQEFAASCAgBLPOojELOkqWaksCeew78ZNCxuqnusvaL1teO8lz8T
# wtFDhpLNLfYJWxLhAcxBZqR+yrQGtRj3CTS1gABhtGc/G5xkoJtGEuEmRchiN7q5
# qGS9nqD/DV6rO6aUtBuDupYBWYUyncTccHDWppQdlBDZFNpnbLe+TrdaymfXzGg4
# XdWjSDwZ8JYYssNn9KGvFdbXQZJG+q03hr5MBZwNejIPK1qVHUmi9Xdy396eEYFi
# RnXNlwEC+pCWiQPbkk8D0RRrfZHGYcl3G81UkWPe8zkS1rN4kl+D1pMzzClOzu1b
# Mrn9bQCUNWbI9+8WKJxvN2adiKQlByZmz7Si0hq/CFYHlqtBcy0F15GXCePsB8bJ
# 4G+NTY13cZVPTFYf99QCCRKpwB+/04ifAkynsJlMfJ//cg9zb9/QHVfTF3e3V+Zk
# HHXHf9D3/baWgbGtI7xqFgKVFGeUc5aaNS3YpLGxl+jHi2LnbiaF9imAdZK1WBM4
# bLJeAQN3syTrqiV5+KT0QFyYod7lUcCbl2X+q9UEAk3OcIg2MVqHqWrjmWpm1kyM
# 9DRwjmkuSxbMec1rMSYenCxKsALQDMH6r4fE19UgkF/+com2YXLS3RQOyrj7vZvu
# eJl71LHT+I8XvzXJbwb1IHR9vS/wDZeExGrt2drm+UvoIB0azwM9hXFhur5bUImQ
# eqGCF5cwgheTBgorBgEEAYI3AwMBMYIXgzCCF38GCSqGSIb3DQEHAqCCF3Awghds
# AgEDMQ8wDQYJYIZIAWUDBAIBBQAwggFSBgsqhkiG9w0BCRABBKCCAUEEggE9MIIB
# OQIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUABCAWNA7IrjkMXXS7U9Rj
# xaRXk7TW0KOobVCgx13qb5WEEQIGahdRP/k1GBMyMDI2MDYwNjA4MzU1NS44NDJa
# MASAAgH0oIHRpIHOMIHLMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
# bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0
# aW9uMSUwIwYDVQQLExxNaWNyb3NvZnQgQW1lcmljYSBPcGVyYXRpb25zMScwJQYD
# VQQLEx5uU2hpZWxkIFRTUyBFU046ODkwMC0wNUUwLUQ5NDcxJTAjBgNVBAMTHE1p
# Y3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2WgghHtMIIHIDCCBQigAwIBAgITMwAA
# AiJB0vaq/8i1/wABAAACIjANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJVUzET
# MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV
# TWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1T
# dGFtcCBQQ0EgMjAxMDAeFw0yNjAyMTkxOTM5NTZaFw0yNzA1MTcxOTM5NTZaMIHL
# MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk
# bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQLExxN
# aWNyb3NvZnQgQW1lcmljYSBPcGVyYXRpb25zMScwJQYDVQQLEx5uU2hpZWxkIFRT
# UyBFU046ODkwMC0wNUUwLUQ5NDcxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0
# YW1wIFNlcnZpY2UwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC1ueKJ
# ukIuUsAAJo/AY5DZRqH7bhgv7CWGNlEdbRGoITrdE6Wsn57NaNu1BTdjBbFcv7Rf
# ixte0x+HRvXSqsD+WeSX/6/y9wE0Mz+xRPTGIY20K7aQDa68OyzVyUeUCypyZC/g
# W/3ytO/ZOnU9H2ri77kJP8ABrqyy1UxX/OseEgvHsj8yikWT0ARtrjWbXMHFzSOo
# 5hQcfUmMXKqWWz6+N0+UynhGy1n+doW4WZgpH8Y5W7hpSokWj1M/Lu4wi3o6Dz9v
# VWukcgUFGjLAl4YZpOhah7HuiC/alXImMQf8C3A8q/6/1hFoeIZB4UGkywxB/OST
# OSsL6+39pDqzM7CgOpf4V799kN94yM9uXJI5T/SiA5MdIZIhEW0+bh85RqDh5YW3
# /oav54RPxw5OPlH64QV6KJkl0FIElMVoLNo8UWRQcMD179x7WASjC6LsaNZ7yK0q
# cESIsL1wiQmdfQBxcqrFCpIQfnmQFkOp9IyXUWqza8tmpz8E6aXg9b1eiAT3PVTg
# rOlPi/hYZCfPxX/6jGtyPjy1CiwOmJamohmSU//COAenfRT2G2HMRUpCX1zs+AmD
# mdQM1XRab4YSALLAlDzGCsgI77nnuJjoXAliJmv7NfrvWAcA5KqCUOWQ6kSPt5r2
# 8MfKXWJJpSXtFeS/MkDzJy/iJRVyHcFy/B+MtwIDAQABo4IBSTCCAUUwHQYDVR0O
# BBYEFFkHwGoDJ5ZbEEiu8KstiusqaozQMB8GA1UdIwQYMBaAFJ+nFV0AXmJdg/Tl
# 0mWnG1M1GelyMF8GA1UdHwRYMFYwVKBSoFCGTmh0dHA6Ly93d3cubWljcm9zb2Z0
# LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFRpbWUtU3RhbXAlMjBQQ0ElMjAy
# MDEwKDEpLmNybDBsBggrBgEFBQcBAQRgMF4wXAYIKwYBBQUHMAKGUGh0dHA6Ly93
# d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwVGltZS1T
# dGFtcCUyMFBDQSUyMDIwMTAoMSkuY3J0MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/
# BAwwCgYIKwYBBQUHAwgwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IC
# AQBiAM+nqrpwG29txSXv42o+CsTe2C4boaRfFju9JaWkLTHwq7pknNONL3n+UG3x
# /B083EKXiFYrAmul7BTHCGXU63/xRsZ2wj3ZmR0A4d9nf9saCJVm4juPVFBai/ok
# tOOYH2j+1+zM70woN5ongB/pvy7X8AfY6JB4XPvb80Qz7fY5eddbnwjzg1sZhUPF
# bbcweWeACINrzqFK62mMeXKmhtufMraoogJeJXfWY3x4/pbubgENT3+pXT65203C
# PF9kfdKE7GKAIRYy3xkBTDvFd8dufjOpCn38nK6qMlVtnBjDhWQG0PM3E/oxBs5U
# BrI6pBYkmIHtbjifDquHT+ThaVV7xHc6InoSc3aNzX49JHUgQmuvDdMjLkbYXeA0
# /1q5IxSg2U+ycZBOvAi3udZPKhA5VzODjf/ucu/vFtXrYcRkmGKN3jujaK3/yMZi
# 2Ju5NEL3ISWorwp7RjeZg+JMIK0fosuVj+YCm5r64LH/D9QJDAj+XfZaNeFdv90K
# 5A0QRRGP/poB9yTIVjEXj/uJzp8L4Dd44sAquqDOiHdkLgxfK8nPqpCSWPZ9G+RC
# Pm85o9cAfxENtrSuOwcpyKzxsRCYCL+PK4+98orit9EVJ/LLoCeG+jLlj0KaD4Qy
# 6sZe4rWMr1brQLosTBZNwFnXxNjInCWBd0i7is1yTS/4qTCCB3EwggVZoAMCAQIC
# EzMAAAAVxedrngKbSZkAAAAAABUwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYT
# AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD
# VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBS
# b290IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTIxMDkzMDE4MjIyNVoX
# DTMwMDkzMDE4MzIyNVowfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0
# b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
# dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwggIi
# MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDk4aZM57RyIQt5osvXJHm9DtWC
# 0/3unAcH0qlsTnXIyjVX9gF/bErg4r25PhdgM/9cT8dm95VTcVrifkpa/rg2Z4VG
# Iwy1jRPPdzLAEBjoYH1qUoNEt6aORmsHFPPFdvWGUNzBRMhxXFExN6AKOG6N7dcP
# 2CZTfDlhAnrEqv1yaa8dq6z2Nr41JmTamDu6GnszrYBbfowQHJ1S/rboYiXcag/P
# XfT+jlPP1uyFVk3v3byNpOORj7I5LFGc6XBpDco2LXCOMcg1KL3jtIckw+DJj361
# VI/c+gVVmG1oO5pGve2krnopN6zL64NF50ZuyjLVwIYwXE8s4mKyzbnijYjklqwB
# Sru+cakXW2dg3viSkR4dPf0gz3N9QZpGdc3EXzTdEonW/aUgfX782Z5F37ZyL9t9
# X4C626p+Nuw2TPYrbqgSUei/BQOj0XOmTTd0lBw0gg/wEPK3Rxjtp+iZfD9M269e
# wvPV2HM9Q07BMzlMjgK8QmguEOqEUUbi0b1qGFphAXPKZ6Je1yh2AuIzGHLXpyDw
# wvoSCtdjbwzJNmSLW6CmgyFdXzB0kZSU2LlQ+QuJYfM2BjUYhEfb3BvR/bLUHMVr
# 9lxSUV0S2yW6r1AFemzFER1y7435UsSFF5PAPBXbGjfHCBUYP3irRbb1Hode2o+e
# FnJpxq57t7c+auIurQIDAQABo4IB3TCCAdkwEgYJKwYBBAGCNxUBBAUCAwEAATAj
# BgkrBgEEAYI3FQIEFgQUKqdS/mTEmr6CkTxGNSnPEP8vBO4wHQYDVR0OBBYEFJ+n
# FV0AXmJdg/Tl0mWnG1M1GelyMFwGA1UdIARVMFMwUQYMKwYBBAGCN0yDfQEBMEEw
# PwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9j
# cy9SZXBvc2l0b3J5Lmh0bTATBgNVHSUEDDAKBggrBgEFBQcDCDAZBgkrBgEEAYI3
# FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAf
# BgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvXzpoYxDBWBgNVHR8ETzBNMEugSaBH
# hkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNS
# b29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUF
# BzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0Nl
# ckF1dF8yMDEwLTA2LTIzLmNydDANBgkqhkiG9w0BAQsFAAOCAgEAnVV9/Cqt4Swf
# ZwExJFvhnnJL/Klv6lwUtj5OR2R4sQaTlz0xM7U518JxNj/aZGx80HU5bbsPMeTC
# j/ts0aGUGCLu6WZnOlNN3Zi6th542DYunKmCVgADsAW+iehp4LoJ7nvfam++Kctu
# 2D9IdQHZGN5tggz1bSNU5HhTdSRXud2f8449xvNo32X2pFaq95W2KFUn0CS9QKC/
# GbYSEhFdPSfgQJY4rPf5KYnDvBewVIVCs/wMnosZiefwC2qBwoEZQhlSdYo2wh3D
# YXMuLGt7bj8sCXgU6ZGyqVvfSaN0DLzskYDSPeZKPmY7T7uG+jIa2Zb0j/aRAfbO
# xnT99kxybxCrdTDFNLB62FD+CljdQDzHVG2dY3RILLFORy3BFARxv2T5JL5zbcqO
# Cb2zAVdJVGTZc9d/HltEAY5aGZFrDZ+kKNxnGSgkujhLmm77IVRrakURR6nxt67I
# 6IleT53S0Ex2tVdUCbFpAUR+fKFhbHP+CrvsQWY9af3LwUFJfn6Tvsv4O+S3Fb+0
# zj6lMVGEvL8CwYKiexcdFYmNcP7ntdAoGokLjzbaukz5m/8K6TT4JDVnK+ANuOaM
# mdbhIurwJ0I9JZTmdHRbatGePu1+oDEzfbzL6Xu/OHBE0ZDxyKs6ijoIYn/ZcGNT
# TY3ugm2lBRDBcQZqELQdVTNYs6FwZvKhggNQMIICOAIBATCB+aGB0aSBzjCByzEL
# MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
# bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMcTWlj
# cm9zb2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UECxMeblNoaWVsZCBUU1Mg
# RVNOOjg5MDAtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFt
# cCBTZXJ2aWNloiMKAQEwBwYFKw4DAhoDFQC7ycXVZx3bsDpJkr7VucgpksozuKCB
# gzCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD
# VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAk
# BgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMA0GCSqGSIb3DQEB
# CwUAAgUA7c5UlDAiGA8yMDI2MDYwNjA4MTEwMFoYDzIwMjYwNjA3MDgxMTAwWjB3
# MD0GCisGAQQBhFkKBAExLzAtMAoCBQDtzlSUAgEAMAoCAQACAi/NAgH/MAcCAQAC
# AhNfMAoCBQDtz6YUAgEAMDYGCisGAQQBhFkKBAIxKDAmMAwGCisGAQQBhFkKAwKg
# CjAIAgEAAgMHoSChCjAIAgEAAgMBhqAwDQYJKoZIhvcNAQELBQADggEBAEj5jCiV
# F+IC1a01X/8Z55ZTsorCoLPeSGcO8MSDvCAZKGxEK9hJtsqOdRTMCRkYxuvvJFNP
# mZirRU3qflmlEsST6P8rwuHwgn08k6VqGsyr3jvGuwY1NwG7VqHrQiV0TA4uAVZk
# k0UhjA/u7QbkXUZr2zI6JrnhIzQe4MagmvF/S8ZY9Mm0ibtUIzLU+dxLJfD1psxe
# t5yK/UELor9nzASUp0z4fPZIaHily3iAobG2rLSPIGesD5G7Cs0FGhNjmAcGbMje
# CXolHT4IHV+BJE6F7JH3HutJgpG/DvlA9Kd5KkCa+tt+lKd7g5gk3Fy7bklDd8An
# vvJUmT/3D/hM16UxggQNMIIECQIBATCBkzB8MQswCQYDVQQGEwJVUzETMBEGA1UE
# CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z
# b2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQ
# Q0EgMjAxMAITMwAAAiJB0vaq/8i1/wABAAACIjANBglghkgBZQMEAgEFAKCCAUow
# GgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJBDEiBCAC+ZrQ
# hTqx/T71qeDHj5/7hiOOYJeZEy3waYQSt0BaDDCB+gYLKoZIhvcNAQkQAi8xgeow
# gecwgeQwgb0EIAVgXQEKBOfGgjNskmDOmbcEIOnHGNwA+QcRufDR5AkTMIGYMIGA
# pH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
# B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UE
# AxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAAIiQdL2qv/Itf8A
# AQAAAiIwIgQgU4bV4KYfHyxeIuJc1As8bNIl1EIp03u/x8PRJNeq9PYwDQYJKoZI
# hvcNAQELBQAEggIAdiShHpeFSFxQ8PDqVdcUG0bkKOrne5ZFqm53b3BTFmrkyAYa
# nuGfbG2E0ETx3biogbVnpCW5xgsetR0Egf1Vg+MSpn+yBxRXDlGujDQNzv1TZTyL
# 70LC6Z58YFZxSDDk3MYpr57CxVcwFa3RoCqBs0JtJ10bPx6+tZAFfL45gkxDiy5O
# FhYCBev6LD0yzJIMsH8KCN8JTcnJ+GAAJnp5MPGidwkpo2XEvrTxB7l67MR5rkxL
# pcu91sMtJViUVk+i8R1j3ghoQqnzgXMElIrMyX0MEH/LAqM0+4x/fVBqJtRPIQXG
# 4zfN8VlNeaC0EV6sdHl6qrJDh0pKDWtw5XnAc0b1ZZ6NrKY2QITrG9n8p6NkYquY
# CdED4SlGqdLNTCtf2+8sBJ80xfmxwzXF8m4L0T+Xqg2IjvZwl1g/Iv7caJ4m4fYw
# iQMCwgsbGgxsWJdeGSRtPmSMiK9X5y/oXOphxG2CWjKHZe5BCneoHNV112mZyrsI
# iYMg/hxEIBRkirBOmWps6cJdMnCTFkD1m11S1LFjMZ+GpCdfJoux89qkOlLMG4hl
# x/S6POO+iDkp9GufeUXz+jKyGX41X3izREDitFKBjzrH7I1h+mj1v9w7DKonlghl
# tTNOtPdtYVfXtCGo558rCxJw3qAXu70s1zTy91YVIJgrkI2WuU8XeIGQrbU=
# SIG # End signature block

Youez - 2016 - github.com/yon3zu
LinuXploit