[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$egInstallpath=Get-ChildItem Env:EGURKHA_INSTALL_DIR |Select Value
$egurkhaPath=$egInstallpath.Value.ToString()
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
$egEncryPath=$scriptPath+"\EGFileEncryption.psm1"
$egDatnKy=$scriptPath+"\GetDatnKeyFiles.psm1"
Import-Module $egEncryPath,$egDatnKy

clear

$InEvnType= @{}
$OutEvnType= @{}
$InEvnTypeCnt= @{}
$OutEvnTypeCnt= @{}
$InEvnSenSize= @{}
$OutEvnSenSize= @{}
$InSendEvnType= @{}
$OutSendEvnType= @{}
$InEvnSize= @{}
$OutEvnSize= @{}
$UniqSen= @{}
$UniqRec= @{}
$EvnType= New-Object System.Collections.ArrayList

$testargs=$args

$reportingname='EXO\'+$testargs[0]
$showUsrSpamMails=$testargs[1]
$userName=$testargs[2]
$startTime=$testargs[3]
$startTime=$startTime.Replace('_',' ')
try{
    $CultureDateTimeFormat = (Get-Culture).DateTimeFormat
    $DateFormat = $CultureDateTimeFormat.ShortDatePattern
    $TimeFormat = $CultureDateTimeFormat.LongTimePattern
    $DateTimeFormat = "$DateFormat $TimeFormat"

    $readfiles=Eg-ReadFile -ComntRptPath $reportingname -FileName "spam" -keyFileName "kspam" -EgPath $egurkhaPath
    $datafile=$readfiles[1] -replace (".csv",".dat") 
    $csvfile=Unprotect-File $datafile -Algorithm AES -KeyAsPlainText $readfiles[0]
    $spamdetail= import-csv $csvfile
    Remove-Item $csvfile
    Eg-DeleteFiles -FilePath $readfiles[2] -Pattern 'spam' -InputFile $readfiles[3]
    Eg-DeleteFiles -FilePath $readfiles[2] -Pattern 'kspam' -InputFile $readfiles[4]
    Write-Host 'ReadFile:'$readfiles[3]
    }
    catch [System.Management.Automation.RuntimeException] {
        Write-Error -Message "File not found. The $reportingname location does not contain spam files."
    }
    catch{
        $errmsg=$_.Exception.Message
        $errstack=$_.Exception.StackTrace
        Write-Error -Message $errmsg
    }


    $spamdetail=  $spamdetail  | Sort-Object {[DateTime]::ParseExact($_.'Date',$DateTimeFormat,[System.Globalization.DateTimeFormatInfo]::InvariantInfo,[System.Globalization.DateTimeStyles]::None)}  -Descending
	$LastDateSpam=$spamdetail|select -Property Date -First 1    
	$TotInboundSize=0
	$TotOutboundSize=0
	$reg="^\d*/\d*/[2-9]\d\d\d \d*:\d*:\d*$"

if($spamdetail -ne $null){
	foreach($spamdata in $spamdetail){
            $entryflg=$false
            if($startTime -ne $null -and $startTime -ne ''){
               $spamDate = [DateTime]::ParseExact($spamdata.Date,$DateTimeFormat,[System.Globalization.DateTimeFormatInfo]::InvariantInfo,[System.Globalization.DateTimeStyles]::None)
               $prevTime = [DateTime]::ParseExact($startTime,$DateTimeFormat,[System.Globalization.DateTimeFormatInfo]::InvariantInfo,[System.Globalization.DateTimeStyles]::None)
                if($spamDate -gt $prevTime){
                    $entryflg=$true
                }
            }
            else{
                $entryflg=$true
            }
            if($entryflg){
            
            if(!$showUsrSpamMails)
            {
                if( ($spamdata.SenderAddress).toString().toLower().trim() -eq $userName.toString().toLower().trim() -or ($spamdata.RecipientAddress).toString().toLower().trim() -eq $userName.toString().toLower().trim() )
                {
                    continue;
                }
            }  
			$TotMsgSizemb=[math]::round($spamdata.MessageSize /1mb, 4)
            $TotMsgSizegb=[math]::round($spamdata.MessageSize /1gb, 4)
			if(-not $EvnType.Contains($spamdata.EventType)){
			$EvnType.Add($spamdata.EventType)
		    }
            $totMsgSizeky=$spamdata.EventType+'~'+$spamdata.SenderAddress+'~!~'+$spamdata.RecipientAddress
            $EvnTypeky=$spamdata.SenderAddress+'~!~'+$spamdata.RecipientAddress
		    if($spamdata.Direction -eq 'Inbound'){       
			    if($InEvnType.Contains($spamdata.EventType)){
                     $InEvnTypeCnt[$spamdata.EventType]+=1
                     $tmposht=$InEvnType[$spamdata.EventType]
			            if($tmposht.Contains($EvnTypeky)){
                            $tmposht[$EvnTypeky]+=$TotMsgSizemb
                        }
                        else{
                            $tmposht.Add($EvnTypeky,$TotMsgSizemb)
                        }
                }
                else{
                     $InEvnTypeCnt.Add($spamdata.EventType,1)   
                     $InSendEvnType.Add($EvnTypeky,1)       
			         $InEvnType.Add($spamdata.EventType,$InSendEvnType)
			    }
			    if($InEvnSize.Contains($spamdata.EventType)){
				    $InEvnSize[$spamdata.EventType]+=$TotMsgSizegb 
			    }else{
			        $InEvnSize.Add($spamdata.EventType,$TotMsgSizegb)
			    }
			    if($InEvnSenSize.Contains($totMsgSizeky)){
				    $InEvnSenSize[$totMsgSizeky]+=1 
			    }else{
			        $InEvnSenSize.Add($totMsgSizeky,1)
			    }
		    }
            else{
			    if($OutEvnType.Contains($spamdata.EventType)){
                        $OutEvnTypeCnt[$spamdata.EventType]+=1
                     $tmposht=$OutEvnType[$spamdata.EventType]
			            if($tmposht.Contains($EvnTypeky)){
                            $tmposht[$EvnTypeky]+=$TotMsgSizemb
                        }
                        else{
                            $tmposht.Add($EvnTypeky,$TotMsgSizemb)
                        }
                }
                else{
                     $OutEvnTypeCnt.Add($spamdata.EventType,1)
                     $OutSendEvnType.Add($EvnTypeky,1)       
			         $OutEvnType.Add($spamdata.EventType,$OutSendEvnType)
			    }

			    if($OutEvnSize.Contains($spamdata.EventType)){
				    $OutEvnSize[$spamdata.EventType]+=$TotMsgSizegb
			    }else{
				    $OutEvnSize.Add($spamdata.EventType,$TotMsgSizegb)
			    }
                if($OutEvnSenSize.Contains($totMsgSizeky)){
				    $OutEvnSenSize[$totMsgSizeky]+=1
			    }else{
				    $OutEvnSenSize.Add($totMsgSizeky,1)
			    }
		    }
		if($UniqSen.Contains($spamdata.EventType)){
			$tmpSenAdd=$UniqSen[$spamdata.EventType]
			$tmpRecAdd=$UniqRec[$spamdata.EventType]
			if($tmpSenAdd.Contains($spamdata.SenderAddress)){
				$tmpSenAdd[$spamdata.SenderAddress]+=1
			}else{
				$tmpSenAdd.Add($spamdata.SenderAddress,1)
			}
			if($tmpRecAdd.Contains($spamdata.RecipientAddress)){
				$tmpRecAdd[$spamdata.RecipientAddress]+=1
			}else{
				$tmpRecAdd.Add($spamdata.RecipientAddress,1)
			}
		    }
		    else{
			$SndAdd= @{}
			$RecAdd= @{}
			$SndAdd.Add($spamdata.SenderAddress,1)
			$RecAdd.Add($spamdata.RecipientAddress,1)
			$UniqSen.Add($spamdata.EventType,$SndAdd)
			$UniqRec.Add($spamdata.EventType,$RecAdd)
		    }
	    }
	    }

	    clear     
  
foreach($Evntkeys in $EvnType){	
    $inEvntcnt=0
    $outEvntcnt=0
    $inEvntsz=0
    $outEvntsz=0
    $evntlist=$InEvnType[$Evntkeys]
    $Outevntlist=$OutEvnType[$Evntkeys]
    $uniQSendrs=$UniqSen[$Evntkeys]
    $uniQRecrs=$UniqRec[$Evntkeys]
    #  $evntlist.keys | sort { $evntlist.$_ } -des | foreach {  Write-host $_ '~' $evntlist.$_ '~' $InEvnSize[$Evntkeys+'~'+$_].tostring("#.##") } | Select-Object -First 20
    if($evntlist -ne $null){
        $in =$evntlist.keys | sort { $evntlist.$_ } -des | Select-Object -First 10
        foreach($inky in $in) {
            Write-host '# DDSpam In' $Evntkeys '!' $inky  '~!~' $evntlist[$inky].tostring("#.##").replace(',','.')     '~!~' $InEvnSenSize[$Evntkeys+'~'+$inky] 
        }
        $inEvntcnt=$InEvnTypeCnt[$Evntkeys]
        $inEvntsz=$InEvnSize[$Evntkeys].tostring("#.##").replace(',','.')
    }
                
    if($Outevntlist -ne $null){            
        $out =$Outevntlist.keys | sort { $Outevntlist.$_ } -des | Select-Object -First 10
        foreach($outky in $out) {
            Write-host '# DDSpam Out'$Evntkeys '!' $outky '~!~' $outevntlist[$outky].tostring("#.##").replace(',','.') '~!~' $OutEvnSenSize[$Evntkeys+'~'+$outky]
        }
        $outEvntcnt=$OutEvnTypeCnt[$Evntkeys]
        $outEvntsz=$OutEvnSize[$Evntkeys].tostring("#.##").replace(',','.')
    }
    if($uniQSendrs -ne $null){            
        $snds =$uniQSendrs.keys | sort { $uniQSendrs.$_ } -des | Select-Object -First 10
        foreach($sndsky in $snds) {
            Write-host '# DDUniqueSenders'$Evntkeys '!' $sndsky '~!~' $uniQSendrs[$sndsky]
        }
        $outEvntcnt=$OutEvnTypeCnt[$Evntkeys]
        $outEvntsz=$OutEvnSize[$Evntkeys].tostring("#.##").replace(',','.')
    } 
    if($uniQRecrs -ne $null){            
        $recrs =$uniQRecrs.keys | sort { $uniQRecrs.$_ } -des | Select-Object -First 10
        foreach($recrsky in $recrs) {
            Write-host '# DDUniqueRecievers'$Evntkeys '!' $recrsky '~!~' $uniQRecrs[$recrsky]
        }
        $outEvntcnt=$OutEvnTypeCnt[$Evntkeys]
        $outEvntsz=$OutEvnSize[$Evntkeys].tostring("#.##").replace(',','.')
    } 
    Write-Host '#Measure' $Evntkeys '~' $inEvntcnt '~' $outEvntcnt '~' $inEvntsz '~' $outEvntsz '~' $UniqSen[$Evntkeys].Count'~'$UniqRec[$Evntkeys].Count
}
 Write-Host 'LastDate:'$LastDateSpam.Date.Replace(' ','_')
 Write-Host 'ReadFile:'$readfiles[3]
}
   

# SIG # Begin signature block
# MIIcdAYJKoZIhvcNAQcCoIIcZTCCHGECAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUQcZPJEfdcmyzFF9im49hcISz
# MuaggherMIIFMDCCBBigAwIBAgIQBAkYG1/Vu2Z1U0O1b5VQCDANBgkqhkiG9w0B
# AQsFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYD
# VQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVk
# IElEIFJvb3QgQ0EwHhcNMTMxMDIyMTIwMDAwWhcNMjgxMDIyMTIwMDAwWjByMQsw
# CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu
# ZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQgSUQg
# Q29kZSBTaWduaW5nIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
# +NOzHH8OEa9ndwfTCzFJGc/Q+0WZsTrbRPV/5aid2zLXcep2nQUut4/6kkPApfmJ
# 1DcZ17aq8JyGpdglrA55KDp+6dFn08b7KSfH03sjlOSRI5aQd4L5oYQjZhJUM1B0
# sSgmuyRpwsJS8hRniolF1C2ho+mILCCVrhxKhwjfDPXiTWAYvqrEsq5wMWYzcT6s
# cKKrzn/pfMuSoeU7MRzP6vIK5Fe7SrXpdOYr/mzLfnQ5Ng2Q7+S1TqSp6moKq4Tz
# rGdOtcT3jNEgJSPrCGQ+UpbB8g8S9MWOD8Gi6CxR93O8vYWxYoNzQYIH5DiLanMg
# 0A9kczyen6Yzqf0Z3yWT0QIDAQABo4IBzTCCAckwEgYDVR0TAQH/BAgwBgEB/wIB
# ADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUHAwMweQYIKwYBBQUH
# AQEEbTBrMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQwYI
# KwYBBQUHMAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFz
# c3VyZWRJRFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgwOqA4oDaGNGh0dHA6Ly9jcmw0
# LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwOqA4oDaG
# NGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RD
# QS5jcmwwTwYDVR0gBEgwRjA4BgpghkgBhv1sAAIEMCowKAYIKwYBBQUHAgEWHGh0
# dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCgYIYIZIAYb9bAMwHQYDVR0OBBYE
# FFrEuXsqCqOl6nEDwGD5LfZldQ5YMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6en
# IZ3zbcgPMA0GCSqGSIb3DQEBCwUAA4IBAQA+7A1aJLPzItEVyCx8JSl2qB1dHC06
# GsTvMGHXfgtg/cM9D8Svi/3vKt8gVTew4fbRknUPUbRupY5a4l4kgU4QpO4/cY5j
# DhNLrddfRHnzNhQGivecRk5c/5CxGwcOkRX7uq+1UcKNJK4kxscnKqEpKBo6cSgC
# PC6Ro8AlEeKcFEehemhor5unXCBc2XGxDI+7qPjFEmifz0DLQESlE/DmZAwlCEIy
# sjaKJAL+L3J+HNdJRZboWR3p+nRka7LrZkPas7CM1ekN3fYBIM6ZMWM9CBoYs4Gb
# T8aTEAb8B4H6i9r5gkn3Ym6hU/oSlBiFLpKR6mhsRDKyZqHnGKSaZFHvMIIFNDCC
# BBygAwIBAgIQAuEYSxAWnqD3sU8D3BMzUjANBgkqhkiG9w0BAQsFADByMQswCQYD
# VQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGln
# aWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQgSUQgQ29k
# ZSBTaWduaW5nIENBMB4XDTE4MDcxMDAwMDAwMFoXDTIxMDkxNTEyMDAwMFowcTEL
# MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxDzANBgNVBAcTBklzZWxp
# bjEdMBsGA1UEChMUZUcgSW5ub3ZhdGlvbnMsIEluYy4xHTAbBgNVBAMTFGVHIElu
# bm92YXRpb25zLCBJbmMuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
# oNt7XWB1y9xwtvCGO/XipXallOkZ3ScdXunWCONnBzryRdCj7C/WX9s1CU8KkjRP
# FjWW+BOXvvC4ZUqw0Ad2uJAXyBY2/lV9eaoTRFB6Kb2/tJzG3je7Vcu8MxGJlwzP
# QQrr6icEJeqAPFE7vmzThVbd9H1n5Zdmwx20WCFe2V9qyVYHt7/6GS7WB2CwwjT6
# iVmiKP8HZXgr3tHZeAEb7tdQqd5//9e+8Mp8anb8ZdNgC9PQjBmbrQ/wH3kV65gK
# L+5kbgRvIfsmYxXiU1IFkq4rSQ+tfsDtYqBhGfovef9Gt8ZTjx7S4fortxwR7tlz
# i+wLO5m8I9sm4I2ouyIOQQIDAQABo4IBxTCCAcEwHwYDVR0jBBgwFoAUWsS5eyoK
# o6XqcQPAYPkt9mV1DlgwHQYDVR0OBBYEFD3yRqdsw6UIddfMPwhUMv2AaGRAMA4G
# A1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzB3BgNVHR8EcDBuMDWg
# M6Axhi9odHRwOi8vY3JsMy5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcx
# LmNybDA1oDOgMYYvaHR0cDovL2NybDQuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJl
# ZC1jcy1nMS5jcmwwTAYDVR0gBEUwQzA3BglghkgBhv1sAwEwKjAoBggrBgEFBQcC
# ARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAIBgZngQwBBAEwgYQGCCsG
# AQUFBwEBBHgwdjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29t
# ME4GCCsGAQUFBzAChkJodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNl
# cnRTSEEyQXNzdXJlZElEQ29kZVNpZ25pbmdDQS5jcnQwDAYDVR0TAQH/BAIwADAN
# BgkqhkiG9w0BAQsFAAOCAQEAP1QnJ6TEczaeGxVokMinsKam1mJB+zDk4B9rfm31
# iaZe9OeNvR/UJAs+5b0gKBZF9NmTVdayAYV74vZU5IElRo59q6hbg/20Wu87UyoE
# Yjwrv2DxHgl3z80piuLllmoe79vEu/bYvreBamzZmHlyxRP0us2KRfEsLBH23y1o
# zBATLc3yBu+mCfDg9E1RfhpKyD1iMHkbC90To6bpOlP9Pd6R4WEAFROILgm2bofQ
# ZhN4UNKbJ1uLCvV2NiUbU7+YSC3NP9SdphaDBiOnUWiK8MjTIPZbhh3QjI5f342q
# cUiR4LGx/Z/6pq4w6YHWd8c1czexD7xVCom7ZafCOKFWyzCCBmowggVSoAMCAQIC
# EAMBmgI6/1ixa9bV6uYX8GYwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCVVMx
# FTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNv
# bTEhMB8GA1UEAxMYRGlnaUNlcnQgQXNzdXJlZCBJRCBDQS0xMB4XDTE0MTAyMjAw
# MDAwMFoXDTI0MTAyMjAwMDAwMFowRzELMAkGA1UEBhMCVVMxETAPBgNVBAoTCERp
# Z2lDZXJ0MSUwIwYDVQQDExxEaWdpQ2VydCBUaW1lc3RhbXAgUmVzcG9uZGVyMIIB
# IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo2Rd/Hyz4II14OD2xirmSXU7
# zG7gU6mfH2RZ5nxrf2uMnVX4kuOe1VpjWwJJUNmDzm9m7t3LhelfpfnUh3SIRDsZ
# yeX1kZ/GFDmsJOqoSyyRicxeKPRktlC39RKzc5YKZ6O+YZ+u8/0SeHUOplsU/UUj
# joZEVX0YhgWMVYd5SEb3yg6Np95OX+Koti1ZAmGIYXIYaLm4fO7m5zQvMXeBMB+7
# NgGN7yfj95rwTDFkjePr+hmHqH7P7IwMNlt6wXq4eMfJBi5GEMiN6ARg27xzdPpO
# 2P6qQPGyznBGg+naQKFZOtkVCVeZVjCT88lhzNAIzGvsYkKRrALA76TwiRGPdwID
# AQABo4IDNTCCAzEwDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwFgYDVR0l
# AQH/BAwwCgYIKwYBBQUHAwgwggG/BgNVHSAEggG2MIIBsjCCAaEGCWCGSAGG/WwH
# ATCCAZIwKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMw
# ggFkBggrBgEFBQcCAjCCAVYeggFSAEEAbgB5ACAAdQBzAGUAIABvAGYAIAB0AGgA
# aQBzACAAQwBlAHIAdABpAGYAaQBjAGEAdABlACAAYwBvAG4AcwB0AGkAdAB1AHQA
# ZQBzACAAYQBjAGMAZQBwAHQAYQBuAGMAZQAgAG8AZgAgAHQAaABlACAARABpAGcA
# aQBDAGUAcgB0ACAAQwBQAC8AQwBQAFMAIABhAG4AZAAgAHQAaABlACAAUgBlAGwA
# eQBpAG4AZwAgAFAAYQByAHQAeQAgAEEAZwByAGUAZQBtAGUAbgB0ACAAdwBoAGkA
# YwBoACAAbABpAG0AaQB0ACAAbABpAGEAYgBpAGwAaQB0AHkAIABhAG4AZAAgAGEA
# cgBlACAAaQBuAGMAbwByAHAAbwByAGEAdABlAGQAIABoAGUAcgBlAGkAbgAgAGIA
# eQAgAHIAZQBmAGUAcgBlAG4AYwBlAC4wCwYJYIZIAYb9bAMVMB8GA1UdIwQYMBaA
# FBUAEisTmLKZB+0e36K+Vw0rZwLNMB0GA1UdDgQWBBRhWk0ktkkynUoqeRqDS/Qe
# icHKfTB9BgNVHR8EdjB0MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
# RGlnaUNlcnRBc3N1cmVkSURDQS0xLmNybDA4oDagNIYyaHR0cDovL2NybDQuZGln
# aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcmwwdwYIKwYBBQUHAQEE
# azBpMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQQYIKwYB
# BQUHMAKGNWh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3Vy
# ZWRJRENBLTEuY3J0MA0GCSqGSIb3DQEBBQUAA4IBAQCdJX4bM02yJoFcm4bOIyAP
# gIfliP//sdRqLDHtOhcZcRfNqRu8WhY5AJ3jbITkWkD73gYBjDf6m7GdJH7+IKRX
# rVu3mrBgJuppVyFdNC8fcbCDlBkFazWQEKB7l8f2P+fiEUGmvWLZ8Cc9OB0obzpS
# CfDscGLTYkuw4HOmksDTjjHYL+NtFxMG7uQDthSr849Dp3GdId0UyhVdkkHa+Q+B
# 0Zl0DSbEDn8btfWg8cZ3BigV6diT5VUW8LsKqxzbXEgnZsijiwoc5ZXarsQuWaBh
# 3drzbaJh6YoLbewSGL33VVRAA5Ira8JRwgpIr7DUbuD0FAo6G+OPPcqvao173NhE
# MIIGzTCCBbWgAwIBAgIQBv35A5YDreoACus/J7u6GzANBgkqhkiG9w0BAQUFADBl
# MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
# d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
# b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMjExMTEwMDAwMDAwWjBiMQswCQYDVQQG
# EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
# cnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBBc3N1cmVkIElEIENBLTEwggEiMA0G
# CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDogi2Z+crCQpWlgHNAcNKeVlRcqcTS
# QQaPyTP8TUWRXIGf7Syc+BZZ3561JBXCmLm0d0ncicQK2q/LXmvtrbBxMevPOkAM
# Rk2T7It6NggDqww0/hhJgv7HxzFIgHweog+SDlDJxofrNj/YMMP/pvf7os1vcyP+
# rFYFkPAyIRaJxnCI+QWXfaPHQ90C6Ds97bFBo+0/vtuVSMTuHrPyvAwrmdDGXRJC
# geGDboJzPyZLFJCuWWYKxI2+0s4Grq2Eb0iEm09AufFM8q+Y+/bOQF1c9qjxL6/s
# iSLyaxhlscFzrdfx2M8eCnRcQrhofrfVdwonVnwPYqQ/MhRglf0HBKIJAgMBAAGj
# ggN6MIIDdjAOBgNVHQ8BAf8EBAMCAYYwOwYDVR0lBDQwMgYIKwYBBQUHAwEGCCsG
# AQUFBwMCBggrBgEFBQcDAwYIKwYBBQUHAwQGCCsGAQUFBwMIMIIB0gYDVR0gBIIB
# yTCCAcUwggG0BgpghkgBhv1sAAEEMIIBpDA6BggrBgEFBQcCARYuaHR0cDovL3d3
# dy5kaWdpY2VydC5jb20vc3NsLWNwcy1yZXBvc2l0b3J5Lmh0bTCCAWQGCCsGAQUF
# BwICMIIBVh6CAVIAQQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUA
# cgB0AGkAZgBpAGMAYQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMA
# YwBlAHAAdABhAG4AYwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQA
# IABDAFAALwBDAFAAUwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAA
# UABhAHIAdAB5ACAAQQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkA
# bQBpAHQAIABsAGkAYQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4A
# YwBvAHIAcABvAHIAYQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYA
# ZQByAGUAbgBjAGUALjALBglghkgBhv1sAxUwEgYDVR0TAQH/BAgwBgEB/wIBADB5
# BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0
# LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0Rp
# Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHoweDA6oDigNoY0aHR0
# cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNy
# bDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
# ZElEUm9vdENBLmNybDAdBgNVHQ4EFgQUFQASKxOYspkH7R7for5XDStnAs0wHwYD
# VR0jBBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQEFBQADggEB
# AEZQPsm3KCSnOB22WymvUs9S6TFHq1Zce9UNC0Gz7+x1H3Q48rJcYaKclcNQ5IK5
# I9G6OoZyrTh4rHVdFxc0ckeFlFbR67s2hHfMJKXzBBlVqefj56tizfuLLZDCwNK1
# lL1eT7EF0g49GqkUW6aGMWKoqDPkmzmnxPXOHXh2lCVz5Cqrz5x2S+1fwksW5Etw
# TACJHvzFebxMElf+X+EevAJdqP77BzhPDcZdkbkPZ0XN1oPt55INjbFpjE/7WeAj
# D9KqrgB87pxCDs+R1ye3Fu4Pw718CqDuLAhVhSK46xgaTfwqIa1JMYNHlXdx3LEb
# S0scEJx3FMGdTy9alQgpECYxggQzMIIELwIBATCBhjByMQswCQYDVQQGEwJVUzEV
# MBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29t
# MTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQgSUQgQ29kZSBTaWduaW5n
# IENBAhAC4RhLEBaeoPexTwPcEzNSMAkGBSsOAwIaBQCgcDAQBgorBgEEAYI3AgEM
# MQIwADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4w
# DAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQU1+ID5PCGw/RGklngP3BHl4Ru
# xKswDQYJKoZIhvcNAQEBBQAEggEAbTLDLbeD+s4bVeCiJVyn1ywYmmDW37zZi99Z
# eBvFs5/ofQn4hqDtLw/sw8xVIHHkGNvVY0+Bvmpvw/Fio62UtCWUX8aBPxaJGdsx
# 60TsDL4Y1uCBG2OX9WUsMqR3xDNYAxqRpy4plshgtmNdQ+I1IRVd/6I02XqSMC9+
# KlXHfe7G5cS4hsE5c8Bzu8IZbXivDR9ZCYerYW44yR7FEQLIBhwPnh9R04cAhar9
# Y7VggJGUtvoVWwBH8jo3W+qptI7JAXDC9mS9dcLYBNliez68u9zmrplLT5bt2bi8
# +9HnSjSIEvcArniIIQeKO6wYi4Ri58G1GT1kqZBojFwplftDUqGCAg8wggILBgkq
# hkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxE
# aWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMT
# GERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJBgUr
# DgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUx
# DxcNMjAwNzIzMDIwNDAwWjAjBgkqhkiG9w0BCQQxFgQUgIZz0k7Yww5MVpHi0Sb8
# mb6jC+kwDQYJKoZIhvcNAQEBBQAEggEAO8UkIV9B+Q3jghRTN3pgf7zurbhltQHR
# c+5u8fG5Fm/zoBs8v6E+x+w4IU0/Xgc1x87/NXoj3RuWUBbevOqH8nkVLjSlcoTk
# jXP0Ww1zv4awR/ykzeCTpvxDpFONregOWNwbauTMW+A3g0YYZAGEGzihvfGSqJ2Y
# ya+UBPdqLzzaZq+U79/9gvmvrDX92VdAdZ9fvcs2LLZwJzwUtJbN89qziElkY/qG
# xVYXp1e09Br8N3uG52egigx2kudH/xQN/4pjcNaMMmzmg5IO957GJf+Awru0pD+p
# ebtPeFq4lqwKDzYhX4BTTYOqleiu7O9Z2Lk70yIK5jziTjglR7cxOw==
# SIG # End signature block
