From owner-freebsd-ports-announce@freebsd.org Thu Nov 30 15:32:56 2017 Return-Path: Delivered-To: freebsd-ports-announce@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D50EFE5E9DF; Thu, 30 Nov 2017 15:32:56 +0000 (UTC) (envelope-from mat@FreeBSD.org) Received: from prod2.absolight.net (prod2.absolight.net [79.143.243.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "plouf.absolight.net", Issuer "CAcert Class 3 Root" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 7FBA3686DD; Thu, 30 Nov 2017 15:32:50 +0000 (UTC) (envelope-from mat@FreeBSD.org) Received: from prod2.absolight.net (localhost [127.0.0.1]) by prod2.absolight.net (Postfix) with ESMTP id 4765DBDD35; Thu, 30 Nov 2017 16:32:48 +0100 (CET) Received: from ogg.in.absolight.net (ogg.in.absolight.net [79.143.241.239]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by prod2.absolight.net (Postfix) with ESMTPSA id 21DAFBDD31; Thu, 30 Nov 2017 16:32:48 +0100 (CET) To: freebsd-ports@freebsd.org Reply-To: freebsd-ports@freebsd.org Cc: freebsd-ports-announce@FreeBSD.org, dvl@FreeBSD.org, linimon@FreeBSD.org From: Mathieu Arnold Organization: Absolight / The FreeBSD Foundation Message-ID: <7c9a5e55-505f-9160-2886-56c451cdf9b1@FreeBSD.org> Date: Thu, 30 Nov 2017 16:32:44 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="qwS5fKuMUQNMCosfknvN3GD2E2B3cni3U" X-Mailman-Approved-At: Thu, 30 Nov 2017 16:56:06 +0000 Subject: [FreeBSD-Ports-Announce] [HEADSUP] Flavors, and specifically, Python flavors landing today X-BeenThere: freebsd-ports-announce@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "Important news and instructions about the FreeBSD " ports collection" \[moderated\]" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Nov 2017 15:32:57 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --qwS5fKuMUQNMCosfknvN3GD2E2B3cni3U Content-Type: multipart/mixed; boundary="nHefKvORv2IKrdETSpESPmQsDEoxJW3sr"; protected-headers="v1" From: Mathieu Arnold Reply-To: freebsd-ports@freebsd.org To: freebsd-ports@freebsd.org Cc: freebsd-ports-announce@FreeBSD.org, dvl@FreeBSD.org, linimon@FreeBSD.org Message-ID: <7c9a5e55-505f-9160-2886-56c451cdf9b1@FreeBSD.org> Subject: [HEADSUP] Flavors, and specifically, Python flavors landing today --nHefKvORv2IKrdETSpESPmQsDEoxJW3sr Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-Language: fr |Hi,| | | |TL;DR:| |=C2=A0 See Ports now have flavors enabled| |=C2=A0 Tool developers, see https://wiki.freebsd.org/Ports/FlavorsTools|= |=C2=A0 All Python dependencies must have @${PY_FLAVOR} appended to them|= | ||https://wiki.freebsd.org/Ports/FlavorsAndSubPackages| || | | |Flavors are a way to have multiple variations of a port.=C2=A0 The port = is built| |multiple times, with the variations.=C2=A0 To declare flavors, set the F= LAVORS| |variable to the flavors you want defined.=C2=A0 The first flavor will be= the| |default:| |=C2=A0=C2=A0=C2=A0=C2=A0| |=C2=A0 FLAVORS=3D=C2=A0=C2=A0 flavor1 flavor2| |=C2=A0=C2=A0=C2=A0=C2=A0| |The flavors MUST be lowercase, and can contain [[:lower:][:digit:]_].| |=C2=A0=C2=A0=C2=A0=C2=A0| |Then, when building the port, pass the FLAVOR as an argument after make = to| |select the flavor.| |=C2=A0=C2=A0=C2=A0=C2=A0| |=C2=A0 $ make install FLAVOR=3Dflavor2| |=C2=A0=C2=A0=C2=A0=C2=A0| |In the port, you can then change the behavior depending on the value of the| |FLAVOR variable.=C2=A0 Note that the different flavors MUST have differe= nt| |PKGNAMEs.=C2=A0 Be sure to guard against an empty FLAVOR variable by usi= ng| |${FLAVOR:U}:| |=C2=A0=C2=A0=C2=A0=C2=A0| |=C2=A0 .if ${FLAVOR:U} =3D=3D flavor2| |=C2=A0 PKGNAMESUFFIX=3D=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 -foo| |=C2=A0 OPTIONS_DEFAULT+=3D=C2=A0=C2=A0 FOO| |=C2=A0 .endif| |=C2=A0=C2=A0| |Right now, adding FLAVORS to a port will need portmgr's approval, until = we| |figure precise guidelines so that the number of packages doesnot grow| |exponentially.| |=C2=A0=C2=A0| | | |=C2=A0=C2=A0| | | |=3D=3D=3D Tools =3D=3D=3D| |=C2=A0=C2=A0=C2=A0=C2=A0| |Flavor support for ports-mgmt/poudriere was added in 3.2, be sure to upgrade to the latest version.| | | |=C2=A0=C2=A0| |=3D=3D=3D Helpers =3D=3D=3D| |=C2=A0=C2=A0| |To help with flavored ports, helpers are available.=C2=A0 In these, repl= ace <*>| |with the flavor name.| |=C2=A0=C2=A0=C2=A0=C2=A0| |*_PKGNAMEPREFIX *_PKGNAMESUFFIX *_PLIST *_DESCR will overwrite the variable.| |=C2=A0=C2=A0=C2=A0=C2=A0| |*_CONFLICTS *_CONFLICTS_BUILD *_CONFLICTS_INSTALL *_PKG_DEPENDS| |*_EXTRACT_DEPENDS *_PATCH_DEPENDS *_FETCH_DEPENDS *_BUILD_DEPENDS| |*_LIB_DEPENDS *_RUN_DEPENDS *_TEST_DEPENDS will append to the variable.|= |=C2=A0=C2=A0=C2=A0=C2=A0| |For example:| |=C2=A0=C2=A0=C2=A0=C2=A0| |=C2=A0 flavor2_PKGNAMESUFFIX=3D=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 -foo| |=C2=A0=C2=A0=C2=A0=C2=A0| |can replace:| |=C2=A0=C2=A0=C2=A0=C2=A0| |=C2=A0 .if ${FLAVOR:U} =3D=3D flavor2| |=C2=A0 PKGNAMESUFFIX=3D=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 -foo| |=C2=A0 .endif| |=C2=A0=C2=A0| | | |=C2=A0=C2=A0| | | |=C2=A0=C2=A0| |=3D=3D=3D Python =3D=3D=3D| | | |Ports using Python via USES=3Dpython are now flavored.=C2=A0 All the py3= -* ports| |have been removed and folded into their py-* master ports.| |=C2=A0=C2=A0=C2=A0=C2=A0| |People using Poudriere and binary packages do not have to doanything.| |=C2=A0=C2=A0=C2=A0=C2=A0| |For other people, to build the Python 3.6 version of, for example,| |databases/py-gdbm, you need to run:| |=C2=A0=C2=A0=C2=A0=C2=A0| |=C2=A0 # make FLAVOR=3Dpy36 install| |=C2=A0=C2=A0| |=C2=A0=C2=A0| |Ports using USE_PYTHON=3Ddistutils are now flavored.=C2=A0 They will automatically| |flavors (py27, py34, py35, py36) depending on what versions they support= =2E| | | |There is also a USE_PYTHON=3Dflavors for ports that do not use distutils= but| |need FLAVORS to be set.=C2=A0 A USE_PYTHON=3Dnoflavors can be set if the= port is| |using distutilsbut flavors are not wanted.| |=C2=A0=C2=A0=C2=A0=C2=A0| |A new USE_PYTHON=3Doptsuffix that addsPYTHON_PKGNAMESUFFIX has been adde= d| |to cope with Python ports that did not have the Python PKGNAMEPREFIX but are| |flavored.| |=C2=A0=C2=A0=C2=A0=C2=A0| |USES=3Dpython now also exports a PY_FLAVOR variable that contains the current| |python flavor.=C2=A0 It can be used in dependency lines when the port it= self is| |not python flavored, for example, deskutils/calibre.| |=C2=A0=C2=A0=C2=A0=C2=A0| |By default it will only generate flavors for the versions in PYTHON2_DEFAULT| |and PYTHON3_DEFAULT.=C2=A0 Define BUILD_ALL_PYTHON_FLAVORS in your make.= conf to| |generate all possible flavors.=C2=A0 A port can set USE_PYTHON=3Dallflav= ors to have| |all the flavors and not simply the default ones.| |=C2=A0=C2=A0| |In all the ports with Python dependencies, the *_DEPENDS entries MUST en= d| |with the flavor so that the framework knows which to build/use.=C2=A0 Th= is is done| |by appending '@${PY_FLAVOR}' after the origin (or @${FLAVOR} if in a Python| |module with Python flavors, as the content will be the same).=C2=A0 For example:| | | |=C2=A0 RUN_DEPENDS=3D=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR}| --=20 Mathieu Arnold --nHefKvORv2IKrdETSpESPmQsDEoxJW3sr-- --qwS5fKuMUQNMCosfknvN3GD2E2B3cni3U Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQJ8BAEBCgBmBQJaICSfXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQzQUI2OTc4OUQyRUQxMjEwNjQ0MEJBNUIz QTQ1MTZGMzUxODNDRTQ4AAoJEDpFFvNRg85ITq0P/jNHkXS44nQtCmgtc+vv3FnU Uf2we755iTNOUQY/ZtX9h31c3mFD/mzwj4QxTKu3u8HbhLk26rS1LE2YjdBXP3Ff 8GPGMuzXJP2nXPdrGf0lLNWB2yVaxS+/Io5Oq8CtOtE6e7+3zLxOjG+RGbawcqbL DaMbbeYS6hFmE2KevAVdC4ybmalH5shgxbmaF49UOtGGR91q2Dz8z8jQ27OKaZWi QU56VAjFXf8EPhd29KjbxP00ChQZ589KbtbVpkPsf1KndN0y5kEJtRWifWe7Jzir EdwIDa6BHgOuqmpaUbExj0DnQiPgTWldY81ECCy/kmRPc0/L9oqZ+YQk4ll3e4nO E3O2PbKWDbzbGB4xfV1eKUtBz9GwGP/04P9HjL5IDkbOQKpEXML2DmRk7HSmuXGj /o3SDQBo5fbAIPQv2SPbxvns4S+JbBT4i0M9tAaRsMZ3+g9P+rKM/n3MmOUDyYdD 4a4s+Lc1wZdC7vFcv8PqE6O+AJx8wYHpdg+SoAjb2TN+yRaJrj1kI1cItG6yzmfr ds11YbclXzoJKlxfEMa1iJBTtdehuTFrh/yKCwTolRFeH/u3rFo7X4p6mdn+tLa3 bWJWzRn/8ZiSCTjXW37NBecBlm2OLWGCCHgJxJ/PkchylOskdZaf9rREsp4ZRNOA knk4DA3T6DSLV4GUq8SV =3B4T -----END PGP SIGNATURE----- --qwS5fKuMUQNMCosfknvN3GD2E2B3cni3U-- From owner-freebsd-ports-announce@freebsd.org Thu Nov 30 16:22:42 2017 Return-Path: Delivered-To: freebsd-ports-announce@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 48F43E5FE4B; Thu, 30 Nov 2017 16:22:42 +0000 (UTC) (envelope-from mat@FreeBSD.org) Received: from prod2.absolight.net (mx3.absolight.net [IPv6:2a01:678:2:100::25]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "plouf.absolight.net", Issuer "CAcert Class 3 Root" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id F0AE86AD8F; Thu, 30 Nov 2017 16:22:41 +0000 (UTC) (envelope-from mat@FreeBSD.org) Received: from prod2.absolight.net (localhost [127.0.0.1]) by prod2.absolight.net (Postfix) with ESMTP id 419D6BDD2D; Thu, 30 Nov 2017 17:22:39 +0100 (CET) Received: from ogg.in.absolight.net (ogg.in.absolight.net [79.143.241.239]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by prod2.absolight.net (Postfix) with ESMTPSA id 23CB8BDD1E; Thu, 30 Nov 2017 17:22:39 +0100 (CET) From: Mathieu Arnold To: freebsd-ports@freebsd.org Cc: dvl@FreeBSD.org, freebsd-ports-announce@FreeBSD.org, linimon@FreeBSD.org Reply-To: freebsd-ports@freebsd.org References: <7c9a5e55-505f-9160-2886-56c451cdf9b1@FreeBSD.org> Organization: Absolight / The FreeBSD Foundation Message-ID: <2c693fb6-fa2a-c536-c131-a05c809286f7@FreeBSD.org> Date: Thu, 30 Nov 2017 17:22:37 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <7c9a5e55-505f-9160-2886-56c451cdf9b1@FreeBSD.org> Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="NhQwh75qWCTwMaqKmXMmbxk0HOK5B3NQ1" X-Mailman-Approved-At: Thu, 30 Nov 2017 17:59:17 +0000 Subject: Re: [FreeBSD-Ports-Announce] [HEADSUP] Flavors, and specifically, Python flavors landing today X-BeenThere: freebsd-ports-announce@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "Important news and instructions about the FreeBSD " ports collection" \[moderated\]" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Nov 2017 16:22:42 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --NhQwh75qWCTwMaqKmXMmbxk0HOK5B3NQ1 Content-Type: multipart/mixed; boundary="XOEubT79nNGpFdLtTUQLwQdvjIPxCumJl"; protected-headers="v1" From: Mathieu Arnold Reply-To: freebsd-ports@freebsd.org To: freebsd-ports@freebsd.org Cc: dvl@FreeBSD.org, freebsd-ports-announce@FreeBSD.org, linimon@FreeBSD.org Message-ID: <2c693fb6-fa2a-c536-c131-a05c809286f7@FreeBSD.org> Subject: Re: [HEADSUP] Flavors, and specifically, Python flavors landing today References: <7c9a5e55-505f-9160-2886-56c451cdf9b1@FreeBSD.org> In-Reply-To: <7c9a5e55-505f-9160-2886-56c451cdf9b1@FreeBSD.org> --XOEubT79nNGpFdLtTUQLwQdvjIPxCumJl Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-Language: fr On 30/11/2017 =C3=A0 16:32, Mathieu Arnold wrote a beautiful email and so= mething messed it up completely, so he's trying again.: Hi, TL;DR: =C2=A0 See https://wiki.freebsd.org/Ports/FlavorsAndSubPackages =C2=A0 Tool developers, see https://wiki.freebsd.org/Ports/FlavorsTools =C2=A0 All Python dependencies must have @${PY_FLAVOR} appended to them =C2=A0 Flavors are a way to have multiple variations of a port.=C2=A0 The port i= s built multiple times, with the variations.=C2=A0 To declare flavors, set the FL= AVORS variable to the flavors you want defined.=C2=A0 The first flavor will be = the default: =C2=A0=C2=A0=C2=A0 =C2=A0 FLAVORS=3D=C2=A0=C2=A0 flavor1 flavor2 =C2=A0=C2=A0=C2=A0 The flavors MUST be lowercase, and can contain [[:lower:][:digit:]_]. =C2=A0=C2=A0=C2=A0 Then, when building the port, pass the FLAVOR as an argument after make t= o select the flavor. =C2=A0=C2=A0=C2=A0 =C2=A0 $ make install FLAVOR=3Dflavor2 =C2=A0=C2=A0=C2=A0 In the port, you can then change the behavior depending on the value of t= he FLAVOR variable.=C2=A0 Note that the different flavors MUST have differen= t PKGNAMEs.=C2=A0 Be sure to guard against an empty FLAVOR variable by usin= g ${FLAVOR:U}: =C2=A0=C2=A0=C2=A0 =C2=A0 .if ${FLAVOR:U} =3D=3D flavor2 =C2=A0 PKGNAMESUFFIX=3D=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 -foo =C2=A0 OPTIONS_DEFAULT+=3D=C2=A0=C2=A0 FOO =C2=A0 .endif =C2=A0 Right now, adding FLAVORS to a port will need portmgr's approval, until w= e figure precise guidelines so that the number of packages does not grow exponentially. =C2=A0 =C2=A0 =3D=3D=3D Tools =3D=3D=3D =C2=A0=C2=A0=C2=A0 Flavor support for ports-mgmt/poudriere was added in 3.2, be sure to upgrade to the latest version. =C2=A0 =3D=3D=3D Helpers =3D=3D=3D =C2=A0 To help with flavored ports, helpers are available.=C2=A0 In these, repla= ce <*> with the flavor name. =C2=A0=C2=A0=C2=A0 *_PKGNAMEPREFIX *_PKGNAMESUFFIX *_PLIST *_DESCR will overwrite the variab= le. =C2=A0=C2=A0=C2=A0 *_CONFLICTS *_CONFLICTS_BUILD *_CONFLICTS_INSTALL *_PKG_DEPENDS *_EXTRACT_DEPENDS *_PATCH_DEPENDS *_FETCH_DEPENDS *_BUILD_DEPENDS *_LIB_DEPENDS *_RUN_DEPENDS *_TEST_DEPENDS will append to the variable. =C2=A0=C2=A0=C2=A0 For example: =C2=A0=C2=A0=C2=A0 =C2=A0 flavor2_PKGNAMESUFFIX=3D=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 -foo =C2=A0=C2=A0=C2=A0 can replace: =C2=A0=C2=A0=C2=A0 =C2=A0 .if ${FLAVOR:U} =3D=3D flavor2 =C2=A0 PKGNAMESUFFIX=3D=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 -foo =C2=A0 .endif =C2=A0 =C2=A0 =C2=A0 =3D=3D=3D Python =3D=3D=3D Ports using Python via USES=3Dpython are now flavored.=C2=A0 All the py3-= * ports have been removed and folded into their py-* master ports. =C2=A0=C2=A0=C2=A0 People using Poudriere and binary packages do not have to do anything. =C2=A0=C2=A0=C2=A0 For other people, to build the Python 3.6 version of, for example, databases/py-gdbm, you need to run: =C2=A0=C2=A0=C2=A0 =C2=A0 # make FLAVOR=3Dpy36 install =C2=A0 =C2=A0 Ports using USE_PYTHON=3Ddistutils are now flavored.=C2=A0 They will auto= matically flavors (py27, py34, py35, py36) depending on what versions they support.= There is also a USE_PYTHON=3Dflavors for ports that do not use distutils = but need FLAVORS to be set.=C2=A0 A USE_PYTHON=3Dnoflavors can be set if the = port is using distutils but flavors are not wanted. =C2=A0=C2=A0=C2=A0 A new USE_PYTHON=3Doptsuffix that adds PYTHON_PKGNAMESUFFIX has been adde= d to cope with Python ports that did not have the Python PKGNAMEPREFIX but = are flavored. =C2=A0=C2=A0=C2=A0 USES=3Dpython now also exports a PY_FLAVOR variable that contains the cur= rent python flavor.=C2=A0 It can be used in dependency lines when the port its= elf is not python flavored, for example, deskutils/calibre. =C2=A0=C2=A0=C2=A0 By default it will only generate flavors for the versions in PYTHON2_DEFA= ULT and PYTHON3_DEFAULT.=C2=A0 Define BUILD_ALL_PYTHON_FLAVORS in your make.c= onf to generate all possible flavors.=C2=A0 A port can set USE_PYTHON=3Dallflavo= rs to have all the flavors and not simply the default ones. =C2=A0 In all the ports with Python dependencies, the *_DEPENDS entries MUST end= with the flavor so that the framework knows which to build/use.=C2=A0 Thi= s is done by appending '@${PY_FLAVOR}' after the origin (or @${FLAVOR} if in a Pyth= on module with Python flavors, as the content will be the same).=C2=A0 For e= xample: =C2=A0 RUN_DEPENDS=3D=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ${PYTHON_= PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR} --=20 Mathieu Arnold --XOEubT79nNGpFdLtTUQLwQdvjIPxCumJl-- --NhQwh75qWCTwMaqKmXMmbxk0HOK5B3NQ1 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQJ8BAEBCgBmBQJaIDBOXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQzQUI2OTc4OUQyRUQxMjEwNjQ0MEJBNUIz QTQ1MTZGMzUxODNDRTQ4AAoJEDpFFvNRg85IZZsQAJsWvCsCho+lETWzSsBjiVIj hRq9Jp6dnA7kScA9+/PqT4Fvz991b3SukB2xlNIOeywSd3YCgh8KTYrtN4te5Tr9 7qYzDnkup7kxFpXGQLkp0gGujVNWhcNyVnnHEJTYOixCZ4bpqUdnyGOWl1wlKu7W hctuKgeABYPLxDdnZXaZ7Q00Li/JWgwHsRsmN37MrkuJANK1RF424J55PtuVvSXS rMG9js29xSrhXmR4WN+NKdaPcvtHAhkkCOJ+ll1cwbS0lZqHcQC7SRWDbCQpG3/j Gz99aZjTfF+1F74P88UGwF01BucTtkeDVYrVoNQHAzUfEorH/G5Z1Rvy61m2duvr dAS+Uvun+3/OjGMpWdo+6JEXV9x5RNneZe7meBwQcbFTJg+qUytU7YuhE4ogiBxS BNe2LsMFZszjHVW2ki92n/XqJ+yy0uB7EUb191uMQKaWqOunKal+kwlmjr+AUFY/ n8qOH2TuIW+JqiFcdw4YxC6Wjq89HR4usxHXa1oiaEmwO9AId+F/DyVQLj4nIRWK L4EFbsjnQ3/XfmLzsEwzRryeSPdNw+9TbLO1p0ct94uPps3Cwg207XWAJF2I39mC bd7IPOsGR+O6MDnYRy+w4KBBNbDfxXhTGmyHKRB+HPd0NQBQONxzcM+drx29xwYD y+A2mJy8iF5QKh6xAYZW =apQe -----END PGP SIGNATURE----- --NhQwh75qWCTwMaqKmXMmbxk0HOK5B3NQ1--