From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Thompson, David" Subject: Re: [PATCHES] import: pypi: Move generally useful procedures to utils module. Date: Mon, 17 Aug 2015 22:37:52 -0400 Message-ID: References: <878u9allll.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a11392c9a0a5b02051d8ccee7 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:48963) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZRWmj-0000Gz-PE for guix-devel@gnu.org; Mon, 17 Aug 2015 22:37:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZRWmf-0007MO-RW for guix-devel@gnu.org; Mon, 17 Aug 2015 22:37:57 -0400 Received: from mail-yk0-f180.google.com ([209.85.160.180]:34578) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZRWmf-0007LS-Mm for guix-devel@gnu.org; Mon, 17 Aug 2015 22:37:53 -0400 Received: by ykdt205 with SMTP id t205so145839754ykd.1 for ; Mon, 17 Aug 2015 19:37:53 -0700 (PDT) In-Reply-To: <878u9allll.fsf@gnu.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: guix-devel --001a11392c9a0a5b02051d8ccee7 Content-Type: text/plain; charset=UTF-8 On Sun, Aug 16, 2015 at 10:01 PM, David Thompson wrote: > Building off of the new and improved Ruby build system, here are two > patches that add a handy RubyGems importer. Here's an updated patch that uses the hex encoded SHAs on rubygems.org rather than downloading the source gem and computing the hash locally. - Dave --001a11392c9a0a5b02051d8ccee7 Content-Type: text/x-patch; charset=UTF-8; name="0001-import-Add-Ruby-gem-importer.patch" Content-Disposition: attachment; filename="0001-import-Add-Ruby-gem-importer.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_idgqq1aq2 RnJvbSBkMzcwMDg2ZDVlMWM1ODc4MTEwZDBjYzRjZDE4ODRmNjAxNTQ1YWNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBUaG9tcHNvbiA8ZHRob21wc29uMkB3b3JjZXN0ZXIu ZWR1PgpEYXRlOiBTdW4sIDE2IEF1ZyAyMDE1IDIxOjE1OjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRD SF0gaW1wb3J0OiBBZGQgUnVieSBnZW0gaW1wb3J0ZXIuCgoqIGdudS9zY3JpcHRzL2ltcG9ydC5z Y20gKGltcG9ydGVycyk6IEFkZCAiZ2VtIi4KKiBnbnUvaW1wb3J0L2dlbS5zY206IE5ldyBmaWxl LgoqIGdudS9zY3JpcHRzL2ltcG9ydC9nZW0uc2NtOiBOZXcgZmlsZS4KKiBNYWtlZmlsZS5hbSAo TU9EVUxFUyk6IEFkZCB0aGVtLgotLS0KIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICB8ICAg MyArLQogZ3VpeC9pbXBvcnQvZ2VtLnNjbSAgICAgICAgIHwgMTMxICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBndWl4L3NjcmlwdHMvaW1wb3J0LnNjbSAgICAg fCAgIDIgKy0KIGd1aXgvc2NyaXB0cy9pbXBvcnQvZ2VtLnNjbSB8ICA5MSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMjI1IGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ3VpeC9pbXBvcnQvZ2VtLnNjbQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGd1aXgvc2NyaXB0cy9pbXBvcnQvZ2VtLnNjbQoKZGlmZiAtLWdpdCBh L01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KaW5kZXggYWRhNGNiZS4uZjkyMDNlYyAxMDA2NDQK LS0tIGEvTWFrZWZpbGUuYW0KKysrIGIvTWFrZWZpbGUuYW0KQEAgLTIxMyw3ICsyMTMsOCBAQCBN T0RVTEVTICs9CQkJCQlcCiAgIGd1aXgvaW1wb3J0L3B5cGkuc2NtCQkJCVwKICAgZ3VpeC9zY3Jp cHRzL2ltcG9ydC9weXBpLnNjbQkJCVwKICAgZ3VpeC9pbXBvcnQvY3Bhbi5zY20JCQkJXAotICBn dWl4L3NjcmlwdHMvaW1wb3J0L2NwYW4uc2NtCisgIGd1aXgvc2NyaXB0cy9pbXBvcnQvZ2VtLnNj bQkJCVwKKyAgZ3VpeC9pbXBvcnQvZ2VtLnNjbQogCiBTQ01fVEVTVFMgKz0gCQkJCQlcCiAgIHRl c3RzL3B5cGkuc2NtCQkJCVwKZGlmZiAtLWdpdCBhL2d1aXgvaW1wb3J0L2dlbS5zY20gYi9ndWl4 L2ltcG9ydC9nZW0uc2NtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMjhk MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ndWl4L2ltcG9ydC9nZW0uc2NtCkBAIC0wLDAgKzEsMTMx IEBACis7OzsgR05VIEd1aXggLS0tIEZ1bmN0aW9uYWwgcGFja2FnZSBtYW5hZ2VtZW50IGZvciBH TlUKKzs7OyBDb3B5cmlnaHQgwqkgMjAxNSBEYXZpZCBUaG9tcHNvbiA8ZGF2ZXRAZ251Lm9yZz4K Kzs7OworOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4LgorOzs7Cis7OzsgR05VIEd1 aXggaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eSBpdAorOzs7IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Cis7OzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0Cis7OzsgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorOzs7Cis7OzsgR05VIEd1aXggaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Cis7OzsgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzs7IE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7OyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzs7Cis7OzsgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKzs7OyBhbG9uZyB3aXRoIEdOVSBHdWl4LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorCisoZGVmaW5lLW1vZHVsZSAoZ3VpeCBpbXBvcnQgZ2VtKQor ICAjOnVzZS1tb2R1bGUgKGljZS05IG1hdGNoKQorICAjOnVzZS1tb2R1bGUgKGljZS05IHByZXR0 eS1wcmludCkKKyAgIzp1c2UtbW9kdWxlIChybnJzIGJ5dGV2ZWN0b3JzKQorICAjOnVzZS1tb2R1 bGUgKGpzb24pCisgICM6dXNlLW1vZHVsZSAod2ViIHVyaSkKKyAgIzp1c2UtbW9kdWxlIChndWl4 IGltcG9ydCB1dGlscykKKyAgIzp1c2UtbW9kdWxlIChndWl4IGltcG9ydCBqc29uKQorICAjOnVz ZS1tb2R1bGUgKGd1aXggcGFja2FnZXMpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBsaWNlbnNlcykK KyAgIzp1c2UtbW9kdWxlIChndWl4IGJhc2UzMikKKyAgIzpleHBvcnQgKGdlbS0+Z3VpeC1wYWNr YWdlKSkKKworKGRlZmluZSAocnVieWdlbXMtZmV0Y2ggbmFtZSkKKyAgIlJldHVybiBhbiBhbGlz dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgUnVieUdlbXMgbWV0YWRhdGEgZm9yIHRoZSBwYWNrYWdl IE5BTUUsCitvciAjZiBvbiBmYWlsdXJlLiIKKyAgKGpzb24tZmV0Y2gKKyAgIChzdHJpbmctYXBw ZW5kICJodHRwczovL3J1YnlnZW1zLm9yZy9hcGkvdjEvZ2Vtcy8iIG5hbWUgIi5qc29uIikpKQor CisoZGVmaW5lIChydWJ5LXBhY2thZ2UtbmFtZSBuYW1lKQorICAiR2l2ZW4gdGhlIE5BTUUgb2Yg YSBwYWNrYWdlIG9uIFJ1YnlHZW1zLCByZXR1cm4gYSBHdWl4LWNvbXBsaWFudCBuYW1lIGZvcgor dGhlIHBhY2thZ2UuIgorICAoaWYgKHN0cmluZy1wcmVmaXg/ICJydWJ5LSIgbmFtZSkKKyAgICAg IChzbmFrZS1jYXNlIG5hbWUpCisgICAgICAoc3RyaW5nLWFwcGVuZCAicnVieS0iIChzbmFrZS1j YXNlIG5hbWUpKSkpCisKKyhkZWZpbmUgKGhleC1zdHJpbmctPmJ5dGV2ZWN0b3Igc3RyKQorICAi Q29udmVydCB0aGUgaGV4YWRlY2ltYWwgZW5jb2RlZCBzdHJpbmcgU1RSIHRvIGEgYnl0ZXZlY3Rv ci4iCisgIChkZWZpbmUgaGV4LWNoYXItPmludAorICAgIChtYXRjaC1sYW1iZGEKKyAgICAgKCNc MCAwKQorICAgICAoI1wxIDEpCisgICAgICgjXDIgMikKKyAgICAgKCNcMyAzKQorICAgICAoI1w0 IDQpCisgICAgICgjXDUgNSkKKyAgICAgKCNcNiA2KQorICAgICAoI1w3IDcpCisgICAgICgjXDgg OCkKKyAgICAgKCNcOSA5KQorICAgICAoI1xhIDEwKQorICAgICAoI1xiIDExKQorICAgICAoI1xj IDEyKQorICAgICAoI1xkIDEzKQorICAgICAoI1xlIDE0KQorICAgICAoI1xmIDE1KSkpCisKKyAg KGRlZmluZSAocmVhZC1ieXRlIGkpCisgICAgKGxldCAoKGogKCogMiBpKSkpCisgICAgICAoKyAo aGV4LWNoYXItPmludCAoc3RyaW5nLXJlZiBzdHIgKDErIGopKSkKKyAgICAgICAgICgqIChoZXgt Y2hhci0+aW50IChzdHJpbmctcmVmIHN0ciBqKSkgMTYpKSkpCisKKyAgKGxldCogKChsZW4gKC8g KHN0cmluZy1sZW5ndGggc3RyKSAyKSkKKyAgICAgICAgIChidiAgKG1ha2UtYnl0ZXZlY3RvciBs ZW4pKSkKKyAgICAobGV0IGxvb3AgKChpIDApKQorICAgICAgKGlmICg9IGkgbGVuKQorICAgICAg ICAgIGJ2CisgICAgICAgICAgKGJlZ2luCisgICAgICAgICAgICAoYnl0ZXZlY3Rvci11OC1zZXQh IGJ2IGkgKHJlYWQtYnl0ZSBpKSkKKyAgICAgICAgICAgIChsb29wICgxKyBpKSkpKSkpKQorCiso ZGVmaW5lIChtYWtlLWdlbS1zZXhwIG5hbWUgdmVyc2lvbiBoYXNoIGhvbWUtcGFnZSBkZXNjcmlw dGlvbgorICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgbGljZW5zZXMpCisgICJS ZXR1cm4gdGhlIGBwYWNrYWdlJyBzLWV4cHJlc3Npb24gZm9yIGEgUnVieSBwYWNrYWdlIHdpdGgg dGhlIGdpdmVuIE5BTUUsCitWRVJTSU9OLCBIQVNILCBIT01FLVBBR0UsIERFU0NSSVBUSU9OLCBE RVBFTkRFTkNJRVMsIGFuZCBMSUNFTlNFUy4iCisgIGAocGFja2FnZQorICAgICAobmFtZSAsKHJ1 YnktcGFja2FnZS1uYW1lIG5hbWUpKQorICAgICAodmVyc2lvbiAsdmVyc2lvbikKKyAgICAgKHNv dXJjZSAob3JpZ2luCisgICAgICAgICAgICAgICAobWV0aG9kIHVybC1mZXRjaCkKKyAgICAgICAg ICAgICAgICh1cmkgKHJ1YnlnZW1zLXVyaSAsbmFtZSB2ZXJzaW9uKSkKKyAgICAgICAgICAgICAg IChzaGEyNTYKKyAgICAgICAgICAgICAgICAoYmFzZTMyCisgICAgICAgICAgICAgICAgICwoYnl0 ZXZlY3Rvci0+bml4LWJhc2UzMi1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAoaGV4LXN0cmlu Zy0+Ynl0ZXZlY3RvciBoYXNoKSkpKSkpCisgICAgIChidWlsZC1zeXN0ZW0gcnVieS1idWlsZC1z eXN0ZW0pCisgICAgICxAKGlmIChudWxsPyBkZXBlbmRlbmNpZXMpCisgICAgICAgICAgICcoKQor ICAgICAgICAgICBgKChwcm9wYWdhdGVkLWlucHV0cworICAgICAgICAgICAgICAoLCdxdWFzaXF1 b3RlCisgICAgICAgICAgICAgICAsKG1hcCAobGFtYmRhIChuYW1lKQorICAgICAgICAgICAgICAg ICAgICAgICBgKCxuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgKCwndW5xdW90ZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAsKHN0cmluZy0+c3ltYm9sIG5hbWUpKSkpCisgICAgICAg ICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMpKSkpKQorICAgICAoc3lub3BzaXMgLGRlc2NyaXB0 aW9uKSAgICA7IG5vdGhpbmcgYmV0dGVyIHRvIHVzZQorICAgICAoZGVzY3JpcHRpb24gLGRlc2Ny aXB0aW9uKQorICAgICAoaG9tZS1wYWdlICxob21lLXBhZ2UpCisgICAgIChsaWNlbnNlICwobWF0 Y2ggbGljZW5zZXMKKyAgICAgICAgICAgICAgICAgKChsaWNlbnNlKSAobGljZW5zZS0+c3ltYm9s IGxpY2Vuc2UpKQorICAgICAgICAgICAgICAgICAoXyAobWFwIGxpY2Vuc2UtPnN5bWJvbCBsaWNl bnNlcykpKSkpKQorCisoZGVmaW5lKiAoZ2VtLT5ndWl4LXBhY2thZ2UgcGFja2FnZS1uYW1lICM6 b3B0aW9uYWwgdmVyc2lvbikKKyAgIkZldGNoIHRoZSBtZXRhZGF0YSBmb3IgUEFDS0FHRS1OQU1F IGZyb20gcnVieWdlbXMub3JnLCBhbmQgcmV0dXJuIHRoZQorYHBhY2thZ2UnIHMtZXhwcmVzc2lv biBjb3JyZXNwb25kaW5nIHRvIHRoYXQgcGFja2FnZSwgb3IgI2Ygb24gZmFpbHVyZS4iCisgIChs ZXQgKChwYWNrYWdlIChydWJ5Z2Vtcy1mZXRjaCBwYWNrYWdlLW5hbWUpKSkKKyAgICAoYW5kIHBh Y2thZ2UKKyAgICAgICAgIChsZXQgKChuYW1lICAgICAgICAgKGFzc29jLXJlZiBwYWNrYWdlICJu YW1lIikpCisgICAgICAgICAgICAgICAodmVyc2lvbiAgICAgIChhc3NvYy1yZWYgcGFja2FnZSAi dmVyc2lvbiIpKQorICAgICAgICAgICAgICAgKGhhc2ggICAgICAgICAoYXNzb2MtcmVmIHBhY2th Z2UgInNoYSIpKQorICAgICAgICAgICAgICAgKGRlc2NyaXB0aW9uICAoYXNzb2MtcmVmIHBhY2th Z2UgImluZm8iKSkKKyAgICAgICAgICAgICAgIChob21lLXBhZ2UgICAgKGFzc29jLXJlZiBwYWNr YWdlICJob21lcGFnZV91cmkiKSkKKyAgICAgICAgICAgICAgIChkZXBlbmRlbmNpZXMgKG1hcCAo bGFtYmRhIChkZXApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgo bmFtZSAoYXNzb2MtcmVmIGRlcCAibmFtZSIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGlmIChzdHJpbmc9PyBuYW1lICJidW5kbGVyIikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJidW5kbGVyIiA7IHNwZWNpYWwgY2FzZSwgbm8g cHJlZml4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnVieS1w YWNrYWdlLW5hbWUgbmFtZSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo YXNzb2MtcmVmKiBwYWNrYWdlICJkZXBlbmRlbmNpZXMiCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInJ1bnRpbWUiKSkpCisgICAgICAgICAgICAgICAobGlj ZW5zZXMgICAgIChtYXAgc3RyaW5nLT5saWNlbnNlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGFzc29jLXJlZiBwYWNrYWdlICJsaWNlbnNlcyIpKSkpCisgICAgICAgICAgICht YWtlLWdlbS1zZXhwIG5hbWUgdmVyc2lvbiBoYXNoIGhvbWUtcGFnZQorICAgICAgICAgICAgICAg ICAgICAgICAgICBkZXNjcmlwdGlvbiBkZXBlbmRlbmNpZXMgbGljZW5zZXMpKSkpKQpkaWZmIC0t Z2l0IGEvZ3VpeC9zY3JpcHRzL2ltcG9ydC5zY20gYi9ndWl4L3NjcmlwdHMvaW1wb3J0LnNjbQpp bmRleCBkMGJkZWMxLi42Y2Q3NjJhIDEwMDY0NAotLS0gYS9ndWl4L3NjcmlwdHMvaW1wb3J0LnNj bQorKysgYi9ndWl4L3NjcmlwdHMvaW1wb3J0LnNjbQpAQCAtNzMsNyArNzMsNyBAQCByYXRoZXIg dGhhbiBcXG4uIgogOzs7IEVudHJ5IHBvaW50LgogOzs7CiAKLShkZWZpbmUgaW1wb3J0ZXJzICco ImdudSIgIm5peCIgInB5cGkiICJjcGFuIiAiaGFja2FnZSIgImVscGEiKSkKKyhkZWZpbmUgaW1w b3J0ZXJzICcoImdudSIgIm5peCIgInB5cGkiICJjcGFuIiAiaGFja2FnZSIgImVscGEiICJnZW0i KSkKIAogKGRlZmluZSAocmVzb2x2ZS1pbXBvcnRlciBuYW1lKQogICAobGV0ICgobW9kdWxlIChy ZXNvbHZlLWludGVyZmFjZQpkaWZmIC0tZ2l0IGEvZ3VpeC9zY3JpcHRzL2ltcG9ydC9nZW0uc2Nt IGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC9nZW0uc2NtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjlmODA5NGYKLS0tIC9kZXYvbnVsbAorKysgYi9ndWl4L3NjcmlwdHMvaW1wb3J0 L2dlbS5zY20KQEAgLTAsMCArMSw5MSBAQAorOzs7IEdOVSBHdWl4IC0tLSBGdW5jdGlvbmFsIHBh Y2thZ2UgbWFuYWdlbWVudCBmb3IgR05VCis7OzsgQ29weXJpZ2h0IMKpIDIwMTUgRGF2aWQgVGhv bXBzb24gPGRhdmV0QGdudS5vcmc+Cis7OzsKKzs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUg R3VpeC4KKzs7OworOzs7IEdOVSBHdWl4IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKzs7OyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorOzs7IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChh dAorOzs7IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7OworOzs7IEdOVSBHdWl4 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAor Ozs7IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKzs7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCis7OzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKzs7OworOzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7OzsgYWxvbmcgd2l0aCBHTlUgR3VpeC4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworKGRlZmluZS1tb2R1 bGUgKGd1aXggc2NyaXB0cyBpbXBvcnQgZ2VtKQorICAjOnVzZS1tb2R1bGUgKGd1aXggdWkpCisg ICM6dXNlLW1vZHVsZSAoZ3VpeCB1dGlscykKKyAgIzp1c2UtbW9kdWxlIChndWl4IGltcG9ydCBn ZW0pCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBzY3JpcHRzIGltcG9ydCkKKyAgIzp1c2UtbW9kdWxl IChzcmZpIHNyZmktMSkKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMTEpCisgICM6dXNlLW1v ZHVsZSAoc3JmaSBzcmZpLTM3KQorICAjOnVzZS1tb2R1bGUgKGljZS05IG1hdGNoKQorICAjOnVz ZS1tb2R1bGUgKGljZS05IGZvcm1hdCkKKyAgIzpleHBvcnQgKGd1aXgtaW1wb3J0LWdlbSkpCisK KwwKKzs7OworOzs7IENvbW1hbmQtbGluZSBvcHRpb25zLgorOzs7CisKKyhkZWZpbmUgJWRlZmF1 bHQtb3B0aW9ucworICAnKCkpCisKKyhkZWZpbmUgKHNob3ctaGVscCkKKyAgKGRpc3BsYXkgKF8g IlVzYWdlOiBndWl4IGltcG9ydCBnZW0gUEFDS0FHRS1OQU1FCitJbXBvcnQgYW5kIGNvbnZlcnQg dGhlIFJ1YnlHZW1zIHBhY2thZ2UgZm9yIFBBQ0tBR0UtTkFNRS5cbiIpKQorICAoZGlzcGxheSAo XyAiCisgIC1oLCAtLWhlbHAgICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQi KSkKKyAgKGRpc3BsYXkgKF8gIgorICAtViwgLS12ZXJzaW9uICAgICAgICAgIGRpc3BsYXkgdmVy c2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdCIpKQorICAobmV3bGluZSkKKyAgKHNob3ctYnVnLXJl cG9ydC1pbmZvcm1hdGlvbikpCisKKyhkZWZpbmUgJW9wdGlvbnMKKyAgOzsgU3BlY2lmaWNhdGlv biBvZiB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMuCisgIChjb25zKiAob3B0aW9uICcoI1xoICJo ZWxwIikgI2YgI2YKKyAgICAgICAgICAgICAgICAgKGxhbWJkYSBhcmdzCisgICAgICAgICAgICAg ICAgICAgKHNob3ctaGVscCkKKyAgICAgICAgICAgICAgICAgICAoZXhpdCAwKSkpCisgICAgICAg ICAob3B0aW9uICcoI1xWICJ2ZXJzaW9uIikgI2YgI2YKKyAgICAgICAgICAgICAgICAgKGxhbWJk YSBhcmdzCisgICAgICAgICAgICAgICAgICAgKHNob3ctdmVyc2lvbi1hbmQtZXhpdCAiZ3VpeCBp bXBvcnQgcHlwaSIpKSkKKyAgICAgICAgICVzdGFuZGFyZC1pbXBvcnQtb3B0aW9ucykpCisKKwwK Kzs7OworOzs7IEVudHJ5IHBvaW50LgorOzs7CisKKyhkZWZpbmUgKGd1aXgtaW1wb3J0LWdlbSAu IGFyZ3MpCisgIChkZWZpbmUgKHBhcnNlLW9wdGlvbnMpCisgICAgOzsgUmV0dXJuIHRoZSBhbGlz dCBvZiBvcHRpb24gdmFsdWVzLgorICAgIChhcmdzLWZvbGQqIGFyZ3MgJW9wdGlvbnMKKyAgICAg ICAgICAgICAgICAobGFtYmRhIChvcHQgbmFtZSBhcmcgcmVzdWx0KQorICAgICAgICAgICAgICAg ICAgKGxlYXZlIChfICJ+QTogdW5yZWNvZ25pemVkIG9wdGlvbn4lIikgbmFtZSkpCisgICAgICAg ICAgICAgICAgKGxhbWJkYSAoYXJnIHJlc3VsdCkKKyAgICAgICAgICAgICAgICAgIChhbGlzdC1j b25zICdhcmd1bWVudCBhcmcgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICAlZGVmYXVsdC1vcHRp b25zKSkKKworICAobGV0KiAoKG9wdHMgKHBhcnNlLW9wdGlvbnMpKQorICAgICAgICAgKGFyZ3Mg KGZpbHRlci1tYXAgKG1hdGNoLWxhbWJkYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgo J2FyZ3VtZW50IC4gdmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfICNmKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIChyZXZlcnNlIG9wdHMpKSkpCisgICAgKG1hdGNoIGFyZ3MKKyAgICAgICgocGFja2Fn ZS1uYW1lKQorICAgICAgIChsZXQgKChzZXhwIChnZW0tPmd1aXgtcGFja2FnZSBwYWNrYWdlLW5h bWUpKSkKKyAgICAgICAgICh1bmxlc3Mgc2V4cAorICAgICAgICAgICAobGVhdmUgKF8gImZhaWxl ZCB0byBkb3dubG9hZCBtZXRhLWRhdGEgZm9yIHBhY2thZ2UgJ35hJ34lIikKKyAgICAgICAgICAg ICAgICAgIHBhY2thZ2UtbmFtZSkpCisgICAgICAgICBzZXhwKSkKKyAgICAgICgoKQorICAgICAg IChsZWF2ZSAoXyAidG9vIGZldyBhcmd1bWVudHN+JSIpKSkKKyAgICAgICgobWFueSAuLi4pCisg ICAgICAgKGxlYXZlIChfICJ0b28gbWFueSBhcmd1bWVudHN+JSIpKSkpKSkKLS0gCjIuNC4zCgo= --001a11392c9a0a5b02051d8ccee7--