From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Ryan Crum Newsgroups: gmane.emacs.bugs Subject: bug#12634: Patch for pretty-printing in json.el Date: Sat, 27 Oct 2012 15:31:46 -0400 Message-ID: References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=f46d044283d8a476f804cd0f7c62 X-Trace: ger.gmane.org 1351366371 17972 80.91.229.3 (27 Oct 2012 19:32:51 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 27 Oct 2012 19:32:51 +0000 (UTC) Cc: 12634@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Oct 27 21:33:00 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1TSC7v-0002XK-7q for geb-bug-gnu-emacs@m.gmane.org; Sat, 27 Oct 2012 21:32:59 +0200 Original-Received: from localhost ([::1]:56027 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TSC7n-0005Rc-Ao for geb-bug-gnu-emacs@m.gmane.org; Sat, 27 Oct 2012 15:32:51 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:42150) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TSC7k-0005RX-9o for bug-gnu-emacs@gnu.org; Sat, 27 Oct 2012 15:32:49 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TSC7j-0000Gk-0z for bug-gnu-emacs@gnu.org; Sat, 27 Oct 2012 15:32:48 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:54049) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TSC7i-0000Gg-TQ for bug-gnu-emacs@gnu.org; Sat, 27 Oct 2012 15:32:46 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1TSC9u-0005dA-Dh for bug-gnu-emacs@gnu.org; Sat, 27 Oct 2012 15:35:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Ryan Crum Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 27 Oct 2012 19:35:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 12634 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 12634-submit@debbugs.gnu.org id=B12634.135136644621574 (code B ref 12634); Sat, 27 Oct 2012 19:35:02 +0000 Original-Received: (at 12634) by debbugs.gnu.org; 27 Oct 2012 19:34:06 +0000 Original-Received: from localhost ([127.0.0.1]:36066 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TSC90-0005bv-CE for submit@debbugs.gnu.org; Sat, 27 Oct 2012 15:34:06 -0400 Original-Received: from mail-wg0-f46.google.com ([74.125.82.46]:64925) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TSC8x-0005bm-7O for 12634@debbugs.gnu.org; Sat, 27 Oct 2012 15:34:04 -0400 Original-Received: by mail-wg0-f46.google.com with SMTP id dt12so2595576wgb.15 for <12634@debbugs.gnu.org>; Sat, 27 Oct 2012 12:31:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=AagA1tOGzBo/ywltOiZT81R8CNovuL7hTYXo+oNkdRQ=; b=GoTDpMMkbMxHZNyFu3MKnI2JLjh2Qs4JG7j7VGLSTqoR68M0zqWn8qnDa3BqtsNVkR FbnvehbiRb+qT3NN2aOrzrtfkZsJfmXMvotGeovbrpYFyMZ28DgVb4Bqec+P0W1PLfm4 gkvsjAavt1IWM5fKEKW1qYkqg2wGZ5TI52yD8fyd4TguR5xmuFGfmnva8Y7wBaRy+GlG ymlaUXNqPrWKsIyIiBiYxLb/5ardtwCpsISruF+3PRiObcldxXN7jSG8Cwed10it6q8l a/Zh1aHAnkXpozNdsPRInp+gB+kCRRzxMZLpzfMhBsAxh7prsfxR9UhEF8WAgxxmPLbF D2hQ== Original-Received: by 10.180.99.194 with SMTP id es2mr9425519wib.15.1351366306199; Sat, 27 Oct 2012 12:31:46 -0700 (PDT) Original-Received: by 10.194.44.40 with HTTP; Sat, 27 Oct 2012 12:31:46 -0700 (PDT) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:66120 Archived-At: --f46d044283d8a476f804cd0f7c62 Content-Type: multipart/alternative; boundary=f46d044283d8a476ef04cd0f7c60 --f46d044283d8a476ef04cd0f7c60 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Cool, new patch attached. I've consolidated current-separator into current-indentation and created a little private helper function `json--current-whitespace' for the newline/indentation. I've also created a var called `json-encoding-lisp-style-closings' per your request. :-) Just let me know if there's anything else. Thanks, -Ryan On Thu, Oct 25, 2012 at 2:08 PM, Stefan Monnier w= rote: > It looks OK overall, but I do have some comments: > - it would be better not to re-compute json-encoding-current-separator > every time we call json-encode, since that function is called all > the time. > IOW, build it once in an external caller. Or better yet: get rid of > json-encoding-current-separator and add a "\n" at the beginning of > json-encoding-current-indentation instead. > - you can use the "json--" prefix to indicate it is an internal > variable/function. > - You could also prefer to place the closing ] at the end of the > previous line, =C3=A0 la Lisp ;-) > > > Stefan > --f46d044283d8a476ef04cd0f7c60 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Cool, new patch attached. I've consolidated current-separator into curr= ent-indentation and created a little private helper function `json--current= -whitespace' for the newline/indentation.

I've also created = a var called `json-encoding-lisp-style-closings' per your request. :-)<= br>
Just let me know if there's anything else.

Thanks,

-R= yan

On Thu, Oct 25, 2012 at 2:08 PM, Stef= an Monnier <monnier@iro.umontreal.ca> wrote:
It looks OK overall, but I do have some comm= ents:
- it would be better not to re-compute json-encoding-current-separator
=C2=A0 every time we call json-encode, since that function is called all =C2=A0 the time.
=C2=A0 IOW, build it once in an external caller. =C2=A0Or better yet: get r= id of
=C2=A0 json-encoding-current-separator and add a "\n" at the begi= nning of
=C2=A0 json-encoding-current-indentation instead.
- you can use the "json--" prefix to indicate it is an internal =C2=A0 variable/function.
- You could also prefer to place the closing ] at the end of the
=C2=A0 previous line, =C3=A0 la Lisp ;-)


=C2=A0 =C2=A0 =C2=A0 =C2=A0 Stefan

--f46d044283d8a476ef04cd0f7c60-- --f46d044283d8a476f804cd0f7c62 Content-Type: application/octet-stream; name=json-pretty-printing Content-Disposition: attachment; filename=json-pretty-printing Content-Transfer-Encoding: base64 X-Attachment-Id: f_h8t4kupb0 KioqIGEvanNvbi5lbAotLS0gYi9qc29uLmVsCioqKioqKioqKioqKioqKgoqKiogMyw5ICoqKioK ICA7OyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KICAKICA7OyBBdXRob3I6IEVkd2FyZCBPJ0Nvbm5vciA8dGVkQG9jb25ub3IuY3g+CiEgOzsg VmVyc2lvbjogMS4zCiAgOzsgS2V5d29yZHM6IGNvbnZlbmllbmNlCiAgCiAgOzsgVGhpcyBmaWxl IGlzIHBhcnQgb2YgR05VIEVtYWNzLgotLS0gMyw5IC0tLS0KICA7OyBDb3B5cmlnaHQgKEMpIDIw MDYtMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAKICA7OyBBdXRob3I6IEVk d2FyZCBPJ0Nvbm5vciA8dGVkQG9jb25ub3IuY3g+CiEgOzsgVmVyc2lvbjogMS40CiAgOzsgS2V5 d29yZHM6IGNvbnZlbmllbmNlCiAgCiAgOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEVtYWNz LgoqKioqKioqKioqKioqKioKKioqIDQ4LDUzICoqKioKLS0tIDQ4LDU0IC0tLS0KICA7OyAyMDA2 LTEyLTI5IC0gWEVtYWNzIHN1cHBvcnQsIGZyb20gQWlkYW4gS2Vob2UgPGtlaG9lYUBwYXJoYXNh cmQubmV0Pi4KICA7OyAyMDA4LTAyLTIxIC0gSW5zdGFsbGVkIGluIEdOVSBFbWFjcy4KICA7OyAy MDExLTEwLTE3IC0gUGF0Y2ggYGpzb24tYWxpc3QtcCcgYW5kIGBqc29uLXBsaXN0LXAnIHRvIGF2 b2lkIHJlY3Vyc2lvbiAtdHp6CisgOzsgMjAxMi0xMC0yNSAtIEFkZGVkIHByZXR0eS1wcmludGVk IHJlZm9ybWF0dGluZyAtUnlhbiBDcnVtIChyeWFuQHJ5YW5jcnVtLm9yZykKICAKICA7OzsgQ29k ZToKICAKKioqKioqKioqKioqKioqCioqKiA5OSwxMDQgKioqKiBJZiB0aGlzIGhhcyB0aGUgc2Ft ZSB2YWx1ZSBhcyBganNvbi1mYWxzZScsIHlvdSBtaWdodCBub3QgYmUgYWJsZSB0bwotLS0gMTAw LDEyNCAtLS0tCiAgdGVsbCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGBmYWxzZScgYW5kIGBudWxs Jy4gIENvbnNpZGVyIGxldC1iaW5kaW5nCiAgdGhpcyBhcm91bmQgeW91ciBjYWxsIHRvIGBqc29u LXJlYWQnIGluc3RlYWQgb2YgYHNldHEnaW5nIGl0LiIpCiAgCisgKGRlZnZhciBqc29uLWVuY29k aW5nLWRlZmF1bHQtc2VwYXJhdG9yICIsICIKKyAgICJWYWx1ZSB0byB1c2UgYXMgYW4gZWxlbWVu dCBzZXBlcmF0b3Igd2hlbiBlbmNvZGluZy4iKQorIAorIChkZWZ2YXIganNvbi1lbmNvZGluZy1k ZWZhdWx0LWluZGVudGF0aW9uICIgICIKKyAgICJUaGUgZGVmYXVsdCBpbmRlbnRhdGlvbiBsZXZl bCBmb3IgZW5jb2RpbmcuIFVzZWQgb25seSB3aGVuCisgYGpzb24tZW5jb2RpbmctcHJldHR5LXBy aW50JyBpcyBub24tbmlsLiIpCisgCisgKGRlZnZhciBqc29uLWVuY29kaW5nLWN1cnJlbnQtaW5k ZW50YXRpb24gIiIKKyAgICJJbnRlcm5hbGx5IHVzZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgY3Vy cmVudCBpbmRlbnRhdGlvbiBsZXZlbCBvZgorIGVuY29kaW5nLiBVc2VkIG9ubHkgd2hlbiBganNv bi1lbmNvZGluZy1wcmV0dHktcHJpbnQnIGlzIG5vbi1uaWwuIikKKyAKKyAoZGVmdmFyIGpzb24t ZW5jb2RpbmctcHJldHR5LXByaW50IG5pbAorICAgIlNldHRpbmcgdGhpcyB0byBub24tbmlsIHdp bGwgcmVzdWx0IGluIHRoZSBvdXRwdXQgb2YgYGpzb24tZW5jb2RlJworIHRvIGJlIHByZXR0eS1w cmludGVkLiIpCisgCisgKGRlZnZhciBqc29uLWVuY29kaW5nLWxpc3Atc3R5bGUtY2xvc2luZ3Mg bmlsCisgICAiU2V0dGluZyB0aGlzIHRvIGB0JyB3aWxsIGNhdXNlIF0gYW5kIH0gY2xvc2luZ3Mg dG8gaGFwcGVuIGxpc3Atc3R5bGUsCisgd2l0aG91dCBpbmRlbnRhdGlvbi4iKQorIAogIAwKICAK ICA7OzsgVXRpbGl0aWVzCioqKioqKioqKioqKioqKgoqKiogMzg3LDQyOSAqKioqIFBsZWFzZSBz ZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgYGpzb24tb2JqZWN0LXR5cGUnIGFuZCBganNvbi1rZXkt dHlwZScuIgogIAogIDs7IEhhc2ggdGFibGUgZW5jb2RpbmcKICAKICAoZGVmdW4ganNvbi1lbmNv ZGUtaGFzaC10YWJsZSAoaGFzaC10YWJsZSkKICAgICJSZXR1cm4gYSBKU09OIHJlcHJlc2VudGF0 aW9uIG9mIEhBU0gtVEFCTEUuIgohICAgKGZvcm1hdCAieyVzfSIKICAgICAgICAgICAgKGpzb24t am9pbgogICAgICAgICAgICAgKGxldCAocikKISAgICAgICAgICAgICAgKG1hcGhhc2gKISAgICAg ICAgICAgICAgIChsYW1iZGEgKGsgdikKISAgICAgICAgICAgICAgICAgKHB1c2ggKGZvcm1hdCAi JXM6JXMiCiEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGpzb24tZW5jb2RlIGspCiEg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGpzb24tZW5jb2RlIHYpKQohICAgICAgICAg ICAgICAgICAgICAgICByKSkKISAgICAgICAgICAgICAgIGhhc2gtdGFibGUpCiAgICAgICAgICAg ICAgIHIpCiEgICAgICAgICAgICAiLCAiKSkpCiAgCiAgOzsgTGlzdCBlbmNvZGluZyAoaW5jbHVk aW5nIGFsaXN0cyBhbmQgcGxpc3RzKQogIAogIChkZWZ1biBqc29uLWVuY29kZS1hbGlzdCAoYWxp c3QpCiAgICAiUmV0dXJuIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBBTElTVC4iCiEgICAoZm9y bWF0ICJ7JXN9IgohICAgICAgICAgICAoanNvbi1qb2luIChtYXBjYXIgKGxhbWJkYSAoY29ucykK ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiJXM6JXMiCiEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGpzb24tZW5jb2RlIChjYXIgY29ucykp CiEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGpzb24tZW5jb2RlIChj ZHIgY29ucykpKSkKISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaXN0KQohICAgICAg ICAgICAgICAgICAgICAgICIsICIpKSkKICAKICAoZGVmdW4ganNvbi1lbmNvZGUtcGxpc3QgKHBs aXN0KQogICAgIlJldHVybiBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgUExJU1QuIgogICAgKGxl dCAocmVzdWx0KQogICAgICAod2hpbGUgcGxpc3QKISAgICAgICAocHVzaCAoY29uY2F0IChqc29u LWVuY29kZSAoY2FyIHBsaXN0KSkKISAgICAgICAgICAgICAgICAgICAgICI6IgohICAgICAgICAg ICAgICAgICAgICAgKGpzb24tZW5jb2RlIChjYWRyIHBsaXN0KSkpCiEgICAgICAgICAgICAgcmVz dWx0KQogICAgICAgIChzZXRxIHBsaXN0IChjZGRyIHBsaXN0KSkpCiEgICAgIChjb25jYXQgInsi IChqc29uLWpvaW4gKG5yZXZlcnNlIHJlc3VsdCkgIiwgIikgIn0iKSkpCiAgCiAgKGRlZnVuIGpz b24tZW5jb2RlLWxpc3QgKGxpc3QpCiAgICAiUmV0dXJuIGEgSlNPTiByZXByZXNlbnRhdGlvbiBv ZiBMSVNULgotLS0gNDA3LDQ5MyAtLS0tCiAgCiAgOzsgSGFzaCB0YWJsZSBlbmNvZGluZwogIAor IChkZWZ1biBqc29uLS1jdXJyZW50LXdoaXRlc3BhY2UgKCkKKyAgIChpZiBqc29uLWVuY29kaW5n LXByZXR0eS1wcmludAorICAgICAgIChjb25jYXQgIlxuIiBqc29uLWVuY29kaW5nLWN1cnJlbnQt aW5kZW50YXRpb24pCisgICAgICIiKSkKKyAKICAoZGVmdW4ganNvbi1lbmNvZGUtaGFzaC10YWJs ZSAoaGFzaC10YWJsZSkKICAgICJSZXR1cm4gYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIEhBU0gt VEFCTEUuIgohICAgKGZvcm1hdCAoaWYganNvbi1lbmNvZGluZy1wcmV0dHktcHJpbnQgInslcyVz fSIgInslc30iKQogICAgICAgICAgICAoanNvbi1qb2luCiAgICAgICAgICAgICAobGV0IChyKQoh ICAgICAgICAgICAgICAobGV0ICgoanNvbi1lbmNvZGluZy1jdXJyZW50LWluZGVudGF0aW9uCiEg ICAgICAgICAgICAgICAgICAgICAoaWYganNvbi1lbmNvZGluZy1wcmV0dHktcHJpbnQKISAgICAg ICAgICAgICAgICAgICAgICAgICAoY29uY2F0IGpzb24tZW5jb2RpbmctY3VycmVudC1pbmRlbnRh dGlvbgohICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi1lbmNvZGluZy1kZWZh dWx0LWluZGVudGF0aW9uKQohICAgICAgICAgICAgICAgICAgICAgICAiIikpKQohICAgICAgICAg ICAgICAgIChtYXBoYXNoCiEgICAgICAgICAgICAgICAgIChsYW1iZGEgKGsgdikKISAgICAgICAg ICAgICAgICAgICAocHVzaCAoZm9ybWF0CiEgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBq c29uLWVuY29kaW5nLXByZXR0eS1wcmludAohICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IiVzJXM6ICVzIgohICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyVzOiVzIikKISAgICAg ICAgICAgICAgICAgICAgICAgICAgKGpzb24tLWN1cnJlbnQtd2hpdGVzcGFjZSkKISAgICAgICAg ICAgICAgICAgICAgICAgICAgKGpzb24tZW5jb2RlIGspCiEgICAgICAgICAgICAgICAgICAgICAg ICAgIChqc29uLWVuY29kZSB2KSkKISAgICAgICAgICAgICAgICAgICAgICAgICByKSkKISAgICAg ICAgICAgICAgICAgaGFzaC10YWJsZSkpCiAgICAgICAgICAgICAgIHIpCiEgICAgICAgICAgICBq c29uLWVuY29kaW5nLWRlZmF1bHQtc2VwYXJhdG9yKQohICAgICAgICAgICAoaWYganNvbi1lbmNv ZGluZy1saXNwLXN0eWxlLWNsb3NpbmdzCiEgICAgICAgICAgICAgICAiIgohICAgICAgICAgICAg ICAgKGpzb24tLWN1cnJlbnQtd2hpdGVzcGFjZSkpKSkKICAKICA7OyBMaXN0IGVuY29kaW5nIChp bmNsdWRpbmcgYWxpc3RzIGFuZCBwbGlzdHMpCiAgCiAgKGRlZnVuIGpzb24tZW5jb2RlLWFsaXN0 IChhbGlzdCkKICAgICJSZXR1cm4gYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIEFMSVNULiIKISAg IChmb3JtYXQgKGlmIGpzb24tZW5jb2RpbmctcHJldHR5LXByaW50ICJ7JXMlc30iICJ7JXN9IikK ISAgICAgICAgICAgKGpzb24tam9pbgohICAgICAgICAgICAgKGxldCAoKGpzb24tZW5jb2Rpbmct Y3VycmVudC1pbmRlbnRhdGlvbgohICAgICAgICAgICAgICAgICAgIChpZiBqc29uLWVuY29kaW5n LXByZXR0eS1wcmludAohICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0IGpzb24tZW5jb2Rp bmctY3VycmVudC1pbmRlbnRhdGlvbgohICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpz b24tZW5jb2RpbmctZGVmYXVsdC1pbmRlbnRhdGlvbikKISAgICAgICAgICAgICAgICAgICAgICIi KSkpCiEgICAgICAgICAgICAgIChtYXBjYXIgKGxhbWJkYSAoY29ucykKISAgICAgICAgICAgICAg ICAgICAgICAgIChmb3JtYXQgKGlmIGpzb24tZW5jb2RpbmctcHJldHR5LXByaW50CiEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMlczogJXMiCiEgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIiVzJXM6JXMiKQohICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoanNvbi0tY3VycmVudC13aGl0ZXNwYWNlKQohICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoanNvbi1lbmNvZGUgKGNhciBjb25zKSkKISAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGpzb24tZW5jb2RlIChjZHIgY29ucykpKSkKISAgICAgICAgICAgICAgICAgICAg ICBhbGlzdCkpCiEgICAgICAgICAgICAgICAgICAgICAganNvbi1lbmNvZGluZy1kZWZhdWx0LXNl cGFyYXRvcikKISAgICAgICAgICAgKGlmIGpzb24tZW5jb2RpbmctbGlzcC1zdHlsZS1jbG9zaW5n cwohICAgICAgICAgICAgICAgIiIKISAgICAgICAgICAgICAoanNvbi0tY3VycmVudC13aGl0ZXNw YWNlKSkpKQogIAogIChkZWZ1biBqc29uLWVuY29kZS1wbGlzdCAocGxpc3QpCiAgICAiUmV0dXJu IGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBQTElTVC4iCiAgICAobGV0IChyZXN1bHQpCiAgICAg ICh3aGlsZSBwbGlzdAohICAgICAgIChsZXQgKChqc29uLWVuY29kaW5nLWN1cnJlbnQtaW5kZW50 YXRpb24KISAgICAgICAgICAgICAgKGlmIGpzb24tZW5jb2RpbmctcHJldHR5LXByaW50CiEgICAg ICAgICAgICAgICAgICAoY29uY2F0IGpzb24tZW5jb2RpbmctY3VycmVudC1pbmRlbnRhdGlvbgoh ICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLWVuY29kaW5nLWRlZmF1bHQtaW5kZW50YXRp b24pCiEgICAgICAgICAgICAgICAgIiIpKSkKISAgICAgICAgIChwdXNoIChjb25jYXQKISAgICAg ICAgICAgICAgICAoanNvbi1lbmNvZGluZy1jdXJyZW50LWluZGVudGF0aW9uKQohICAgICAgICAg ICAgICAgIChqc29uLWVuY29kZSAoY2FyIHBsaXN0KSkKISAgICAgICAgICAgICAgICAoaWYganNv bi1lbmNvZGluZy1wcmV0dHktcHJpbnQKISAgICAgICAgICAgICAgICAgICAgIjogIgohICAgICAg ICAgICAgICAgICAgIjoiKQohICAgICAgICAgICAgICAgIChqc29uLWVuY29kZSAoY2FkciBwbGlz dCkpKQohICAgICAgICAgICAgICAgcmVzdWx0KSkKICAgICAgICAoc2V0cSBwbGlzdCAoY2RkciBw bGlzdCkpKQohICAgICAoY29uY2F0ICJ7IgohICAgICAgICAgICAgIChqc29uLWpvaW4gKG5yZXZl cnNlIHJlc3VsdCkganNvbi1lbmNvZGluZy1kZWZhdWx0LXNlcGFyYXRvcikKISAgICAgICAgICAg ICAoaWYgKGFuZCBqc29uLWVuY29kaW5nLXByZXR0eS1wcmludAohICAgICAgICAgICAgICAgICAg ICAgIChub3QganNvbi1lbmNvZGluZy1saXNwLXN0eWxlLWNsb3NpbmdzKSkKISAgICAgICAgICAg ICAgICAgKGZvcm1hdCAiJXMiIChqc29uLS1jdXJyZW50LXdoaXRlc3BhY2UpKQohICAgICAgICAg ICAgICAgIiIpCiEgICAgICAgICAgICAgIn0iKSkpCiAgCiAgKGRlZnVuIGpzb24tZW5jb2RlLWxp c3QgKGxpc3QpCiAgICAiUmV0dXJuIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBMSVNULgoqKioq KioqKioqKioqKioKKioqIDQ2Miw0NjggKioqKiBiZWNvbWUgSlNPTiBvYmplY3RzLiIKICAKICAo ZGVmdW4ganNvbi1lbmNvZGUtYXJyYXkgKGFycmF5KQogICAgIlJldHVybiBhIEpTT04gcmVwcmVz ZW50YXRpb24gb2YgQVJSQVkuIgohICAgKGNvbmNhdCAiWyIgKG1hcGNvbmNhdCAnanNvbi1lbmNv ZGUgYXJyYXkgIiwgIikgIl0iKSkKICAKICAMCiAgCi0tLSA1MjYsNTQ5IC0tLS0KICAKICAoZGVm dW4ganNvbi1lbmNvZGUtYXJyYXkgKGFycmF5KQogICAgIlJldHVybiBhIEpTT04gcmVwcmVzZW50 YXRpb24gb2YgQVJSQVkuIgohICAgKGlmIChhbmQganNvbi1lbmNvZGluZy1wcmV0dHktcHJpbnQK ISAgICAgICAgICAgICg+IChsZW5ndGggYXJyYXkpIDApKQohICAgICAgIChjb25jYXQKISAgICAg ICAgKGxldCAoKGpzb24tZW5jb2RpbmctY3VycmVudC1pbmRlbnRhdGlvbgohICAgICAgICAgICAg ICAgKGNvbmNhdCBqc29uLWVuY29kaW5nLWN1cnJlbnQtaW5kZW50YXRpb24KISAgICAgICAgICAg ICAgICAgICAgICAganNvbi1lbmNvZGluZy1kZWZhdWx0LWluZGVudGF0aW9uKSkpCiEgICAgICAg ICAgKGNvbmNhdCAoZm9ybWF0ICJbJXMiIChqc29uLS1jdXJyZW50LXdoaXRlc3BhY2UpKQohICAg ICAgICAgICAgICAgICAgKGpzb24tam9pbiAobWFwY2FyICdqc29uLWVuY29kZSBhcnJheSkKISAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMlcyIKISAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBqc29uLWVuY29kaW5nLWRlZmF1bHQtc2VwYXJhdG9yCiEg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGpzb24tLWN1cnJlbnQtd2hpdGVz cGFjZSkpKSkpCiEgICAgICAgIChmb3JtYXQgIiVzXSIKISAgICAgICAgICAgICAgICAoaWYganNv bi1lbmNvZGluZy1saXNwLXN0eWxlLWNsb3NpbmdzCiEgICAgICAgICAgICAgICAgICAgICIiCiEg ICAgICAgICAgICAgICAgICAoanNvbi0tY3VycmVudC13aGl0ZXNwYWNlKSkpKQohICAgICAoY29u Y2F0ICJbIgohICAgICAgICAgICAgIChtYXBjb25jYXQgJ2pzb24tZW5jb2RlIGFycmF5IGpzb24t ZW5jb2RpbmctZGVmYXVsdC1zZXBhcmF0b3IpCiEgICAgICAgICAgICAgIl0iKSkpCiAgCiAgDAog IAoqKioqKioqKioqKioqKioKKioqIDUyOSw1MzQgKioqKiBBZHZhbmNlcyBwb2ludCBqdXN0IHBh c3QgSlNPTiBvYmplY3QuIgotLS0gNjEwLDYzOCAtLS0tCiAgICAgICAgICAoKGxpc3RwIG9iamVj dCkgICAgICAgIChqc29uLWVuY29kZS1saXN0IG9iamVjdCkpCiAgICAgICAgICAodCAgICAgICAg ICAgICAgICAgICAgIChzaWduYWwgJ2pzb24tZXJyb3IgKGxpc3Qgb2JqZWN0KSkpKSkKICAKKyA7 OyBQcmV0dHkgcHJpbnRpbmcKKyAKKyAoZGVmdW4ganNvbi1wcmV0dHktcHJpbnQtYnVmZmVyICgp CisgICAiUHJldHR5LXByaW50IGN1cnJlbnQgYnVmZmVyLiIKKyAgIChpbnRlcmFjdGl2ZSkKKyAg IChsZXQqICgoanNvbi1lbmNvZGluZy1wcmV0dHktcHJpbnQgdCkKKyAgICAgICAgICAoanNvbi1z dHJpbmcgKGpzb24tZW5jb2RlIChqc29uLXJlYWQtZnJvbS1zdHJpbmcgKGJ1ZmZlci1zdHJpbmcp KSkpCisgICAgICAgICAgKGJ1ZiAoY3VycmVudC1idWZmZXIpKSkKKyAgICAgKHdpdGgtY3VycmVu dC1idWZmZXIgYnVmCisgICAgICAgKGVyYXNlLWJ1ZmZlcikKKyAgICAgICAoaW5zZXJ0IGpzb24t c3RyaW5nKSkpKQorIAorIChkZWZ1biBqc29uLXByZXR0eS1wcmludCAoKQorICAgIlByZXR0eS1w cmludCBzZWxlY3RlZCByZWdpb24uIgorICAgKGludGVyYWN0aXZlKQorICAgKHVubGVzcyBtYXJr LWFjdGl2ZQorICAgICAoZXJyb3IgIk5vIHJlZ2lvbiBzZWxlY3RlZC4iKSkKKyAgIChsZXQgKChi ZWdpbiAocmVnaW9uLWJlZ2lubmluZykpCisgICAgICAgICAoZW5kIChyZWdpb24tZW5kKSkKKyAg ICAgICAgIChqc29uLWVuY29kaW5nLXByZXR0eS1wcmludCB0KSkKKyAgICAgKGtpbGwtcmVnaW9u IGJlZ2luIGVuZCkKKyAgICAgKGluc2VydCAoanNvbi1lbmNvZGUgKGpzb24tcmVhZC1mcm9tLXN0 cmluZyAoY3VycmVudC1raWxsIDApKSkpKSkKKyAKICAocHJvdmlkZSAnanNvbikKICAKICA7Ozsg anNvbi5lbCBlbmRzIGhlcmUK --f46d044283d8a476f804cd0f7c62--