Index: client/1.0/neutral/pkgd.eagle
==================================================================
--- client/1.0/neutral/pkgd.eagle
+++ client/1.0/neutral/pkgd.eagle
@@ -700,10 +700,39 @@
}
return ""
}
+ #
+ # NOTE: This procedure attempts to guess a package name based on a list of
+ # its files. It relies upon the fact that all packages must include
+ # a package index file. The language argument must be one of the
+ # literal strings "eagle", "tcl", or "client". The fileNames argument
+ # must be the list of file names to be downloaded. The package name,
+ # if one can be detected, is returned; otherwise, an empty string will
+ # be returned.
+ #
+ proc guessPackageNameFromFileNames { language fileNames } {
+ set packageIndexFileName [getPackageIndexFileName $language]
+
+ if {[string length $packageIndexFileName] > 0} then {
+ foreach fileName $fileNames {
+ set fileNameOnly [file tail $fileName]
+
+ if {$fileNameOnly eq $packageIndexFileName} then {
+ set directory [file dirname $fileName]
+
+ if {[string length $directory] > 0} then {
+ return [file tail $directory]
+ }
+ }
+ }
+ }
+
+ return ""
+ }
+
#
# NOTE: This procedure verifies the platform specified by the caller. The
# platform argument must be an empty string -OR- one of the literal
# strings "neutral", "win32-arm", "win32-x86", "win64-arm64",
# "win64-ia64", or "win64-x64". An empty string means that the
@@ -742,10 +771,18 @@
if {[info exists packageName]} then {
set localPackageName $packageName
} else {
set localPackageName ""
}
+
+ upvar 1 fileNames fileNames
+
+ if {[info exists fileNames]} then {
+ set localFileNames $fileNames
+ } else {
+ set localFileNames [list]
+ }
upvar 1 usePgp usePgp
if {[info exists usePgp]} then {
set localUsePgp $usePgp
@@ -757,11 +794,11 @@
# NOTE: Download the list of platforms associated with this package
# from the package repository server. This may fail and raise
# a script error.
#
set platforms [downloadAllPlatforms \
- $language $version $localPackageName $localUsePgp]
+ $language $version $localPackageName $localFileNames $localUsePgp]
if {[string length $varName] > 0} then {
upvar 1 $varName newPlatform
}
@@ -1066,16 +1103,15 @@
# argument must be one of the literal strings "8.4", "8.5", or "8.6"
# when the language is "tcl" -OR- the literal string "1.0" when the
# language is either "eagle" or "client". The packageName argument
# is a directory name relative to the language and version-specific
# directory on the package file server and may be an empty string.
- # The localFileName argument is the file name where the downloaded
- # file should be written. The usePgp argument should be non-zero
- # when an OpenPGP signature needs to be verified for the downloaded
- # file.
+ # The fileNames argument is the list of file names to be downloaded.
+ # The usePgp argument should be non-zero when an OpenPGP signature
+ # needs to be verified for the downloaded file.
#
- proc downloadAllPlatforms { language version packageName usePgp } {
+ proc downloadAllPlatforms { language version packageName fileNames usePgp } {
variable baseUri
variable platformsUri
variable platformsUrn
variable temporaryRootDirectory
@@ -1105,10 +1141,12 @@
if {$usePgp && [isOpenPgpSignatureFileName $localFileName true]} then {
#
# NOTE: Attempt to verify the OpenPGP signature. If this fails,
# an error is raised.
#
+ ::PackageRepository::openPgpMustBeInstalled
+
if {![::PackageRepository::verifyOpenPgpSignature $localFileName]} then {
error [appendArgs \
"bad OpenPGP signature \"" $localFileName \"]
}
}
@@ -1130,10 +1168,14 @@
# NOTE: Figure out the pattern to use when matching against the file
# names in the manifest data. If available, this will include
# the package name; otherwise, platform names for all packages
# will be considered.
#
+ if {[string length $packageName] == 0} then {
+ set packageName [guessPackageNameFromFileNames $language $fileNames]
+ }
+
if {[string length $packageName] > 0} then {
set pattern [file join $language $version * $packageName *]
} else {
set pattern [file join $language $version *]
}
@@ -1208,10 +1250,12 @@
if {$usePgp && [isOpenPgpSignatureFileName $localFileName true]} then {
#
# NOTE: Attempt to verify the OpenPGP signature. If this fails,
# an error is raised.
#
+ ::PackageRepository::openPgpMustBeInstalled
+
if {![::PackageRepository::verifyOpenPgpSignature $localFileName]} then {
error [appendArgs \
"bad OpenPGP signature \"" $localFileName \"]
}
}
Index: client/1.0/neutral/pkgd.eagle.asc
==================================================================
--- client/1.0/neutral/pkgd.eagle.asc
+++ client/1.0/neutral/pkgd.eagle.asc
@@ -1,18 +1,18 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository
-iQIcBAABCAAGBQJYE7vFAAoJEFAslq9JXcLZBwMQAKDm7HlMo5oFirUaOKAV6y+J
-/N7DWzhOmq/iHCOp584xlBCoAl3gTv9DYXxwMWpVdz10Fh4lzkLsgOg9PwIcUECt
-vuuREsBbWb+6gm5S9Owm8TE7zXn3cPo517KOp/vl+9gKBiwzv7UyzJmpGwAzi3r4
-LaifHy9nOp1fInxI8uEOnJuBBnL+h2M3q/gOtikm4tc5LlAjEC1mDS0vWQCNUarq
-zBMWqvor3DzkxGEtIvrtobrWATUdylnobD/s1kfdchZf/H4ssVUR6aTHVv9sKQ9P
-nCBQzuEB/jEFAKL+TjgUlqJ9diRQ8REnfW2HoCaPfzt1DuM4Iznpe6aRgUSpcOwv
-P1WnRwKOFPY4Zx7q7i/uvu5yhtupzR+LDQUFBV9et6M+pYJc8Pg8tGztCHoZ9AFD
-oF3+fjtLdegjC99cLugFdc1InnTR+GhQK/w1AYf85ikIl3mMUpcRvdsQ7MYmyps5
-36Qcx3kqb41HZlV1VD7j/YNWiV63wEnU5zhbbI20/WqBslkNqc2m8u4ULSWCq/kx
-pfNQMNRz4QzgEpmFKq/QCvZNsmrbN6vVW74RWEJyfM0JBjYf8K7wGQuEv5zN2S03
-oTx0VUg79X5xz1BmYiOgmTlz8qwbm1K5N9sEwGCeDqNo2xhhvB5/mIE7khGxZfbC
-7/lWkt9iPyMg19UfVUxD
-=WJyn
+iQIcBAABCAAGBQJYFpKcAAoJEFAslq9JXcLZnn0P/iFQYWnBCA+H7GF5of1EOOAH
+176D9KBLc0V881vihj0WnJ1YfWCGhkXnqARqy5yv72nBZlTWB6i33ewzJH7gyevZ
+F1BqIh1EyV+v2AlAyhTydOlb3JQb07IMM+5eVRVd75TMp4LRr+InOkKfDMCeLuSp
+jvcp2iPQPlEpOpEW1echzJgIdEpgfML9cG7pUbyTAY+874yRcffbWlQXfFaPn7OW
+6EdENAivX8+V0AAGVlHiWG3tdc0bJBM0Lh58w1mjODLYPGldHRc78vdtcEZXkDzY
+CTj8KIItKq7PCuPbTeZMH3X9ChKa5uBVC1a1ivcp8f0Lq8z8vH2MvddnobmWLzYu
+YN//pvsOBe+N6EEy61ToKL44pSN0GV5uemRfYu6q4pEIPZtN1oEzrfJfj+DOXM4H
+ONenr2hyrPM+8/oeRCars+m1hKWjXYzeRoQ48e0ueiJDKkqxLQBuwxmhDxhJmYbP
+/cdpV3EdwNwBhQYJ4GhNK41iecfxpya5SKGR2zqYkkko5JHNacCy+kez768QEBdq
+xnRBSfemkb4d5/ZRpsZJl4L07V8cipDgtYOxRL1l/1zD6ay6jsXwosX8kUjbrQyA
+5/MfBBvTtfKLg3/w2XTtKFHUNYxzHG19KhxkJ9sUt2PKHHUwD95PKjE3+Ht8mvE/
+anQwCmgtFDw6onWlDshg
+=x/i7
-----END PGP SIGNATURE-----
Index: client/1.0/neutral/pkgd.eagle.harpy
==================================================================
--- client/1.0/neutral/pkgd.eagle.harpy
+++ client/1.0/neutral/pkgd.eagle.harpy
@@ -19,50 +19,50 @@
None
Mistachkin Systems
- 6ed16d98-c12c-4a58-9ff6-2344a6cc9ec1
+ dfe02158-0787-40dc-ab76-b5b3b27db03e
SHA512
Script
- 2016-10-28T20:57:10.7421406Z
+ 2016-10-31T00:36:41.6996407Z
-1.00:00:00
0x9559f6017247e3e2
- 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
+ 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
Index: client/1.0/neutral/pkgd.eagle.harpy.asc
==================================================================
--- client/1.0/neutral/pkgd.eagle.harpy.asc
+++ client/1.0/neutral/pkgd.eagle.harpy.asc
@@ -1,18 +1,18 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository
-iQIcBAABCAAGBQJYE7vGAAoJEFAslq9JXcLZqX4P/3+dFIPeld578TNXdq8qzEUU
-dStnBjsuCQECqE++Ve/RdHrY2/uzAmcyYiNy8oELPQYSWwX2Y8YWtYfzPIuc8tzA
-lKrsGxFlgabLpDYBrScovUS6Nv7HohwvWT7p6lSaiQ03w7cR1clfKyBHXrr0KhPe
-ve/KrJElXSzpfYOhAgKn3PA0YCT0us5HWFAn0yZXCnxPlA3CPuLpyujMVJrYVOzo
-iuBiU2XkbXELpC+v+J0Jch4CRFXYAP7mMuwyz7W7Rau2lzTcoK6eXsEn0d2q3PxP
-lO1D0hGVWuEuMDAImKyYVRe3B5nZHM53ClzSlj5QUKdcz10610SdFewU5DLgLSji
-fu8vBuFCrWWbBk0zmnuY310rNGEEWwnhZ+sqxCwWkZfkZFONV1BT+NlwsHr89lH/
-3i6TdR4ddStK3rAiUetOraBRR+L7OJcv0oQB5JsGDP/CXdtgzv2BnxHRCU8vfMnx
-BFKVC0qrtSt0+HWMQTW0CYd3dzr1o1oZ846I9EYzgwFAadetjtSqjsMRPgppBriD
-/e8AkY+GDJGFmu48hM8CFGFtUpNqQ2xKemX+GcBhy0mRkWQR7noSks4+Thd6WQyl
-LZl1xr8npI/MCo17Mpk4lTg2nDbP6a9nRWhFRVbpo6QOtwiLteEQUTb3LdHMBK0W
-iSEK4bd2WGaZS2vRoQW1
-=fotc
+iQIcBAABCAAGBQJYFpKeAAoJEFAslq9JXcLZ14sP/3wW75sAFZEidnnJ5fCALUZJ
+43zLj+wDzcPAuY0xaZU5JAVMAcIsr9E8Uxsk+qRMDIeRYpPz27RfxyijN458mfw+
+yZJ13QLYYCDEGEqETDYo+x5HljmQYBIP87Bwah3DCpehWFfPuWm1s1qcprXDL6fW
+btnRttNQVyPyWHPaIfD5HEvxuCAGXVCZBxtOOlRSTpkfxPKrCcG+hHJWw9XGsqUO
+ePoweC1sInehc0jV8O48GHU98T7Lqr9WgZbCk3Bk44Mjs2sCu3U0k4g9D0uOlCp7
+WZ/48Y9GIMnIJ/83hQ+ol/qGrokbmPbz893HpHNyK/t5YJ3EQEphoOO7PV5j0Ok9
+jXS+fRv8AfkGRvqurqcjf7bMs3iy1dPauiI2af7yORswhwHKScpOlsaXFgkLpvab
+mp17nK0mPuPtDJQR+eZcxPwylwxiRmZinqaE79UEN+OmyMv5WJ9VMthkRpgoYP8s
+PAp0RpN7tVciTGDpgutpNPIJua2y6+A+O3D6G9WfHPXgvn0hpavd5myaGTw1B7RK
+6CgBnOWuRk3JfY7lbgIoQl3Q5GIoVNp09cBKAaEQFKm5iSlb9V4qYd8m7RwfFNCd
+feyCH00/Rj8UUzkhwEHOPTBSPw87GQbl5PGWhbKkVAq5tCSk9hfSjNhXrdEJpe2z
+l/DlaGTOrgd3cabXuNR5
+=gcjH
-----END PGP SIGNATURE-----
Index: client/1.0/neutral/pkgr.eagle
==================================================================
--- client/1.0/neutral/pkgr.eagle
+++ client/1.0/neutral/pkgr.eagle
@@ -274,10 +274,43 @@
incr counter
}
}
}
+ #
+ # NOTE: This procedure attempts to verify that a configured implementation
+ # of OpenPGP is installed locally. There are no arguments. Script
+ # errors are raised if any problems are found. The return value is
+ # undefined.
+ #
+ #
+ proc openPgpMustBeInstalled {} {
+ variable openPgpInstalledCommand
+ variable openPgpInstalledPattern
+
+ if {[isEagle]} then {
+ if {[catch {
+ eval exec -success Success $openPgpInstalledCommand
+ } result]} then {
+ error "cannot use OpenPGP: may not be installed and/or configured"
+ }
+ } else {
+ if {[catch {
+ eval exec [subst $openPgpInstalledCommand]
+ } result]} then {
+ error "cannot use OpenPGP: may not be installed and/or configured"
+ }
+ }
+
+ if {![info exists result] || \
+ ![regexp -- $openPgpInstalledPattern $result]} then {
+ error "cannot use OpenPGP: unknown or unsupported version"
+ }
+
+ return ""
+ }
+
#
# NOTE: This procedure attempts to verify the OpenPGP signature contained
# in the specified (named) file. Non-zero is only returned if the
# OpenPGP signature is verified successfully. A script error should
# not be raised by this procedure. The fileName argument must be
@@ -284,23 +317,23 @@
# the fully qualified path and file name of the OpenPGP signature
# file to verify.
#
#
proc verifyOpenPgpSignature { fileName } {
- variable openPgpCommand
+ variable openPgpVerifyCommand
if {[isEagle]} then {
set fileName [appendArgs \" $fileName \"]
if {[catch {
- eval exec -success Success [subst $openPgpCommand]
+ eval exec -success Success [subst $openPgpVerifyCommand]
}] == 0} then {
return true
}
} else {
if {[catch {
- eval exec [subst $openPgpCommand] 2>@1
+ eval exec [subst $openPgpVerifyCommand] 2>@1
}] == 0} then {
return true
}
}
@@ -1187,10 +1220,12 @@
#
# NOTE: Attempt to verify the OpenPGP signature for the package
# script.
#
+ openPgpMustBeInstalled
+
if {[verifyOpenPgpSignature $fileName(2)]} then {
#
# NOTE: Delete the temporary files that we created for the
# OpenPGP signature verification.
#
@@ -1731,18 +1766,41 @@
} else {
set autoRequireGaruda false
}
}
+ #
+ # NOTE: The command to use when attempting to verify that OpenPGP is
+ # installed locally. This must be configured according to the
+ # implementation of OpenPGP in use.
+ #
+ variable openPgpInstalledCommand; # DEFAULT: gpg2 --version
+
+ if {![info exists openPgpInstalledCommand]} then {
+ set openPgpInstalledCommand {gpg2 --version}
+ }
+
+ #
+ # NOTE: The regular expression pattern used when attempting to verify
+ # that OpenPGP is installed locally. This must be configured
+ # according to the implementation of OpenPGP in use.
+ #
+ variable openPgpInstalledPattern; # DEFAULT: ^gpg \(GnuPG\) 2\.0\.
+
+ if {![info exists openPgpInstalledPattern]} then {
+ set openPgpInstalledPattern {^gpg \(GnuPG\) 2\.0\.}
+ }
+
#
# NOTE: The command to use when verifying OpenPGP signatures for the
- # downloaded package scripts.
+ # downloaded package scripts. This must be configured according
+ # to the implementation of OpenPGP in use.
#
- variable openPgpCommand; # DEFAULT: gpg2 --verify {${fileName}}
+ variable openPgpVerifyCommand; # DEFAULT: gpg2 --verify {${fileName}}
- if {![info exists openPgpCommand]} then {
- set openPgpCommand {gpg2 --verify {${fileName}}}
+ if {![info exists openPgpVerifyCommand]} then {
+ set openPgpVerifyCommand {gpg2 --verify {${fileName}}}
}
#
# NOTE: Verify that the package script matches the current language
# when called from the [package unknown] handler?
Index: client/1.0/neutral/pkgr.eagle.asc
==================================================================
--- client/1.0/neutral/pkgr.eagle.asc
+++ client/1.0/neutral/pkgr.eagle.asc
@@ -1,18 +1,18 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository
-iQIcBAABCAAGBQJYE7u/AAoJEFAslq9JXcLZvi4QAKCRluQ5d1jceMbglWqJekUv
-MZm/U0ZYAHIINUB0FaQUBVa+lBRbKn06c585Khuf74Wv3PVaJ/qwIeMTQEYewSy/
-/R1SGc/zH9l3WfgAeAuntoU/kqIrjJFrimWJ0RMaM+RJwjXrGBYncZ2BhnPldIJS
-kOz/3q2GXZOGwuL4FVkAg+h7bNf7pYQUNj6Nt/82AkJhcYeuQMeMgvRSWm8HHZir
-GKP2CgiQRJ4JNZ1GWZ9KbKb1z0sDVidTDi5kKJX9mZE2PubNJPKcEEheb9uhy6/t
-8LgJRNWmoMljsvn2OHju88o7xTTUeHGcQcO8vlk2SR20RgHKm2xS53OuhBvvyrrF
-y8YK7XoJ5wqHj7vlOeEWLA0cShnWjaTlNfbfz4Vfb/rOy9wjpKyp+pvkny2AC3Vg
-gYtO51AXp2BdTK4Nvh8XiltiephKuT8r0kmFuOVyY1HKC/RGVsqpAb2slYzWIIIT
-lXgKsNijKCV69JcFCktHZE95wbSeQZEGx1H+t7vbES0hWvyuLjUQCUHxn0X9yV9o
-m2phJTwQyNDK5uhisSkscM1lw2M73sfetKShjvvtrGXoEOmGdhNbQw7jP0aUCwpl
-v0/FEVgRZh8yAwcU28cA1mUTfZ6wotwYBGHzmpeDJGv3ZgPOGoeTYxU+uy8vfxYF
-BezEogjNRuUi4W/svIVk
-=oqiu
+iQIcBAABCAAGBQJYFpKWAAoJEFAslq9JXcLZFg0QAJCv48Iy2dh3PTKf49XphgzQ
+g3HtzsFxGDu6SI8F+VzeFe6GDM+JAjyXg9jd4hRRqBu4tXLfqxEK+QJ1ZFywEJk3
+KOfnhKsk7cjNhkQ9SY1gq53RoT+cHwWTPBFX4nkQYFw1kZM/H4HkO49y4AXDFkId
+k7rtZh8sc5fXBfSHBxvbal9jIdq4LVbGZ2/yWGmjEcYOnhH/RW1u9FZT+V02R492
+BvhGhTE6Rr6uLo+YarMxMh2kiQt4P1xHurN0baalzrL7mfH7M+CYIXnjS+p7sABv
+QVw/ZHpGyTFoBehcddIkT5ODZdibdkyCXMOO/pZ+eOlswwc7e3o3p2heVYyo+IyV
+eOfwa4BcE4JUl6GkcEBHmj+UKNCKjHv1hXl0M0KglqQuvGn3A5JgUukETmkQhbPP
+WWjD2DfzyqOdvpjh3r+GKyGsF06OGIc/hBuFzDnIUIJ5sUpzNrAnuXyQLYW7PMYc
+VX9R1V01VomZXV00lS7BthgXucr7huAuadG+R8w2JKeJKYQY26evC3ygEfM/oA5w
+FmZsNlL9Ju3Rnw7yZrjqbHIWN/pzotT0IT2/q3dIdhUwEyOQvtP/v1yce+eIrBH+
+RTgM/WGUhsfVp/1xPm8+xIGoeKBMbTk0kOdncmJEWTx6P3zcp7h5gSqjxY0JNFfv
+ydP83V9D2lP75K1btsSJ
+=AwPq
-----END PGP SIGNATURE-----
Index: client/1.0/neutral/pkgr.eagle.harpy
==================================================================
--- client/1.0/neutral/pkgr.eagle.harpy
+++ client/1.0/neutral/pkgr.eagle.harpy
@@ -19,50 +19,50 @@
None
Mistachkin Systems
- 9f676ee9-c8d6-4443-82a2-27addf071618
+ bfe7ea6e-05e7-4c46-b24f-b6e17e8fd4d8
SHA512
Script
- 2016-10-28T20:56:43.6044453Z
+ 2016-10-31T00:37:04.3334297Z
-1.00:00:00
0x9559f6017247e3e2
- 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
+ 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
Index: client/1.0/neutral/pkgr.eagle.harpy.asc
==================================================================
--- client/1.0/neutral/pkgr.eagle.harpy.asc
+++ client/1.0/neutral/pkgr.eagle.harpy.asc
@@ -1,18 +1,18 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository
-iQIcBAABCAAGBQJYE7vBAAoJEFAslq9JXcLZaHsP+we67OXvqTG7g+lsaWe/24+H
-MBzd+lF+5wsoRzAn+nvrF0lMIjHPgRdR4aNEb8UUgEwr5BA0j7VvB6yXKwZzmnTf
-9kFWo9C/gDgU/TgtS9ZMACr9DBOvmGlzmciFSQQAdJ6wE6ojN6G7YoI354LW0gNN
-077AEYeMcsKzxDKFOyMXWeh6lhSXbJLpMD3piG84pyYA1BlscbrH4pnj4+uFXeRG
-PL0u8RyUiWZcCjG3pNa8Zr+JUFrNekukkK2hL4yYHNVUEQ4c0ByFlCPlh6wb2dMD
-rvzevvt/Lrlw2BR4TLNKTdxYqA1zb5V4x35T1i13KqhuWREZI8XVqChiUiV+gRFR
-vGVOYXxseWHImuFy8E7X5tzqtJshMctrIta/x7ir6txSNnSUoZRjgyMInJXt+k7G
-43ra8nCa54OV2clbc76LXpSUmJG/zAvuqTG9ZepcNgmpblw5LS1Sy56hkR1LbHoE
-VxmwXFyxGrhOGsB0035ax0d3KyGEidSE4lTY3e6NCicRhRehZVRHS8wagIPgqeGe
-UEK5kkLmRqBqMPtmMW0/1Xj3DPwJCrBrycqHv4u8KZ9Me+OLnOlcOlQrb6IZ7GIU
-oIVlKZJR/sBzZ4oNQdCMoxBSzN+evp39FShgIJCIvK5t7aIvUdwRJCJ9VTwSYKD2
-qKHSXFxBg2GNU28ykMhX
-=NZFm
+iQIcBAABCAAGBQJYFpKYAAoJEFAslq9JXcLZHdgP/jEf5Pbq2X+mjFH8QiRpJhnP
+ZZ1jErRpXuZ5YgKdIQDq/SHJFKyqGWlO8Km14NCpEt/W3weU8OCjVDB89+f0sX1V
+22ahQZpE/ubzzeFgFt+DPC6QW6D6qaxUcOj62RTepp/oyq/b/zVWTmF0xurqeCpb
+QJHinZH9ONje379tg2VkI/0nwDayfwzshSSpWDc2uyosKvpASY8mwybhmefdbnj3
+cglScjJQoNBhO5j6Lu/xJxT1eFyli8FYh+w5Oc/UuhGls70aoiIxoxeD3tQKj715
+tLhQxfz8TP8V+DBdx7JPaPnNnCDwjcFgRXZg80BX6nLZacAFZZXYjKQJTYDmRa2v
+RZHyhNJp9XTvH6fqbDF1JYAgdQM8ARp1BehEIudGhZ5zRKTf/EkVx48T0Ajwr06w
+Qb2py9gvgX4pbHKVBy5uc1JHgu9nL4dT0qhWGfHDpg3lE6PS77EbNKVXlTut9PHY
+1pvnbGc6EZnTdlv9jCxAvS1SwPQgYqx6l/8QHnx+nMAgzXSB65GswYXRTyyqpZEH
+1VrkTMvBSy299+KMebUCMTtyXSTcAH/kPTBaDImhXk5HlpPckkHD65TdVbEWQmy/
++G7d/mWcVkf1OVReeE73AOne2p6CNH/bAkzAQiD6NRc2m64yuRX9zEEMI7EQYLqJ
+8+t6pGIk/BilbkwoRNua
+=DNwu
-----END PGP SIGNATURE-----