From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jelle Licht Subject: Re: Maintaining implementations of similar utility functions like json-fetch Date: Sun, 10 Jun 2018 20:50:09 +0200 Message-ID: References: <87po5v1dy0.fsf@gnu.org> <87shafd1gl.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="00000000000036c425056e4e1a6d" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:35671) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fS5Pu-0003WZ-E4 for guix-devel@gnu.org; Sun, 10 Jun 2018 14:50:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fS5Pr-0007wy-82 for guix-devel@gnu.org; Sun, 10 Jun 2018 14:50:18 -0400 In-Reply-To: <87shafd1gl.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" To: =?UTF-8?Q?Ludovic_Court=C3=A8s?= Cc: guix-devel --00000000000036c425056e4e1a6d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Ludovic Court=C3=A8s writes: > Hey, > > Jelle Licht skribis: > >> I basically added the robust features of `json-fetch*' to the exported >> `json-fetch' >> instead, and all existing functionality seems to work out as far as I ca= n >> see. > > So are you saying that we can get rid of =E2=80=98json-fetch*=E2=80=99? > >> I did notice that I now produce hash-tables by default, and some of the >> existing usages of `json-fetch*' expect an alist instead. What would be = a >> guile- >> appropriate way of dealing with this? I currently have multiple >> `(hash-table->alist (json-fetch <...>))' littered in my patch which seem= s >> suboptimal, >> but always converting the parsed json into an alist seems like it might >> also not be >> what we want. > > Why insist on having an alist? Perhaps you can just stick to hash > tables? :-) > > Ludo=E2=80=99. Hey hey, Sorry for the delay. Cue the drum roll; Attached is my initial draft of this patch. I initially wanted to split it up into 2 or more patches, but could not make this work in a way that I could wrap my head around. Also, there is yet another 'json-fetch'-like function implemented in `guix/ci.scm', but I was not sure whether the error-handling facilities would be applicable there. Anyway, I am open to comments. I have verified that at least the (tests of the) importers still work as they did before. After the comments, I could push it myself if that is okay. --00000000000036c425056e4e1a6d Content-Type: text/x-patch; charset="US-ASCII"; name="0001-import-json-Consolidate-duplicate-json-fetch-functio.patch" Content-Disposition: attachment; filename="0001-import-json-Consolidate-duplicate-json-fetch-functio.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ji96ng1c0 RnJvbSBjNjA2ODY5NzVkZjI5OTk5MDYxMThjM2EyNmNjOWMyY2VmMmE5M2IyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWxsZSBMaWNodCA8amxpY2h0QGZzZmUub3JnPgpEYXRlOiBT dW4sIDEwIEp1biAyMDE4IDIwOjM1OjM5ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gaW1wb3J0OiBq c29uOiBDb25zb2xpZGF0ZSBkdXBsaWNhdGUganNvbi1mZXRjaCBmdW5jdGlvbmFsaXR5LgoKKiBn dWl4L2ltcG9ydC9qc29uLnNjbSAoanNvbi1mZXRjaCk6IFJldHVybiBhIGxpc3Qgb3IgaGFzaCB0 YWJsZS4KICAoanNvbi1mZXRjaC1hbGlzdCk6IE5ldyBwcm9jZWR1cmUuCiogZ3VpeC9pbXBvcnQv Z2l0aHViLnNjbSAoanNvbi1mZXRjaCopOiBSZW1vdmUuCiAgKGxhdGVzdC1yZWxlYXNlZC12ZXJz aW9uKTogVXNlIGpzb24tZmV0Y2guCiogZ3VpeC9pbXBvcnQvY3Bhbi5zY20gKG1vZHVsZS0+ZGlz dC1uYW1lKTogVXNlIGpzb24tZmV0Y2gtYWxpc3QuCiAgKGNwYW4tZmV0Y2gpOiBMaWtld2lzZS4K KiBndWl4L2ltcG9ydC9jcmF0ZS5zY20gKGNyYXRlLWZldGNoKTogTGlrZXdpc2UuCiogZ3VpeC9p bXBvcnQvZ2VtLnNjbSAocnVieWdlbXMtZmV0Y2gpOiBMaWtld2lzZS4KKiBndWl4L2ltcG9ydC9w eXBpLnNjbSAocHlwaS1mZXRjaCk6IExpa2V3aXNlLgoqIGd1aXgvaW1wb3J0L3N0YWNrYWdlLnNj bSAoc3RhY2thZ2UtbHRzLWluZm8tZmV0Y2gpOiBMaWtld2lzZS4KLS0tCiBndWl4L2ltcG9ydC9j cGFuLnNjbSAgICAgfCAgOSArKysrKy0tLS0KIGd1aXgvaW1wb3J0L2NyYXRlLnNjbSAgICB8ICA0 ICsrLS0KIGd1aXgvaW1wb3J0L2dlbS5zY20gICAgICB8ICAyICstCiBndWl4L2ltcG9ydC9naXRo dWIuc2NtICAgfCAxOSArKy0tLS0tLS0tLS0tLS0tLS0tCiBndWl4L2ltcG9ydC9qc29uLnNjbSAg ICAgfCAyNCArKysrKysrKysrKysrKysrKy0tLS0tLS0KIGd1aXgvaW1wb3J0L3B5cGkuc2NtICAg ICB8ICA0ICsrLS0KIGd1aXgvaW1wb3J0L3N0YWNrYWdlLnNjbSB8ICAyICstCiA3IGZpbGVzIGNo YW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2d1 aXgvaW1wb3J0L2NwYW4uc2NtIGIvZ3VpeC9pbXBvcnQvY3Bhbi5zY20KaW5kZXggNThjMDUxZTI4 Li4wOGJlZDg3NjcgMTAwNjQ0Ci0tLSBhL2d1aXgvaW1wb3J0L2NwYW4uc2NtCisrKyBiL2d1aXgv aW1wb3J0L2NwYW4uc2NtCkBAIC04OCw5ICs4OCwxMCBAQAogICAiUmV0dXJuIHRoZSBiYXNlIGRp c3RyaWJ1dGlvbiBtb2R1bGUgZm9yIGEgZ2l2ZW4gbW9kdWxlLiAgRS5nLiB0aGUgJ29rJwogbW9k dWxlIGlzIGRpc3RyaWJ1dGVkIHdpdGggJ1Rlc3Q6OlNpbXBsZScsIHNvIChtb2R1bGUtPmRpc3Qt bmFtZSBcIm9rXCIpIHdvdWxkCiByZXR1cm4gXCJUZXN0LVNpbXBsZVwiIgotICAoYXNzb2MtcmVm IChqc29uLWZldGNoIChzdHJpbmctYXBwZW5kICJodHRwczovL2Zhc3RhcGkubWV0YWNwYW4ub3Jn L3YxL21vZHVsZS8iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9k dWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIj9maWVsZHM9ZGlz dHJpYnV0aW9uIikpCisgIChhc3NvYy1yZWYgKGpzb24tZmV0Y2gtYWxpc3QgKHN0cmluZy1hcHBl bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8vZmFzdGFwaS5tZXRh Y3Bhbi5vcmcvdjEvbW9kdWxlLyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9k dWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI/ZmllbGRzPWRpc3RyaWJ1dGlv biIpKQogICAgICAgICAgICAgICJkaXN0cmlidXRpb24iKSkKIAogKGRlZmluZSAocGFja2FnZS0+ dXBzdHJlYW0tbmFtZSBwYWNrYWdlKQpAQCAtMTEzLDcgKzExNCw3IEBAIHJldHVybiBcIlRlc3Qt U2ltcGxlXCIiCiAgICJSZXR1cm4gYW4gYWxpc3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIENQQU4g bWV0YWRhdGEgZm9yIHRoZSBwZXJsIG1vZHVsZSBNT0RVTEUsCiBvciAjZiBvbiBmYWlsdXJlLiAg TU9EVUxFIHNob3VsZCBiZSBlLmcuIFwiVGVzdDo6U2NyaXB0XCIiCiAgIDs7IFRoaXMgQVBJIGFs d2F5cyByZXR1cm5zIHRoZSBsYXRlc3QgcmVsZWFzZSBvZiB0aGUgbW9kdWxlLgotICAoanNvbi1m ZXRjaCAoc3RyaW5nLWFwcGVuZCAiaHR0cHM6Ly9mYXN0YXBpLm1ldGFjcGFuLm9yZy92MS9yZWxl YXNlLyIgbmFtZSkpKQorICAoanNvbi1mZXRjaC1hbGlzdCAoc3RyaW5nLWFwcGVuZCAiaHR0cHM6 Ly9mYXN0YXBpLm1ldGFjcGFuLm9yZy92MS9yZWxlYXNlLyIgbmFtZSkpKQogCiAoZGVmaW5lIChj cGFuLWhvbWUgbmFtZSkKICAgKHN0cmluZy1hcHBlbmQgImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcv ZGlzdC8iIG5hbWUgIi8iKSkKZGlmZiAtLWdpdCBhL2d1aXgvaW1wb3J0L2NyYXRlLnNjbSBiL2d1 aXgvaW1wb3J0L2NyYXRlLnNjbQppbmRleCBhNzQ4NWJiNGQuLjM3MjRhNDU3YSAxMDA2NDQKLS0t IGEvZ3VpeC9pbXBvcnQvY3JhdGUuc2NtCisrKyBiL2d1aXgvaW1wb3J0L2NyYXRlLnNjbQpAQCAt NTEsNyArNTEsNyBAQAogICAoZGVmaW5lIChjcmF0ZS1raW5kLXByZWRpY2F0ZSBraW5kKQogICAg IChsYW1iZGEgKGRlcCkgKHN0cmluZz0/IChhc3NvYy1yZWYgZGVwICJraW5kIikga2luZCkpKQog Ci0gIChhbmQtbGV0KiAoKGNyYXRlLWpzb24gKGpzb24tZmV0Y2ggKHN0cmluZy1hcHBlbmQgY3Jh dGUtdXJsIGNyYXRlLW5hbWUpKSkKKyAgKGFuZC1sZXQqICgoY3JhdGUtanNvbiAoanNvbi1mZXRj aC1hbGlzdCAoc3RyaW5nLWFwcGVuZCBjcmF0ZS11cmwgY3JhdGUtbmFtZSkpKQogICAgICAgICAg ICAgIChjcmF0ZSAoYXNzb2MtcmVmIGNyYXRlLWpzb24gImNyYXRlIikpCiAgICAgICAgICAgICAg KG5hbWUgKGFzc29jLXJlZiBjcmF0ZSAibmFtZSIpKQogICAgICAgICAgICAgICh2ZXJzaW9uIChh c3NvYy1yZWYgY3JhdGUgIm1heF92ZXJzaW9uIikpCkBAIC02Myw3ICs2Myw3IEBACiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmctPmxpY2Vuc2UpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICcoKSkpICAgICAgICAgICAgICAgICAgIDttaXNzaW5nIGxpY2Vuc2UgaW5m bwogICAgICAgICAgICAgIChwYXRoIChzdHJpbmctYXBwZW5kICIvIiB2ZXJzaW9uICIvZGVwZW5k ZW5jaWVzIikpCi0gICAgICAgICAgICAgKGRlcHMtanNvbiAoanNvbi1mZXRjaCAoc3RyaW5nLWFw cGVuZCBjcmF0ZS11cmwgbmFtZSBwYXRoKSkpCisgICAgICAgICAgICAgKGRlcHMtanNvbiAoanNv bi1mZXRjaC1hbGlzdCAoc3RyaW5nLWFwcGVuZCBjcmF0ZS11cmwgbmFtZSBwYXRoKSkpCiAgICAg ICAgICAgICAgKGRlcHMgKGFzc29jLXJlZiBkZXBzLWpzb24gImRlcGVuZGVuY2llcyIpKQogICAg ICAgICAgICAgIChpbnB1dC1jcmF0ZXMgKGZpbHRlciAoY3JhdGUta2luZC1wcmVkaWNhdGUgIm5v cm1hbCIpIGRlcHMpKQogICAgICAgICAgICAgIChuYXRpdmUtaW5wdXQtY3JhdGVzCmRpZmYgLS1n aXQgYS9ndWl4L2ltcG9ydC9nZW0uc2NtIGIvZ3VpeC9pbXBvcnQvZ2VtLnNjbQppbmRleCA2ZTkx NGQ2MjkuLjY0NjE2M2ZiNyAxMDA2NDQKLS0tIGEvZ3VpeC9pbXBvcnQvZ2VtLnNjbQorKysgYi9n dWl4L2ltcG9ydC9nZW0uc2NtCkBAIC0zOCw3ICszOCw3IEBACiAoZGVmaW5lIChydWJ5Z2Vtcy1m ZXRjaCBuYW1lKQogICAiUmV0dXJuIGFuIGFsaXN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBSdWJ5 R2VtcyBtZXRhZGF0YSBmb3IgdGhlIHBhY2thZ2UgTkFNRSwKIG9yICNmIG9uIGZhaWx1cmUuIgot ICAoanNvbi1mZXRjaAorICAoanNvbi1mZXRjaC1hbGlzdAogICAgKHN0cmluZy1hcHBlbmQgImh0 dHBzOi8vcnVieWdlbXMub3JnL2FwaS92MS9nZW1zLyIgbmFtZSAiLmpzb24iKSkpCiAKIChkZWZp bmUgKHJ1YnktcGFja2FnZS1uYW1lIG5hbWUpCmRpZmYgLS1naXQgYS9ndWl4L2ltcG9ydC9naXRo dWIuc2NtIGIvZ3VpeC9pbXBvcnQvZ2l0aHViLnNjbQppbmRleCA0YjdkNTNjNzAuLmVmMjI2OTEx YiAxMDA2NDQKLS0tIGEvZ3VpeC9pbXBvcnQvZ2l0aHViLnNjbQorKysgYi9ndWl4L2ltcG9ydC9n aXRodWIuc2NtCkBAIC0yMiwzMSArMjIsMTYgQEAKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmkt MSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMjYpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBz cmZpLTM0KQotICAjOnVzZS1tb2R1bGUgKGpzb24pCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCB1dGls cykKICAgIzp1c2UtbW9kdWxlICgoZ3VpeCBkb3dubG9hZCkgIzpwcmVmaXggZG93bmxvYWQ6KQog ICAjOnVzZS1tb2R1bGUgKGd1aXggaW1wb3J0IHV0aWxzKQorICAjOnVzZS1tb2R1bGUgKGd1aXgg aW1wb3J0IGpzb24pCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBwYWNrYWdlcykKICAgIzp1c2UtbW9k dWxlIChndWl4IHVwc3RyZWFtKQogICAjOnVzZS1tb2R1bGUgKGd1aXggaHR0cC1jbGllbnQpCiAg ICM6dXNlLW1vZHVsZSAod2ViIHVyaSkKICAgIzpleHBvcnQgKCVnaXRodWItdXBkYXRlcikpCiAK LShkZWZpbmUgKGpzb24tZmV0Y2gqIHVybCkKLSAgIlJldHVybiBhIHJlcHJlc2VudGF0aW9uIG9m IHRoZSBKU09OIHJlc291cmNlIFVSTCAoYSBsaXN0IG9yIGhhc2ggdGFibGUpLCBvcgotI2YgaWYg VVJMIHJldHVybnMgNDAzIG9yIDQwNC4iCi0gIChndWFyZCAoYyAoKGFuZCAoaHR0cC1nZXQtZXJy b3I/IGMpCi0gICAgICAgICAgICAgICAgICAobGV0ICgoZXJyb3IgKGh0dHAtZ2V0LWVycm9yLWNv ZGUgYykpKQotICAgICAgICAgICAgICAgICAgICAob3IgKD0gNDAzIGVycm9yKQotICAgICAgICAg ICAgICAgICAgICAgICAgKD0gNDA0IGVycm9yKSkpKQotICAgICAgICAgICAgICNmKSkgICAgIDs7 ICJleHBlY3RlZCIgaWYgdGhlcmUgaXMgYW4gYXV0aGVudGlmaWNhdGlvbiBlcnJvciAoNDAzKSwK LSAgICAgICAgICAgICAgICAgICAgICA7OyBvciBpZiBwYWNrYWdlIGlzIHVua25vd24gKDQwNCku Ci0gICAgOzsgTm90ZTogZ2l0aHViLmNvbSByZXR1cm5zIDQwMyBpZiB3ZSBvbWl0IGEgJ1VzZXIt QWdlbnQnIGhlYWRlci4KLSAgICAobGV0KiAoKHBvcnQgICAoaHR0cC1mZXRjaCB1cmwpKQotICAg ICAgICAgICAocmVzdWx0IChqc29uLT5zY20gcG9ydCkpKQotICAgICAgKGNsb3NlLXBvcnQgcG9y dCkKLSAgICAgIHJlc3VsdCkpKQotCiAoZGVmaW5lIChmaW5kLWV4dGVuc2lvbiB1cmwpCiAgICJS ZXR1cm4gdGhlIGV4dGVuc2lvbiBvZiB0aGUgYXJjaGl2ZSBlLmcuICcudGFyLmd6JyBnaXZlbiBh IFVSTCwgb3IKIGZhbHNlIGlmIG5vbmUgaXMgcmVjb2duaXplZCIKQEAgLTE0NCw3ICsxMjksNyBA QCB0aGUgcGFja2FnZSBlLmcuICdiZWR0b29sczInLiAgUmV0dXJuICNmIGlmIHRoZXJlIGlzIG5v IHJlbGVhc2VzIgogICAgICAgICAgICAgICAgICAgICJodHRwczovL2FwaS5naXRodWIuY29tL3Jl cG9zLyIKICAgICAgICAgICAgICAgICAgICAoZ2l0aHViLXVzZXItc2xhc2gtcmVwb3NpdG9yeSB1 cmwpCiAgICAgICAgICAgICAgICAgICAgIi9yZWxlYXNlcyIpKQotICAgICAgICAgKGpzb24gKGpz b24tZmV0Y2gqCisgICAgICAgICAoanNvbiAoanNvbi1mZXRjaAogICAgICAgICAgICAgICAgIChp ZiB0b2tlbgogICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhcGktdXJsICI/YWNj ZXNzX3Rva2VuPSIgdG9rZW4pCiAgICAgICAgICAgICAgICAgICAgIGFwaS11cmwpKSkpCmRpZmYg LS1naXQgYS9ndWl4L2ltcG9ydC9qc29uLnNjbSBiL2d1aXgvaW1wb3J0L2pzb24uc2NtCmluZGV4 IGM3NmJjOTMxMy4uM2YyYWIxZTNlIDEwMDY0NAotLS0gYS9ndWl4L2ltcG9ydC9qc29uLnNjbQor KysgYi9ndWl4L2ltcG9ydC9qc29uLnNjbQpAQCAtMjIsMTUgKzIyLDI1IEBACiAgICM6dXNlLW1v ZHVsZSAoZ3VpeCBodHRwLWNsaWVudCkKICAgIzp1c2UtbW9kdWxlIChndWl4IGltcG9ydCB1dGls cykKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMzQpCi0gICM6ZXhwb3J0IChqc29uLWZldGNo KSkKKyAgIzpleHBvcnQgKGpzb24tZmV0Y2gKKyAgICAgICAgICAgIGpzb24tZmV0Y2gtYWxpc3Qp KQogCiAoZGVmaW5lIChqc29uLWZldGNoIHVybCkKLSAgIlJldHVybiBhbiBhbGlzdCByZXByZXNl bnRhdGlvbiBvZiB0aGUgSlNPTiByZXNvdXJjZSBVUkwsIG9yICNmIG9uIGZhaWx1cmUuIgorICAi UmV0dXJuIGEgcmVwcmVzZW50YXRpb24gb2YgdGhlIEpTT04gcmVzb3VyY2UgVVJMIChhIGxpc3Qg b3IgaGFzaCB0YWJsZSksIG9yCisjZiBpZiBVUkwgcmV0dXJucyA0MDMgb3IgNDA0LiIKICAgKGd1 YXJkIChjICgoYW5kIChodHRwLWdldC1lcnJvcj8gYykKLSAgICAgICAgICAgICAgICAgICg9IDQw NCAoaHR0cC1nZXQtZXJyb3ItY29kZSBjKSkpCi0gICAgICAgICAgICAgI2YpKSAgICAgICAgICAg ICAgICAgICAgICAgOyJleHBlY3RlZCIgaWYgcGFja2FnZSBpcyB1bmtub3duCi0gICAgKGxldCog KChwb3J0IChodHRwLWZldGNoIHVybCAjOmhlYWRlcnMgJygodXNlci1hZ2VudCAuICJHTlUgR3Vp bGUiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFjY2Vw dCAuICJhcHBsaWNhdGlvbi9qc29uIikpKSkKLSAgICAgICAgICAgKHJlc3VsdCAoaGFzaC10YWJs ZS0+YWxpc3QgKGpzb24tPnNjbSBwb3J0KSkpKQorICAgICAgICAgICAgICAgICAgKGxldCAoKGVy cm9yIChodHRwLWdldC1lcnJvci1jb2RlIGMpKSkKKyAgICAgICAgICAgICAgICAgICAgKG9yICg9 IDQwMyBlcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgICg9IDQwNCBlcnJvcikpKSkKKyAg ICAgICAgICAgICAjZikpCisgICAgOzsgTm90ZTogbWFueSB3ZWJzaXRlcyByZXR1cm5zIDQwMyBp ZiB3ZSBvbWl0IGEgJ1VzZXItQWdlbnQnIGhlYWRlci4KKyAgICAobGV0KiAoKHBvcnQgICAoaHR0 cC1mZXRjaCB1cmwgIzpoZWFkZXJzICcoKHVzZXItYWdlbnQgLiAiR05VIEd1aWxlIikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFjY2VwdCAuICJhcHBs aWNhdGlvbi9qc29uIikpKSkKKyAgICAgICAgICAgKHJlc3VsdCAoanNvbi0+c2NtIHBvcnQpKSkK ICAgICAgIChjbG9zZS1wb3J0IHBvcnQpCiAgICAgICByZXN1bHQpKSkKKworKGRlZmluZSAoanNv bi1mZXRjaC1hbGlzdCB1cmwpCisgICJSZXR1cm4gYW4gYWxpc3QgcmVwcmVzZW50YXRpb24gb2Yg dGhlIEpTT04gcmVzb3VyY2UgVVJMLCBvciAjZiBpZiBVUkwKK3JldHVybnMgNDAzIG9yIDQwNC4i CisgIChoYXNoLXRhYmxlLT5hbGlzdCAoanNvbi1mZXRjaCB1cmwpKSkKZGlmZiAtLWdpdCBhL2d1 aXgvaW1wb3J0L3B5cGkuc2NtIGIvZ3VpeC9pbXBvcnQvcHlwaS5zY20KaW5kZXggYmIwZGIxYmE4 Li42YmVhYjZiMDEgMTAwNjQ0Ci0tLSBhL2d1aXgvaW1wb3J0L3B5cGkuc2NtCisrKyBiL2d1aXgv aW1wb3J0L3B5cGkuc2NtCkBAIC01MSw4ICs1MSw4IEBACiAoZGVmaW5lIChweXBpLWZldGNoIG5h bWUpCiAgICJSZXR1cm4gYW4gYWxpc3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIFB5UEkgbWV0YWRh dGEgZm9yIHRoZSBwYWNrYWdlIE5BTUUsCiBvciAjZiBvbiBmYWlsdXJlLiIKLSAgKGpzb24tZmV0 Y2ggKHN0cmluZy1hcHBlbmQgImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvIgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBuYW1lICIvanNvbiIpKSkKKyAgKGpzb24tZmV0Y2gtYWxp c3QgKHN0cmluZy1hcHBlbmQgImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvIgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lICIvanNvbiIpKSkKIAogOzsgRm9yIHBh Y2thZ2VzIGZvdW5kIG9uIFB5UEkgdGhhdCBsYWNrIGEgc291cmNlIGRpc3RyaWJ1dGlvbi4KIChk ZWZpbmUtY29uZGl0aW9uLXR5cGUgJm1pc3Npbmctc291cmNlLWVycm9yICZlcnJvcgpkaWZmIC0t Z2l0IGEvZ3VpeC9pbXBvcnQvc3RhY2thZ2Uuc2NtIGIvZ3VpeC9pbXBvcnQvc3RhY2thZ2Uuc2Nt CmluZGV4IDViMjVhZGM2Ny4uZWM5M2ZiY2VkIDEwMDY0NAotLS0gYS9ndWl4L2ltcG9ydC9zdGFj a2FnZS5zY20KKysrIGIvZ3VpeC9pbXBvcnQvc3RhY2thZ2Uuc2NtCkBAIC02MCw3ICs2MCw3IEBA CiAgICAgIChsZXQqICgodXJsIChpZiAoc3RyaW5nPT8gIiIgdmVyc2lvbikKICAgICAgICAgICAg ICAgICAgICAgIChzdHJpbmctYXBwZW5kICVzdGFja2FnZS11cmwgIi9sdHMiKQogICAgICAgICAg ICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgJXN0YWNrYWdlLXVybCAiL2x0cy0iIHZlcnNpb24p KSkKLSAgICAgICAgICAgIChsdHMtaW5mbyAoanNvbi1mZXRjaCB1cmwpKSkKKyAgICAgICAgICAg IChsdHMtaW5mbyAoanNvbi1mZXRjaC1hbGlzdCB1cmwpKSkKICAgICAgICAoaWYgbHRzLWluZm8K ICAgICAgICAgICAgKHJldmVyc2UgbHRzLWluZm8pCiAgICAgICAgICAgIChsZWF2ZS13aXRoLW1l c3NhZ2UgIkxUUyByZWxlYXNlIHZlcnNpb24gbm90IGZvdW5kOiB+YSIgdmVyc2lvbikpKSkpKQot LSAKMi4xNy4xCgo= --00000000000036c425056e4e1a6d--