From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Luke Lee Newsgroups: gmane.emacs.devel Subject: Fwd: Update earlier posted hideif.el enhancements Date: Mon, 25 Nov 2013 14:35:27 +0800 Message-ID: References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a113633543618eb04ebfa943b X-Trace: ger.gmane.org 1385361372 21215 80.91.229.3 (25 Nov 2013 06:36:12 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 25 Nov 2013 06:36:12 +0000 (UTC) Cc: emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Nov 25 07:36:19 2013 Return-path: Envelope-to: ged-emacs-devel@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 1VkpmK-0004xH-Rj for ged-emacs-devel@m.gmane.org; Mon, 25 Nov 2013 07:36:17 +0100 Original-Received: from localhost ([::1]:49897 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VkpmK-0007tA-Fo for ged-emacs-devel@m.gmane.org; Mon, 25 Nov 2013 01:36:16 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:38332) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VkpmF-0007t2-J4 for emacs-devel@gnu.org; Mon, 25 Nov 2013 01:36:12 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VkpmE-0000Ap-9E for emacs-devel@gnu.org; Mon, 25 Nov 2013 01:36:11 -0500 Original-Received: from mail-pb0-x236.google.com ([2607:f8b0:400e:c01::236]:41216) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VkpmD-0000Ac-Ey for emacs-devel@gnu.org; Mon, 25 Nov 2013 01:36:10 -0500 Original-Received: by mail-pb0-f54.google.com with SMTP id un15so4996610pbc.41 for ; Sun, 24 Nov 2013 22:36:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=OPo14ANg9f7g0sYZLfj9NqpPn7K/M4TYxw1fc91/IQY=; b=VXDwxN7g2e/i32RT+MKLVBvkpqYxNXpnaNh5vNqQWQ1FM/5hofHEnrFCkopzJsXaub SYPKSMNoe/zTXZGraMKd1Dw5wV1uFNzLKqGo6dG489SgUckEjNwHSd/EVIW4Csif6w8E 0vKnnMHUNGF9xW6tNHnWe0HuOtq/CiGRQt99QHVKJSqnA0R/93YJsorO3I1ZLiSP0dz2 XlvZIHhQ7mP0ac3VqIYaUxUqfjPqAUhzqP/okG32fiGvo6ikC3oipnIPBDIP5mSBVtNb 2PFH4klgAHsM+N58PFYNXjzs0rJBR1tdRfI7sjtkBdJzC25yqvZK4vj0ugitVf+oMr7z b+eg== X-Received: by 10.66.65.134 with SMTP id x6mr1106325pas.142.1385361367517; Sun, 24 Nov 2013 22:36:07 -0800 (PST) Original-Received: by 10.70.17.226 with HTTP; Sun, 24 Nov 2013 22:35:27 -0800 (PST) In-Reply-To: X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400e:c01::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:165682 Archived-At: --001a113633543618eb04ebfa943b Content-Type: multipart/alternative; boundary=001a113633543618e604ebfa9439 --001a113633543618e604ebfa9439 Content-Type: text/plain; charset=ISO-8859-1 >And your patch was mangled (lines too long that got wrapped during >transport). I unmangled it but the code it patches is indeed not in >Emacs's hideif.el. I think I should use attachments instead of putting them in email. >Could you post a patch relative to Emacs's hideif.el? Sure, no problem. Attached is the patch against Emacs trunk. I'm using git://git.savannah.gnu.org/emacs.git as my Emacs remote source. I've checked the trunk, master and emacs-24 and they seems to have the identical hideif.el version so I think it should be okay to patch it. I also add an custom option to prevent hiding the top level ifdefs for *.h files since they usually contain some re-inclusion protection and therefore it always got everything hidden when you tried to hide it twice. It was a bit annoying. Hope this helps. -- Best regards, Luke Lee 2013/11/25 Stefan Monnier > > Sure, my fault. I just thought that it will be easier for people that > > didn't have my earlier version yet. > > Hmm... looks like I was confused, indeed. I don't have your earlier > hideif.el. > > > Here is the patch, thanks. > > And your patch was mangled (lines too long that got wrapped during > transport). I unmangled it but the code it patches is indeed not in > Emacs's hideif.el. > > Could you post a patch relative to Emacs's hideif.el? > > > Stefan > --001a113633543618e604ebfa9439 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
>And your patch was mangled (lines too long that got wrapped du= ring
= >transport). =A0I unmangled it but the code it patches is indeed not in<= /span>
= >Emacs's hideif.el.

I thin= k I should use attachments instead of putting them in email.

>Could you post a patch relative to Emacs's hide= if.el?

Sure, no problem. Attached is the patch against Emacs tr= unk. I'm using
git://git.savannah.gnu.org/emacs.git as my Emacs remote= source. I've=A0
checked the trunk, master and emacs-24 and they seems to have the=A0
identical hideif.el version so I think it should be okay to patch = it.

I also add an custom option to prevent hi= ding the top level ifdefs for=A0
*.h files since they usually contain some re-inclusion protection and= =A0
therefore it always got everything hidden when you tried to h= ide it=A0
twice. It was a bit annoying.

Hope this helps.

--

Best regards,
Luke Lee


2013/11/25 Stefan Monnier <monnier@iro.umontreal.ca>
> Sure, my fault. I just thought tha= t it will be easier for people that
> didn't have my earlier version yet.

Hmm... looks like I was confused, indeed. =A0I don't have your ea= rlier
hideif.el.

> Here is the patch, thanks.

And your patch was mangled (lines too long that got wrapped during transport). =A0I unmangled it but the code it patches is indeed not in
Emacs's hideif.el.

Could you post a patch relative to Emacs's hideif.el?


=A0 =A0 =A0 =A0 Stefan

--001a113633543618e604ebfa9439-- --001a113633543618eb04ebfa943b Content-Type: application/octet-stream; name="hideif.patch" Content-Disposition: attachment; filename="hideif.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hof82f1z0 ZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL2hpZGVpZi5lbCBiL2xpc3AvcHJvZ21vZGVzL2hp ZGVpZi5lbAppbmRleCBlMjY0NjgyLi5iODlkNDJmIDEwMDY0NAotLS0gYS9saXNwL3Byb2dtb2Rl cy9oaWRlaWYuZWwKKysrIGIvbGlzcC9wcm9nbW9kZXMvaGlkZWlmLmVsCkBAIC0xLDkgKzEsOSBA QAogOzs7IGhpZGVpZi5lbCAtLS0gaGlkZXMgc2VsZWN0ZWQgY29kZSB3aXRoaW4gaWZkZWYKIAot OzsgQ29weXJpZ2h0IChDKSAxOTg4LCAxOTk0LCAyMDAxLTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCis7OyBDb3B5cmlnaHQgKEMpIDE5ODgsIDE5OTQsIDIwMDEtMjAxMyAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKIDs7IEF1dGhvcjogQnJpYW4gTWFyaWNrCi07 OwlEYW5pZWwgTGFMaWJlcnRlIDxsaWJlcnRlQGhvbG9uZXh1cy5vcmc+Cis7OyAgICAgIERhbmll bCBMYUxpYmVydGUgPGxpYmVydGVAaG9sb25leHVzLm9yZz4KIDs7IE1haW50YWluZXI6IEZTRgog OzsgS2V5d29yZHM6IGMsIG91dGxpbmVzCiAKQEAgLTM1LDkgKzM1LDkgQEAKIDs7IE0teCBoaWRl LWlmZGVmcyAgb3IgQy1jIEAgaAogOzsKIDs7IEhpZGUtaWZkZWYgc3VwcHJlc3NlcyB0aGUgZGlz cGxheSBvZiBjb2RlIHRoYXQgdGhlIHByZXByb2Nlc3NvciB3b3VsZG4ndAotOzsgcGFzcyB0aHJv dWdoLiAgVGhlIHN1cHBvcnQgb2YgY29uc3RhbnQgZXhwcmVzc2lvbnMgaW4gI2lmIGxpbmVzIGlz Ci07OyBsaW1pdGVkIHRvIGlkZW50aWZpZXJzLCBwYXJlbnMsIGFuZCB0aGUgb3BlcmF0b3JzOiAm JiwgfHwsICEsIGFuZAotOzsgImRlZmluZWQiLiAgUGxlYXNlIGV4dGVuZCB0aGlzLgorOzsgcGFz cyB0aHJvdWdoLiAgU3VwcG9ydCBjb21wbGV0ZSBDL0MrKyBleHByZXNzaW9uIGFuZCBwcmVjZWRl bmNlLgorOzsgSXQgd2lsbCBhdXRvbWF0aWNhbGx5IHNjYW5zIGZvciBuZXcgI2RlZmluZSBzeW1i b2xzIGFuZCBtYWNyb3Mgb24gdGhlIHdheQorOzsgcGFyc2luZy4KIDs7CiA7OyBUaGUgaGlkZGVu IGNvZGUgaXMgbWFya2VkIGJ5IGVsbGlwc2VzICguLi4pLiAgQmUKIDs7IGNhdXRpb3VzIHdoZW4g ZWRpdGluZyBuZWFyIGVsbGlwc2VzLCBzaW5jZSB0aGUgaGlkZGVuIHRleHQgaXMKQEAgLTY2LDEx ICs2NiwxMSBAQAogOzsKIDs7IChhZGQtaG9vayAnaGlkZS1pZmRlZi1tb2RlLWhvb2sKIDs7ICAg ICAgKGxhbWJkYSAoKQotOzsJICh1bmxlc3MgaGlkZS1pZmRlZi1kZWZpbmUtYWxpc3QKLTs7CSAg IChzZXRxIGhpZGUtaWZkZWYtZGVmaW5lLWFsaXN0Ci07OwkJJygobGlzdDEgT05FIFRXTykKLTs7 CQkgIChsaXN0MiBUV08gVEhSRUUpKSkpCi07OwkgKGhpZGUtaWZkZWYtdXNlLWRlZmluZS1hbGlz dCAnbGlzdDIpKSkgOyB1c2UgbGlzdDIgYnkgZGVmYXVsdAorOzsgICAgICAgKHVubGVzcyBoaWRl LWlmZGVmLWRlZmluZS1hbGlzdAorOzsgICAgICAgICAoc2V0cSBoaWRlLWlmZGVmLWRlZmluZS1h bGlzdAorOzsgICAgICAgICAgICAgICcoKGxpc3QxIE9ORSBUV08pCis7OyAgICAgICAgICAgICAg ICAobGlzdDIgVFdPIFRIUkVFKSkpKQorOzsgICAgICAgKGhpZGUtaWZkZWYtdXNlLWRlZmluZS1h bGlzdCAnbGlzdDIpKSkgOyB1c2UgbGlzdDIgYnkgZGVmYXVsdAogOzsKIDs7IFlvdSBjYW4gY2Fs bCBoaWRlLWlmZGVmLXVzZS1kZWZpbmUtYWxpc3QgKEMtYyBAIFUpIGF0IGFueSB0aW1lIHRvIHNw ZWNpZnkKIDs7IGFub3RoZXIgbGlzdCB0byB1c2UuCkBAIC05NywxMCArOTcsMTQgQEAKIDs7CiA7 OyBXcml0dGVuIGJ5IEJyaWFuIE1hcmljaywgYXQgR291bGQsIENvbXB1dGVyIFN5c3RlbXMgRGl2 aXNpb24sIFVyYmFuYSBJTC4KIDs7IEV4dGVuc2l2ZWx5IG1vZGlmaWVkIGJ5IERhbmllbCBMYUxp YmVydGUgKHdoaWxlIGF0IEdvdWxkKS4KKzs7Cis7OyBFeHRlbnNpdmVseSBtb2RpZmllZCBieSBM dWtlIExlZSBpbiAyMDEzIHRvIHN1cHBvcnQgY29tcGxldGUgQyBleHByZXNzaW9uCis7OyBldmFs dWF0aW9uIGFuZCBhcmd1bWVudGVkIG1hY3JvIGV4cGFuc2lvbi4KIAogOzs7IENvZGU6CiAKIChy ZXF1aXJlICdjYy1tb2RlKQorKGV2YWwtd2hlbi1jb21waWxlIChyZXF1aXJlICdjbCkpCiAKIChk ZWZncm91cCBoaWRlLWlmZGVmIG5pbAogICAiSGlkZSBzZWxlY3RlZCBjb2RlIHdpdGhpbiBgaWZk ZWYnLiIKQEAgLTEyNSwxMiArMTI5LDM0IEBACiAgICJOb24tbmlsIG1lYW5zIHNoYWRvdyB0ZXh0 IGluc3RlYWQgb2YgaGlkaW5nIGl0LiIKICAgOnR5cGUgJ2Jvb2xlYW4KICAgOmdyb3VwICdoaWRl LWlmZGVmCi0gIDp2ZXJzaW9uICIyMy4xIikKKyAgOnZlcnNpb24gIjI0LjUiKQogCiAoZGVmZmFj ZSBoaWRlLWlmZGVmLXNoYWRvdyAnKCh0ICg6aW5oZXJpdCBzaGFkb3cpKSkKICAgIkZhY2UgZm9y IHNoYWRvd2luZyBpZmRlZiBibG9ja3MuIgogICA6Z3JvdXAgJ2hpZGUtaWZkZWYKLSAgOnZlcnNp b24gIjIzLjEiKQorICA6dmVyc2lvbiAiMjQuNSIpCisKKyhkZWZjdXN0b20gaGlkZS1pZmRlZi1l eGNsdWRlLWRlZmluZS1yZWdleHAtcGF0dGVybiBuaWwKKyAgIklnbm9yZSAjZGVmaW5lIG5hbWUg aWYgdGhhdCBuYW1lIG1hdGNoIHRoaXMgZXhjbHVzaW9uIHBhdHRlcm4uIgorICA6dHlwZSAnc3Ry aW5nCisgIDpncm91cCAnaGlkZS1pZmRlZikKKworKGRlZmN1c3RvbSBoaWRlLWlmZGVmLWV4cGFu ZC1yZS1pbmNsdXNpb24tcHJvdGVjdGlvbiB0CisgICJXaGVuIGhpZGluZyBoZWFkZXIgZmlsZXMs IGFsd2F5cyBleHBhbmQgdGhlIHJlLWluY2x1c2lvbiBwcm90ZWN0aW5nIGlmZGVmcy4KK01vc3Qg aGVhZGVyIGZpbGVzIGFyZSB3cmFwcGVkIHdpdGggaWZkZWZzIHRvIHByZXZlbnQgcmUtaW5jbHVz aW9uOgorICAjaWZkZWYgX1hYWF9IRUFERVJfRklMRV9JTkNMVURFRF8KKyAgI2RlZmluZSBfWFhY X0hFQURFUl9GSUxFX0lOQ0xVREVEXworICAuLi4KKyAgI2VuZGlmCitoZW5jZSBpZiB3ZSB0cnkg dG8gaGlkZSBpZmRlZnMsIGl0IHdpbGwgaGlkZSBldmVyeXRoaW5nIHdoZW4gd2UgdHJpZWQKK3Ro ZSBzZWNvbmQgdGltZSBzaW5jZSBfWFhYX0hFQURFUl9GSUxFX0lOQ0xVREVEXyBhbHJlYWR5IGRl ZmluZWQuIgorICA6dHlwZSAnYm9vbGVhbgorICA6Z3JvdXAgJ2hpZGUtaWZkZWYpCisKKyhkZWZj dXN0b20gaGlkZS1pZmRlZi1oZWFkZXItcmVnZXhwLXBhdHRlcm4gIl4uKlxcLltoSF1cXChbaEhd XFx8W3hYXVt4WF1cXHxbcFBdW3BQXVxcKT8iCisgICJDL0MrKyBoZWFkZXIgZmlsZSBuYW1lIHBh dHRlcm5zLiBFZmZlY3RpdmUgb25seSBpZiAnaGlkZS1pZmRlZi1leHBhbmQtcmUtaW5jbHVzaW9u LXByb3RlY3Rpb24nIGlzIHQuIgorICA6dHlwZSAnc3RyaW5nCisgIDpncm91cCAnaGlkZS1pZmRl ZikKIAogCiAoZGVmdmFyIGhpZGUtaWZkZWYtbW9kZS1zdWJtYXAKQEAgLTE0Niw2ICsxNzIsOCBA QAogICAgIChkZWZpbmUta2V5IG1hcCAiXEMtZCIgJ2hpZGUtaWZkZWYtYmxvY2spCiAgICAgKGRl ZmluZS1rZXkgbWFwICJcQy1zIiAnc2hvdy1pZmRlZi1ibG9jaykKIAorICAgIChkZWZpbmUta2V5 IG1hcCAiZSIgJ2hpZi1ldmFsdWF0ZS1tYWNybykKKwogICAgIChkZWZpbmUta2V5IG1hcCAiXEMt cSIgJ2hpZGUtaWZkZWYtdG9nZ2xlLXJlYWQtb25seSkKICAgICAoZGVmaW5lLWtleSBtYXAgIlxD LXciICdoaWRlLWlmZGVmLXRvZ2dsZS1zaGFkb3dpbmcpCiAgICAgKHN1YnN0aXR1dGUta2V5LWRl ZmluaXRpb24KQEAgLTIyNSwzNSArMjUzLDM2IEBAIHRoYXQgdGhlIEMgcHJlcHJvY2Vzc29yIHdv dWxkIGVsaW1pbmF0ZSBtYXkgYmUgaGlkZGVuIGZyb20gdmlldy4KIFNldmVyYWwgdmFyaWFibGVz IGFmZmVjdCBob3cgdGhlIGhpZGluZyBpcyBkb25lOgogCiBgaGlkZS1pZmRlZi1lbnYnCi0JQW4g YXNzb2NpYXRpb24gbGlzdCBvZiBkZWZpbmVkIGFuZCB1bmRlZmluZWQgc3ltYm9scyBmb3IgdGhl Ci0JY3VycmVudCBidWZmZXIuICBJbml0aWFsbHksIHRoZSBnbG9iYWwgdmFsdWUgb2YgYGhpZGUt aWZkZWYtZW52JwotCWlzIHVzZWQuCisgICAgICAgIEFuIGFzc29jaWF0aW9uIGxpc3Qgb2YgZGVm aW5lZCBhbmQgdW5kZWZpbmVkIHN5bWJvbHMgZm9yIHRoZQorICAgICAgICBjdXJyZW50IGJ1ZmZl ci4gIEluaXRpYWxseSwgdGhlIGdsb2JhbCB2YWx1ZSBvZiBgaGlkZS1pZmRlZi1lbnYnCisgICAg ICAgIGlzIHVzZWQuCiAKIGBoaWRlLWlmZGVmLWRlZmluZS1hbGlzdCcKLQlBbiBhc3NvY2lhdGlv biBsaXN0IG9mIGRlZmluZWQgc3ltYm9sIGxpc3RzLgorICAgICAgICBBbiBhc3NvY2lhdGlvbiBs aXN0IG9mIGRlZmluZWQgc3ltYm9sIGxpc3RzLgogICAgICAgICBVc2UgYGhpZGUtaWZkZWYtc2V0 LWRlZmluZS1hbGlzdCcgdG8gc2F2ZSB0aGUgY3VycmVudCBgaGlkZS1pZmRlZi1lbnYnCiAgICAg ICAgIGFuZCBgaGlkZS1pZmRlZi11c2UtZGVmaW5lLWFsaXN0JyB0byBzZXQgdGhlIGN1cnJlbnQg YGhpZGUtaWZkZWYtZW52JwogICAgICAgICBmcm9tIG9uZSBvZiB0aGUgbGlzdHMgaW4gYGhpZGUt aWZkZWYtZGVmaW5lLWFsaXN0Jy4KIAogYGhpZGUtaWZkZWYtbGluZXMnCi0JU2V0IHRvIG5vbi1u aWwgdG8gbm90IHNob3cgI2lmLCAjaWZkZWYsICNpZm5kZWYsICNlbHNlLCBhbmQKLQkjZW5kaWYg bGluZXMgd2hlbiBoaWRpbmcuCisgICAgICAgIFNldCB0byBub24tbmlsIHRvIG5vdCBzaG93ICNp ZiwgI2lmZGVmLCAjaWZuZGVmLCAjZWxzZSwgYW5kCisgICAgICAgICNlbmRpZiBsaW5lcyB3aGVu IGhpZGluZy4KIAogYGhpZGUtaWZkZWYtaW5pdGlhbGx5JwotCUluZGljYXRlcyB3aGV0aGVyIGBo aWRlLWlmZGVmcycgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIEhpZGUtSWZkZWYgbW9kZQotCWlzIGFj dGl2YXRlZC4KKyAgICAgICAgSW5kaWNhdGVzIHdoZXRoZXIgYGhpZGUtaWZkZWZzJyBzaG91bGQg YmUgY2FsbGVkIHdoZW4gSGlkZS1JZmRlZiBtb2RlCisgICAgICAgIGlzIGFjdGl2YXRlZC4KIAog YGhpZGUtaWZkZWYtcmVhZC1vbmx5JwotCVNldCB0byBub24tbmlsIGlmIHlvdSB3YW50IHRvIG1h a2UgYnVmZmVycyByZWFkIG9ubHkgd2hpbGUgaGlkaW5nLgotCUFmdGVyIGBzaG93LWlmZGVmcycs IHJlYWQtb25seSBzdGF0dXMgaXMgcmVzdG9yZWQgdG8gcHJldmlvdXMgdmFsdWUuCisgICAgICAg IFNldCB0byBub24tbmlsIGlmIHlvdSB3YW50IHRvIG1ha2UgYnVmZmVycyByZWFkIG9ubHkgd2hp bGUgaGlkaW5nLgorICAgICAgICBBZnRlciBgc2hvdy1pZmRlZnMnLCByZWFkLW9ubHkgc3RhdHVz IGlzIHJlc3RvcmVkIHRvIHByZXZpb3VzIHZhbHVlLgogCiBcXHtoaWRlLWlmZGVmLW1vZGUtbWFw fSIKICAgOmdyb3VwICdoaWRlLWlmZGVmIDpsaWdodGVyICIgSWZkZWYiCiAgIChpZiBoaWRlLWlm ZGVmLW1vZGUKICAgICAgIChwcm9nbgogCTs7IGluaGVyaXQgZ2xvYmFsIHZhbHVlcwotCShzZXQg KG1ha2UtbG9jYWwtdmFyaWFibGUgJ2hpZGUtaWZkZWYtZW52KQotCSAgICAgKGRlZmF1bHQtdmFs dWUgJ2hpZGUtaWZkZWYtZW52KSkKKzs7CShzZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2hpZGUt aWZkZWYtZW52KSA7OyBbMjAxMi0wOS0yNyAxMTowNToyNiArMDgwMF0gTHVrZSByZW0gMiBpbnMg MgorOzsJICAgICAoZGVmYXVsdC12YWx1ZSAnaGlkZS1pZmRlZi1lbnYpKQorCShzZXQgJ2hpZGUt aWZkZWYtZW52IChkZWZhdWx0LXZhbHVlICdoaWRlLWlmZGVmLWVudikpCiAJKHNldCAobWFrZS1s b2NhbC12YXJpYWJsZSAnaGlkZS1pZmRlZi1oaWRpbmcpCiAJICAgICAoZGVmYXVsdC12YWx1ZSAn aGlkZS1pZmRlZi1oaWRpbmcpKQogCShzZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2hpZi1vdXRz aWRlLXJlYWQtb25seSkgYnVmZmVyLXJlYWQtb25seSkKQEAgLTI5MSwxNiArMzIwLDYxIEBAIFNl dmVyYWwgdmFyaWFibGVzIGFmZmVjdCBob3cgdGhlIGhpZGluZyBpcyBkb25lOgogICAod2hpbGUg KD0gKGxvZ2FuZCAxIChza2lwLWNoYXJzLWJhY2t3YXJkICJcXFxcIikpIDEpCiAgICAgKGVuZC1v Zi1saW5lIDIpKSkKIAorKGRlZnVuIG1lcmdlLWlmZGVmLXJlZ2lvbiAoc3RhcnQgZW5kKQorICA7 OyBHZW5lcm5hbGx5IHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbCBpdHNlbGYgcmVjdXJzaXZlbHkg c2luY2UgdGhlcmUgc2hvdWxkIG9yaWdpbmFsbHkKKyAgOzsgZXhpc3RzIG5vIHVuLW1lcmdlZCBy ZWdpb25zOyBob3dldmVyLCBpZiBhIHBhcnQgb2YgdGhlIGZpbGUgaXMgaGlkZGVuIHdpdGggJ2hp ZGUtaWZkZWYtbGluZXMnCisgIDs7IGFzIG5pbCB3aGlsZSBhbm90aGVyIHBhcnQgd2l0aCAndCwg dGhpcyBjYXNlIGhhcHBlbnMuCisgIDs7IFRPRE86IHNob3VsZCB3ZSBtZXJnZT8gb3IganVzdCBj cmVhdGUgYSBjb250YWluZXIgb3ZlcmxheT8gLS0gdGhpcyBjYW4gcHJldmVudCBoaWRlaWYtc2hv dy1pZmRlZgorICA7OyBleHBhbmQgdG9vIG1hbnkgc2luY2UgdGhlcmUgaXMgb25seSBhIGJpZyBv dmVybGF5IGV4aXN0cyB0aGVyZSB3aXRob3V0IGFueSBzbWFsbGVyIG92ZXJsYXlzLgorICAiTWVy Z2UgbmVhcmJ5IGlmZGVmIHJlZ2lvbnMgdG8gZm9ybSBhIGJpZ2dlciBvdmVybGF5LiBUaGlzIHdp bGwgZGVjcmVhc2UgdGhlCit0b3RhbCBudW1iZXIgb2Ygb3ZlcmxheXMgY3JlYXRlZC4iCisgIChz YXZlLXJlc3RyaWN0aW9uCisgICAgKHdpZGVuKSA7OyBvdGhlcndpc2UgKHBvaW50LW1pbikgYW5k IChwb2ludC1tYXgpIHdpbGwgYmUKKyAgICAgICAgICAgIDs7IHJlc3RyaWN0ZWQgYW5kIHRodXMg ZmFpbCB0byBmaW5kIG5laWdoYm9yIG92ZXJsYXlzCisgICAgKGxldCAoKGJlZ292cnMgKG92ZXJs YXlzLWluCisgICAgICAgICAgICAgICAgICAgIChtYXggKC0gc3RhcnQgMikgKHBvaW50LW1pbikp CisgICAgICAgICAgICAgICAgICAgIChtYXggKC0gc3RhcnQgMSkgKHBvaW50LW1pbikpKSkKKyAg ICAgICAgICAoZW5kb3ZycyAob3ZlcmxheXMtaW4KKyAgICAgICAgICAgICAgICAgICAgKG1pbiAo KyBlbmQgMSkgKHBvaW50LW1heCkpCisgICAgICAgICAgICAgICAgICAgIChtaW4gKCsgZW5kIDIp IChwb2ludC1tYXgpKSkpCisgICAgICAgICAgKG9iIG5pbCkKKyAgICAgICAgICAob2UgbmlsKQor ICAgICAgICAgIGIgZSkKKyAgICAgIDs7IG1lcmdlIG92ZXJsYXlzIGJlZm9yZSAnc3RhcnQnCisg ICAgICAoZG9saXN0IChvIGJlZ292cnMpCisgICAgICAgICh3aGVuIChvdmVybGF5LWdldCBvICdo aWRlLWlmZGVmKQorICAgICAgICAgIChzZXRxIGIgKG1pbiBzdGFydCAob3ZlcmxheS1zdGFydCBv KSkKKyAgICAgICAgICAgICAgICBlIChtYXggZW5kIChvdmVybGF5LWVuZCBvKSkpCisgICAgICAg ICAgKG1vdmUtb3ZlcmxheSBvIGIgZSkKKyAgICAgICAgICAobWVyZ2UtaWZkZWYtcmVnaW9uIGIg ZSkKKyAgICAgICAgICAoc2V0cSBvYiBvKSkpCisgICAgICA7OyBtZXJnZSBvdmVybGF5cyBhZnRl ciAnZW5kJworICAgICAgKGRvbGlzdCAobyBlbmRvdnJzKQorICAgICAgICAod2hlbiAob3Zlcmxh eS1nZXQgbyAnaGlkZS1pZmRlZikKKyAgICAgICAgICAoc2V0cSBiIChtaW4gc3RhcnQgKG92ZXJs YXktc3RhcnQgbykpCisgICAgICAgICAgICAgICAgZSAobWF4IGVuZCAob3ZlcmxheS1lbmQgbykp KQorICAgICAgICAgIChtb3ZlLW92ZXJsYXkgbyBiIGUpCisgICAgICAgICAgKG1lcmdlLWlmZGVm LXJlZ2lvbiBiIGUpCisgICAgICAgICAgKHNldGYgb2UgbykpKQorICAgICAgOzsgaWYgYm90aCAn c3RhcnQnICdlbmQnIG1lcmdpbmcgaGFwcGVucywgbWVyZ2UgaW50byBiaWdnZXIgb25lCisgICAg ICAod2hlbiAoYW5kIG9iIG9lKQorICAgICAgICAobGV0ICgoYiAobWluIChvdmVybGF5LXN0YXJ0 IG9iKSAob3ZlcmxheS1zdGFydCBvZSkpKQorICAgICAgICAgICAgICAoZSAobWF4IChvdmVybGF5 LWVuZCBvYikgKG92ZXJsYXktZW5kIG9lKSkpKQorICAgICAgICAgIChkZWxldGUtb3ZlcmxheSBv ZSkKKyAgICAgICAgICAobW92ZS1vdmVybGF5IG9iIGIgZSkKKyAgICAgICAgICAobWVyZ2UtaWZk ZWYtcmVnaW9uIGIgZSkpKQorICAgICAgKG9yIG9iIG9lKSkpKQorCiAoZGVmdW4gaGlkZS1pZmRl Zi1yZWdpb24taW50ZXJuYWwgKHN0YXJ0IGVuZCkKLSAgKHJlbW92ZS1vdmVybGF5cyBzdGFydCBl bmQgJ2hpZGUtaWZkZWYgdCkKLSAgKGxldCAoKG8gKG1ha2Utb3ZlcmxheSBzdGFydCBlbmQpKSkK LSAgICAob3ZlcmxheS1wdXQgbyAnaGlkZS1pZmRlZiB0KQotICAgIChpZiBoaWRlLWlmZGVmLXNo YWRvdwotCShvdmVybGF5LXB1dCBvICdmYWNlICdoaWRlLWlmZGVmLXNoYWRvdykKLSAgICAgIChv dmVybGF5LXB1dCBvICdpbnZpc2libGUgJ2hpZGUtaWZkZWYpKSkpCisgICh1bmxlc3MgKG1lcmdl LWlmZGVmLXJlZ2lvbiBzdGFydCBlbmQpCisgICAgKGxldCAoKG8gKG1ha2Utb3ZlcmxheSBzdGFy dCBlbmQpKSkKKyAgICAgIChvdmVybGF5LXB1dCBvICdoaWRlLWlmZGVmIHQpCisgICAgICAoaWYg aGlkZS1pZmRlZi1zaGFkb3cKKyAgICAgICAgICAob3ZlcmxheS1wdXQgbyAnZmFjZSAnaGlkZS1p ZmRlZi1zaGFkb3cpCisgICAgICAgIChvdmVybGF5LXB1dCBvICdpbnZpc2libGUgJ2hpZGUtaWZk ZWYpKSkpKQogCiAoZGVmdW4gaGlkZS1pZmRlZi1yZWdpb24gKHN0YXJ0IGVuZCkKLSAgIlNUQVJU IGlzIHRoZSBzdGFydCBvZiBhICNpZiBvciAjZWxzZSBmb3JtLiAgRU5EIGlzIHRoZSBlbmRpbmcg cGFydC4KKyAgIlNUQVJUIGlzIHRoZSBzdGFydCBvZiBhICNpZiwgI2VsaWYsIG9yICNlbHNlIGZv cm0uICBFTkQgaXMgdGhlIGVuZGluZyBwYXJ0LgogRXZlcnl0aGluZyBpbmNsdWRpbmcgdGhlc2Ug bGluZXMgaXMgbWFkZSBpbnZpc2libGUuIgogICAoc2F2ZS1leGN1cnNpb24KICAgICAoZ290by1j aGFyIHN0YXJ0KSAoaGlmLWVuZC1vZi1saW5lKSAoc2V0cSBzdGFydCAocG9pbnQpKQpAQCAtMzA5 LDggKzM4Myw5IEBAIEV2ZXJ5dGhpbmcgaW5jbHVkaW5nIHRoZXNlIGxpbmVzIGlzIG1hZGUgaW52 aXNpYmxlLiIKIAogKGRlZnVuIGhpZi1zaG93LWlmZGVmLXJlZ2lvbiAoc3RhcnQgZW5kKQogICAi RXZlcnl0aGluZyBiZXR3ZWVuIFNUQVJUIGFuZCBFTkQgaXMgbWFkZSB2aXNpYmxlLiIKLSAgKHJl bW92ZS1vdmVybGF5cyBzdGFydCBlbmQgJ2hpZGUtaWZkZWYgdCkpCi0KKyAgKGxldCAoKG9udW0g KGxlbmd0aCAob3ZlcmxheXMtaW4gc3RhcnQgZW5kKSkpKQorICAgIChyZW1vdmUtb3ZlcmxheXMg c3RhcnQgZW5kICdoaWRlLWlmZGVmIHQpCisgICAgKC89IG9udW0gKGxlbmd0aCAob3ZlcmxheXMt aW4gc3RhcnQgZW5kKSkpKSkKIAogOzs9PT0lJVNGJSUgZXZhbHVhdGlvbiAoU3RhcnQpICA9PT0K IApAQCAtMzU0LDEzICs0MjksMjkgQEAgdGhhdCBmb3JtIHNob3VsZCBiZSBkaXNwbGF5ZWQuIikK IDs7PT09JSVTRiUlIHBhcnNpbmcgKFN0YXJ0KSAgPT09CiA7OzsgIFRoZSBjb2RlIHRoYXQgdW5k ZXJzdGFuZHMgd2hhdCBpZnMgYW5kIGlmZGVmIGluIGZpbGVzIGxvb2sgbGlrZS4KIAotKGRlZmNv bnN0IGhpZi1jcHAtcHJlZml4ICJcXCheXFx8XHJcXClbIFx0XSojWyBcdF0qIikKKyhkZWZjb25z dCBoaWYtY3BwLXByZWZpeCAgICAiXFwoXlxcfFxyXFwpWyBcdF0qI1sgXHRdKiIpCisoZGVmY29u c3QgaGlmLWlmeGRlZi1yZWdleHAgKGNvbmNhdCBoaWYtY3BwLXByZWZpeCAiaWZcXChuXFwpP2Rl ZiIpKQogKGRlZmNvbnN0IGhpZi1pZm5kZWYtcmVnZXhwIChjb25jYXQgaGlmLWNwcC1wcmVmaXgg ImlmbmRlZiIpKQotKGRlZmNvbnN0IGhpZi1pZngtcmVnZXhwIChjb25jYXQgaGlmLWNwcC1wcmVm aXggImlmXFwobj9kZWZcXCk/WyBcdF0rIikpCi0oZGVmY29uc3QgaGlmLWVsc2UtcmVnZXhwIChj b25jYXQgaGlmLWNwcC1wcmVmaXggImVsc2UiKSkKLShkZWZjb25zdCBoaWYtZW5kaWYtcmVnZXhw IChjb25jYXQgaGlmLWNwcC1wcmVmaXggImVuZGlmIikpCisoZGVmY29uc3QgaGlmLWlmeC1yZWdl eHAgICAgKGNvbmNhdCBoaWYtY3BwLXByZWZpeCAiaWZcXChuP2RlZlxcKT9bIFx0XSsiKSkKKyhk ZWZjb25zdCBoaWYtZWxpZi1yZWdleHAgICAoY29uY2F0IGhpZi1jcHAtcHJlZml4ICJlbGlmIikp CisoZGVmY29uc3QgaGlmLWVsc2UtcmVnZXhwICAgKGNvbmNhdCBoaWYtY3BwLXByZWZpeCAiZWxz ZSIpKQorKGRlZmNvbnN0IGhpZi1lbmRpZi1yZWdleHAgIChjb25jYXQgaGlmLWNwcC1wcmVmaXgg ImVuZGlmIikpCiAoZGVmY29uc3QgaGlmLWlmeC1lbHNlLWVuZGlmLXJlZ2V4cAotICAoY29uY2F0 IGhpZi1pZngtcmVnZXhwICJcXHwiIGhpZi1lbHNlLXJlZ2V4cCAiXFx8IiBoaWYtZW5kaWYtcmVn ZXhwKSkKKyAgKGNvbmNhdCBoaWYtaWZ4LXJlZ2V4cCAiXFx8IiBoaWYtZWxpZi1yZWdleHAgIlxc fCIgaGlmLWVsc2UtcmVnZXhwICJcXHwiIGhpZi1lbmRpZi1yZWdleHApKQorKGRlZmNvbnN0IGhp Zi1tYWNyby1leHByLXByZWZpeC1yZWdleHAgKGNvbmNhdCBoaWYtY3BwLXByZWZpeCAiXFwoaWZc XChuP2RlZlxcKT9cXHxlbGlmXFx8ZGVmaW5lXFwpWyBcdF0rIikpCisKKyhkZWZjb25zdCBoaWYt d2hpdGUgICAgICAgICAiWyBcdF0qIikKKyhkZWZjb25zdCBoaWYtZGVmaW5lICAgICAgICAoY29u Y2F0IGhpZi1jcHAtcHJlZml4ICJcXChkZWZpbmVcXHx1bmRlZlxcKSIpKQorKGRlZmNvbnN0IGhp Zi1pZCAgICAgICAgICAgIChjb25jYXQgIltBLVphLXpfXVswLTlBLVphLXpfXSoiKSkKKyhkZWZj b25zdCBoaWYtbWFjcm9uYW1lICAgICAoY29uY2F0IGhpZi13aGl0ZSAiXFwoIiBoaWYtaWQgIlxc KSIgaGlmLXdoaXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFwoIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIigiIGhpZi13aGl0ZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFwoIiBoaWYtaWQgIlxcKT8iIGhpZi13 aGl0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFwoIiAiLCIgaGlm LXdoaXRlIGhpZi1pZCBoaWYtd2hpdGUgIlxcKSoiCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJcXChcXC5cXC5cXC5cXCk/IiBoaWYtd2hpdGUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlxcKT8iICkpCis7OyhkZWZjb25zdCBoaWYtaGVhZGVyLXJlZ2V4cCAiXi4qXFwuW2hI XVxcKFtoSF1cXHxbeFhdW3hYXVxcfFtwUF1bcFBdXFwpPyIpCiAKIDs7IFVzZWQgdG8gc3RvcmUg dGhlIGN1cnJlbnQgdG9rZW4gYW5kIHRoZSB3aG9sZSB0b2tlbiBsaXN0IGR1cmluZyBwYXJzaW5n LgogOzsgT25seSBib3VuZCBkeW5hbWljYWxseS4KQEAgLTM2OCwyMTEgKzQ1OSw3MDggQEAgdGhh dCBmb3JtIHNob3VsZCBiZSBkaXNwbGF5ZWQuIikKIChkZWZ2YXIgaGlmLXRva2VuLWxpc3QpCiAK IChkZWZjb25zdCBoaWYtdG9rZW4tYWxpc3QKLSAgJygoInx8IiAuIG9yKQotICAgICgiJiYiIC4g YW5kKQotICAgICgifCIgIC4gaGlmLWxvZ2lvcikKLSAgICAoIiYiICAuIGhpZi1sb2dhbmQpCi0g ICAgKCI9PSIgLiBlcXVhbCkKLSAgICAoIiE9IiAuIGhpZi1ub3RlcXVhbCkKLSAgICAoIiEiICAu IG5vdCkKLSAgICAoIigiICAuIGxwYXJlbikKLSAgICAoIikiICAuIHJwYXJlbikKLSAgICAoIj4i ICAuIGhpZi1ncmVhdGVyKQotICAgICgiPCIgIC4gaGlmLWxlc3MpCi0gICAgKCI+PSIgLiBoaWYt Z3JlYXRlci1lcXVhbCkKLSAgICAoIjw9IiAuIGhpZi1sZXNzLWVxdWFsKQotICAgICgiKyIgIC4g aGlmLXBsdXMpCi0gICAgKCItIiAgLiBoaWYtbWludXMpCi0gICAgKCI/IiAgLiBoaWYtY29uZGl0 aW9uYWwpCi0gICAgKCI6IiAgLiBoaWYtY29sb24pKSkKKyAgJygoInx8IiAgLiBoaWYtb3IpCisg ICAgKCImJiIgIC4gaGlmLWFuZCkKKyAgICAoInwiICAgLiBoaWYtbG9naW9yKQorICAgICgiXiIg ICAuIGhpZi1sb2d4b3IpCisgICAgKCImIiAgIC4gaGlmLWxvZ2FuZCkKKyAgICAoIjw8IiAgLiBo aWYtc2hpZnRsZWZ0KQorICAgICgiPj4iICAuIGhpZi1zaGlmdHJpZ2h0KQorICAgICgiPT0iICAu IGhpZi1lcXVhbCkKKyAgICAoIj0iICAgLiBoaWYtYXNzaWduKQorICAgICgiIT0iICAuIGhpZi1u b3RlcXVhbCkKKyAgICAoIiMjIiAgLiBoaWYtdG9rZW4tY29uY2F0KQorICAgICgiISIgICAuIGhp Zi1ub3QpCisgICAgKCJ+IiAgIC4gaGlmLWxvZ25vdCkKKyAgICAoIigiICAgLiBoaWYtbHBhcmVu KQorICAgICgiKSIgICAuIGhpZi1ycGFyZW4pCisgICAgKCI+IiAgIC4gaGlmLWdyZWF0ZXIpCisg ICAgKCI8IiAgIC4gaGlmLWxlc3MpCisgICAgKCI+PSIgIC4gaGlmLWdyZWF0ZXItZXF1YWwpCisg ICAgKCI8PSIgIC4gaGlmLWxlc3MtZXF1YWwpCisgICAgKCIrIiAgIC4gaGlmLXBsdXMpCisgICAg KCItIiAgIC4gaGlmLW1pbnVzKQorICAgICgiKiIgICAuIGhpZi1tdWx0aXBseSkKKyAgICAoIi8i ICAgLiBoaWYtZGl2aWRlKQorICAgICgiJSIgICAuIGhpZi1tb2R1bG8pCisgICAgKCI/IiAgIC4g aGlmLWNvbmRpdGlvbmFsKQorICAgICgiOiIgICAuIGhpZi1jb2xvbikKKyAgICAoIiwiICAgLiBo aWYtY29tbWEpCisgICAgKCIjIiAgIC4gaGlmLXN0cmluZ2lmeSkKKyAgICAoIi4uLiIgLiBoaWYt ZXRjKSkpCisKKyhkZWZjb25zdCBoaWYtdmFsaWQtdG9rZW4tbGlzdCAobWFwY2FyICdjZHIgaGlm LXRva2VuLWFsaXN0KSkKIAogKGRlZmNvbnN0IGhpZi10b2tlbi1yZWdleHAKLSAgKGNvbmNhdCAo cmVnZXhwLW9wdCAobWFwY2FyICdjYXIgaGlmLXRva2VuLWFsaXN0KSkgIlxcfFxcdysiKSkKKyAg KGNvbmNhdCAocmVnZXhwLW9wdCAobWFwY2FyICdjYXIgaGlmLXRva2VuLWFsaXN0KSkKKyAgICAg ICAgICAiXFx8MHhbMC05YS1mQS1GXStcXC4/WzAtOWEtZkEtRl0qIiA7OyBMdWtlIGFkZGVkCisg ICAgICAgICAgIlxcfFswLTldK1xcLj9bMC05XSoiICA7OyBMdWtlIGFkZGVkLCBkZWNpbWFsL29j dGFsCisgICAgICAgICAgIlxcfFxcdysiKSkKKworKGRlZmNvbnN0IGhpZi1zdHJpbmctbGl0ZXJh bC1yZWdleHAKKyAgKGNvbmNhdCBoaWYtd2hpdGUgIlxcKFwiW15cIl0qXCJcXCkiKSkKKworKGRl ZnZhciBoaWYtc2ltcGxlLXRva2VuLW9ubHkgbmlsKQogCiAoZGVmdW4gaGlmLXRva2VuaXplIChz dGFydCBlbmQpCiAgICJTZXBhcmF0ZSBzdHJpbmcgYmV0d2VlbiBTVEFSVCBhbmQgRU5EIGludG8g YSBsaXN0IG9mIHRva2Vucy4iCiAgIChsZXQgKCh0b2tlbi1saXN0IG5pbCkpCisgICAgKHNldHEg aGlmLXNpbXBsZS10b2tlbi1vbmx5IHQpCiAgICAgKHdpdGgtc3ludGF4LXRhYmxlIGhpZGUtaWZk ZWYtc3ludGF4LXRhYmxlCiAgICAgICAoc2F2ZS1leGN1cnNpb24KLQkoZ290by1jaGFyIHN0YXJ0 KQotCSh3aGlsZSAocHJvZ24gKGZvcndhcmQtY29tbWVudCAocG9pbnQtbWF4KSkgKDwgKHBvaW50 KSBlbmQpKQotCSAgOzsgKG1lc3NhZ2UgImV4cHItc3RhcnQgPSAlZCIgZXhwci1zdGFydCkgKHNp dC1mb3IgMSkKLQkgIChjb25kCi0JICAgKChsb29raW5nLWF0ICJcXFxcXG4iKQotCSAgICAoZm9y d2FyZC1jaGFyIDIpKQotCi0JICAgKChsb29raW5nLWF0IGhpZi10b2tlbi1yZWdleHApCi0JICAg IChsZXQgKCh0b2tlbiAoYnVmZmVyLXN1YnN0cmluZyAocG9pbnQpIChtYXRjaC1lbmQgMCkpKSkK LQkgICAgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpCi0JICAgICAgOzsgKG1lc3NhZ2UgInRv a2VuOiAlcyIgdG9rZW4pIChzaXQtZm9yIDEpCi0JICAgICAgKHB1c2ggKG9yIChjZHIgKGFzc29j IHRva2VuIGhpZi10b2tlbi1hbGlzdCkpCisgICAgICAgIChnb3RvLWNoYXIgc3RhcnQpCisgICAg ICAgICh3aGlsZSAocHJvZ24gKGZvcndhcmQtY29tbWVudCAocG9pbnQtbWF4KSkgKDwgKHBvaW50 KSBlbmQpKQorICAgICAgICAgIDs7IChtZXNzYWdlICJleHByLXN0YXJ0ID0gJWQiIGV4cHItc3Rh cnQpIChzaXQtZm9yIDEpCisgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgKChsb29raW5nLWF0 ICJcXFxcXG4iKQorICAgICAgICAgICAgKGZvcndhcmQtY2hhciAyKSkKKworICAgICAgICAgICAo KGxvb2tpbmctYXQgaGlmLXN0cmluZy1saXRlcmFsLXJlZ2V4cCkKKyAgICAgICAgICAgIChwdXNo IChzdWJzdHJpbmctbm8tcHJvcGVydGllcyAobWF0Y2gtc3RyaW5nIDEpKSB0b2tlbi1saXN0KQor ICAgICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gtZW5kIDApKSkKKworICAgICAgICAgICAoKGxv b2tpbmctYXQgaGlmLXRva2VuLXJlZ2V4cCkKKyAgICAgICAgICAgIChsZXQgKCh0b2tlbiAoYnVm ZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludCkgKG1hdGNoLWVuZCAwKSkpKQorICAg ICAgICAgICAgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpCisgICAgICAgICAgICAgIDs7ICht ZXNzYWdlICJ0b2tlbjogJXMiIHRva2VuKSAoc2l0LWZvciAxKQorICAgICAgICAgICAgICAocHVz aCAob3IgKGNkciAoYXNzb2MgdG9rZW4gaGlmLXRva2VuLWFsaXN0KSkKICAgICAgICAgICAgICAg ICAgICAgICAgIChpZiAoc3RyaW5nLWVxdWFsIHRva2VuICJkZWZpbmVkIikgJ2hpZi1kZWZpbmVk KQotICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctbWF0Y2ggIlxcYFswLTldKlxc JyIgdG9rZW4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy10by1udW1iZXIg dG9rZW4pKQotICAgICAgICAgICAgICAgICAgICAgICAgKGludGVybiB0b2tlbikpCi0JCSAgICB0 b2tlbi1saXN0KSkpCi0JICAgKHQgKGVycm9yICJCYWQgI2lmIGV4cHJlc3Npb246ICVzIiAoYnVm ZmVyLXN0cmluZykpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoc3RyaW5nLW1h dGNoICIweFxcKFthLWZBLUYwLTldK1xcKSIgdG9rZW4pCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAxIHRva2VuKSAxNikpIDs7IGhl eGFkZWNpbWFsCisgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZy1tYXRjaCAiXFxg MFswLTldKlxcKFxcLlswLTldK1xcKT9cXCciIHRva2VuKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChzdHJpbmctdG8tbnVtYmVyIHRva2VuIDgpKSA7OyBvY3RhbAorICAgICAgICAgICAg ICAgICAgICAgICAgKGlmIChzdHJpbmctbWF0Y2ggIlxcYFsxLTldWzAtOV0qXFwoXFwuWzAtOV0r XFwpP1xcJyIgdG9rZW4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy10by1u dW1iZXIgdG9rZW4pKSA7OyBkZWNpbWFsCisgICAgICAgICAgICAgICAgICAgICAgICAocHJvZzEg KGludGVybiB0b2tlbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgaGlmLXNpbXBs ZS10b2tlbi1vbmx5IG5pbCkpKQorICAgICAgICAgICAgICAgICAgICB0b2tlbi1saXN0KSkpCisK KyAgICAgICAgICAgKChsb29raW5nLWF0ICJcciIpCisgICAgICAgICAgICAoZm9yd2FyZC1jaGFy IDEpKQorCisgICAgICAgICAgICh0IChlcnJvciAiQmFkICNpZiBleHByZXNzaW9uOiAlcyIgKGJ1 ZmZlci1zdHJpbmcpKSkpKSkpCiAgICAgKG5yZXZlcnNlIHRva2VuLWxpc3QpKSkKIAogOzs7LS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIDs7OyBUcmFuc2xhdGUgQyBwcmVwcm9jZXNzb3IgI2lmIGV4cHJlc3Npb25zIHVzaW5n IHJlY3Vyc2l2ZSBkZXNjZW50LgogOzs7IFRoaXMgcGFyc2VyIGlzIGxpbWl0ZWQgdG8gdGhlIG9w ZXJhdG9ycyAmJiwgfHwsICEsIGFuZCAiZGVmaW5lZCIuCiA7OzsgQWRkZWQgPT0sICE9LCArLCBh bmQgLS4gIEdhcnkgT2JlcmJydW5uZXIsIGdhcnlvQGF2cy5jb20sIDgvOS85NAorOzs7Cis7Ozsg SW1wbGVtZW50IHRoZSBDIGxhbmd1YWdlIG9wZXJhdG9yIHByZWNlZGVuY2UgdGFibGUuIEFkZCBh bGwgdGhvc2UKKzs7OyBtaXNzaW5nIG9wZXJhdG9ycyB0aGF0IGNvdWxkIGJlIHVzZWQgaW4gbWFj cm9zLiBMdWtlIExlZSAyMDEzLTA5LTA0CisKKzs7OyAgfCBPcGVyYXRvciBUeXBlICAgICAgICB8 IE9wZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBc3NvY2lhdGl2 aXR5IHwKKzs7OyAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKKzs7OyAgfCBQcmltYXJ5 IEV4cHJlc3Npb24gICB8ICgpIFtdIC4gLT4gZXhwcisrIGV4cHItLSAgICAgICAgICAgICAgICAg ICAgfCBsZWZ0LXRvLXJpZ2h0IHwKKzs7OyAgfCBVbmFyeSBPcGVyYXRvcnMgICAgICB8ICogJiAr IC0gISB+ICsrZXhwciAtLWV4cHIgKHR5cGVjYXN0KSBzaXplb2YgfCByaWdodC10by1sZWZ0IHwK Kzs7OyAgfCBCaW5hcnkgT3BlcmF0b3JzICAgICB8ICogLyAlICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBsZWZ0LXRvLXJpZ2h0IHwKKzs7OyAgfCAgICAgICAgICAgICAg ICAgICAgICB8ICsgLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgIHwKKzs7OyAgfCAgICAgICAgICAgICAgICAgICAgICB8ID4+IDw8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwKKzs7OyAg fCAgICAgICAgICAgICAgICAgICAgICB8IDwgPiA8PSA+PSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwKKzs7OyAgfCAgICAgICAgICAgICAgICAgICAg ICB8ID09ICE9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgIHwKKzs7OyAgfCAgICAgICAgICAgICAgICAgICAgICB8ICYgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwKKzs7OyAgfCAgICAg ICAgICAgICAgICAgICAgICB8IF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgIHwKKzs7OyAgfCAgICAgICAgICAgICAgICAgICAgICB8IHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg IHwKKzs7OyAgfCAgICAgICAgICAgICAgICAgICAgICB8ICYmICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwKKzs7OyAgfCAgICAgICAgICAg ICAgICAgICAgICB8IHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgIHwKKzs7OyAgfCBUZXJuYXJ5IE9wZXJhdG9yICAgICB8ID86ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByaWdodC10by1sZWZ0IHwKKzs7 OyB4fCBBc3NpZ25tZW50IE9wZXJhdG9ycyB8ID0gKz0gLT0gKj0gLz0gJT0gPj49IDw8PSAmPSBe PSA9ICAgICAgICAgICAgfCByaWdodC10by1sZWZ0IHwKKzs7OyAgfCBDb21tYSAgICAgICAgICAg ICAgICB8ICwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsZWZ0 LXRvLXJpZ2h0IHwKIAogKGRlZnN1YnN0IGhpZi1uZXh0dG9rZW4gKCkKICAgIlBvcCB0aGUgbmV4 dCB0b2tlbiBmcm9tIHRva2VuLWxpc3QgaW50byB0aGUgbGV0IHZhcmlhYmxlIFwiaGlmLXRva2Vu XCIuIgogICAoc2V0cSBoaWYtdG9rZW4gKHBvcCBoaWYtdG9rZW4tbGlzdCkpKQogCi0oZGVmdW4g aGlmLXBhcnNlLWlmLWV4cCAodG9rZW4tbGlzdCkKKyhkZWZzdWJzdCBpZi12YWxpZC1pZGVudGlm aWVyIChpZCkKKyAgKG5vdCAob3IgKG51bWJlcnAgaWQpCisgICAgICAgICAgIChzdHJpbmdwIGlk KSkpKQorCisoZGVmdW4gaGlmLWRlZmluZS1vcGVyYXRvciAodG9rZW5zKQorICAiYFVwZ3JhZGUn IGhpZi1kZWZpbmUgeHh4IHRvICcoaGlmLWRlZmluZSB4eHgpJyBzbyB0aGF0IGl0IHdvbid0IGJl IHN1YnNpdGl0dXRlZCIKKyAgKGxldCAoKHJlc3VsdCBuaWwpCisgICAgICAgICh0b2sgbmlsKSkK KyAgICAod2hpbGUgdG9rZW5zCisgICAgICAoc2V0cSB0b2sgKGNhciB0b2tlbnMpCisgICAgICAg ICAgICB0b2tlbnMgKGNkciB0b2tlbnMpKQorICAgICAgKHNldHEgcmVzdWx0CisgICAgICAgICAg ICAoYXBwZW5kCisgICAgICAgICAgICAgcmVzdWx0CisgICAgICAgICAgICAgKGxpc3QKKyAgICAg ICAgICAgICAgKGlmIChlcSB0b2sgJ2hpZi1kZWZpbmVkKQorICAgICAgICAgICAgICAgICAgKHBy b2duCisgICAgICAgICAgICAgICAgICAgIChzZXRxIHRvayAoY2FkciB0b2tlbnMpKQorICAgICAg ICAgICAgICAgICAgICAoaWYgKGVxIChjYXIgdG9rZW5zKSAnaGlmLWxwYXJlbikKKyAgICAgICAg ICAgICAgICAgICAgICAgIChpZiAoYW5kIChpZi12YWxpZC1pZGVudGlmaWVyIHRvaykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcSAoY2FkZHIgdG9rZW5zKSAnaGlmLXJwYXJl bikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgdG9rZW5zIChjZGRkciB0b2tl bnMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IgIm9wZXJhdG9yIFwiZGVmaW5l ZFwiIHJlcXVpcmVzIGFuIGlkZW50aWZpZXIiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSB0b2sgKGNhciB0b2tlbnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zIChj ZHIgdG9rZW5zKSkKKyAgICAgICAgICAgICAgICAgICAgICAodW5sZXNzIChpZi12YWxpZC1pZGVu dGlmaWVyIHRvaykKKyAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciAib3BlcmF0b3IgXCJk ZWZpbmVkXCIgcmVxdWlyZXMgYW4gaWRlbnRpZmllciIpKSkKKyAgICAgICAgICAgICAgICAgICAg KGxpc3QgJ2hpZi1kZWZpbmVkICdoaWYtbHBhcmVuIHRvayAnaGlmLXJwYXJlbikpCisgICAgICAg ICAgICAgICAgdG9rKSkpKSkKKyAgICByZXN1bHQpKQorCisoZGVmdW4gaGlmLWV4cGFuZC10b2tl bi1saXN0ICh0b2tlbnMgJm9wdGlvbmFsIG1hY3JvbmFtZSByZWZsaXN0KSA7OyByZWZlcmVuY2Ug bGlzdCB0byBwcmV2ZW50IHNlbGYtcmVmZXJlbmNpbmcKKyAgIlBlcmZvcm0gZXhwYW5zaW9uIHRp bGwgZXZlcnl0aGluZyBleHBhbmRlZC4gTm8gc2VsZi1yZWZlcmVuY2UgZXhwYW5zaW9uLiIKKyAg KGNhdGNoICdzZWxmLXJlZmVyZW5jaW5nCisgICAgKGxldCAoKGV4cGFuZGVkIG5pbCkKKyAgICAg ICAgICAocmVtYWlucyAoaGlmLWRlZmluZS1vcGVyYXRvcgorICAgICAgICAgICAgICAgICAgICAo aGlmLXRva2VuLWNvbmNhdGVuYXRpb24gKGhpZi10b2tlbi1zdHJpbmdpZmljYXRpb24gdG9rZW5z KSkpKQorICAgICAgICAgIHRvayByZXApCisgICAgICAoaWYgbWFjcm9uYW1lCisgICAgICAgICAg KHNldHEgcmVmbGlzdCAoY29ucyBtYWNyb25hbWUgcmVmbGlzdCkpKQorICAgICAgOzsgRXhwYW5k aW5nIGFsbCB0b2tlbnMgdGlsbCBsaXN0IGV4aGF1c3RlZAorICAgICAgKHdoaWxlIHJlbWFpbnMK KyAgICAgICAgKHNldHEgdG9rIChjYXIgcmVtYWlucykKKyAgICAgICAgICAgICAgcmVtYWlucyAo Y2RyIHJlbWFpbnMpKQorICAgICAgICAoaWYgKG1lbXEgdG9rIHJlZmxpc3QpIDs7IGZvciBzZWxm LXJlZmVyZW5jaW5nIHRva2VucywgZG9uJ3QgZXhwYW5kIGl0CisgICAgICAgICAgICAodGhyb3cg J3NlbGYtcmVmZXJlbmNpbmcgdG9rZW5zKSkKKyAgICAgICAgKHNldHEgZXhwYW5kZWQKKyAgICAg ICAgICAgICAgKGFwcGVuZAorICAgICAgICAgICAgICAgZXhwYW5kZWQKKyAgICAgICAgICAgICAg IChjb25kCisgICAgICAgICAgICAgICAgKChvciAobWVtcSB0b2sgaGlmLXZhbGlkLXRva2VuLWxp c3QpCisgICAgICAgICAgICAgICAgICAgICAobnVtYmVycCB0b2spCisgICAgICAgICAgICAgICAg ICAgICAoc3RyaW5ncCB0b2spKQorICAgICAgICAgICAgICAgICAobGlzdCB0b2spKQorCisgICAg ICAgICAgICAgICAgKChzZXRxIHJlcCAoaGlmLWxvb2t1cCB0b2spKQorICAgICAgICAgICAgICAg ICAoaWYgKGFuZCAobGlzdHAgcmVwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgKGNh ciByZXApICdoaWYtZGVmaW5lLW1hY3JvKSkgOzsgYSBkZWZpbmVkIG1hY3JvCisgICAgICAgICAg ICAgICAgICAgICA7OyByZWN1cnNpdmVseSBleHBhbmQgaXQKKyAgICAgICAgICAgICAgICAgICAg IChpZiAoY2FkciByZXApIDs7IGFyZ2xpc3QgaXMgbm90IG5pbAorICAgICAgICAgICAgICAgICAg ICAgICAgIChpZiAoZXEgKGNhciByZW1haW5zKSAnaGlmLWxwYXJlbikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOzsgQXJndW1lbnRlZCBtYWNybywgZ2V0IGFyZ3VtZW50cyBhbmQgaW52 b2tlIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQqICgoaGlmLXRva2VuLWxp c3QgKGNkciByZW1haW5zKSkgOzsgZHluYW1pYyBiaW5kaW5nIGZvciBoaWYtbWFjcm8tc3VwcGx5 LWFyZ3VtZW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZi10b2tl biBuaWwpICAgICAgICAgICAgICAgIDs7IGR5bmFtaWMgYmluZGluZyBmb3IgaGlmLW1hY3JvLXN1 cHBseS1hcmd1bWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJt bGlzdCAobWFwY2FyICdoaWYtZXhwYW5kLXRva2VuLWxpc3QKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWYtZ2V0LWFyZ3VtZW50LWxpc3Qg dG9rKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0IChoaWYt ZXhwYW5kLXRva2VuLWxpc3QgKGhpZi1tYWNyby1zdXBwbHktYXJndW1lbnRzIHRvayBwYXJtbGlz dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0b2sgcmVmbGlzdCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzZXRxIHJlbWFpbnMgKGNvbnMgaGlmLXRva2VuIGhpZi10b2tlbi1saXN0KSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICA7OyBubyBhcmd1bWVudCBzdXBwbGllZCwgbm8gaW52b2NhdGlvbiBmb3IgdGhpcyBtYWNy bworICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgdG9rKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgOzsgYXJnbGlzdCBpcyBuaWwsIGRpcmVjdCBleHBhbnNpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgKHNldHEgcmVwIChoaWYtZXhwYW5kLXRva2VuLWxpc3QgKGNhZGRyIHJlcCkg OzsgbWFjcm8ncyB0b2tlbiBsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRvayByZWZsaXN0KSkKKyAgICAgICAgICAgICAgICAgICAg ICAgKHNldHEgcmVtYWlucyAoc3Vic3RpdHV0ZSB0b2sgcmVwIHJlbWFpbnMpKSA7OyByZXBsYWNl IGFsbCByZW1haW5pbmcgcmVmZXJlbmNlcyBpbW1lZGlhdGVseQorICAgICAgICAgICAgICAgICAg ICAgICAobGlzdCByZXApKQorICAgICAgICAgICAgICAgICAgIDs7IGxvb2t1cCB0b2sgcmV0dXJu cyBhbiBhdG9tCisgICAgICAgICAgICAgICAgICAgKGxpc3QgcmVwKSkpCisKKyAgICAgICAgICAg ICAgICA7O1syMDEzLTEwLTIyIDE2OjA2OjEyICswODAwXSBNdXN0IGtlZXAgdGhlIHRva2VuLCBy ZW1vdmVpbmcgdGhpcyB0b2tlbiBtaWdodCByZXN1bHRzIGluIGEgaW5jb21wbGV0ZSBleHByZXNz aW9uIHdoaWNoIGNhbm5vdCBiZSBwYXJzZWQuCisgICAgICAgICAgICAgICAgOzsoKD0gMSAoaGlm LWRlZmluZWQgdG9rKSkgOzsgZGVmaW5lZCAoaGlmLWRlZmluZWQgdG9rKT0xLCBidXQgZW1wdHkg KGhpZi1sb29rdXAgdG9rKT1uaWwsIHRodXMgcmVtb3ZlIHRoaXMgdG9rZW4KKyAgICAgICAgICAg ICAgICA7OyAoc2V0cSByZW1haW5zIChkZWxldGUgdG9rIHJlbWFpbnMpKQorICAgICAgICAgICAg ICAgIDs7IG5pbCkKKworICAgICAgICAgICAgICAgICh0IDs7IHVzdWFsIElEcworICAgICAgICAg ICAgICAgICAobGlzdCB0b2spKSkpKSkKKyAgICAgIChmbGF0dGVuIGV4cGFuZGVkKSkpKQorCiso ZGVmdW4gaGlmLXBhcnNlLWlmLWV4cCAodG9rZW4tbGlzdCAmb3B0aW9uYWwgbWFjcm9uYW1lKQog ICAiUGFyc2UgdGhlIFRPS0VOLUxJU1QuICBSZXR1cm4gdHJhbnNsYXRlZCBsaXN0IGluIHByZWZp eCBmb3JtLiIKLSAgKGxldCAoKGhpZi10b2tlbi1saXN0IHRva2VuLWxpc3QpKQorICAobGV0ICgo aGlmLXRva2VuLWxpc3QgKGhpZi1leHBhbmQtdG9rZW4tbGlzdCB0b2tlbi1saXN0IG1hY3JvbmFt ZSkpKQogICAgIChoaWYtbmV4dHRva2VuKQogICAgIChwcm9nMQotICAgICAgICAoaGlmLWV4cHIp CisgICAgICAgIChhbmQgaGlmLXRva2VuCisgICAgICAgICAgICAgKGhpZi1leHBybGlzdCkpCiAg ICAgICAoaWYgaGlmLXRva2VuIDsgaXMgdGhlcmUgc3RpbGwgYSB0b2tlbj8KICAgICAgICAgICAo ZXJyb3IgIkVycm9yOiB1bmV4cGVjdGVkIHRva2VuOiAlcyIgaGlmLXRva2VuKSkpKSkKIAorOzs7 Cis7OztUbyBtYW51YWxseSB0ZXN0IHRoZXNlIGZ1bmN0aW9ucywgdHJ5IHRoZSBmb2xsb3dpbmcg aW4gc2NyYXRjaCBidWZmZXI6Cis7OzsKKzs7OyhoaWYtZmluZC1kZWZpbmUgKHBvaW50KSkgOzsg ZmluZCBvbmx5IG9uZSAjZGVmaW5lCis7OzsoaGlmLWFkZC1uZXctZGVmaW5lcykgOzsgZmluZCBh bGwgI2RlZmluZXMKKzs7OworOzs7I2RlZmluZSBtYWNybyAoIGFyZzEgLCBhcmcyICwgYXJnMyAu Li4gKSBhcmcxICsgYXJnMiAqIGFyZzMKKzs7OworOzs7KGFzc29jICdtYWNybyBoaWRlLWlmZGVm LWVudikKKzs7OworOzs7KGhpZi1jYW5vbmljYWxpemUtdG9rZW5zIGhpZi1pZngtcmVnZXhwKQor Ozs7KGhpZi1leHBhbmQtdG9rZW4tbGlzdCAoaGlmLWNhbm9uaWNhbGl6ZS10b2tlbnMgaGlmLWlm eC1yZWdleHApKQorOzs7KGhpZi1jYW5vbmljYWxpemUgaGlmLWlmeC1yZWdleHApCis7OzsKKzs7 OyNpZiBtYWNybyggKGEsMiwzKSwgYjw8MSwgKGMmNyxkKSApCis7OzsKKworKGRlZnVuIGhpZi1l eHBybGlzdCAoKQorICAiUGFyc2UgYW4gZXhwcmxpc3Q6IGV4cHIgeyAnLCcgZXhwcn0iCisgIChs ZXQgKChyZXN1bHQgKGhpZi1leHByKSkKKyAgICAgICAgY29tbWEpCisgICAgKHdoaWxlIChlcSBo aWYtdG9rZW4gJ2hpZi1jb21tYSkKKyAgICAgICh1bmxlc3MgY29tbWEKKyAgICAgICAgKHNldHEg cmVzdWx0IChsaXN0IHJlc3VsdCkpKQorICAgICAgKHNldHEgY29tbWEgdCkKKyAgICAgIChoaWYt bmV4dHRva2VuKQorICAgICAgKHNldHEgcmVzdWx0IChhcHBlbmQgcmVzdWx0IChsaXN0IChoaWYt ZXhwcikpKSkpCisgICAgKGlmIGNvbW1hCisgICAgICAgIChhcHBlbmQgKGxpc3QgJ2hpZi1jb21t YSkgcmVzdWx0KQorICAgICAgcmVzdWx0KSkpCisKIChkZWZ1biBoaWYtZXhwciAoKQogICAiUGFy c2UgYW4gZXhwcmVzc2lvbiBhcyBmb3VuZCBpbiAjaWYuCiAgICAgICAgZXhwciA6IG9yLWV4cHIg fCBvci1leHByICc/JyBleHByICc6JyBleHByLiIKICAgKGxldCAoKHJlc3VsdCAoaGlmLW9yLWV4 cHIpKQotCW1pZGRsZSkKKyAgICAgICAgbWlkZGxlKQogICAgICh3aGlsZSAoZXEgaGlmLXRva2Vu ICdoaWYtY29uZGl0aW9uYWwpCiAgICAgICAoaGlmLW5leHR0b2tlbikKICAgICAgIChzZXRxIG1p ZGRsZSAoaGlmLWV4cHIpKQogICAgICAgKGlmIChlcSBoaWYtdG9rZW4gJ2hpZi1jb2xvbikKLQkg IChwcm9nbgotCSAgICAoaGlmLW5leHR0b2tlbikKLQkgICAgKHNldHEgcmVzdWx0IChsaXN0ICdo aWYtY29uZGl0aW9uYWwgcmVzdWx0IG1pZGRsZSAoaGlmLWV4cHIpKSkpCi0JKGVycm9yICJFcnJv cjogdW5leHBlY3RlZCB0b2tlbjogJXMiIGhpZi10b2tlbikpKQorICAgICAgICAgIChwcm9nbgor ICAgICAgICAgICAgKGhpZi1uZXh0dG9rZW4pCisgICAgICAgICAgICAoc2V0cSByZXN1bHQgKGxp c3QgJ2hpZi1jb25kaXRpb25hbCByZXN1bHQgbWlkZGxlIChoaWYtZXhwcikpKSkKKyAgICAgICAg KGVycm9yICJFcnJvcjogdW5leHBlY3RlZCB0b2tlbjogJXMiIGhpZi10b2tlbikpKQogICAgIHJl c3VsdCkpCiAKIChkZWZ1biBoaWYtb3ItZXhwciAoKQotICAiUGFyc2UgbiBvci1leHByIDogYW5k LWV4cHIgfCBvci1leHByICd8fCcgYW5kLWV4cHIuIgorICAiUGFyc2UgYW4gb3ItZXhwciA6IGFu ZC1leHByIHwgb3ItZXhwciAnfHwnIGFuZC1leHByLiIKICAgKGxldCAoKHJlc3VsdCAoaGlmLWFu ZC1leHByKSkpCi0gICAgKHdoaWxlIChlcSBoaWYtdG9rZW4gJ29yKQorICAgICh3aGlsZSAoZXEg aGlmLXRva2VuICdoaWYtb3IpCiAgICAgICAoaGlmLW5leHR0b2tlbikKICAgICAgIChzZXRxIHJl c3VsdCAobGlzdCAnaGlmLW9yIHJlc3VsdCAoaGlmLWFuZC1leHByKSkpKQogICByZXN1bHQpKQog CiAoZGVmdW4gaGlmLWFuZC1leHByICgpCi0gICJQYXJzZSBhbiBhbmQtZXhwciA6IGVxLWV4cHIg fCBhbmQtZXhwciAnJiYnIGVxLWV4cHIuIgorICAiUGFyc2UgYW4gYW5kLWV4cHIgOiBsb2dpb3It ZXhwciB8IGFuZC1leHByICcmJicgbG9naW9yLWV4cHIuIgorICAobGV0ICgocmVzdWx0IChoaWYt bG9naW9yLWV4cHIpKSkKKyAgICAod2hpbGUgKGVxIGhpZi10b2tlbiAnaGlmLWFuZCkKKyAgICAg IChoaWYtbmV4dHRva2VuKQorICAgICAgKHNldHEgcmVzdWx0IChsaXN0ICdoaWYtYW5kIHJlc3Vs dCAoaGlmLWxvZ2lvci1leHByKSkpKQorICAgIHJlc3VsdCkpCisKKyhkZWZ1biBoaWYtbG9naW9y LWV4cHIgKCkKKyAgIlBhcnNlIGEgbG9nb3ItZXhwciA6IGxvZ3hvci1leHByIHwgbG9nb3ItZXhw ciAnfCcgbG9neG9yLWV4cHIuIgorICAobGV0ICgocmVzdWx0IChoaWYtbG9neG9yLWV4cHIpKSkK KyAgICAod2hpbGUgKGVxIGhpZi10b2tlbiAnaGlmLWxvZ2lvcikKKyAgICAgIChoaWYtbmV4dHRv a2VuKQorICAgICAgKHNldHEgcmVzdWx0IChsaXN0ICdoaWYtbG9naW9yIHJlc3VsdCAoaGlmLWxv Z3hvci1leHByKSkpKQorICAgIHJlc3VsdCkpCisKKyhkZWZ1biBoaWYtbG9neG9yLWV4cHIgKCkK KyAgIlBhcnNlIGEgbG9neG9yLWV4cHIgOiBsb2dhbmQtZXhwciB8IGxvZ3hvci1leHByICdeJyBs b2dhbmQtZXhwci4iCisgIChsZXQgKChyZXN1bHQgKGhpZi1sb2dhbmQtZXhwcikpKQorICAgICh3 aGlsZSAoZXEgaGlmLXRva2VuICdoaWYtbG9neG9yKQorICAgICAgKGhpZi1uZXh0dG9rZW4pCisg ICAgICAoc2V0cSByZXN1bHQgKGxpc3QgJ2hpZi1sb2d4b3IgcmVzdWx0IChoaWYtbG9nYW5kLWV4 cHIpKSkpCisgICAgcmVzdWx0KSkKKworKGRlZnVuIGhpZi1sb2dhbmQtZXhwciAoKQorICAiUGFy c2UgYSBsb2dhbmQtZXhwciA6IGVxLWV4cHIgfCBsb2dhbmQtZXhwciAnJicgZXEtZXhwci4iCiAg IChsZXQgKChyZXN1bHQgKGhpZi1lcS1leHByKSkpCi0gICAgKHdoaWxlIChlcSBoaWYtdG9rZW4g J2FuZCkKKyAgICAod2hpbGUgKGVxIGhpZi10b2tlbiAnaGlmLWxvZ2FuZCkKICAgICAgIChoaWYt bmV4dHRva2VuKQotICAgICAgKHNldHEgcmVzdWx0IChsaXN0ICdoaWYtYW5kIHJlc3VsdCAoaGlm LWVxLWV4cHIpKSkpCisgICAgICAoc2V0cSByZXN1bHQgKGxpc3QgJ2hpZi1sb2dhbmQgcmVzdWx0 IChoaWYtZXEtZXhwcikpKSkKICAgICByZXN1bHQpKQogCiAoZGVmdW4gaGlmLWVxLWV4cHIgKCkK LSAgIlBhcnNlIGFuIGVxLWV4cHIgOiBtYXRoIHwgZXEtZXhwciBgPT0nfGAhPSd8YDwnfGA+J3xg Pj0nfGA8PScgbWF0aC4iCi0gIChsZXQgKChyZXN1bHQgKGhpZi1tYXRoKSkKLQkoZXEtdG9rZW4g bmlsKSkKLSAgICAod2hpbGUgKG1lbXEgaGlmLXRva2VuICcoZXF1YWwgaGlmLW5vdGVxdWFsIGhp Zi1ncmVhdGVyIGhpZi1sZXNzCi0JCQkgICAgIGhpZi1ncmVhdGVyLWVxdWFsIGhpZi1sZXNzLWVx dWFsKSkKKyAgIlBhcnNlIGFuIGVxLWV4cHIgOiBjb21wIHwgZXEtZXhwciBgPT0nfGAhPScgY29t cC4iCisgIChsZXQgKChyZXN1bHQgKGhpZi1jb21wLWV4cHIpKQorICAgICAgICAoZXEtdG9rZW4g bmlsKSkKKyAgICAod2hpbGUgKG1lbXEgaGlmLXRva2VuICcoaGlmLWVxdWFsIGhpZi1ub3RlcXVh bCkpCiAgICAgICAoc2V0cSBlcS10b2tlbiBoaWYtdG9rZW4pCiAgICAgICAoaGlmLW5leHR0b2tl bikKLSAgICAgIChzZXRxIHJlc3VsdCAobGlzdCBlcS10b2tlbiByZXN1bHQgKGhpZi1tYXRoKSkp KQorICAgICAgKHNldHEgcmVzdWx0IChsaXN0IGVxLXRva2VuIHJlc3VsdCAoaGlmLWNvbXAtZXhw cikpKSkKKyAgICByZXN1bHQpKQorCisoZGVmdW4gaGlmLWNvbXAtZXhwciAoKQorICAiUGFyc2Ug YSBjb21wLWV4cHIgOiBsb2dzaGlmdCB8IGNvbXAtZXhwciBgPCd8YD4nfGA+PSd8YDw9JyBsb2dz aGlmdC4iCisgIChsZXQgKChyZXN1bHQgKGhpZi1sb2dzaGlmdC1leHByKSkKKyAgICAgICAgKGNv bXAtdG9rZW4gbmlsKSkKKyAgICAod2hpbGUgKG1lbXEgaGlmLXRva2VuICcoaGlmLWdyZWF0ZXIg aGlmLWxlc3MgaGlmLWdyZWF0ZXItZXF1YWwgaGlmLWxlc3MtZXF1YWwpKQorICAgICAgKHNldHEg Y29tcC10b2tlbiBoaWYtdG9rZW4pCisgICAgICAoaGlmLW5leHR0b2tlbikKKyAgICAgIChzZXRx IHJlc3VsdCAobGlzdCBjb21wLXRva2VuIHJlc3VsdCAoaGlmLWxvZ3NoaWZ0LWV4cHIpKSkpCisg ICAgcmVzdWx0KSkKKworKGRlZnVuIGhpZi1sb2dzaGlmdC1leHByICgpCisgICJQYXJzZSBhIGxv Z3NoaWZ0IDogbWF0aCB8IGxvZ3NoaWZ0IGA8PCd8YD4+JyBtYXRoLiIKKyAgKGxldCAoKHJlc3Vs dCAoaGlmLW1hdGgpKQorICAgICAgICAoc2hpZnQtdG9rZW4gbmlsKSkKKyAgICAod2hpbGUgKG1l bXEgaGlmLXRva2VuICcoaGlmLXNoaWZ0bGVmdCBoaWYtc2hpZnRyaWdodCkpCisgICAgICAoc2V0 cSBzaGlmdC10b2tlbiBoaWYtdG9rZW4pCisgICAgICAoaGlmLW5leHR0b2tlbikKKyAgICAgIChz ZXRxIHJlc3VsdCAobGlzdCBzaGlmdC10b2tlbiByZXN1bHQgKGhpZi1tYXRoKSkpKQogICAgIHJl c3VsdCkpCiAKIChkZWZ1biBoaWYtbWF0aCAoKQotICAiUGFyc2UgYW4gZXhwcmVzc2lvbiB3aXRo ICsgb3IgLSBhbmQgc2ltcGxlciB0aGluZ3MuCi0gICAgICAgbWF0aCA6IGZhY3RvciB8IG1hdGgg Jyt8LScgZmFjdG9yLiIKKyAgIlBhcnNlIGFuIGV4cHJlc3Npb24gd2l0aCArIG9yIC0uCisgICAg ICAgbWF0aCA6IG11bGRpdiB8IG1hdGggJyt8LScgbXVsZGl2LiIKKyAgKGxldCAoKHJlc3VsdCAo aGlmLW11bGRpdi1leHByKSkKKyAgICAgICAgKG1hdGgtb3AgbmlsKSkKKyAgICAod2hpbGUgKG1l bXEgaGlmLXRva2VuICcoaGlmLXBsdXMgaGlmLW1pbnVzKSkKKyAgICAgIChzZXRxIG1hdGgtb3Ag aGlmLXRva2VuKQorICAgICAgKGhpZi1uZXh0dG9rZW4pCisgICAgICAoc2V0cSByZXN1bHQgKGxp c3QgbWF0aC1vcCByZXN1bHQgKGhpZi1tdWxkaXYtZXhwcikpKSkKKyAgICByZXN1bHQpKQorCiso ZGVmdW4gaGlmLW11bGRpdi1leHByICgpCisgICJQYXJzZSBhbiBleHByZXNzaW9uIHdpdGggKiwv LCUuCisgICAgICAgbXVsZGl2IDogZmFjdG9yIHwgbXVsZGl2ICcqfC98JScgZmFjdG9yLiIKICAg KGxldCAoKHJlc3VsdCAoaGlmLWZhY3RvcikpCi0JKG1hdGgtb3AgbmlsKSkKLSAgICAod2hpbGUg KG1lbXEgaGlmLXRva2VuICcoaGlmLXBsdXMgaGlmLW1pbnVzIGhpZi1sb2dpb3IgaGlmLWxvZ2Fu ZCkpCisgICAgICAgIChtYXRoLW9wIG5pbCkpCisgICAgKHdoaWxlIChtZW1xIGhpZi10b2tlbiAn KGhpZi1tdWx0aXBseSBoaWYtZGl2aWRlIGhpZi1tb2R1bG8pKQogICAgICAgKHNldHEgbWF0aC1v cCBoaWYtdG9rZW4pCiAgICAgICAoaGlmLW5leHR0b2tlbikKICAgICAgIChzZXRxIHJlc3VsdCAo bGlzdCBtYXRoLW9wIHJlc3VsdCAoaGlmLWZhY3RvcikpKSkKLSAgcmVzdWx0KSkKKyAgICByZXN1 bHQpKQogCiAoZGVmdW4gaGlmLWZhY3RvciAoKQotICAiUGFyc2UgYSBmYWN0b3I6ICchJyBmYWN0 b3IgfCAnKCcgZXhwciAnKScgfCAnZGVmaW5lZCgnIGlkICcpJyB8IGlkLiIKKyAgIlBhcnNlIGEg ZmFjdG9yOiAnIScgZmFjdG9yIHwgJ34nIGZhY3RvciB8ICcoJyBleHByICcpJyB8ICdkZWZpbmVk KCcgaWQgJyknIHwgJ2lkKHBhcm1saXN0KScgfCBzdHJpbmdzIHwgaWQuIgogICAoY29uZAotICAg KChlcSBoaWYtdG9rZW4gJ25vdCkKKyAgICgoZXEgaGlmLXRva2VuICdoaWYtbm90KQogICAgICho aWYtbmV4dHRva2VuKQogICAgIChsaXN0ICdoaWYtbm90IChoaWYtZmFjdG9yKSkpCiAKLSAgICgo ZXEgaGlmLXRva2VuICdscGFyZW4pCisgICAoKGVxIGhpZi10b2tlbiAnaGlmLWxvZ25vdCkKKyAg ICAoaGlmLW5leHR0b2tlbikKKyAgICAobGlzdCAnaGlmLWxvZ25vdCAoaGlmLWZhY3RvcikpKQor CisgICAoKGVxIGhpZi10b2tlbiAnaGlmLWxwYXJlbikKICAgICAoaGlmLW5leHR0b2tlbikKLSAg ICAobGV0ICgocmVzdWx0IChoaWYtZXhwcikpKQotICAgICAgKGlmIChub3QgKGVxIGhpZi10b2tl biAncnBhcmVuKSkKLQkgIChlcnJvciAiQmFkIHRva2VuIGluIHBhcmVudGhlc2l6ZWQgZXhwcmVz c2lvbjogJXMiIGhpZi10b2tlbikKLQkoaGlmLW5leHR0b2tlbikKLQlyZXN1bHQpKSkKKyAgICAo bGV0ICgocmVzdWx0IChoaWYtZXhwcmxpc3QpKSkKKyAgICAgIChpZiAobm90IChlcSBoaWYtdG9r ZW4gJ2hpZi1ycGFyZW4pKQorICAgICAgICAgIChlcnJvciAiQmFkIHRva2VuIGluIHBhcmVudGhl c2l6ZWQgZXhwcmVzc2lvbjogJXMiIGhpZi10b2tlbikKKyAgICAgICAgKGhpZi1uZXh0dG9rZW4p CisgICAgICAgIHJlc3VsdCkpKQogCiAgICAoKGVxIGhpZi10b2tlbiAnaGlmLWRlZmluZWQpCiAg ICAgKGhpZi1uZXh0dG9rZW4pCi0gICAgKGxldCAoKHBhcmVuICh3aGVuIChlcSBoaWYtdG9rZW4g J2xwYXJlbikgKGhpZi1uZXh0dG9rZW4pIHQpKQotCSAgKGlkZW50IGhpZi10b2tlbikpCi0gICAg ICAoaWYgKG1lbXEgaGlmLXRva2VuICcob3IgYW5kIG5vdCBoaWYtZGVmaW5lZCBscGFyZW4gcnBh cmVuKSkKLQkgIChlcnJvciAiRXJyb3I6IHVuZXhwZWN0ZWQgdG9rZW46ICVzIiBoaWYtdG9rZW4p KQorICAgIChsZXQgKChwYXJlbiAod2hlbiAoZXEgaGlmLXRva2VuICdoaWYtbHBhcmVuKSAoaGlm LW5leHR0b2tlbikgdCkpCisgICAgICAgICAgKGlkZW50IGhpZi10b2tlbikpCisgICAgICAoaWYg KG1lbXEgaGlmLXRva2VuICcob3IgYW5kIG5vdCBoaWYtZGVmaW5lZCBoaWYtbHBhcmVuIGhpZi1y cGFyZW4pKQorICAgICAgICAgIChlcnJvciAiRXJyb3I6IHVuZXhwZWN0ZWQgdG9rZW46ICVzIiBo aWYtdG9rZW4pKQogICAgICAgKHdoZW4gcGFyZW4KLQkoaGlmLW5leHR0b2tlbikKLQkodW5sZXNz IChlcSBoaWYtdG9rZW4gJ3JwYXJlbikKLQkgIChlcnJvciAiRXJyb3I6IGV4cGVjdGVkIFwiKVwi IGFmdGVyIGlkZW50aWZpZXIiKSkpCisgICAgICAgIChoaWYtbmV4dHRva2VuKQorICAgICAgICAo dW5sZXNzIChlcSBoaWYtdG9rZW4gJ2hpZi1ycGFyZW4pCisgICAgICAgICAgKGVycm9yICJFcnJv cjogZXhwZWN0ZWQgXCIpXCIgYWZ0ZXIgaWRlbnRpZmllciIpKSkKICAgICAgIChoaWYtbmV4dHRv a2VuKQogICAgICAgYChoaWYtZGVmaW5lZCAocXVvdGUgLGlkZW50KSkpKQogCiAgICAoKG51bWJl cnAgaGlmLXRva2VuKQogICAgIChwcm9nMSBoaWYtdG9rZW4gKGhpZi1uZXh0dG9rZW4pKSkKIAor ICAgKChzdHJpbmdwIGhpZi10b2tlbikKKyAgICAoaGlmLXN0cmluZy1jb25jYXRlbmF0aW9uKSkK KwogICAgOzsgVW5hcnkgcGx1cy9taW51cy4KICAgICgobWVtcSBoaWYtdG9rZW4gJyhoaWYtbWlu dXMgaGlmLXBsdXMpKQogICAgIChsaXN0IChwcm9nMSBoaWYtdG9rZW4gKGhpZi1uZXh0dG9rZW4p KSAwIChoaWYtZmFjdG9yKSkpCiAKLSAgICh0CQkJCQk7IGlkZW50aWZpZXIKKyAgICh0ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGlkZW50aWZpZXIKICAgICAobGV0ICgoaWRl bnQgaGlmLXRva2VuKSkKLSAgICAgIChpZiAobWVtcSBpZGVudCAnKG9yIGFuZCkpCi0JICAoZXJy b3IgIkVycm9yOiBtaXNzaW5nIGlkZW50aWZpZXIiKSkKICAgICAgIChoaWYtbmV4dHRva2VuKQot ICAgICAgYChoaWYtbG9va3VwIChxdW90ZSAsaWRlbnQpKSkpKSkKKyAgICAgIChpZiAoZXEgaGlm LXRva2VuICdoaWYtbHBhcmVuKQorICAgICAgICAgIChoaWYtcGxhY2UtbWFjcm8taW52b2NhdGlv biBpZGVudCkKKyAgICAgICAgYChoaWYtbG9va3VwIChxdW90ZSAsaWRlbnQpKSkpKSkpCisKKyhk ZWZ1biBoaWYtZ2V0LWFyZ3VtZW50LWxpc3QgKGlkZW50KQorICAobGV0ICgobmVzdCAwKQorICAg ICAgICAocGFybWxpc3QgbmlsKSA7OyBhICJ0b2tlbiIgbGlzdCBvZiBwYXJhbWV0ZXJzLCB3aWxs IGxhdGVyIGJlIHBhcnNlZAorICAgICAgICAocGFybSBuaWwpKQorICAgICh3aGlsZSAob3IgKG5v dCAoZXEgKGhpZi1uZXh0dG9rZW4pICdoaWYtcnBhcmVuKSkKKyAgICAgICAgICAgICAgICgvPSBu ZXN0IDApKQorICAgICAgKGlmIChlcSAoY2FyIHBhcm0pICdoaWYtY29tbWEpCisgICAgICAgICAg KHNldHEgcGFybSBuaWwpKQorICAgICAgKGNvbmQKKyAgICAgICAoKGVxIGhpZi10b2tlbiAnaGlm LWxwYXJlbikKKyAgICAgICAgKHNldHEgbmVzdCAoMSsgbmVzdCkpKQorICAgICAgICgoZXEgaGlm LXRva2VuICdoaWYtcnBhcmVuKQorICAgICAgICAoc2V0cSBuZXN0ICgxLSBuZXN0KSkKKyAgICAg ICAgKGlmICg8IG5lc3QgMCkKKyAgICAgICAgICAgIChlcnJvciAiVW5iYWxhbmNlZCBwYXJlbnRo ZXNpcyB3aGVuIGludm9raW5nIG1hY3JvICVTIiBpZGVudCkpKQorICAgICAgICgoYW5kIChlcSBo aWYtdG9rZW4gJ2hpZi1jb21tYSkKKyAgICAgICAgICAgICAoPSBuZXN0IDApKQorICAgICAgICAo c2V0cSBwYXJtbGlzdCAoYXBwZW5kIHBhcm1saXN0IChsaXN0IHBhcm0pKQorICAgICAgICAgICAg ICBwYXJtIG5pbCkpKQorICAgICAgKHNldHEgcGFybSAoYXBwZW5kIHBhcm0gKGxpc3QgaGlmLXRv a2VuKSkpKQorICAgIChzZXRxIHBhcm1saXN0IChhcHBlbmQgcGFybWxpc3QgKGxpc3QgcGFybSkp KSA7IG9rYXkgZXZlbiBpZiBwYXJtIGlzIG5pbAorICAgIChoaWYtbmV4dHRva2VuKSA7IGRyb3Ag dGhlIGhpZi1ycGFyZW4sIGdldCBuZXh0IHRva2VuCisgICAgcGFybWxpc3QpKQorCisoZGVmdW4g aGlmLXBsYWNlLW1hY3JvLWludm9jYXRpb24gKGlkZW50KQorICAobGV0ICgocGFybWxpc3QgKGhp Zi1nZXQtYXJndW1lbnQtbGlzdCBpZGVudCkpKQorICAgIGAoaGlmLWludm9rZSAocXVvdGUgLGlk ZW50KSAocXVvdGUgLHBhcm1saXN0KSkpKQorCisoZGVmdW4gaGlmLXN0cmluZy1jb25jYXRlbmF0 aW9uICgpCisgICJQYXJzZSBjb25jYXRlbmF0ZWQgc3RyaW5nczogc3RyaW5nIHwgc3RyaW5ncyBz dHJpbmciCisgIChsZXQgKChyZXN1bHQgKHN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIGhpZi10b2tl bikpKQorICAgICh3aGlsZSAoc3RyaW5ncCAoaGlmLW5leHR0b2tlbikpCisgICAgICAoc2V0cSBy ZXN1bHQgKGNvbmNhdAorICAgICAgICAgICAgICAgICAgICAoc3Vic3RyaW5nIHJlc3VsdCAwIC0x KSAgICA7IHJlbW92ZSB0cmFpbGluZyAnIicKKyAgICAgICAgICAgICAgICAgICAgKHN1YnN0cmlu ZyBoaWYtdG9rZW4gMSkpKSkgOyByZW1vdmUgbGVhZGluZyAgJyInCisgICAgcmVzdWx0KSkKKwor KGRlZnVuIGhpZi1kZWZpbmUtbWFjcm8gKHBhcm1saXN0IHRva2VuLWJvZHkpCisgICJBIG1hcmtl ciBmb3IgZGVmaW5lZCBtYWNybyB3aXRoIGFyZ3VtZW50cywgY2Fubm90IGJlIGV2YWx1YXRlZCBh bG9uZSB3aXRoIG5vIHBhcmFtZXRlcnMgaW5wdXRlZC4iCisgIDs7IFRPRE86IGlucHV0IHBhcmFt ZXRlcnMgYXQgcnVuIHRpbWUsIHVzZSBtaW5pYnVmZmVyIHRvIHF1ZXJ5IGFsbCBwYXJhbWV0ZXJz CisgIChlcnJvciAiQXJndW1lbnRlZCBtYWNybyBjYW5ub3QgYmUgZXZhbHVhdGVkIHdpdGhvdXQg cGFzc2luZyBhbnkgcGFyYW1ldGVyLiIpKQorCisoZGVmdW4gaGlmLXN0cmluZ2lmeSAoYSkKKyAg IlN0cmluZ2lmeSBhIG51bWJlciwgc3RyaW5nIG9yIHN5bWJvbCIKKyAgKGNvbmQKKyAgICgobnVt YmVycCBhKQorICAgIChudW1iZXItdG8tc3RyaW5nIGEpKQorICAgKChhdG9tIGEpCisgICAgKHN5 bWJvbC1uYW1lIGEpKQorICAgKChzdHJpbmdwIGEpCisgICAgKGNvbmNhdCAiXCIiIGEgIlwiIikp CisgICAodAorICAgIChlcnJvciAiSW52YWxpZCB0b2tlbiB0byBzdHJpbmdpZnkiKSkpKQorCiso ZGVmdW4gaW50ZXJuLXNhZmUgKHN0cikKKyAgKGlmIChzdHJpbmdwIHN0cikKKyAgICAgIChpbnRl cm4gc3RyKSkpCisKKyhkZWZ1biBoaWYtbWVyZ2Utb3BlcmF0b3ItdG9rZW4gKGEgYikKKyAgIlN1 cHBvcnQgd2VpcmQgKGJ1dCB2YWxpZCkgdXNlIG9mIHRva2VuIGNvbmNhdGVuYXRpb24uIEhlcmUg d2UgdGFrZSBjYXJlIG9ubHkgdGhvc2UgdGhhdCBjYW4gYmUgZXZhbHVhdGVkIGR1cmluZworcHJl cHJvY2Vzc2luZyB0aW1lLiBGb3IgdGhvc2UgY29tcHV0YWJsZSBzeW50YXggdGhhdCBjYW4gb25s eSBiZSBldmFsdWF0ZWQgZHVyaW5nIEMgcnVudGltZSAobGlrZSAnKysnLCctLScsJys9Jy4uLiks Cit3ZSBpZ25vcmUgdGhlbSBhbGwgaGVyZS4iCisgIChjb25kCisgICAoKGFuZCAoZXEgYSAnaGlm LWxvZ2lvcikgKGVxIGIgJ2hpZi1sb2dpb3IpKSA7OyAnfCcnfCcgLT4gJ3x8JworICAgICdoaWYt b3IpCisgICAoKGFuZCAoZXEgYSAnaGlmLWxvZ2FuZCkgKGVxIGIgJ2hpZi1sb2dhbmQpKSA7OyAn JicnJicgLT4gJyYmJworICAgICdoaWYtYW5kKQorICAgKChhbmQgKGVxIGEgJ2hpZi1hc3NpZ24p IChlcSBiICdoaWYtYXNzaWduKSkgOzsgJz0nJz0nIC0+ICc9PScKKyAgICAnaGlmLWVxdWFsKQor ICAgKChhbmQgKGVxIGEgJ2hpZi1ub3QpIChlcSBiICdoaWYtYXNzaWduKSkgOzsgJyEnJz0nIC0+ ICchPScKKyAgICAnaGlmLW5vdGVxdWFsKQorICAgKChlcSBhICdoaWYtbGVzcykKKyAgICAoaWYg KGVxIGIgJ2hpZi1sZXNzKSA7OyAnPCcnPCcgLT4gJzw8JworICAgICAgICAnaGlmLXNoaWZ0bGVm dAorICAgICAgKGlmIChlcSBiICdoaWYtYXNzaWduKSA7OyAnPCcnPScgLT4gJzw9JworICAgICAg ICAgICdoaWYtbGVzcy1lcXVhbCkpKQorICAgKChlcSBhICdoaWYtZ3JlYXRlcikKKyAgICAoaWYg KGVxIGIgJ2hpZi1ncmVhdGVyKSA7OyAnPicnPicgLT4gJz4+JworICAgICAgICAnaGlmLXNoaWZ0 bGVmdAorICAgICAgKGlmIChlcSBiICdoaWYtYXNzaWduKSA7OyAnPicnPScgLT4gJz49JworICAg ICAgICAgICdoaWYtZ3JlYXRlci1lcXVhbCkpKSkpCisKKyhkZWZ1biBoaWYtdG9rZW4tY29uY2F0 IChhIGIpCisgICJDb25jYXRlbmF0aW9uIHR3byBzeW1ib2wgbmFtZSBpbnRvIGEgbG9uZ2VyIHN5 bWJvbCwgY3VycmVudGx5IHN1cHBvcnQgb25seSBzaW1wbGUgc3ltYm9sIGNvbmNhdGVuYXRpb24u IgorICAoaWYgKG9yIChtZW1xIGEgaGlmLXZhbGlkLXRva2VuLWxpc3QpCisgICAgICAgICAgKG1l bXEgYiBoaWYtdmFsaWQtdG9rZW4tbGlzdCkpCisgICAgICAobGV0ICgocmVzdWx0IChoaWYtbWVy Z2Utb3BlcmF0b3ItdG9rZW4gYSBiKSkpCisgICAgICAgIChvciByZXN1bHQKKyAgICAgICAgICAg IDs7KGVycm9yICJJbnZhbGlkIHRva2VuIHRvIGNvbmNhdGVuYXRlIikKKyAgICAgICAgICAgIChl cnJvciAicGFzdGluZyBcIiVzXCIgYW5kIFwiJXNcIiBkb2VzIG5vdCBnaXZlIGEgdmFsaWQgcHJl cHJvY2Vzc2luZyB0b2tlbiIKKyAgICAgICAgICAgICAgICAgICAoaWYgKG1lbXEgYSBoaWYtdmFs aWQtdG9rZW4tbGlzdCkgKGNhciAocmFzc29jIGEgaGlmLXRva2VuLWFsaXN0KSkgKHN5bWJvbC1u YW1lIGEpKQorICAgICAgICAgICAgICAgICAgIChpZiAobWVtcSBiIGhpZi12YWxpZC10b2tlbi1s aXN0KSAoY2FyIChyYXNzb2MgYiBoaWYtdG9rZW4tYWxpc3QpKSAoc3ltYm9sLW5hbWUgYikpKSkp CisgICAgKGludGVybi1zYWZlIChjb25jYXQgKGhpZi1zdHJpbmdpZnkgYSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAoaGlmLXN0cmluZ2lmeSBiKSkpKSkKIAogKGRlZnVuIGhpZi1tYXRoaWZ5 ICh2YWwpCiAgICJUcmVhdCBWQUwgYXMgYSBudW1iZXI6IGlmIGl0J3MgdCBvciBuaWwsIHVzZSAx IG9yIDAuIgogICAoY29uZCAoKGVxIHZhbCB0KSAxKQotCSgobnVsbCB2YWwpIDApCi0JKHQgdmFs KSkpCisgICAgICAgICgobnVsbCB2YWwpIDApCisgICAgICAgICh0IHZhbCkpKQogCiAoZGVmdW4g aGlmLWNvbmRpdGlvbmFsIChhIGIgYykKICAgKGlmIChub3QgKHplcm9wIChoaWYtbWF0aGlmeSBh KSkpIChoaWYtbWF0aGlmeSBiKSAoaGlmLW1hdGhpZnkgYykpKQorCiAoZGVmdW4gaGlmLWFuZCAo YSBiKQogICAoYW5kIChub3QgKHplcm9wIChoaWYtbWF0aGlmeSBhKSkpIChub3QgKHplcm9wICho aWYtbWF0aGlmeSBiKSkpKSkKIChkZWZ1biBoaWYtb3IgKGEgYikKICAgKG9yIChub3QgKHplcm9w IChoaWYtbWF0aGlmeSBhKSkpIChub3QgKHplcm9wIChoaWYtbWF0aGlmeSBiKSkpKSkKIChkZWZ1 biBoaWYtbm90IChhKQogICAoemVyb3AgKGhpZi1tYXRoaWZ5IGEpKSkKKyhkZWZ1biBoaWYtbG9n bm90IChhKQorICAobG9nbm90IGEpKQogCiAoZGVmbWFjcm8gaGlmLW1hdGhpZnktYmlub3AgKGZ1 bikKICAgYChsYW1iZGEgKGEgYikKICAgICAgLChmb3JtYXQgIkxpa2UgYCVzJyBidXQgdHJlYXQg dCBhbmQgbmlsIGFzIDEgYW5kIDAuIiBmdW4pCiAgICAgICgsZnVuIChoaWYtbWF0aGlmeSBhKSAo aGlmLW1hdGhpZnkgYikpKSkKIAorKGRlZnVuIHNoaWZ0bGVmdCAoYSBiKQorICAoaWYgKDwgYSAw KQorICAgICAgKGFzaCBhIGIpCisgICAgKGxzaCBhIGIpKSkKKworKGRlZnVuIHNoaWZ0cmlnaHQg KGEgYikKKyAgKGlmICg8IGEgMCkKKyAgICAgIChhc2ggYSAoLSAwIGIpKQorICAgIChsc2ggYSAo LSAwIGIpKSkpCisKKworKGRlZmFsaWFzICdoaWYtbXVsdGlwbHkgICAgICAoaGlmLW1hdGhpZnkt Ymlub3AgKikpCisoZGVmYWxpYXMgJ2hpZi1kaXZpZGUgICAgICAgIChoaWYtbWF0aGlmeS1iaW5v cCAvKSkKKyhkZWZhbGlhcyAnaGlmLW1vZHVsbyAgICAgICAgKGhpZi1tYXRoaWZ5LWJpbm9wICUp KQogKGRlZmFsaWFzICdoaWYtcGx1cyAgICAgICAgICAoaGlmLW1hdGhpZnktYmlub3AgKykpCiAo ZGVmYWxpYXMgJ2hpZi1taW51cyAgICAgICAgIChoaWYtbWF0aGlmeS1iaW5vcCAtKSkKKyhkZWZh bGlhcyAnaGlmLWVxdWFsICAgICAgICAgKGhpZi1tYXRoaWZ5LWJpbm9wID0pKQogKGRlZmFsaWFz ICdoaWYtbm90ZXF1YWwgICAgICAoaGlmLW1hdGhpZnktYmlub3AgLz0pKQogKGRlZmFsaWFzICdo aWYtZ3JlYXRlciAgICAgICAoaGlmLW1hdGhpZnktYmlub3AgPikpCiAoZGVmYWxpYXMgJ2hpZi1s ZXNzICAgICAgICAgIChoaWYtbWF0aGlmeS1iaW5vcCA8KSkKIChkZWZhbGlhcyAnaGlmLWdyZWF0 ZXItZXF1YWwgKGhpZi1tYXRoaWZ5LWJpbm9wID49KSkKIChkZWZhbGlhcyAnaGlmLWxlc3MtZXF1 YWwgICAgKGhpZi1tYXRoaWZ5LWJpbm9wIDw9KSkKIChkZWZhbGlhcyAnaGlmLWxvZ2lvciAgICAg ICAgKGhpZi1tYXRoaWZ5LWJpbm9wIGxvZ2lvcikpCisoZGVmYWxpYXMgJ2hpZi1sb2d4b3IgICAg ICAgIChoaWYtbWF0aGlmeS1iaW5vcCBsb2d4b3IpKQogKGRlZmFsaWFzICdoaWYtbG9nYW5kICAg ICAgICAoaGlmLW1hdGhpZnktYmlub3AgbG9nYW5kKSkKKyhkZWZhbGlhcyAnaGlmLXNoaWZ0bGVm dCAgICAgKGhpZi1tYXRoaWZ5LWJpbm9wIHNoaWZ0bGVmdCkpCisoZGVmYWxpYXMgJ2hpZi1zaGlm dHJpZ2h0ICAgIChoaWYtbWF0aGlmeS1iaW5vcCBzaGlmdHJpZ2h0KSkKIAotOzs7LS0tLS0tLS0t LS0gZW5kIG9mIHBhcnNlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCisoZGVmdW4gaGlmLWNv bW1hICgmcmVzdCBleHByKQorICAiRXZhbHVhdGUgYSBsaXN0IG9mIGV4cHIsIHJldHVybiB0aGUg cmVzdWx0IG9mIHRoZSBsYXN0IGl0ZW0iCisgIChsZXQgKChyZXN1bHQgbmlsKSkKKyAgICAoZG9s aXN0IChlIGV4cHIpCisgICAgICAoaWdub3JlLWVycm9ycworICAgICAgICAoc2V0cSByZXN1bHQg KGZ1bmNhbGwgaGlkZS1pZmRlZi1ldmFsdWF0b3IgZSkpKSkKKyAgICByZXN1bHQpKQorCisoZGVm dW4gaGlmLXRva2VuLXN0cmluZ2lmaWNhdGlvbiAobCkKKyAgIlNjYW4gdG9rZW4gbGlzdCBmb3Ig J2hpZi1zdHJpbmdpZnknICgnIycpIHRva2VuIGFuZCBzdHJpbmdpZnkgdGhlIG5leHQgdG9rZW4i CisgIChsZXQgKHJlc3VsdCkKKyAgICAod2hpbGUgbAorICAgICAgKHNldHEgcmVzdWx0CisgICAg ICAgICAgICAoYXBwZW5kIHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAobGlzdAorICAgICAg ICAgICAgICAgICAgICAgKGlmIChlcSAoY2FyIGwpICdoaWYtc3RyaW5naWZ5KQorICAgICAgICAg ICAgICAgICAgICAgICAgIChwcm9nMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYg KGNhZHIgbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWYtc3RyaW5naWZ5 IChjYWRyIGwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciAiTm8gdG9r ZW4gdG8gc3RyaW5naWZ5IikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBsIChj ZHIgbCkpKQorICAgICAgICAgICAgICAgICAgICAgICAoY2FyIGwpKSkpKQorICAgICAgKHNldHEg bCAoY2RyIGwpKSkKKyAgICByZXN1bHQpKQorCisoZGVmdW4gaGlmLXRva2VuLWNvbmNhdGVuYXRp b24gKGwpCisgICJTY2FuIHRva2VuIGxpc3QgZm9yICdoaWYtdG9rZW4tY29uY2F0JyAoJyMjJykg dG9rZW4gYW5kIGNvbmNhdGVuYXRlIHR3byB0b2tlbnMiCisgIChsZXQgKChwcmV2IG5pbCkKKyAg ICAgICAgcmVzdWx0KQorICAgICh3aGlsZSBsCisgICAgICAod2hpbGUgKGVxIChjYXIgbCkgJ2hp Zi10b2tlbi1jb25jYXQpCisgICAgICAgICh1bmxlc3MgcHJldgorICAgICAgICAgIChlcnJvciAi Tm8gdG9rZW4gYmVmb3JlICMjIHRvIGNvbmNhdGVuYXRlIikpCisgICAgICAgICh1bmxlc3MgKGNk ciBsKQorICAgICAgICAgIChlcnJvciAiTm8gdG9rZW4gYWZ0ZXIgIyMgdG8gY29uY2F0ZW5hdGUi KSkKKyAgICAgICAgKHNldHEgcHJldiAoaGlmLXRva2VuLWNvbmNhdCBwcmV2IChjYWRyIGwpKSkK KyAgICAgICAgKHNldHEgbCAoY2RkciBsKSkpCisgICAgICAoaWYgcHJldgorICAgICAgICAoc2V0 cSByZXN1bHQgKGFwcGVuZCByZXN1bHQgKGxpc3QgcHJldikpKSkKKyAgICAgIChzZXRxIHByZXYg KGNhciBsKQorICAgICAgICAgICAgbCAoY2RyIGwpKSkKKyAgICAoaWYgcHJldgorICAgICAgICAo YXBwZW5kIHJlc3VsdCAobGlzdCBwcmV2KSkKKyAgICAgIHJlc3VsdCkpKQorCisoZGVmdW4gZmxh dHRlbiAobCkKKyAgIkZsYXR0ZW4gYSB0cmVlIgorICAoaWYgKGFuZCBsIChhdG9tIGwpKQorICAg ICAgKGxpc3QgbCkKKyAgICAoaWYgKGNvbnNwIGwpCisgICAgICAgIChuY29uYyAoZmxhdHRlbiAo Y2FyIGwpKSAoZmxhdHRlbiAoY2RyIGwpKSkpKSkKKworKGRlZnVuIGRlbGltaXQgKGwgYSkKKyAg IkRlbG1pdCBhIGxpc3QgJ2wnIHdpdGggZGVsaW1pdGVyIGF0b20gJ2QnIgorICAobmNvbmMgKG1h cGNhbiAobGFtYmRhIChsKQorICAgICAgICAgICAgICAgICAgIChsaXN0IGwgYSkpICAoYnV0bGFz dCBsKSkKKyAgICAgICAgIChsYXN0IGwpKSkKKworOzsgUGVyZm9ybSB0b2tlbiByZXBsYWNlbWVu dDoKKyhkZWZ1biBoaWYtbWFjcm8tc3VwcGx5LWFyZ3VtZW50cyAobWFjcm8tbmFtZSBhY3R1YWwt cGFybXMpCisgICJFeHBhbmQgYSBtYWNybyBmdW5jdGlvbiwgcmVwbGFjZSAnYWN0dWFsLXBhcm1z JyB0byB0aGUgZnVuY3Rpb24gYm9keS4iCisgIChsZXQqICgoU0EgICAgICAgICAgICAgICAgICAg KGFzc29jIG1hY3JvLW5hbWUgaGlkZS1pZmRlZi1lbnYpKQorICAgICAgICAgKG1hY3JvICAgICAg ICAgICAgICAgIChhbmQgU0EKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj ZHIgU0EpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgKGNhZHIgU0Ep ICdoaWYtZGVmaW5lLW1hY3JvKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNkZHIgU0EpKSkKKyAgICAgICAgIChmb3JtYWwtcGFybXMgICAgICAgICAoYW5kIG1hY3JvIChj YXIgbWFjcm8pKSkKKyAgICAgICAgIChtYWNyby1ib2R5ICAgICAgICAgICAoYW5kIG1hY3JvIChj YWRyIG1hY3JvKSkpCisgICAgICAgICAoaGlkZS1pZmRlZi1sb2NhbC1lbnYgbmlsKSA7OyBkeW5h bWljIGJpbmRpbmcgbG9jYWwgdGFibGUKKyAgICAgICAgIGFjdHVhbC1jb3VudAorICAgICAgICAg Zm9ybWFsLWNvdW50CisgICAgICAgICBhY3R1YWwKKyAgICAgICAgIGZvcm1hbAorICAgICAgICAg ZXRjKQorCisgICAgKHdoZW4gKGFuZCBhY3R1YWwtcGFybXMgZm9ybWFsLXBhcm1zIG1hY3JvLWJv ZHkpCisgICAgICA7OyBGb3IgZWFjaCBhY3R1YWwgcGFyYW1ldGVyLCBldmFsdWF0ZSBlYWNoIG9u ZSBhbmQgYXNzb2NpYXRlIGl0CisgICAgICA7OyB3aXRoIHRoZSBhc3NvY2lhdGVkIGFjdHVhbCBw YXJhbWV0ZXIsIHB1dCBpdCBpbnRvIGxvY2FsIHRhYmxlIGFuZCBmaW5hbGx5CisgICAgICA7OyBl dmFsdWF0ZSB0aGUgbWFjcm8gYm9keS4KKyAgICAgIChpZiAoc2V0cSBldGMgKGVxIChjYXIgZm9y bWFsLXBhcm1zKSAnaGlmLWV0YykpIDs7IFRha2UgY2FyZSBvZiAnaGlmLWV0YyBmaXJzdC4gUHJl Zml4ICdoaWYtY29tbWEgYmFjayBpZiBuZWVkZWQuCisgICAgICAgICAgKHNldHEgZm9ybWFsLXBh cm1zIChjZHIgZm9ybWFsLXBhcm1zKSkpCisgICAgICAoc2V0cSBmb3JtYWwtY291bnQgKGxlbmd0 aCBmb3JtYWwtcGFybXMpCisgICAgICAgICAgICBhY3R1YWwtY291bnQgKGxlbmd0aCBhY3R1YWwt cGFybXMpKQorCisgICAgICAoaWYgKD4gZm9ybWFsLWNvdW50IGFjdHVhbC1jb3VudCkKKyAgICAg ICAgICAoZXJyb3IgIlRvbyBmZXcgcGFybWFtZXRlciBmb3IgbWFjcm8gJVMiIG1hY3JvLW5hbWUp CisgICAgICAgIChpZiAoPCBmb3JtYWwtY291bnQgYWN0dWFsLWNvdW50KQorICAgICAgICAgICAg KG9yIGV0YworICAgICAgICAgICAgICAgIChlcnJvciAiVG9vIG1hbnkgcGFyYW1ldGVycyBmb3Ig bWFjcm8gJVMiIG1hY3JvLW5hbWUpKSkpCisKKyAgICAgIDs7IFBlcmZvcm0gdG9rZW4gcmVwbGFj ZW1lbnQgb24gdGhlIG1hY3JvLWJvZHkgb24gdGhlIHBhcmFtZXRlcnMKKyAgICAgICh3aGlsZSAo c2V0cSBmb3JtYWwgKGNhciBmb3JtYWwtcGFybXMpKQorICAgICAgICAoc2V0cSBmb3JtYWwtcGFy bXMgKGNkciBmb3JtYWwtcGFybXMpKQorICAgICAgICA7OyBQcmV2ZW50IHJlcGV0dGF0aXZlIHN1 YnN0aXR1dGF0aW9uLCB0aHVzIGNhbm5vdCB1c2UgJ3N1YnN0JworICAgICAgICA7OyBmb3IgZXhh bXBsZToKKyAgICAgICAgOzsgI2RlZmluZSBtYWMoYSxiKSAoYStiKQorICAgICAgICA7OyAjZGVm aW5lIHRlc3RtYWMgbWFjKGIseSkKKyAgICAgICAgOzsgdGVzdG1hYyBzaG91bGQgZXhwYW5kIHRv IChiK3kpOiByZXBsYWNlIG9mIGFyZ3VtZW50IGEgYW5kIGIgb2NjdXJzIHNpbXVsdGFuZW91c2x5 CisgICAgICAgIDs7IG5vdCBzZXF1ZW50aWFsbHkuIElmIHRoaXMgb2NjdXJzIHNlcXVlbnRpYWxs eSBhY2NvcmRpbmcgdG8gdGhlIGFyZ3VtZW50IG9yZGVyLAorICAgICAgICA7OyAgaXQgd2lsbCBi ZWNvbWU6IDEuIGZvcm1hbCBwYXJtICMxICdhJyByZXBsYWNlZCBieSBhY3R1YWwgcGFybSAnYics IHRodXMgKGErYikgYmVjb21lcyAoYitiKQorICAgICAgICA7OyAgMi4gZm9ybWFsIHBhcm0gIzIg J2InIHJlcGxhY2VkIGJ5IGFjdHVhbCBwYXJtICd5JywgdGh1cyAoYitiKSBiZWNvbWVzICh5K3kp LgorICAgICAgICAoc2V0cSBtYWNyby1ib2R5CisgICAgICAgICAgICAgIDs7IFVubGlrZSAnc3Vi c3QnLCAnc3Vic3RpdHV0ZScgcmVwbGFjZSBvbmx5IHRoZSB0b3AgbGV2ZWwgaW5zdGVhZCBvZiB0 aGUgd2hvbGUgdHJlZSwKKyAgICAgICAgICAgICAgOzsgbW9yZSBpbXBvcnRhbnRseSwgaXQncyBu b3QgZGVzdHJ1Y3RpdmUuCisgICAgICAgICAgICAgIChpZiAoYW5kIGV0YyAobnVsbCBmb3JtYWwt cGFybXMpKQorICAgICAgICAgICAgICAgICAgKHN1YnN0aXR1dGUgKGRlbGltaXQgYWN0dWFsLXBh cm1zICdoaWYtY29tbWEpIGZvcm1hbCBtYWNyby1ib2R5KQorICAgICAgICAgICAgICAgIChzdWJz dGl0dXRlIChjYXIgYWN0dWFsLXBhcm1zKSBmb3JtYWwgbWFjcm8tYm9keSkpKQorICAgICAgICAo c2V0cSBhY3R1YWwtcGFybXMgKGNkciBhY3R1YWwtcGFybXMpKSkKKworICAgICAgOzsgUmVwbGFj ZW1lbnQgY29tcGxldGVkLCBmbGF0dGVuIHRoZSB3aG9sZSB0b2tlbiBsaXN0LAorICAgICAgKHNl dHEgbWFjcm8tYm9keSAoZmxhdHRlbiBtYWNyby1ib2R5KSkKKworICAgICAgOzsgU3RyaW5naWZp Y2F0aW9uIGFuZCB0b2tlbiBjb25jYXRlbmF0aW9uIGhhcHBlbnMgaGVyZQorICAgICAgKGhpZi10 b2tlbi1jb25jYXRlbmF0aW9uIChoaWYtdG9rZW4tc3RyaW5naWZpY2F0aW9uIG1hY3JvLWJvZHkp KSkpKQorCisoZGVmdW4gaGlmLWludm9rZSAobWFjcm8tbmFtZSBhY3R1YWwtcGFybXMpCisgICJJ bnZva2UgYSBtYWNybyBieSBmaXJzdCBleHBhbmRpbmcgaXQsIHRoZW4gcmVwYXJzZSB0aGUgbWFj cm8tYm9keSwgZmluYWxseSBpbnZva2UgdGhlIG1hY3JvLiIKKyAgICA7OyBSZXBhcnNlIHRoZSBt YWNybyBib2R5IGFuZCBldmFsdWF0ZSBpdAorICAgIChmdW5jYWxsIGhpZGUtaWZkZWYtZXZhbHVh dG9yCisgICAgICAgICAgICAgKGhpZi1wYXJzZS1pZi1leHAKKyAgICAgICAgICAgICAgKGhpZi1t YWNyby1zdXBwbHktYXJndW1lbnRzIG1hY3JvLW5hbWUgYWN0dWFsLXBhcm1zKQorICAgICAgICAg ICAgICBtYWNyby1uYW1lKSkpCisKKzs7Oy0tLS0tLS0tLS0tIGVuZCBvZiBwYXJzZXIgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIAotKGRlZnVuIGhpZi1jYW5vbmljYWxpemUgKCkKLSAgIldoZW4g YXQgYmVnaW5uaW5nIG9mICNpZlgsIHJldHVybiBhIExpc3AgZXhwcmVzc2lvbiBmb3IgaXRzIGNv bmRpdGlvbi4iCisoZGVmdW4gaGlmLWNhbm9uaWNhbGl6ZS10b2tlbnMgKHJlZ2V4cCkgOzsgZm9y IGRlYnVnZ2luZworICAiUmV0dXJuIHRoZSBleHBhbmRlZCByZXN1bHQgb2YgdGhlIHNjYW5uZWQg dG9rZW5zLiIKICAgKHNhdmUtZXhjdXJzaW9uCi0gICAgKGxldCAoKG5lZ2F0ZSAobG9va2luZy1h dCBoaWYtaWZuZGVmLXJlZ2V4cCkpKQotICAgICAgKHJlLXNlYXJjaC1mb3J3YXJkIGhpZi1pZngt cmVnZXhwKQorICAgIChyZS1zZWFyY2gtZm9yd2FyZCByZWdleHApCisgICAgKGxldCogKChjdXJy LXJlZ2V4cCAobWF0Y2gtc3RyaW5nIDApKQorICAgICAgICAgICAoZGVmaW5lZCAoc3RyaW5nLW1h dGNoIGhpZi1pZnhkZWYtcmVnZXhwIGN1cnItcmVnZXhwKSkKKyAgICAgICAgICAgKG5lZ2F0ZSAo YW5kIGRlZmluZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmc9IChtYXRjaC1zdHJp bmcgMiBjdXJyLXJlZ2V4cCkgIm4iKSkpKQogICAgICAgKGxldCogKCh0b2tlbnMgKGhpZi10b2tl bml6ZSAocG9pbnQpCi0JCQkJICAgKHByb2duIChoaWYtZW5kLW9mLWxpbmUpIChwb2ludCkpKSkK LQkgICAgIChleHByIChoaWYtcGFyc2UtaWYtZXhwIHRva2VucykpKQotCTs7IChtZXNzYWdlICJo aWYtY2Fub25pY2FsaXplZDogJXMiIGV4cHIpCi0JKGlmIG5lZ2F0ZQotCSAgICAobGlzdCAnaGlm LW5vdCBleHByKQotCSAgZXhwcikpKSkpCi0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHByb2duIChoaWYtZW5kLW9mLWxpbmUpIChwb2ludCkpKSkpCisgICAgICAgIChpZiBk ZWZpbmVkCisgICAgICAgICAgICAoc2V0cSB0b2tlbnMgKGxpc3QgJ2hpZi1kZWZpbmVkIHRva2Vu cykpKQorICAgICAgICAoaWYgbmVnYXRlCisgICAgICAgICAgICAoc2V0cSB0b2tlbnMgKGxpc3Qg J2hpZi1ub3QgdG9rZW5zKSkpCisgICAgICAgIHRva2VucykpKSkKKworKGRlZnVuIGhpZi1jYW5v bmljYWxpemUgKHJlZ2V4cCkKKyAgIldoZW4gYXQgYmVnaW5uaW5nIG9mIGByZWdleHAnIChpLmUu ICNpZlgpLCByZXR1cm4gYSBMaXNwIGV4cHJlc3Npb24gZm9yIGl0cyBjb25kaXRpb24uIgorICAo bGV0ICgoY2FzZS1mb2xkLXNlYXJjaCBuaWwpKQorICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAg KHJlLXNlYXJjaC1mb3J3YXJkIHJlZ2V4cCkKKyAgICAgIChsZXQqICgoY3Vyci1yZWdleHAgKG1h dGNoLXN0cmluZyAwKSkKKyAgICAgICAgICAgICAoZGVmaW5lZCAoc3RyaW5nLW1hdGNoIGhpZi1p ZnhkZWYtcmVnZXhwIGN1cnItcmVnZXhwKSkKKyAgICAgICAgICAgICAobmVnYXRlIChhbmQgZGVm aW5lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nPSAobWF0Y2gtc3RyaW5nIDIg Y3Vyci1yZWdleHApICJuIikpKQorICAgICAgICAgICAgICh0b2tlbnMgKGhpZi10b2tlbml6ZSAo cG9pbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nbiAoaGlmLWVu ZC1vZi1saW5lKSAocG9pbnQpKSkpKQorICAgICAgICAoaWYgZGVmaW5lZAorICAgICAgICAgICAg KHNldHEgdG9rZW5zIChsaXN0ICdoaWYtZGVmaW5lZCB0b2tlbnMpKSkKKyAgICAgICAgKGlmIG5l Z2F0ZQorICAgICAgICAgICAgKHNldHEgdG9rZW5zIChsaXN0ICdoaWYtbm90IHRva2VucykpKQor ICAgICAgICAoaGlmLXBhcnNlLWlmLWV4cCB0b2tlbnMpKSkpKQogCiAoZGVmdW4gaGlmLWZpbmQt YW55LWlmWCAoKQogICAiTW92ZSB0byBuZXh0ICNpZi4uLiwgb3IgI2lmbmRlZiwgYXQgcG9pbnQg b3IgYWZ0ZXIuIgpAQCAtNTgxLDkgKzExNjksOCBAQCB0aGF0IGZvcm0gc2hvdWxkIGJlIGRpc3Bs YXllZC4iKQogICAgICAgKHJlLXNlYXJjaC1mb3J3YXJkIGhpZi1pZngtcmVnZXhwIChwb2ludC1t YXgpIHQpCiAgICAgKGJlZ2lubmluZy1vZi1saW5lKSkpCiAKLQogKGRlZnVuIGhpZi1maW5kLW5l eHQtcmVsZXZhbnQgKCkKLSAgIk1vdmUgdG8gbmV4dCAjaWYuLi4sICNlbHNlLCBvciAjZW5kaWYs IGFmdGVyIHRoZSBjdXJyZW50IGxpbmUuIgorICAiTW92ZSB0byBuZXh0ICNpZi4uLiwgI2VsaWYu Li4sICNlbHNlLCBvciAjZW5kaWYsIGFmdGVyIHRoZSBjdXJyZW50IGxpbmUuIgogICA7OyAobWVz c2FnZSAiaGlmLWZpbmQtbmV4dC1yZWxldmFudCBhdCAlZCIgKHBvaW50KSkKICAgKGVuZC1vZi1s aW5lKQogICA7OyBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gYnkgb25seSBnb2luZyB0byBiZWdp bm5pbmcgb2YgbGluZSBpZiBtYXRjaCBmb3VuZApAQCAtNTk5LDI4ICsxMTg2LDMxIEBAIHRoYXQg Zm9ybSBzaG91bGQgYmUgZGlzcGxheWVkLiIpCiAgICAgIChiZWdpbm5pbmctb2YtbGluZSkpKQog CiAKLShkZWZ1biBoaWYtbG9va2luZy1hdC1pZlggKCkJCTs7IFNob3VsZCBldmVudHVhbGx5IHNl ZSAjaWYKKyhkZWZ1biBoaWYtbG9va2luZy1hdC1pZlggKCkgICAgICAgICAgICA7OyBTaG91bGQg ZXZlbnR1YWxseSBzZWUgI2lmCiAgIChsb29raW5nLWF0IGhpZi1pZngtcmVnZXhwKSkKIChkZWZ1 biBoaWYtbG9va2luZy1hdC1lbmRpZiAoKQogICAobG9va2luZy1hdCBoaWYtZW5kaWYtcmVnZXhw KSkKIChkZWZ1biBoaWYtbG9va2luZy1hdC1lbHNlICgpCiAgIChsb29raW5nLWF0IGhpZi1lbHNl LXJlZ2V4cCkpCi0KKyhkZWZ1biBoaWYtbG9va2luZy1hdC1lbGlmICgpCisgIChsb29raW5nLWF0 IGhpZi1lbGlmLXJlZ2V4cCkpCiAKIAogKGRlZnVuIGhpZi1pZmRlZi10by1lbmRpZiAoKQotICAi SWYgcG9zaXRpb25lZCBhdCAjaWZYIG9yICNlbHNlIGZvcm0sIHNraXAgdG8gY29ycmVzcG9uZGlu ZyAjZW5kaWYuIgorICAiSWYgcG9zaXRpb25lZCBhdCAjaWZYLCAjZWxpZiwgb3IgI2Vsc2UgZm9y bSwgc2tpcCB0byBjb3JyZXNwb25kaW5nICNlbmRpZi4iCiAgIDs7IChtZXNzYWdlICJoaWYtaWZk ZWYtdG8tZW5kaWYgYXQgJWQiIChwb2ludCkpIChzaXQtZm9yIDEpCiAgIChoaWYtZmluZC1uZXh0 LXJlbGV2YW50KQogICAoY29uZCAoKGhpZi1sb29raW5nLWF0LWlmWCkKLQkgKGhpZi1pZmRlZi10 by1lbmRpZikgOyBmaW5kIGVuZGlmIG9mIG5lc3RlZCBpZgotCSAoaGlmLWlmZGVmLXRvLWVuZGlm KSkgOyBmaW5kIG91dGVyIGVuZGlmIG9yIGVsc2UKLQkoKGhpZi1sb29raW5nLWF0LWVsc2UpCi0J IChoaWYtaWZkZWYtdG8tZW5kaWYpKSA7IGZpbmQgZW5kaWYgZm9sbG93aW5nIGVsc2UKLQkoKGhp Zi1sb29raW5nLWF0LWVuZGlmKQotCSAnZG9uZSkKLQkodAotCSAoZXJyb3IgIk1pc21hdGNoZWQg I2lmZGVmICNlbmRpZiBwYWlyIikpKSkKKyAgICAgICAgIChoaWYtaWZkZWYtdG8tZW5kaWYpIDsg ZmluZCBlbmRpZiBvZiBuZXN0ZWQgaWYKKyAgICAgICAgIChoaWYtaWZkZWYtdG8tZW5kaWYpKSA7 IGZpbmQgb3V0ZXIgZW5kaWYgb3IgZWxzZQorICAgICAgICAoKGhpZi1sb29raW5nLWF0LWVsaWYp CisgICAgICAgICAoaGlmLWlmZGVmLXRvLWVuZGlmKSkKKyAgICAgICAgKChoaWYtbG9va2luZy1h dC1lbHNlKQorICAgICAgICAgKGhpZi1pZmRlZi10by1lbmRpZikpIDsgZmluZCBlbmRpZiBmb2xs b3dpbmcgZWxzZQorICAgICAgICAoKGhpZi1sb29raW5nLWF0LWVuZGlmKQorICAgICAgICAgJ2Rv bmUpCisgICAgICAgICh0CisgICAgICAgICAoZXJyb3IgIk1pc21hdGNoZWQgI2lmZGVmICNlbmRp ZiBwYWlyIikpKSkKIAogCiAoZGVmdW4gaGlmLWVuZGlmLXRvLWlmZGVmICgpCkBAIC02MjksMTUg KzEyMTksMTggQEAgdGhhdCBmb3JtIHNob3VsZCBiZSBkaXNwbGF5ZWQuIikKICAgKGxldCAoKHN0 YXJ0IChwb2ludCkpKQogICAgIChoaWYtZmluZC1wcmV2aW91cy1yZWxldmFudCkKICAgICAoaWYg KD0gc3RhcnQgKHBvaW50KSkKLQkoZXJyb3IgIk1pc21hdGNoZWQgI2lmZGVmICNlbmRpZiBwYWly IikpKQorICAgICAgICAoZXJyb3IgIk1pc21hdGNoZWQgI2lmZGVmICNlbmRpZiBwYWlyIikpKQog ICAoY29uZCAoKGhpZi1sb29raW5nLWF0LWVuZGlmKQotCSAoaGlmLWVuZGlmLXRvLWlmZGVmKSA7 IGZpbmQgYmVnaW5uaW5nIG9mIG5lc3RlZCBpZgotCSAoaGlmLWVuZGlmLXRvLWlmZGVmKSkgOyBm aW5kIGJlZ2lubmluZyBvZiBvdXRlciBpZiBvciBlbHNlCi0JKChoaWYtbG9va2luZy1hdC1lbHNl KQotCSAoaGlmLWVuZGlmLXRvLWlmZGVmKSkKLQkoKGhpZi1sb29raW5nLWF0LWlmWCkKLQkgJ2Rv bmUpCi0JKHQpKSkJCQk7IG5ldmVyIGdldHMgaGVyZQorICAgICAgICAgKGhpZi1lbmRpZi10by1p ZmRlZikgOyBmaW5kIGJlZ2lubmluZyBvZiBuZXN0ZWQgaWYKKyAgICAgICAgIChoaWYtZW5kaWYt dG8taWZkZWYpKSA7IGZpbmQgYmVnaW5uaW5nIG9mIG91dGVyIGlmIG9yIGVsc2UKKyAgICAgICAg KChoaWYtbG9va2luZy1hdC1lbGlmKQorICAgICAgICAgKGhpZi1lbmRpZi10by1pZmRlZikpCisg ICAgICAgICgoaGlmLWxvb2tpbmctYXQtZWxzZSkKKyAgICAgICAgIChoaWYtZW5kaWYtdG8taWZk ZWYpKQorICAgICAgICAoKGhpZi1sb29raW5nLWF0LWlmWCkKKyAgICAgICAgICdkb25lKQorICAg ICAgICAodAorICAgICAgICAgKGVycm9yICJNaXNtYXRjaGVkICNlbmRpZiIpKSkpICAgICAgICAg ICAgICAgICA7IG5ldmVyIGdldHMgaGVyZQogCiAKIChkZWZ1biBmb3J3YXJkLWlmZGVmICgmb3B0 aW9uYWwgYXJnKQpAQCAtNjQ5LDEyICsxMjQyLDEyIEBAIFdpdGggYXJndW1lbnQsIGRvIHRoaXMg dGhhdCBtYW55IHRpbWVzLiIKICAgICAod2hpbGUgKDwgMCBhcmcpCiAgICAgICAoc2V0cSBhcmcg KC0gYXJnKSkKICAgICAgIChsZXQgKChzdGFydCAocG9pbnQpKSkKLQkodW5sZXNzIChoaWYtbG9v a2luZy1hdC1pZlgpCi0JICAoaGlmLWZpbmQtbmV4dC1yZWxldmFudCkpCi0JKGlmIChoaWYtbG9v a2luZy1hdC1pZlgpCi0JICAgIChoaWYtaWZkZWYtdG8tZW5kaWYpCi0JICAoZ290by1jaGFyIHN0 YXJ0KQotCSAgKGVycm9yICJObyBmb2xsb3dpbmcgI2lmZGVmIikpKSkpKQorICAgICAgICAodW5s ZXNzIChoaWYtbG9va2luZy1hdC1pZlgpCisgICAgICAgICAgKGhpZi1maW5kLW5leHQtcmVsZXZh bnQpKQorICAgICAgICAoaWYgKGhpZi1sb29raW5nLWF0LWlmWCkKKyAgICAgICAgICAgIChoaWYt aWZkZWYtdG8tZW5kaWYpCisgICAgICAgICAgKGdvdG8tY2hhciBzdGFydCkKKyAgICAgICAgICAo ZXJyb3IgIk5vIGZvbGxvd2luZyAjaWZkZWYiKSkpKSkpCiAKIAogKGRlZnVuIGJhY2t3YXJkLWlm ZGVmICgmb3B0aW9uYWwgYXJnKQpAQCAtNjY3LDEyICsxMjYwLDEyIEBAIFdpdGggYXJndW1lbnQs IGRvIHRoaXMgdGhhdCBtYW55IHRpbWVzLiIKICAgICAgIChzZXRxIGFyZyAoMS0gYXJnKSkKICAg ICAgIChiZWdpbm5pbmctb2YtbGluZSkKICAgICAgIChsZXQgKChzdGFydCAocG9pbnQpKSkKLQko dW5sZXNzIChoaWYtbG9va2luZy1hdC1lbmRpZikKLQkgIChoaWYtZmluZC1wcmV2aW91cy1yZWxl dmFudCkpCi0JKGlmIChoaWYtbG9va2luZy1hdC1lbmRpZikKLQkgICAgKGhpZi1lbmRpZi10by1p ZmRlZikKLQkgIChnb3RvLWNoYXIgc3RhcnQpCi0JICAoZXJyb3IgIk5vIHByZXZpb3VzICNpZmRl ZiIpKSkpKSkKKyAgICAgICAgKHVubGVzcyAoaGlmLWxvb2tpbmctYXQtZW5kaWYpCisgICAgICAg ICAgKGhpZi1maW5kLXByZXZpb3VzLXJlbGV2YW50KSkKKyAgICAgICAgKGlmIChoaWYtbG9va2lu Zy1hdC1lbmRpZikKKyAgICAgICAgICAgIChoaWYtZW5kaWYtdG8taWZkZWYpCisgICAgICAgICAg KGdvdG8tY2hhciBzdGFydCkKKyAgICAgICAgICAoZXJyb3IgIk5vIHByZXZpb3VzICNpZmRlZiIp KSkpKSkKIAogCiAoZGVmdW4gZG93bi1pZmRlZiAoKQpAQCAtNjgxLDkgKzEyNzQsOSBAQCBXaXRo IGFyZ3VtZW50LCBkbyB0aGlzIHRoYXQgbWFueSB0aW1lcy4iCiAgICAgKGxldCAoKHN0YXJ0IChw b2ludCkpKQogICAgICAgKGhpZi1maW5kLW5leHQtcmVsZXZhbnQpCiAgICAgICAoaWYgKG9yICho aWYtbG9va2luZy1hdC1pZlgpIChoaWYtbG9va2luZy1hdC1lbHNlKSkKLQkgICgpCi0JKGdvdG8t Y2hhciBzdGFydCkKLQkoZXJyb3IgIk5vIGZvbGxvd2luZyAjaWZkZWYiKSkpKQorICAgICAgICAg ICgpCisgICAgICAgIChnb3RvLWNoYXIgc3RhcnQpCisgICAgICAgIChlcnJvciAiTm8gZm9sbG93 aW5nICNpZmRlZiIpKSkpCiAKIAogKGRlZnVuIHVwLWlmZGVmICgpCkBAIC02OTQsOSArMTI4Nyw5 IEBAIFdpdGggYXJndW1lbnQsIGRvIHRoaXMgdGhhdCBtYW55IHRpbWVzLiIKICAgICAodW5sZXNz IChoaWYtbG9va2luZy1hdC1lbmRpZikKICAgICAgIChoaWYtZmluZC1wcmV2aW91cy1yZWxldmFu dCkpCiAgICAgKGlmIChoaWYtbG9va2luZy1hdC1lbmRpZikKLQkoaGlmLWVuZGlmLXRvLWlmZGVm KSkKKyAgICAgICAgKGhpZi1lbmRpZi10by1pZmRlZikpCiAgICAgICAoaWYgKD0gc3RhcnQgKHBv aW50KSkKLQkgIChlcnJvciAiTm8gcHJldmlvdXMgI2lmZGVmIikpKSkKKyAgICAgICAgICAoZXJy b3IgIk5vIHByZXZpb3VzICNpZmRlZiIpKSkpCiAKIChkZWZ1biBuZXh0LWlmZGVmICgmb3B0aW9u YWwgYXJnKQogICAiTW92ZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0ICNpZlgsICNlbHNl LCBvciAjZW5kaWYuCkBAIC03MDgsOCArMTMwMSw4IEBAIFdpdGggYXJndW1lbnQsIGRvIHRoaXMg dGhhdCBtYW55IHRpbWVzLiIKICAgICAgIChzZXRxIGFyZyAoMS0gYXJnKSkKICAgICAgIChoaWYt ZmluZC1uZXh0LXJlbGV2YW50KQogICAgICAgKHdoZW4gKGVvbHApCi0JKGJlZ2lubmluZy1vZi1s aW5lKQotCShlcnJvciAiTm8gZm9sbG93aW5nICNpZmRlZnMsICNlbHNlcywgb3IgI2VuZGlmcyIp KSkpKQorICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgIChlcnJvciAiTm8gZm9s bG93aW5nICNpZmRlZnMsICNlbHNlcywgb3IgI2VuZGlmcyIpKSkpKQogCiAoZGVmdW4gcHJldmlv dXMtaWZkZWYgKCZvcHRpb25hbCBhcmcpCiAgICJNb3ZlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhl IHByZXZpb3VzICNpZlgsICNlbHNlLCBvciAjZW5kaWYuCkBAIC03MjAsOSArMTMxMyw5IEBAIFdp dGggYXJndW1lbnQsIGRvIHRoaXMgdGhhdCBtYW55IHRpbWVzLiIKICAgICAod2hpbGUgKDwgMCBh cmcpCiAgICAgICAoc2V0cSBhcmcgKDEtIGFyZykpCiAgICAgICAobGV0ICgoc3RhcnQgKHBvaW50 KSkpCi0JKGhpZi1maW5kLXByZXZpb3VzLXJlbGV2YW50KQotCShpZiAoPSBzdGFydCAocG9pbnQp KQotCSAgICAoZXJyb3IgIk5vIHByZXZpb3VzICNpZmRlZnMsICNlbHNlcywgb3IgI2VuZGlmcyIp KSkpKSkKKyAgICAgICAgKGhpZi1maW5kLXByZXZpb3VzLXJlbGV2YW50KQorICAgICAgICAoaWYg KD0gc3RhcnQgKHBvaW50KSkKKyAgICAgICAgICAgIChlcnJvciAiTm8gcHJldmlvdXMgI2lmZGVm cywgI2Vsc2VzLCBvciAjZW5kaWZzIikpKSkpKQogCiAKIDs7PT09JSVTRiUlIHBhcnNpbmcgKEVu ZCkgID09PQpAQCAtNzMyLDE5ICsxMzI1LDE4IEBAIFdpdGggYXJndW1lbnQsIGRvIHRoaXMgdGhh dCBtYW55IHRpbWVzLiIKIAogCiA7OzsgQSByYW5nZSBpcyBhIHN0cnVjdHVyZSB3aXRoIGZvdXIg Y29tcG9uZW50czoKLTs7OyBFTFNFLVAJVHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZWxzZSBjbGF1c2Ug Zm9yIHRoZSBpZmRlZi4KLTs7OyBTVEFSVAlUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLiAoYmVnaW5u aW5nIG9mIGxpbmUpCi07OzsgRUxTRQlUaGUgZWxzZSBtYXJrZXIgKGJlZ2lubmluZyBvZiBsaW5l KQotOzs7CQkJT25seSB2YWxpZCBpZiBFTFNFLVAgaXMgdHJ1ZS4KLTs7OyBFTkQJCVRoZSBlbmQg b2YgdGhlIHJhbmdlLiAgKGJlZ2lubmluZyBvZiBsaW5lKQorOzs7IFNUQVJUICAgICAgIFRoZSBz dGFydCBvZiB0aGUgcmFuZ2UuIChiZWdpbm5pbmcgb2YgbGluZSkKKzs7OyBFTFNFICAgICAgICBU aGUgZWxzZSBtYXJrZXIgKGJlZ2lubmluZyBvZiBsaW5lKQorOzs7IEVORCAgICAgICAgIFRoZSBl bmQgb2YgdGhlIHJhbmdlLiAgKGJlZ2lubmluZyBvZiBsaW5lKQorOzs7IEVMSUYgICAgICAgIEEg c2VxdWVuY2Ugb2YgI2VsaWYgbWFya2VycyAoYmVnaW5uaW5nIG9mIGxpbmUpCiAKLShkZWZzdWJz dCBoaWYtbWFrZS1yYW5nZSAoc3RhcnQgZW5kICZvcHRpb25hbCBlbHNlKQotICAobGlzdCBzdGFy dCBlbHNlIGVuZCkpCisoZGVmc3Vic3QgaGlmLW1ha2UtcmFuZ2UgKHN0YXJ0IGVuZCAmb3B0aW9u YWwgZWxzZSBlbGlmKQorICAobGlzdCBzdGFydCBlbHNlIGVuZCBlbGlmKSkKIAogKGRlZnN1YnN0 IGhpZi1yYW5nZS1zdGFydCAocmFuZ2UpIChlbHQgcmFuZ2UgMCkpCiAoZGVmc3Vic3QgaGlmLXJh bmdlLWVsc2UgKHJhbmdlKSAoZWx0IHJhbmdlIDEpKQogKGRlZnN1YnN0IGhpZi1yYW5nZS1lbmQg KHJhbmdlKSAoZWx0IHJhbmdlIDIpKQotCisoZGVmc3Vic3QgaGlmLXJhbmdlLWVsaWYgKHJhbmdl KSAoZWx0IHJhbmdlIDMpKQogCiAKIDs7OyBGaW5kLVJhbmdlCkBAIC03NTksMjkgKzEzNTEsMzMg QEAgUG9pbnQgaXMgbGVmdCB1bmNoYW5nZWQuIgogICAoc2F2ZS1leGN1cnNpb24KICAgICAoYmVn aW5uaW5nLW9mLWxpbmUpCiAgICAgKGxldCAoKHN0YXJ0IChwb2ludCkpCi0JICAoZWxzZSBuaWwp Ci0JICAoZW5kIG5pbCkpCi0gICAgICA7OyBQYXJ0IG9uZS4gIExvb2sgZm9yIGVpdGhlciAjZW5k aWYgb3IgI2Vsc2UuCisgICAgICAgICAgKGVsaWYgbmlsKQorICAgICAgICAgIChlbHNlIG5pbCkK KyAgICAgICAgICAoZW5kIG5pbCkpCisgICAgICA7OyBQYXJ0IG9uZS4gIExvb2sgZm9yIGVpdGhl ciAjZWxpZiwgI2Vsc2Ugb3IgI2VuZGlmLgogICAgICAgOzsgVGhpcyBsb29wLWFuZC1hLWhhbGYg ZGVkaWNhdGVkIHRvIEUuIERpamtzdHJhLgotICAgICAgKHdoaWxlIChwcm9nbgotCSAgICAgICAo aGlmLWZpbmQtbmV4dC1yZWxldmFudCkKLQkgICAgICAgKGhpZi1sb29raW5nLWF0LWlmWCkpCQk7 IFNraXAgbmVzdGVkIGlmZGVmCi0JKGhpZi1pZmRlZi10by1lbmRpZikpCi0gICAgICA7OyBGb3Vu ZCBlaXRoZXIgYSAjZWxzZSBvciBhbiAjZW5kaWYuCi0gICAgICAoY29uZCAoKGhpZi1sb29raW5n LWF0LWVsc2UpCi0JICAgICAoc2V0cSBlbHNlIChwb2ludCkpKQotCSAgICAodAotCSAgICAgKHNl dHEgZW5kIChwb2ludCkpKSkgOyAobGluZS1lbmQtcG9zaXRpb24pCisgICAgICAod2hpbGUgKGFu ZCAobm90IGVsc2UpIChub3QgZW5kKSkKKyAgICAgICAgKHdoaWxlIChwcm9nbgorICAgICAgICAg ICAgICAgICAoaGlmLWZpbmQtbmV4dC1yZWxldmFudCkKKyAgICAgICAgICAgICAgICAgKGhpZi1s b29raW5nLWF0LWlmWCkpICAgICAgICAgIDsgU2tpcCBuZXN0ZWQgaWZkZWYKKyAgICAgICAgICAo aGlmLWlmZGVmLXRvLWVuZGlmKSkKKyAgICAgICAgOzsgRm91bmQgZWl0aGVyIGEgI2Vsc2UsICNl bGlmLCBvciBhbiAjZW5kaWYuCisgICAgICAgIChjb25kICgoaGlmLWxvb2tpbmctYXQtZWxpZikK KyAgICAgICAgICAgICAgIChzZXRxIGVsaWYgKG5jb25jIGVsaWYgKGxpc3QgKHBvaW50KSkpKSkK KyAgICAgICAgICAgICAgKChoaWYtbG9va2luZy1hdC1lbHNlKQorICAgICAgICAgICAgICAgKHNl dHEgZWxzZSAocG9pbnQpKSkKKyAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgIChzZXRx IGVuZCAocG9pbnQpKSkpKQogICAgICAgOzsgSWYgZm91bmQgI2Vsc2UsIGxvb2sgZm9yICNlbmRp Zi4KICAgICAgICh3aGVuIGVsc2UKLQkod2hpbGUgKHByb2duCi0JCSAoaGlmLWZpbmQtbmV4dC1y ZWxldmFudCkKLQkJIChoaWYtbG9va2luZy1hdC1pZlgpKQk7IFNraXAgbmVzdGVkIGlmZGVmCi0J ICAoaGlmLWlmZGVmLXRvLWVuZGlmKSkKLQkoaWYgKGhpZi1sb29raW5nLWF0LWVsc2UpCi0JICAg IChlcnJvciAiRm91bmQgdHdvIGVsc2VzIGluIGEgcm93PyAgQnJva2VuISIpKQotCShzZXRxIGVu ZCAocG9pbnQpKSkJICAgICAgIDsgKGxpbmUtZW5kLXBvc2l0aW9uKQotICAgICAgKGhpZi1tYWtl LXJhbmdlIHN0YXJ0IGVuZCBlbHNlKSkpKQorICAgICAgICAod2hpbGUgKHByb2duCisgICAgICAg ICAgICAgICAgIChoaWYtZmluZC1uZXh0LXJlbGV2YW50KQorICAgICAgICAgICAgICAgICAoaGlm LWxvb2tpbmctYXQtaWZYKSkgIDsgU2tpcCBuZXN0ZWQgaWZkZWYKKyAgICAgICAgICAoaGlmLWlm ZGVmLXRvLWVuZGlmKSkKKyAgICAgICAgKGlmIChoaWYtbG9va2luZy1hdC1lbHNlKQorICAgICAg ICAgICAgKGVycm9yICJGb3VuZCB0d28gZWxzZXMgaW4gYSByb3c/ICBCcm9rZW4hIikpCisgICAg ICAgIChzZXRxIGVuZCAocG9pbnQpKSkgICAgICAgICAgICA7IChsaW5lLWVuZC1wb3NpdGlvbikK KyAgICAgIChoaWYtbWFrZS1yYW5nZSBzdGFydCBlbmQgZWxzZSBlbGlmKSkpKQogCiAKIDs7OyBB IGJpdCBzbGlteS4KQEAgLTgwMiwxNSArMTM5OCwxOCBAQCBQb2ludCBpcyBsZWZ0IHVuY2hhbmdl ZC4iCiA7OzsgIGNvbXBpbGVkLgogOzs7CiA7OzsgIENhc2UgMTogICNpZlggdGFrZW4sIGFuZCB0 aGVyZSdzIGFuICNlbHNlLgotOzs7CVRoZSAjZWxzZSBwYXJ0IG11c3QgYmUgaGlkZGVuLiAgVGhl ICNpZiAodGhlbikgcGFydCBtdXN0IGJlCi07OzsJcHJvY2Vzc2VkIGZvciBuZXN0ZWQgI2lmWCdz LgorOzs7ICAgICBUaGUgI2Vsc2UgcGFydCBtdXN0IGJlIGhpZGRlbi4gIFRoZSAjaWYgKHRoZW4p IHBhcnQgbXVzdCBiZQorOzs7ICAgICBwcm9jZXNzZWQgZm9yIG5lc3RlZCAjaWZYJ3MuCiA7Ozsg IENhc2UgMjogICNpZlggdGFrZW4sIGFuZCB0aGVyZSdzIG5vICNlbHNlLgotOzs7CVRoZSAjaWYg cGFydCBtdXN0IGJlIHByb2Nlc3NlZCBmb3IgbmVzdGVkICNpZlgncy4KLTs7OyAgQ2FzZSAzOiAg I2lmWCBub3QgdGFrZW4sIGFuZCB0aGVyZSdzIGFuICNlbHNlLgotOzs7CVRoZSAjaWYgcGFydCBt dXN0IGJlIGhpZGRlbi4gIFRoZSAjZWxzZSBwYXJ0IG11c3QgYmUgcHJvY2Vzc2VkCi07OzsJZm9y IG5lc3RlZCAjaWZzLgotOzs7ICBDYXNlIDQ6ICAjaWZYIG5vdCB0YWtlbiwgYW5kIHRoZXJlJ3Mg bm8gI2Vsc2UuCi07OzsJVGhlICNpZlggcGFydCBtdXN0IGJlIGhpZGRlbi4KKzs7OyAgICAgVGhl ICNpZiBwYXJ0IG11c3QgYmUgcHJvY2Vzc2VkIGZvciBuZXN0ZWQgI2lmWCdzLgorOzs7ICBDYXNl IDM6ICAjaWZYIG5vdCB0YWtlbiwgYW5kIHRoZXJlJ3MgYW4gI2VsaWYKKzs7OyAgICAgVGhlICNp ZiBwYXJ0IG11c3QgYmUgaGlkZGVuLCBhbmQgdGhlbiBldmFsdWF0ZQorOzs7ICAgICB0aGUgI2Vs aWYgY29uZGl0aW9uIGxpa2UgYSBuZXcgI2lmWC4KKzs7OyAgQ2FzZSA0OiAgI2lmWCBub3QgdGFr ZW4sIGFuZCB0aGVyZSdzIGp1c3QgYW4gI2Vsc2UuCis7OzsgICAgIFRoZSAjaWYgcGFydCBtdXN0 IGJlIGhpZGRlbi4gIFRoZSAjZWxzZSBwYXJ0IG11c3QgYmUgcHJvY2Vzc2VkCis7OzsgICAgIGZv ciBuZXN0ZWQgI2lmcy4KKzs7OyAgQ2FzZSA1OiAgI2lmWCBub3QgdGFrZW4sIGFuZCB0aGVyZSdz IG5vICNlbHNlLgorOzs7ICAgICBUaGUgI2lmWCBwYXJ0IG11c3QgYmUgaGlkZGVuLgogOzs7CiA7 OzsgIEZ1cnRoZXIgcHJvY2Vzc2luZyBpcyBkb25lIGJ5IG5hcnJvd2luZyB0byB0aGUgcmVsZXZh bnQgcmVnaW9uCiA7OzsgIGFuZCBqdXN0IHJlY3Vyc2l2ZWx5IGNhbGxpbmcgaGlkZS1pZmRlZi1n dXRzLgpAQCAtODE4LDYxICsxNDE3LDI0OSBAQCBQb2ludCBpcyBsZWZ0IHVuY2hhbmdlZC4iCiA7 OzsgIFdoZW4gaGlmLXBvc3NpYmx5LWhpZGUgcmV0dXJucywgcG9pbnQgaXMgYXQgdGhlIGVuZCBv ZiB0aGUKIDs7OyAgcG9zc2libHktaGlkZGVuIHJhbmdlLgogCi0oZGVmdW4gaGlmLXJlY3Vyc2Ut b24gKHN0YXJ0IGVuZCkKKyhkZWZ2YXIgaGlmLXJlY3Vyc2UtbGV2ZWwgMCkKKworKGRlZnVuIGhp Zi1yZWN1cnNlLW9uIChzdGFydCBlbmQgJm9wdGlvbmFsIGRvbnQtZ28tZW9sKQogICAiQ2FsbCBg aGlkZS1pZmRlZi1ndXRzJyBhZnRlciBuYXJyb3dpbmcgdG8gZW5kIG9mIFNUQVJUIGxpbmUgYW5k IEVORCBsaW5lLiIKICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgKHNhdmUtcmVzdHJpY3Rpb24KICAg ICAgIChnb3RvLWNoYXIgc3RhcnQpCi0gICAgICAoZW5kLW9mLWxpbmUpCisgICAgICAodW5sZXNz IGRvbnQtZ28tZW9sCisgICAgICAgIChlbmQtb2YtbGluZSkpCiAgICAgICAobmFycm93LXRvLXJl Z2lvbiAocG9pbnQpIGVuZCkKLSAgICAgIChoaWRlLWlmZGVmLWd1dHMpKSkpCisgICAgICAobGV0 ICgoaGlmLXJlY3Vyc2UtbGV2ZWwgKDErIGhpZi1yZWN1cnNlLWxldmVsKSkpCisgICAgICAgICho aWRlLWlmZGVmLWd1dHMpKSkpKQogCi0oZGVmdW4gaGlmLXBvc3NpYmx5LWhpZGUgKCkKKyhkZWZ1 biBoaWYtcG9zc2libHktaGlkZSAoZXhwYW5kLXJlaW5jbHVzaW9uKQogICAiQ2FsbGVkIGF0ICNp ZlggZXhwcmVzc2lvbiwgdGhpcyBoaWRlcyB0aG9zZSBwYXJ0cyB0aGF0IHNob3VsZCBiZSBoaWRk ZW4uCiBJdCB1c2VzIHRoZSBqdWRnbWVudCBvZiBgaGlkZS1pZmRlZi1ldmFsdWF0b3InLiIKICAg OzsgKG1lc3NhZ2UgImhpZi1wb3NzaWJseS1oaWRlIikgKHNpdC1mb3IgMSkKLSAgKGxldCAoKHRl c3QgKGhpZi1jYW5vbmljYWxpemUpKQotCShyYW5nZSAoaGlmLWZpbmQtcmFuZ2UpKSkKKyAgKGxl dCogKChjYXNlLWZvbGQtc2VhcmNoIG5pbCkKKyAgICAgICAgICh0ZXN0IChoaWYtY2Fub25pY2Fs aXplIGhpZi1pZngtcmVnZXhwKSkKKyAgICAgICAgIChyYW5nZSAoaGlmLWZpbmQtcmFuZ2UpKQor ICAgICAgICAgKGVsaWZzIChoaWYtcmFuZ2UtZWxpZiByYW5nZSkpCisgICAgICAgICAoaWYtcGFy dCB0KSA7OyBldmVyeXRpbWUgd2Ugc3RhcnQgZnJvbSBpZi1wYXJ0CisgICAgICAgICAoY29tcGxl dGUgbmlsKSkKICAgICA7OyAobWVzc2FnZSAidGVzdCA9ICVzIiB0ZXN0KSAoc2l0LWZvciAxKQog CiAgICAgKGhpZi1oaWRlLWxpbmUgKGhpZi1yYW5nZS1lbmQgcmFuZ2UpKQotICAgIChpZiAobm90 IChoaWYtbm90IChmdW5jYWxsIGhpZGUtaWZkZWYtZXZhbHVhdG9yIHRlc3QpKSkKLQkoY29uZCAo KGhpZi1yYW5nZS1lbHNlIHJhbmdlKQk7IGNhc2UgMQotCSAgICAgICAoaGlmLWhpZGUtbGluZSAo aGlmLXJhbmdlLWVsc2UgcmFuZ2UpKQotCSAgICAgICAoaGlkZS1pZmRlZi1yZWdpb24gKGhpZi1y YW5nZS1lbHNlIHJhbmdlKQotCQkJCSAgKDEtIChoaWYtcmFuZ2UtZW5kIHJhbmdlKSkpCi0JICAg ICAgIChoaWYtcmVjdXJzZS1vbiAoaGlmLXJhbmdlLXN0YXJ0IHJhbmdlKQotCQkJICAgICAgICho aWYtcmFuZ2UtZWxzZSByYW5nZSkpKQotCSAgICAgICh0CQkJOyBjYXNlIDIKLQkgICAgICAgKGhp Zi1yZWN1cnNlLW9uIChoaWYtcmFuZ2Utc3RhcnQgcmFuZ2UpCi0JCQkgICAgICAgKGhpZi1yYW5n ZS1lbmQgcmFuZ2UpKSkpCi0gICAgICAoY29uZCAoKGhpZi1yYW5nZS1lbHNlIHJhbmdlKQk7IGNh c2UgMwotCSAgICAgKGhpZi1oaWRlLWxpbmUgKGhpZi1yYW5nZS1lbHNlIHJhbmdlKSkKLQkgICAg IChoaWRlLWlmZGVmLXJlZ2lvbiAoaGlmLXJhbmdlLXN0YXJ0IHJhbmdlKQotCQkJCSgxLSAoaGlm LXJhbmdlLWVsc2UgcmFuZ2UpKSkKLQkgICAgIChoaWYtcmVjdXJzZS1vbiAoaGlmLXJhbmdlLWVs c2UgcmFuZ2UpCi0JCQkgICAgIChoaWYtcmFuZ2UtZW5kIHJhbmdlKSkpCi0JICAgICh0CQkJCTsg Y2FzZSA0Ci0JICAgICAoaGlkZS1pZmRlZi1yZWdpb24gKHBvaW50KQotCQkJCSgxLSAoaGlmLXJh bmdlLWVuZCByYW5nZSkpKSkpKQorCisgICAgKHdoaWxlIChub3QgY29tcGxldGUpCisgICAgICAo aWYgKGFuZCAobm90IChhbmQgZXhwYW5kLXJlaW5jbHVzaW9uIGlmLXBhcnQpKQorICAgICAgICAg ICAgICAgKGhpZi1ub3QgKGZ1bmNhbGwgaGlkZS1pZmRlZi1ldmFsdWF0b3IgdGVzdCkpKQorICAg ICAgICAgIDs7IGlmWC9lbGlmIGlzIEZBTFNFCisgICAgICAgICAgKGlmIGVsaWZzCisgICAgICAg ICAgICAgIDs7IENhc2UgMyAtIEhpZGUgdGhlICNpZlggYW5kIGV2YWwgI2VsaWYKKyAgICAgICAg ICAgICAgKGxldCAoKG5ld3N0YXJ0IChjYXIgZWxpZnMpKSkKKyAgICAgICAgICAgICAgICAoaGlm LWhpZGUtbGluZSAoaGlmLXJhbmdlLXN0YXJ0IHJhbmdlKSkKKyAgICAgICAgICAgICAgICAoaGlk ZS1pZmRlZi1yZWdpb24gKGhpZi1yYW5nZS1zdGFydCByYW5nZSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKDEtIG5ld3N0YXJ0KSkKKyAgICAgICAgICAgICAgICAoc2V0Y2Fy IHJhbmdlIG5ld3N0YXJ0KQorICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgbmV3c3RhcnQpCisg ICAgICAgICAgICAgICAgKHNldHEgZWxpZnMgKGNkciBlbGlmcykpCisgICAgICAgICAgICAgICAg KHNldHEgdGVzdCAoaGlmLWNhbm9uaWNhbGl6ZSBoaWYtZWxpZi1yZWdleHApKSkKKworICAgICAg ICAgICAgOzsgQ2hlY2sgZm9yICNlbHNlCisgICAgICAgICAgICAoY29uZCAoKGhpZi1yYW5nZS1l bHNlIHJhbmdlKQorICAgICAgICAgICAgICAgICAgIDs7IENhc2UgNCAtICNlbHNlIGJsb2NrIHZp c2libGUKKyAgICAgICAgICAgICAgICAgICAoaGlmLWhpZGUtbGluZSAoaGlmLXJhbmdlLWVsc2Ug cmFuZ2UpKQorICAgICAgICAgICAgICAgICAgIChoaWRlLWlmZGVmLXJlZ2lvbiAoaGlmLXJhbmdl LXN0YXJ0IHJhbmdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS0g KGhpZi1yYW5nZS1lbHNlIHJhbmdlKSkpCisgICAgICAgICAgICAgICAgICAgKGhpZi1yZWN1cnNl LW9uIChoaWYtcmFuZ2UtZWxzZSByYW5nZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGhpZi1yYW5nZS1lbmQgcmFuZ2UpKSkKKyAgICAgICAgICAgICAgICAgICh0CisgICAg ICAgICAgICAgICAgICAgOzsgQ2FzZSA1IC0gTm8gI2Vsc2UgYmxvY2ssIGhpZGUgI2lmWAorICAg ICAgICAgICAgICAgICAgIChoaWRlLWlmZGVmLXJlZ2lvbiAocG9pbnQpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgxLSAoaGlmLXJhbmdlLWVuZCByYW5nZSkpKSkpCisg ICAgICAgICAgICAoc2V0cSBjb21wbGV0ZSB0KSkKKworICAgICAgICA7OyBpZlgvZWxpZiBpcyBU UlVFCisgICAgICAgIChjb25kIChlbGlmcworICAgICAgICAgICAgICAgOzsgTHVrZSBmaXg6IGRp c3Rpbmd1aXNoIGZyb20gI2VsaWYuLiNlbGlmIHRvICNlbGlmLi4jZWxzZSBbMjAxMy0wOC0zMCAx NDoxMDo0MCArMDgwMF0KKyAgICAgICAgICAgICAgIChsZXQgKChlbGlmIChjYXIgZWxpZnMpKSkK KyAgICAgICAgICAgICAgICAgOzsgaGlkZSBhbGwgZWxpZnMKKyAgICAgICAgICAgICAgICAgKGhp Zi1oaWRlLWxpbmUgZWxpZikKKyAgICAgICAgICAgICAgICAgKGhpZGUtaWZkZWYtcmVnaW9uIGVs aWYgKDEtIChoaWYtcmFuZ2UtZW5kIHJhbmdlKSkpCisgICAgICAgICAgICAgICAgIChoaWYtcmVj dXJzZS1vbiAoaGlmLXJhbmdlLXN0YXJ0IHJhbmdlKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZWxpZikpKQorICAgICAgICAgICAgICAoKGhpZi1yYW5nZS1lbHNlIHJhbmdlKQor ICAgICAgICAgICAgICAgOzsgQ2FzZSAxIC0gSGlkZSAjZWxpZiBhbmQgI2Vsc2UgYmxvY2tzLCBy ZWN1cnNlICNpZlgKKyAgICAgICAgICAgICAgIChoaWYtaGlkZS1saW5lIChoaWYtcmFuZ2UtZWxz ZSByYW5nZSkpCisgICAgICAgICAgICAgICAoaGlkZS1pZmRlZi1yZWdpb24gKGhpZi1yYW5nZS1l bHNlIHJhbmdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxLSAoaGlmLXJh bmdlLWVuZCByYW5nZSkpKQorICAgICAgICAgICAgICAgKGhpZi1yZWN1cnNlLW9uIChoaWYtcmFu Z2Utc3RhcnQgcmFuZ2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZi1yYW5n ZS1lbHNlIHJhbmdlKSkpCisKKyAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgIDs7IENh c2UgMiAtIE5vICNlbHNlLCBqdXN0IHJlY3Vyc2UgI2lmWAorICAgICAgICAgICAgICAgKGhpZi1y ZWN1cnNlLW9uIChoaWYtcmFuZ2Utc3RhcnQgcmFuZ2UpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGhpZi1yYW5nZS1lbmQgcmFuZ2UpKSkpCisgICAgICAgIChzZXRxIGNvbXBsZXRl IHQpKQorICAgICAgKHNldHEgaWYtcGFydCBuaWwpKQorCisgICAgOzsgY29tcGxldGUgPSB0CiAg ICAgKGhpZi1oaWRlLWxpbmUgKGhpZi1yYW5nZS1zdGFydCByYW5nZSkpIDsgQWx3YXlzIGhpZGUg c3RhcnQuCiAgICAgKGdvdG8tY2hhciAoaGlmLXJhbmdlLWVuZCByYW5nZSkpCiAgICAgKGVuZC1v Zi1saW5lKSkpCiAKIAorKGRlZnVuIGhpZi1ldmFsdWF0ZS1yZWdpb24gKHN0YXJ0IGVuZCkKKyAg KGxldCogKCh0b2tlbnMgKGlnbm9yZS1lcnJvcnMgOzsgcHJldmVudCBDIHN0YXRlbWVudCB0aGlu Z3MgbGlrZSAnZG8geyAuLi4gfSB3aGlsZSAoMCknCisgICAgICAgICAgICAgICAgICAgKGhpZi10 b2tlbml6ZSBzdGFydCBlbmQpKSkKKyAgICAgICAgIChleHByIChhbmQgdG9rZW5zCisgICAgICAg ICAgICAgICAgICAgIChjb25kaXRpb24tY2FzZSBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAg IChoaWYtcGFyc2UtaWYtZXhwIHRva2VucykKKyAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IK KyAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zKSkpKQorICAgICAgICAgKHJlc3VsdCAoZnVu Y2FsbCBoaWRlLWlmZGVmLWV2YWx1YXRvciBleHByKSkpCisgICAgcmVzdWx0KSkKKworKGRlZnVu IGhpZi1ldmFsdWF0ZS1tYWNybyAocnN0YXJ0IHJlbmQpCisgICJFdmFsdWF0ZSB0aGUgbWFjcm8g ZXhwYW5zaW9uIHJlc3VsdCBmb3IgYSByZWdpb24uIElmIG5vIHJlZ2lvbiBhY3RpdmUsCitmaW5k IHRoZSBjdXJyZW50ICNpZmRlZnMgYW5kIGV2YWx1YXRlIHRoZSByZXN1bHQuIEN1cnJlbnRseSBp dCBzdXBwb3J0IG9ubHkKK21hdGggY2FsY3VsYXRpb24sIG5vIHN0cmluZyBvciBhcmd1bWVudGVk IG1hY3JvcyBjYW4gYmUgZXhwYW5kZWQuIgorICAoaW50ZXJhY3RpdmUgInIiKQorICAobGV0ICgo Y2FzZS1mb2xkLXNlYXJjaCBuaWwpKQorICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgKHVubGVz cyBtYXJrLWFjdGl2ZQorICAgICAgICAoc2V0cSByc3RhcnQgbmlsIHJlbmQgbmlsKQorICAgICAg ICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICh3aGVuIChhbmQgKHJlLXNlYXJjaC1mb3J3 YXJkIGhpZi1tYWNyby1leHByLXByZWZpeC1yZWdleHAgbmlsIHQpCisgICAgICAgICAgICAgICAg ICAgKHN0cmluZz0gImRlZmluZSIgKG1hdGNoLXN0cmluZyAyKSkpCisgICAgICAgICAgKHJlLXNl YXJjaC1mb3J3YXJkIGhpZi1tYWNyb25hbWUgbmlsIHQpKSkKKyAgICAgIChsZXQqICgoc3RhcnQg KG9yIHJzdGFydCAocG9pbnQpKSkKKyAgICAgICAgICAgICAoZW5kICAgKG9yIHJlbmQgKHByb2du IChoaWYtZW5kLW9mLWxpbmUpIChwb2ludCkpKSkKKyAgICAgICAgICAgICAoZGVmaW5lZCBuaWwp CisgICAgICAgICAgICAgKHNpbXBsZSAndCkKKyAgICAgICAgICAgICAodG9rZW5zIChpZ25vcmUt ZXJyb3JzIDs7IHByZXZlbnQgQyBzdGF0ZW1lbnQgdGhpbmdzIGxpa2UgJ2RvIHsgLi4uIH0gd2hp bGUgKDApJworICAgICAgICAgICAgICAgICAgICAgICAoaGlmLXRva2VuaXplIHN0YXJ0IGVuZCkp KQorICAgICAgICAgICAgIChleHByIChvciAoYW5kICg8PSAobGVuZ3RoIHRva2VucykgMSkgOzsg c2ltcGxlIHRva2VuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZGVmaW5lZCAo YXNzb2MgKGNhciB0b2tlbnMpIGhpZGUtaWZkZWYtZW52KSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSBzaW1wbGUgKGF0b20gKGhpZi1sb29rdXAgKGNhciB0b2tlbnMpKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZi1sb29rdXAgKGNhciB0b2tlbnMpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgKGFuZCB0b2tlbnMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY29uZGl0aW9uLWNhc2UgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChoaWYtcGFyc2UtaWYtZXhwIHRva2VucykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCkpKSkpCisgICAgICAg ICAgICAgKHJlc3VsdCAoZnVuY2FsbCBoaWRlLWlmZGVmLWV2YWx1YXRvciBleHByKSkKKyAgICAg ICAgICAgICAoZXhwcnN0cmluZyAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nCisgICAgICAgICAg ICAgICAgICAgICAgICAgICJeWyBcdF0qXFwoW14gXHRdK1xcKVsgXHRdKiIgIlxcMSIgIDs7IHRy aW0gb2ZmIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAg IChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJc XCgvLy4qXFwpIiAiIiA7OyB0cmltIG9mZiBlbmQtb2YtbGluZSBjb21tZW50cworICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBzdGFydCBl bmQpKSkpKQorICAgICAgICAoY29uZAorICAgICAgICAgKChhbmQgKDw9IChsZW5ndGggdG9rZW5z KSAxKSBzaW1wbGUpIDs7IHNpbXBsZSB0b2tlbgorICAgICAgICAgIChpZiBkZWZpbmVkCisgICAg ICAgICAgICAgIChtZXNzYWdlICIlUyA8PSBgJXMnIiByZXN1bHQgZXhwcnN0cmluZykKKyAgICAg ICAgICAgIChtZXNzYWdlICJgJXMnIGlzIG5vdCBkZWZpbmVkIiBleHByc3RyaW5nKSkpCisgICAg ICAgICAoKGludGVnZXJwIHJlc3VsdCkKKyAgICAgICAgICAoaWYgKG9yICg9IDAgcmVzdWx0KSAo PSAxIHJlc3VsdCkpCisgICAgICAgICAgICAgIChtZXNzYWdlICIlUyA8PSBgJXMnIiByZXN1bHQg ZXhwcnN0cmluZykKKyAgICAgICAgICAgIChtZXNzYWdlICIlUyAoMHgleCkgPD0gYCVzJyIgcmVz dWx0IHJlc3VsdCBleHByc3RyaW5nKSkpCisgICAgICAgICAoKG51bGwgcmVzdWx0KSAobWVzc2Fn ZSAiJVMgPD0gYCVzJyIgJ2ZhbHNlIGV4cHJzdHJpbmcpKQorICAgICAgICAgKChlcSB0IHJlc3Vs dCkgKG1lc3NhZ2UgIiVTIDw9IGAlcyciICd0cnVlIGV4cHJzdHJpbmcpKQorICAgICAgICAgKHQg KG1lc3NhZ2UgIiVTIDw9IGAlcyciIHJlc3VsdCBleHByc3RyaW5nKSkpCisgICAgICAgIHJlc3Vs dCkpKSkKKworKGRlZnVuIGhpZi1wYXJzZS1tYWNyby1hcmdsaXN0IChzdHIpCisgICJQYXJzZSBh cmd1bWVudCBsaXN0IGZvcm1hdHRlZCBhcyAnKCBhcmcxIFsgLCBhcmduXSBbLi4uXSApJywgaW5j bHVkZWluZyB0aGUgJy4uLicKK1JldHVybiBhIGxpc3Qgb2YgdGhlIGFyZ3VtZW50cywgaWYgJy4u LicgZXhpc3RzIHRoZSBmaXJzdCBhcmcgd2lsbCBiZSBoaWYtZXRjLiIKKyAgKGxldCAoKHRva2Vu bGlzdCAoY2RyIChoaWYtdG9rZW5pemUgKC0gKHBvaW50KSAobGVuZ3RoIHN0cikpIChwb2ludCkp KSkgOyByZW1vdmUgaGlmLWxwYXJlbgorICAgICAgICByZXN1bHQgdG9rZW4pCisgICAgKHdoaWxl IChub3QgKGVxIChzZXRxIHRva2VuIChjYXIgdG9rZW5saXN0KSkgJ2hpZi1ycGFyZW4pKQorICAg ICAgKHNldHEgdG9rZW5saXN0IChjZHIgdG9rZW5saXN0KSkKKyAgICAgIChjb25kCisgICAgICAg KChlcSB0b2tlbiAnaGlmLWV0YykKKyAgICAgICAgKHNldHEgcmVzdWx0IChjb25zICdoaWYtZXRj IHJlc3VsdCkpKQorICAgICAgICgoZXEgdG9rZW4gJ2hpZi1jb21tYSkKKyAgICAgICAgdCkKKyAg ICAgICAodAorICAgICAgICAoc2V0cSByZXN1bHQgKGFwcGVuZCByZXN1bHQgKGNvbnMgdG9rZW4g bmlsKSkpKSkpCisgICAgcmVzdWx0KSkKKworKGRlZnVuIGhpZi1maW5kLWRlZmluZSAoJm9wdGlv bmFsIG1pbiBtYXgpCisgIChpbnRlcmFjdGl2ZSkKKyAgKGFuZCBtaW4gKGdvdG8tY2hhciBtaW4p KQorICAoYW5kIChyZS1zZWFyY2gtZm9yd2FyZCBoaWYtZGVmaW5lIG1heCB0KQorICAgICAgIChv cgorICAgICAgICAobGV0KiAoKGRlZmluaW5nIChzdHJpbmc9ICJkZWZpbmUiIChtYXRjaC1zdHJp bmcgMikpKQorICAgICAgICAgICAgICAgKG5hbWUgKGFuZCAocmUtc2VhcmNoLWZvcndhcmQgaGlm LW1hY3JvbmFtZSBtYXggdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLXN0cmlu ZyAxKSkpCisgICAgICAgICAgICAgICAocGFyc2VkIG5pbCkKKyAgICAgICAgICAgICAgIChwYXJt bGlzdCAoYW5kIChtYXRjaC1zdHJpbmcgMykgOzsgZmlyc3QgYXJnIGlkIGZvdW5kCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaGlmLXBhcnNlLW1hY3JvLWFyZ2xpc3QgKG1hdGNoLXN0 cmluZyAyKSkpKSkKKyAgICAgICAgICAoaWYgZGVmaW5pbmcKKyAgICAgICAgICAgICAgOzsgaWdu b3JlIG5hbWUgKHN0aWxsIG5lZWQgdG8gcmV0dXJuICd0KSwgb3IgZGVmaW5lIHRoZSBuYW1lCisg ICAgICAgICAgICAgIChvciAoYW5kIGhpZGUtaWZkZWYtZXhjbHVkZS1kZWZpbmUtcmVnZXhwLXBh dHRlcm4KKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaCBoaWRlLWlmZGVmLWV4 Y2x1ZGUtZGVmaW5lLXJlZ2V4cC1wYXR0ZXJuIG5hbWUpKQorCisgICAgICAgICAgICAgICAgICAo bGV0KiAoKHN0YXJ0IChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZCAgIChw cm9nbiAoaGlmLWVuZC1vZi1saW5lKSAocG9pbnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAodG9rZW5zIChhbmQgbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoY29uZGl0aW9uLWNhc2UgbmlsIDs7IHByZXZlbnQgQyBzdGF0ZW1lbnQgdGhpbmdzIGxpa2Ug J2RvIHsgLi4uIH0gd2hpbGUgKDApJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGhpZi10b2tlbml6ZSBzdGFydCBlbmQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGVycm9yIDs7IHdlIGNhbid0IGp1c3QgcmV0dXJuIG5pbCBzaW5j ZSB0aGlzIHdpbGwgc3RvcCBzZWFyY2hpbmcgZm9yIHRoZSByZW1haW5pbmcgI2RlZmluZXMuCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGhpZi1zaW1wbGUt dG9rZW4tb25seSB0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo YnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0YXJ0IGVuZCkpKSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgOzsgRm9yIHNpbXBsZSB0b2tlbiB3ZSBzYXZlIG9ubHkgdGhlIHBhcnNl ZCByZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgOzsgb3Igd2Ugc2F2ZSB0aGUgdG9r ZW5zLCBwYXJzZSBpdCBhZnRlciBwYXJhbWV0ZXIgcmVwbGFjZW1lbnQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAoZXhwciAoYW5kIHRva2VucworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG9yIChhbmQgaGlmLXNpbXBsZS10b2tlbi1vbmx5CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdHAgdG9rZW5zKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKD0gKGxlbmd0aCB0b2tlbnMpIDEpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGlmLXBhcnNlLWlm LWV4cCB0b2tlbnMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAo aGlmLWRlZmluZS1tYWNybyAscGFybWxpc3QgLHRva2VucykpKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAoU0EgKGFuZCBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGFzc29jIChpbnRlcm4gbmFtZSkgaGlkZS1pZmRlZi1lbnYpKSkpCisgICAgICAgICAgICAgICAg ICAgIChhbmQgbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBTQQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAob3IgKHNldGNkciBTQSBleHByKSB0KSA7OyBMYXp5IGV2YWx1 YXRpb24sIGV2YWwgb25seSBpZiBoaWYtbG9va3VwIGZpbmQgaXQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIDs7IGRlZmluZSBpdCBhbnl3YXksIGV2ZW4gaWYgbmlsIGl0J3Mgc3RpbGwgaW4g bGlzdCBhbmQgdGhlcmVmb3JlIGNvbnNpZGVycmVkIGRlZmluZWQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwdXNoIChjb25zIChpbnRlcm4gbmFtZSkgZXhwcikgaGlkZS1pZmRlZi1lbnYp KSkpKQorICAgICAgICAgICAgOzsgI3VuZGVmCisgICAgICAgICAgICAoYW5kIG5hbWUKKyAgICAg ICAgICAgICAgICAgKGhpZi11bmRlZmluZS1zeW1ib2wgKGludGVybiBuYW1lKSkpKSkpCisgICAg ICAgdCkpCisKKzs7KGRlZnVuIG1hcmstcmVnaW9uIChtaW4gbWF4KQorOzsgIChzZXQtbWFyayAo b3IgbWF4IChwb2ludC1tYXgpKSkKKzs7ICAoZ290by1jaGFyIG1pbikpCisKKyhkZWZ1biBoaWYt YWRkLW5ldy1kZWZpbmVzICgmb3B0aW9uYWwgbWluIG1heCkKKyAgIlNjYW4gYW5kIGFkZCBhbGwg I2RlZmluZSBtYWNyb3MgYmV0d2VlbiBtaW4gLi4gbWF4IgorICAoaW50ZXJhY3RpdmUpCisgIChz YXZlLWV4Y3Vyc2lvbgorICAgIChzYXZlLXJlc3RyaWN0aW9uCisgICAgICA7OyAobWFyay1yZWdp b24gbWluIG1heCkgOzsgZm9yIGRlYnVnZ2luZworICAgICAgKHdoaWxlIChoaWYtZmluZC1kZWZp bmUgbWluIG1heCkKKyAgICAgICAgKHNldGYgbWluIChwb2ludCkpKQorICAgICAgKGlmIG1heCAo Z290by1jaGFyIG1heCkKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkpKSkpCiAKIChk ZWZ1biBoaWRlLWlmZGVmLWd1dHMgKCkKICAgIkRvZXMgbW9zdCBvZiB0aGUgd29yayBvZiBgaGlk ZS1pZmRlZnMnLgogSXQgZG9lcyBub3QgZG8gdGhlIHdvcmsgdGhhdCdzIHBvaW50bGVzcyB0byBy ZWRvIG9uIGEgcmVjdXJzaXZlIGVudHJ5LiIKICAgOzsgKG1lc3NhZ2UgImhpZGUtaWZkZWYtZ3V0 cyIpCiAgIChzYXZlLWV4Y3Vyc2lvbgotICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCi0gICAg KHdoaWxlIChoaWYtZmluZC1hbnktaWZYKQotICAgICAgKGhpZi1wb3NzaWJseS1oaWRlKSkpKQor ICAgIChsZXQgKChjYXNlLWZvbGQtc2VhcmNoIG5pbCkKKyAgICAgICAgICAoZXhwYW5kLWhlYWRl ciAoYW5kIGhpZGUtaWZkZWYtZXhwYW5kLXJlLWluY2x1c2lvbi1wcm90ZWN0aW9uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoIGhpZGUtaWZkZWYtaGVhZGVyLXJl Z2V4cC1wYXR0ZXJuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChidWZmZXItbmFtZSAoY3VycmVudC1idWZmZXIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh6ZXJvcCBoaWYtcmVjdXJzZS1sZXZlbCkpKQorICAgICAgICAgIG1pbiBtYXgpCisg ICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAgKHNldGYgbWluIChwb2ludCkpCisg ICAgICAobG9vcCBkbworICAgICAgICAgICAgKHNldGYgbWF4IChoaWYtZmluZC1hbnktaWZYKSkK KyAgICAgICAgICAgIChoaWYtYWRkLW5ldy1kZWZpbmVzIG1pbiBtYXgpCisgICAgICAgICAgICAo aWYgbWF4CisgICAgICAgICAgICAgICAgKGhpZi1wb3NzaWJseS1oaWRlIGV4cGFuZC1oZWFkZXIp KQorICAgICAgICAgICAgKHNldGYgbWluIChwb2ludCkpCisgICAgICAgICAgICB3aGlsZSBtYXgp KSkpCiAKIDs7PT09JSVTRiUlIGhpZGUtaWZkZWYtaGlkaW5nIChFbmQpICA9PT0KIAotCiA7Oz09 PSUlU0YlJSBleHBvcnRzIChTdGFydCkgID09PQogCiAoZGVmdW4gaGlkZS1pZmRlZi10b2dnbGUt cmVhZC1vbmx5ICgpCkBAIC04ODAsNyArMTY2Nyw3IEBAIEl0IGRvZXMgbm90IGRvIHRoZSB3b3Jr IHRoYXQncyBwb2ludGxlc3MgdG8gcmVkbyBvbiBhIHJlY3Vyc2l2ZSBlbnRyeS4iCiAgIChpbnRl cmFjdGl2ZSkKICAgKHNldHEgaGlkZS1pZmRlZi1yZWFkLW9ubHkgKG5vdCBoaWRlLWlmZGVmLXJl YWQtb25seSkpCiAgIChtZXNzYWdlICJIaWRlLVJlYWQtT25seSAlcyIKLQkgICAoaWYgaGlkZS1p ZmRlZi1yZWFkLW9ubHkgIk9OIiAiT0ZGIikpCisgICAgICAgICAgIChpZiBoaWRlLWlmZGVmLXJl YWQtb25seSAiT04iICJPRkYiKSkKICAgKGlmIGhpZGUtaWZkZWYtaGlkaW5nCiAgICAgICAoc2V0 cSBidWZmZXItcmVhZC1vbmx5IChvciBoaWRlLWlmZGVmLXJlYWQtb25seSBoaWYtb3V0c2lkZS1y ZWFkLW9ubHkpKSkKICAgKGZvcmNlLW1vZGUtbGluZS11cGRhdGUpKQpAQCAtODkwLDEwICsxNjc3 LDEwIEBAIEl0IGRvZXMgbm90IGRvIHRoZSB3b3JrIHRoYXQncyBwb2ludGxlc3MgdG8gcmVkbyBv biBhIHJlY3Vyc2l2ZSBlbnRyeS4iCiAgIChpbnRlcmFjdGl2ZSkKICAgKHNldHEgaGlmLW91dHNp ZGUtcmVhZC1vbmx5IChub3QgaGlmLW91dHNpZGUtcmVhZC1vbmx5KSkKICAgKG1lc3NhZ2UgIlJl YWQgb25seSAlcyIKLQkgICAoaWYgaGlmLW91dHNpZGUtcmVhZC1vbmx5ICJPTiIgIk9GRiIpKQor ICAgICAgICAgICAoaWYgaGlmLW91dHNpZGUtcmVhZC1vbmx5ICJPTiIgIk9GRiIpKQogICAoc2V0 cSBidWZmZXItcmVhZC1vbmx5Ci0JKG9yIChhbmQgaGlkZS1pZmRlZi1oaWRpbmcgaGlkZS1pZmRl Zi1yZWFkLW9ubHkpCi0JICAgIGhpZi1vdXRzaWRlLXJlYWQtb25seSkpCisgICAgICAgIChvciAo YW5kIGhpZGUtaWZkZWYtaGlkaW5nIGhpZGUtaWZkZWYtcmVhZC1vbmx5KQorICAgICAgICAgICAg aGlmLW91dHNpZGUtcmVhZC1vbmx5KSkKICAgKGZvcmNlLW1vZGUtbGluZS11cGRhdGUpKQogCiAo ZGVmdW4gaGlkZS1pZmRlZi10b2dnbGUtc2hhZG93aW5nICgpCkBAIC05MDUsNDUgKzE2OTIsODEg QEAgSXQgZG9lcyBub3QgZG8gdGhlIHdvcmsgdGhhdCdzIHBvaW50bGVzcyB0byByZWRvIG9uIGEg cmVjdXJzaXZlIGVudHJ5LiIKICAgICAod2lkZW4pCiAgICAgKGRvbGlzdCAob3ZlcmxheSAob3Zl cmxheXMtaW4gKHBvaW50LW1pbikgKHBvaW50LW1heCkpKQogICAgICAgKHdoZW4gKG92ZXJsYXkt Z2V0IG92ZXJsYXkgJ2hpZGUtaWZkZWYpCi0JKGlmIGhpZGUtaWZkZWYtc2hhZG93Ci0JICAgIChw cm9nbgotCSAgICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdpbnZpc2libGUgbmlsKQotCSAgICAg IChvdmVybGF5LXB1dCBvdmVybGF5ICdmYWNlICdoaWRlLWlmZGVmLXNoYWRvdykpCi0JICAob3Zl cmxheS1wdXQgb3ZlcmxheSAnZmFjZSBuaWwpCi0JICAob3ZlcmxheS1wdXQgb3ZlcmxheSAnaW52 aXNpYmxlICdoaWRlLWlmZGVmKSkpKSkpCi0KLShkZWZ1biBoaWRlLWlmZGVmLWRlZmluZSAodmFy KQotICAiRGVmaW5lIGEgVkFSIHNvIHRoYXQgI2lmZGVmIFZBUiB3b3VsZCBiZSBpbmNsdWRlZC4i Ci0gIChpbnRlcmFjdGl2ZSAiU0RlZmluZSB3aGF0PyAiKQotICAoaGlmLXNldC12YXIgdmFyIDEp Ci0gIChpZiBoaWRlLWlmZGVmLWhpZGluZyAoaGlkZS1pZmRlZnMpKSkKLQotKGRlZnVuIGhpZGUt aWZkZWYtdW5kZWYgKHZhcikKKyAgICAgICAgKGlmIGhpZGUtaWZkZWYtc2hhZG93CisgICAgICAg ICAgICAocHJvZ24KKyAgICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2ludmlzaWJs ZSBuaWwpCisgICAgICAgICAgICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdmYWNlICdoaWRlLWlm ZGVmLXNoYWRvdykpCisgICAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2ZhY2UgbmlsKQor ICAgICAgICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdpbnZpc2libGUgJ2hpZGUtaWZkZWYpKSkp KSkKKworKGRlZnVuIGhpZGUtaWZkZWYtZGVmaW5lICh2YXIgdmFsKQorICAiRGVmaW5lIGEgVkFS LCBvcHRpb25hbGx5IHRvIGEgc3BlY2lmaWMgdmFsdWUsIHNvIHRoYXQgI2lmZGVmIFZBUgord291 bGQgYmUgaW5jbHVkZWQuIgorICAoaW50ZXJhY3RpdmUKKyAgIChsZXQqICgoZGVmYXVsdCAoc2F2 ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAg ICAgICAgICAgICAgICAgICAgIChjb25kICgobG9va2luZy1hdCBoaWYtaWZ4LWVsc2UtZW5kaWYt cmVnZXhwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3J3YXJkLXdvcmQgMikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC13b3JkICdzdHJpY3QpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwp KSkpCisgICAgICAgICAodmFyIChyZWFkLW1pbmlidWZmZXIgIkRlZmluZSB3aGF0PyAiIGRlZmF1 bHQpKQorICAgICAgICAgKHZhbCAocmVhZC1mcm9tLW1pbmlidWZmZXIgKGZvcm1hdCAiU2V0ICVz IHRvPyAoZGVmYXVsdCAxKTogIiB2YXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBuaWwgbmlsIHQgbmlsICIxIikpKQorICAgICAobGlzdCB2YXIgdmFsKSkpCisgICAoaGlm LXNldC12YXIgdmFyIChvciB2YWwgMSkpCisgICAobWVzc2FnZSAiJXMgc2V0IHRvICVzIiB2YXIg KG9yIHZhbCAxKSkKKyAgIChzbGVlcC1mb3IgMSkKKyAgIChpZiBoaWRlLWlmZGVmLWhpZGluZyAo aGlkZS1pZmRlZnMpKSkKKworKGRlZnVuIGhpZi11bmRlZmluZS1zeW1ib2wgKHZhcikKKyAgKHNl dHEgaGlkZS1pZmRlZi1lbnYKKyAgICAgICAgKGRlbGV0ZSAoYXNzb2MgdmFyIGhpZGUtaWZkZWYt ZW52KSBoaWRlLWlmZGVmLWVudikpKQorCis7OyhkZWZ1biBoaWRlLWlmZGVmLXVuZGVmICh2YXIp Cis7OyAgIlVuZGVmaW5lIGEgVkFSIHNvIHRoYXQgI2lmZGVmIFZBUiB3b3VsZCBub3QgYmUgaW5j bHVkZWQuIgorOzsgIChpbnRlcmFjdGl2ZSAiU1VuZGVmaW5lIHdoYXQ/ICIpCis7OyAgOzsoaGlm LXNldC12YXIgdmFyIG5pbCk7O0x1a2UgZml4ZWQ6IHNldCBpdCBuaWwgaXMgc3RpbGwgY29uc2lk ZXJlZCBkZWZpbmVkIHNvICNpZmRlZiBWQVIgaXMgc3RpbGwgdHJ1ZS4KKzs7ICAoaGlmLXVuZGVm aW5lLXN5bWJvbCB2YXIpCis7OyAgKGlmIGhpZGUtaWZkZWYtaGlkaW5nIChoaWRlLWlmZGVmcykp KQorCisoZGVmdW4gaGlkZS1pZmRlZi11bmRlZiAoc3RhcnQgZW5kKQogICAiVW5kZWZpbmUgYSBW QVIgc28gdGhhdCAjaWZkZWYgVkFSIHdvdWxkIG5vdCBiZSBpbmNsdWRlZC4iCi0gIChpbnRlcmFj dGl2ZSAiU1VuZGVmaW5lIHdoYXQ/ICIpCi0gIChoaWYtc2V0LXZhciB2YXIgbmlsKQotICAoaWYg aGlkZS1pZmRlZi1oaWRpbmcgKGhpZGUtaWZkZWZzKSkpCi0KKyAgKGludGVyYWN0aXZlICJyIikK KyAgKGxldCogKChzeW1zdHIKKyAgICAgICAgICAob3IgKGFuZCBtYXJrLWFjdGl2ZQorICAgICAg ICAgICAgICAgICAgIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgc3RhcnQgZW5kKSkK KyAgICAgICAgICAgICAgKHJlYWQtc3RyaW5nICJVbmRlZmluZSB3aGF0PyAiIChjdXJyZW50LXdv cmQpKSkpCisgICAgICAgICAoc3ltIChhbmQgc3ltc3RyCisgICAgICAgICAgICAgICAgICAgKGlu dGVybiBzeW1zdHIpKSkpCisgICAgKGlmICh6ZXJvcCAoaGlmLWRlZmluZWQgc3ltKSkKKyAgICAg ICAgKG1lc3NhZ2UgImAlcycgbm90IGRlZmluZWQsIG5vIG5lZWQgdG8gdW5kZWZpbmUgaXQiIHN5 bXN0cikKKyAgICAgIChoaWYtdW5kZWZpbmUtc3ltYm9sIHN5bSkKKyAgICAgIChpZiBoaWRlLWlm ZGVmLWhpZGluZyAoaGlkZS1pZmRlZnMpKQorICAgICAgKG1lc3NhZ2UgImAlUycgdW5kZWZpbmVk IiBzeW0pKSkpCiAKIChkZWZ1biBoaWRlLWlmZGVmcyAoJm9wdGlvbmFsIG5vbXNnKQogICAiSGlk ZSB0aGUgY29udGVudHMgb2Ygc29tZSAjaWZkZWZzLgogQXNzdW1lIHRoYXQgZGVmaW5lZCBzeW1i b2xzIGhhdmUgYmVlbiBhZGRlZCB0byBgaGlkZS1pZmRlZi1lbnYnLgogVGhlIHRleHQgaGlkZGVu IGlzIHRoZSB0ZXh0IHRoYXQgd291bGQgbm90IGJlIGluY2x1ZGVkIGJ5IHRoZSBDCiBwcmVwcm9j ZXNzb3IgaWYgaXQgd2VyZSBnaXZlbiB0aGUgZmlsZSB3aXRoIHRob3NlIHN5bWJvbHMgZGVmaW5l ZC4KK0lmIHRoaXMgY29tbWFuZCBpcyBwcmVmaXhlZCwgaGlkZSBhbHNvIHRoZSAjaWZkZWZzIHRo ZW1zZWx2ZXMuCiAKIFR1cm4gb2ZmIGhpZGluZyBieSBjYWxsaW5nIGBzaG93LWlmZGVmcycuIgog CiAgIChpbnRlcmFjdGl2ZSkKLSAgKG1lc3NhZ2UgIkhpZGluZy4uLiIpCi0gIChzZXRxIGhpZi1v dXRzaWRlLXJlYWQtb25seSBidWZmZXItcmVhZC1vbmx5KQotICAodW5sZXNzIGhpZGUtaWZkZWYt bW9kZSAoaGlkZS1pZmRlZi1tb2RlIDEpKSA7IHR1cm4gb24gaGlkZS1pZmRlZi1tb2RlCi0gIChp ZiBoaWRlLWlmZGVmLWhpZGluZwotICAgICAgKHNob3ctaWZkZWZzKSkJCQk7IE90aGVyd2lzZSwg ZGVlcCBjb25mdXNpb24uCi0gIChzZXRxIGhpZGUtaWZkZWYtaGlkaW5nIHQpCi0gIChoaWRlLWlm ZGVmLWd1dHMpCi0gIChzZXRxIGJ1ZmZlci1yZWFkLW9ubHkgKG9yIGhpZGUtaWZkZWYtcmVhZC1v bmx5IGhpZi1vdXRzaWRlLXJlYWQtb25seSkpCi0gIChvciBub21zZwotICAgICAgKG1lc3NhZ2Ug IkhpZGluZyBkb25lIikpKQorICAobGV0ICgoaGlkZS1pZmRlZi1saW5lcyBjdXJyZW50LXByZWZp eC1hcmcpKQorICAgIChvciBub21zZworICAgICAgICAobWVzc2FnZSAiSGlkaW5nLi4uIikpCisg ICAgKHNldHEgaGlmLW91dHNpZGUtcmVhZC1vbmx5IGJ1ZmZlci1yZWFkLW9ubHkpCisgICAgKHVu bGVzcyBoaWRlLWlmZGVmLW1vZGUgKGhpZGUtaWZkZWYtbW9kZSAxKSkgOyB0dXJuIG9uIGhpZGUt aWZkZWYtbW9kZQorICAgIChpZiBoaWRlLWlmZGVmLWhpZGluZworICAgICAgICAoc2hvdy1pZmRl ZnMpKSAgICAgICAgICAgICAgICAgICAgOyBPdGhlcndpc2UsIGRlZXAgY29uZnVzaW9uLgorICAg IChzZXRxIGhpZGUtaWZkZWYtaGlkaW5nIHQpCisgICAgKGhpZGUtaWZkZWYtZ3V0cykKKyAgICAo c2V0cSBidWZmZXItcmVhZC1vbmx5IChvciBoaWRlLWlmZGVmLXJlYWQtb25seSBoaWYtb3V0c2lk ZS1yZWFkLW9ubHkpKQorICAgIChvciBub21zZworICAgICAgICAobWVzc2FnZSAiSGlkaW5nIGRv bmUiKSkpKQogCiAKIChkZWZ1biBzaG93LWlmZGVmcyAoKQpAQCAtOTU3LDQ5ICsxNzgwLDg5IEBA IFR1cm4gb2ZmIGhpZGluZyBieSBjYWxsaW5nIGBzaG93LWlmZGVmcycuIgogKGRlZnVuIGhpZi1m aW5kLWlmZGVmLWJsb2NrICgpCiAgICJVdGlsaXR5IGZvciBoaWRlIGFuZCBzaG93IGBpZmRlZi1i bG9jaycuCiBSZXR1cm4gYXMgKFRPUCAuIEJPVFRPTSkgdGhlIGV4dGVudCBvZiBpZmRlZiBibG9j ay4iCi0gIChsZXQgKG1heC1ib3R0b20pCi0gICAgKGNvbnMgKHNhdmUtZXhjdXJzaW9uCi0JICAg IChiZWdpbm5pbmctb2YtbGluZSkKLQkgICAgKHVubGVzcyAob3IgKGhpZi1sb29raW5nLWF0LWVs c2UpIChoaWYtbG9va2luZy1hdC1pZlgpKQotCSAgICAgICh1cC1pZmRlZikpCi0JICAgIChwcm9n MSAocG9pbnQpCi0JICAgICAgKGhpZi1pZmRlZi10by1lbmRpZikKLQkgICAgICAoc2V0cSBtYXgt Ym90dG9tICgxLSAocG9pbnQpKSkpKQotCSAgKHNhdmUtZXhjdXJzaW9uCi0JICAgIChiZWdpbm5p bmctb2YtbGluZSkKLQkgICAgKHVubGVzcyAoaGlmLWxvb2tpbmctYXQtZW5kaWYpCi0JICAgICAg KGhpZi1maW5kLW5leHQtcmVsZXZhbnQpKQotCSAgICAod2hpbGUgKGhpZi1sb29raW5nLWF0LWlm WCkKLQkgICAgICAoaGlmLWlmZGVmLXRvLWVuZGlmKQotCSAgICAgIChoaWYtZmluZC1uZXh0LXJl bGV2YW50KSkKLQkgICAgKG1pbiBtYXgtYm90dG9tICgxLSAocG9pbnQpKSkpKSkpCi0KLQotKGRl ZnVuIGhpZGUtaWZkZWYtYmxvY2sgKCkKLSAgIkhpZGUgdGhlIGlmZGVmIGJsb2NrICh0cnVlIG9y IGZhbHNlIHBhcnQpIGVuY2xvc2luZyBvciBiZWZvcmUgdGhlIGN1cnNvci4iCi0gIChpbnRlcmFj dGl2ZSkKLSAgKHVubGVzcyBoaWRlLWlmZGVmLW1vZGUgKGhpZGUtaWZkZWYtbW9kZSAxKSkKLSAg KGxldCAoKHRvcC1ib3R0b20gKGhpZi1maW5kLWlmZGVmLWJsb2NrKSkpCi0gICAgKGhpZGUtaWZk ZWYtcmVnaW9uIChjYXIgdG9wLWJvdHRvbSkgKGNkciB0b3AtYm90dG9tKSkKLSAgICAod2hlbiBo aWRlLWlmZGVmLWxpbmVzCi0gICAgICAoaGlmLWhpZGUtbGluZSAoY2FyIHRvcC1ib3R0b20pKQot ICAgICAgKGhpZi1oaWRlLWxpbmUgKDErIChjZHIgdG9wLWJvdHRvbSkpKSkKLSAgICAoc2V0cSBo aWRlLWlmZGVmLWhpZGluZyB0KSkKLSAgKHNldHEgYnVmZmVyLXJlYWQtb25seSAob3IgaGlkZS1p ZmRlZi1yZWFkLW9ubHkgaGlmLW91dHNpZGUtcmVhZC1vbmx5KSkpCi0KLShkZWZ1biBzaG93LWlm ZGVmLWJsb2NrICgpCisgIChpZiAoYW5kIChmYm91bmRwICdjLWJhY2t3YXJkLWNvbmRpdGlvbmFs LXdpdGgtZWxzZSkKKyAgICAgICAgICAgKGZib3VuZHAgJ2MtZm9yd2FyZC1jb25kaXRpb25hbC13 aXRoLWVsc2UpKQorICAgICAgOztVc2UgbXkgbW9kaWZpZWQgZnVuY3Rpb25zIGluIGNjLW1vZGUu CisgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgKGNvbnMKKyAgICAgICAgIChwcm9nbgor ICAgICAgICAgICAoaWYgKD0gKGxpbmUtbnVtYmVyLWF0LXBvcykKKyAgICAgICAgICAgICAgICAg IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUp CisgICAgICAgICAgICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCBoaWYtaWZ4LWVsc2UtZW5k aWYtcmVnZXhwKQorICAgICAgICAgICAgICAgICAgICAobGluZS1udW1iZXItYXQtcG9zKSkpCisg ICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgKGMtYmFja3dh cmQtY29uZGl0aW9uYWwtd2l0aC1lbHNlIDEpKQorICAgICAgICAgICAocG9pbnQpKQorICAgICAg ICAgKHByb2duIChjLWZvcndhcmQtY29uZGl0aW9uYWwtd2l0aC1lbHNlIDEpICgxLSAocG9pbnQp KSkpKQorICAgIDs7IG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIGluIGhpZGVpZi5lbAorICAgIChs ZXQgKG1heC1ib3R0b20pCisgICAgICAoY29ucyAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAg ICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgICAgICAgICAgICAodW5sZXNzIChvciAoaGlmLWxv b2tpbmctYXQtZWxzZSkgKGhpZi1sb29raW5nLWF0LWlmWCkpCisgICAgICAgICAgICAgICAgKHVw LWlmZGVmKSkKKyAgICAgICAgICAgICAgKHByb2cxIChwb2ludCkKKyAgICAgICAgICAgICAgICAo aGlmLWlmZGVmLXRvLWVuZGlmKQorICAgICAgICAgICAgICAgIChzZXRxIG1heC1ib3R0b20gKDEt IChwb2ludCkpKSkpCisgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAg KGJlZ2lubmluZy1vZi1saW5lKQorICAgICAgICAgICAgICAodW5sZXNzIChoaWYtbG9va2luZy1h dC1lbmRpZikKKyAgICAgICAgICAgICAgICAoaGlmLWZpbmQtbmV4dC1yZWxldmFudCkpCisgICAg ICAgICAgICAgICh3aGlsZSAoaGlmLWxvb2tpbmctYXQtaWZYKQorICAgICAgICAgICAgICAgICho aWYtaWZkZWYtdG8tZW5kaWYpCisgICAgICAgICAgICAgICAgKGhpZi1maW5kLW5leHQtcmVsZXZh bnQpKQorICAgICAgICAgICAgICAobWluIG1heC1ib3R0b20gKDEtIChwb2ludCkpKSkpKSkpCisK KyhkZWZ1biBoaWRlLWlmZGVmLWJsb2NrICgmb3B0aW9uYWwgc3RhcnQgZW5kKQorICAiSGlkZSB0 aGUgaWZkZWYgYmxvY2sgKHRydWUgb3IgZmFsc2UgcGFydCkgZW5jbG9zaW5nIG9yIGJlZm9yZSB0 aGUgY3Vyc29yLgorSWYgcHJlZml4ZWQsIGl0IHdpbGwgYWxzbyBoaWRlICNpZmRlZnMgdGhlbXNl bHZlcy4iCisgIChpbnRlcmFjdGl2ZSAiciIpCisgIChsZXQgKChoaWRlLWlmZGVmLWxpbmVzIGN1 cnJlbnQtcHJlZml4LWFyZykpCisgICAgKGlmIG1hcmstYWN0aXZlCisgICAgICAgIChsZXQgKCho aWYtcmVjdXJzZS1sZXZlbCAoMSsgaGlmLXJlY3Vyc2UtbGV2ZWwpKSkKKyAgICAgICAgICAoaGlm LXJlY3Vyc2Utb24gc3RhcnQgZW5kIHQpCisgICAgICAgICAgKHNldHEgbWFyay1hY3RpdmUgbmls KSkKKyAgICAgICh1bmxlc3MgaGlkZS1pZmRlZi1tb2RlIChoaWRlLWlmZGVmLW1vZGUgMSkpCisg ICAgICAobGV0ICgodG9wLWJvdHRvbSAoaGlmLWZpbmQtaWZkZWYtYmxvY2spKSkKKyAgICAgICAg KGhpZGUtaWZkZWYtcmVnaW9uIChjYXIgdG9wLWJvdHRvbSkgKGNkciB0b3AtYm90dG9tKSkKKyAg ICAgICAgKHdoZW4gaGlkZS1pZmRlZi1saW5lcworICAgICAgICAgIChoaWYtaGlkZS1saW5lIChj YXIgdG9wLWJvdHRvbSkpCisgICAgICAgICAgKGhpZi1oaWRlLWxpbmUgKDErIChjZHIgdG9wLWJv dHRvbSkpKSkKKyAgICAgICAgKHNldHEgaGlkZS1pZmRlZi1oaWRpbmcgdCkpCisgICAgICAoc2V0 cSBidWZmZXItcmVhZC1vbmx5IChvciBoaWRlLWlmZGVmLXJlYWQtb25seSBoaWYtb3V0c2lkZS1y ZWFkLW9ubHkpKSkpKQorCisoZGVmdW4gc2hvdy1pZmRlZi1ibG9jayAoJm9wdGlvbmFsIHN0YXJ0 IGVuZCkKICAgIlNob3cgdGhlIGlmZGVmIGJsb2NrICh0cnVlIG9yIGZhbHNlIHBhcnQpIGVuY2xv c2luZyBvciBiZWZvcmUgdGhlIGN1cnNvci4iCi0gIChpbnRlcmFjdGl2ZSkKLSAgKGxldCAoKHRv cC1ib3R0b20gKGhpZi1maW5kLWlmZGVmLWJsb2NrKSkpCi0gICAgKGlmIGhpZGUtaWZkZWYtbGlu ZXMKLSAJKGhpZi1zaG93LWlmZGVmLXJlZ2lvbgotIAkgKHNhdmUtZXhjdXJzaW9uCi0gCSAgIChn b3RvLWNoYXIgKGNhciB0b3AtYm90dG9tKSkgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkKLSAJ IChzYXZlLWV4Y3Vyc2lvbgotIAkgICAoZ290by1jaGFyICgxKyAoY2RyIHRvcC1ib3R0b20pKSkK LQkgICAoaGlmLWVuZC1vZi1saW5lKSAocG9pbnQpKSkKLSAgICAgIChoaWYtc2hvdy1pZmRlZi1y ZWdpb24gKDEtIChjYXIgdG9wLWJvdHRvbSkpIChjZHIgdG9wLWJvdHRvbSkpKSkpCi0KKyAgKGlu dGVyYWN0aXZlICJyIikKKyAgKGlmIG1hcmstYWN0aXZlCisgICAgICAocHJvZ24KKyAgICAgICAg KGRvbGlzdCAobyAob3ZlcmxheXMtaW4gc3RhcnQgZW5kKSkKKyAgICAgICAgICAoaWYgKG92ZXJs YXktZ2V0IG8gJ2hpZGUtaWZkZWYpCisgICAgICAgICAgICAgIChkZWxldGUtb3ZlcmxheSBvKSkp CisgICAgICAgIChzZXRxIG1hcmstYWN0aXZlIG5pbCkpCisgICAgKGxldCAoKHRvcC1ib3R0b20g KGNvbmRpdGlvbi1jYXNlIG5pbAorICAgICAgICAgICAgICAgICAgICAgICAgICAoaGlmLWZpbmQt aWZkZWYtYmxvY2spCisgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IKKyAgICAgICAgICAg ICAgICAgICAgICAgICBuaWwpKSkKKyAgICAgICAgICAob3ZycyAob3ZlcmxheXMtaW4gKG1heCAo cG9pbnQtbWluKSAoMS0gKHBvaW50KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICht aW4gKHBvaW50LW1heCkgKDErIChwb2ludCkpKSkpCisgICAgICAgICAgKGRlbCBuaWwpKQorICAg ICAgKGlmIHRvcC1ib3R0b20KKyAgICAgICAgICAoaWYgaGlkZS1pZmRlZi1saW5lcworICAgICAg ICAgICAgICAoaGlmLXNob3ctaWZkZWYtcmVnaW9uCisgICAgICAgICAgICAgICAoc2F2ZS1leGN1 cnNpb24KKyAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAoY2FyIHRvcC1ib3R0b20pKSAobGlu ZS1iZWdpbm5pbmctcG9zaXRpb24pKQorICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisg ICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKDErIChjZHIgdG9wLWJvdHRvbSkpKQorICAgICAg ICAgICAgICAgICAoaGlmLWVuZC1vZi1saW5lKSAocG9pbnQpKSkKKyAgICAgICAgICAgIChzZXRm IGRlbCAoaGlmLXNob3ctaWZkZWYtcmVnaW9uICgxLSAoY2FyIHRvcC1ib3R0b20pKSAoY2RyIHRv cC1ib3R0b20pKSkpKQorICAgICAgKGlmIChub3QgKGFuZCB0b3AtYm90dG9tCisgICAgICAgICAg ICAgICAgICAgIGRlbCkpCisgICAgICAgICAgKGRvbGlzdCAobyBvdnJzKQorICAgICAgICAgICAg OzsoZG9saXN0IChvIChvdmVybGF5cy1pbiAoMS0gKHBvaW50KSkgKDErIChwb2ludCkpKSkKKyAg ICAgICAgICAgIDs7ICAgKGlmIChvdmVybGF5LWdldCBvICdoaWRlLWlmZGVmKSAobWVzc2FnZSAi JVMiIG8pKSkKKyAgICAgICAgICAgIChpZiAob3ZlcmxheS1nZXQgbyAnaGlkZS1pZmRlZikKKyAg ICAgICAgICAgICAgICAoZGVsZXRlLW92ZXJsYXkgbykpKSkpKSkKIAogOzs7ICBkZWZpbml0aW9u IGFsaXN0IHN1cHBvcnQKIApAQCAtMTAxNiwyNCArMTg3OSwyOCBAQCBSZXR1cm4gYXMgKFRPUCAu IEJPVFRPTSkgdGhlIGV4dGVudCBvZiBpZmRlZiBibG9jay4iCiAgICJTZXQgdGhlIGFzc29jaWF0 aW9uIGZvciBOQU1FIHRvIGBoaWRlLWlmZGVmLWVudicuIgogICAoaW50ZXJhY3RpdmUgIlNTZXQg ZGVmaW5lIGxpc3Q6ICIpCiAgIChwdXNoIChjb25zIG5hbWUgKGhpZi1jb21wcmVzcy1kZWZpbmUt bGlzdCBoaWRlLWlmZGVmLWVudikpCi0JaGlkZS1pZmRlZi1kZWZpbmUtYWxpc3QpKQorICAgICAg ICBoaWRlLWlmZGVmLWRlZmluZS1hbGlzdCkpCiAKIChkZWZ1biBoaWRlLWlmZGVmLXVzZS1kZWZp bmUtYWxpc3QgKG5hbWUpCiAgICJTZXQgYGhpZGUtaWZkZWYtZW52JyB0byB0aGUgZGVmaW5lIGxp c3Qgc3BlY2lmaWVkIGJ5IE5BTUUuIgogICAoaW50ZXJhY3RpdmUKICAgIChsaXN0IChjb21wbGV0 aW5nLXJlYWQgIlVzZSBkZWZpbmUgbGlzdDogIgotCQkJICAobWFwY2FyIChsYW1iZGEgKHgpIChz eW1ib2wtbmFtZSAoY2FyIHgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAo bGFtYmRhICh4KSAoc3ltYm9sLW5hbWUgKGNhciB4KSkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaGlkZS1pZmRlZi1kZWZpbmUtYWxpc3QpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5pbCB0KSkpCiAgIChpZiAoc3RyaW5ncCBuYW1lKSAoc2V0cSBuYW1lIChpbnRlcm4g bmFtZSkpKQogICAobGV0ICgoZGVmaW5lLWxpc3QgKGFzc29jIG5hbWUgaGlkZS1pZmRlZi1kZWZp bmUtYWxpc3QpKSkKICAgICAoaWYgZGVmaW5lLWxpc3QKLQkoc2V0cSBoaWRlLWlmZGVmLWVudgot CSAgICAgIChtYXBjYXIgKGxhbWJkYSAoYXJnKSAoY29ucyBhcmcgdCkpCi0JCSAgICAgIChjZHIg ZGVmaW5lLWxpc3QpKSkKKyAgICAgICAgKHNldHEgaGlkZS1pZmRlZi1lbnYKKyAgICAgICAgICAg ICAgKG1hcGNhciAobGFtYmRhIChhcmcpIChjb25zIGFyZyB0KSkKKyAgICAgICAgICAgICAgICAg ICAgICAoY2RyIGRlZmluZS1saXN0KSkpCiAgICAgICAoZXJyb3IgIk5vIGRlZmluZSBsaXN0IGZv ciAlcyIgbmFtZSkpCiAgICAgKGlmIGhpZGUtaWZkZWYtaGlkaW5nIChoaWRlLWlmZGVmcykpKSkK IAogKHByb3ZpZGUgJ2hpZGVpZikKIAorOzsgTG9jYWwgdmFyaWFibGVzOgorOzsgYnl0ZS1jb21w aWxlLXdhcm5pbmdzOiAobm90IGNsLWZ1bmN0aW9ucykKKzs7IEVuZDoKKwogOzs7IGhpZGVpZi5l bCBlbmRzIGhlcmUK --001a113633543618eb04ebfa943b--