From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.bugs Subject: bug#20741: 24.4; flyspell doesn't work with abbreviations ending in a period Date: Mon, 14 Feb 2022 19:08:57 +0100 Message-ID: <18db59b9-f502-7ee5-ff6a-7732b2f10aae@gmx.at> References: <87pp5az1u7.fsf@sc3d.org> <83twumnem2.fsf@gnu.org> <83iob1nxfb.fsf@gnu.org> <87o83bxhll.fsf@gnus.org> <83fsonq6w9.fsf@gnu.org> <83k0dxpo5f.fsf@gnu.org> <83ee45pj7r.fsf@gnu.org> <83czjppfh1.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------IRttFKIG0tKOQ3VYGl4vcgGz" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="24983"; mail-complaints-to="usenet@ciao.gmane.io" Cc: larsi@gnus.org, 20741@debbugs.gnu.org To: Reuben Thomas , Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Feb 14 19:13:30 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nJfqr-0006HT-MV for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 14 Feb 2022 19:13:30 +0100 Original-Received: from localhost ([::1]:38282 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nJfqq-0008NS-Cj for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 14 Feb 2022 13:13:28 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:35486) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nJfnl-0005cg-Vy for bug-gnu-emacs@gnu.org; Mon, 14 Feb 2022 13:10:18 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:48608) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nJfnW-0007Pm-DI for bug-gnu-emacs@gnu.org; Mon, 14 Feb 2022 13:10:17 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1nJfnV-0001yN-Vi for bug-gnu-emacs@gnu.org; Mon, 14 Feb 2022 13:10:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 14 Feb 2022 18:10:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20741 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: confirmed Original-Received: via spool by 20741-submit@debbugs.gnu.org id=B20741.16448621497512 (code B ref 20741); Mon, 14 Feb 2022 18:10:01 +0000 Original-Received: (at 20741) by debbugs.gnu.org; 14 Feb 2022 18:09:09 +0000 Original-Received: from localhost ([127.0.0.1]:42506 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJfmf-0001x6-0H for submit@debbugs.gnu.org; Mon, 14 Feb 2022 13:09:09 -0500 Original-Received: from mout.gmx.net ([212.227.17.20]:53029) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJfme-0001wu-3A for 20741@debbugs.gnu.org; Mon, 14 Feb 2022 13:09:08 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1644862141; bh=FVuCz96l621uRZuImXfbIcqaFVoQOeuBBkiNXoBIuSo=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:In-Reply-To; b=ENgsh78unqYsN2K8EAPvd2nUl5OZPzat0xS0m4sie70kYDYLSfY7PEJR6cIIGWeym 7OpvJ9rjNbEnLRyKoiPumYc39xOrTg9m8smtjCEVaXoAkW527t6bAGAJ4Oh2Ujdxxd kh1CD27RHfsbgwmEfMNqaY3dLbCqhi6Mm2LwS9RA= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Original-Received: from [192.168.1.101] ([213.142.96.169]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N0XD2-1oFt4C19Rk-00wVQp; Mon, 14 Feb 2022 19:09:01 +0100 Content-Language: en-US In-Reply-To: X-Provags-ID: V03:K1:sypu72llT8QGb4JpE7qoAkq/SJjw3flNL0WdVBMabmNEhvL8veM 9MlMrIq4A/3ZpLEURD83HygkphrFzCwsvtu91H/01Lo78nUuGBUWjr6nuOLl+CatX/muazO N3KHPef6NvXUEKsPsQjCM6qBY+/RrJ1WD41VQTAjnn3z/rsOall6iEYnRipErWnQwgKtkAW TKrrWNetPVjxEwQAjRaYg== X-UI-Out-Filterresults: notjunk:1;V03:K0:hstFHh9edC4=:gqdosnk2DxEyjdqZzolZQ6 E1g1US748kbJP7OMJIGaH2aprlQwFDCmukJpdwOXQyEv5dFf0VZZLZD/a3Log/RAPgWVsHsm5 KgMKPDZNL2LLSlM16sGzzXldyqh8tYLl1b3n2LssiaZsb1oqdQdHC2NN2Zsge9V08E0bEZchO +cBcAvIs6v1FC8PxL/BYf+niW6BDgaXwgFJyjVPjZu6uVUilYOIlIxUrMb3Enf2DZTAeJmdFW 0nqS+uX3JBMBglbQIT+amwaZidwbR3/vzi+HBhg0OA85B1D6G9OEHRgFjKGXnq8Pcokyok8Od yCseBSHxd/6VQHVQ2d9A42dyVBApwd1X24PlHzKMq9OEVQsoBj2XB5KjKkCvfGC0Xlb5G1UvO rXWhFWzVzqVcj2qkThyszSrxeCW6K0bHRFKMHZPirYDQKATYR0huGGMVutX+ljAFesk1CVr6V uTN0Apq6z3yDHDPJQKCiboGoRWnBvq6YdaHG/CLSH+O9gE38xzVI9OmwvilZpfRXLkyWgw3e2 0G8y4yyJSqz/oGLrdOA/VRmkYE2L9ePqoqS82gZv10s7LzkpLMfAcsbZwH2stVrA9KdZfKzaS URZlAnuh2lnIsggNPVXk3xjtX3/AG7OIGXsU8D12+q9mbMp9jMFYcP3Gvjo0SSv0ryH+1Kvm2 haXmbkXPu8Mv2Qap00fvdW9pqzBvvuP5uCp8urqULiwWfcCmogm/gKFSXr9wDB0VNXkt28NGC 4DjZOrbLhTroxR62qcsY51OEFbdf3dY4GVD6ZlQgJuCZ13b3MmOyCiGr/2jJ4JMYYk3cdf4w X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:226910 Archived-At: This is a multi-part message in MIME format. --------------IRttFKIG0tKOQ3VYGl4vcgGz Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 ID4gQ2FzZSAxLCBvbiB3aGljaCBldmVyeXRoaW5nIGVsc2UgZGVwZW5kcywgaXMgYSBtYXR0 ZXIgb2YgRW1hY3Mgc2VuZGluZw0KID4gc3RyZXRjaGVzIG9mIHRleHQgdG8gdGhlIHNwZWxs LWNoZWNrZXIsIHdoaWNoIGN1cnJlbnRseSAoYXQgbGVhc3Qgd2l0aA0KID4gSHVuc3BlbGwp IGRvZXMgbm90IGRlYWwgd2l0aCBwdW5jdHVhdGlvbiB2ZXJ5IHdlbGwsIHRob3VnaCB0aGVy ZSBhcmUgcGxhbnMNCiA+IHRvIGltcHJvdmUgSHVuc3BlbGwsIGFjY29yZGluZyB0byB0aGUg aXNzdWUgSSBsaW5rZWQgdG8gZWFybGllci4NCiA+DQogPiBOb25lIG9mIHRoZXNlIHdvdWxk IGJlbmVmaXQgZnJvbSBzcGVjaWFsLWNhc2luZyB0cmVhdG1lbnQgb2YgdGhlIHBlcmlvZCBv cg0KID4gYW55IG90aGVyIGNoYXJhY3RlciBpbiBpc3BlbGwuZWwsIEkgdGhpbmsuDQoNCkF0 dGFjaGVkIGZpbmQgbXkgY29kZSB3aGljaCB3b3JrcyB3aXRoIEh1bnNwZWxsIGFuZCB1dGYt OCBjb2RlZCBidWZmZXJzDQpvbmx5LiAgQWRkIHRvIHlvdXIgLmVtYWNzIHNvbWV0aGluZyBs aWtlDQoNCg0KKGxvYWQgIn4vc3BlY2suZWwiIG5pbCB0KQ0KDQooY3VzdG9tLXNldC12YXJp YWJsZXMNCiAgJyhzcGVjay1kaWN0aW9uYXJpZXMtYWxpc3QgJygoMCAiZW5fVVMiIG5pbCBu aWwpICgxICJkZV9BVCIgbmlsIG5pbCkgKDIgImVuX1VTIiAoImRlX0FUIikgbmlsKSkpDQog ICcoc3BlY2std29yZGNoYXJzLWFsaXN0DQogICAgJygoImVuX1VTIiAiJ8K0YCIgbmlsKQ0K ICAgICAgKCJmcl9GUiIgIuKAmSciIG5pbCkNCiAgICAgICgiZW5fVVMsZnJfRlIiICInwrRg 4oCZJyIgbmlsKSkpKQ0KDQooZ2xvYmFsLXNldC1rZXkgWyhmNyldICdzcGVjay1tb2RlKQ0K DQoNCmN1c3RvbWl6ZSAnc3BlY2std29yZGNoYXJzLWFsaXN0JyBhY2NvcmRpbmcgdG8geW91 ciBsaWtlICh0aGUgYWJvdmUgYXJlDQp0aGUgdmFsdWVzIEkgdXNlIC0geW91IHByb2JhYmx5 IHdhbnQgdG8gYWRkIG9wdGlvbnMgZm9yIGVuX0dCKSwgaGl0IEY3DQppbiBzb21lIHdpbmRv dyB5b3Ugd2FudCB0byBjaGVjayBhbmQgdGVsbCBtZSBpZiBzcGVjaWFsLWNhc2luZyB0cmVh dG1lbnQNCm9mIGNoYXJhY3RlcnMgd2l0aCB0aGF0IG9wdGlvbiB3b3Jrcy4NCg0KbWFydGlu DQo= --------------IRttFKIG0tKOQ3VYGl4vcgGz Content-Type: text/x-emacs-lisp; charset=UTF-8; name="speck.el" Content-Disposition: attachment; filename="speck.el" Content-Transfer-Encoding: base64 Ozs7IHNwZWNrLmVsIC0tLSBtaW5vciBtb2RlIGZvciBzcGVsbCBjaGVja2luZwoKOzsgQ29w eXJpZ2h0IChDKSAyMDA2LTIwMjIgTWFydGluIFJ1ZGFsaWNzCgo7OyBUaW1lLXN0YW1wOiAi MjAyMi0wMi0xNCAxODo0Njo0NiBtYXJ0aW4iCjs7IEF1dGhvcjogTWFydGluIFJ1ZGFsaWNz IDxydWRhbGljc0BnbXguYXQ+Cjs7IEtleXdvcmRzOiBzcGVsbCBjaGVja2luZwoKOzsgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKOzsgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCjs7IFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo7OyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv Zgo7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCjs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCgo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7OyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KCjs7OyBDb21tZW50 YXJ5OgoKOzsgU3BlY2sgaXMgYSBtaW5vciBtb2RlIGZvciAic3BlY2tpbmciIC0gc3BlbGwt Y2hlY2tpbmcgdGV4dCBkaXNwbGF5ZWQKOzsgaW4gRW1hY3Mgd2luZG93cy4gIEludm9rZSB0 aGUgY29tbWFuZCBgc3BlY2stbW9kZScgdG8gdG9nZ2xlIHNwZWNraW5nCjs7IG9mIGFsbCB3 aW5kb3dzIHNob3dpbmcgdGhlIGN1cnJlbnQgYnVmZmVyIHdpdGggeW91ciBtYWNoaW5lJ3Mg ZGVmYXVsdAo7OyBkaWN0aW9uYXJ5LiAgSW52b2tlIGBzcGVjay1idWZmZXInIHRvIHNwZWNr IGFsbCB3aW5kb3dzIHNob3dpbmcgdGhlCjs7IGN1cnJlbnQgYnVmZmVyIGNob29zaW5nIHRo ZSBkaWN0aW9uYXJpZXMgb2YgeW91ciBsaWtlLgoKOzsgSW4gaXRzIGN1cnJlbnQgdmVyc2lv biBTcGVjayB3b3JrcyBleGNsdXNpdmVseSB3aXRoIGJ1ZmZlcnMgY29kZWQgaW4KOzsgdXRm LTggYW5kIEh1bnNwZWxsLgoKOzsgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KOzsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF8KOzs7CQkJICAgICBWYXJpYWJsZXMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF8KOzsgX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K OzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF8KCihkZWZ2YXIgc3BlY2stbW9kZSBuaWwpCgoo ZGVmdmFyIHNwZWNrLWJ1ZmZlci1saXN0IG5pbAogICJMaXN0IG9mIGJ1ZmZlcnMgbWFuYWdl ZCBieSBTcGVjay4iKQoKKGRlZnZhciBzcGVjay13aW5kb3ctbGlzdCBuaWwKICAiTGlzdCBv ZiB3aW5kb3dzIG1hbmFnZWQgYnkgU3BlY2suIikKCihkZWZ2YXIgc3BlY2stZGVsYXktdGlt ZXIgbmlsCiAgIklkbGUgdGltZXIgdG8gc3RhcnQgc3BlY2tpbmcgYWZ0ZXIgYHNwZWNrLWRl bGF5JyBzZWNvbmRzLiIpCgooZGVmdmFyIHNwZWNrLXBhdXNlLXRpbWVyIG5pbAogICJJZGxl IHRpbWVyIHRvIHN1c3BlbmQgc3BlY2tpbmcgZm9yIGBzcGVjay1wYXVzZScgc2Vjb25kcy4i KQoKKGRlZnZhciBzcGVjay1tYXJrZXIgKG1ha2UtbWFya2VyKQogICJNYXJrZXIgdXNlZCBk dXJpbmcgcXVlcnlpbmcuIikKCihkZWZ2YXIgc3BlY2stbWFya2VyLXdpbmRvdyBuaWwKICAi V2luZG93IHdoZXJlIGBzcGVjay1tYXJrZXInIHdhcyBzZXQuIikKCihkZWZ2YXIgc3BlY2st cHJvY2VzcyBuaWwKICAiVGhpcyBidWZmZXIncyBTcGVjayBwcm9jZXNzLiIpCihtYWtlLXZh cmlhYmxlLWJ1ZmZlci1sb2NhbCAnc3BlY2stcHJvY2VzcykKKHB1dCAnc3BlY2stcHJvY2Vz cyAncGVybWFuZW50LWxvY2FsIHQpCgooZGVmdmFyIHNwZWNrLXByb2Nlc3MtbWFya2VyIG5p bAogICJUaGlzIGJ1ZmZlcidzIFNwZWNrIHByb2Nlc3MgbWFya2VyLiIpCihtYWtlLXZhcmlh YmxlLWJ1ZmZlci1sb2NhbCAnc3BlY2stcHJvY2Vzcy1tYXJrZXIpCihwdXQgJ3NwZWNrLXBy b2Nlc3MtbWFya2VyICdwZXJtYW5lbnQtbG9jYWwgdCkKCihkZWZ2YXIgc3BlY2stYnVmZmVy LWRpY3Rpb25hcmllcyBuaWwKICAiVGhpcyBidWZmZXIncyBTcGVjayBkaWN0aW9uYXJpZXMu IikKKG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdzcGVjay1idWZmZXItZGljdGlvbmFy aWVzKQoocHV0ICdzcGVjay1idWZmZXItZGljdGlvbmFyaWVzICdwZXJtYW5lbnQtbG9jYWwg dCkKCihkZWZ2YXIgc3BlY2stYnVmZmVyLWRpY3Rpb25hcmllcy1zdHJpbmcgIiIKICAiU3Ry aW5nIHNwZWNpZnlpbmcgdGhpcyBidWZmZXIncyBTcGVjayBkaWN0aW9uYXJpZXMuIikKKG1h a2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdzcGVjay1idWZmZXItZGljdGlvbmFyaWVzLXN0 cmluZykKKHB1dCAnc3BlY2stYnVmZmVyLWRpY3Rpb25hcmllcy1zdHJpbmcgJ3Blcm1hbmVu dC1sb2NhbCB0KQoKKGRlZnZhciBzcGVjay1idWZmZXItb3B0aW9ucyBuaWwKICAiVGhpcyBi dWZmZXIncyBsaXN0IG9mIFNwZWNrIG9wdGlvbnMuClRoaXMgaXMgdGhlIGxpc3Qgb2Ygb3B0 aW9ucyBwYXNzZWQgdG8gdGhlIHNwZWxsIGVuZ2luZS4iKQoobWFrZS12YXJpYWJsZS1idWZm ZXItbG9jYWwgJ3NwZWNrLWJ1ZmZlci1vcHRpb25zKQoocHV0ICdzcGVjay1idWZmZXItb3B0 aW9ucyAncGVybWFuZW50LWxvY2FsIHQpCgooZGVmdmFyIHNwZWNrLWlnbm9yZS1saXN0IG5p bAogICJMaXN0IG9mIHdvcmRzIGlnbm9yZWQgaW4gdGhpcyBidWZmZXIuIikKKG1ha2UtdmFy aWFibGUtYnVmZmVyLWxvY2FsICdzcGVjay1pZ25vcmUtbGlzdCkKKHB1dCAnc3BlY2staWdu b3JlLWxpc3QgJ3Blcm1hbmVudC1sb2NhbCB0KQoKKGRlZnZhciBzcGVjay1sb2cgbmlsCiAg Ik5vbi1uaWwgd2hlbiBTcGVjayBsb2dnaW5nIGlzIHR1cm5lZCBvbiIpCgooZGVmdmFyIHNw ZWNrLWxvZy1idWZmZXIgbmlsKQoKKGRlZnVuIHNwZWNrLWxvZy1idWZmZXIgKCkKICAiUmV0 dXJuIGJ1ZmZlciBmb3IgU3BlY2sgbG9ncy4iCiAgKGlmIChidWZmZXItbGl2ZS1wIHNwZWNr LWxvZy1idWZmZXIpCiAgICAgIHNwZWNrLWxvZy1idWZmZXIKICAgIChnZXQtYnVmZmVyLWNy ZWF0ZSAiKnNwZWNrLWxvZyoiKSkpCgo7OyBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo7OyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXwo7OzsJCQkgICAgICAgQ3VzdG9taXphdGlvbiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXwo7OyBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXwoKKGRlZmdyb3VwIHNwZWNrIG5pbAog ICJBbm90aGVyIGludGVyZmFjZSB0byBIdW5zcGVsbC4iCiAgOnZlcnNpb24gIjI4LjEiCiAg Omdyb3VwICdhcHBsaWNhdGlvbnMpCgooZGVmY3VzdG9tIHNwZWNrLWRlbGF5IDAuNQogICJU aW1lIGluIHNlY29uZHMgdG8gd2FpdCBiZWZvcmUgc3BlY2tpbmcuClN0YXJ0IHNwZWNraW5n IGFmdGVyIEVtYWNzIGhhcyBiZWVuIGlkbGUgZm9yIHRoYXQgbWFueSBzZWNvbmRzLiIKICA6 dHlwZSAnbnVtYmVyCiAgOmdyb3VwICdzcGVjaykKCihkZWZjdXN0b20gc3BlY2stcGF1c2Ug MC4xCiAgIlRpbWUgaW4gc2Vjb25kcyB0byBwYXVzZSBzcGVja2luZy4KR2l2ZSBvdGhlciB0 aW1lcnMgYSBjaGFuY2UgdG8gcnVuIHdoaWxlIHNwZWNraW5nLiIKICA6dHlwZSAnbnVtYmVy CiAgOmdyb3VwICdzcGVjaykKCihkZWZjdXN0b20gc3BlY2stY2h1bmstbWF4IDQwOTYKICAi TWF4aW11bSBzaXplIG9mIGNodW5rcyBzZW5kIHRvIHNwZWxsaW5nIGVuZ2luZSwgaW4gYnl0 ZXMuClRoaXMgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyBTcGVjayBt YXkgc2VuZCB0byB0aGUKc3BlbGxpbmcgZW5naW5lIGluIG9uZSBzdGVwLiAgSXQgc2hvdWxk IG5vdCBleGNlZWQgdGhlIGRlZmF1bHQKYnVmZmVyIHNpemUgb2YgdGhlIHVuZGVybHlpbmcg b3BlcmF0aW5nIHN5c3RlbSBmb3Igc2VuZGluZyBkYXRhCm92ZXIgYSBwaXBlIGNvbm5lY3Rp b24uIgogIDp0eXBlICdudW1iZXIKICA6Z3JvdXAgJ3NwZWNrKQoKKGRlZmN1c3RvbSBzcGVj ay1yZXBsYWNlLXF1ZXJ5IG5pbAogICJXaGVuIG5vbi1uaWwgcXVlcnkgZm9yIGZ1cnRoZXIg b2NjdXJyZW5jZXMgYWZ0ZXIgY29ycmVjdGluZyBhIHdvcmQuClRoZSBjb21tYW5kcyB0byBj b3JyZWN0IGEgd29yZCBhcmUgYHNwZWNrLXBvcHVwLW1lbnUtcHJldmlvdXMnLApgc3BlY2st cG9wdXAtbWVudS1uZXh0JywgYHNwZWNrLXJlcGxhY2UtcHJldmlvdXMnIGFuZApgc3BlY2st cmVwbGFjZS1uZXh0Jy4iCiAgOnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAgJ3NwZWNrKQoKKGRl ZmN1c3RvbSBzcGVjay1yZXBsYWNlLXByZXNlcnZlLXBvaW50ICd3aXRoaW4KICAiV2hlcmUg dG8gbW92ZSBjdXJzb3Igd2l0aGluIHJlcGxhY2VkIHRleHQuCk9wdGlvbnMgYXJlOgogYmVm b3JlIC4uLiBiZWZvcmUgcmVwbGFjZWQgdGV4dAogd2l0aGluIC4uLiBhdCBzYW1lIG9mZnNl dCBmcm9tIGJlZ2luIG9mIG9yIGFmdGVyIHJlcGxhY2VkIHRleHQKIGFmdGVyIC4uLi4gYWZ0 ZXIgcmVwbGFjZWQgdGV4dCIKICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiQmVmb3Jl IiBiZWZvcmUpCgkJIChjb25zdCA6dGFnICJXaXRoaW4iIHdpdGhpbikKCQkgKGNvbnN0IDp0 YWcgIkFmdGVyIiBhZnRlcikpCiAgOmdyb3VwICdzcGVjaykKCjs7IChkZWZjdXN0b20gc3Bl Y2stc3ludGFjdGljIG5pbAo7OyAgICJOb24tbmlsIG1lYW5zIGhpZ2hsaWdodCBtaXNzcGVs bGVkIHdvcmRzIGluIGNvbW1lbnRzIG9yIHN0cmluZ3Mgb25seS4KOzsgT3B0aW9ucyBhcmUg dG8gaGlnaGxpZ2h0IHRleHQgYW55d2hlcmUgaW4gdGhlIGJ1ZmZlciwgdGV4dCBpbgo7OyBj b21tZW50cyBvbmx5LCB0ZXh0IGluIHN0cmluZ3Mgb25seSwgb3IgdGV4dCBpbiBjb21tZW50 cyBvcgo7OyBzdHJpbmdzLgoKOzsgVGhlIHByZWZlcnJlZCB3YXkgdG8gc2V0IHRoaXMgb3B0 aW9uIGlzIGJ5IGFkZGluZwoKOzsgICAgIChzZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ3Nw ZWNrLXN5bnRhY3RpYykgdCkKCjs7IHRvIGEgbWFqb3IgbW9kZSdzIGhvb2suIgo7OyAgIDp0 eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJBbnkiIG5pbCkKOzsgCQkgKGNvbnN0IDp0YWcg IkNvbW1lbnRzIiAnY29tbWVudHMpCjs7IAkJIChjb25zdCA6dGFnICJTdHJpbmdzIiAnc3Ry aW5ncykKOzsgCQkgKGNvbnN0IDp0YWcgIkNvbW1lbnRzIG9yIFN0cmluZ3MiIHQpKQo7OyAg IDpncm91cCAnc3BlY2spCgooZGVmY3VzdG9tIHNwZWNrLWh1bnNwZWxsLXByb2dyYW0KICAo bG9jYXRlLWZpbGUgImh1bnNwZWxsIiBleGVjLXBhdGggZXhlYy1zdWZmaXhlcyAnZmlsZS1l eGVjdXRhYmxlLXApCiAgIkZpbGUgbmFtZSBvZiBIdW5zcGVsbCBwcm9ncmFtLiIKICA6dHlw ZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiSW52YWxpZCIgbmlsKSAoZmlsZSA6dGFnICJGaWxl IikpCiAgOmdyb3VwICdzcGVjaykKCihkZWZ1biBzcGVjay1odW5zcGVsbC1leGVjdXRhYmxl LXAgKCkKICAiUmV0dXJuIG5vbi1uaWwgd2hlbiBgc3BlY2staHVuc3BlbGwtcHJvZ3JhbScg YXBwZWFycyBleGVjdXRhYmxlLiIKICAoYW5kIChzdHJpbmdwIHNwZWNrLWh1bnNwZWxsLXBy b2dyYW0pCiAgICAgICAoZmlsZS1leGVjdXRhYmxlLXAgc3BlY2staHVuc3BlbGwtcHJvZ3Jh bSkpKQoKKGRlZmN1c3RvbSBzcGVjay1odW5zcGVsbC1saWJyYXJ5LWRpcmVjdG9yeSAiL3Vz ci9zaGFyZS9odW5zcGVsbC8iCiAgIk5hbWUgb2YgSHVuc3BlbGwgbGlicmFyeSBkaXJlY3Rv cnkuClRoaXMgc2hvdWxkIHNwZWNpZnkgdGhlIGFic29sdXRlIG5hbWUgb2YgdGhlIGRpcmVj dG9yeSB3aGVyZSB0aGUKSHVuc3BlbGwgZGljdGlvbmFyaWVzIHJlc2lkZS4iCiAgOnR5cGUg JyhjaG9pY2UgKGNvbnN0IDp0YWcgIkludmFsaWQiIG5pbCkKCQkgKGZpbGUgOnRhZyAiRmls ZSIpKQogIDpncm91cCAnc3BlY2spCgo7OyBUaGUgZm9sbG93aW5nIGlzIG1vcmUgdXNlZnVs IHRoYW4gcnVubmluZyBIdW5zcGVsbCB3aXRoIHRoZSAiLUQiCjs7IG9wdGlvbiB3aGljaCBt YXkgYWxzbyByZXR1cm4gYWxsIHNvcnRzIG9mIG15c3BlbGwgZGljdGlvbmFyaWVzLgooZGVm dW4gc3BlY2staHVuc3BlbGwtZGljdGlvbmFyaWVzICgpCiAgIlJldHVybiBsaXN0IG9mIEh1 bnNwZWxsIGRpY3Rpb25hcmllcyBpbnN0YWxsZWQgb24gdGhpcyBtYWNoaW5lLgpUaGlzIHJl dHVybnMgdGhlIHJlbGF0aXZlIGZpbGUgbmFtZXMgc2FucyBleHRlbnNpb24gb2YgYWxsIGZp bGVzCndpdGggZXh0ZW5zaW9uIFwiLmRpY1wiIGluICdzcGVjay1odW5zcGVsbC1saWJyYXJ5 LWRpcmVjdG9yeScuIgogICh3aGVuIChhbmQgc3BlY2staHVuc3BlbGwtbGlicmFyeS1kaXJl Y3RvcnkKCSAgICAgKGZpbGUtZXhpc3RzLXAgc3BlY2staHVuc3BlbGwtbGlicmFyeS1kaXJl Y3RvcnkpKQogICAgKGxldCAoKGZpbGVzIChkaXJlY3RvcnktZmlsZXMKCQkgIHNwZWNrLWh1 bnNwZWxsLWxpYnJhcnktZGlyZWN0b3J5IG5pbCAiXFwuZGljJCIpKQoJICBkaWN0aW9uYXJp ZXMpCiAgICAgIChkb2xpc3QgKGZpbGUgZmlsZXMpCgkoc2V0cSBkaWN0aW9uYXJpZXMKCSAg ICAgIChjb25zIChmaWxlLW5hbWUtc2Fucy1leHRlbnNpb24gZmlsZSkgZGljdGlvbmFyaWVz KSkpCiAgICAgIChzb3J0IGRpY3Rpb25hcmllcyAnc3RyaW5nLWxlc3NwKSkpKQoKKGRlZnZh ciBzcGVjay1odW5zcGVsbC1kaWN0aW9uYXJpZXMgKHNwZWNrLWh1bnNwZWxsLWRpY3Rpb25h cmllcykKICAiTGlzdCBvZiBIdW5zcGVsbCBkaWN0aW9uYXJpZXMgaW5zdGFsbGVkIG9uIHRo aXMgbWFjaGluZS4KSWYgeW91IGNoYW5nZSB0aGVtLCB5b3UgaGF2ZSB0byByZWxvYWQgc3Bl Y2suZWwgdG8gbWFrZSBzcGVjawphd2FyZSBvZiB0aGUgY2hhbmdlLiIpCgooZGVmdW4gc3Bl Y2staHVuc3BlbGwtYmFzZS1kaWN0aW9uYXJpZXMgKCkKICAiUmV0dXJuIGxpc3Qgb2YgSHVu c3BlbGwgYmFzZSBkaWN0aW9uYXJpZXMgaW5zdGFsbGVkIG9uIHRoaXMgbWFjaGluZS4KVGhp cyByZXR1cm5zIHRoZSByZWxhdGl2ZSBmaWxlIG5hbWVzIHNhbnMgZXh0ZW5zaW9uIG9mIGFs bCBmaWxlcwp3aXRoIGV4dGVuc2lvbiBcIi5hZmZcIiBpbiAnc3BlY2staHVuc3BlbGwtbGli cmFyeS1kaXJlY3RvcnknLiIKICAod2hlbiAoYW5kIHNwZWNrLWh1bnNwZWxsLWxpYnJhcnkt ZGlyZWN0b3J5CgkgICAgIChmaWxlLWV4aXN0cy1wIHNwZWNrLWh1bnNwZWxsLWxpYnJhcnkt ZGlyZWN0b3J5KSkKICAgIChsZXQgKChmaWxlcyAoZGlyZWN0b3J5LWZpbGVzCgkJICBzcGVj ay1odW5zcGVsbC1saWJyYXJ5LWRpcmVjdG9yeSBuaWwgIlxcLmFmZiQiKSkKCSAgZGljdGlv bmFyaWVzKQogICAgICAoZG9saXN0IChmaWxlIGZpbGVzKQoJKHNldHEgZGljdGlvbmFyaWVz CgkgICAgICAoY29ucyAoZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9uIGZpbGUpIGRpY3Rpb25h cmllcykpKQogICAgICAoc29ydCBkaWN0aW9uYXJpZXMgJ3N0cmluZy1sZXNzcCkpKSkKCihk ZWZ2YXIgc3BlY2staHVuc3BlbGwtYmFzZS1kaWN0aW9uYXJpZXMgKHNwZWNrLWh1bnNwZWxs LWJhc2UtZGljdGlvbmFyaWVzKQogICJMaXN0IG9mIEh1bnNwZWxsIGJhc2UgZGljdGlvbmFy aWVzIGluc3RhbGxlZCBvbiB0aGlzIG1hY2hpbmUuCkEgSHVuc3BlbGwgYmFzZSBkaWN0aW9u YXJ5IGlzIG9uZSBmb3Igd2hpY2ggYW4gYWZmaXggKC5hZmYpIGZpbGUKZXhpc3RzIGluIGBz cGVjay1odW5zcGVsbC1saWJyYXJ5LWRpcmVjdG9yeScuCgpJZiB5b3UgY2hhbmdlIHRoZW0s IHlvdSBoYXZlIHRvIHJlbG9hZCBzcGVjay5lbCB0byBtYWtlIHNwZWNrCmF3YXJlIG9mIHRo ZSBjaGFuZ2UuIikKCjs7IE1heWJlIHdlIHNob3VsZCBjaGVjayByaWdodCBoZXJlIGZvciBV VEYtOCBhd2FyZW5lc3MgdG9vIC4uLgooZGVmdW4gc3BlY2staHVuc3BlbGwtZGVmYXVsdC1k aWN0aW9uYXJ5ICgpCiAgKGxldCAoKGxhbmcgKGdldGVudiAiTEFORyIpKQoJZGljdGlvbmFy eSkKICAgICh3aGVuIChzdHJpbmctbWF0Y2ggIl5cXCguKlxcKVxcLiIgbGFuZykKICAgICAg KHNldHEgZGljdGlvbmFyeSAobWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMSBsYW5nKSkK ICAgICAgKGNhciAobWVtYmVyIGRpY3Rpb25hcnkgc3BlY2staHVuc3BlbGwtYmFzZS1kaWN0 aW9uYXJpZXMpKSkpKQoKKGRlZnZhciBzcGVjay1odW5zcGVsbC1kZWZhdWx0LWRpY3Rpb25h cnkgKHNwZWNrLWh1bnNwZWxsLWRlZmF1bHQtZGljdGlvbmFyeSkKICAiRGVmYXVsdCBkaWN0 aW9uYXJ5IHVzZWQgYnkgSHVuc3BlbGwgb24gdGhpcyBtYWNoaW5lLiIpCgooZGVmdmFyIHNw ZWNrLWRpY3Rpb25hcmllcyBzcGVjay1odW5zcGVsbC1kaWN0aW9uYXJpZXMKICAiTGlzdCBv ZiBkaWN0aW9uYXJpZXMgaW5zdGFsbGVkIG9uIHRoaXMgbWFjaGluZS4iKQoKKGRlZnZhciBz cGVjay1iYXNlLWRpY3Rpb25hcmllcyBzcGVjay1odW5zcGVsbC1iYXNlLWRpY3Rpb25hcmll cwogICJMaXN0IG9mIGJhc2UgZGljdGlvbmFyaWVzIGluc3RhbGxlZCBvbiB0aGlzIG1hY2hp bmUuIikKCihkZWZ2YXIgc3BlY2stZGljdGlvbmFyaWVzLWhpc3RvcnkgbmlsCiAgIkhpc3Rv cnkgb2YgZGljdGlvbmFyaWVzIGVudGVyZWQgZm9yIGBzcGVjay1idWZmZXInLiIpCgo7OyBU aGUgcmFkaW8gYnV0dG9uIHNvbHV0aW9uIGlzIG5vdCBvdmVybHkgYXR0cmFjdGl2ZSBidXQg YSBzaW1wbGUgd2F5Cjs7IHRvIHNob3cgYWxsIGluc3RhbGxlZCBkaWN0aW9uYXJpZXMgdG8g dGhlIGN1c3RvbWl6ZXIuCihkZWZjdXN0b20gc3BlY2stZGVmYXVsdC1kaWN0aW9uYXJ5IHNw ZWNrLWh1bnNwZWxsLWRlZmF1bHQtZGljdGlvbmFyeQogICJTcGVjaydzIGRlZmF1bHQgZGlj dGlvbmFyeS4KVGhlIGRlZmF1bHQgZGljdGlvbmFyeSBpcyB1c2VkIGZvciBzcGVja2luZyBh IGJ1ZmZlciB1bmxlc3MgeW91CnNwZWNpZnkgb3RoZXIgZGljdGlvbmFyaWVzIHZpYSBgc3Bl Y2stZGljdGlvbmFyaWVzLWFsaXN0JyBvcgpgc3BlY2stYnVmZmVyJy4iCiAgOnR5cGUgYChy YWRpbwoJICA6aW5kZW50IDIKCSAgLEAobWFwY2FyCgkgICAgIChsYW1iZGEgKGVudHJ5KQoJ ICAgICAgIChsaXN0ICdjb25zdCA6Zm9ybWF0ICIldiBcbiIgZW50cnkpKQoJICAgICBzcGVj ay1kaWN0aW9uYXJpZXMpKQogIDpncm91cCAnc3BlY2spCgooZGVmY3VzdG9tIHNwZWNrLWRp Y3Rpb25hcmllcy1hbGlzdCBgKCgwICxzcGVjay1kZWZhdWx0LWRpY3Rpb25hcnkpKQogICJM aXN0IGFzc29jaWF0aW5nIGludGVnZXJzIHdpdGggb25lIG9yIG1vcmUgZGljdGlvbmFyaWVz LgpUaGlzIGlzIHRoZSBiYXNpYyBmYWNpbGl0eSB0byBzcGVjaWZ5aW5nIHdoaWNoIGRpY3Rp b25hcnkgdG8gdXNlCndoZW4gc3BlY2tpbmcgYSBidWZmZXIuICBTcGVjayBjb25zdWx0cyB0 aGUgYXNzb2NpYXRpb25zCnNwZWNpZmllZCBoZXJlIHdoZW4gZGV0ZXJtaW5pbmcgd2hpY2gg ZGljdGlvbmFyaWVzIHRvIHVzZSBmb3IKc3BlY2tpbmcgYSBidWZmZXIuCgpUaGUgbWVtYmVy cyBvZiB0aGlzIGxpc3QgYXJlIGxpc3RzIG9mIHRocmVlIGVsZW1lbnRzLgoKVGhlIGZpcnN0 IGVsZW1lbnQgc2hvdWxkIGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgd2hpY2ggY2FuIGJl CnVzZWQgYXMgbnVtZXJpYyBwcmVmaXggYXJndW1lbnQgZm9yIGBzcGVjay1idWZmZXInIHRl bGxpbmcgdGhlCmxhdHRlciB0byB1c2UgdGhlIGRpY3Rpb25hcmllcyBzcGVjaWZpZWQgYnkg dGhlIHJlbWFpbmRlciBvZiB0aGUKZWxlbWVudCBmb3Igc3BlY2tpbmcgdGhlIGN1cnJlbnQg YnVmZmVyLgoKVGhlIHNlY29uZCBlbGVtZW50IHNwZWNpZmllcyB0aGUgXCJiYXNlXCIgZGlj dGlvbmFyeSBmb3Igc3BlY2tpbmcKYSBidWZmZXIgd2hlbiB0aGlzIGFzc29jaWF0aW9uIGlz IHVzZWQuICBJdCBtdXN0IGJlIGEgbWVtYmVyIG9mCmBzcGVjay1iYXNlLWRpY3Rpb25hcmll cycuCgpUaGUgdGhpcmQgZWxlbWVudCBzcGVjaWZpZXMgYWRkaXRpb25hbCBkaWN0aW9uYXJp ZXMgdGhhdCBhcmUKY29uc3VsdGVkIHdoZW4gdGhpcyBhc3NvY2lhdGlvbiBpcyB1c2VkLiAg VGhleSBtdXN0IGJlIG1lbWJlcnMgb2YKYHNwZWNrLWRpY3Rpb25hcmllcycuICBJZiBubyBh ZGRpdGlvbmFsIGRpY3Rpb25hcmllcyBhcmUKc3BlY2lmaWVkIGhlcmUsIG9ubHkgdGhlIGJh c2UgZGljdGlvbmFyeSBpcyB1c2VkIGZvciBzcGVja2luZy4KCkRvIG5vdCByZW1vdmUgdGhl IGFzc29jaWF0aW9uIGZvciAwICh6ZXJvKS4gIEl0IGlzIHRoZSBkZWZhdWx0CmFzc29jaWF0 aW9uIGFuZCB3aGVuIGl0IGlzIG1pc3NpbmcsIGludm9raW5nIGBzcGVjay1tb2RlJyAob3IK YHNwZWNrLWJ1ZmZlcicgd2l0aG91dCBhIHByZWZpeCBhcmd1bWVudCkgd2lsbCBicmVhay4g IFlvdSBjYW4sCmhvd2V2ZXIsIGNoYW5nZSB0aGUgZGljdGlvbmFyaWVzIHNwZWNpZmllZCBi eSB0aGlzIGFzc29jaWF0aW9uLgoKRG8gbm90IHNldCB1cCBhbiBhc3NvY2lhdGlvbiBmb3Ig bmVnYXRpdmUgdmFsdWVzIGhlcmUgc2luY2UgdGhlc2UKYXJlIG5vdCBoYW5kbGVkIGNvcnJl Y3RseS4iCiAgOnR5cGUgYChyZXBlYXQKCSAgKGxpc3QgOmZvcm1hdCAiJXZcbiIKCQkoaW50 ZWdlciA6Zm9ybWF0ICIldiIpCgkJKGNob2ljZQoJCSAsQChtYXBjYXIKCQkgICAgKGxhbWJk YSAoZW50cnkpCgkJICAgICAgKGxpc3QgJ2NvbnN0IDpmb3JtYXQgIiV2IFxuIiBlbnRyeSkp CgkJICAgIHNwZWNrLWJhc2UtZGljdGlvbmFyaWVzKSkKCQkocmVwZWF0CgkJIChjaG9pY2UK CQkgICxAKG1hcGNhcgoJCSAgICAgKGxhbWJkYSAoZW50cnkpCgkJICAgICAgIChsaXN0ICdj b25zdCA6Zm9ybWF0ICIldiBcbiIgZW50cnkpKQoJCSAgICAgc3BlY2stZGljdGlvbmFyaWVz KSkpCgkJKGNob2ljZQoJCSAoY29uc3QgOnRhZyAiTm9uZSIgbmlsKQoJCSAoc3RyaW5nIDp0 YWcgIlN0cmluZyIpKSkpCiAgOmdyb3VwICdzcGVjaykKCihkZWZ2YXIgc3BlY2std29yZGNo YXJzLXJlZ2V4cCBuaWwKICAiVGhlIHdvcmRjaGFycyBvZiBhIHNwZWNrIHByb2Nlc3MgYnVm ZmVyLiIpCihtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnc3BlY2std29yZGNoYXJzLXJl Z2V4cCkKKHB1dCAnc3BlY2std29yZGNoYXJzLXJlZ2V4cCAncGVybWFuZW50LWxvY2FsIHQp CgooZGVmdmFyIHNwZWNrLXdvcmRjaGFycy1mdW5jdGlvbiBuaWwKICAiSWYgbm9uLW5pbCwg ZnVuY3Rpb24gdXNlZCBpbnN0ZWFkIG9mIGBzcGVjay13b3JkY2hhcnMtZnVuY3Rpb24nLiIp CihtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnc3BlY2std29yZGNoYXJzLWZ1bmN0aW9u KQoocHV0ICdzcGVjay13b3JkY2hhcnMtZnVuY3Rpb24gJ3Blcm1hbmVudC1sb2NhbCB0KQoK KGRlZmN1c3RvbSBzcGVjay13b3JkY2hhcnMtYWxpc3QgbmlsCiAgIkFsaXN0IGFzc29jaWF0 aW5nIGRpY3Rpb25hcnkgc3RyaW5ncyB3aXRoIHdvcmQgY2hhcmFjdGVycy4KRWFjaCBlbnRy eSBvZiB0aGlzIGFsaXN0IGNvbnRhaW5zIGEgbGlzdCBvZiB0aHJlZSBlbGVtZW50czoKCi0g YSBkaWN0aW9uYXJ5IHN0cmluZwoKLSBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzCgotIGEgZnVu Y3Rpb24gb3IgbmlsLgoKQSBkaWN0aW9uYXJ5IHN0cmluZyBpcyBvYnRhaW5lZCBieSBjb25j YXRlbmF0aW5nIGFsbCBkaWN0aW9uYXJpZXMKc3BlY2lmaWVkIGZvciBhIGJ1ZmZlciB1c2lu ZyBhIGNvbW1hIHdpdGhvdXQgc3BhY2VzIGFzIHNlcGFyYXRvci4KSWYgYHNwZWNrLWxpZ2h0 ZXInIGlzIHVzZWQsIFNwZWNrIGJ5IGRlZmF1bHQgZGlzcGxheXMgYSBidWZmZXIncwpkaWN0 aW9uYXJ5IHN0cmluZyBpbiB0aGUgYnVmZmVyJ3MgbW9kZSBsaW5lLiAgU2VlIHRoZSBleGFt cGxlCmJlbG93IGZvciBzb21lIHZhbGlkIGRpY3Rpb25hcnkgc3RyaW5ncy4KCldoZW4gc2V0 dGluZyB1cCBhIGNodW5rIHRvIHNlbmQgdG8gdGhlIHNwZWxsIGVuZ2luZSwgU3BlY2sgc2Nh bnMKdGhhdCBjaHVuayBwcm92aWRlZCB0aGUgZGljdGlvbmFyeSBzdHJpbmcgc3BlY2lmaWVk IGJ5IHRoZSBmaXJzdAplbGVtZW50IG9mIHRoaXMgYWxpc3QgZXF1YWxzIHRoZSBkaWN0aW9u YXJ5IHN0cmluZyBvZiB0aGUgY2h1bmsncwpidWZmZXIuICBUaGF0IHNjYW4gcmVwbGFjZXMg d2l0aGluIHRoYXQgY2h1bmsgYW55IG9jY3VycmVuY2VzIG9mCmEgY2hhcmFjdGVyIHNwZWNp ZmllZCBieSB0aGUgc2Vjb25kIGVsZW1lbnQgb2YgdGhpcyBhbGlzdCBub3QKZW5jbG9zZWQg YnkgdHdvIGNoYXJhY3RlcnMgb2Ygd29yZCBzeW50YXguCgpUaGUgZGVmYXVsdCBmdW5jdGlv biB0byBkbyB0aGF0IGlzIGBzcGVjay13b3JkY2hhcnMnIHdoaWNoIGdldHMKY2FsbGVkIGlm IHRoZSB0aGlyZCBlbGVtZW50IG9mIHRoaXMgYWxpc3QgaXMgbmlsIGFuZCBzdWJzdGl0dXRl cwphIHNwYWNlIGNoYXJhY3RlciBmb3IgYW55IHN1Y2ggb2NjdXJyZW5jZSBmb3VuZC4KCklm IHRoZSB0aGlyZCBlbGVtZW50IGlzIGEgZnVuY3Rpb24sIHRoYXQgZnVuY3Rpb24gaXMgY2Fs bGVkIHdpdGgKbm8gYXJndW1lbnRzIGFuZCBwb2ludCBpbW1lZGlhdGVseSBhZnRlciB0aGUg b2NjdXJyZW5jZSBvZiBzdWNoIGEKY2hhcmFjdGVyLiAgSXQgaXMgdXAgdG8gdGhhdCBmdW5j dGlvbiB0byByZXBsYWNlIHRoYXQgY2hhcmFjdGVyCndpdGggZXhhY3RseSBvbmUgb3RoZXIg Y2hhcmFjdGVyICh3aGljaCBtdXN0IG5vdCBiZSB0aGUgbmV3bGluZQpjaGFyYWN0ZXIpIG9y IGxlYXZlIHRoYXQgY2hhcmFjdGVyIGFsb25lLiAgT3RoZXIgYnVmZmVyCm1vZGlmaWNhdGlv bnMgbWF5IGluZXZpdGFibHkgYnJlYWsgc3BlY2tpbmcuICBOb3RlIHRoYXQgYW55IHN1Y2gK c3Vic3RpdHV0aW9ucyBhcmUgb25seSBkb25lIG9uIGEgc2hhZG93IGNvcHkgb2YgdGhlIGJ1 ZmZlciB0ZXh0Owp0aGUgb3JpZ2luYWwgYnVmZmVyIGlzIG5vdCBhZmZlY3RlZCBieSB0aGlz IG9wZXJhdGlvbi4KClJlbW92aW5nIHN1Y2ggY2hhcmFjdGVycyBpcyBuZWNlc3NhcnkgaWYg dGhlIFdPUkRDSEFSUyBlbnRyeSBvZiBhCkh1bnNwZWxsIGRpY3Rpb25hcnkgc3BlY2lmaWVz IGEgY2hhcmFjdGVyIHRoYXQgaXMgYWxzbyB1c2VkIGluIGEKYnVmZmVyIGF0IHRoZSBiZWdp bm5pbmcgb3IgZW5kIG9mIGEgd29yZC4gIEZvciBleGFtcGxlLCB3aGVuIHlvdQpzZWUgcHJv YmxlbXMgd2hlbiB1c2luZyB0aGUgYXBvc3Ryb3BoZSBcIidcIiB3aXRoIHRoZSBcImVuX1VT XCIKZGljdGlvbmFyeSB5b3UgbWF5IHdhbnQgdG8gdHJ5IHRoZSBmb2xsb3dpbmcgY3VyZToK Ci0gTWFrZSBzdXJlIHRoYXQgXCInXCIgaXMgc3BlY2lmaWVkIGJ5IHRoZSBXT1JEQ0hBUlMg ZW50cnkgb2YKICBlbl9VUy5hZmYuICBPdGhlcndpc2UsIEh1bnNwZWxsIG1heSBwaXRpbGVz cyBtYXJrIFwiZG9lc1wiIGluCiAgXCJkb2Vzbid0XCIgYXMgbWlzc3BlbGxlZC4KCi0gTWFr ZSBzdXJlIHRoYXQgYW4gZW50cnkgZm9yIGVuX1VTIGFuZCBcIidcIiBpcyBpbmNsdWRlZCBp biB0aGlzCiAgYWxpc3QuICBPdGhlcndpc2UsIEh1bnNwZWxsIHdpbGwgbWFyayBcIidkb2Vz J1wiIGFzIG1pc3NwZWxsZWQuCgpBbiBleGFtcGxlIGZvciBjdXN0b21pemluZyB0aGlzIG9w dGlvbiBpbiB5b3VyIGluaXQgZmlsZSBpcwoKKGN1c3RvbWl6ZS1zZXQtdmFyaWFibGUKIFxc PSdzcGVjay13b3JkY2hhcnMtYWxpc3QKIFxcPScoKFwiZW5fVVNcIiBcIlxcPSdcXD3CtFxc PWBcIiBuaWwpCiAgIChcImZyX0ZSXCIgXCJcXD3igJlcXD0nXCIgbmlsKQogICAoXCJlbl9V Uyxmcl9GUlwiIFwiXFw9J1xcPcK0XFw9YFxcPeKAmVxcPSdcIiBuaWwpKSkKCndoaWNoIGlu Y2x1ZGVzIHRoZSBhcG9zdHJvcGhlcyB0eXBpY2FsbHkgdXNlZCBpbiB0aGUgc3BlY2lmaWVk Cmxhbmd1YWdlcy4iCiAgOnR5cGUgJyhyZXBlYXQKCSAgKGxpc3QKCSAgIChzdHJpbmcgOnRh ZyAiRGljdGlvbmFyeSBTdHJpbmciKQoJICAgKHN0cmluZyA6dGFnICJDaGFyYWN0ZXJzIikK ICAgICAgICAgICAoY2hvaWNlCgkgICAgKGNvbnN0IDp0YWcgIlVzZSBTcGVjaydzIGludGVy bmFsIHdvcmRjaGFycyBmdW5jdGlvbiIgbmlsKQoJICAgIChmdW5jdGlvbiA6dGFnICJVc2Vy LWRlZmluZWQgZnVuY3Rpb24iKSkpKQogIDpncm91cCAnc3BlY2spCgooZGVmY3VzdG9tIHNw ZWNrLWxpZ2h0ZXIgdAogICJXaGVuIG5vbi1uaWwgZGlzcGxheSBhIHN0cmluZyBpbiB0aGUg bW9kZS1saW5lIHdoZW4gc3BlY2tpbmcuCkNvbXBhcmUgYHNwZWNrLW1vZGUtbGluZS1zcGVj a2luZycgYW5kIGBzcGVjay1tb2RlLWxpbmUtc3BlY2tlZCcuIgogIDp0eXBlICdib29sZWFu CiAgOmdyb3VwICdzcGVjaykKCihkZWZjdXN0b20gc3BlY2stbW9kZS1saW5lLXNwZWNraW5n IHQKICAiU3RyaW5nIGRpc3BsYXllZCBpbiBtb2RlLWxpbmUgd2hpbGUgc3BlY2tpbmcgd2lu ZG93LgpTaG91bGQgY29udGFpbiBhIGxlYWRpbmcgc3BhY2UuICBTZWxlY3RpbmcgXCJkaWN0 aW9uYXJ5XCIgXCh0KQpoZXJlIG1lYW5zIHRvIGRpc3BsYXkgdGhpcyBidWZmZXIncyBkaWN0 aW9uYXJpZXMuIgogIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJEaWN0aW9uYXJ5IiB0 KSBzdHJpbmcpCiAgOmdyb3VwICdzcGVjaykKCihkZWZjdXN0b20gc3BlY2stbW9kZS1saW5l LXNwZWNrZWQgdAogICJTdHJpbmcgZGlzcGxheWVkIGluIG1vZGUtbGluZSBhZnRlciB3aW5k b3cgaGFzIGJlZW4gc3BlY2tlZC4KU2hvdWxkIGNvbnRhaW4gYSBsZWFkaW5nIHNwYWNlLiAg U2VsZWN0aW5nIFwiZGljdGlvbmFyeVwiICh0KQpoZXJlIG1lYW5zIHRvIGRpc3BsYXkgdGhp cyBidWZmZXIncyBkaWN0aW9uYXJpZXMuIgogIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFn ICJEaWN0aW9uYXJ5IiB0KSBzdHJpbmcpCiAgOmdyb3VwICdzcGVjaykKCihkZWZmYWNlIHNw ZWNrLWd1ZXNzCiAgJygoKChjbGFzcyBjb2xvcikpIDp1bmRlcmxpbmUgKDpzdHlsZSB3YXZl IDpjb2xvciAicmVkIikpCiAgICAodCA6dW5kZXJsaW5lIHQpKQogICJGYWNlIGZvciBoaWdo bGlnaHRpbmcgbWlzc3BlbGxlZCB3b3JkcyB3aXRoIGd1ZXNzZXMuIgogIDpncm91cCAnc3Bl Y2spCgooZGVmZmFjZSBzcGVjay1taXNzCiAgJygoKChjbGFzcyBjb2xvcikpIDp1bmRlcmxp bmUgKDpzdHlsZSB3YXZlIDpjb2xvciAib3JhbmdlIikpCiAgICAodCA6dW5kZXJsaW5lIHQp KQogICJGYWNlIGZvciBoaWdobGlnaHRpbmcgbWlzc3BlbGxlZCB3b3JkcyB3aXRob3V0IGd1 ZXNzZXMuIgogIDpncm91cCAnc3BlY2spCgo7OyAoZGVmZmFjZSBzcGVjay1tb3VzZQo7OyAg ICcoKCgoY2xhc3MgY29sb3IpKSA6YmFja2dyb3VuZCAidGhpc3RsZSIpCjs7ICAgICAodCA6 dW5kZXJsaW5lIHQpKQo7OyAgICJGYWNlIGZvciBoaWdobGlnaHRpbmcgbWlzc3BlbGxlZCB3 b3JkIHdoZW4gdGhlIG1vdXNlIGlzIG92ZXIgaXQuIgo7OyAgIDpncm91cCAnc3BlY2spCgoo ZGVmZmFjZSBzcGVjay1xdWVyeQogICcoKCgoY2xhc3MgY29sb3IpKSA6YmFja2dyb3VuZCAi eWVsbG93IikKICAgICh0IDp1bmRlcmxpbmUgdCkpCiAgIkZhY2UgZm9yIGhpZ2hsaWdodGlu ZyB3b3JkIGluIHF1ZXJpZXMuIgogIDpncm91cCAnc3BlY2stZmFjZXMpCgooZGVmZmFjZSBz cGVjay1tb2RlLWxpbmUtc3BlY2tpbmcKICAnKCgoKGNsYXNzIGNvbG9yKSkgOmZvcmVncm91 bmQgIm9yYW5nZSIpCiAgICAodCBuaWwpKQogICJGYWNlIGZvciBTcGVjayBsaWdodGVyIHdo ZW4gd2luZG93IGlzIG5vdCBmdWxseSBzcGVja2VkLiIKICA6Z3JvdXAgJ3NwZWNrKQoKKGRl ZmZhY2Ugc3BlY2stbW9kZS1saW5lLXNwZWNrZWQKICAnKCgoKGNsYXNzIGNvbG9yKSkgOmZv cmVncm91bmQgImdyZWVuIikKICAgICh0IG5pbCkpCiAgIkZhY2UgZm9yIFNwZWNrIGxpZ2h0 ZXIgd2hlbiB3aW5kb3cgaXMgZnVsbHkgc3BlY2tlZC4iCiAgOmdyb3VwICdzcGVjaykKCihk ZWZmYWNlIHNwZWNrLXNwZWNrZWQKICAnKCgoKGNsYXNzIGNvbG9yKSkgOmJhY2tncm91bmQg ImxhdmVuZGVyYmx1c2gxIikKICAgICh0IDp1bmRlcmxpbmUgdCkpCiAgIkZhY2UgZm9yIGhp Z2hsaWdodGluZyBzcGVja2VkIHRleHQuIgogIDpncm91cCAnc3BlY2spCgooZGVmdmFyIHNw ZWNrLWZhY2UtaW5oaWJpdC1saXN0IG5pbAogICJMaXN0IG9mIGZhY2VzIHRoYXQgaW5oaWJp dCBzcGVja2luZy4KSWYgdGhpcyBsaXN0IGlzIG5vdCBlbXB0eSwgYSB3b3JkIGlzIG5vdCBt YXJrZWQgYXMgbWlzc3BlbGxlZCBpZgp0aGUgZmFjZSB0ZXh0IHByb3BlcnR5IG9mIGl0cyBm aXJzdCBjaGFyYWN0ZXIgY29udGFpbnMgYW4gZWxlbWVudApvZiB0aGlzIGxpc3QuCgpUaGUg cmVjb21tZW5kZWQgd2F5IHRvIHNldCB0aGlzIHZhcmlhYmxlIGlzIHZpYSBhIG1ham9yIG1v ZGUKaG9vay4gIFRoZSBmb2xsb3dpbmcgY29kZSBhc3NlcnRzIHRoYXQgaW4gYGVtYWNzLWxp c3AtbW9kZScgdGV4dApkaXNwbGF5ZWQgd2l0aCBgZm9udC1sb2NrLXZhcmlhYmxlLW5hbWUt ZmFjZScgb3IKYGZvbnQtbG9jay1jb25zdGFudC1mYWNlJyBpcyBub3QgbWFya2VkIGFzIG1p c3NwZWxsZWQuCgogICAgKGFkZC1ob29rCiAgICAgXFw9J2VtYWNzLWxpc3AtbW9kZS1ob29r CiAgICAgXFw9JyhsYW1iZGEgKCkKICAgICAgICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxl IFxcPSdzcGVjay1mYWNlLWluaGliaXQtbGlzdCkKCSAgICAgIFxcPScoZm9udC1sb2NrLXZh cmlhYmxlLW5hbWUtZmFjZQogICAgICAgICAgICAgICBmb250LWxvY2stY29uc3RhbnQtZmFj ZSkpKSkKClRoaXMgb3B0aW9uIG92ZXJyaWRlcyBgc3BlY2stZmFjZS1lbmZvcmNlLWxpc3Qn IGZvciB0ZXh0IHRoYXQgaGFzCmZhY2VzIGluIGJvdGggbGlzdHMuIikKCihkZWZ2YXIgc3Bl Y2stZmFjZS1lbmZvcmNlLWxpc3QgbmlsCiAgIkxpc3Qgb2YgZmFjZXMgdGhhdCBlbmZvcmNl IHNwZWNraW5nLgpJZiB0aGlzIGxpc3QgaXMgbm90IGVtcHR5LCBhIHdvcmQgaXMgbm90IHNw ZWNrZWQgaWYgdGhlIGZhY2UgdGV4dApwcm9wZXJ0eSBvZiBpdHMgZmlyc3QgY2hhcmFjdGVy IGRvZXMgbm90IGNvbnRhaW4gYW4gZWxlbWVudCBvZgp0aGlzIGxpc3QuCgpUaGUgcmVjb21t ZW5kZWQgd2F5IHRvIHNldCB0aGlzIHZhcmlhYmxlIGlzIHZpYSBhIG1ham9yIG1vZGUKaG9v ay4gIFRoZSBmb2xsb3dpbmcgY29kZSBhc3NlcnRzIHRoYXQgaW4gYGVtYWNzLWxpc3AtbW9k ZScgdGV4dApkaXNwbGF5ZWQgd2l0aCBgZm9udC1sb2NrLWNvbW1lbnQtZmFjZScgb3IgYGZv bnQtbG9jay1kb2MtZmFjZScKY2FuIGJlIGNoZWNrZWQsIHdoaWxlIG90aGVyIHByb2dyYW0g dGV4dCByZW1haW5zIHVuY2hlY2tlZC4KCiAgICAoYWRkLWhvb2sKICAgICBcXD0nZW1hY3Mt bGlzcC1tb2RlLWhvb2sKICAgICBcXD0nKGxhbWJkYSAoKQogICAgICAgIChzZXQgKG1ha2Ut bG9jYWwtdmFyaWFibGUgXFw9J3NwZWNrLWZhY2UtZW5mb3JjZS1saXN0KQoJICAgICBcXD0n KGZvbnQtbG9jay1jb21tZW50LWZhY2UgZm9udC1sb2NrLWRvYy1mYWNlKSkKClRoaXMgb3B0 aW9uIGlzIG92ZXJyaWRkZW4gYnkgYHNwZWNrLWZhY2UtaW5oaWJpdC1saXN0JyBmb3IgdGV4 dAp0aGF0IGhhcyBmYWNlcyBpbiBib3RoIGxpc3RzLgoKTm90ZSB0aGF0IG9uY2UgdGV4dCBo YXMgYmVlbiBzcGVja2VkIGl0IHdpbGwgbm90IGJlIHJlLXNwZWNrZWQKdW5sZXNzIGl0IGlz IG1vZGlmaWVkLiAgRmFjZSBjaGFuZ2VzIGRvbmUgYnkgZm9udCBsb2NraW5nIGFzIGEKY29u c2VxdWVuY2Ugb2YgYnVmZmVyIGNoYW5nZXMsIGhvd2V2ZXIsIGFyZSB1c3VhbGx5IGRvbmUg c2lsZW50bHkKLSB0aGV5IGRvIG5vdCBjb3VudCBhcyBidWZmZXIgbW9kaWZpY2F0aW9ucyBh bmQgYXJlIG5vdCBkZXRlY3RlZApieSBTcGVjay4gIElmIHlvdSB3YW50IHRvIG1ha2Ugc3Vy ZSB0aGF0IHN1Y2ggY2hhbmdlcyBhcmUgaGFuZGxlZApieSBTcGVjaywgc2V0IGBzcGVjay1m YWNlLWVuZm9yY2UtY29udGV4dHVhbCcgdG8gbm9uLW5pbC4iKQoKKGRlZnZhciBzcGVjay1m YWNlLWVuZm9yY2UtY29udGV4dHVhbCBuaWwKICAiTm9uLW5pbCBtZWFucyByZS1zcGVjayBy ZXN0IG9mIGJ1ZmZlciBhZnRlciBhIGJ1ZmZlciBtb2RpZmljYXRpb24uCklmIHRoaXMgaXMg bmlsLCBTcGVjayByZS1zY2FucyBvbmx5IGJ1ZmZlciB0ZXh0IHRoYXQgYWN0dWFsbHkKY2hh bmdlZCBhZnRlciBhIGJ1ZmZlciBtb2RpZmljYXRpb24uICBUaGlzIG1pZ2h0IGJlIGluc3Vm ZmljaWVudAp3aGVuIGBzcGVjay1mYWNlLWVuZm9yY2UtbGlzdCcgaXMgbm9uLW5pbCBhbmQg U3BlY2sgaXMgc3VwcG9zZWQKdG8gcmVhY3QgdG8gZmFjZSBjaGFuZ2VzIGluIHRoZSByZW1h aW5kZXIgb2YgYSBidWZmZXIgYWZ0ZXIgc3VjaCBhCm1vZGlmaWNhdGlvbi4KCklmIHlvdSB3 YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGFueSBzdWNoIGZhY2UgY2hhbmdlcyBhcmUgcGlja2Vk IHVwCmJ5IFNwZWNrLCBtYWtlIHRoaXMgbm9uLW5pbC4gIEluIGdlbmVyYWwsIGl0IGlzIG5v dCByZWNvbW1lbmRlZAp0byBkbyB0aGF0IGJlY2F1c2UgaXQgbWF5IHNsb3cgZG93biBib3Ro LCBzcGVja2luZyBhbmQgY29udGV4dHVhbApyZS1mb250aWZpY2F0aW9uLiAgSW4gYnVmZmVy cyB3aGVyZSBgc3BlY2stZmFjZS1lbmZvcmNlLWxpc3QnIGlzCm5pbCwgdGhpcyBvcHRpb24g aGFzIG5vIGVmZmVjdC4iKQoKOzsgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KOzsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF8KOzs7CQkJICAgICAgIFV0aWxpdHkgRnVuY3Rpb25zICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF8KOzsgX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K OzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF8KCihkZWZ1biBzcGVjay1zdHJpbmcgKCZvcHRp b25hbCBiZWdpbiBlbmQpCiAgImBidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMnIHdp dGggb3B0aW9uYWwgYXJndW1lbnRzLiIKICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0 aWVzCiAgIChvciBiZWdpbiAocG9pbnQtbWluKSkgKG9yIGVuZCAocG9pbnQtbWF4KSkpKQoK KGRlZnVuIHNwZWNrLXJlbW92ZS1vdmVybGF5cyAoJm9wdGlvbmFsIGZyb20gdG8pCiAgIlJl bW92ZSBhbGwgc3BlY2sgb3ZlcmxheXMgYmV0d2VlbiBGUk9NIGFuZCBUTy4iCiAgKHVubGVz cyBmcm9tIChzZXRxIGZyb20gKHBvaW50LW1pbikpKQogICh1bmxlc3MgdG8gKHNldHEgdG8g KHNldHEgdG8gKHBvaW50LW1heCkpKSkKICAod2hlbiAoPCB0byBmcm9tKQogICAgKHNldHEg ZnJvbSAocHJvZzEgdG8gKHNldHEgdG8gZnJvbSkpKSkKICAgICAgKGRvbGlzdCAob3Zlcmxh eSAob3ZlcmxheXMtaW4gZnJvbSB0bykpCgkod2hlbiAob3ZlcmxheS1nZXQgb3ZlcmxheSAn c3BlY2spCgkgIChkZWxldGUtb3ZlcmxheSBvdmVybGF5KSkpKQoKKGRlZnVuIHNwZWNrLXJl bW92ZS10ZXh0LXByb3BlcnRpZXMgKCZvcHRpb25hbCBmcm9tIHRvIHdoaWNoKQogICJSZW1v dmUgYWxsIHNwZWNrIHRleHQgcHJvcGVydGllcyBiZXR3ZWVuIEZST00gYW5kIFRPLgpXSElD SCwgaWYgbm9uLW5pbCwgc3BlY2lmaWVzIHRoZSB0ZXh0IHByb3BlcnRpZXMgdG8gcmVtb3Zl LiIKICAoc2F2ZS1yZXN0cmljdGlvbgogICAgKHdpZGVuKQogICAgKHVubGVzcyBmcm9tIChz ZXRxIGZyb20gKHBvaW50LW1pbikpKQogICAgKHVubGVzcyB0byAoc2V0cSB0byAoc2V0cSB0 byAocG9pbnQtbWF4KSkpKQogICAgKHdoZW4gKDwgdG8gZnJvbSkKICAgICAgKHNldHEgZnJv bSAocHJvZzEgdG8gKHNldHEgdG8gZnJvbSkpKSkKICAgICh3aXRoLXNpbGVudC1tb2RpZmlj YXRpb25zCiAgICAgIChyZW1vdmUtdGV4dC1wcm9wZXJ0aWVzCiAgICAgICBmcm9tIHRvIChv ciB3aGljaCAnKHNwZWNrIG5pbCBzcGVja2VkIG5pbCkpKSkpKQoKKGRlZnVuIHNwZWNrLWFk ZC13aW5kb3cgKCZvcHRpb25hbCB3aW5kb3cpCiAgIkFkZCBXSU5ET1cgdG8gYHNwZWNrLXdp bmRvdy1saXN0Jy4iCiAgKHNldHEgd2luZG93IChvciB3aW5kb3cgKHNlbGVjdGVkLXdpbmRv dykpKQogICh1bmxlc3MgKG1lbXEgd2luZG93IHNwZWNrLXdpbmRvdy1saXN0KQogICAgKHdp dGgtY3VycmVudC1idWZmZXIgKHdpbmRvdy1idWZmZXIgd2luZG93KQogICAgICAod2hlbiBz cGVjay1tb2RlCgkoc2V0cSBzcGVjay13aW5kb3ctbGlzdCAoY29ucyB3aW5kb3cgc3BlY2st d2luZG93LWxpc3QpKQoJKHNwZWNrLXJ1bi1kZWxheS10aW1lcikKCShzcGVjay1ydW4tcGF1 c2UtdGltZXIpCgkoZm9yY2UtbW9kZS1saW5lLXVwZGF0ZSkpKSkpCgooZGVmdW4gc3BlY2st YWRkLWJ1ZmZlci13aW5kb3dzICgmb3B0aW9uYWwgYnVmZmVyKQogICJBZGQgQlVGRkVSJ3Mg d2luZG93cyB0byBgc3BlY2std2luZG93LWxpc3QnLiIKICAoZG9saXN0ICh3aW5kb3cgKGdl dC1idWZmZXItd2luZG93LWxpc3QgYnVmZmVyIG5pbCB0KSkKICAgIChzcGVjay1hZGQtd2lu ZG93IHdpbmRvdykpKQoKKGRlZnVuIHNwZWNrLXJlbW92ZS13aW5kb3cgKCZvcHRpb25hbCB3 aW5kb3cpCiAgIlJlbW92ZSBXSU5ET1cgZnJvbSBgc3BlY2std2luZG93LWxpc3QnLiIKICAo c2V0cSB3aW5kb3cgKG9yIHdpbmRvdyAoc2VsZWN0ZWQtd2luZG93KSkpCiAgKHNldHEgc3Bl Y2std2luZG93LWxpc3QgKGRlbHEgd2luZG93IHNwZWNrLXdpbmRvdy1saXN0KSkKICAodW5s ZXNzIHNwZWNrLXdpbmRvdy1saXN0CiAgICAod2hlbiBzcGVjay1kZWxheS10aW1lcgogICAg ICAoY2FuY2VsLXRpbWVyIHNwZWNrLWRlbGF5LXRpbWVyKQogICAgICAoc2V0cSBzcGVjay1k ZWxheS10aW1lciBuaWwpKQogICAgKHdoZW4gc3BlY2stcGF1c2UtdGltZXIKICAgICAgKGNh bmNlbC10aW1lciBzcGVjay1wYXVzZS10aW1lcikKICAgICAgKHNldHEgc3BlY2stcGF1c2Ut dGltZXIgbmlsKSkpCiAgKGZvcmNlLW1vZGUtbGluZS11cGRhdGUpKQoKKGRlZnVuIHNwZWNr LXJlbW92ZS1idWZmZXItd2luZG93cyAoJm9wdGlvbmFsIGJ1ZmZlcikKICAiUmVtb3ZlIEJV RkZFUidzIHdpbmRvd3MgZnJvbSBgc3BlY2std2luZG93LWxpc3QnLiIKICAoZG9saXN0ICh3 aW5kb3cgKGdldC1idWZmZXItd2luZG93LWxpc3QgYnVmZmVyIG5pbCB0KSkKICAgIChzcGVj ay1yZW1vdmUtd2luZG93IHdpbmRvdykpKQoKKGRlZnVuIHNwZWNrLWFkZC1idWZmZXIgKCZv cHRpb25hbCBidWZmZXIpCiAgIkFkZCBCVUZGRVIgdG8gYHNwZWNrLWJ1ZmZlci1saXN0Jy4i CiAgKHNldHEgYnVmZmVyIChvciBidWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpCiAgKHVubGVz cyAobWVtcSBidWZmZXIgc3BlY2stYnVmZmVyLWxpc3QpCiAgICAoc2V0cSBzcGVjay1idWZm ZXItbGlzdCAoY29ucyBidWZmZXIgc3BlY2stYnVmZmVyLWxpc3QpKSkKICAoZG9saXN0ICh3 aW5kb3cgKGdldC1idWZmZXItd2luZG93LWxpc3QgYnVmZmVyIG5pbCB0KSkKICAgIChzcGVj ay1hZGQtd2luZG93IHdpbmRvdykpKQoKKGRlZnVuIHNwZWNrLXJlbW92ZS1idWZmZXIgKCZv cHRpb25hbCBidWZmZXIpCiAgIlJlbW92ZSBCVUZGRVIgZnJvbSBgc3BlY2stYnVmZmVyLWxp c3QnLiIKICAoc2V0cSBidWZmZXIgKG9yIGJ1ZmZlciAoY3VycmVudC1idWZmZXIpKSkKICAo c3BlY2stcmVtb3ZlLWJ1ZmZlci13aW5kb3dzIGJ1ZmZlcikKICAoc2V0cSBzcGVjay1idWZm ZXItbGlzdCAocmVtcSBidWZmZXIgc3BlY2stYnVmZmVyLWxpc3QpKQogICh3aXRoLWN1cnJl bnQtYnVmZmVyIGJ1ZmZlcgogICAgKHdoZW4gKGFuZCBzcGVjay1wcm9jZXNzIChwcm9jZXNz LWxpdmUtcCBzcGVjay1wcm9jZXNzKSkKICAgICAgKGtpbGwtYnVmZmVyIChwcm9jZXNzLWJ1 ZmZlciBzcGVjay1wcm9jZXNzKSkpCiAgICAoc2V0cSBzcGVjay1wcm9jZXNzIG5pbCkpKQoK KGRlZnVuIHNwZWNrLWdvdG8tbWFya2VyICgpCiAgIkdvIHRvIGBzcGVjay1tYXJrZXInIGFu ZCBtYWtlIGl0IHBvaW50IG5vd2hlcmUuIgogICh3aGVuIChhbmQgKG1hcmtlcnAgc3BlY2st bWFya2VyKSAobWFya2VyLXBvc2l0aW9uIHNwZWNrLW1hcmtlcikKCSAgICAgKHdpbmRvdy1s aXZlLXAgc3BlY2stbWFya2VyLXdpbmRvdykpCiAgICAoc2VsZWN0LXdpbmRvdyBzcGVjay1t YXJrZXItd2luZG93KQogICAgKGdvdG8tY2hhciBzcGVjay1tYXJrZXIpCiAgICAoc2V0LW1h cmtlciBzcGVjay1tYXJrZXIgbmlsKSkpCgooZGVmdW4gc3BlY2stb3ZlcmxheS1hdC1wb2lu dCAoJm9wdGlvbmFsIGF0IGZhY2VzKQogICJSZXR1cm4gc3BlY2sgb3ZlcmxheSBhdCBwb2lu dC4KT3B0aW9uYWwgYXJndW1lbnQgQVQgbm9uLW5pbCBtZWFucyByZXR1cm4gb3ZlcmxheSBh dCBwb3NpdGlvbiBBVC4KT3B0aW9uYWwgYXJndW1lbnQgRkFDRVMgbm9uLW5pbCBtZWFucyBy ZXR1cm4gb3ZlcmxheSBpZiBhbmQgb25seQppZiBpdCBoYXMgYSBmYWNlIHByb3BlcnR5IGlu IHRoYXQgbGlzdC4iCiAgKHNldHEgYXQgKG9yIGF0IChwb2ludCkpKQogIChsZXQgKChvdmVy bGF5IChjZHIgKGdldC1jaGFyLXByb3BlcnR5LWFuZC1vdmVybGF5IGF0ICdzcGVjaykpKSkK ICAgICh3aGVuIChvciAobm90IGZhY2VzKQoJICAgICAgKGFuZCBvdmVybGF5IChtZW1xIChv dmVybGF5LWdldCBvdmVybGF5ICdmYWNlKSBmYWNlcykpKQogICAgICBvdmVybGF5KSkpCgoo ZGVmdW4gc3BlY2stbmV4dC1vdmVybGF5ICgmb3B0aW9uYWwgYXJnIGZhY2VzKQogICJHZXQg Zmlyc3Qgc3BlY2sgb3ZlcmxheSBlbmRpbmcgYWZ0ZXIgYHBvaW50Jy4KT3B0aW9uYWwgYXJn dW1lbnQgQVJHIG5vbi1uaWwgbWVhbnMgcmV0dXJuIEFSR3RoIG92ZXJsYXkgYWZ0ZXIKYHBv aW50Jy4gIE9wdGlvbmFsIGFyZ3VtZW50IEZBQ0VTIG5vbi1uaWwgbWVhbnMgcmV0dXJuIG92 ZXJsYXkgaWYKYW5kIG9ubHkgaWYgaXQgaGFzIGEgZmFjZSBwcm9wZXJ0eSBpbiB0aGF0IGxp c3QuIgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKHNldHEgYXJnIChvciBhcmcgMSkpCiAgICAo bGV0ICgob3ZlcmxheSAoc3BlY2stb3ZlcmxheS1hdC1wb2ludCBuaWwgZmFjZXMpKSkKICAg ICAgKHVubGVzcyAoYW5kIG92ZXJsYXkKCQkgICAob3IgKD0gYXJnIDEpCgkJICAgICAgIChw cm9nbgoJCQkgKHNldHEgYXJnICgxLSBhcmcpKQoJCQkgKGdvdG8tY2hhciAob3ZlcmxheS1l bmQgb3ZlcmxheSkpCgkJCSAoc2V0cSBvdmVybGF5IG5pbCkpKSkKCShzYXZlLXJlc3RyaWN0 aW9uCgkgIDs7IFRoaXMgbmFycm93aW5nIHNob3VsZCBiZSBzYWZlLgoJICAobmFycm93LXRv LXJlZ2lvbiAocG9pbnQpICh3aW5kb3ctZW5kKSkKCSAgKHdoaWxlIChhbmQgKG5vdCBvdmVy bGF5KSAoPCAocG9pbnQpIChwb2ludC1tYXgpKSAoPj0gYXJnIDApKQoJICAgIChnb3RvLWNo YXIgKG5leHQtb3ZlcmxheS1jaGFuZ2UgKHBvaW50KSkpCgkgICAgKHNldHEgb3ZlcmxheSAo c3BlY2stb3ZlcmxheS1hdC1wb2ludCBuaWwgZmFjZXMpKQoJICAgICh3aGVuIChhbmQgb3Zl cmxheSAoPiBhcmcgMSkpCgkgICAgICAoc2V0cSBvdmVybGF5IG5pbCkKCSAgICAgIChzZXRx IGFyZyAoMS0gYXJnKSkpKSkpCiAgICAgIG92ZXJsYXkpKSkKCihkZWZ1biBzcGVjay1wcmV2 aW91cy1vdmVybGF5ICgmb3B0aW9uYWwgYXJnIGZhY2VzKQogICJHZXQgZmlyc3Qgc3BlY2sg b3ZlcmxheSBzdGFydGluZyBiZWZvcmUgYHBvaW50Jy4KT3B0aW9uYWwgYXJndW1lbnQgQVJH IG5vbi1uaWwgbWVhbnMgcmV0dXJuIEFSR3RoIG92ZXJsYXkgYmVmb3JlCmBwb2ludCcuICBP cHRpb25hbCBhcmd1bWVudCBGQUNFUyBub24tbmlsIG1lYW5zIHJldHVybiBvdmVybGF5IGlm CmFuZCBvbmx5IGlmIGl0IGhhcyBhIGZhY2UgcHJvcGVydHkgaW4gdGhhdCBsaXN0LiIKICAo c2F2ZS1leGN1cnNpb24KICAgIChzZXRxIGFyZyAob3IgYXJnIDEpKQogICAgKGxldCAoKG92 ZXJsYXkgKHNwZWNrLW92ZXJsYXktYXQtcG9pbnQgbmlsIGZhY2VzKSkpCiAgICAgICh1bmxl c3MgKGFuZCBvdmVybGF5CgkJICAgKG9yICg8IChvdmVybGF5LXN0YXJ0IG92ZXJsYXkpIChw b2ludCkpCgkJICAgICAgIChzZXRxIG92ZXJsYXkgbmlsKSkKCQkgICAob3IgKD0gYXJnIDEp CgkJICAgICAgIChwcm9nbgoJCQkgKHNldHEgYXJnICgxLSBhcmcpKQoJCQkgKGdvdG8tY2hh ciAob3ZlcmxheS1zdGFydCBvdmVybGF5KSkKCQkJIChzZXRxIG92ZXJsYXkgbmlsKSkpKQoJ KHNhdmUtcmVzdHJpY3Rpb24KCSAgOzsgVGhpcyBuYXJyb3dpbmcgc2hvdWxkIGJlIHNhZmUu CgkgIChuYXJyb3ctdG8tcmVnaW9uICh3aW5kb3ctc3RhcnQpIChwb2ludCkpCgkgICh3aGls ZSAoYW5kIChub3Qgb3ZlcmxheSkgKD4gKHBvaW50KSAocG9pbnQtbWluKSkgKD49IGFyZyAw KSkKCSAgICAoZ290by1jaGFyIChwcmV2aW91cy1vdmVybGF5LWNoYW5nZSAocG9pbnQpKSkK CSAgICAoc2V0cSBvdmVybGF5IChzcGVjay1vdmVybGF5LWF0LXBvaW50IG5pbCBmYWNlcykp CgkgICAgKHdoZW4gKGFuZCBvdmVybGF5ICg+IGFyZyAxKSkKCSAgICAgIChzZXRxIG92ZXJs YXkgbmlsKQoJICAgICAgKHNldHEgYXJnICgxLSBhcmcpKSkpKSkKICAgICAgb3ZlcmxheSkp KQoKKGRlZnVuIHNwZWNrLWlnbm9yZWQgKHdvcmQpCiAgIlJldHVybiBub24tbmlsIGlmIFdP UkQgaXMgb24gdGhlIGN1cnJlbnQgYnVmZmVyJ3MgbGlzdCBvZiBpZ25vcmVkIHdvcmRzLiIK ICAobWVtYmVyIHdvcmQgc3BlY2staWdub3JlLWxpc3QpKQoKKGRlZnVuIHNwZWNrLWlnbm9y ZSAod29yZCkKICAiQWRkIFdPUkQgdG8gdGhlIGN1cnJlbnQgYnVmZmVyJ3MgbGlzdCBvZiBp Z25vcmVkIHdvcmRzLiIKICAoc2V0cSBzcGVjay1pZ25vcmUtbGlzdCAoY29ucyB3b3JkIHNw ZWNrLWlnbm9yZS1saXN0KSkpCgooZGVmdW4gc3BlY2staWdub3JlLW5vdCAod29yZCkKICAi UmVtb3ZlIFdPUkQgZnJvbSB0aGUgY3VycmVudCBidWZmZXIncyBsaXN0IG9mIGlnbm9yZWQg d29yZHMuCkludGVyYWN0aXZlbHkgcHJvbXB0IGZvciB0aGUgd29yZCB0byByZW1vdmUuIgog IChpbnRlcmFjdGl2ZSAiTSIpCiAgKHNldHEgc3BlY2staWdub3JlLWxpc3QgKGRlbGV0ZSB3 b3JkIHNwZWNrLWlnbm9yZS1saXN0KSkKICA7OyBXZSBoYXZlIHRvIHJlLXNwZWNrIHRoZSBl bnRpcmUgYnVmZmVyIGFuZCBhbGwgaXRzIHdpbmRvd3MuCiAgKHNwZWNrLXJlbW92ZS10ZXh0 LXByb3BlcnRpZXMpCiAgKHNwZWNrLWFkZC1idWZmZXItd2luZG93cykpCgo7OyBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXwo7OzsJCQkJQWRk aW5nIFdvcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfCjs7IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCjs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfCgooZGVmdW4g c3BlY2stYWRkLWNsZWFudXAgKG92ZXJsYXkgZnJvbSB0byB3b3JkKQogICJDbGVhbiB1cCBj dXJyZW50IGJ1ZmZlciBhZnRlciBXT1JEIGhhcyBiZWVuIGFkZGVkLgpPVkVSTEFZIGlzIHRo ZSBvdmVybGF5IGNvdmVyaW5nIFdPUkQsIEZST00gYW5kIFRPIGFyZQppdHMgYm91bmRhcmll cy4iCiAgKHdpdGgtc2lsZW50LW1vZGlmaWNhdGlvbnMKICAgKGRlbGV0ZS1vdmVybGF5IG92 ZXJsYXkpCiAgIChzcGVjay1yZW1vdmUtdGV4dC1wcm9wZXJ0aWVzIGZyb20gdG8pCiAgIDs7 IFJlbW92ZSBhbGwgc3BlY2sgb3ZlcmxheXMgYW5kIHByb3BlcnRpZXMgY292ZXJpbmcgYW55 IGluc3RhbmNlCiAgIDs7IG9mIFdPUkQgaW4gdGhpcyBidWZmZXIuCiAgIChzYXZlLWV4Y3Vy c2lvbgogICAgIChzYXZlLXJlc3RyaWN0aW9uCiAgICAgICAod2lkZW4pCiAgICAgICAoZ290 by1jaGFyIChwb2ludC1taW4pKQogICAgICAgKHVubGVzcyAoZ2V0LWNoYXItcHJvcGVydHkg KHBvaW50KSAnc3BlY2spCgkgKGdvdG8tY2hhciAob3IgKG5leHQtc2luZ2xlLWNoYXItcHJv cGVydHktY2hhbmdlIChwb2ludCkgJ3NwZWNrKQoJCQkocG9pbnQtbWF4KSkpCgkgKGxldCAo cHJvcGVydHkpCgkgICAod2hpbGUgKG5vdCAoZW9icCkpCgkgICAgIChzZXRxIGZyb20gKHBv aW50KSkKCSAgICAgKHNldHEgdG8gKG9yIChuZXh0LXNpbmdsZS1jaGFyLXByb3BlcnR5LWNo YW5nZSBmcm9tICdzcGVjaykKCQkJICAocG9pbnQtbWF4KSkpCgkgICAgIChzZXRxIG92ZXJs YXkgKGNkciAoZ2V0LWNoYXItcHJvcGVydHktYW5kLW92ZXJsYXkgZnJvbSAnc3BlY2spKSkK CSAgICAgKHdoZW4gKGFuZCBvdmVybGF5IChzdHJpbmctZXF1YWwgKHNwZWNrLXN0cmluZyBm cm9tIHRvKSB3b3JkKSkKCSAgICAgICAoZGVsZXRlLW92ZXJsYXkgb3ZlcmxheSkKCSAgICAg ICAoc3BlY2stcmVtb3ZlLXRleHQtcHJvcGVydGllcyBmcm9tIHRvKSkKCSAgICAgKGdvdG8t Y2hhciAob3IgKG5leHQtc2luZ2xlLWNoYXItcHJvcGVydHktY2hhbmdlIChwb2ludCkgJ3Nw ZWNrKQoJCQkgICAgKHBvaW50LW1heCkpKSkpKSkpKQoKICA7OyBBZGQgYnVmZmVyJ3Mgd2lu ZG93cyB0byBgc3BlY2std2luZG93LWxpc3QnLgogIChzcGVjay1hZGQtYnVmZmVyLXdpbmRv d3MpKQoKKGRlZnVuIHNwZWNrLWFkZC13b3JkIChvdmVybGF5KQogICJBZGQgd29yZCBjb3Zl cmVkIGJ5IE9WRVJMQVkgdG8gZGljdGlvbmFyeSBvciB3b3JkIGxpc3QuIgogIChpbnRlcmFj dGl2ZSkKICAobGV0KiAoKGZyb20gKG92ZXJsYXktc3RhcnQgb3ZlcmxheSkpCgkgKHRvIChv dmVybGF5LWVuZCBvdmVybGF5KSkKCSAod29yZCAoc3BlY2stc3RyaW5nIGZyb20gdG8pKQoJ IChmYWNlIChvdmVybGF5LWdldCBvdmVybGF5ICdmYWNlKSkKCSAoaWdub3JlZCAoc3BlY2st aWdub3JlZCB3b3JkKSkpCiAgICAod2hlbiBvdmVybGF5CiAgICAgIChvdmVybGF5LXB1dCBv dmVybGF5ICdmYWNlICdzcGVjay1xdWVyeSkKICAgICAgKG1lc3NhZ2UgKGNvbmNhdAoJCShm b3JtYXQgIlwicFwiIGFkZHMgYCVzJyB0byBwZXJzb25hbCBkaWN0aW9uYXJ5IiB3b3JkKQoJ CSh1bmxlc3MgKHN0cmluZy1lcXVhbCB3b3JkIChkb3duY2FzZSB3b3JkKSkKCQkgIChmb3Jt YXQgIiAoXCJsXCIgYWRkcyBgJXMnKSIgKGRvd25jYXNlIHdvcmQpKSkKCQk7OyBTdXBwcmVz cyB0aGUgZm9sbG93aW5nIHdoZW4gYW4gZW50cnkgYWxyZWFkeSBleGlzdHMuCgkJKHVubGVz cyBpZ25vcmVkIChmb3JtYXQgIiwgXCJpXCIgaWdub3JlcyBpdCIpKSkpCiAgICAgICh1bndp bmQtcHJvdGVjdAoJICAobGV0KiAoKGNoYXIgKHJlYWQtZXZlbnQpKQoJCSAoa2V5ICh2ZWN0 b3IgY2hhcikpCgkJIChjYXNlLWZvbGQtc2VhcmNoIHQpKQoJICAgIChjb25kCgkgICAgICgo YW5kIChpbnRlZ2VycCBjaGFyKQoJCSAgIChvciAoY2hhci1lcXVhbCBjaGFyID9wKSAoY2hh ci1lcXVhbCBjaGFyID8qKSkpCgkgICAgICAocHJvY2Vzcy1zZW5kLXN0cmluZyBzcGVjay1w cm9jZXNzIChjb25jYXQgIioiIHdvcmQgIlxuIikpCgkgICAgICAocHJvY2Vzcy1zZW5kLXN0 cmluZyBzcGVjay1wcm9jZXNzICIjXG4iKQoJICAgICAgKHNwZWNrLWFkZC1jbGVhbnVwIG92 ZXJsYXkgZnJvbSB0byB3b3JkKSkKCSAgICAgKChhbmQgKGludGVnZXJwIGNoYXIpCgkJICAg KG9yIChjaGFyLWVxdWFsIGNoYXIgP2wpIChjaGFyLWVxdWFsIGNoYXIgPyYpKSkKCSAgICAg IChwcm9jZXNzLXNlbmQtc3RyaW5nIHNwZWNrLXByb2Nlc3MgKGNvbmNhdCAiJiIgd29yZCAi XG4iKSkKCSAgICAgIChwcm9jZXNzLXNlbmQtc3RyaW5nIHNwZWNrLXByb2Nlc3MgIiNcbiIp CgkgICAgICAoc3BlY2stYWRkLWNsZWFudXAgb3ZlcmxheSBmcm9tIHRvIHdvcmQpKQoJICAg ICAoKGFuZCAoaW50ZWdlcnAgY2hhcikgKGNoYXItZXF1YWwgY2hhciA/aSkgKG5vdCBpZ25v cmVkKSkKCSAgICAgIChzcGVjay1pZ25vcmUgd29yZCkKCSAgICAgIChzcGVjay1hZGQtY2xl YW51cCBvdmVybGF5IGZyb20gdG8gd29yZCkpCgkgICAgICh0CgkgICAgICAoc2V0cSB0aGlz LWNvbW1hbmQgJ21vZGUtZXhpdGVkKQoJICAgICAgKHNldHEgdW5yZWFkLWNvbW1hbmQtZXZl bnRzCgkJICAgIChhcHBlbmQgKGxpc3RpZnkta2V5LXNlcXVlbmNlIGtleSkKCQkJICAgIHVu cmVhZC1jb21tYW5kLWV2ZW50cykpKSkpCgoJOzsgUmVzdG9yZSBwcmV2aW91cyBmYWNlLgoJ KHdoZW4gKG92ZXJsYXlwIG92ZXJsYXkpCgkgIChvdmVybGF5LXB1dCBvdmVybGF5ICdmYWNl IGZhY2UpKSkpKSkKCihkZWZ1biBzcGVjay1hZGQtcHJldmlvdXMgKCZvcHRpb25hbCBhcmcp CiAgIkFkZCBwcmV2aW91cyBoaWdobGlnaHRlZCB3b3JkIG9uIHNlbGVjdGVkIHdpbmRvdy4K V2l0aCBBUkcgbiBkbyB0aGlzIGZvciBudGggaGlnaGxpZ2h0ZWQgd29yZCBwcmVjZWRpbmcg YHBvaW50Jy4iCiAgKGludGVyYWN0aXZlICJwIikKICAobGV0ICgob3ZlcmxheSAoc3BlY2st cHJldmlvdXMtb3ZlcmxheSAob3IgYXJnIDEpICcoc3BlY2stZ3Vlc3Mgc3BlY2stbWlzcykp KSkKICAgIChpZiBvdmVybGF5Cgkoc3BlY2stYWRkLXdvcmQgb3ZlcmxheSkKICAgICAgKGxl dCAobWVzc2FnZS1sb2ctbWF4KQoJKG1lc3NhZ2UgIk5vIHdvcmQgZm91bmQgLi4uIikpKSkp CgooZGVmdW4gc3BlY2stYWRkLW5leHQgKCZvcHRpb25hbCBhcmcpCiAgIkFkZCBuZXh0IGhp Z2hsaWdodGVkIHdvcmQgb24gc2VsZWN0ZWQgd2luZG93LgpXaXRoIEFSRyBuIGRvIHRoaXMg Zm9yIG50aCBoaWdobGlnaHRlZCB3b3JkIGZvbGxvd2luZyBgcG9pbnQnLiIKICAoaW50ZXJh Y3RpdmUgInAiKQogIChsZXQgKChvdmVybGF5IChzcGVjay1uZXh0LW92ZXJsYXkgKG9yIGFy ZyAxKSAnKHNwZWNrLWd1ZXNzIHNwZWNrLW1pc3MpKSkpCiAgICAoaWYgb3ZlcmxheQoJKHNw ZWNrLWFkZC13b3JkIG92ZXJsYXkpCiAgICAgIChsZXQgKG1lc3NhZ2UtbG9nLW1heCkKCSht ZXNzYWdlICJObyB3b3JkIGZvdW5kIC4uLiIpKSkpKQoKOzsgX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8KOzs7CQkJICAgICAgIE1lbnVzICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8KOzsgX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8KCihkZWZ1biBzcGVj ay1tZW51LXRhaWwgKGxvd2VyIGlnbm9yZSkKICAiUHJlY2FsY3VsYXRlZCB0YWlsIGZvciBw b3B1cCBtZW51LiIKICAoYXBwZW5kCiAgIChsaXN0CiAgICAiIgogICAgKGNvbnMgIi0tLSIg Ii0tLSIpCiAgICA7OyBSZWFkaW5nIHRoZSBjb3JyZWN0IHdvcmQgZnJvbSB0aGUgbWluaWJ1 ZmZlciBzb3VuZHMgbHVkaWNyb3VzIGJ1dAogICAgOzsgaGFzIHRoZSBhZHZhbnRhZ2UgdGhh dCBvbmUgZG9lcyBub3QgaGF2ZSB0byBtb3ZlIHBvaW50IGZvcgogICAgOzsgY29ycmVjdGlu ZyB0aGUgd29yZCBpbiBwbGFjZSBhbmQgc29tZSBoaXN0b3J5IG1heSBiZSBhdmFpbGFibGUu CiAgICAoY29ucyAiQ29ycmVjdCB3b3JkIHZpYSBtaW5pYnVmZmVyIiAnbWluaWJ1ZmZlcikK ICAgIChjb25zICJBZGQgdG8gcGVyc29uYWwgZGljdGlvbmFyeSIgJ3BlcnNvbmFsKSkKICAg KHdoZW4gbG93ZXIgKGxpc3QgKGNvbnMgIkFkZCBsb3dlci1jYXNlIHZlcnNpb24iICdsb3dl cikpKQogICA7OyBJR05PUkUgc2hvdWxkIGJlIG5vbi1uaWwgaGVyZSwgb3RoZXJ3aXNlIHdl IHNob3VsZCBuZXZlciBoYXZlIGdvdAogICA7OyBhIG1lbnUgaGVyZSBpbiB0aGUgZmlyc3Qg cGxhY2UuCiAgICh3aGVuIGlnbm9yZSAobGlzdCAoY29ucyAiSWdub3JlIHdvcmQgaW4gdGhp cyBzZXNzaW9uIiAnaWdub3JlKSkpKSkKCihkZWZ1biBzcGVjay1wb3B1cC1tZW51IChwb3Nu ICZvcHRpb25hbCBmYWNlcykKICAiUG9wIHVwIHNwZWNrIG1lbnUgYXQgcG9zaXRpb24gUE9T Ti4iCiAgKGxldCAoKG92ZXJsYXkgKHNwZWNrLW92ZXJsYXktYXQtcG9pbnQgbmlsIGZhY2Vz KSkKCShwcm9jZXNzIHNwZWNrLXByb2Nlc3MpKQogICAgKHdoZW4gKGFuZCBvdmVybGF5IHBy b2Nlc3MpCiAgICAgIDs7IFByZWVtcHQgYHNwZWNrLXByb2Nlc3MnIGFuZCB1bndpbmQtcHJv dGVjdCB0aGUgZm9sbG93aW5nIHRvCiAgICAgIDs7IGFzc2VydCB0aGF0IHByZWVtcHRpb24g aXMgY2FuY2VsZWQgKHdlIGRvIHRoaXMgdG8gYXZvaWQgdGhhdAogICAgICA7OyBzcGVja2lu ZyBjb250aW51ZXMgZHVyaW5nIHBvcHVwcykuCiAgICAgIChwcm9jZXNzLXB1dCBwcm9jZXNz ICdwcmVlbXB0ZWQgdCkKICAgICAgKHVud2luZC1wcm90ZWN0CgkgIChsZXQqICgoZnJvbSAo b3ZlcmxheS1zdGFydCBvdmVybGF5KSkKCQkgKHRvIChvdmVybGF5LWVuZCBvdmVybGF5KSkK CQkgKHdvcmQgKHNwZWNrLXN0cmluZyBmcm9tIHRvKSkKCQkgKGd1ZXNzZXMKCQkgIChsZXQg KGxpc3QpCgkJICAgIChucmV2ZXJzZQoJCSAgICAgKGRvbGlzdCAoaXRlbSAoc3BlY2std29y ZCB3b3JkKSBsaXN0KQoJCSAgICAgICAoc2V0cSBsaXN0IChjb25zIChjb25zIGl0ZW0gaXRl bSkgbGlzdCkpKSkpKQoJCSAoaWdub3JlZCAoc3BlY2staWdub3JlZCB3b3JkKSkKCQkgKHNw ZWNrLXJlcGxhY2UtcXVlcnkgc3BlY2stcmVwbGFjZS1xdWVyeSkKCQkgKHJlcGxhY2UgKHgt cG9wdXAtbWVudQoJCQkgICBwb3NuCgkJCSAgIDs7IFB1dCBkaWN0aW9uYXJ5IGluIG1lbnUg KHRoZSB1c2VyIHNob3VsZAoJCQkgICA7OyBub3QgaGF2ZSB0byBndWVzcyB3aGljaCBsYW5n dWFnZSBpcyB1c2VkKS4KCQkJICAgKGxpc3QKCQkJICAgIHdvcmQKCQkJICAgIChjb25zICIi IChvciBndWVzc2VzIChsaXN0ICIiKSkpCgkJCSAgICAoc3BlY2stbWVudS10YWlsCgkJCSAg ICAgKG5vdCAoc3RyaW5nLWVxdWFsIHdvcmQgKGRvd25jYXNlIHdvcmQpKSkKCQkJICAgICAo bm90IGlnbm9yZWQpKSkpKSkKCSAgICAod2hpbGUgKGVxIHJlcGxhY2UgJ3F1ZXJ5KQoJICAg ICAgKHNldHEgc3BlY2stcmVwbGFjZS1xdWVyeSAobm90IHNwZWNrLXJlcGxhY2UtcXVlcnkp KQoJICAgICAgKHNldHEgcmVwbGFjZSAoeC1wb3B1cC1tZW51CgkJCSAgICAgcG9zbgoJCQkg ICAgIChsaXN0CgkJCSAgICAgIHdvcmQKCQkJICAgICAgKGNvbnMgIiIgKG9yIGd1ZXNzZXMg IiIgKGxpc3QgIiIpKSkKCQkJICAgICAgKHNwZWNrLW1lbnUtdGFpbAoJCQkgICAgICAgKG5v dCAoc3RyaW5nLWVxdWFsIHdvcmQgKGRvd25jYXNlIHdvcmQpKSkKCQkJICAgICAgIChub3Qg aWdub3JlZCkpKSkpKQoJICAgICh3aGVuIChlcSByZXBsYWNlICdtaW5pYnVmZmVyKQoJICAg ICAgKHNldHEgcmVwbGFjZQoJCSAgICAocmVhZC1mcm9tLW1pbmlidWZmZXIKCQkgICAgICJD b3JyZWN0IHdvcmQ6ICIgd29yZCBtaW5pYnVmZmVyLWxvY2FsLW1hcCBuaWwKCQkgICAgICdz cGVjay1yZXBsYWNlLWhpc3Rvcnkgd29yZCB0KSkpCgkgICAgKGNvbmQKCSAgICAgKChtZW1x IHJlcGxhY2UgJyhwZXJzb25hbCBsb3dlcikpCgkgICAgICAoaWYgKGVxIHJlcGxhY2UgJ3Bl cnNvbmFsKQoJCSAgKHByb2Nlc3Mtc2VuZC1zdHJpbmcgc3BlY2stcHJvY2VzcyAoY29uY2F0 ICIqIiB3b3JkICJcbiIpKQoJCShwcm9jZXNzLXNlbmQtc3RyaW5nCgkJIHNwZWNrLXByb2Nl c3MgKGNvbmNhdCAiJiIgd29yZCAiXG4iKSkpCgkgICAgICAocHJvY2Vzcy1zZW5kLXN0cmlu ZyBzcGVjay1wcm9jZXNzICIjXG4iKQoJICAgICAgKHNwZWNrLWFkZC1jbGVhbnVwIG92ZXJs YXkgZnJvbSB0byB3b3JkKSkKCSAgICAgKChhbmQgKGVxIHJlcGxhY2UgJ2lnbm9yZSkgKG5v dCBpZ25vcmVkKSkKCSAgICAgIChzcGVjay1pZ25vcmUgd29yZCkKCSAgICAgIChzcGVjay1h ZGQtY2xlYW51cCBvdmVybGF5IGZyb20gdG8gd29yZCkpCgkgICAgIChyZXBsYWNlCgkgICAg ICAodW5sZXNzIChhdG9tIHJlcGxhY2UpCgkJKHNldHEgcmVwbGFjZSAoY2FyIHJlcGxhY2Up KSkKCSAgICAgIChzcGVjay1yZXBsYWNlLXdvcmQgZnJvbSB0byB3b3JkIHJlcGxhY2Ugb3Zl cmxheSkpKSkKCShwcm9jZXNzLXB1dCBwcm9jZXNzICdwcmVlbXB0ZWQgbmlsKSkpKSkKCihk ZWZ1biBzcGVjay1wb3B1cC1tZW51LWF0LXBvaW50ICgmb3B0aW9uYWwgYXQgcG9pbnQpCiAg IlBvcCB1cCBzcGVjayBtZW51LgpPcHRpb25hbCBhcmd1bWVudHMgQVQgYW5kIFBPSU5UIGlm IHNldCBtZWFuIHBvcHVwIG1lbnUgYXQgcG9zaXRpb24gQVQKYW5kIHJldHVybiB0byBwb3Np dGlvbiBQT0lOVCBhZnRlcndhcmRzLiAgQXQgbGVhc3Qgb25lIGxldHRlciBvZiB0aGUKaW5j b3JyZWN0IHdvcmQgbXVzdCBhcHBlYXIgYXQgdGhlIHJpZ2h0IG9mIGBwb2ludCcuIgogIChp bnRlcmFjdGl2ZSkKICAoc2V0LW1hcmtlciBzcGVjay1tYXJrZXIgKG9yIHBvaW50IChwb2lu dCkpKQogIChzZXRxIHNwZWNrLW1hcmtlci13aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpCiAg KHdoZW4gYXQgKGdvdG8tY2hhciBhdCkpCiAgKGxldCAoKHBvc24gKHBvc24tYXQtcG9pbnQp KSkKICAgIDs7IEFsd2F5cyBqdW1wIGJhY2sgdG8gYHNwZWNrLW1hcmtlcicuCiAgICAodW53 aW5kLXByb3RlY3QKCShzcGVjay1wb3B1cC1tZW51CgkgKGxpc3QgKGxpc3QgKGNhciAocG9z bi14LXkgcG9zbikpIChjZHIgKHBvc24teC15IHBvc24pKSkKCSAgICAgICAocG9zbi13aW5k b3cgcG9zbikpKQogICAgICAoc3BlY2stZ290by1tYXJrZXIpKSkpCgooZGVmdW4gc3BlY2st cG9wdXAtbWVudS1wcmV2aW91cyAoJm9wdGlvbmFsIGFyZykKICAiUG9wdXAgbWVudSBmb3Ig cHJldmlvdXMgd29yZCB3aXRoIGd1ZXNzZXMgb3IgbWlzcy4KV2l0aCBBUkcgbiBkbyB0aGlz IGZvciBudGggc3VjaCB3b3JkIHByZWNlZGluZyBgcG9pbnQnLiIKICAoaW50ZXJhY3RpdmUg InAiKQogIChsZXQgKChvdmVybGF5IChzcGVjay1wcmV2aW91cy1vdmVybGF5IChvciBhcmcg MSkgJyhzcGVjay1ndWVzcyBzcGVjay1taXNzKSkpKQogICAgKGlmIG92ZXJsYXkKCShzcGVj ay1wb3B1cC1tZW51LWF0LXBvaW50IChvdmVybGF5LXN0YXJ0IG92ZXJsYXkpIChwb2ludCkp CiAgICAgIChsZXQgKG1lc3NhZ2UtbG9nLW1heCkKCShtZXNzYWdlICJObyB3b3JkIGZvdW5k IC4uLiIpKSkpKQoKKGRlZnVuIHNwZWNrLXBvcHVwLW1lbnUtbmV4dCAoJm9wdGlvbmFsIGFy ZykKICAiUG9wdXAgbWVudSBmb3IgbmV4dCB3b3JkIHdpdGggZ3Vlc3NlcyBvciBtaXNzLgpX aXRoIEFSRyBuIGRvIHRoaXMgZm9yIG50aCBzdWNoIHdvcmQgZm9sbG93aW5nIGBwb2ludCcu IgogIChpbnRlcmFjdGl2ZSAicCIpCiAgKGxldCAoKG92ZXJsYXkgKHNwZWNrLW5leHQtb3Zl cmxheSAob3IgYXJnIDEpICcoc3BlY2stZ3Vlc3Mgc3BlY2stbWlzcykpKSkKICAgIChpZiBv dmVybGF5Cgkoc3BlY2stcG9wdXAtbWVudS1hdC1wb2ludCAob3ZlcmxheS1zdGFydCBvdmVy bGF5KSAocG9pbnQpKQogICAgICAobGV0IChtZXNzYWdlLWxvZy1tYXgpCgkobWVzc2FnZSAi Tm8gd29yZCBmb3VuZCAuLi4iKSkpKSkKCihkZWZ1biBzcGVjay1tb3VzZS1wb3B1cC1tZW51 IChldmVudCkKICAiUG9wIHVwIHNwZWNrIG1lbnUgYXQgbW91c2UtcG9zaXRpb24uClNob3Vs ZCBiZSBib3VuZCB0byBhIGNsaWNrIGV2ZW50LiIKICAoaW50ZXJhY3RpdmUgImUiKQogIChz ZXQtbWFya2VyIHNwZWNrLW1hcmtlciAod2luZG93LXBvaW50KSAoY3VycmVudC1idWZmZXIp KQogIChzZXRxIHNwZWNrLW1hcmtlci13aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpCiAgKG1v dXNlLXNldC1wb2ludCBldmVudCkKICA7OyBBbHdheXMganVtcCBiYWNrIHRvIGBzcGVjay1t YXJrZXInLgogICh1bndpbmQtcHJvdGVjdAogICAgICAoc3BlY2stcG9wdXAtbWVudSBldmVu dCkKICAgIChzcGVjay1nb3RvLW1hcmtlcikpKQoKOzsgX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8KOzs7CQkJICAgICAgIFBhcnNpbmcgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8KOzsgX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8KCihkZWZ1biBzcGVjay1t YWtlLW92ZXJsYXkgKGZyb20gdG8gZmFjZSkKICAiTWFrZSBvdmVybGF5IGZyb20gRlJPTSB0 byBUTyB3aXRoIGZhY2UgRkFDRS4iCiAgKHVubGVzcyAob3IgKHNwZWNrLWlnbm9yZWQgKHNw ZWNrLXN0cmluZyBmcm9tIHRvKSkKCSAgICAgIChhbmQgKGVxIG1ham9yLW1vZGUgJ3RleGlu Zm8tbW9kZSkKCQkgICAob3IgKGVxIChjaGFyLWJlZm9yZSBmcm9tKSA/XEApCgkJICAgICAg IChzYXZlLWV4Y3Vyc2lvbgoJCQkgKGdvdG8tY2hhciBmcm9tKQoJCQkgKGJlZ2lubmluZy1v Zi1saW5lKQoJCQkgKGxvb2tpbmctYXQgIlxcQFxcKD86XFwoPzpkZWZcXCg/OnVuXFx8dmFy XFx8b3B0XFx8Zm5cXClcXClcXHxlbmRcXCkiKSkpKSkKICAgIChsZXQgKChvdmVybGF5ICht YWtlLW92ZXJsYXkgZnJvbSB0bykpKQogICAgICAob3ZlcmxheS1wdXQgb3ZlcmxheSAnc3Bl Y2sgdCkKICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2V2YXBvcmF0ZSB0KQogICAgICAo b3ZlcmxheS1wdXQgb3ZlcmxheSAnZmFjZSBmYWNlKQogICAgICAob3ZlcmxheS1wdXQgb3Zl cmxheSAna2V5bWFwIHNwZWNrLW92ZXJsYXktbWFwKSkpKQoKKGRlZnVuIHNwZWNrLXdvcmRj aGFycyAod29yZGNoYXJzLXJlZ2V4cCkKICAiU3BlY2sncyBpbnRlcm5hbCB3b3JkY2hhcnMg ZnVuY3Rpb24uIgogIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgOzsgUmVwbGFjZSBjaGFy IGF0IEJPQi4KICAod2hlbiAobG9va2luZy1hdCB3b3JkY2hhcnMtcmVnZXhwKQogICAgKHJl cGxhY2UtbWF0Y2ggIiAiKQogICAgKGZvcndhcmQtY2hhcikpCiAgKHdoaWxlIChyZS1zZWFy Y2gtZm9yd2FyZCB3b3JkY2hhcnMtcmVnZXhwIG5pbCB0KQogICAgKGJhY2t3YXJkLWNoYXIg MSkKICAgIChpZiAoZXEgKGNoYXItc3ludGF4IChjaGFyLWJlZm9yZSkpID9cdykKCShwcm9n bgoJICAoZm9yd2FyZC1jaGFyKQoJICAod2hlbiAob3IgKGVvYnApIChub3QgKGVxIChjaGFy LXN5bnRheCAoY2hhci1hZnRlcikpID9cdykpKQoJICAgIDs7IFJlcGxhY2UgY2hhciBhdCBF T0Igb3IgZm9sbG93ZWQgYnkgYSBub24td29yZC1jaGFyLgoJICAgIChkZWxldGUtY2hhciAt MSkKCSAgICAoaW5zZXJ0ID9cICkpKQogICAgICA7OyBSZXBsYWNlIGNoYXIgcHJlY2VkZWQg YnkgYSBub24td29yZC1jaGFyLgogICAgICAoZGVsZXRlLWNoYXIgMSkKICAgICAgKGluc2Vy dCA/XCApCiAgICAgIChmb3J3YXJkLWNoYXIpKSkpCgooZGVmdW4gc3BlY2stbG9nICgmcmVz dCByZXN0KQogICJMb2cgUkVTVCBpbiBvdXIgTG9nIGJ1ZmZlci4iCiAgKHdpdGgtY3VycmVu dC1idWZmZXIgKHNwZWNrLWxvZy1idWZmZXIpCiAgICAoZ290by1jaGFyIChwb2ludC1tYXgp KQogICAgKHdoZW4gcmVzdAogICAgICAoaW5zZXJ0IChmb3JtYXQgIiVzIiAoY2FyIHJlc3Qp KSkKICAgICAgKHNldHEgcmVzdCAoY2RyIHJlc3QpKQogICAgICAod2hpbGUgcmVzdAoJKGlu c2VydCAoZm9ybWF0ICIgJXMiIChjYXIgcmVzdCkpKQoJKHNldHEgcmVzdCAoY2RyIHJlc3Qp KSkKICAgICAgKGluc2VydCAiXG4iKSkpKQoKKGRlZnVuIHNwZWNrLWNodW5rIChmcm9tLTEg dG8tMSBwcm9jZXNzIHdpbmRvdy1idWZmZXIgZnJvbSB0bykKICAiU3BlY2sgY3VycmVudCBi dWZmZXIncyBjaHVuayBmcm9tIEZST00tMSB0byBUTy0xLgpUaGUgY3VycmVudCBidWZmZXIg Y29udGFpbnMgdGhlIHN0cmV0Y2ggdG8gcGFyc2Ugd2hlbiB0aGlzIGdldHMKY2FsbGVkIGFu ZCBGUk9NLTEgYW5kIFRPLTEgYXJlIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBjaHVuayB0 bwpzZW5kIHRvIHRoZSBzcGVsbGluZyBwcm9jZXNzIFBST0NFU1MgLgoKV0lORE9XLUJVRkZF UiBpcyB0aGUgYnVmZmVyIHdoZXJlIHRoZSBjaHVuayBvcmlnaW5hbGx5IHN0ZW1zIGZyb20K YW5kIEZST00gYW5kIFRPIGFyZSB0aGUgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbnMgb2YgdGhl IHN0cmV0Y2gKdGhhdCBjb250YWlucyB0aGlzIGNodW5rLiAgQW55IG92ZXJsYXlzIHJlcHJl c2VudGluZyBndWVzc2VzIGFuZAptaXNzZXMgYXJlIG1hZGUgaW4gV0lORE9XLUJVRkZFUiBi eSBhZGRpbmcgdGhlIGNodW5rIHN0YXJ0CnBvc2l0aW9uIEZST00tMSB0byB0aGUgc3RyZXRj aCBzdGFydCBwb3NpdGlvbiBGUk9NLiIKICAobGV0IChkb25lIHBvcyBhdCBsZW5ndGggd29y ZCBsb2ctY2h1bmsgbG9nLW91dHB1dCByZWFkKQoKICAgIDs7IFByb2Nlc3Mgc3RhbGUgb3V0 cHV0LgogICAgKHdpdGgtY3VycmVudC1idWZmZXIgKHByb2Nlc3MtYnVmZmVyIHByb2Nlc3Mp CiAgICAgIChzaXQtZm9yIDAuMDUpCiAgICAgIChlcmFzZS1idWZmZXIpCiAgICAgIChtb3Zl LW1hcmtlciBzcGVjay1wcm9jZXNzLW1hcmtlciAocG9pbnQtbWluKSkpCgogICAgKHNhdmUt ZXhjdXJzaW9uCiAgICAgIDs7IEluc2VydCBhIGxlYWRpbmcgIl4iIGFuZCBhIGZpbmFsIG5l d2xpbmUsIHNlbmQgdGhlIHJlZ2lvbiB0bwogICAgICA7OyB0aGUgc3BlbGwgcHJvY2VzcyBh bmQgcmV2ZXJ0IHRoZSBpbnNlcnRpb25zIGltbWVkaWF0ZWx5LgogICAgICAoZ290by1jaGFy IHRvLTEpIChpbnNlcnQtY2hhciA/XG4pCiAgICAgIChnb3RvLWNoYXIgZnJvbS0xKSAoaW5z ZXJ0ICJeIikKICAgICAgKHByb2Nlc3Mtc2VuZC1yZWdpb24gcHJvY2VzcyBmcm9tLTEgKCsg dG8tMSAyKSkKICAgICAgKGdvdG8tY2hhciBmcm9tLTEpIChkZWxldGUtY2hhciAxKQogICAg ICAoZ290by1jaGFyIHRvLTEpIChkZWxldGUtY2hhciAxKSkKCiAgICAod2l0aC1jdXJyZW50 LWJ1ZmZlciAocHJvY2Vzcy1idWZmZXIgcHJvY2VzcykKICAgICAgKHNpdC1mb3IgMC4xKQoK ICAgICAgKHdoZW4gc3BlY2stbG9nCgkobGV0ICgoc2l6ZSAoLSAocG9pbnQtbWF4KSAocG9p bnQtbWluKSkpCgkgICAgICAoc3RyaW5nIChzcGVjay1zdHJpbmcgKHBvaW50LW1pbikgKG1p biAocG9pbnQtbWF4KSAyMCkpKSkKCSAgKHdpdGgtY3VycmVudC1idWZmZXIgKHNwZWNrLWxv Zy1idWZmZXIpCgkgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKCSAgICAoaW5zZXJ0IChm b3JtYXQgIkZJUlNUOiAlcyAoJXMtJXMpICVzXG4iIHNpemUgZnJvbSB0byBzdHJpbmcpKSkp KQoKICAgICAgOzsgUXVpdCBpZiB0aGVyZSBpcyBpbnB1dC4KICAgICAgKHdoaWxlIChhbmQg KG5vdCBkb25lKQoJCSAgKG9yIChhbmQgKG5vdCBxdWl0LWZsYWcgKSAobm90IChpbnB1dC1w ZW5kaW5nLXApKSkKCQkgICAgICAocHJvZ24KCQkJKHdpdGgtY3VycmVudC1idWZmZXIgd2lu ZG93LWJ1ZmZlcgoJCQkgICh3aGVuIChwcm9jZXNzLWxpdmUtcCBzcGVjay1wcm9jZXNzKQoJ CQkgICAgKGxldCAoKHByb2Nlc3MtYnVmZmVyIChwcm9jZXNzLWJ1ZmZlciBzcGVjay1wcm9j ZXNzKSkpCgkJCSAgICAgICh3aGVuIChidWZmZXItbGl2ZS1wIHByb2Nlc3MtYnVmZmVyKQoJ CQkJKGtpbGwtYnVmZmVyIHByb2Nlc3MtYnVmZmVyKSkpKQoJCQkgIChzZXRxIHNwZWNrLXBy b2Nlc3MgbmlsKQoJCQkgIChzcGVjay1yZS1zdGFydC1wcm9jZXNzCgkJCSAgIHNwZWNrLWJ1 ZmZlci1kaWN0aW9uYXJpZXMtc3RyaW5nIHNwZWNrLWJ1ZmZlci1vcHRpb25zKSkKCgkJCSh3 aGVuIHNwZWNrLWxvZwoJCQkgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChzcGVjay1sb2ctYnVm ZmVyKQoJCQkgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKCQkJICAgIChpbnNlcnQgIlJF U1RBUlRcbiIpKSkKCgkJCShzZXRxIGRvbmUgbmlsKSkpCgkJICAocHJvZ24KCQkgICAgKHNp dC1mb3IgMC4xKQoKCQkgICAgKHdoZW4gc3BlY2stbG9nCgkJICAgICAgKGxldCAoKHNpemUg KC0gKHBvaW50LW1heCkgKHBvaW50LW1pbikpKQoJCQkgICAgKHN0cmluZyAoc3BlY2stc3Ry aW5nIDEgKG1pbiAocG9pbnQtbWF4KSAyMCkpKSkKCQkJKHdpdGgtY3VycmVudC1idWZmZXIg KHNwZWNrLWxvZy1idWZmZXIpCgkJCSAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKCQkJICAo aW5zZXJ0IChmb3JtYXQgIlJFQUQ6ICVzICglcy0lcykgJXNcbiIgc2l6ZSBmcm9tIHRvIHN0 cmluZykpKSkpCgoJCSAgICAob3IgKD4gKHBvaW50LW1heCkgKHBvaW50LW1pbikpCgkJCShw cm9nbgoKCQkJICAod2hlbiBzcGVjay1sb2cKCQkJICAgICh3aXRoLWN1cnJlbnQtYnVmZmVy IChzcGVjay1sb2ctYnVmZmVyKQoJCQkgICAgICAoZ290by1jaGFyIChwb2ludC1tYXgpKQoJ CQkgICAgICAoaW5zZXJ0ICJOTyBPVVRQVVRcbiIpKSkKCgkJCSAgKHNldHEgZG9uZSBuaWwp KSkpKQoKCSh3aGVuIHNwZWNrLWxvZwoJICAoc2V0cSBsb2ctb3V0cHV0IChzcGVjay1zdHJp bmcpKSkKCgkoZ290by1jaGFyIHNwZWNrLXByb2Nlc3MtbWFya2VyKQoJOzsgVGhpcyBpcyBz dGlsbCBhIGhhcmQgbG9vcCB3ZSBkbyBub3QgaW50ZXJydXB0IHlldC4gIEJ1dCBub3RlCgk7 OyB0aGF0IGl0IGhhcyBhbGwgaW5ncmVkaWVudHMgd2l0aCB0aGUgYnVmZmVyIHBvc2l0aW9u IG9mIGVhY2gKCTs7IG1pc3NwZWxsZWQgaXRlbSAtIHNvIHdlIGNvdWxkIHF1aXQgdGhlcmUs IGlmIHdlIHdhbnQgdG8uCgkod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJcXCheJiBcXClc XHxcXCheIyBcXCkiIG5pbCAnbm9lcnJvcikKCSAgKGNvbmQKCSAgICgobWF0Y2gtYmVnaW5u aW5nIDEpCQkJOyAmCgkgICAgKHNldHEgYXQgKHBvaW50KSkKCSAgICAoc2V0cSBsZW5ndGgg KHNraXAtY2hhcnMtZm9yd2FyZCAiXiAiKSkKCSAgICAoc2V0cSB3b3JkIChzcGVjay1zdHJp bmcgYXQgKHBvaW50KSkpCgkgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiICIpCgkgICAgKHNr aXAtY2hhcnMtZm9yd2FyZCAiMC05IikKCSAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgIikK CSAgICAoc2V0cSBhdCAocG9pbnQpKQoJICAgIChza2lwLWNoYXJzLWZvcndhcmQgIl46IikK CSAgICAoc2V0cSBwb3MgKHN0cmluZy10by1udW1iZXIgKHNwZWNrLXN0cmluZyBhdCAocG9p bnQpKSkpCgkgICAgKHdoZW4gKD0gKGZvcndhcmQtbGluZSkgMCkKCSAgICAgIChtb3ZlLW1h cmtlciBzcGVjay1wcm9jZXNzLW1hcmtlciAocG9pbnQpKQoJICAgICAgKHdpdGgtY3VycmVu dC1idWZmZXIgd2luZG93LWJ1ZmZlcgoJCShsZXQgKChmcm9tLTIgKCsgZnJvbSBwb3MgLTEp KQoJCSAgICAgICh0by0yICgrIGZyb20gcG9zIGxlbmd0aCAtMSkpKQoJCSAgKHNwZWNrLW1h a2Utb3ZlcmxheSBmcm9tLTIgdG8tMiAnc3BlY2stZ3Vlc3MpCgoJCSAgKHdoZW4gc3BlY2st bG9nCgkJICAgIChsZXQgKChzdHJpbmcgKHNwZWNrLXN0cmluZyBmcm9tLTIgdG8tMikpKQoJ CSAgICAgIChjb25kCgkJICAgICAgICgobm90IChzdHJpbmctZXF1YWwgd29yZCBzdHJpbmcp KQoJCQkod2l0aC1jdXJyZW50LWJ1ZmZlciAoc3BlY2stbG9nLWJ1ZmZlcikKCQkJICAoZ290 by1jaGFyIChwb2ludC1tYXgpKQoJCQkgIChpbnNlcnQgKGZvcm1hdCAiQkFEIFdPUkQ6ICVz IGF0OiAlcyBpcyBub3Q6ICVzXG4iCgkJCQkJICB3b3JkIGZyb20tMiBzdHJpbmcpKSkpCgkJ ICAgICAgICgoYW5kICg8IHRvLTIgKHBvaW50LW1heCkpCgkJCSAgICAgKGVxIChjaGFyLXN5 bnRheCAoY2hhci1hZnRlciB0by0yKSkgP1x3KSkKCQkJKHdpdGgtY3VycmVudC1idWZmZXIg KHNwZWNrLWxvZy1idWZmZXIpCgkJCSAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKCQkJICAo aW5zZXJ0IChmb3JtYXQgIklOQ09NUExFVEU6ICVzIGF0OiAlcyBpcyBub3Q6ICVzXG4iCgkJ CQkJICB3b3JkIGZyb20tMiBzdHJpbmcpKSkpKSkpKSkpKQoJICAgKChtYXRjaC1iZWdpbm5p bmcgMikJCQk7ICMKCSAgICAoc2V0cSBhdCAocG9pbnQpKQoJICAgIChzZXRxIGxlbmd0aCAo c2tpcC1jaGFycy1mb3J3YXJkICJeICIpKQoJICAgIChzZXRxIHdvcmQgKHNwZWNrLXN0cmlu ZyBhdCAocG9pbnQpKSkKCSAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgIikKCSAgICAoc2V0 cSBhdCAocG9pbnQpKQoJICAgIChza2lwLWNoYXJzLWZvcndhcmQgIjAtOSIpCgkgICAgKHNl dHEgcG9zIChzdHJpbmctdG8tbnVtYmVyIChzcGVjay1zdHJpbmcgYXQgKHBvaW50KSkpKQoJ ICAgICh3aGVuICg9IChmb3J3YXJkLWxpbmUpIDApCgkgICAgICAobW92ZS1tYXJrZXIgc3Bl Y2stcHJvY2Vzcy1tYXJrZXIgKHBvaW50KSkKCSAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVy IHdpbmRvdy1idWZmZXIKCQkobGV0ICgoZnJvbS0yICgrIGZyb20gcG9zIC0xKSkKCQkgICAg ICAodG8tMiAoKyBmcm9tIHBvcyBsZW5ndGggLTEpKSkKCQkgIChzcGVjay1tYWtlLW92ZXJs YXkgZnJvbS0yIHRvLTIgJ3NwZWNrLWd1ZXNzKQoKCQkgICh3aGVuIHNwZWNrLWxvZwoJCSAg ICAobGV0ICgoc3RyaW5nIChzcGVjay1zdHJpbmcgZnJvbS0yIHRvLTIpKSkKCQkgICAgICAo Y29uZAoJCSAgICAgICAoKG5vdCAoc3RyaW5nLWVxdWFsIHdvcmQgc3RyaW5nKSkKCQkJKHdp dGgtY3VycmVudC1idWZmZXIgKHNwZWNrLWxvZy1idWZmZXIpCgkJCSAgKGdvdG8tY2hhciAo cG9pbnQtbWF4KSkKCQkJICAoaW5zZXJ0IChmb3JtYXQgIkJBRCBXT1JEOiAlcyBhdDogJXMg aXMgbm90OiAlc1xuIgoJCQkJCSAgd29yZCBmcm9tLTIgc3RyaW5nKSkpKQoJCSAgICAgICAo KGFuZCAoPCB0by0yIChwb2ludC1tYXgpKQoJCQkgICAgIChlcSAoY2hhci1zeW50YXggKGNo YXItYWZ0ZXIgdG8tMikpID9cdykpCgkJCSh3aXRoLWN1cnJlbnQtYnVmZmVyIChzcGVjay1s b2ctYnVmZmVyKQoJCQkgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCgkJCSAgKGluc2VydCAo Zm9ybWF0ICJJTkNPTVBMRVRFOiAlcyBhdDogJXMgaXMgbm90OiAlc1xuIgoJCQkJCSAgd29y ZCBmcm9tLTIgc3RyaW5nKSkpKSkpKSkpKSkpKQoKCTs7IFdpdGggZXJyb3JzIHdlIGdldCB0 d28gbmV3bGluZXMgYXQgRU9CLCB3aXRob3V0IGVycm9ycyBhCgk7OyBidWZmZXIgY29udGFp bmluZyBvbmUgbmV3bGluZSBjaGFyYWN0ZXIgb25seS4gIFNldCBkb25lIHdoZW4KCTs7IHRo ZSBzcGVsbGluZyBlbmdpbmUgaGFzIHNlbnQgdXMgZXZlcnl0aGluZyBmb3IgdGhpcyBjaHVu ay4KCSh3aGVuIChhbmQgKGVxIChjaGFyLWJlZm9yZSAocG9pbnQtbWF4KSkgP1xuKQoJCSAg IChvciAoPSAocG9pbnQtbWluKSAoMS0gKHBvaW50LW1heCkpKQoJCSAgICAgICAoZXEgKGNo YXItYmVmb3JlICgxLSAocG9pbnQtbWF4KSkpID9cbikpKQoJICAoc2V0cSBkb25lIHQpKSkK CiAgICAgICh3aGVuIHNwZWNrLWxvZwoJKHdpdGgtY3VycmVudC1idWZmZXIgKHNwZWNrLWxv Zy1idWZmZXIpCgkgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCgkgIChpbnNlcnQgKGZvcm1h dCAiQ0hVTksgRE9ORTogJXMgKCVzLSVzKVxuIiBkb25lIGZyb20gdG8pKSkpCgogICAgICBk b25lKSkpCgooZGVmdW4gc3BlY2stc3RyZXRjaCAoZnJvbSB0bykKICAiU3BlY2sgY3VycmVu dCBidWZmZXIncyBzdHJldGNoIGZyb20gRlJPTSB0byBUTy4iCiAgKGxldCAoKGRvbmUgdCkK CShwcm9jZXNzIHNwZWNrLXByb2Nlc3MpCgkod2luZG93LWJ1ZmZlciAoY3VycmVudC1idWZm ZXIpKQoJKHdvcmRjaGFycy1mdW5jdGlvbiBzcGVjay13b3JkY2hhcnMtZnVuY3Rpb24pCgko d29yZGNoYXJzLXJlZ2V4cCBzcGVjay13b3JkY2hhcnMtcmVnZXhwKQoJZnJvbS0xIHRvLTEg bG9nLXN0cmV0Y2gpCiAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVh dGUgIipzcGVjay1zdHJldGNoKiIpCiAgICAgIChzZXRxIGJ1ZmZlci11bmRvLWxpc3QgdCkK ICAgICAgKGVyYXNlLWJ1ZmZlcikKICAgICAgOzsgQSByZWFsIGBpbnNlcnQtYnVmZmVyLXN1 YnN0cmluZy1uby1wcm9wZXJ0aWVzJyBpcyBhIHBpcGUgZHJlYW0uCiAgICAgIChpbnNlcnQt YnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIHdpbmRvdy1idWZmZXIgZnJvbSB0bykK CiAgICAgIDs7IFJlcGxhY2Ugd29yZGNoYXJzIHdpdGggc3BhY2VzLiAgSXQgd291bGQgYmUg dGVtcHRpbmcgdG8gY2hlY2sKICAgICAgOzsgdGhlc2Ugd2hlbiBtYWtpbmcgdGhlIG92ZXJs YXlzIGJ1dCB0aGVuIHdlIHdvdWxkIGhhdmUgdG8gc2VuZAogICAgICA7OyB0aGUgd29yZCBw cm9wZXIgYSBzZWNvbmQgdGltZSBiZWNhdXNlIHRoZSB3b3JkIG1pZ2h0IGJlCiAgICAgIDs7 IG1pc3NwZWxsZWQgb3IgaXQgbWlnaHQgYmUgZW5jbG9zZWQgYnkgdGhlIHdvcmRjaGFycywg b3IgYm90aCEKICAgICAgOzsgU2VuZGluZyB0aGUgd29yZCBhIHNlY29uZCB0aW1lIHdvdWxk IG1lYW4gdG8gaW50ZXJydXB0IHRoZQogICAgICA7OyB1bmRlcmx5aW5nIGNodW5rIGxvZ2lj IHNvIHdlIGRvIHRoYXQgcmVwbGFjZW1lbnQgaGVyZS4KICAgICAgKHdoZW4gd29yZGNoYXJz LWZ1bmN0aW9uCgkoZ290by1jaGFyIChwb2ludC1taW4pKQoJKGZ1bmNhbGwgd29yZGNoYXJz LWZ1bmN0aW9uIHdvcmRjaGFycy1yZWdleHApKQoKICAgICAgOzsgUmVwbGFjZSBuZXdsaW5l cyB3aXRoIHNwYWNlcy4gIFdlIHByb2JhYmx5IHNob3VsZCBkbyB0aGF0IGZvcgogICAgICA7 OyBjaHVua3Mgb25seSBidXQgaXQncyB0b28gdGVtcHRpbmcgdG8gcnVuIGl0IGluIG9uZSBy dXNoIGhlcmUuCiAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgICh3aGlsZSAo cmUtc2VhcmNoLWZvcndhcmQgIlxuIiBuaWwgJ25vZXJyb3IpCgkocmVwbGFjZS1tYXRjaCAi ICIpKQoKICAgICAgKHdoZW4gc3BlY2stbG9nCgk7OyBMb2cgc3RyZXRjaCAtIGl0cyBmaXJz dCBhbmQgbGFzdCBsaW5lcywgYXQgbGVhc3QuCgkoZ290by1jaGFyIChwb2ludC1taW4pKQoJ KGlmIChhbmQgKHJlLXNlYXJjaC1mb3J3YXJkICJcbiIgbmlsICdub2Vycm9yKSAobm90IChl b2JwKSkpCgkgICAgKGxldCAoKHBvaW50IChwb2ludCkpKQoJICAgICAgKHNldHEgbG9nLXN0 cmV0Y2ggKHNwZWNrLXN0cmluZyBuaWwgKDEtIChwb2ludCkpKSkKCSAgICAgIChnb3RvLWNo YXIgKHBvaW50LW1heCkpCgkgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiWyBcblx0XSIp CgkgICAgICAoaWYgKD4gKHBvaW50KSBwb2ludCkKCQkgIChzZXRxIGxvZy1zdHJldGNoCgkJ CShjb25jYXQgbG9nLXN0cmV0Y2ggIi4uLiIKCQkJCShzcGVjay1zdHJpbmcKCQkJCSAobGlu ZS1iZWdpbm5pbmctcG9zaXRpb24pIChwb2ludCkpKSkKCQkoc2V0cSBsb2ctc3RyZXRjaCAo c3BlY2stc3RyaW5nIG5pbCAocG9pbnQpKSkpKQoJICAoc2V0cSBsb2ctc3RyZXRjaCAoc3Bl Y2stc3RyaW5nKSkpCgkod2l0aC1jdXJyZW50LWJ1ZmZlciAoc3BlY2stbG9nLWJ1ZmZlcikK CSAgKGluc2VydCAoZm9ybWF0ICJTVFJFVENIICglcy0lcyk6ICVzXG4iIGZyb20gdG8gbG9n LXN0cmV0Y2gpKSkpCgogICAgICA7OyBFeHRyYWN0IGNodW5rcyBmcm9tIHN0cmV0Y2guCiAg ICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgIChzZXRxIGZyb20tMSAocG9pbnQt bWluKSkKICAgICAgKHdoaWxlIChhbmQgZG9uZSAoPCBmcm9tLTEgKHBvaW50LW1heCkpKQoJ OzsgU2V0IHRvLTEgdG8gdGhlIGxhcmdlc3QgYnVmZmVyIHBvc2l0aW9uIHByZWNlZGluZyBh Cgk7OyAnc3BlY2stY2h1bmstbWF4JyBieXRlIG9mZnNldCBhZnRlciBmcm9tLTEuCgkobGV0 ICgodG8tMSAob3IgKGJ5dGUtdG8tcG9zaXRpb24KCQkJICgrIChwb3NpdGlvbi1ieXRlcyBm cm9tLTEpIHNwZWNrLWNodW5rLW1heCkpCgkJCShwb2ludC1tYXgpKSkpCgkgICh3aGVuICg8 IHRvLTEgKHBvaW50LW1heCkpCgkgICAgKGdvdG8tY2hhciB0by0xKQoJICAgIChza2lwLWNo YXJzLWJhY2t3YXJkICJeIFx0IikKCSAgICAoc2V0cSB0by0xIChwb2ludCkpKQoKCSAgKGlm ICg8PSB0by0xIGZyb20tMSkKCSAgICAgIDs7IElmIHNlYXJjaGluZyBmb3IgYSB3aGl0ZXNw YWNlIGhhcyBnb3QgdXMgYmVmb3JlIGZyb20tMSwKCSAgICAgIDs7IHdlIGhhdmUgYSBjaHVu ayB0aGF0IGRvZXMgbm90IGZpdCwgdGhhdCBpcywgYW4gb3Zlcmx5CgkgICAgICA7OyBsb25n IG5vbi13aGl0ZXNwYWNlIHN0cmluZy4gIEp1c3QgbWFyayBpdCBhcyBzcGVja2VkLgoJICAg ICAgKHByb2duCgkJKHNraXAtY2hhcnMtZm9yd2FyZCAiXiBcdCIpCgkJKHNldHEgdG8tMSAo cG9pbnQpKQoJCSh3aXRoLWN1cnJlbnQtYnVmZmVyIHdpbmRvdy1idWZmZXIKCQkgIChsZXQg KChmcm9tLTIgKCsgZnJvbSBmcm9tLTEgLTEpKQoJCQkodG8tMiAoKyBmcm9tIHRvLTEgLTEp KSkKCQkgICAgKHdpdGgtc2lsZW50LW1vZGlmaWNhdGlvbnMKCQkgICAgICAocHV0LXRleHQt cHJvcGVydHkgZnJvbS0yIHRvLTIgJ3NwZWNrZWQgdCkKCgkJICAgICAgKHdoZW4gc3BlY2st bG9nCgkJCSh3aXRoLWN1cnJlbnQtYnVmZmVyIChzcGVjay1sb2ctYnVmZmVyKQoJCQkgIChp bnNlcnQgKGZvcm1hdCAiSUdOT1JFOiAlcy0lc1xuIiBmcm9tLTIgdG8tMikpKQoJCQkocHV0 LXRleHQtcHJvcGVydHkKCQkJIGZyb20tMiB0by0yICdmYWNlICdzcGVjay1zcGVja2VkKSkp KSkKCgkJKHNldHEgdG8tMSAocG9pbnQpKSkKCSAgICA7OyBBIGNodW5rIHRoYXQgZml0cywg cHJvY2VzcyBpdC4KCSAgICAoc2V0cSBkb25lCgkJICAoc3BlY2stY2h1bmsKCQkgICBmcm9t LTEgdG8tMSBwcm9jZXNzIHdpbmRvdy1idWZmZXIKCQkgICAoKyBmcm9tIGZyb20tMSAtMSkg KCsgZnJvbSB0by0xIC0xKSkpCgoJICAgICh3aGVuIGRvbmUKCSAgICAgIChsZXQgKChmcm9t LTIgKCsgZnJvbSBmcm9tLTEgLTEpKQoJCSAgICAodG8tMiAoKyBmcm9tIHRvLTEgLTEpKSkK CQkod2hlbiBzcGVjay1sb2cKCQkgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChzcGVjay1sb2ct YnVmZmVyKQoJCSAgICAoaW5zZXJ0IChmb3JtYXQgIlNQRUNLRUQgJXMtJXNcbiIgZnJvbS0y IHRvLTIpKSkpCgoJCSh3aXRoLWN1cnJlbnQtYnVmZmVyIHdpbmRvdy1idWZmZXIKCQkgICh3 aXRoLXNpbGVudC1tb2RpZmljYXRpb25zCgkJICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBmcm9t LTIgdG8tMiAnc3BlY2tlZCB0KQoJCSAgICAod2hlbiBzcGVjay1sb2cKCQkgICAgICAocHV0 LXRleHQtcHJvcGVydHkKCQkgICAgICAgZnJvbS0yIHRvLTIgJ2ZhY2UgJ3NwZWNrLXNwZWNr ZWQpKSkpKSkpCgoJICAoc2V0cSBmcm9tLTEgdG8tMSkpKQoKICAgICAgKHdoZW4gc3BlY2st bG9nCgkod2l0aC1jdXJyZW50LWJ1ZmZlciAoc3BlY2stbG9nLWJ1ZmZlcikKCSAgKGdvdG8t Y2hhciAocG9pbnQtbWF4KSkKCSAgKGluc2VydCAoZm9ybWF0ICJTVFJFVENIIERPTkU6ICVz ICglcy0lcylcbiIgZG9uZSBmcm9tIHRvKSkpKQoKICAgICAgZG9uZSkpKQoKOzsgKHNldHEg c3BlY2stZmFjZS1lbmZvcmNlLWxpc3QgJyhmb250LWxvY2stZG9jLWZhY2UgZm9udC1sb2Nr LWNvbW1lbnQtZmFjZSkpCgooZGVmdW4gc3BlY2stZW5mb3JjZS1mYWNlLWF0LXBvaW50ICgp CiAgIlJldHVybiBub24tbmlsIHdoZW4gYSBmYWNlIHByb3BlcnR5IGF0IHBvaW50IGlzIGVu Zm9yY2VkLiIKICAodW5sZXNzIChlb2JwKQogICAgKGxldCAoKGZhY2VzIChnZXQtdGV4dC1w cm9wZXJ0eSAocG9pbnQpICdmYWNlKSkpCiAgICAgIChjb25kCiAgICAgICAoKG5vdCBmYWNl cykKCW5pbCkKICAgICAgICgobGlzdHAgZmFjZXMpCgk7OyBXZSBoYXZlIGEgbGlzdCBvZiBm YWNlIHByb3BlcnRpZXMuCgkoY2F0Y2ggJ2ZvdW5kCgkgIChkb2xpc3QgKGZhY2UgZmFjZXMg dCkKCSAgICAod2hlbiAobWVtcSBmYWNlIHNwZWNrLWZhY2UtZW5mb3JjZS1saXN0KQoJICAg ICAgKHRocm93ICdmb3VuZCB0KSkpKSkKICAgICAgICh0IDsgQXRvbS4KCShtZW1xIGZhY2Vz IHNwZWNrLWZhY2UtZW5mb3JjZS1saXN0KSkpKSkpCgooZGVmdW4gc3BlY2std2luZG93ICgm b3B0aW9uYWwgd2luZG93KQogICJTcGVjayBzcGVjaWZpZWQgV0lORE9XLiIKICAobGV0KiAo KHdpbmRvdyAob3Igd2luZG93IChzZWxlY3RlZC13aW5kb3cpKSkKCSAod2luZG93LWJ1ZmZl ciAod2luZG93LWJ1ZmZlciB3aW5kb3cpKQoJICh3aW5kb3ctc3RhcnQgKHdpbmRvdy1zdGFy dCB3aW5kb3cpKQoJICh3aW5kb3ctZW5kICh3aW5kb3ctZW5kIHdpbmRvdykpCgkgKGZyb20g d2luZG93LXN0YXJ0KQoJIChkb25lIHQpCgkgdG8gZnJvbS0xKQogICAgKHdpdGgtY3VycmVu dC1idWZmZXIgd2luZG93LWJ1ZmZlcgogICAgICAod2hlbiAoYW5kIHNwZWNrLXByb2Nlc3Mg KG5vdCAocHJvY2Vzcy1nZXQgc3BlY2stcHJvY2VzcyAncHJlZW1wdGVkKSkpCgkod2l0aC1z aWxlbnQtbW9kaWZpY2F0aW9ucwoJIChsZXQgKG1pbmlidWZmZXItYXV0by1yYWlzZSBtZXNz YWdlLWxvZy1tYXgpCgkgICAoc2F2ZS1leGN1cnNpb24KCgkgICAgICh3aGVuIHNwZWNrLWZh Y2UtZW5mb3JjZS1saXN0CgkgICAgICAgKHNhdmUtZXhjdXJzaW9uCgkJIChnb3RvLWNoYXIg d2luZG93LXN0YXJ0KQoJCSA7OyBmcm9tLTEgbm9uLW5pbCBwb2ludHMgYXQgdGhlIGZpcnN0 IHBvc2l0aW9uIHRoYXQKCQkgOzsgc2hvdWxkIG5vdCBiZSBzcGVja2VkLgoJCSAoc2V0cSBm cm9tLTEgKHVubGVzcyAoc3BlY2stZW5mb3JjZS1mYWNlLWF0LXBvaW50KQoJCQkJKHBvaW50 KSkpCgkJICh3aGlsZSAoYW5kICg8IChwb2ludCkgd2luZG93LWVuZCkKCQkJICAgICAoZ290 by1jaGFyIChuZXh0LXNpbmdsZS1wcm9wZXJ0eS1jaGFuZ2UKCQkJCQkgKHBvaW50KSAnZmFj ZSBuaWwgd2luZG93LWVuZCkpKQoJCSAgIChjb25kCgkJICAgICgob3IgKD0gKHBvaW50KSB3 aW5kb3ctZW5kKQoJCQkgKHNwZWNrLWVuZm9yY2UtZmFjZS1hdC1wb2ludCkpCgkJICAgICAo d2hlbiBmcm9tLTEKCQkgICAgICAgKHdpdGgtc2lsZW50LW1vZGlmaWNhdGlvbnMKCQkJIDs7 IE1hcmsgdGV4dCBmcm9tIGZyb20tMSB0byBwb2ludCBhcyBzcGVja2VkLgoJCQkgKHB1dC10 ZXh0LXByb3BlcnR5IGZyb20tMSAocG9pbnQpICdzcGVja2VkIHQpCgoJCQkgKHdoZW4gc3Bl Y2stbG9nCgkJCSAgIChwdXQtdGV4dC1wcm9wZXJ0eQoJCQkgICAgZnJvbS0xIChwb2ludCkg J2ZhY2UgJ3NwZWNrLXNwZWNrZWQpKSkpCgoJCSAgICAgKHNldHEgZnJvbS0xIG5pbCkpCgkJ ICAgICh0CgkJICAgICA7OyBFeHBhbmQgZnJvbSBwcmV2aW91cyBmcm9tLTEgb3Igc3RhcnQg bmV3CgkJICAgICA7OyBzdHJldGNoIHRoYXQgc2hvdWxkIG5vdCBiZSBzcGVja2VkLgoJCSAg ICAgKHNldHEgZnJvbS0xIChvciBmcm9tLTEgKHBvaW50KSkpKSkpKSkKCgkgICAgICh3aGls ZSAoYW5kIChvciAoYW5kIChub3QgcXVpdC1mbGFnKSAobm90IChpbnB1dC1wZW5kaW5nLXAp KSkKCQkJICAgICAoc2V0cSBkb25lIG5pbCkpCgkJCSAoc2V0cSBmcm9tICh0ZXh0LXByb3Bl cnR5LWFueSBmcm9tIHdpbmRvdy1lbmQgJ3NwZWNrZWQgbmlsKSkpCgkgICAgICAgKHNldHEg dG8gKG5leHQtc2luZ2xlLXByb3BlcnR5LWNoYW5nZSBmcm9tICdzcGVja2VkIG5pbCB3aW5k b3ctZW5kKSkKCgkgICAgICAgKHdoZW4gc3BlY2stbG9nCgkJIChzcGVjay1sb2cgIldJTkRP VzoiIHdpbmRvdyAiYnVmZmVyOiIgd2luZG93LWJ1ZmZlcgoJCQkgICAgInN0YXJ0OiIgd2lu ZG93LXN0YXJ0ICJlbmQ6IiB3aW5kb3ctZW5kCgkJCSAgICAiZnJvbToiIGZyb20gInRvOiIg dG8pKQoKCSAgICAgICAodW5sZXNzIChzcGVjay1zdHJldGNoIGZyb20gdG8pCgkJIChzZXRx IGRvbmUgbmlsKSkKCgkgICAgICAgKHNldHEgZnJvbSB0bykpKSkpKSkKCiAgICAod2hlbiBk b25lCiAgICAgIChzcGVjay1yZW1vdmUtd2luZG93IHdpbmRvdykpKSkKCihkZWZ1biBzcGVj ay1yZXNwZWNrIChkZWxheSkKICAiU3BlY2sgYWdhaW4gYWZ0ZXIgREVMQVkgc2Vjb25kcy4i CiAgKHRpbWVyLXNldC1pZGxlLXRpbWUgc3BlY2stcGF1c2UtdGltZXIgKGN1cnJlbnQtaWRs ZS10aW1lKSkKICAodGltZXItaW5jLXRpbWUgc3BlY2stcGF1c2UtdGltZXIgKG9yIGRlbGF5 IDApKQogICh0aW1lci1hY3RpdmF0ZS13aGVuLWlkbGUgc3BlY2stcGF1c2UtdGltZXIgdCkp CgooZGVmdW4gc3BlY2std2luZG93cyAoJm9wdGlvbmFsIHBhdXNlKQogICJTcGVjayB3aW5k b3dzIG9uIGBzcGVjay13aW5kb3ctbGlzdCcuCldvcmtzIGNvcnJlY3RseSBpZiBhbmQgb25s eSBpZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgUEFVU0UgaXMgbmlsCndoZW4gdHJpZ2dlcmVk IGJ5IGBzcGVjay1kZWxheS10aW1lcicgYW5kIG5vbi1uaWwgd2hlbiB0cmlnZ2VyZWQKYnkg YHNwZWNrLXBhdXNlLXRpbWVyJy4iCiAgKHVubGVzcyBwYXVzZQogICAgOzsgV2hlbiBgcGF1 c2UnIGlzIG5pbCBjYW5jZWwgYHNwZWNrLXBhdXNlLXRpbWVyJyAoaW4gcGF0aG9sb2dpY2Fs CiAgICA7OyBjYXNlcyB0aGlzIG1pZ2h0IGludGVyZmVyZSB3aXRoIHRoZSBjdXJyZW50IGNh bGwpLgogICAgKGNhbmNlbC10aW1lciBzcGVjay1wYXVzZS10aW1lcikpCiAgKGNvbmQKICAg KChvciAoaW5wdXQtcGVuZGluZy1wKQoJOzsgKGFjdGl2ZS1taW5pYnVmZmVyLXdpbmRvdykg OyBkbyB3ZSBuZWVkIHRoaXM/CglleGVjdXRpbmcta2JkLW1hY3JvIGRlZmluaW5nLWtiZC1t YWNybykKICAgIDs7IFBhdXNlIGJ5IGBzcGVjay1kZWxheScgc2Vjb25kcyAobWF5YmUgdGhl IGxpc3QgYWJvdmUgc2hvdWxkIGJlCiAgICA7OyBleHRlbmRlZCkuCiAgICAoc3BlY2stcmVz cGVjayBzcGVjay1kZWxheSkpCiAgIDs7IFRlc3Qgc2VsZWN0ZWQgd2luZG93IGZpcnN0Lgog ICAoKGFuZCAobWVtcSAoc2VsZWN0ZWQtd2luZG93KSBzcGVjay13aW5kb3ctbGlzdCkKCSAo b3IgKGxldCAoKGJ1ZmZlciAod2luZG93LWJ1ZmZlcikpKQoJICAgICAgIChhbmQgKGxvY2Fs LXZhcmlhYmxlLXAgJ3NwZWNrLW1vZGUgYnVmZmVyKQoJCSAgICAoYnVmZmVyLWxvY2FsLXZh bHVlICdzcGVjay1tb2RlIGJ1ZmZlcikpKQoJICAgICA7OyBUaGUgc2VsZWN0ZWQgd2luZG93 IGlzIG5vdCBzdWl0YWJsZSBmb3Igc3BlY2tpbmcsIHJlbW92ZQoJICAgICA7OyBpdCBmcm9t IGBzcGVjay13aW5kb3ctbGlzdCcgKGNvdWxkIGl0IGV2ZXIgZ2V0IHRoZXJlPykuCgkgICAg IChhbmQgKHNwZWNrLXJlbW92ZS13aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpCgkJICBuaWwp KSkKICAgIChzcGVjay13aW5kb3cpKQogICAodAogICAgKGxldCogKHdpbmRvd3MtdG8tcmVt b3ZlCgkgICAod2luZG93CgkgICAgKGNhdGNoICdmb3VuZAoJICAgICAgOzsgU2NhbiBgc3Bl Y2std2luZG93LWxpc3QnCgkgICAgICAoZG9saXN0ICh3aW5kb3cgc3BlY2std2luZG93LWxp c3QpCgkJKGlmIChhbmQgKHdpbmRvdy1saXZlLXAgd2luZG93KQoJCQkgKGxldCAoKGJ1ZmZl ciAod2luZG93LWJ1ZmZlciB3aW5kb3cpKSkKCQkJICAgKGFuZCAobG9jYWwtdmFyaWFibGUt cCAnc3BlY2stbW9kZSBidWZmZXIpCgkJCQkoYnVmZmVyLWxvY2FsLXZhbHVlICdzcGVjay1t b2RlIGJ1ZmZlcikpKSkKCQkgICAgOzsgYHdpbmRvdycgaXMgc3VpdGFibGUgZm9yIHNwZWNr aW5nLCByZXR1cm4gaXQuCgkJICAgICh0aHJvdyAnZm91bmQgd2luZG93KQoJCSAgOzsgYHdp bmRvdycgaXMgbm90IHN1aXRhYmxlIGZvciBzcGVja2luZywgcmVtb3ZlIGl0CgkJICA7OyBm cm9tIGBzcGVjay13aW5kb3ctbGlzdCcuICBGSVhNRSwgdGhpcyBpcyBoYWlyeSAuLi4KCQkg IChzZXRxIHdpbmRvd3MtdG8tcmVtb3ZlIChjb25zIHdpbmRvdyB3aW5kb3dzLXRvLXJlbW92 ZSkpKSkpKSkKICAgICAgOzsgUmVtb3ZlIGRlYWQgd2luZG93cy4KICAgICAgKHdoaWxlIHdp bmRvd3MtdG8tcmVtb3ZlCgkoc3BlY2stcmVtb3ZlLXdpbmRvdyAoY2FyIHdpbmRvd3MtdG8t cmVtb3ZlKSkKCShzZXRxIHdpbmRvd3MtdG8tcmVtb3ZlIChjZHIgd2luZG93cy10by1yZW1v dmUpKSkKICAgICAgOzsgU3BlY2sgYHdpbmRvdycuCiAgICAgIChzcGVjay13aW5kb3cgd2lu ZG93KSkpKQoKICAod2hlbiBzcGVjay13aW5kb3ctbGlzdAogICAgOzsgUGF1c2UgYnkgYHNw ZWNrLXBhdXNlJyBzZWNvbmRzLgogICAgKHNwZWNrLXJlc3BlY2sgc3BlY2stcGF1c2UpKSkK CihkZWZ1biBzcGVjay1hZnRlci1jaGFuZ2UgKHN0YXJ0IGVuZCBvbGQtbGVuKQogICJTcGVj ayBhZnRlciBhIHRleHQgY2hhbmdlLgpTVEFSVCwgRU5ELCBhbmQgT0xELUxFTiBoYXZlIHRo ZSB1c3VhbCBtZWFuaW5ncy4iCiAgKHdoZW4gc3BlY2stbW9kZQogICAgKHNhdmUtZXhjdXJz aW9uCiAgICAgIChzYXZlLXJlc3RyaWN0aW9uCgkod2lkZW4pCgkoZ290by1jaGFyIHN0YXJ0 KQoJKHNraXAtY2hhcnMtYmFja3dhcmQgIl4gXG5cdCIpCgkoc2tpcC1jaGFycy1mb3J3YXJk ICIgXG5cdCIpCgkoc2V0cSBzdGFydCAocG9pbnQpKQoJKGdvdG8tY2hhciBlbmQpCgkoc2tp cC1jaGFycy1mb3J3YXJkICJeIFxuXHQiKQoJKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcblx0 IikKCShzZXRxIGVuZCAocG9pbnQpKQoJKHdpdGgtc2lsZW50LW1vZGlmaWNhdGlvbnMKCSAo aWYgKGFuZCBzcGVjay1mYWNlLWVuZm9yY2UtbGlzdAoJCSAgc3BlY2stZmFjZS1lbmZvcmNl LWNvbnRleHR1YWwpCgkgICAgIChwcm9nbgoJICAgICAgIChzcGVjay1yZW1vdmUtb3Zlcmxh eXMgc3RhcnQgKHBvaW50LW1heCkpCgkgICAgICAgKHNwZWNrLXJlbW92ZS10ZXh0LXByb3Bl cnRpZXMgc3RhcnQgKHBvaW50LW1heCkpKQoJICAgKHNwZWNrLXJlbW92ZS1vdmVybGF5cyBz dGFydCBlbmQpCgkgICAoc3BlY2stcmVtb3ZlLXRleHQtcHJvcGVydGllcyBzdGFydCBlbmQp KSkpKQogICAgKHNwZWNrLWFkZC1idWZmZXItd2luZG93cykpKQoKKGRlZnVuIHNwZWNrLXdp bmRvdy1zY3JvbGwgKHdpbmRvdyBfc3RhcnQpCiAgIlNwZWNrIGFmdGVyIFdJTkRPVyB3YXMg c2Nyb2xsZWQuIgogIChzcGVjay1hZGQtd2luZG93IHdpbmRvdykpCgooZGVmdW4gc3BlY2st d2luZG93LXN0YXRlLWNoYW5nZSAod2luZG93KQogICJTcGVjayBhZnRlciBXSU5ET1cgY2hh bmdlZCBzdGF0ZS4iCiAgKHNwZWNrLWFkZC13aW5kb3cgd2luZG93KSkKCjs7IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCjs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfCjs7OwkJCSAgICAg ICBLZXltYXBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfCjs7 IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCjs7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfCgoo ZGVmdmFyIHNwZWNrLW92ZXJsYXktbWFwCiAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5 bWFwKSkpCiAgICAoZGVmaW5lLWtleSBtYXAgW2Rvd24tbW91c2UtM10gJ3NwZWNrLW1vdXNl LXBvcHVwLW1lbnUpCiAgICBtYXApCiAgIlNwZWNrIG1vdXNlIG1hcC4iKQoKKGRlZnVuIHNw ZWNrLW1ha2UtbW9kZS1tYXAgKG1hcCkKICAiQXNzaWduIGBzcGVjay1tb2RlLWtleXMnIHRv IE1BUCB3aGljaCBzaG91bGQgYmUgYHNwZWNrLW1vZGUtbWFwJy4iCiAgKHdoZW4gKGJvdW5k cCAnc3BlY2stbW9kZS1rZXlzKQogICAgKGRlZmluZS1rZXkgbWFwIChudGggMCBzcGVjay1t b2RlLWtleXMpICdzcGVjay1wb3B1cC1tZW51LXByZXZpb3VzKQogICAgKGRlZmluZS1rZXkg bWFwIChudGggMSBzcGVjay1tb2RlLWtleXMpICdzcGVjay1wb3B1cC1tZW51LW5leHQpCiAg ICAoZGVmaW5lLWtleSBtYXAgKG50aCAyIHNwZWNrLW1vZGUta2V5cykgJ3NwZWNrLXJlcGxh Y2UtcHJldmlvdXMpCiAgICAoZGVmaW5lLWtleSBtYXAgKG50aCAzIHNwZWNrLW1vZGUta2V5 cykgJ3NwZWNrLXJlcGxhY2UtbmV4dCkKICAgIChkZWZpbmUta2V5IG1hcCAobnRoIDQgc3Bl Y2stbW9kZS1rZXlzKSAnc3BlY2stYWRkLXByZXZpb3VzKQogICAgKGRlZmluZS1rZXkgbWFw IChudGggNSBzcGVjay1tb2RlLWtleXMpICdzcGVjay1hZGQtbmV4dCkpKQoKKGRlZnZhciBz cGVjay1tb2RlLW1hcAogIChsZXQgKChtYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkpKQogICAg KHNwZWNrLW1ha2UtbW9kZS1tYXAgbWFwKQogICAgbWFwKQogICJLZXltYXAgdXNlZCBieSBg c3BlY2stbW9kZScuICBgc3BlY2stbWFrZS1tb2RlLW1hcCcgZmlsbHMgaXQuIikKCihkZWZj dXN0b20gc3BlY2stbW9kZS1rZXlzCiAgJyhbKGNvbnRyb2wgP1wuKV0gWyhjb250cm9sIG1l dGEgP1wuKV0KICAgIFsoY29udHJvbCA/XCwpXSBbKGNvbnRyb2wgbWV0YSA/XCwpXQogICAg Wyhjb250cm9sID9cKyldIFsoY29udHJvbCBtZXRhID9cKyldCiAgICBbKGNvbnRyb2wgP1wh KV0gWyhjb250cm9sIG1ldGEgP1whKV0KICAgIFsoY29udHJvbCA/XD8pXSBbKGNvbnRyb2wg bWV0YSA/XD8pXSkKICAiS2V5cyB1c2VkIGJ5IGBzcGVjay1tb2RlJy4iCiAgOnR5cGUKICAn KGxpc3QKICAgIChrZXktc2VxdWVuY2UKICAgICA6dGFnICJQb3B1cCBtZW51IGF0IHByZXZp b3VzIHdvcmQiIDpmb3JtYXQgIlxuICAldCAldlxuXG4iCiAgICAgOnZhbHVlICdbKGNvbnRy b2wgP1wuKV0gOnNpemUgMjApCiAgICAoa2V5LXNlcXVlbmNlCiAgICAgOnRhZyAiUG9wdXAg bWVudSBhdCBuZXh0IHdvcmQgICAgIiA6Zm9ybWF0ICIgICV0ICV2XG5cbiIKICAgICA6dmFs dWUgJ1soY29udHJvbCBtZXRhID9cLildIDpzaXplIDIwKQogICAgKGtleS1zZXF1ZW5jZQog ICAgIDp0YWcgIlJlcGxhY2UgcHJldmlvdXMgd29yZCAgICAgICIgOmZvcm1hdCAiICAldCAl dlxuXG4iCiAgICAgOnZhbHVlICdbKGNvbnRyb2wgP1wsKV0gOnNpemUgMjApCiAgICAoa2V5 LXNlcXVlbmNlCiAgICAgOnRhZyAiUmVwbGFjZSBuZXh0IHdvcmQgICAgICAgICAgIiA6Zm9y bWF0ICIgICV0ICV2XG5cbiIKICAgICA6dmFsdWUgJ1soY29udHJvbCBtZXRhID9cLCldIDpz aXplIDIwKQogICAgKGtleS1zZXF1ZW5jZQogICAgIDp0YWcgIkFjY2VwdCBwcmV2aW91cyB3 b3JkICAgICAgICIgOmZvcm1hdCAiICAldCAldlxuXG4iCiAgICAgOnZhbHVlICdbKGNvbnRy b2wgP1wrKV0gOnNpemUgMjApCiAgICAoa2V5LXNlcXVlbmNlCiAgICAgOnRhZyAiQWNjZXB0 IG5leHQgd29yZCAgICAgICAgICAgIiA6Zm9ybWF0ICIgICV0ICV2XG5cbiIKICAgICA6dmFs dWUgJ1soY29udHJvbCBtZXRhID9cKyldIDpzaXplIDIwKQogICAgKGtleS1zZXF1ZW5jZQog ICAgIDp0YWcgIlNwZWxsLWNoZWNrIHJlZ2lvbiAgICAgICAgICIgOmZvcm1hdCAiICAldCAl dlxuXG4iCiAgICAgOnZhbHVlICdbKGNvbnRyb2wgP1whKV0gOnNpemUgMjApCiAgICAoa2V5 LXNlcXVlbmNlCiAgICAgOnRhZyAiQ2hhbmdlIGRpY3Rpb25hcnkgICAgICAgICAgIiA6Zm9y bWF0ICIgICV0ICV2XG5cbiIKICAgICA6dmFsdWUgJ1soY29udHJvbCBtZXRhID9cISldIDpz aXplIDIwKQogICAgKGtleS1zZXF1ZW5jZQogICAgIDp0YWcgIlNldCBsYW5ndWFnZSAgICAg ICAgICAgICAgICIgOmZvcm1hdCAiICAldCAldlxuXG4iCiAgICAgOnZhbHVlICdbKGNvbnRy b2wgP1w/KV0gOnNpemUgMjApCiAgICAoa2V5LXNlcXVlbmNlCiAgICAgOnRhZyAiU2V0IG9w dGlvbiAgICAgICAgICAgICAgICAgIiA6Zm9ybWF0ICIgICV0ICV2XG5cbiIKICAgICA6dmFs dWUgJ1soY29udHJvbCBtZXRhID9cPyldIDpzaXplIDIwKSkKICA6c2V0ICMnKGxhbWJkYSAo c3ltYm9sIHZhbHVlKQoJICAgKHdoZW4gKGFuZCAoYm91bmRwICdzcGVjay1tb2RlLW1hcCkK CQkgICAgICA7OyBQYXJhbm9pYS4KCQkgICAgICAoYm91bmRwICdzcGVjay1tb2RlLWtleXMp CgkJICAgICAgKGxpc3RwIHNwZWNrLW1vZGUta2V5cykpCgkgICAgIChkb2xpc3QgKGtleSBz cGVjay1tb2RlLWtleXMpCgkgICAgICAgKGRlZmluZS1rZXkgc3BlY2stbW9kZS1tYXAga2V5 IG5pbCkpKQoJICAgKHNldC1kZWZhdWx0IHN5bWJvbCB2YWx1ZSkKCSAgICh3aGVuIChib3Vu ZHAgJ3NwZWNrLW1vZGUtbWFwKQoJICAgICAoc3BlY2stbWFrZS1tb2RlLW1hcCBzcGVjay1t b2RlLW1hcCkpKQogIDpncm91cCAnc3BlY2spCgooZGVmdW4gc3BlY2stYXNzaWduLWtleXMt dG8tbWFwIChtYXAga2V5cykKICAiQXNzaWduIEtFWVMgdG8gTUFQLgpNQVAgbXVzdCBiZSBh IGtleW1hcCwgS0VZUyBhIGxpc3Qgb2YgKGNvbW1hbmQgLiBrZXkpIHBhaXJzLiIKICAoZG9s aXN0IChwYWlyIGtleXMpCiAgICAoZGVmaW5lLWtleSBtYXAgKGNkciBwYWlyKSAoY2FyIHBh aXIpKSkpCgooZGVmY3VzdG9tIHNwZWNrLXJlcGxhY2Uta2V5cwogICcoKGhlbHAgLiBbKGNv bnRyb2wgP1w/KV0pCiAgICAoaGVscCAuIFsoY29udHJvbCA/XGgpXSkKICAgIChoZWxwIC4g W2YxXSkKICAgIChoZWxwIC4gW2hlbHBdKQogICAgKGFjY2VwdCAuIFsoY29udHJvbCA/XCEp XSkKICAgIChhY2NlcHQtYW5kLXF1aXQgLiBbKGNvbnRyb2wgP1wuKV0pCiAgICAocmVqZWN0 LWFuZC1xdWl0IC4gWyhjb250cm9sID9cLSldKQogICAgKHJlamVjdC1hbmQtcXVpdCAuIFso Y29udHJvbCA/XGcpXSkKICAgIChyZWplY3QtYW5kLXF1aXQgLiBbKGNvbnRyb2wgP1xdKV0p CiAgICAocmVqZWN0LWFuZC1xdWl0IC4gW2VzY2FwZV0pCiAgICAoZm9yd2FyZCAuIFsoY29u dHJvbCA/XCwpXSkKICAgIChiYWNrd2FyZCAuIFsoY29udHJvbCBtZXRhID9cLCldKSkKICAi S2V5cyB1c2VkIGJ5IGBzcGVjay1tb2RlJyBkdXJpbmcgcmVwbGFjZW1lbnQuIgogIDp0eXBl CiAgJyhyZXBlYXQKICAgIChjb25zIDpmb3JtYXQgIiV2IgoJICAoY2hvaWNlIDpmb3JtYXQg IiAlW0NvbW1hbmQlXSAldiIKCQkgIChjb25zdCA6Zm9ybWF0ICJoZWxwICAgICAgICAgICAi IGhlbHApCgkJICAoY29uc3QgOmZvcm1hdCAiYWNjZXB0ICAgICAgICAgIiBhY2NlcHQpCgkJ ICAoY29uc3QgOmZvcm1hdCAiYWNjZXB0LWFuZC1xdWl0IiBhY2NlcHQtYW5kLXF1aXQpCgkJ ICAoY29uc3QgOmZvcm1hdCAicmVqZWN0LWFuZC1xdWl0IiByZWplY3QtYW5kLXF1aXQpCgkJ ICAoY29uc3QgOmZvcm1hdCAiZm9yd2FyZCAgICAgICAgIiBmb3J3YXJkKQoJCSAgKGNvbnN0 IDpmb3JtYXQgImJhY2t3YXJkICAgICAgICIgYmFja3dhcmQpKQoJICAoa2V5LXNlcXVlbmNl IDpmb3JtYXQgIiAgICBLZXk6ICV2XG5cbiIgOnNpemUgMjApKSkKICA6c2V0ICMnKGxhbWJk YSAoc3ltYm9sIHZhbHVlKQoJICAgOzsgRG9uJ3QgImFuZCIgdGhlc2UuCgkgICAod2hlbiAo Ym91bmRwICdzcGVjay1yZXBsYWNlLW1hcCkKCSAgICAgKHdoZW4gKGJvdW5kcCAnc3BlY2st cmVwbGFjZS1rZXlzKQoJICAgICAgIChkb2xpc3QgKHBhaXIgc3BlY2stcmVwbGFjZS1rZXlz KQoJCSA7OyBSZXNldCB0aGVtIGFsbC4KCQkgKGRlZmluZS1rZXkgc3BlY2stcmVwbGFjZS1t YXAgKGNkciBwYWlyKSBuaWwpKSkpCgkgICAoc2V0LWRlZmF1bHQgc3ltYm9sIHZhbHVlKQoJ ICAgKHdoZW4gKGJvdW5kcCAnc3BlY2stcmVwbGFjZS1tYXApCgkgICAgIChzcGVjay1hc3Np Z24ta2V5cy10by1tYXAgc3BlY2stcmVwbGFjZS1tYXAgc3BlY2stcmVwbGFjZS1rZXlzKSkp CiAgOmdyb3VwICdzcGVjaykKCihkZWZ2YXIgc3BlY2stcmVwbGFjZS1tYXAKICAobGV0ICgo bWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKICAgIChzcGVjay1hc3NpZ24ta2V5cy10by1t YXAgbWFwIHNwZWNrLXJlcGxhY2Uta2V5cykKICAgIG1hcCkKICAiRHVtbXkga2V5bWFwIGZv ciBgc3BlY2stcmVwbGFjZScuIikKCihkZWZjdXN0b20gc3BlY2stcmVwbGFjZS1xdWVyeS1r ZXlzCiAgJygoaGVscCAuIFsoY29udHJvbCA/XD8pXSkKICAgIChoZWxwIC4gWyhjb250cm9s ID9caCldKQogICAgKGhlbHAgLiBbZjFdKQogICAgKGhlbHAgLiBbaGVscF0pCiAgICAoYWNj ZXB0IC4gWyhjb250cm9sID9cISldKQogICAgKGFjY2VwdCAuIFs/XCBdKQogICAgKGFjY2Vw dCAuIFtyZXR1cm5dKQogICAgKGFjY2VwdC1hbmQtcXVpdCAuIFsoY29udHJvbCA/XC4pXSkK ICAgIChyZWplY3QgLiBbKGNvbnRyb2wgP1wtKV0pCiAgICAocmVqZWN0LWFuZC1xdWl0IC4g Wyhjb250cm9sID9cZyldKQogICAgKHJlamVjdC1hbmQtcXVpdCAuIFsoY29udHJvbCA/XF0p XSkKICAgIChyZWplY3QtYW5kLXF1aXQgLiBbZXNjYXBlXSkKICAgIChmb3J3YXJkIC4gWyhj b250cm9sID9cLCldKQogICAgKGZvcndhcmQgLiBbdGFiXSkKICAgIChiYWNrd2FyZCAuIFso Y29udHJvbCBtZXRhID9cLCldKQogICAgKGJhY2t3YXJkIC4gWyhzaGlmdCB0YWIpXSkpCiAg IktleXMgdXNlZCBieSBgc3BlY2stbW9kZScgZHVyaW5nIHF1ZXJ5IHJlcGxhY2VtZW50LiIK ICA6dHlwZQogICcocmVwZWF0CiAgICAoY29ucyA6Zm9ybWF0ICIldiIKCSAgKGNob2ljZSA6 Zm9ybWF0ICIgJVtDb21tYW5kJV0gJXYiCgkJICAoY29uc3QgOmZvcm1hdCAiaGVscCAgICAg ICAgICAgIiBoZWxwKQoJCSAgKGNvbnN0IDpmb3JtYXQgImFjY2VwdCAgICAgICAgICIgYWNj ZXB0KQoJCSAgKGNvbnN0IDpmb3JtYXQgImFjY2VwdC1hbmQtcXVpdCIgYWNjZXB0LWFuZC1x dWl0KQoJCSAgKGNvbnN0IDpmb3JtYXQgInJlamVjdCAgICAgICAgICIgcmVqZWN0KQoJCSAg KGNvbnN0IDpmb3JtYXQgInJlamVjdC1hbmQtcXVpdCIgcmVqZWN0LWFuZC1xdWl0KQoJCSAg KGNvbnN0IDpmb3JtYXQgImZvcndhcmQgICAgICAgICIgZm9yd2FyZCkKCQkgIChjb25zdCA6 Zm9ybWF0ICJiYWNrd2FyZCAgICAgICAiIGJhY2t3YXJkKSkKCSAgKGtleS1zZXF1ZW5jZSA6 Zm9ybWF0ICIgICAgS2V5OiAldlxuXG4iIDpzaXplIDIwKSkpCiAgOnNldCAjJyhsYW1iZGEg KHN5bWJvbCB2YWx1ZSkKCSAgIDs7IERvbid0ICJhbmQiIHRoZXNlLgoJICAgKHdoZW4gKGJv dW5kcCAnc3BlY2stcmVwbGFjZS1xdWVyeS1tYXApCgkgICAgICh3aGVuIChib3VuZHAgJ3Nw ZWNrLXJlcGxhY2UtcXVlcnkta2V5cykKCSAgICAgICAoZG9saXN0IChwYWlyIHNwZWNrLXJl cGxhY2UtcXVlcnkta2V5cykKCQkgOzsgUmVzZXQgdGhlbSBhbGwuCgkJIChkZWZpbmUta2V5 IHNwZWNrLXJlcGxhY2UtcXVlcnktbWFwIChjZHIgcGFpcikgbmlsKSkpKQoJICAgKHNldC1k ZWZhdWx0IHN5bWJvbCB2YWx1ZSkKCSAgICh3aGVuIChib3VuZHAgJ3NwZWNrLXJlcGxhY2Ut cXVlcnktbWFwKQoJICAgICAoc3BlY2stYXNzaWduLWtleXMtdG8tbWFwCgkgICAgICBzcGVj ay1yZXBsYWNlLXF1ZXJ5LW1hcCBzcGVjay1yZXBsYWNlLXF1ZXJ5LWtleXMpKSkKICA6Z3Jv dXAgJ3NwZWNrKQoKKGRlZnZhciBzcGVjay1yZXBsYWNlLXF1ZXJ5LW1hcAogIChsZXQgKCht YXAgKG1ha2Utc3BhcnNlLWtleW1hcCkpKQogICAgKHNwZWNrLWFzc2lnbi1rZXlzLXRvLW1h cCBtYXAgc3BlY2stcmVwbGFjZS1xdWVyeS1rZXlzKQogICAgbWFwKQogICJEdW1teSBrZXlt YXAgZm9yIGBzcGVjay1yZXBsYWNlLXF1ZXJ5Jy4iKQoKKGRlZnVuIHNwZWNrLWtleS1oZWxw IChjb21tYW5kIGtleXMgc3VmZml4KQogICJSZXR1cm4gc3RyaW5nIG9mIGtleXMgaW4gS0VZ UyBleGVjdXRpbmcgQ09NTUFORC4KS0VZUyBtdXN0IGJlIGVpdGhlciBgc3BlY2stcmVwbGFj ZS1rZXlzJyBvcgpgc3BlY2stcmVwbGFjZS1xdWVyeS1rZXlzJy4iCiAgKGxldCAoKHN0cmlu ZyAiIikpCiAgICAoZG9saXN0IChrZXkga2V5cykKICAgICAgKHdoZW4gKGVxIGNvbW1hbmQg KGNhciBrZXkpKQoJKHNldHEgc3RyaW5nCgkgICAgICAoY29uY2F0CgkgICAgICAgc3RyaW5n CgkgICAgICAgKHVubGVzcyAoc3RyaW5nLWVxdWFsIHN0cmluZyAiIikgIiwgIikgOyBMb29r cyBiZXR0ZXIuCgkgICAgICAgKGtleS1kZXNjcmlwdGlvbiAoY2RyIGtleSkpKSkpKQogICAg KGlmIChzdHJpbmctZXF1YWwgc3RyaW5nICIiKQoJIiIKICAgICAgKGNvbmNhdCAiICAiIHN0 cmluZyBzdWZmaXgpKSkpIDsgUHJlZml4IHRoaXMgd2l0aCB0d28gc3BhY2VzLgoKKGRlZnVu IHNwZWNrLWtleXMtaGVscCAoa2V5cyAmb3B0aW9uYWwgZmlyc3QpCiAgIlJldHVybiBhIHJl YWRhYmxlIGxpc3Qgb2Yga2V5YmluZGluZ3MgZm9yIGhlbHAuIgogIChjb25jYXQKICAgOzsg VXNlIGEgZml4ZWQgbGlzdCBvZiBjb21tYW5kcyBoZXJlLCBpdCdzIHNpbXBsZXIuICBZZXMg d2UgZG8KICAgOzsgYWxsb2NhdGUgc3RyaW5nIHNwYWNlIGhlcmUsIGJ1dCBhZnRlciBhbGwg dGhpcyBzaG91bGQgYmUgdXNlZCBvbmx5CiAgIDs7IHNwb3JhZGljYWxseS4KICAgKHNwZWNr LWtleS1oZWxwICdhY2NlcHQga2V5cwoJCSAgIChjb25jYXQgIiAgdG8gYWNjZXB0IHRoZSBy ZXBsYWNlbWVudCBhbmQgIgoJCQkgICAoaWYgZmlyc3QgInF1ZXJ5IGZ1cnRoZXIgb2NjdXJy ZW5jZXMiICJjb250aW51ZSBxdWVyeWluZyIpICJcbiIpKQogICAoc3BlY2sta2V5LWhlbHAg J2FjY2VwdC1hbmQtcXVpdCBrZXlzCgkJICAgIiAgdG8gYWNjZXB0IHRoZSByZXBsYWNlbWVu dCBhbmQgcXVpdCBxdWVyeWluZ1xuIikKICAgKHNwZWNrLWtleS1oZWxwICdyZWplY3Qga2V5 cwoJCSAgICIgIHRvIHJlamVjdCB0aGUgcmVwbGFjZW1lbnQgYW5kIGNvbnRpbnVlIHF1ZXJ5 aW5nXG4iKQogICAoc3BlY2sta2V5LWhlbHAgJ3JlamVjdC1hbmQtcXVpdCBrZXlzCgkJICAg IiAgdG8gcmVqZWN0IHRoZSByZXBsYWNlbWVudCBhbmQgcXVpdCBxdWVyeWluZ1xuIikKICAg KHNwZWNrLWtleS1oZWxwICdmb3J3YXJkIGtleXMgIiAgdG8gZGlzcGxheSB0aGUgbmV4dCBy ZXBsYWNlbWVudFxuIikKICAgKHNwZWNrLWtleS1oZWxwICdiYWNrd2FyZCBrZXlzICIgIHRv IGRpc3BsYXkgdGhlIHByZXZpb3VzIHJlcGxhY2VtZW50XG4iKQogICAoc3BlY2sta2V5LWhl bHAgJ2hlbHAga2V5cyAiICB0byBkaXNwbGF5IHRoaXMgaGVscFxuIikpKQoKOzsgX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8KOzs7CQkJICAg ICAgUmVwbGFjaW5nIHdvcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8K OzsgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KOzsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8K CihkZWZ1biBzcGVjay1yZXBsYWNlLXdvcmQgKGZyb20gdG8gd29yZCByZXBsYWNlICZvcHRp b25hbCBvdmVybGF5KQogICJSZXBsYWNlIFdPUkQgd2l0aGluIEZST00gYW5kIFRPIGJ5IFJF UExBQ0UuCk9wdGlvbmFsIE9WRVJMQVkgbm9uLW5pbCBtZWFucyByZW1vdmUgdGhhdCBvdmVy bGF5LiAgUFJPUEVSVFkgbm9uLW5pbAptZWFucyBwdXQgdGhpcyBwcm9wZXJ0eSBvbiBSRVBM QUNFLiIKICAobGV0IChtb3ZlLXRvKQogICAgKHdoZW4gb3ZlcmxheQogICAgICAoZGVsZXRl LW92ZXJsYXkgb3ZlcmxheSkpCiAgICAod2hlbiAoYW5kIChlcSAobWFya2VyLWJ1ZmZlciBz cGVjay1tYXJrZXIpCgkJICAgKGN1cnJlbnQtYnVmZmVyKSkKCSAgICAgICAoPD0gZnJvbSBz cGVjay1tYXJrZXIpCgkgICAgICAgKDw9IHNwZWNrLW1hcmtlciB0bykpCiAgICAgIChjb25k CiAgICAgICAoKGVxIHNwZWNrLXJlcGxhY2UtcHJlc2VydmUtcG9pbnQgJ2JlZm9yZSkKCShz ZXRxIG1vdmUtdG8gZnJvbSkpCiAgICAgICAoKGFuZCAoZXEgc3BlY2stcmVwbGFjZS1wcmVz ZXJ2ZS1wb2ludCAnd2l0aGluKQoJICAgICAoPD0gZnJvbSBzcGVjay1tYXJrZXIpCgkgICAg ICg8PSBzcGVjay1tYXJrZXIgdG8pCgkgICAgICg8ICgtIHNwZWNrLW1hcmtlciBmcm9tKQoJ CShsZW5ndGggcmVwbGFjZSkpKQoJKHNldHEgbW92ZS10byAobWFya2VyLXBvc2l0aW9uIHNw ZWNrLW1hcmtlcikpKQogICAgICAgKHQgKHNldHEgbW92ZS10byAoKyBmcm9tIChsZW5ndGgg cmVwbGFjZSkpKSkpKQogICAgKGRlbGV0ZS1yZWdpb24gZnJvbSB0bykKICAgIChnb3RvLWNo YXIgZnJvbSkKICAgIChpbnNlcnQgcmVwbGFjZSkKICAgICh3aGVuIG1vdmUtdG8KICAgICAg KHNldC1tYXJrZXIgc3BlY2stbWFya2VyIG1vdmUtdG8pKQogICAgOzsgVGhlIGZvbGxvd2lu ZyBuZXZlciB3b3JrZWQgaGVyZS4gIE1heWJlIEkgbWlzdW5kZXJzdGFuZCB0aGlzCiAgICA7 OyBjb21wbGV0ZWx5LgogICAgOzsgICAgIChzcGVjay1zZW5kLXJlcGxhY2VtZW50IHdvcmQg cmVwbGFjZSkKICAgICkpCgooZGVmdW4gc3BlY2stcmVwbGFjZS1wdXQtb3ZlcmxheSAob3Zl cmxheSBmcm9tIHRvIG9mZnNldCByZXBsYWNlKQogICJQdXQgT1ZFUkxBWSBhbmQgZ290byBG Uk9NIG9yIFRPLiIKICAoaWYgb2Zmc2V0CiAgICAgIChjb25kCiAgICAgICAoKGVxIHNwZWNr LXJlcGxhY2UtcHJlc2VydmUtcG9pbnQgJ2JlZm9yZSkKCShvdmVybGF5LXB1dCBvdmVybGF5 ICdkaXNwbGF5IHJlcGxhY2UpCgkoZ290by1jaGFyIGZyb20pKQogICAgICAgKChhbmQgKGVx IHNwZWNrLXJlcGxhY2UtcHJlc2VydmUtcG9pbnQgJ3dpdGhpbikKCSAgICAgKDwgb2Zmc2V0 IChsZW5ndGggcmVwbGFjZSkpKQoJKG92ZXJsYXktcHV0Cgkgb3ZlcmxheSAnZGlzcGxheQoJ IChjb25jYXQgKHN1YnN0cmluZyByZXBsYWNlIDAgb2Zmc2V0KQoJCSAocHJvcGVydGl6ZQoJ CSAgKHN1YnN0cmluZyByZXBsYWNlIG9mZnNldCAoMSsgb2Zmc2V0KSkgJ2N1cnNvciB0KQoJ CSAoc3Vic3RyaW5nIHJlcGxhY2UgKDErIG9mZnNldCkpKSkKCShnb3RvLWNoYXIgZnJvbSkp CiAgICAgICAodAoJKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2Rpc3BsYXkgcmVwbGFjZSkKCShn b3RvLWNoYXIgdG8pKSkKICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdkaXNwbGF5IHJlcGxh Y2UpKSkKCihkZWZ1biBzcGVjay1yZXBsYWNlLXF1ZXJ5ICh3b3JkIHJlcGxhY2UpCiAgIlF1 ZXJ5IHJlcGxhY2UgZnVydGhlciBvY2N1cnJlbmNlcyBvZiBXT1JEIGJ5IHNvbWV0aGluZyBs aWtlIFJFUExBQ0UuIgogIChsZXQgKChyZWdleHAgKGNvbmNhdCAiXFw8IiAocmVnZXhwLXF1 b3RlIHdvcmQpICJcXD4iKSkKCShxdWVyeSB0KQoJKGNhc2UtZm9sZC1zZWFyY2ggdCkKCSh0 ZXh0CgkgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzCgkgICJSZXBsYWNlIGAlcycgd2l0aCBg JXMnPyAgVHlwZSBcXDxzcGVjay1yZXBsYWNlLXF1ZXJ5LW1hcD5cXFtoZWxwXSBmb3IgaGVs cC4iKSkpCiAgICA7OyBDb25zaWRlciB3aWRlbmluZyBoZXJlLgogICAgOzsgQ29uc2lkZXIg dXNpbmcgYHVuZG8tYm91bmRhcnknIGhlcmUuCiAgICAoZ290by1jaGFyIChwb2ludC1taW4p KQogICAgKHdoaWxlIChhbmQgcXVlcnkgKG5vdCAoZW9icCkpCgkJKHJlLXNlYXJjaC1mb3J3 YXJkIHJlZ2V4cCBuaWwgdCkpCiAgICAgIChsZXQqICgoZnJvbSAobWF0Y2gtYmVnaW5uaW5n IDApKQoJICAgICAodG8gKG1hdGNoLWVuZCAwKSkKCSAgICAgKHdvcmQgKHNwZWNrLXN0cmlu ZyBmcm9tIHRvKSkKCSAgICAgKGJlZ2luIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpCgkg ICAgIChlbmQgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uIDIpKQoJICAgICBndWVzc2VzIHRh aWwpCgkod2hlbiAoYW5kIChub3QgKGFuZCBxdWVyeS1yZXBsYWNlLXNraXAtcmVhZC1vbmx5 CgkJCSAgICAgOzsgSWdub3JlIG1hdGNoZXMgd2l0aCByZWFkLW9ubHkgcHJvcGVydHkuCgkJ CSAgICAgKHRleHQtcHJvcGVydHktbm90LWFsbAoJCQkgICAgICAobWF0Y2gtYmVnaW5uaW5n IDApIChtYXRjaC1lbmQgMCkKCQkJICAgICAgJ3JlYWQtb25seSBuaWwpKSkKCQkgICAoc2F2 ZS1leGN1cnNpb24KCQkgICAgIChhbmQgKGdvdG8tY2hhciBmcm9tKQoJCQkgIDs7IFdoZW4g d2UgZW5mb3JjZSBmYWNlLCBtYWtlIHN1cmUgdG8gbm90CgkJCSAgOzsgb3BlcmF0ZSBvdXRz aWRlIG9mIHN1Y2ggYSBmYWNlLgoJCQkgIChvciAobm90IHNwZWNrLWZhY2UtZW5mb3JjZS1s aXN0KQoJCQkgICAgICAoc3BlY2stZW5mb3JjZS1mYWNlLWF0LXBvaW50KSkKCQkJICA7OyBv Y2N1ci4KCQkJICAoY29uc3AgKHNldHEgZ3Vlc3NlcyAoc3BlY2std29yZCB3b3JkKSkpKSkp CgkgICh3aGVuIChzZXRxIHRhaWwgKG1lbWJlci1pZ25vcmUtY2FzZSByZXBsYWNlIGd1ZXNz ZXMpKQoJICAgIDs7IFJFUExBQ0UgaXMgaW4gYGd1ZXNzZXMnLgoJICAgICh1bmxlc3MgKGVx IGd1ZXNzZXMgdGFpbCkKCSAgICAgIDs7IE1vdmUgUkVQTEFDRSB0byBoZWFkIG9mIGxpc3Qu CgkgICAgICAoc2V0cSBndWVzc2VzCgkJICAgIChjb25zIChjYXIgdGFpbCkKCQkJICAoZGVs ZXRlIChjYXIgdGFpbCkgZ3Vlc3NlcykpKSkpCgkgIChsZXQqICgocmVwbGFjZSAoY2FyIGd1 ZXNzZXMpKQoJCSAocmVwcy12ZWN0b3IgKHZjb25jYXQgZ3Vlc3NlcykpCgkJIChyZXBzLWlu ZGV4IDApCgkJIChyZXBzLW1heCAoMS0gKGxlbmd0aCByZXBzLXZlY3RvcikpKQoJCSAob3Zl cmxheSAob3IgKHNwZWNrLW92ZXJsYXktYXQtcG9pbnQKCQkJICAgICAgIGZyb20gJyhzcGVj ay1ndWVzcyBzcGVjay1taXNzKSkKCQkJICAgICAgKG1ha2Utb3ZlcmxheSBmcm9tIHRvKSkp CgkJIChkZWYgJ2ZvcndhcmQpCgkJIGNoYW5nZSBrZXkpCgkgICAgKG92ZXJsYXktcHV0IG92 ZXJsYXkgJ3NwZWNrIHQpCgkgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2Rpc3BsYXkgcmVw bGFjZSkKCSAgICAob3ZlcmxheS1wdXQgb3ZlcmxheSAnZmFjZSAnc3BlY2stcXVlcnkpCgkg ICAgKHVud2luZC1wcm90ZWN0CgkJKHdoaWxlIChtZW1xIGRlZiAnKGZvcndhcmQgYmFja3dh cmQgaGVscCkpCgkJICAoc2V0cSBxdWVyeSBuaWwpCgkJICAoc2V0cSBkZWYgbmlsKQoJCSAg KGxldCAoKG1lc3NhZ2UtbG9nLW1heCBuaWwpKQoJCSAgICA7OyBUaGlzIG1lc3NhZ2UgaXMg bmVlZGVkIHRvIGF2b2lkIGVjaG9pbmcgdHlwZWQKCQkgICAgOzsgY2hhcmFjdGVycyBpbiB0 aGUgZWNobyBhcmVhIChzZWUgcmVwbGFjZS5lbCkuCgkJICAgIChtZXNzYWdlIHRleHQgd29y ZCByZXBsYWNlKSkKCQkgIChzZXRxIGtleSAodmVjdG9yIChyZWFkLWV2ZW50KSkpCgkJICAo c2V0cSBkZWYgKGxvb2t1cC1rZXkgc3BlY2stcmVwbGFjZS1xdWVyeS1tYXAga2V5KSkKCQkg IChjb25kCgkJICAgKChlcSBkZWYgJ2FjY2VwdCkKCQkgICAgKHNldHEgY2hhbmdlIHQpCgkJ ICAgIChzZXRxIHF1ZXJ5IHQpKQoJCSAgICgoZXEgZGVmICdhY2NlcHQtYW5kLXF1aXQpCgkJ ICAgIChzZXRxIGNoYW5nZSB0KSkKCQkgICAoKGVxIGRlZiAncmVqZWN0KQoJCSAgICAoc2V0 cSBxdWVyeSB0KSkKCQkgICAoKGVxIGRlZiAncmVqZWN0LWFuZC1xdWl0KSkKCQkgICAoKGVx IGRlZiAnZm9yd2FyZCkKCQkgICAgKHNldHEgcmVwcy1pbmRleAoJCQkgIChpZiAoPSByZXBz LWluZGV4IHJlcHMtbWF4KSAwICgxKyByZXBzLWluZGV4KSkpCgkJICAgIChzZXRxIHJlcGxh Y2UgKGFyZWYgcmVwcy12ZWN0b3IgcmVwcy1pbmRleCkpCgkJICAgIChvdmVybGF5LXB1dCBv dmVybGF5ICdkaXNwbGF5IHJlcGxhY2UpKQoJCSAgICgoZXEgZGVmICdiYWNrd2FyZCkKCQkg ICAgKHNldHEgcmVwcy1pbmRleAoJCQkgIChpZiAoemVyb3AgcmVwcy1pbmRleCkgcmVwcy1t YXggKDEtIHJlcHMtaW5kZXgpKSkKCQkgICAgKHNldHEgcmVwbGFjZSAoYXJlZiByZXBzLXZl Y3RvciByZXBzLWluZGV4KSkKCQkgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2Rpc3BsYXkg cmVwbGFjZSkpCgkJICAgKChlcSBkZWYgJ2hlbHApCgkJICAgICh3aXRoLW91dHB1dC10by10 ZW1wLWJ1ZmZlciAiKkhlbHAqIgoJCSAgICAgIChwcmluYwoJCSAgICAgICAoY29uY2F0CgkJ CSJSZXBsYWNlIGAiIHdvcmQgIicgd2l0aCBgIiByZXBsYWNlICInPyAgVHlwZVxuXG4iCgkJ CShzcGVjay1rZXlzLWhlbHAgc3BlY2stcmVwbGFjZS1xdWVyeS1rZXlzKQoJCQkiXG5Bbnl0 aGluZyBlbHNlIHdpbGwgYWNjZXB0IHRoZSByZXBsYWNlbWVudCBhbmQgcmVyZWFkIGFzIGNv bW1hbmQuXG4iKSkKCQkgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBzdGFuZGFyZC1vdXRw dXQKCQkJKGhlbHAtbW9kZSkpKSkKCQkgICAodAoJCSAgICA7OyBUaGUgbW9kZS1leGl0ZWQg c3R1ZmYgaXMgbm90IGNsZWFuIGJ1dCBsZXQncyB0cnkKCQkgICAgOzsgZG9pbmcgdGhpcyBh cyBpbiBgcXVlcnktcmVwbGFjZScuCgkJICAgIChzZXRxIHRoaXMtY29tbWFuZCAnbW9kZS1l eGl0ZWQpCgkJICAgIChzZXRxIHVucmVhZC1jb21tYW5kLWV2ZW50cwoJCQkgIChhcHBlbmQg KGxpc3RpZnkta2V5LXNlcXVlbmNlIGtleSkKCQkJCSAgdW5yZWFkLWNvbW1hbmQtZXZlbnRz KSkKCQkgICAgKHNldHEgY2hhbmdlIHQpKSkpCgkgICAgICAoY29uZAoJICAgICAgIChjaGFu Z2UKCQkoc3BlY2stcmVwbGFjZS13b3JkIGZyb20gdG8gd29yZCByZXBsYWNlIG92ZXJsYXkp KQoJICAgICAgICgob3ZlcmxheXAgb3ZlcmxheSkKCQk7OyBJbnN0YWxsIG9yIHJlc3RvcmUg b3ZlcmxheSBwcm9wZXJ0aWVzLgoJCShvdmVybGF5LXB1dCBvdmVybGF5ICdkaXNwbGF5IG5p bCkgOyBTaWxseQoJCShvdmVybGF5LXB1dCBvdmVybGF5ICdmYWNlICdzcGVjay1ndWVzcykp KQoJICAgICAgKHVubGVzcyBxdWVyeSAoc3BlY2stZ290by1tYXJrZXIpKSkpKSkpKSkKCihk ZWZ1biBzcGVjay1yZXBsYWNlIChvdmVybGF5KQogICJSZXBsYWNlIHdvcmQgY292ZXJlZCBi eSBPVkVSTEFZIHdpdGggY29ycmVjdGlvbnMuIgogIChsZXQgKChwcm9jZXNzIHNwZWNrLXBy b2Nlc3MpKQogICAgKHdoZW4gKGFuZCBvdmVybGF5IHByb2Nlc3MpCiAgICAgIChwcm9jZXNz LXB1dCBwcm9jZXNzICdwcmVlbXB0ZWQgdCkKICAgICAgKHVud2luZC1wcm90ZWN0CgkgIChs ZXQqICgoZnJvbSAob3ZlcmxheS1zdGFydCBvdmVybGF5KSkKCQkgKHRvIChvdmVybGF5LWVu ZCBvdmVybGF5KSkKCQkgKG9mZnNldCAod2hlbiAoYW5kICg8IGZyb20gKHBvaW50KSkKCQkJ CSAgICAoPCAocG9pbnQpIHRvKSkKCQkJICAgOzsgT2Zmc2V0IG9mIGBwb2ludCcgd3J0IGBm cm9tJy4KCQkJICAgKC0gKHBvaW50KSBmcm9tKSkpCgkJICh3b3JkIChzcGVjay1zdHJpbmcg ZnJvbSB0bykpCgkJIChndWVzc2VzIChzcGVjay13b3JkIHdvcmQpKQoJCSAodGV4dAoJCSAg OzsgV2UgY2FuJ3QgdXNlIGFueSAiYCIgb3IgIiciIGhlcmUsIHRoZXNlIGNoYXJhY3RlcnMK CQkgIDs7IG1heSBiZSBwYXJ0IG9mIHRoZSB3b3JkIG9yIHRoZSByZXBsYWNlbWVudC4gIEhl bmNlCgkJICA7OyBlbnRpcmVseSByZWx5IG9uIGZhY2VzIChgc3BlY2stcXVlcnknKSB0byBz ZXQgdGhlbQoJCSAgOzsgYXBhcnQgZnJvbSB0aGUgcmVzdC4KCQkgIChzdWJzdGl0dXRlLWNv bW1hbmQta2V5cwoJCSAgIChjb25jYXQKCQkgICAgIlJlcGxhY2UgJXMgd2l0aCAlcyA/ICBU eXBlIFxcPHNwZWNrLXJlcGxhY2UtbWFwPlxcW2hlbHBdIGZvciBoZWxwLiIpKSkpCgkgICAg KGlmIChudWxsIGd1ZXNzZXMpCgkJKG1lc3NhZ2UgIk5vIGNvcnJlY3Rpb25zIGZvdW5kIikK CSAgICAgIChsZXQqICgocmVwbGFjZSAoY2FyIGd1ZXNzZXMpKQoJCSAgICAgKGd1ZXNzLXZl Y3RvciAodmNvbmNhdCBndWVzc2VzKSkKCQkgICAgIChndWVzcy1pbmRleCAwKQoJCSAgICAg KGd1ZXNzLW1heCAoMS0gKGxlbmd0aCBndWVzcy12ZWN0b3IpKSkKCQkgICAgIChkZWYgJ2Zv cndhcmQpCgkJICAgICBjaGFuZ2UgcXVlcnkga2V5KQoJCShzZXQtbWFya2VyIHNwZWNrLW1h cmtlciAocG9pbnQpKQoJCShzZXRxIHNwZWNrLW1hcmtlci13aW5kb3cgKHNlbGVjdGVkLXdp bmRvdykpIDsgPC0tLS0KCQkoc3BlY2stcmVwbGFjZS1wdXQtb3ZlcmxheSBvdmVybGF5IGZy b20gdG8gb2Zmc2V0IHJlcGxhY2UpCgkJKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2ZhY2UgJ3Nw ZWNrLXF1ZXJ5KQoJCSh1bndpbmQtcHJvdGVjdAoJCSAgICAocHJvZ24KCQkgICAgICAod2hp bGUgKG1lbXEgZGVmICcoZm9yd2FyZCBiYWNrd2FyZCBoZWxwKSkKCQkJKGxldCAoKG1lc3Nh Z2UtbG9nLW1heCBuaWwpKQoJCQkgIDs7IFRoaXMgbWVzc2FnZSBpcyBhbHNvIG5lZWRlZCB0 byBhdm9pZAoJCQkgIDs7IGVjaG9pbmcgdHlwZWQgY2hhcmFjdGVycyBpbiB0aGUgZWNobyBh cmVhCgkJCSAgOzsgKHNlZSByZXBsYWNlLmVsKS4KCQkJICAobWVzc2FnZQoJCQkgICB0ZXh0 IChwcm9wZXJ0aXplIHdvcmQgJ2ZhY2UgJ3NwZWNrLXF1ZXJ5KQoJCQkgICAocHJvcGVydGl6 ZSByZXBsYWNlICdmYWNlICdzcGVjay1xdWVyeSkpKQoJCQkoc2V0cSBrZXkgKHZlY3RvciAo cmVhZC1ldmVudCkpKQoJCQkoc2V0cSBkZWYgKGxvb2t1cC1rZXkgc3BlY2stcmVwbGFjZS1t YXAga2V5KSkKCQkJKGNvbmQKCQkJICgoZXEgZGVmICdhY2NlcHQpCgkJCSAgKHNldHEgY2hh bmdlIHQpCgkJCSAgKHNldHEgcXVlcnkgdCkpCgkJCSAoKGVxIGRlZiAnYWNjZXB0LWFuZC1x dWl0KQoJCQkgIChzZXRxIGNoYW5nZSB0KSkKCQkJICgobWVtcSBkZWYgJyhyZWplY3QgcmVq ZWN0LWFuZC1xdWl0KSkpCgkJCSAoKGVxIGRlZiAnZm9yd2FyZCkKCQkJICAoc2V0cSBndWVz cy1pbmRleAoJCQkJKGlmICg9IGd1ZXNzLWluZGV4IGd1ZXNzLW1heCkgMCAoMSsgZ3Vlc3Mt aW5kZXgpKSkKCQkJICAoc2V0cSByZXBsYWNlIChhcmVmIGd1ZXNzLXZlY3RvciBndWVzcy1p bmRleCkpCgkJCSAgKHNwZWNrLXJlcGxhY2UtcHV0LW92ZXJsYXkgb3ZlcmxheSBmcm9tIHRv IG9mZnNldCByZXBsYWNlKSkKCQkJICgoZXEgZGVmICdiYWNrd2FyZCkKCQkJICAoc2V0cSBn dWVzcy1pbmRleAoJCQkJKGlmICh6ZXJvcCBndWVzcy1pbmRleCkgZ3Vlc3MtbWF4ICgxLSBn dWVzcy1pbmRleCkpKQoJCQkgIChzZXRxIHJlcGxhY2UgKGFyZWYgZ3Vlc3MtdmVjdG9yIGd1 ZXNzLWluZGV4KSkKCQkJICAoc3BlY2stcmVwbGFjZS1wdXQtb3ZlcmxheSBvdmVybGF5IGZy b20gdG8gb2Zmc2V0IHJlcGxhY2UpKQoJCQkgKChlcSBkZWYgJ2hlbHApCgkJCSAgKHdpdGgt b3V0cHV0LXRvLXRlbXAtYnVmZmVyICIqSGVscCoiCgkJCSAgICAocHJpbmMKCQkJICAgICAo Y29uY2F0CgkJCSAgICAgICJSZXBsYWNlIGAiIHdvcmQgIicgd2l0aCBgIiByZXBsYWNlICIn PyAgVHlwZVxuXG4iCgkJCSAgICAgIChzcGVjay1rZXlzLWhlbHAgc3BlY2stcmVwbGFjZS1r ZXlzIHQpCgkJCSAgICAgICJcbkFueXRoaW5nIGVsc2Ugd2lsbCBhY2NlcHQgdGhlIHJlcGxh Y2VtZW50IGFuZCByZXJlYWQgYXMgY29tbWFuZC5cbiIpKQoJCQkgICAgKHdpdGgtY3VycmVu dC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0CgkJCSAgICAgIChoZWxwLW1vZGUpKSkpCgkJCSAo dAoJCQkgIDs7IFRoZSBtb2RlLWV4aXRlZCBzdHVmZiBpcyBub3QgY2xlYW4gYnV0CgkJCSAg OzsgbGV0J3MgdHJ5IGRvaW5nIHRoaXMgYXMgaW4gYHF1ZXJ5LXJlcGxhY2UnLgoJCQkgIChz ZXRxIHRoaXMtY29tbWFuZCAnbW9kZS1leGl0ZWQpCgkJCSAgKHNldHEgdW5yZWFkLWNvbW1h bmQtZXZlbnRzCgkJCQkoYXBwZW5kIChsaXN0aWZ5LWtleS1zZXF1ZW5jZSBrZXkpCgkJCQkJ dW5yZWFkLWNvbW1hbmQtZXZlbnRzKSkKCQkJICAoc2V0cSBjaGFuZ2UgdCkpKSkpCgkJICAo Y29uZAoJCSAgIChjaGFuZ2UKCQkgICAgKHNwZWNrLXJlcGxhY2Utd29yZCBmcm9tIHRvIHdv cmQgcmVwbGFjZSBvdmVybGF5KSkKCQkgICAoKG92ZXJsYXlwIG92ZXJsYXkpCgkJICAgIDs7 IFJlc3RvcmUgb3ZlcmxheSBwcm9wZXJ0aWVzLgoJCSAgICAob3ZlcmxheS1wdXQgb3Zlcmxh eSAnZGlzcGxheSBuaWwpIDsgU2lsbHkKCQkgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2Zh Y2UgJ3NwZWNrLWd1ZXNzKSkpCgkJICAod2hlbiAoYW5kIHF1ZXJ5IHNwZWNrLXJlcGxhY2Ut cXVlcnkpCgkJICAgIChzcGVjay1yZXBsYWNlLXF1ZXJ5IChkb3duY2FzZSB3b3JkKSByZXBs YWNlKSkKCQkgIChzcGVjay1nb3RvLW1hcmtlcikpKSkpCgkocHJvY2Vzcy1wdXQgcHJvY2Vz cyAncHJlZW1wdGVkIG5pbCkpKSkpCgooZGVmdW4gc3BlY2stcmVwbGFjZS1wcmV2aW91cyAo Jm9wdGlvbmFsIGFyZykKICAiQ29ycmVjdCBwcmV2aW91cyB3b3JkIHdpdGggZ3Vlc3NlcyBp biBwbGFjZS4KV2l0aCBBUkcgbiBkbyB0aGlzIGZvciBudGggc3VjaCB3b3JkIHByZWNlZGlu ZyBgcG9pbnQnLiIKICAoaW50ZXJhY3RpdmUgInAiKQogIChsZXQgKChvdmVybGF5IChzcGVj ay1wcmV2aW91cy1vdmVybGF5IChvciBhcmcgMSkgJyhzcGVjay1ndWVzcykpKSkKICAgIChp ZiBvdmVybGF5Cgkoc3BlY2stcmVwbGFjZSBvdmVybGF5KQogICAgICAobGV0IChtZXNzYWdl LWxvZy1tYXgpCgkobWVzc2FnZSAiTm8gcHJldmlvdXMgd29yZCBmb3VuZCAuLi4iKSkpKSkK CihkZWZ1biBzcGVjay1yZXBsYWNlLW5leHQgKCZvcHRpb25hbCBhcmcpCiAgIkNvcnJlY3Qg bmV4dCB3b3JkIHdpdGggZ3Vlc3NlcyBpbiBwbGFjZS4KV2l0aCBBUkcgbiBkbyB0aGlzIGZv ciBudGggc3VjaCB3b3JkIGZvbGxvd2luZyBgcG9pbnQnLiIKICAoaW50ZXJhY3RpdmUgInAi KQogIChsZXQgKChvdmVybGF5IChzcGVjay1uZXh0LW92ZXJsYXkgKG9yIGFyZyAxKSAnKHNw ZWNrLWd1ZXNzKSkpKQogICAgKGlmIG92ZXJsYXkKCShzcGVjay1yZXBsYWNlIG92ZXJsYXkp CiAgICAgIChsZXQgKG1lc3NhZ2UtbG9nLW1heCkKCShtZXNzYWdlICJObyBuZXh0IHdvcmQg Zm91bmQgLi4uIikpKSkpCgo7OyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo7OyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXwo7OzsJCQkJICAgU3ludGFjdGljICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfCjs7IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCjs7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfCgo7OyAoZGVmYWxpYXMgJ3NwZWNrLWppdGlmeSAnaml0LWxv Y2stZm9udGlmeS1ub3cpCjs7IChkZWZhbGlhcyAnc3BlY2stbGF6aWZ5ICdsYXp5LWxvY2st Zm9udGlmeS1yZWdpb24pCgo7OyA7OyBTdGVmYW4ncyBpZGVhIG9mIGRvaW5nIHRoaXMuCjs7 IChkZWZzdWJzdCBzcGVjay1lbnN1cmUtZm9udGlmaWVkIChzdGFydCBlbmQpCjs7ICAgKGNv bmQKOzsgICAgKChhbmQgKGJvdW5kcCAnaml0LWxvY2stbW9kZSkgKHN5bWJvbC12YWx1ZSAn aml0LWxvY2stbW9kZSkpCjs7ICAgICAoc3BlY2staml0aWZ5IHN0YXJ0IGVuZCkpCjs7ICAg ICgoYW5kIChib3VuZHAgJ2xhenktbG9jay1tb2RlKSAoc3ltYm9sLXZhbHVlICdsYXp5LWxv Y2stbW9kZSkpCjs7ICAgICAoc3BlY2stbGF6aWZ5IHN0YXJ0IGVuZCkpKSkKCjs7IChkZWZ1 biBzcGVjay1zeW50YWN0aWMtcCAoKQo7OyAgICJSZXR1cm4gdCB3aGVuIGNoYXJhY3RlciBh dCBgcG9pbnQnIG1heSBiZSBzeW50YWN0aWNhbGx5IGNoZWNrZWQuIgo7OyAgIChhbmQgKG9y IChub3Qgc3BlY2stc3ludGFjdGljKQo7OyAJICAgKGxldCAoKHBhcnNlLXN0YXRlIChzeW50 YXgtcHBzcykpKQo7OyAJICAgICAob3IgKGFuZCAobnRoIDMgcGFyc2Utc3RhdGUpCjs7IAkJ ICAgICAgKG1lbXEgc3BlY2stc3ludGFjdGljICcoc3RyaW5ncyB0KSkpCjs7IAkJIChhbmQg KG50aCA0IHBhcnNlLXN0YXRlKQo7OyAJCSAgICAgIChtZW1xIHNwZWNrLXN5bnRhY3RpYyAn KGNvbW1lbnRzIHQpKSkpKSkKOzsgICAgICAgIChvciAobm90IHNwZWNrLWZhY2UtaW5oaWJp dC1saXN0KQo7OyAJICAgKHByb2duCjs7IAkgICAgICh1bmxlc3MgKGdldC10ZXh0LXByb3Bl cnR5IChwb2ludCkgJ2ZvbnRpZmllZCkKOzsgCSAgICAgICAoc3BlY2stZW5zdXJlLWZvbnRp ZmllZAo7OyAJCShsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKGxpbmUtZW5kLXBvc2l0aW9u KSkKOzsgCSAgICAgbmlsKSkKOzsgCSAgIChsZXQgKChmYWNlcyAoZ2V0LXRleHQtcHJvcGVy dHkgKHBvaW50KSAnZmFjZSkpKQo7OyAJICAgICA7OyBJbmhpYml0IHNwZWNraW5nIHRoaXMg d29yZCBpZiAob25lIG9mKSBpdHMgZmFjZShzKSBpcyBpbgo7OyAJICAgICA7OyBgc3BlY2st ZmFjZS1pbmhpYml0LWxpc3QnLgo7OyAJICAgICAoY29uZAo7OyAJICAgICAgKChub3QgZmFj ZXMpKQo7OyAJICAgICAgKChsaXN0cCBmYWNlcykKOzsgCSAgICAgICA7OyBXZSBoYXZlIGEg bGlzdCBvZiBmYWNlIHByb3BlcnRpZXMuCjs7IAkgICAgICAgKGNhdGNoICdmb3VuZAo7OyAJ CSAoZG9saXN0IChmYWNlIGZhY2VzIHQpCjs7IAkJICAgKHdoZW4gKG1lbXEgZmFjZSBzcGVj ay1mYWNlLWluaGliaXQtbGlzdCkKOzsgCQkJICh0aHJvdyAnZm91bmQgbmlsKSkpKSkKOzsg CSAgICAgICh0IDsgQXRvbS4KOzsgCSAgICAgICAobm90IChtZW1xIGZhY2VzIHNwZWNrLWZh Y2UtaW5oaWJpdC1saXN0KSkpKSkpKSkKCjs7IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCjs7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBfCjs7OwkJCQlQcm9jZXNzIG1hbmFnZW1lbnQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF8KOzsgX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K OzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF8KCihkZWZ1biBzcGVjay1maWx0ZXIgKHByb2Nl c3Mgc3RyaW5nKQogICJTcGVjayBwcm9jZXNzIGZpbHRlciBmdW5jdGlvbiIKICAod2hlbiAo YnVmZmVyLWxpdmUtcCAocHJvY2Vzcy1idWZmZXIgcHJvY2VzcykpCiAgICAod2l0aC1jdXJy ZW50LWJ1ZmZlciAocHJvY2Vzcy1idWZmZXIgcHJvY2VzcykKICAgICAgKHNhdmUtZXhjdXJz aW9uCiAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgICAgICAoaW5zZXJ0IHN0 cmluZykKCTs7IE5vIHVzZSBmb3IgaXQgYnV0IC4uLgoJKHNldC1tYXJrZXIgKHByb2Nlc3Mt bWFyayBwcm9jZXNzKSAocG9pbnQpKSkpKSkKCihkZWZ1biBzcGVjay1yZS1zdGFydC1wcm9j ZXNzIChkaWN0aW9uYXJpZXMtc3RyaW5nIG9wdGlvbnMpCiAgIlJldHVybiBvbGQgb3IgbmV3 IHByb2Nlc3MgZm9yIGN1cnJlbnQgYnVmZmVyLiIKICAob3IgKGFuZCAocHJvY2Vzcy1saXZl LXAgc3BlY2stcHJvY2VzcykKCSAgIChvciAoYW5kIChzdHJpbmctZXF1YWwKCQkgICAgIHNw ZWNrLWJ1ZmZlci1kaWN0aW9uYXJpZXMtc3RyaW5nIGRpY3Rpb25hcmllcy1zdHJpbmcpCgkJ ICAgIChlcXVhbCBzcGVjay1idWZmZXItb3B0aW9ucyBvcHRpb25zKQoJCSAgICBzcGVjay1w cm9jZXNzKQoJICAgICAgIChsZXQgKChwcm9jZXNzLWJ1ZmZlciAocHJvY2Vzcy1idWZmZXIg c3BlY2stcHJvY2VzcykpKQoJCSA7OyBEaWN0aW9uYXJpZXMgb3Igb3B0aW9ucyBkb24ndCBt YXRjaCwga2lsbCBvbGQKCQkgOzsgcHJvY2Vzcy4KCQkgKGRlbGV0ZS1wcm9jZXNzIHNwZWNr LXByb2Nlc3MpCgkJICh3aGVuIChidWZmZXItbGl2ZS1wIHByb2Nlc3MtYnVmZmVyKQoJCSAg IChraWxsLWJ1ZmZlciBwcm9jZXNzLWJ1ZmZlcikpCgkJIChzZXRxIHNwZWNrLXByb2Nlc3Mg bmlsKSkpKQogICAgICAobGV0ICgocHJvY2VzcwoJICAgICAobWFrZS1wcm9jZXNzCgkgICAg ICA6bmFtZSAic3BlY2siCgkgICAgICA6YnVmZmVyIChnZW5lcmF0ZS1uZXctYnVmZmVyICIq c3BlY2sqIikKCSAgICAgIDpjb21tYW5kIChhcHBlbmQgKGxpc3QgImh1bnNwZWxsIiAiLWEi ICItZCIgZGljdGlvbmFyaWVzLXN0cmluZykKCQkJICAgICAgIG9wdGlvbnMpCgkgICAgICA6 Y29ubmVjdGlvbi10eXBlICdwaXBlCgkgICAgICA6ZmlsdGVyICMnc3BlY2stZmlsdGVyCgkg ICAgICA6bm9xdWVyeSB0KSkpCgkod2l0aC1jdXJyZW50LWJ1ZmZlciAocHJvY2Vzcy1idWZm ZXIgcHJvY2VzcykKCSAgKHNldHEgc3BlY2stcHJvY2Vzcy1tYXJrZXIgKG1ha2UtbWFya2Vy KSkKCSAgKHNldHEgYnVmZmVyLXVuZG8tbGlzdCB0KSkKCTs7IEFsd2F5cyB0dXJuIG9uIHRl cnNlIG1vZGUgLSBub3RlIHRoZSBuZXdsaW5lIQoJKHByb2Nlc3Mtc2VuZC1zdHJpbmcgcHJv Y2VzcyAiIVxuIikKCShzZXRxIHNwZWNrLXByb2Nlc3MgcHJvY2VzcykKCShzZXRxIHNwZWNr LWJ1ZmZlci1kaWN0aW9uYXJpZXMtc3RyaW5nIGRpY3Rpb25hcmllcy1zdHJpbmcpCglwcm9j ZXNzKSkpCgooZGVmdW4gc3BlY2stc3RhcnQtcHJvY2VzcyAoZGljdGlvbmFyaWVzICZvcHRp b25hbCBvcHRpb25zKQogICJTdGFydCBTcGVjayBwcm9jZXNzIGZvciBjdXJyZW50IGJ1ZmZl ci4iCiAgKGxldCAoKGRpY3Rpb25hcmllcy1zdHJpbmcgKGNhciBkaWN0aW9uYXJpZXMpKQoJ cHJvY2VzcykKICAgIChzZXRxIGRpY3Rpb25hcmllcyAoY2RyIGRpY3Rpb25hcmllcykpCiAg ICAod2hpbGUgZGljdGlvbmFyaWVzCiAgICAgIChzZXRxIGRpY3Rpb25hcmllcy1zdHJpbmcK CSAgICA7OyBObyBzcGFjZSBhZnRlciB0aGUgY29tbWEuCgkgICAgKGNvbmNhdCBkaWN0aW9u YXJpZXMtc3RyaW5nICIsIiAoY2FyIGRpY3Rpb25hcmllcykpKQogICAgICAoc2V0cSBkaWN0 aW9uYXJpZXMgKGNkciBkaWN0aW9uYXJpZXMpKSkKCiAgICAoc3BlY2stcmUtc3RhcnQtcHJv Y2VzcyBkaWN0aW9uYXJpZXMtc3RyaW5nIG9wdGlvbnMpKSkKCihkZWZ1biBzcGVjay13b3Jk ICh3b3JkKQogICJTZW5kIGEgd29yZC1saWtlIG9iamVjdCB0byBgc3BlY2stcHJvY2Vzcycg YW5kIHJldHVybiBsaXN0IG9mIGd1ZXNzZXMuIgogIChsZXQqIChndWVzc2VzIHByb2Nlc3Mp CiAgICAodW5sZXNzIHNwZWNrLXByb2Nlc3MKICAgICAgOzsgVEhJUyBTSE9VTEQgTk9UIEhB VkUgSEFQUEVORUQKICAgICAgKHNwZWNrLXN0YXJ0LXByb2Nlc3Mgc3BlY2stYnVmZmVyLWRp Y3Rpb25hcmllcyBzcGVjay1idWZmZXItb3B0aW9ucykpCiAgICAoc2V0cSBwcm9jZXNzIHNw ZWNrLXByb2Nlc3MpCiAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAocHJvY2Vzcy1idWZmZXIg cHJvY2VzcykKICAgICAgKGVyYXNlLWJ1ZmZlcikKICAgICAgKHByb2Nlc3Mtc2VuZC1zdHJp bmcgcHJvY2VzcyAoY29uY2F0ICJeIiB3b3JkICJcbiIpKQogICAgICAoc2l0LWZvciAwLjA1 KQogICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgICAod2hlbiAocmUtc2VhcmNo LWZvcndhcmQgIjogIiBuaWwgdCkKCSh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgIlxcKC4q P1xcKVxcKD86LCBcXHxcblxuXFwpIiBuaWwgdCkKCSAgKHNldHEgZ3Vlc3NlcyAoY29ucyAo bWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMSkgZ3Vlc3NlcykpKQoJKHdoZW4gZ3Vlc3Nl cyAobnJldmVyc2UgZ3Vlc3NlcykpKSkpKQoKKGRlZnVuIHNwZWNrLXJ1bi1kZWxheS10aW1l ciAoKQogICJSdW4gYHNwZWNrLWRlbGF5LXRpbWVyJy4KVGhpcyBpcyBhbiBpZGxlIHRpbWVy IGNhbGxlZCBlYWNoIHRpbWUgRW1hY3MgaGFzIGJlZW4gaWRsZSBmb3IKYHNwZWNrLWRlbGF5 JyBzZWNvbmRzLiIKICAodW5sZXNzIHNwZWNrLWRlbGF5LXRpbWVyCiAgICAoc2V0cSBzcGVj ay1kZWxheS10aW1lcgoJICAocnVuLXdpdGgtaWRsZS10aW1lciBzcGVjay1kZWxheSB0ICdz cGVjay13aW5kb3dzKSkpKQoKKGRlZnVuIHNwZWNrLXJ1bi1wYXVzZS10aW1lciAoKQogICJS dW4gYHNwZWNrLXBhdXNlLXRpbWVyJy4KVGhpcyBpcyBhbiBpZGxlIHRpbWVyIGNhbGxlZCBh ZnRlciBFbWFjcyBoYXMgYmVlbiBpZGxlIGZvcgpgc3BlY2stcGF1c2UnIHNlY29uZHMuICBJ dCdzIGFjdGl2YXRlZCBieSBgc3BlY2std2luZG93cycuIgogICh1bmxlc3Mgc3BlY2stcGF1 c2UtdGltZXIKICAgIChzZXRxIHNwZWNrLXBhdXNlLXRpbWVyICh0aW1lci1jcmVhdGUpKQog ICAgKHRpbWVyLXNldC1mdW5jdGlvbiBzcGVjay1wYXVzZS10aW1lciAnc3BlY2std2luZG93 cyAnKHQpKSkpCgooZGVmdW4gc3BlY2stYWN0aXZhdGUgKCkKICAiQWN0aXZhdGUgc3BlY2tp bmcgZm9yIGN1cnJlbnQgYnVmZmVyLiIKICAodW5sZXNzIHNwZWNrLWJ1ZmZlci1kaWN0aW9u YXJpZXMKICAgIChzZXRxIHNwZWNrLWJ1ZmZlci1kaWN0aW9uYXJpZXMKCSAgKG9yIChsZXQq ICgoZW50cnkgKGFzc29jIDAgc3BlY2stZGljdGlvbmFyaWVzLWFsaXN0KSkKCQkgICAgIChi YXNlIChudGggMSBlbnRyeSkpCgkJICAgICAob3RoZXJzIChudGggMiBlbnRyeSkpKQoJCShj b25zIGJhc2Ugb3RoZXJzKSkKCSAgICAgIChsaXN0IHNwZWNrLWRlZmF1bHQtZGljdGlvbmFy eSkpKSkKCiAgOzsgTWFrZSB0aGlzIGN1c3RvbWl6YWJsZSBzb21laG93IHNpbmNlIGl0IG92 ZXJyaWRlcyBhIHBlcnNvbmFsCiAgOzsgZGljdGlvbmFyeSBzcGVjaWZpZWQgdmlhIGBzcGVj ay1idWZmZXItb3B0aW9ucycuCiAgKHdoZW4gKGFuZCAoZXEgbWFqb3ItbW9kZSAndGV4aW5m by1tb2RlKSBidWZmZXItZmlsZS1uYW1lKQogICAgKGxldCAoKHNwZWxsZmlsZQoJICAgKGNv bmNhdAoJICAgIChmaWxlLW5hbWUtZGlyZWN0b3J5IGJ1ZmZlci1maWxlLW5hbWUpICJzcGVs bGZpbGUiKSkpCiAgICAgICh3aGVuIChmaWxlLWV4aXN0cy1wIHNwZWxsZmlsZSkKCShzZXRx IHNwZWNrLWJ1ZmZlci1vcHRpb25zCgkgICAgICAoYXBwZW5kIHNwZWNrLWJ1ZmZlci1vcHRp b25zIChsaXN0ICItcCIgc3BlbGxmaWxlKSkpKSkpCgogIChzcGVjay1yZW1vdmUtb3Zlcmxh eXMpCiAgKHNwZWNrLXJlbW92ZS10ZXh0LXByb3BlcnRpZXMpCiAgKGFkZC1ob29rICdhZnRl ci1jaGFuZ2UtZnVuY3Rpb25zICdzcGVjay1hZnRlci1jaGFuZ2UgbmlsIHQpCiAgKGFkZC1o b29rICdraWxsLWJ1ZmZlci1ob29rICdzcGVjay1yZW1vdmUtYnVmZmVyIG5pbCB0KQogIChh ZGQtaG9vayAnd2luZG93LXNjcm9sbC1mdW5jdGlvbnMgJ3NwZWNrLXdpbmRvdy1zY3JvbGwg bmlsIHQpCiAgKGFkZC1ob29rICd3aW5kb3ctc3RhdGUtY2hhbmdlLWZ1bmN0aW9ucyAnc3Bl Y2std2luZG93LXN0YXRlLWNoYW5nZSBuaWwgdCkKICAoc3BlY2stc3RhcnQtcHJvY2VzcyBz cGVjay1idWZmZXItZGljdGlvbmFyaWVzIHNwZWNrLWJ1ZmZlci1vcHRpb25zKQoKICA7OyBT ZXQgdXAgd29yZGNoYXJzIGZ1bmN0aW9uICh0byBjaGFuZ2UgaXQsIHlvdSBoYXZlIHRvIHJl c3RhcnQgc3BlY2sKICA7OyBpbiB0aGlzIGJ1ZmZlcikuCiAgKGRvbGlzdCAoZW50cnkgc3Bl Y2std29yZGNoYXJzLWFsaXN0KQogICAgKHdoZW4gKHN0cmluZy1lcXVhbCAobnRoIDAgZW50 cnkpIHNwZWNrLWJ1ZmZlci1kaWN0aW9uYXJpZXMtc3RyaW5nKQogICAgICAoc2V0cSBzcGVj ay13b3JkY2hhcnMtcmVnZXhwIChjb25jYXQgIlsiIChudGggMSBlbnRyeSkgIl0iKSkKICAg ICAgKHNldHEgc3BlY2std29yZGNoYXJzLWZ1bmN0aW9uCgkgICAgKGlmIChmdW5jdGlvbnAg KG50aCAyIGVudHJ5KSkKCQkobnRoIDIgZW50cnkpCgkgICAgICAnc3BlY2std29yZGNoYXJz KSkpKQoKICAoc3BlY2stYWRkLWJ1ZmZlcikKICAoc3BlY2stcnVuLWRlbGF5LXRpbWVyKQog IChzcGVjay1ydW4tcGF1c2UtdGltZXIpKQoKKGRlZnVuIHNwZWNrLWRlYWN0aXZhdGUgKCkK ICAiRGVhY3RpdmF0ZSBzcGVja2luZyBmb3IgY3VycmVudCBidWZmZXIuIgogIChzZXRxIHNw ZWNrLW1vZGUgbmlsKQogIDs7IEludGVudGlvbmFsbHkgZG8gbm90IHJlc2V0IHRoZSBmb2xs b3dpbmcuICBJdCBpcyB1c2VkIHdoZW4KICA7OyByZWFjdGl2YXRpbmcgU3BlY2sgaW4gdGhp cyBidWZmZXIgdmlhIGBzcGVjay1tb2RlJy4KICA7OyAgIChzZXRxIHNwZWNrLWJ1ZmZlci1k aWN0aW9uYXJpZXMgbmlsKQogIDs7IFJlbW92ZSB0ZXh0IHByb3BlcnRpZXMgYW5kIG92ZXJs YXlzLgogIChzcGVjay1yZW1vdmUtdGV4dC1wcm9wZXJ0aWVzKQogIChzcGVjay1yZW1vdmUt b3ZlcmxheXMpCiAgKHNwZWNrLXJlbW92ZS1idWZmZXIpCiAgKHJlbW92ZS1ob29rICdraWxs LWJ1ZmZlci1ob29rICdzcGVjay1yZW1vdmUtYnVmZmVyIHQpCiAgKHJlbW92ZS1ob29rICdh ZnRlci1jaGFuZ2UtZnVuY3Rpb25zICdzcGVjay1hZnRlci1jaGFuZ2UgdCkKICAocmVtb3Zl LWhvb2sgJ3dpbmRvdy1zY3JvbGwtZnVuY3Rpb25zICdzcGVjay13aW5kb3ctc2Nyb2xsIHQp KQoKOzs7IyMjYXV0b2xvYWQKKGRlZnVuIHNwZWNrLWJ1ZmZlciAoJm9wdGlvbmFsIGFyZykK ICAiVG9nZ2xlIGBzcGVjay1tb2RlJyBzZWxlY3RpbmcgYSBkaWN0aW9uYXJ5LgpXaXRoIEFS RyBuaWwgb3Igb21pdHRlZCB1c2UgdGhlIGRpY3Rpb25hcnkgc3BlY2lmZWQgYnkKYHNwZWNr LWRlZmF1bHQtZGljdGlvbmFyeScuICBXaXRoIGEgbnVtZXJpYyBwcmVmaXggYXJndW1lbnQg QVJHCnVzZSB0aGUgY29ycmVzcG9uZGluZyBlbnRyeSBmcm9tIGBzcGVjay1kaWN0aW9uYXJp ZXMtYWxpc3QnLgpPdGhlcndpc2UgcHJvbXB0IGZvciBhIGRpY3Rpb25hcnkuIgogIChpbnRl cmFjdGl2ZSAiUCIpCjs7ICAgKHJlcXVpcmUgJ3NwZWNrKQogIChsZXQgKGRpY3Rpb25hcmll cyBvcHRpb25zKQogICAgKGNvbmQKICAgICAoKG5vdCBhcmcpCiAgICAgIChzZXRxIGRpY3Rp b25hcmllcyAobGlzdCBzcGVjay1kZWZhdWx0LWRpY3Rpb25hcnkpKSkKICAgICAoKG51bWJl cnAgYXJnKQogICAgICAobGV0ICgoZW50cnkgKGFzc29jIGFyZyBzcGVjay1kaWN0aW9uYXJp ZXMtYWxpc3QpKSkKCShpZiBlbnRyeQoJICAgIChwcm9nbgoJICAgICAgKHNldHEgZGljdGlv bmFyaWVzIChjb25zIChudGggMSBlbnRyeSkgKG50aCAyIGVudHJ5KSkpCgkgICAgICAoc2V0 cSBvcHRpb25zIChudGggMyBlbnRyeSkpKQoJICAobWVzc2FnZSAiTm8gYXNzb2NpYXRpb24g Zm91bmQgZm9yIFwiJXNcIiIgYXJnKSkpKQogICAgICh0CiAgICAgIChsZXQgKChkaWN0aW9u YXJ5CgkgICAgIChjb21wbGV0aW5nLXJlYWQKCSAgICAgIChjb25jYXQKCSAgICAgICAiRW50 ZXIgIiAod2hlbiBzcGVjay1tb2RlICJuZXcgIikKCSAgICAgICAiZGljdGlvbmFyeSAoUkVU IGZvciBkZWZhdWx0LCBTUEMgdG8gY29tcGxldGUpOiAiKQoJICAgICAgOzsgCSAgICAgICht YXBjYXIgJ2xpc3QgKGNvbnMgImRlZmF1bHQiIHNwZWNrLWJhc2UtZGljdGlvbmFyaWVzKSkK CSAgICAgIHNwZWNrLWJhc2UtZGljdGlvbmFyaWVzIG5pbCB0IG5pbAoJICAgICAgc3BlY2st ZGljdGlvbmFyaWVzLWhpc3Rvcnkgc3BlY2stZGVmYXVsdC1kaWN0aW9uYXJ5KSkpCgkoc2V0 cSBkaWN0aW9uYXJpZXMgKGxpc3QgZGljdGlvbmFyeSkpKSkpCgogICAgKHdoZW4gKGFuZCAo ZXF1YWwgZGljdGlvbmFyaWVzIHNwZWNrLWJ1ZmZlci1kaWN0aW9uYXJpZXMpCgkgICAgICAg KGVxdWFsIG9wdGlvbnMgc3BlY2stYnVmZmVyLW9wdGlvbnMpKQogICAgICAobWVzc2FnZSAi QnVmZmVyIGRpY3Rpb25hcmllcyBhbmQgb3B0aW9ucyB1bmNoYW5nZWQiKSkKICAgICh3aGVu IHNwZWNrLW1vZGUKICAgICAgKHNwZWNrLWRlYWN0aXZhdGUpCiAgICAgIDs7IEh1bnNwZWxs IG9jY2FzaW9uYWxseSBoYW5ncyB3aGVuIHJlc3RhcnRpbmcsIG1heWJlIHRoZQogICAgICA7 OyBmb2xsb3dpbmcgaGVscHMuCiAgICAgIChzaXQtZm9yIDAuMSkpCiAgICAoc2V0cSBzcGVj ay1idWZmZXItZGljdGlvbmFyaWVzIGRpY3Rpb25hcmllcykKICAgIChzZXRxIHNwZWNrLWJ1 ZmZlci1vcHRpb25zIG9wdGlvbnMpCiAgICAoc3BlY2stbW9kZSkpKQoKKGRlZnVuIHNwZWNr LWxpZ2h0ZXIgKCkKICAiU3BlY2sgbGlnaHRlci4iCiAgKHByb3BlcnRpemUKICAgKGlmIChz dHJpbmdwIHNwZWNrLW1vZGUtbGluZS1zcGVja2luZykKICAgICAgIHNwZWNrLW1vZGUtbGlu ZS1zcGVja2luZwogICAgIChjb25jYXQgIiAiIHNwZWNrLWJ1ZmZlci1kaWN0aW9uYXJpZXMt c3RyaW5nKSkKICAgJ2ZhY2UgKGlmIChtZW1xIChzZWxlY3RlZC13aW5kb3cpIHNwZWNrLXdp bmRvdy1saXN0KQoJICAgICAnc3BlY2stbW9kZS1saW5lLXNwZWNraW5nCgkgICAnc3BlY2st bW9kZS1saW5lLXNwZWNrZWQpKSkKCjs7OyMjI2F1dG9sb2FkCihkZWZpbmUtbWlub3ItbW9k ZSBzcGVjay1tb2RlCiAgIlRvZ2dsZSBgc3BlY2stbW9kZScuCldpdGggcHJlZml4IEFSRywg dHVybiBzcGVjay1tb2RlIG9uIGlmIGFuZCBvbmx5IGlmIEFSRyBpcwpwb3NpdGl2ZS4gIFR1 cm5pbmcgb24gc3BlY2stbW9kZSB3aWxsIHNwZWxsLWNoZWNrIChcInNwZWNrXCIpIGFsbAp3 aW5kb3dzIHNob3dpbmcgdGhlIGN1cnJlbnQgYnVmZmVyLgoKR2xvYmFsIGJpbmRpbmdzIChj dXN0b21pemFibGUgdmlhIGBzcGVjay1tb2RlLWtleXMnKS4KClxce3NwZWNrLW1vZGUtbWFw fSIKICA6Z3JvdXAgJ3NwZWNrCiAgOmluaXQtdmFsdWUgbmlsCiAgOmxpZ2h0ZXIgKDpldmFs ICh3aGVuIHNwZWNrLWxpZ2h0ZXIgKHNwZWNrLWxpZ2h0ZXIpKSkKICA6a2V5bWFwIHNwZWNr LW1vZGUtbWFwCiAgOnJlcXVpcmUgJ3NwZWNrCiAgKGlmIHNwZWNrLW1vZGUKICAgICAgKHNw ZWNrLWFjdGl2YXRlKQogICAgKHNwZWNrLWRlYWN0aXZhdGUpKSkKCihwcm92aWRlICdzcGVj aykK --------------IRttFKIG0tKOQ3VYGl4vcgGz--