Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
# ReadLogs
# Collect data from script output and add to Database
$idf_share = '\\hnas.engr.uconn.edu\EngrGroup\idf-data\Scanned'
$workingDir = 'S:\Scripts\IdFinder'
# Import Utility Functions
. "$workingDir\Utilities\DbUtilities.ps1"
. "$workingDir\Utilities\Utilities.ps1" # !!! Needs digital signature
# Read Log_Files (Log_Psts) and insert into database
# Computer: varchar(100)
# FileName: varchar(Max)
# Found: bit
# Copied: bit
# Length: bigint
function Read-Log($computer, $logFileName) {
# initially ensure that verbose is always set
$VerbosePreference = 'Continue'
Write-Verbose -Message ""
Write-Verbose -Message ("-" * 50)
Write-Verbose -Message "Reading $logFileName from $computer"
$logFile = "$idf_share\$computer\$logFileName"
# Ensure log exists
if (-not (Test-Path $logFile)) {
throw "File not found: $logFile"
exit
}
Write-Verbose -Message "Found: $logFile"
# Open database connection
try {
SoEOpen
} catch {
throw "Cannot open DB connection"
exit
}
Write-Verbose -Message "DB connection open"
$logs = Import-Csv $logFile
Write-Verbose "Read $($logs.Count) records"
$qryTable = 'COMP_IDF_FileCopies'
$qryPrefix = "insert into $qryTable (Computer, [FileName], [Length], Found, Copied) values "
$values = @()
Write-Verbose "Updating $qryTable"
foreach ($log in $logs) {
### bug in CopyIdFiles, losing file length
if ($log.Found -eq '') { $log.Found = 0 }
if ($log.Length -eq '') { $log.Length = 0 }
if ($log.Copied -eq '') { $log.Copied = 0 }
$values += "(" +
"'" + ($log.Computer | Quote-Sql) + "', " +
"'" + ($log.FileName | Quote-Sql) + "', " +
$log.Found + ", " +
$log.Copied + ", " +
$log.Length +
")"
if ($values.Count -eq 100) {
$qry = $qryPrefix + ($values -join ", ")
SoEUpdate $qry
$values = @()
}
}
if ($values.Count -gt 0) {
$qry = $qryPrefix + ($values -join ", ")
SoEUpdate $qry
}
Write-Verbose -Message "All records updated"
SoEClose
}
function Read-Logs ($computers, $logFileName) {
$VerbosePreference = 'Continue'
Write-Verbose -Message "Reading $logFileName from $($computers.Count) computers "
foreach ($computer in $computers) {
Read-Log $computer $logFileName
}
}
# Find files: Log_Files.csv
# Read logs into database: COMP_IDF_FilesCopied
# Move data into the ToBeCopied directory
function Read-AvailableLogs () {
$VerbosePreference = 'Continue'
$copyPath = '\\hnas.engr.uconn.edu\EngrGroup\idf-data\ToBeCopied'
$computers = Get-ChildItem $idf_share | select -ExpandProperty Name
$logFileName = 'Log_Files.csv'
foreach ($computer in $computers) {
$logPath = "$idf_share\$computer\$logFileName"
if (Test-Path $logPath) {
Write-Verbose -Message ("{0,-20} Yes" -f $computer)
Read-Log $computer $logFileName
Move-Item $idf_share\$computer -Destination $copyPath
} else {
Write-Verbose -Message ("{0,-20} No" -f $computer)
}
}
}
# SIG # Begin signature block
# MIIaswYJKoZIhvcNAQcCoIIapDCCGqACAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUXxImiaRrIKTjVgVxaL5sQhBg
# ZYKgghWhMIIElDCCA3ygAwIBAgIRAJ/qyBGw8WJHpfwg2AUjrOYwDQYJKoZIhvcN
# AQEFBQAwgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2Fs
# dCBMYWtlIENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8G
# A1UECxMYaHR0cDovL3d3dy51c2VydHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNF
# UkZpcnN0LU9iamVjdDAeFw0xNTA1MDUwMDAwMDBaFw0xNTEyMzEyMzU5NTlaMH4x
# CzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNV
# BAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSQwIgYDVQQD
# ExtDT01PRE8gVGltZSBTdGFtcGluZyBTaWduZXIwggEiMA0GCSqGSIb3DQEBAQUA
# A4IBDwAwggEKAoIBAQC8NaA2cCKBEcOyg7nTKMY2zSVrqXuyHPabUZzvNfTtCI5e
# OAj4dzwKQuDzcNyj18r1TAvP/yKcCn5o1gmiKoR7pp20qcEz4u8fF0jKOs1G5sWq
# d73jd5r6R1NAKFlDk/GkgervgLVPpwjOum68ynYMl2RZhiS7PYKQqFWxktOgpwWs
# n1MlCBBHmc2Y3mjltFB4o68BzFlDWOR2bn6sx+KeH0+wRy3IDKNJJ4B1jLsGkWUP
# kJv0utGByFxq7BTpJQm/Ixb0lUZAQCG7g5b9hh96yA0QjqL4GQdYf5+9NwJg8qTp
# nUQ/MAXkp3CZUZroF/FVyrJhiWVGp2ryWEZ+qqAHAgMBAAGjgfQwgfEwHwYDVR0j
# BBgwFoAU2u1kdBScFDyr3ZmpvVsoTYs8ydgwHQYDVR0OBBYEFC4tsApEStOHwAIH
# zpd9UGIg/Q+DMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB
# /wQMMAoGCCsGAQUFBwMIMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9jcmwudXNl
# cnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU9iamVjdC5jcmwwNQYIKwYBBQUHAQEE
# KTAnMCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqG
# SIb3DQEBBQUAA4IBAQANu61gERu18A3M5kg6ej4OM9wcuerWIP6jTdDMdk7oGNh5
# 39NPmkJkI4opcoo6bGamPDoXqHBFZcZzw9DOiVT7rGkPWLAZy4affrl+61GSv5vd
# 69Fl8CV7iHzevaXItRRRvMCBMIqFOHvmef5nVZOH/k/ojQ7t83KStcKJgG3RWeMd
# DeqxOO4DnQAZpashm3nDzMI+aH69yU1pTbRkUfuyKHTiU4nOnfqt4tvOq3t+BkR0
# /QqjybenMM1J0pJk8SKmuChFdHnpp847M/mDUJR9aMAdScdgeHo8ZCbVvvoKbeQe
# 4QlTj6nFI6zHnWFCIfAsFnFJOxCvLG8a5jHxFP1sMIIFdzCCBF+gAwIBAgIQE+oo
# cFv07O0MNmMJgGFDNjANBgkqhkiG9w0BAQwFADBvMQswCQYDVQQGEwJTRTEUMBIG
# A1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRU
# UCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4X
# DTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowgYgxCzAJBgNVBAYTAlVTMRMw
# EQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UE
# ChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNB
# IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
# MIICCgKCAgEAgBJlFzYOw9sIs9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p
# 7PbPwdzx07HWezcoEStH2jnGvDoZtF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i
# 6HTJGLSR1GJk23+jBvGIGGqQIjy8/hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+
# fmyc/xadGL1RjjWmp2bIcmfbIWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9
# tyy29lTdyOcSOk2uTIq3XJq0tyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND
# 8zLDU+/bqv50TmnHa4xgk97Exwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt
# 925H+nND5X4OpWaxKXwyhGNVicQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/Y
# gIoJk2KOtWbPJYjNhLixP6Q5D9kCnusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPt
# W//e5XOsIzstAL81VXQJSdhJWBp/kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ
# 51eHnlAfV1SoPv10Yy+xUGUJ5lhCLkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV
# 4clXhB4PY9bpYrrWX1Uu6lzGKAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaOB
# 9DCB8TAfBgNVHSMEGDAWgBStvZh6NLQm9/rEJlTvA73gJMtUGjAdBgNVHQ4EFgQU
# U3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF
# MAMBAf8wEQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6
# Ly9jcmwudXNlcnRydXN0LmNvbS9BZGRUcnVzdEV4dGVybmFsQ0FSb290LmNybDA1
# BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVz
# dC5jb20wDQYJKoZIhvcNAQEMBQADggEBAJNl9jeDlQ9ew4IcH9Z35zyKwKoJ8OkL
# JvHgwmp1ocd5yblSYMgpEg7wrQPWCcR23+WmgZWnRtqCV6mVksW2jwMibDN3wXsy
# F24HzloUQToFJBv2FAY7qCUkDrvMKnXduXBBP3zQYzYhBx9G/2CkkeFnvN4ffhkU
# yWNnkepnB2u0j4vAbkN9w6GAbLIevFOFfdyQoaS8Le9Gclc1Bb+7RrtubTeZtv8j
# kpHGbkD4jylW6l/VXxRTrPBPYer3IsynVgviuDQfJtl7GQVoP7o81DgGotPmjw7j
# tHFtQELFhLRAlSv0ZaBIefYdgWOWnU914Ph85I6p0fKtirOMxyHNwu8wggWbMIIE
# g6ADAgECAhEA2U11ZS/Rb399BhmeAJdADTANBgkqhkiG9w0BAQsFADB8MQswCQYD
# VQQGEwJVUzELMAkGA1UECBMCTUkxEjAQBgNVBAcTCUFubiBBcmJvcjESMBAGA1UE
# ChMJSW50ZXJuZXQyMREwDwYDVQQLEwhJbkNvbW1vbjElMCMGA1UEAxMcSW5Db21t
# b24gUlNBIENvZGUgU2lnbmluZyBDQTAeFw0xNTA0MjcwMDAwMDBaFw0xODA0MjYy
# MzU5NTlaMIGxMQswCQYDVQQGEwJVUzEOMAwGA1UEEQwFMDYyNjkxFDASBgNVBAgM
# C0Nvbm5lY3RpY3V0MQ8wDQYDVQQHDAZTdG9ycnMxDTALBgNVBAkMBEVOR1IxIjAg
# BgNVBAoMGVVuaXZlcnNpdHkgb2YgQ29ubmVjdGljdXQxFDASBgNVBAsMC0VuZ2lu
# ZWVyaW5nMSIwIAYDVQQDDBlVbml2ZXJzaXR5IG9mIENvbm5lY3RpY3V0MIIBIjAN
# BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsmdDriz6JVjmxywPaOFxH0mbdNiZ
# JFmeTrv88eNZ+65l9F3CQoTkSdiCXJqvOOwOaujq9d6xm0Bkrt93cTF6f6bD6+5x
# SCYnhoQS7ITjBVRMjcEodqgCjybhQOhQbH72xgh0qfqY4q3+NMnORmSjuBlRs/LY
# D9oxNk2oNpvyNElDySclnM8eKWo2p7h6D4BkLKsDMYp7Y0Zd1rYrtXIlwZ4Y5Ol7
# nFdrMQN7Ie9xzuOi0lxc9kVWV6lksaVTRHIVZIJpxZnTbGr0nZxQkCMEX27negXy
# QyxZrRlD5DRxPKTeRW0EAzxHuzy6u4XuCS+UwpTM30IFCCtV0Zk/1KttdQIDAQAB
# o4IB4DCCAdwwHwYDVR0jBBgwFoAUrjUjF///Bj2cUOCMJGUzHnAQiKIwHQYDVR0O
# BBYEFJKErZgxtEdzO+ITHB5HLLjUWTmqMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMB
# Af8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMBEGCWCGSAGG+EIBAQQEAwIEEDBm
# BgNVHSAEXzBdMFsGDCsGAQQBriMBBAMCATBLMEkGCCsGAQUFBwIBFj1odHRwczov
# L3d3dy5pbmNvbW1vbi5vcmcvY2VydC9yZXBvc2l0b3J5L2Nwc19jb2RlX3NpZ25p
# bmcucGRmMEkGA1UdHwRCMEAwPqA8oDqGOGh0dHA6Ly9jcmwuaW5jb21tb24tcnNh
# Lm9yZy9JbkNvbW1vblJTQUNvZGVTaWduaW5nQ0EuY3JsMH4GCCsGAQUFBwEBBHIw
# cDBEBggrBgEFBQcwAoY4aHR0cDovL2NydC5pbmNvbW1vbi1yc2Eub3JnL0luQ29t
# bW9uUlNBQ29kZVNpZ25pbmdDQS5jcnQwKAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3Nw
# LmluY29tbW9uLXJzYS5vcmcwIQYDVR0RBBowGIEWZWNzLWhibEBlbmdyLnVjb25u
# LmVkdTANBgkqhkiG9w0BAQsFAAOCAQEAY9HLgxa1CubqNB83mrxy/pKI+Efpxz32
# piISaXHQUIbV1jDI/+X3QMw+g/Q5hr2Uglp1XIWB94ws7rx0vYrqqhOvgJSmeS/2
# ChEtmMXOXyHCD+IUindiayVNlBheq1LLo6Yvo/xIPk+F4Pdi9GZJBnQqJ0b6nlKq
# un+YqcfOOB4Q92Gtbh5aWdAUhF6T3HB0cGWMX2m16dAIfyhJa3O5BOuva7DG7xBW
# x8ofkTvucxL5FiG+ipvTJ5xoK4OetJHTOywQ+sfLWsfLmkE6nXjfwNuP3SpGQAon
# dwJbjonvODiS6wiPMVWA4A2RlxnUntmGOZXUv2Jkp4+mNSeDeKF2xzCCBeswggPT
# oAMCAQICEGXh4uPV3lBFhfMmJIAF4tQwDQYJKoZIhvcNAQENBQAwgYgxCzAJBgNV
# BAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtKZXJzZXkgQ2l0
# eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYDVQQDEyVVU0VS
# VHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE0MDkxOTAwMDAw
# MFoXDTI0MDkxODIzNTk1OVowfDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk1JMRIw
# EAYDVQQHEwlBbm4gQXJib3IxEjAQBgNVBAoTCUludGVybmV0MjERMA8GA1UECxMI
# SW5Db21tb24xJTAjBgNVBAMTHEluQ29tbW9uIFJTQSBDb2RlIFNpZ25pbmcgQ0Ew
# ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDAoC+LHnq7anWs+D7co7o5
# Isrzo3bkv30wJ+a605gyViNcBoaXDYDo7aKBNesL9l5+qT5oc/2d1Gd5zqrqaLcZ
# 2xx2OlmHXV6Zx6GyuKmEcwzMq4dGHGrH7zklvqfd2iw1cDYdIi4gO93jHA4/NJ/l
# ff5VgFsGfIJXhFXzOPvyDDapuV6yxYFHI30SgaDAASg+A/k4l6OtAvICaP3VAav1
# 1VFNUNMXIkblcxjgOuQ3d1HInn1Sik+A3Ca5wEzK/FH6EAkRelcqc8TgISpswlS9
# HD6D+FupLPH623jP2YmabaP/Dac/fkxWI9YJvuGlHYsHxb/j31iq76SvgssF+AoJ
# AgMBAAGjggFaMIIBVjAfBgNVHSMEGDAWgBRTeb9aqitKz1SA4dibwJ3ysgNmyzAd
# BgNVHQ4EFgQUrjUjF///Bj2cUOCMJGUzHnAQiKIwDgYDVR0PAQH/BAQDAgGGMBIG
# A1UdEwEB/wQIMAYBAf8CAQAwEwYDVR0lBAwwCgYIKwYBBQUHAwMwEQYDVR0gBAow
# CDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0
# LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr
# BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNv
# bS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDov
# L29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQ0FAAOCAgEARiy2f2pOJWa9
# nGqmqtCevQ+uTjX88DgnwcedBMmCNNuG4RP3wZaNMEQT0jXtefdXXJOmEldtq3mX
# wSZk38lcy8M2om2TI6HbqjACa+q4wIXWkqJBbK4MOWXFH0wQKnrEXjCcfUxyzhZ4
# s6tA/L4LmRYTmCD/srpz0bVU3AuSX+mj05E+WPEop4WE+D35OLcnMcjFbst3KWN9
# 9xxaK40VHnX8EkcBkipQPDcuyt1hbOCDjHTq2Ay84R/SchN6WkVPGpW8y0mGc59l
# ul1dlDmjVOynF9MRU5ACynTkdQ0JfKHOeVUuvQlo2Qzt52CTn3OZ1NtIZ0yrxm26
# 7pXKuK86UxI9aZrLkyO/BPO42itvAG/QMv7tzJkGns1hmi74OgZ3WUVk3SNTkixA
# qCbf7TSmecnrtyt0XB/P/xurcyFOIo5YRvTgVPc5lWn6PO9oKEdYtDyBsI5GAKVp
# mrUfdqojsl5GRYQQSnpO/hYBWyv+LsuhdTvaA5vwIDM8WrAjgTFx2vGnQjg5dsQI
# eUOpTixMierCUzCh+bF47i73jX3qoiolCX7xLKSXTpWS2oy7HzgjDdlAsfTwnwto
# n5YNTJxzg6NjrUjsUbEIORtJB/eeld5EWbQgGfwaJb5NEOTonZckUtYS1VmaFugW
# UEuhSWodQIq7RA6FT/4AQ6qdj3yPbNExggR8MIIEeAIBATCBkTB8MQswCQYDVQQG
# EwJVUzELMAkGA1UECBMCTUkxEjAQBgNVBAcTCUFubiBBcmJvcjESMBAGA1UEChMJ
# SW50ZXJuZXQyMREwDwYDVQQLEwhJbkNvbW1vbjElMCMGA1UEAxMcSW5Db21tb24g
# UlNBIENvZGUgU2lnbmluZyBDQQIRANlNdWUv0W9/fQYZngCXQA0wCQYFKw4DAhoF
# AKB4MBgGCisGAQQBgjcCAQwxCjAIoAKAAKECgAAwGQYJKoZIhvcNAQkDMQwGCisG
# AQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcN
# AQkEMRYEFPzjuWLrdYabiirveIBjuTTtHqO7MA0GCSqGSIb3DQEBAQUABIIBAB4Z
# omE1VOGyT0EV9W2Cpu6DrZO7lCdbMVqsru/8VeqzLE33RCMP4yiOb/eHkuBinokr
# LpG3eb/ANI66nl4lH9RiYcmC8nU+e0HXjfNebyu9qz8DFba83dw3za9EMvEpPwZZ
# Uv/VGuUGZSqKTv5UNzXNf4+0ZmVB9dOu1TpQKG6IjYdQl1LQERKWhB2VUqGTjqu+
# Yk/HfXdHY3+ckIMPmljgRNV/PENOudAxy0ofjCoE1W1AZoRs967flSaewE8wUNOf
# gYJZ6+DYN/y0s/j71SPz5O3iOZgyC/vj3MNG2KevaESPtpaOHfxLQ9WNLHHg1Z7w
# uDVbAI9gy4suerKQ1kehggJFMIICQQYJKoZIhvcNAQkGMYICMjCCAi4CAQAwgasw
# gZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtl
# IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMY
# aHR0cDovL3d3dy51c2VydHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0
# LU9iamVjdAIRAJ/qyBGw8WJHpfwg2AUjrOYwCQYFKw4DAhoFAKBdMBgGCSqGSIb3
# DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1MDgyNTE0MDAyOVow
# IwYJKoZIhvcNAQkEMRYEFCLmag9G+567LxSH7tTYfUtDlI6UMA0GCSqGSIb3DQEB
# AQUABIIBADKhO09+tZUec22hmHS01M0OvHzWzjjxMm/JsbP9IaO3CR6QrZTGIqW+
# i7V+1ZeJ9xeRxbtugnf4oPX0b0N+qbH5AByz/E1UOaEfd76IiuaHM2sfegmFJW+u
# 8sJ7c+a99pW/QA4eC1pxMv9TrBn4i0u5q2Ck4B26JZQNjLUo/QZ9iSGsnCc0CkgP
# pHU/O1bEaPeKP6NpzsQEKbIPqfFnmqhRdT1mgcz9rbY8iBn6CUORUN3rPthVqDgz
# QqxmnXbwEKVbPMJMkUmE0P0aJnT9RJC0avWXmRAF1VtK0H8G1ZXDLys8A41WTEm3
# SexoRxjELb/yo3ZlcM1/Bt1t2phm+ak=
# SIG # End signature block