From mboxrd@z Thu Jan 1 00:00:00 1970 From: Federico Beffa Subject: Re: [PATCH 1/5] import: Add 'elpa' importer Date: Thu, 25 Jun 2015 20:33:05 +0200 Message-ID: References: <87wpyw6bjl.fsf@gmail.com> <87381gvmsc.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a113f9aa6bc38ae05195bda14 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57921) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z8BxW-0005nf-Uu for guix-devel@gnu.org; Thu, 25 Jun 2015 14:33:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z8BxS-0004lr-Px for guix-devel@gnu.org; Thu, 25 Jun 2015 14:33:10 -0400 In-Reply-To: <87381gvmsc.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: =?UTF-8?Q?Ludovic_Court=C3=A8s?= Cc: Guix-devel , Alex Kost --001a113f9aa6bc38ae05195bda14 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Thanks for the review! I've made the suggested changes, except for the comments below. On Wed, Jun 24, 2015 at 11:06 PM, Ludovic Court=C3=A8s wrote= : > Federico Beffa skribis: >> +Specific command-line options are: >> + >> +@table @code >> +@item --archive=3D@var{repo} >> +@itemx -a @var{repo} >> +@var{repo} identifies the archive repository from which to retrieve the >> +information. Currently the supported repositories and their identifier= s >> +are: >> +@itemize - >> +@item >> +@uref{"http://elpa.gnu.org/packages", GNU}, selected by the @code{gnu} >> +identifier. This is the default. >> + >> +@item >> +@uref{"http://stable.melpa.org/packages", MELPA-Stable}, selected by th= e >> +@code{melpa-stable} identifier. >> + >> +@item >> +@uref{"http://melpa.org/packages", MELPA}, selected by the @code{melpa} >> +identifier. >> +@end itemize > > Perhaps REPO could also be a URL, in addition to one of these identifiers= ? Yeah, perhaps later. >> +;; Fetch URL, store the content in a temporary file and call PROC with = that >> +;; file. >> +(define fetch-and-call-with-input-file >> + (memoize >> + (lambda* (url proc #:optional (err-msg "unavailable")) >> + (call-with-temporary-output-file >> + (lambda (temp port) >> + (or (and (url-fetch url temp) >> + (call-with-input-file temp proc)) >> + err-msg)))))) > > Make the comment a docstring below =E2=80=98lambda*=E2=80=99. > > I would call it =E2=80=98call-with-downloaded-file=E2=80=99 for instance.= But then > memoization should be moved elsewhere, because that=E2=80=99s not one wou= ld > expect from a procedure with this name. I've deleted memoization because it's not really helping in any way here. It was helpful for experimenting in the REPL... >> +(define (package-home-page alist) >> + "Extract the package home-page from ALIST." >> + (or (lookup-extra alist ':url) "unspecified")) > > Maybe use the =E2=80=98elpa-package=E2=80=99 prefix instead of =E2=80=98p= ackage=E2=80=99 for procedures > like this one that expect an ELPA-package-as-an-alist? 'elpa-package-home-page' is already taken by a field accessor of the record . So, I've left it alone. Thanks, Fede --001a113f9aa6bc38ae05195bda14 Content-Type: text/x-diff; charset=UTF-8; name="0001-import-Add-elpa-importer.patch" Content-Disposition: attachment; filename="0001-import-Add-elpa-importer.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ibc0fsbn0 RnJvbSA0ZDY3MjMzNTkzYTE2YmQyZDIxMzMwNDIwMmEzYzJlODdhZWQ3Nzk3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGZWRlcmljbyBCZWZmYSA8YmVmZmFAZmJlbmdpbmVlcmluZy5j aD4KRGF0ZTogVHVlLCAxNiBKdW4gMjAxNSAxMDo1MDowNiArMDIwMApTdWJqZWN0OiBbUEFUQ0gg MS81XSBpbXBvcnQ6IEFkZCAnZWxwYScgaW1wb3J0ZXIuCgoqIGd1aXgvaW1wb3J0L2VscGEuc2Nt OiBOZXcgZmlsZS4KKiBndWl4L3NjcmlwdHMvaW1wb3J0LnNjbTogQWRkICJlbHBhIiB0byAnaW1w b3J0ZXJzJy4KKiBndWl4L3NjcmlwdHMvaW1wb3J0L2VscGEuc2NtOiBOZXcgZmlsZS4KKiBNYWtl ZmlsZS5hbSAoTU9EVUxFUyk6IEFkZCAnZ3VpeC9pbXBvcnQvZWxwYS5zY20nIGFuZAogICdndWl4 L3NjcmlwdHMvaW1wb3J0L2VscGEuc2NtJy4KICAoU0NNX1RFU1RTKTogQWRkICd0ZXN0cy9lbHBh LnNjbScuCiogZG9jL2d1aXgudGV4aSAoSW52b2tpbmcgZ3VpeCBpbXBvcnQpOiBEb2N1bWVudCBp dC4KKiB0ZXN0cy9lbHBhLnNjbTogTmV3IGZpbGUuCi0tLQogTWFrZWZpbGUuYW0gICAgICAgICAg ICAgICAgICB8ICAgMyArCiBkb2MvZ3VpeC50ZXhpICAgICAgICAgICAgICAgIHwgIDI4ICsrKysr KwogZ3VpeC9pbXBvcnQvZWxwYS5zY20gICAgICAgICB8IDIzMCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiBndWl4L3NjcmlwdHMvaW1wb3J0LnNjbSAgICAgIHwg ICAyICstCiBndWl4L3NjcmlwdHMvaW1wb3J0L2VscGEuc2NtIHwgIDk4ICsrKysrKysrKysrKysr KysrKwogdGVzdHMvZWxwYS5zY20gICAgICAgICAgICAgICB8IDEwOSArKysrKysrKysrKysrKysr KysrKwogNiBmaWxlcyBjaGFuZ2VkLCA0NjkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGd1aXgvaW1wb3J0L2VscGEuc2NtCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ3VpeC9zY3JpcHRzL2ltcG9ydC9lbHBhLnNjbQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3Rz L2VscGEuc2NtCgpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQppbmRleCAy Yjg0NDY3Li5jMDI3ZmIzIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5hbQorKysgYi9NYWtlZmlsZS5h bQpAQCAtOTUsNiArOTUsNyBAQCBNT0RVTEVTID0JCQkJCVwKICAgZ3VpeC9pbXBvcnQvc25peC5z Y20JCQkJXAogICBndWl4L2ltcG9ydC9jYWJhbC5zY20JCQkJXAogICBndWl4L2ltcG9ydC9oYWNr YWdlLnNjbQkJCVwKKyAgZ3VpeC9pbXBvcnQvZWxwYS5zY20gICAJCQlcCiAgIGd1aXgvc2NyaXB0 cy9kb3dubG9hZC5zY20JCQlcCiAgIGd1aXgvc2NyaXB0cy9idWlsZC5zY20JCQlcCiAgIGd1aXgv c2NyaXB0cy9hcmNoaXZlLnNjbQkJCVwKQEAgLTExMSw2ICsxMTIsNyBAQCBNT0RVTEVTID0JCQkJ CVwKICAgZ3VpeC9zY3JpcHRzL2ltcG9ydC9nbnUuc2NtCQkJXAogICBndWl4L3NjcmlwdHMvaW1w b3J0L25peC5zY20JCQlcCiAgIGd1aXgvc2NyaXB0cy9pbXBvcnQvaGFja2FnZS5zY20JCVwKKyAg Z3VpeC9zY3JpcHRzL2ltcG9ydC9lbHBhLnNjbSAgCQlcCiAgIGd1aXgvc2NyaXB0cy9lbnZpcm9u bWVudC5zY20JCQlcCiAgIGd1aXgvc2NyaXB0cy9wdWJsaXNoLnNjbQkJCVwKICAgZ3VpeC5zY20J CQkJCVwKQEAgLTE4Miw2ICsxODQsNyBAQCBTQ01fVEVTVFMgPQkJCQkJXAogICB0ZXN0cy9wYWNr YWdlcy5zY20JCQkJXAogICB0ZXN0cy9zbml4LnNjbQkJCQlcCiAgIHRlc3RzL2hhY2thZ2Uuc2Nt CQkJCVwKKyAgdGVzdHMvZWxwYS5zY20JCQkJXAogICB0ZXN0cy9zdG9yZS5zY20JCQkJXAogICB0 ZXN0cy9tb25hZHMuc2NtCQkJCVwKICAgdGVzdHMvZ2V4cC5zY20JCQkJXApkaWZmIC0tZ2l0IGEv ZG9jL2d1aXgudGV4aSBiL2RvYy9ndWl4LnRleGkKaW5kZXggNDZkY2NiOC4uOWVmNjAyMSAxMDA2 NDQKLS0tIGEvZG9jL2d1aXgudGV4aQorKysgYi9kb2MvZ3VpeC50ZXhpCkBAIC0zNzcwLDYgKzM3 NzAsMzQgQEAgcGFja2FnZSBuYW1lIGJ5IGEgaHlwaGVuIGFuZCBhIHZlcnNpb24gbnVtYmVyIGFz IGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKIEBleGFtcGxlCiBndWl4IGltcG9ydCBoYWNrYWdl IG10bC0yLjEuMy4xCiBAZW5kIGV4YW1wbGUKKworQGl0ZW0gZWxwYQorQGNpbmRleCBlbHBhCitJ bXBvcnQgbWV0YS1kYXRhIGZyb20gYW4gRW1hY3MgTGlzcCBQYWNrYWdlIEFyY2hpdmUgKEVMUEEp IHBhY2thZ2UKK3JlcG9zaXRvcnkgKEBweHJlZntQYWNrYWdlcywsLCBlbWFjcywgVGhlIEdOVSBF bWFjcyBNYW51YWx9KS4KKworU3BlY2lmaWMgY29tbWFuZC1saW5lIG9wdGlvbnMgYXJlOgorCitA dGFibGUgQGNvZGUKK0BpdGVtIC0tYXJjaGl2ZT1AdmFye3JlcG99CitAaXRlbXggLWEgQHZhcnty ZXBvfQorQHZhcntyZXBvfSBpZGVudGlmaWVzIHRoZSBhcmNoaXZlIHJlcG9zaXRvcnkgZnJvbSB3 aGljaCB0byByZXRyaWV2ZSB0aGUKK2luZm9ybWF0aW9uLiAgQ3VycmVudGx5IHRoZSBzdXBwb3J0 ZWQgcmVwb3NpdG9yaWVzIGFuZCB0aGVpciBpZGVudGlmaWVycworYXJlOgorQGl0ZW1pemUgLQor QGl0ZW0KK0B1cmVmeyJodHRwOi8vZWxwYS5nbnUub3JnL3BhY2thZ2VzIiwgR05VfSwgc2VsZWN0 ZWQgYnkgdGhlIEBjb2Rle2dudX0KK2lkZW50aWZpZXIuICBUaGlzIGlzIHRoZSBkZWZhdWx0Lgor CitAaXRlbQorQHVyZWZ7Imh0dHA6Ly9zdGFibGUubWVscGEub3JnL3BhY2thZ2VzIiwgTUVMUEEt U3RhYmxlfSwgc2VsZWN0ZWQgYnkgdGhlCitAY29kZXttZWxwYS1zdGFibGV9IGlkZW50aWZpZXIu CisKK0BpdGVtCitAdXJlZnsiaHR0cDovL21lbHBhLm9yZy9wYWNrYWdlcyIsIE1FTFBBfSwgc2Vs ZWN0ZWQgYnkgdGhlIEBjb2Rle21lbHBhfQoraWRlbnRpZmllci4KK0BlbmQgaXRlbWl6ZQorQGVu ZCB0YWJsZQogQGVuZCB0YWJsZQogCiBUaGUgc3RydWN0dXJlIG9mIHRoZSBAY29tbWFuZHtndWl4 IGltcG9ydH0gY29kZSBpcyBtb2R1bGFyLiAgSXQgd291bGQgYmUKZGlmZiAtLWdpdCBhL2d1aXgv aW1wb3J0L2VscGEuc2NtIGIvZ3VpeC9pbXBvcnQvZWxwYS5zY20KbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uZThiZjQ3ZAotLS0gL2Rldi9udWxsCisrKyBiL2d1aXgvaW1wb3J0 L2VscGEuc2NtCkBAIC0wLDAgKzEsMjMwIEBACis7OzsgR05VIEd1aXggLS0tIEZ1bmN0aW9uYWwg cGFja2FnZSBtYW5hZ2VtZW50IGZvciBHTlUKKzs7OyBDb3B5cmlnaHQgwqkgMjAxNSBGZWRlcmlj byBCZWZmYSA8YmVmZmFAZmJlbmdpbmVlcmluZy5jaD4KKzs7OworOzs7IFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEdOVSBHdWl4LgorOzs7Cis7OzsgR05VIEd1aXggaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorOzs7IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7Ozsg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0Cis7OzsgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorOzs7Cis7 OzsgR05VIEd1aXggaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwgYnV0Cis7OzsgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorOzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorOzs7Cis7OzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzs7OyBhbG9uZyB3aXRoIEdO VSBHdWl4LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCiso ZGVmaW5lLW1vZHVsZSAoZ3VpeCBpbXBvcnQgZWxwYSkKKyAgIzp1c2UtbW9kdWxlIChpY2UtOSBt YXRjaCkKKyAgIzp1c2UtbW9kdWxlIChpY2UtOSByZGVsaW0pCisgICM6dXNlLW1vZHVsZSAoc3Jm aSBzcmZpLTEpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTkpCisgICM6dXNlLW1vZHVsZSAo c3JmaSBzcmZpLTkgZ251KQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xMSkKKyAgIzp1c2Ut bW9kdWxlIChzcmZpIHNyZmktMjYpCisgICM6dXNlLW1vZHVsZSAoKGd1aXggZG93bmxvYWQpICM6 c2VsZWN0IChkb3dubG9hZC10by1zdG9yZSkpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBpbXBvcnQg dXRpbHMpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBzdG9yZSkKKyAgIzp1c2UtbW9kdWxlIChndWl4 IGhhc2gpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBiYXNlMzIpCisgICM6dXNlLW1vZHVsZSAoKGd1 aXggdXRpbHMpICM6c2VsZWN0IChjYWxsLXdpdGgtdGVtcG9yYXJ5LW91dHB1dC1maWxlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vaXplKSkKKyAgIzpleHBvcnQg KGVscGEtPmd1aXgtcGFja2FnZSkpCisKKyhkZWZpbmUgKGVscGEtZGVwZW5kZW5jaWVzLT5uYW1l cyBkZXBzKQorICAiQ29udmVydCBERVBTLCBhIGxpc3Qgb2Ygc3ltYm9sL3ZlcnNpb24gcGFpcnMg w6AgbGEgRUxQQSwgdG8gYSBsaXN0IG9mCitwYWNrYWdlIG5hbWVzIGFzIHN0cmluZ3MiCisgICht YXRjaCBkZXBzCisgICAgKCgobmFtZXMgXyAuLi4pIC4uLikKKyAgICAgKG1hcCBzeW1ib2wtPnN0 cmluZyBuYW1lcykpKSkKKworKGRlZmluZSBlbWFjcy1zdGFuZGFyZC1saWJyYXJ5PworICAobGV0 ICgobGlicyAnKCJlbWFjcyIgImNsLWxpYiIpKSkKKyAgICAobGFtYmRhIChsaWIpCisgICAgICAi UmV0dXJuIHRydWUgaWYgTElCIGlzIHBhcnQgb2YgRW1hY3MgaXRzZWxmLiAgVGhlIGNoZWNrIGlz IG5vdAorZXhoYXVzdGl2ZSBhbmQgb25seSBhdHRlbXB0cyB0byByZWNvZ25pemUgYSBzdWJzZXQg b2YgcGFja2FnZXMgd2hpY2ggaW4gdGhlCitwYXN0IHdlcmUgZGlzdHJpYnV0ZWQgc2VwYXJhdGVs eSBmcm9tIEVtYWNzLiIKKyAgICAgIChtZW1iZXIgbGliIGxpYnMpKSkpCisKKyhkZWZpbmUgKGZp bHRlci1kZXBlbmRlbmNpZXMgbmFtZXMpCisgICJSZW1vdmUgdGhlIHBhY2thZ2UgbmFtZXMgaW5j bHVkZWQgd2l0aCBFbWFjcyBmcm9tIHRoZSBsaXN0IG9mCitOQU1FUyAoc3RyaW5ncykuIgorICAo ZmlsdGVyIGVtYWNzLXN0YW5kYXJkLWxpYnJhcnk/IG5hbWVzKSkKKworKGRlZmluZSAoZWxwYS1u YW1lLT5wYWNrYWdlLW5hbWUgbmFtZSkKKyAgIkdpdmVuIHRoZSBOQU1FIG9mIGFuIEVtYWNzIHBh Y2thZ2UsIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBHdWl4IG5hbWUuIgorICAobGV0ICgocGFj a2FnZS1uYW1lLXByZWZpeCAiZW1hY3MtIikpCisgICAgKGlmIChzdHJpbmctcHJlZml4PyBwYWNr YWdlLW5hbWUtcHJlZml4IG5hbWUpCisgICAgICAgIChzdHJpbmctZG93bmNhc2UgbmFtZSkKKyAg ICAgICAgKHN0cmluZy1hcHBlbmQgcGFja2FnZS1uYW1lLXByZWZpeCAoc3RyaW5nLWRvd25jYXNl IG5hbWUpKSkpKQorCisoZGVmaW5lKiAoZWxwYS11cmwgIzpvcHRpb25hbCAocmVwbyAnZ251KSkK KyAgIlJldHJ1biB0aGUgVVJMIG9mIFJFUE8uIgorICAobGV0ICgoZWxwYS1hcmNoaXZlcworICAg ICAgICAgJygoZ251IC4gImh0dHA6Ly9lbHBhLmdudS5vcmcvcGFja2FnZXMiKQorICAgICAgICAg ICAobWVscGEtc3RhYmxlIC4gImh0dHA6Ly9zdGFibGUubWVscGEub3JnL3BhY2thZ2VzIikKKyAg ICAgICAgICAgKG1lbHBhIC4gImh0dHA6Ly9tZWxwYS5vcmcvcGFja2FnZXMiKSkpKQorICAgIChh c3NxLXJlZiBlbHBhLWFyY2hpdmVzIHJlcG8pKSkKKworKGRlZmluZSogKGVscGEtZmV0Y2gtYXJj aGl2ZSAjOm9wdGlvbmFsIChyZXBvICdnbnUpKQorICAiUmV0cml2ZSB0aGUgYXJjaGl2ZSB3aXRo IHRoZSBsaXN0IG9mIHBhY2thZ2VzIGF2YWlsYWJsZSBmcm9tIFJFUE8uIgorICAobGV0ICgodXJs IChhbmQ9PiAoZWxwYS11cmwgcmVwbykKKyAgICAgICAgICAgICAgICAgICAgKGN1dCBzdHJpbmct YXBwZW5kIDw+ICIvYXJjaGl2ZS1jb250ZW50cyIpKSkpCisgICAgKGlmIHVybAorICAgICAgICAo Y2FsbC13aXRoLWRvd25sb2FkZWQtZmlsZSB1cmwgcmVhZCkKKyAgICAgICAgKGVycm9yICJDdXJy ZW50bHkgbm90IHN1cHBvcnRlZDoiIHJlcG8pKSkpCisKKyhkZWZpbmUqIChjYWxsLXdpdGgtZG93 bmxvYWRlZC1maWxlIHVybCBwcm9jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICM6b3B0aW9uYWwgKGVyci1tc2cgInVuYXZhaWxhYmxlIikpCisgICJGZXRjaCBVUkws IHN0b3JlIHRoZSBjb250ZW50IGluIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIGNhbGwgUFJPQyB3aXRo IHRoYXQKK2ZpbGUuICBSZXR1cm5zIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBQUk9DLiIKKyAgICAg KGNhbGwtd2l0aC10ZW1wb3Jhcnktb3V0cHV0LWZpbGUKKyAgICAgIChsYW1iZGEgKHRlbXAgcG9y dCkKKyAgICAgICAgKG9yIChhbmQgKHVybC1mZXRjaCB1cmwgdGVtcCkKKyAgICAgICAgICAgICAg ICAgKGNhbGwtd2l0aC1pbnB1dC1maWxlIHRlbXAgcHJvYykpCisgICAgICAgICAgICAoZXJyb3Ig ZXJyLW1zZyB1cmwpKSkpKQorCisoZGVmaW5lIChpcy1lbHBhLXBhY2thZ2U/IG5hbWUgZWxwYS1w a2ctc3BlYykKKyAgIlJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgTkFNRSBjb3JyZXNwb25kcyB0 byB0aGUgbmFtZSBvZiB0aGUgcGFja2FnZQorZGVmaW5lZCBieSBFTFBBLVBLRy1TUEVDLCBhIHBh Y2thZ2Ugc3BlY2lmaWNhdGlvbiBhcyBpbiBhbiBhcmNoaXZlCisnYXJjaGl2ZS1jb250ZW50cycg ZmlsZS4iCisgIChlcT8gKGZpcnN0IGVscGEtcGtnLXNwZWMpIChzdHJpbmctPnN5bWJvbCBuYW1l KSkpCisKKyhkZWZpbmUqIChlbHBhLXBhY2thZ2UtaW5mbyBuYW1lICM6b3B0aW9uYWwgKHJlcG8g J2dudSkpCisgICJFeHRyYWN0IHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFja2FnZSBOQU1F IGZyb20gdGhlIHBhY2thZ2UgYXJjaGlldmUgb2YKK1JFUE8uIgorICAobGV0KiAoKGFyY2hpdmUg KGVscGEtZmV0Y2gtYXJjaGl2ZSByZXBvKSkKKyAgICAgICAgIChwa2dzIChtYXRjaCBhcmNoaXZl ICgodmVyc2lvbiBwa2ctc3BlYyAuLi4pIHBrZy1zcGVjKSkpCisgICAgICAgICAoaW5mbyAoZmls dGVyIChjdXQgaXMtZWxwYS1wYWNrYWdlPyBuYW1lIDw+KSBwa2dzKSkpCisgICAgKGlmIChwYWly PyBpbmZvKSAoZmlyc3QgaW5mbykgI2YpKSkKKworOzsgT2JqZWN0IHRvIHN0b3JlIGluZm9ybWF0 aW9uIGFib3V0IGFuIEVMUEEgcGFja2FnZS4KKyhkZWZpbmUtcmVjb3JkLXR5cGUgPGVscGEtcGFj a2FnZT4KKyAgKG1ha2UtZWxwYS1wYWNrYWdlIG5hbWUgdmVyc2lvbiBpbnB1dHMgc3lub3BzaXMg a2luZCBob21lLXBhZ2UgZGVzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS11 cmwpCisgIGVscGEtcGFja2FnZT8KKyAgKG5hbWUgZWxwYS1wYWNrYWdlLW5hbWUpCisgICh2ZXJz aW9uIGVscGEtcGFja2FnZS12ZXJzaW9uKQorICAoaW5wdXRzIGVscGEtcGFja2FnZS1pbnB1dHMp CisgIChzeW5vcHNpcyBlbHBhLXBhY2thZ2Utc3lub3BzaXMpCisgIChraW5kIGVscGEtcGFja2Fn ZS1raW5kKQorICAoaG9tZS1wYWdlIGVscGEtcGFja2FnZS1ob21lLXBhZ2UpCisgIChkZXNjcmlw dGlvbiBlbHBhLXBhY2thZ2UtZGVzY3JpcHRpb24pCisgIChzb3VyY2UtdXJsIGVscGEtcGFja2Fn ZS1zb3VyY2UtdXJsKSkKKworKHNldC1yZWNvcmQtdHlwZS1wcmludGVyISA8ZWxwYS1wYWNrYWdl PgorICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChwYWNrYWdlIHBvcnQpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCBwb3J0ICIjPGVscGEtcGFja2FnZSB+YS1+ YT4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbHBhLXBhY2thZ2Ut bmFtZSBwYWNrYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWxw YS1wYWNrYWdlLXZlcnNpb24gcGFja2FnZSkpKSkKKworKGRlZmluZSAoZWxwYS12ZXJzaW9uLT5z dHJpbmcgZWxwYS12ZXJzaW9uKQorICAiQ29udmVydCB0aGUgcGFja2FnZSB2ZXJzaW9uIGFzIHVz ZWQgaW4gRW1hY3MgcGFja2FnZSBmaWxlcyBpbnRvIGEgc3RyaW5nLiIKKyAgKGlmIChwYWlyPyBl bHBhLXZlcnNpb24pCisgICAgICAobGV0LXZhbHVlcyAoKChtcyByZXN0KSAobWF0Y2ggZWxwYS12 ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobXMgLiByZXN0KQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlcyBtcyByZXN0KSkpKSkKKyAgICAg ICAgKGZvbGQgKGxhbWJkYSAobiBzKSAoc3RyaW5nLWFwcGVuZCBzICIuIiAobnVtYmVyLT5zdHJp bmcgbikpKQorICAgICAgICAgICAgICAobnVtYmVyLT5zdHJpbmcgbXMpIHJlc3QpKQorICAgICAg I2YpKQorCisoZGVmaW5lIChwYWNrYWdlLWhvbWUtcGFnZSBhbGlzdCkKKyAgIkV4dHJhY3QgdGhl IHBhY2thZ2UgaG9tZS1wYWdlIGZyb20gQUxJU1QuIgorICAob3IgKGFzc3EtcmVmIGFsaXN0ICc6 dXJsKSAidW5zcGVjaWZpZWQiKSkKKworKGRlZmluZSAoZW5zdXJlLWxpc3QgYWxpc3QpCisgICJJ ZiBBTElTVCBpcyB0aGUgc3ltYm9sICduaWwgcmV0dXJuIHRoZSBlbXB0eSBsaXN0LiAgT3RoZXJ3 aXNlLCByZXR1cm4gQUxJU1QuIgorICAoaWYgKGVxPyBhbGlzdCAnbmlsKQorICAgICAgJygpCisg ICAgICBhbGlzdCkpCisKKyhkZWZpbmUgKHBhY2thZ2Utc291cmNlLXVybCBraW5kIG5hbWUgdmVy c2lvbiByZXBvKQorICAiUmV0dXJuIHRoZSBzb3VyY2UgVVJMIG9mIHRoZSBwYWNrYWdlIGRlc2Ny aWJlZCB0aGUgdGhlIHN0cmluZ3MgTkFNRSBhbmQKK1ZFUlNJT04gYXQgUkVQTy4gIEtJTkQgaXMg ZWl0aGVyIHRoZSBzeW1ib2wgJ3NpbmdsZSBvciAndGFyLiIKKyAgKGNhc2Uga2luZAorICAgICgo c2luZ2xlKSAoZnVsbC11cmwgcmVwbyBuYW1lICIuZWwiIHZlcnNpb24pKQorICAgICgodGFyKSAo ZnVsbC11cmwgcmVwbyBuYW1lICIudGFyIiB2ZXJzaW9uKSkKKyAgICAoZWxzZQorICAgICAjZikp KQorCisoZGVmaW5lKiAoZnVsbC11cmwgcmVwbyBuYW1lIHN1ZmZpeCAjOm9wdGlvbmFsICh2ZXJz aW9uICNmKSkKKyAgIlJldHVybiB0aGUgZnVsbCBVUkwgb2YgdGhlIHBhY2thZ2UgTkFNRSBhdCBS RVBPIGFuZCB0aGUgU1VGRklYLiAgTWF5YmUKK2luY2x1ZGUgVkVSU0lPTi4iCisgIChpZiB2ZXJz aW9uCisgICAgICAoc3RyaW5nLWFwcGVuZCAoZWxwYS11cmwgcmVwbykgIi8iIG5hbWUgIi0iIHZl cnNpb24gc3VmZml4KQorICAgICAgKHN0cmluZy1hcHBlbmQgKGVscGEtdXJsIHJlcG8pICIvIiBu YW1lIHN1ZmZpeCkpKQorCisoZGVmaW5lIChmZXRjaC1wYWNrYWdlLWRlc2NyaXB0aW9uIGtpbmQg bmFtZSByZXBvKQorICAiRmV0Y2ggdGhlIGRlc2NyaXB0aW9uIG9mIHBhY2thZ2UgTkFNRSBvZiB0 eXBlIEtJTkQgZnJvbSBSRVBPLiIKKyAgKGxldCAoKHVybCAoZnVsbC11cmwgcmVwbyBuYW1lICIt cmVhZG1lLnR4dCIpKSkKKyAgICAoY2FsbC13aXRoLWRvd25sb2FkZWQtZmlsZSB1cmwgcmVhZC1z dHJpbmcpKSkKKworKGRlZmluZSogKGZldGNoLWVscGEtcGFja2FnZSBuYW1lICM6b3B0aW9uYWwg KHJlcG8gJ2dudSkpCisgICJGZXRjaCBwYWNrYWdlIE5BTUUgZnJvbSBSRVBPLiIKKyAgKGxldCAo KHBrZyAoZWxwYS1wYWNrYWdlLWluZm8gbmFtZSByZXBvKSkpCisgICAgKG1hdGNoIHBrZworICAg ICAgKChuYW1lIHZlcnNpb24gcmVxcyBzeW5vcHNpcyBraW5kIC4gcmVzdCkKKyAgICAgICAobGV0 KiAoKG5hbWUgKHN5bWJvbC0+c3RyaW5nIG5hbWUpKQorICAgICAgICAgICAgICh2ZXIgKGVscGEt dmVyc2lvbi0+c3RyaW5nIHZlcnNpb24pKQorICAgICAgICAgICAgICh1cmwgKHBhY2thZ2Utc291 cmNlLXVybCBraW5kIG5hbWUgdmVyIHJlcG8pKSkKKyAgICAgICAgIChtYWtlLWVscGEtcGFja2Fn ZSBuYW1lIHZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbnN1cmUtbGlzdCByZXFz KSBzeW5vcHNpcyBraW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhY2thZ2UtaG9t ZS1wYWdlIChmaXJzdCByZXN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmV0Y2gt cGFja2FnZS1kZXNjcmlwdGlvbiBraW5kIG5hbWUgcmVwbykKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1cmwpKSkKKyAgICAgIChfICNmKSkpKQorCisoZGVmaW5lKiAoZWxwYS1wYWNrYWdl LT5zZXhwIHBrZykKKyAgIlJldHVybiB0aGUgYHBhY2thZ2UnIFMtZXhwcmVzc2lvbiBmb3IgdGhl IEVtYWNzIHBhY2thZ2UgUEtHLCBhIHJlY29yZCBvZgordHlwZSAnPGVscGEtcGFja2FnZT4nLiIK KworICAoZGVmaW5lIG5hbWUgKGVscGEtcGFja2FnZS1uYW1lIHBrZykpCisKKyAgKGRlZmluZSB2 ZXJzaW9uIChlbHBhLXBhY2thZ2UtdmVyc2lvbiBwa2cpKQorCisgIChkZWZpbmUgc291cmNlLXVy bCAoZWxwYS1wYWNrYWdlLXNvdXJjZS11cmwgcGtnKSkKKworICAoZGVmaW5lIGRlcGVuZGVuY2ll cworICAgIChsZXQqICgoZGVwcyAoZWxwYS1wYWNrYWdlLWlucHV0cyBwa2cpKQorICAgICAgICAg ICAobmFtZXMgKGZpbHRlci1kZXBlbmRlbmNpZXMgKGVscGEtZGVwZW5kZW5jaWVzLT5uYW1lcyBk ZXBzKSkpKQorICAgICAgKG1hcCAobGFtYmRhIChuKQorICAgICAgICAgICAgIChsZXQgKChuZXct biAoZWxwYS1uYW1lLT5wYWNrYWdlLW5hbWUgbikpKQorICAgICAgICAgICAgICAgKGxpc3QgbmV3 LW4gKGxpc3QgJ3VucXVvdGUgKHN0cmluZy0+c3ltYm9sIG5ldy1uKSkpKSkKKyAgICAgICAgICAg bmFtZXMpKSkKKworICAoZGVmaW5lIChtYXliZS1pbnB1dHMgaW5wdXQtdHlwZSBpbnB1dHMpCisg ICAgKG1hdGNoIGlucHV0cworICAgICAgKCgpCisgICAgICAgJygpKQorICAgICAgKChpbnB1dHMg Li4uKQorICAgICAgIChsaXN0IChsaXN0IGlucHV0LXR5cGUKKyAgICAgICAgICAgICAgICAgICAo bGlzdCAncXVhc2lxdW90ZSBpbnB1dHMpKSkpKSkKKworICAobGV0ICgodGFyYmFsbCAod2l0aC1z dG9yZSBzdG9yZQorICAgICAgICAgICAgICAgICAgIChkb3dubG9hZC10by1zdG9yZSBzdG9yZSBz b3VyY2UtdXJsKSkpKQorICAgIGAocGFja2FnZQorICAgICAgIChuYW1lICwoZWxwYS1uYW1lLT5w YWNrYWdlLW5hbWUgbmFtZSkpCisgICAgICAgKHZlcnNpb24gLHZlcnNpb24pCisgICAgICAgKHNv dXJjZSAob3JpZ2luCisgICAgICAgICAgICAgICAgIChtZXRob2QgdXJsLWZldGNoKQorICAgICAg ICAgICAgICAgICAodXJpIChzdHJpbmctYXBwZW5kICxAKGZhY3Rvcml6ZS11cmkgc291cmNlLXVy bCB2ZXJzaW9uKSkpCisgICAgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgICAg IChiYXNlMzIKKyAgICAgICAgICAgICAgICAgICAsKGlmIHRhcmJhbGwKKyAgICAgICAgICAgICAg ICAgICAgICAgIChieXRldmVjdG9yLT5uaXgtYmFzZTMyLXN0cmluZyAoZmlsZS1zaGEyNTYgdGFy YmFsbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRvd25sb2FkIHBhY2th Z2UiKSkpKSkKKyAgICAgICAoYnVpbGQtc3lzdGVtIGVtYWNzLWJ1aWxkLXN5c3RlbSkKKyAgICAg ICAsQChtYXliZS1pbnB1dHMgJ2lucHV0cyBkZXBlbmRlbmNpZXMpCisgICAgICAgKGhvbWUtcGFn ZSAsKGVscGEtcGFja2FnZS1ob21lLXBhZ2UgcGtnKSkKKyAgICAgICAoc3lub3BzaXMgLChlbHBh LXBhY2thZ2Utc3lub3BzaXMgcGtnKSkKKyAgICAgICAoZGVzY3JpcHRpb24gLChlbHBhLXBhY2th Z2UtZGVzY3JpcHRpb24gcGtnKSkKKyAgICAgICAobGljZW5zZSBsaWNlbnNlOmdwbDMrKSkpKQor CisoZGVmaW5lKiAoZWxwYS0+Z3VpeC1wYWNrYWdlIG5hbWUgIzpvcHRpb25hbCAocmVwbyAnZ251 KSkKKyAgIkZldGNoIHRoZSBwYWNrYWdlIE5BTUUgZnJvbSBSRVBPIGFuZCBwcm9kdWNlIGEgR3Vp eCBwYWNrYWdlIFMtZXhwcmVzc2lvbi4iCisgIChsZXQgKChwa2cgKGZldGNoLWVscGEtcGFja2Fn ZSBuYW1lIHJlcG8pKSkKKyAgICAoYW5kPT4gcGtnIGVscGEtcGFja2FnZS0+c2V4cCkpKQorCis7 OzsgZWxwYS5zY20gZW5kcyBoZXJlCmRpZmYgLS1naXQgYS9ndWl4L3NjcmlwdHMvaW1wb3J0LnNj bSBiL2d1aXgvc2NyaXB0cy9pbXBvcnQuc2NtCmluZGV4IDQ1Y2UwOTIuLmQwYmRlYzEgMTAwNjQ0 Ci0tLSBhL2d1aXgvc2NyaXB0cy9pbXBvcnQuc2NtCisrKyBiL2d1aXgvc2NyaXB0cy9pbXBvcnQu c2NtCkBAIC03Myw3ICs3Myw3IEBAIHJhdGhlciB0aGFuIFxcbi4iCiA7OzsgRW50cnkgcG9pbnQu CiA7OzsKIAotKGRlZmluZSBpbXBvcnRlcnMgJygiZ251IiAibml4IiAicHlwaSIgImNwYW4iICJo YWNrYWdlIikpCisoZGVmaW5lIGltcG9ydGVycyAnKCJnbnUiICJuaXgiICJweXBpIiAiY3BhbiIg ImhhY2thZ2UiICJlbHBhIikpCiAKIChkZWZpbmUgKHJlc29sdmUtaW1wb3J0ZXIgbmFtZSkKICAg KGxldCAoKG1vZHVsZSAocmVzb2x2ZS1pbnRlcmZhY2UKZGlmZiAtLWdpdCBhL2d1aXgvc2NyaXB0 cy9pbXBvcnQvZWxwYS5zY20gYi9ndWl4L3NjcmlwdHMvaW1wb3J0L2VscGEuc2NtCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMzRlYjcKLS0tIC9kZXYvbnVsbAorKysgYi9n dWl4L3NjcmlwdHMvaW1wb3J0L2VscGEuc2NtCkBAIC0wLDAgKzEsOTggQEAKKzs7OyBHTlUgR3Vp eCAtLS0gRnVuY3Rpb25hbCBwYWNrYWdlIG1hbmFnZW1lbnQgZm9yIEdOVQorOzs7IENvcHlyaWdo dCDCqSAyMDE1IEZlZGVyaWNvIEJlZmZhIDxiZWZmYUBmYmVuZ2luZWVyaW5nLmNoPgorOzs7Cis7 OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEd1aXguCis7OzsKKzs7OyBHTlUgR3VpeCBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cis7 OzsgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKzs7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQKKzs7OyB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCis7OzsKKzs7OyBHTlUgR3VpeCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKzs7OyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7OzsgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorOzs7IEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7OzsKKzs7OyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor Ozs7IGFsb25nIHdpdGggR05VIEd1aXguICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisKKyhkZWZpbmUtbW9kdWxlIChndWl4IHNjcmlwdHMgaW1wb3J0IGVscGEp CisgICM6dXNlLW1vZHVsZSAoZ3VpeCB1aSkKKyAgIzp1c2UtbW9kdWxlIChndWl4IHV0aWxzKQor ICAjOnVzZS1tb2R1bGUgKGd1aXggaW1wb3J0IGVscGEpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBz Y3JpcHRzIGltcG9ydCkKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMSkKKyAgIzp1c2UtbW9k dWxlIChzcmZpIHNyZmktMTEpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTM3KQorICAjOnVz ZS1tb2R1bGUgKGljZS05IG1hdGNoKQorICAjOnVzZS1tb2R1bGUgKGljZS05IGZvcm1hdCkKKyAg IzpleHBvcnQgKGd1aXgtaW1wb3J0LWVscGEpKQorCisMCis7OzsKKzs7OyBDb21tYW5kLWxpbmUg b3B0aW9ucy4KKzs7OworCisoZGVmaW5lICVkZWZhdWx0LW9wdGlvbnMKKyAgJygocmVwbyAuICdn bnUpKSkKKworKGRlZmluZSAoc2hvdy1oZWxwKQorICAoZGlzcGxheSAoXyAiVXNhZ2U6IGd1aXgg aW1wb3J0IGVscGEgUEFDS0FHRS1OQU1FCitJbXBvcnQgdGhlIGxhdGVzdCBwYWNrYWdlIG5hbWVk IFBBQ0tBR0UtTkFNRSBmcm9tIGFuIEVMUEEgcmVwb3NpdG9yeS5cbiIpKQorICAoZGlzcGxheSAo XyAiCisgIC1hLCAtLWFyY2hpdmU9QVJDSElWRSAgICAgICAgICBzcGVjaWZ5IHRoZSBhcmNoaXZl IHJlcG9zaXRvcnkiKSkKKyAgKGRpc3BsYXkgKF8gIgorICAtaCwgLS1oZWxwICAgICAgICAgICAg ICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQiKSkKKyAgKGRpc3BsYXkgKF8gIgor ICAtViwgLS12ZXJzaW9uICAgICAgICAgICAgICAgICAgZGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0 aW9uIGFuZCBleGl0IikpCisgIChuZXdsaW5lKQorICAoc2hvdy1idWctcmVwb3J0LWluZm9ybWF0 aW9uKSkKKworKGRlZmluZSAlb3B0aW9ucworICA7OyBTcGVjaWZpY2F0aW9uIG9mIHRoZSBjb21t YW5kLWxpbmUgb3B0aW9ucy4KKyAgKGNvbnMqIChvcHRpb24gJygjXGggImhlbHAiKSAjZiAjZgor ICAgICAgICAgICAgICAgICAobGFtYmRhIGFyZ3MKKyAgICAgICAgICAgICAgICAgICAoc2hvdy1o ZWxwKQorICAgICAgICAgICAgICAgICAgIChleGl0IDApKSkKKyAgICAgICAgIChvcHRpb24gJygj XFYgInZlcnNpb24iKSAjZiAjZgorICAgICAgICAgICAgICAgICAobGFtYmRhIGFyZ3MKKyAgICAg ICAgICAgICAgICAgICAoc2hvdy12ZXJzaW9uLWFuZC1leGl0ICJndWl4IGltcG9ydCBlbHBhIikp KQorICAgICAgICAgKG9wdGlvbiAnKCNcYSAiYXJjaGl2ZSIpICN0ICNmCisgICAgICAgICAgICAg ICAgIChsYW1iZGEgKG9wdCBuYW1lIGFyZyByZXN1bHQpCisgICAgICAgICAgICAgICAgICAgKGFs aXN0LWNvbnMgJ3JlcG8gKHN0cmluZy0+c3ltYm9sIGFyZykKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoYWxpc3QtZGVsZXRlICdyZXBvIHJlc3VsdCkpKSkKKyAgICAgICAgICVzdGFu ZGFyZC1pbXBvcnQtb3B0aW9ucykpCisKKwwKKzs7OworOzs7IEVudHJ5IHBvaW50LgorOzs7CisK KyhkZWZpbmUgKGd1aXgtaW1wb3J0LWVscGEgLiBhcmdzKQorICAoZGVmaW5lIChwYXJzZS1vcHRp b25zKQorICAgIDs7IFJldHVybiB0aGUgYWxpc3Qgb2Ygb3B0aW9uIHZhbHVlcy4KKyAgICAoYXJn cy1mb2xkKiBhcmdzICVvcHRpb25zCisgICAgICAgICAgICAgICAgKGxhbWJkYSAob3B0IG5hbWUg YXJnIHJlc3VsdCkKKyAgICAgICAgICAgICAgICAgIChsZWF2ZSAoXyAifkE6IHVucmVjb2duaXpl ZCBvcHRpb25+JSIpIG5hbWUpKQorICAgICAgICAgICAgICAgIChsYW1iZGEgKGFyZyByZXN1bHQp CisgICAgICAgICAgICAgICAgICAoYWxpc3QtY29ucyAnYXJndW1lbnQgYXJnIHJlc3VsdCkpCisg ICAgICAgICAgICAgICAgJWRlZmF1bHQtb3B0aW9ucykpCisKKyAgKGxldCogKChvcHRzIChwYXJz ZS1vcHRpb25zKSkKKyAgICAgICAgIChhcmdzIChmaWx0ZXItbWFwIChtYXRjaC1sYW1iZGEKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKCdhcmd1bWVudCAuIHZhbHVlKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo XyAjZikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAocmV2ZXJzZSBvcHRzKSkpKQorICAg IChtYXRjaCBhcmdzCisgICAgICAoKHBhY2thZ2UtbmFtZSkKKyAgICAgICAobGV0ICgoc2V4cCAo ZWxwYS0+Z3VpeC1wYWNrYWdlIHBhY2thZ2UtbmFtZSAoYXNzb2MtcmVmIG9wdHMgJ3JlcG8pKSkp CisgICAgICAgICAodW5sZXNzIHNleHAKKyAgICAgICAgICAgKGxlYXZlIChfICJmYWlsZWQgdG8g ZG93bmxvYWQgcGFja2FnZSAnfmEnfiUiKSBwYWNrYWdlLW5hbWUpKQorICAgICAgICAgc2V4cCkp CisgICAgICAoKCkKKyAgICAgICAobGVhdmUgKF8gInRvbyBmZXcgYXJndW1lbnRzfiUiKSkpCisg ICAgICAoKG1hbnkgLi4uKQorICAgICAgIChsZWF2ZSAoXyAidG9vIG1hbnkgYXJndW1lbnRzfiUi KSkpKSkpCisKKzs7OyBlbHBhLnNjbSBlbmRzIGhlcmUKZGlmZiAtLWdpdCBhL3Rlc3RzL2VscGEu c2NtIGIvdGVzdHMvZWxwYS5zY20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NWQyOTE0YgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2VscGEuc2NtCkBAIC0wLDAgKzEsMTA5 IEBACis7OzsgR05VIEd1aXggLS0tIEZ1bmN0aW9uYWwgcGFja2FnZSBtYW5hZ2VtZW50IGZvciBH TlUKKzs7OyBDb3B5cmlnaHQgwqkgMjAxNSBGZWRlcmljbyBCZWZmYSA8YmVmZmFAZmJlbmdpbmVl cmluZy5jaD4KKzs7OworOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4LgorOzs7Cis7 OzsgR05VIEd1aXggaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeSBpdAorOzs7IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0Cis7OzsgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorOzs7Cis7OzsgR05VIEd1aXggaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Cis7OzsgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzs7IE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKzs7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzs7 Cis7OzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKzs7OyBhbG9uZyB3aXRoIEdOVSBHdWl4LiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisoZGVmaW5lLW1vZHVsZSAodGVzdC1lbHBh KQorICAjOnVzZS1tb2R1bGUgKGd1aXggaW1wb3J0IGVscGEpCisgICM6dXNlLW1vZHVsZSAoZ3Vp eCB0ZXN0cykKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMSkKKyAgIzp1c2UtbW9kdWxlIChz cmZpIHNyZmktNjQpCisgICM6dXNlLW1vZHVsZSAoaWNlLTkgbWF0Y2gpKQorCisoZGVmaW5lIGVs cGEtbW9jay1hcmNoaXZlCisgICcoMQorICAgIChhY2Utd2luZG93IC4KKyAgICAgICAgICAgICAg ICBbKDAgOSAwKQorICAgICAgICAgICAgICAgICAoKGF2eQorICAgICAgICAgICAgICAgICAgICgw IDIgMCkpKQorICAgICAgICAgICAgICAgICAiUXVpY2tseSBzd2l0Y2ggd2luZG93cy4iIHNpbmds ZQorICAgICAgICAgICAgICAgICAoKDp1cmwgLiAiaHR0cHM6Ly9naXRodWIuY29tL2Fiby1hYm8v YWNlLXdpbmRvdyIpCisgICAgICAgICAgICAgICAgICAoOmtleXdvcmRzICJ3aW5kb3ciICJsb2Nh dGlvbiIpKV0pCisgICAgKGF1Y3RleCAuCisgICAgICAgICAgICBbKDExIDg4IDYpCisgICAgICAg ICAgICAgbmlsICJJbnRlZ3JhdGVkIGVudmlyb25tZW50IGZvciAqVGVYKiIgdGFyCisgICAgICAg ICAgICAgKCg6dXJsIC4gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdWN0ZXgvIikpXSkp KQorCisoZGVmaW5lIGF1Y3RleC1yZWFkbWUtbW9jayAiVGhpcyBpcyB0aGUgQVVDVGVYIGRlc2Ny aXB0aW9uLiIpCisKKyhkZWZpbmUqIChlbHBhLXBhY2thZ2UtaW5mby1tb2NrIG5hbWUgIzpvcHRp b25hbCAocmVwbyAiZ251IikpCisgICJTaW11bGF0ZSByZXRyaWV2YWwgb2YgJ2FyY2hpdmUtY29u dGVudHMnIGZpbGUgZnJvbSBSRVBPIGFuZCBleHRyYWN0aW9uIG9mCitpbmZvcm1hdGlvbiBhYm91 dCBwYWNrYWdlIE5BTUUuIChGdW5jdGlvbiAnZWxwYS1wYWNrYWdlLWluZm8nLikiCisgIChsZXQq ICgoYXJjaGl2ZSBlbHBhLW1vY2stYXJjaGl2ZSkKKyAgICAgICAgIChpbmZvIChmaWx0ZXIgKGxh bWJkYSAocCkgKGVxPyAoZmlyc3QgcCkgKHN0cmluZy0+c3ltYm9sIG5hbWUpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgKGNkciBhcmNoaXZlKSkpKQorICAgIChpZiAocGFpcj8gaW5mbykgKGZp cnN0IGluZm8pICNmKSkpCisKKyhkZWZpbmUgZWxwYS12ZXJzaW9uLT5zdHJpbmcKKyAgKEBAIChn dWl4IGltcG9ydCBlbHBhKSBlbHBhLXZlcnNpb24tPnN0cmluZykpCisKKyhkZWZpbmUgcGFja2Fn ZS1zb3VyY2UtdXJsCisgIChAQCAoZ3VpeCBpbXBvcnQgZWxwYSkgcGFja2FnZS1zb3VyY2UtdXJs KSkKKworKGRlZmluZSBuaWwtPmVtcHR5CisgIChAQCAoZ3VpeCBpbXBvcnQgZWxwYSkgbmlsLT5l bXB0eSkpCisKKyhkZWZpbmUgcGFja2FnZS1ob21lLXBhZ2UKKyAgKEBAIChndWl4IGltcG9ydCBl bHBhKSBwYWNrYWdlLWhvbWUtcGFnZSkpCisKKyhkZWZpbmUgbWFrZS1lbHBhLXBhY2thZ2UKKyAg KEBAIChndWl4IGltcG9ydCBlbHBhKSBtYWtlLWVscGEtcGFja2FnZSkpCisKKyh0ZXN0LWJlZ2lu ICJlbHBhIikKKworKGRlZmluZSAoZXZhbC10ZXN0LXdpdGgtZWxwYSBwa2cpCisgIChtb2NrCisg ICA7OyByZXBsYWNlIHRoZSB0d28gZmV0Y2hpbmcgZnVuY3Rpb25zCisgICAoKGd1aXggaW1wb3J0 IGVscGEpIGZldGNoLWVscGEtcGFja2FnZQorICAgIChsYW1iZGEqIChuYW1lICM6b3B0aW9uYWwg KHJlcG8gImdudSIpKQorICAgICAgKGxldCAoKHBrZyAoZWxwYS1wYWNrYWdlLWluZm8tbW9jayBu YW1lIHJlcG8pKSkKKyAgICAgICAgKG1hdGNoIHBrZworICAgICAgICAgICgobmFtZSB2ZXJzaW9u IHJlcXMgc3lub3BzaXMga2luZCAuIHJlc3QpCisgICAgICAgICAgIChsZXQqICgobmFtZSAoc3lt Ym9sLT5zdHJpbmcgbmFtZSkpCisgICAgICAgICAgICAgICAgICAodmVyIChlbHBhLXZlcnNpb24t PnN0cmluZyB2ZXJzaW9uKSkKKyAgICAgICAgICAgICAgICAgICh1cmwgKHBhY2thZ2Utc291cmNl LXVybCBraW5kIG5hbWUgdmVyIHJlcG8pKSkKKyAgICAgICAgICAgICAobWFrZS1lbHBhLXBhY2th Z2UgbmFtZSB2ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5pbC0+ZW1wdHkg cmVxcykgc3lub3BzaXMga2luZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFj a2FnZS1ob21lLXBhZ2UgKGZpcnN0IHJlc3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhdWN0ZXgtcmVhZG1lLW1vY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dXJsKSkpCisgICAgICAgICAgKF8gI2YpKSkpKQorICAgKG1hdGNoIChlbHBhLT5ndWl4LXBhY2th Z2UgcGtnKQorICAgICAoKCdwYWNrYWdlCisgICAgICAgICgnbmFtZSAiZW1hY3MtYXVjdGV4IikK KyAgICAgICAgKCd2ZXJzaW9uICIxMS44OC42IikKKyAgICAgICAgKCdzb3VyY2UKKyAgICAgICAg ICgnb3JpZ2luCisgICAgICAgICAgICgnbWV0aG9kICd1cmwtZmV0Y2gpCisgICAgICAgICAgICgn dXJpICgnc3RyaW5nLWFwcGVuZAorICAgICAgICAgICAgICAgICAgImh0dHA6Ly9lbHBhLmdudS5v cmcvcGFja2FnZXMvYXVjdGV4LSIgJ3ZlcnNpb24gIi50YXIiKSkKKyAgICAgICAgICAgKCdzaGEy NTYgKCdiYXNlMzIgKD8gc3RyaW5nPyBoYXNoKSkpKSkKKyAgICAgICAgKCdidWlsZC1zeXN0ZW0g J2VtYWNzLWJ1aWxkLXN5c3RlbSkKKyAgICAgICAgKCdob21lLXBhZ2UgImh0dHA6Ly93d3cuZ251 Lm9yZy9zb2Z0d2FyZS9hdWN0ZXgvIikKKyAgICAgICAgKCdzeW5vcHNpcyAiSW50ZWdyYXRlZCBl bnZpcm9ubWVudCBmb3IgKlRlWCoiKQorICAgICAgICAoJ2Rlc2NyaXB0aW9uICg/IHN0cmluZz8p KQorICAgICAgICAoJ2xpY2Vuc2UgJ2xpY2Vuc2U6Z3BsMyspKQorICAgICAgI3QpCisgICAgICh4 CisgICAgICAocGsgJ2ZhaWwgeCAjZikpKSkpCisKKyh0ZXN0LWFzc2VydCAiZWxwYS0+Z3VpeC1w YWNrYWdlIHRlc3QgMSIKKyAgKGV2YWwtdGVzdC13aXRoLWVscGEgImF1Y3RleCIpKQorCisodGVz dC1lbmQgImVscGEiKQorCisMCisoZXhpdCAoPSAodGVzdC1ydW5uZXItZmFpbC1jb3VudCAodGVz dC1ydW5uZXItY3VycmVudCkpIDApKQotLSAKMi4yLjEKCg== --001a113f9aa6bc38ae05195bda14--