From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: David Abrahams Newsgroups: gmane.emacs.devel,gmane.emacs.pretest.bugs Subject: Re: 23.0.60; Odd behavior of maximized windows Date: Fri, 04 Apr 2008 11:44:46 -0400 Message-ID: <87ve2x4ob5.fsf@gutsy.luannocracy.com> References: <87skya20ro.fsf@gutsy.luannocracy.com> <47EFD4F3.70300@swipnet.se> <87hceorqnk.fsf@gutsy.luannocracy.com> <47F082D1.60808@swipnet.se> <47F12F7F.8010101@boost-consulting.com> <47F1F483.8070709@swipnet.se> <47F24A0E.9050603@boost-consulting.com> <47F47DEE.20402@swipnet.se> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: ger.gmane.org 1207323952 23747 80.91.229.12 (4 Apr 2008 15:45:52 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 4 Apr 2008 15:45:52 +0000 (UTC) Cc: emacs-pretest-bug@gnu.org To: Jan =?utf-8?Q?Dj=C3=A4rv?= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Apr 04 17:46:23 2008 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1Jho7K-0000tJ-Tc for ged-emacs-devel@m.gmane.org; Fri, 04 Apr 2008 17:46:20 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Jho6g-0001ID-Lw for ged-emacs-devel@m.gmane.org; Fri, 04 Apr 2008 11:45:34 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Jho6L-0000rl-L4 for emacs-devel@gnu.org; Fri, 04 Apr 2008 11:45:13 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Jho6K-0000pZ-Kl for emacs-devel@gnu.org; Fri, 04 Apr 2008 11:45:12 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Jho6K-0000pC-1i for emacs-devel@gnu.org; Fri, 04 Apr 2008 11:45:12 -0400 Original-Received: from fencepost.gnu.org ([140.186.70.10]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Jho6I-0000Xb-J8 for emacs-devel@gnu.org; Fri, 04 Apr 2008 11:45:12 -0400 Original-Received: from mx10.gnu.org ([199.232.76.166]) by fencepost.gnu.org with esmtp (Exim 4.67) (envelope-from ) id 1Jho6H-00057c-GY for emacs-pretest-bug@gnu.org; Fri, 04 Apr 2008 11:45:10 -0400 Original-Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1Jho6E-0000Wi-Ce for emacs-pretest-bug@gnu.org; Fri, 04 Apr 2008 11:45:09 -0400 Original-Received: from boost-consulting.com ([206.71.190.141]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Jho6C-0000Vq-Js for emacs-pretest-bug@gnu.org; Fri, 04 Apr 2008 11:45:06 -0400 Original-Received: from gutsy.luannocracy.com.boost-consulting.com (host57.72.248.152.conversent.net [72.248.152.57]) (Authenticated sender: dave) by boost-consulting.com (Postfix) with ESMTP id 723BD1CC1E; Fri, 4 Apr 2008 08:41:34 -0700 (PDT) In-Reply-To: <47F47DEE.20402@swipnet.se> ("Jan =?utf-8?Q?Dj=C3=A4rv=22's?= message of "Thu, 03 Apr 2008 08:49:18 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux) X-detected-kernel: by monty-python.gnu.org: FreeBSD 6.x (1) X-detected-kernel: by monty-python.gnu.org: Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:94348 gmane.emacs.pretest.bugs:21866 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable on Thu Apr 03 2008, Jan Dj=C3=A4rv wrote: > David Abrahams skrev: >>=20 >> Here's the package info: >>=20 >> Package: emerald >> Priority: optional >> Section: universe/x11 >> Installed-Size: 956 >> Maintainer: Ubuntu MOTU Developers >> Original-Maintainer: Nicholas Thomas >> Architecture: i386 >> Version: 0.3~git20070717-0ubuntu1 >>=20 Hi Jan, > I now tried with that version and I simply can not repeat the effect you = are > seeing.=20=20 Does emerald crash for you? 'cause I don't think it will happen otherwise. > Do you give any special command line options to Emacs,=20 Nope. > or do you have > any speccial frame properties set?=20=20 I wouldn't know how to set a frame property, so probably not ;-) I've enclosed my .emacs > Do you maximize emacs after it is starte > by clicking on a title bar button,=20 Yep. > or have you configured compiz to always > maximize Emacs frames? Nope. Note also that my emacs is a CVS HEAD build from 2008-02-17 --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=.emacs Content-Transfer-Encoding: base64 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7Cjs7IERhdmUgQWJyYWhhbXMnIC5lbWFjcyBm aWxlLiBDaGFuZ2Vsb2cgYXQgYm90dG9tLgo7Owo7OyBJbnN0cnVjdGlvbnMgZm9yIGluc3RhbGxh dGlvbjoKOzsKOzsgMS4gT24gV2luZG93cyBzeXN0ZW1zIHlvdXIgaG9tZSBkaXJlY3RvcnkgaXMg dGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudAo7OyB2YXJpYWJsZSBIT01FIG9yIGZhaWxpbmcg dGhhdCwgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHlvdXIgQyBkcml2ZSAoQzovKQo7Owo7OyAyLiBU aGlzIGZpbGUgKC5lbWFjcykgc2hvdWxkIGJlIHBsYWNlZCBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5 IChXaW5kb3dzIHVzZXJzCjs7IHNlZSBpdGVtIDEpLgo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 OzsKCihzZXRxIHczMi1lbmFibGUtaXRhbGljcyB0KQooc2V0cSB3MzItZW5hYmxlLXN5bnRoZXNp emVkLWZvbnRzIHQpCgo7IGlzIGl0IGdudSBlbWFjcyBvciB4ZW1hY3MKKHNldHEgbXktZ251cCAo bm90IChzdHJpbmctbWF0Y2ggIl5cXChYRW1hY3NcXCkuKiIgKGVtYWNzLXZlcnNpb24pKSkpCgoo c2V0cSBteS13aW5kb3dzCiAgICAgIChvciAoZXEgc3lzdGVtLXR5cGUgJ3dpbmRvd3MtbnQpCgkg IChlcSBzeXN0ZW0tdHlwZSAnY3lnd2luMzIpCgkgIChlcSBzeXN0ZW0tdHlwZSAnY3lnd2luKSkp CgoKKGlmIG15LWdudXAKICAgIChjb25kaXRpb24tY2FzZSBuaWwKICAgICAgICAocHJvZ24KOyAg ICAgICAgICAoc2V0LWRlZmF1bHQtZm9udCAibHVjaWRhIGNvbnNvbGUtMTAiKQo7ICAgICAgICAg IChzZXQtZGVmYXVsdC1mb250ICJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8tOS4yIikKICAgICAg ICAgIChzZXQtZGVmYXVsdC1mb250ICItYml0c3RyZWFtLWJpdHN0cmVhbSB2ZXJhIHNhbnMgbW9u by1tZWRpdW0tKi1ub3JtYWwtLTEzLSotKi0qLW0tKi0qIikKOyAgICAgICAgICAoc2V0LWZhY2Ut Zm9udCAnaXRhbGljICItYml0c3RyZWFtLWJpdHN0cmVhbSB2ZXJhIHNhbnMgbW9uby1tZWRpdW0t aS1ub3JtYWwtLTEyLSotKi0qLW0tKi1pc28xMDY0Ni0xIikKOyAgICAgICAgICAoc2V0LWZhY2Ut Zm9udCAnYm9sZC1pdGFsaWMgIi1iaXRzdHJlYW0tYml0c3RyZWFtIHZlcmEgc2FucyBtb25vLWJv bGQtaS1ub3JtYWwtLTEyLSotKi0qLW0tKi1pc28xMDY0Ni0xIikKOyAgICAgICAgICAoc2V0LWZh Y2UtZm9udCAnYm9sZCAiLWJpdHN0cmVhbS1iaXRzdHJlYW0gdmVyYSBzYW5zIG1vbm8tYm9sZC0q LW5vcm1hbC0tMTItKi0qLSotbS0qLWlzbzEwNjQ2LTEiKQo7ICAgICAgICAgIChzZXQtZGVmYXVs dC1mb250ICItb3V0bGluZS1MdWNpZGEgQ29uc29sZS1ub3JtYWwtci1ub3JtYWwtbm9ybWFsLTEz LTEyMC05Ni05Ni1jLSotaXNvODg1OS0xIikKOyAgICAgICAgICAoc2V0LWZhY2UtZm9udCAnaXRh bGljICItb3V0bGluZS1MdWNpZGEgQ29uc29sZS1ub3JtYWwtaS1ub3JtYWwtbm9ybWFsLTEzLTEy MC05Ni05Ni1jLSotaXNvODg1OS0xIikKOyAgICAgICAgICAoc2V0LWZhY2UtZm9udCAnYm9sZC1p dGFsaWMgIi1vdXRsaW5lLUx1Y2lkYSBDb25zb2xlLWJvbGQtaS1ub3JtYWwtbm9ybWFsLTEzLTEy MC05Ni05Ni1jLSotaXNvODg1OS0xIikKICAgICAgICAgICkKICAgICAgKGVycm9yIG5pbCkpKQoK OyBUcnkgdG8gbG9hZCBHbnVzCihjb25kaXRpb24tY2FzZSBuaWwKICAgIChyZXF1aXJlICdnbnVz LWxvYWQpCiAgKGVycm9yIG5pbCkpCgo7OyBvbiBXaW5kb3plIHN5c3RlbXMsIGZpbGVuYW1lcyBh cmUgbm90IGNhc2Utc2Vuc2l0aXZlLiBJZiB3ZSBkb24ndCBhcnJhbmdlIGZvcgo7OyB0aGVtIHRv IGNvbWUgb3V0IGxvd2VyLWNhc2Ugd2hlbiBsaXN0ZWQsIHVzZWZ1bCB0b3lzIGxpa2UgZWRpZmYt ZGlyZWN0b3JpZXMKOzsgd29uJ3Qgd29yayBwcm9wZXJseS4KKGlmIChlcSBzeXN0ZW0tdHlwZSAn d2luZG93cy1udCkKICAgIDs7IEhvb2sgdGhlIGRpcmVjdG9yeS1maWxlcyBmdW5jdGlvbi4KICAg IChwcm9nbgogICAgICAoZGVmYWR2aWNlIGRpcmVjdG9yeS1maWxlcyAoYWZ0ZXIgbXktZGlyZWN0 b3J5LWZpbGVzLWFkdmljZSBhY3RpdmF0ZSBjb21waWxlKQogICAgICAgICJkb3duY2FzZXMgdGhl IGZpbGVuYW1lcyB0aGF0IHJlc3VsdCBmcm9tIHRoZSBidWlsdGluIGRpcmVjdG9yeS1maWxlcyBm dW5jdGlvbiIKICAgICAgICAoc2V0cSBhZC1yZXR1cm4tdmFsdWUgKG1hcGNhciAnZG93bmNhc2Ug YWQtcmV0dXJuLXZhbHVlKSkpCgo7OyAgICAgICAoZGVmYWR2aWNlIGVkaWZmLWZpbGVzMyAoYmVm b3JlIG15LWVkaWZmMy1mb3J3YXJkLXNsYXNoZXMgYWN0aXZhdGUpCjs7ICAgICAgICAgKGFkLXNl dC1hcmcgMCAobXktZm9yd2FyZC1zbGFzaGVzIChhZC1nZXQtYXJnIDApKSB0KQo7OyAgICAgICAg IChhZC1zZXQtYXJnIDEgKG15LWZvcndhcmQtc2xhc2hlcyAoYWQtZ2V0LWFyZyAxKSkgdCkKOzsg ICAgICAgICAoYWQtc2V0LWFyZyAyIChteS1mb3J3YXJkLXNsYXNoZXMgKGFkLWdldC1hcmcgMikp IHQpCjs7ICAgICAgICAgKQogICAgICAKOzsgICAgICAgKGRlZmFkdmljZSBlZGlmZi10ZW1wLWZp bGUgKGFmdGVyIG15LWVkaWZmLXRlbXAtZmlsZS1mb3J3YXJkLXNsYXNoZXMgYWN0aXZhdGUgY29t cGlsZSkKOzsgICAgICAgICAoc2V0cSBhZC1yZXR1cm4tdmFsdWUgKG15LWZvcndhcmQtc2xhc2hl cyBhZC1yZXR1cm4tdmFsdWUpKQo7OyAgICAgICAgICkKICAgICAgCiAgICAgIChkZWZ1biB3MzIt cmVzdG9yZS1mcmFtZSAoKQogICAgICAgICJSZXN0b3JlIGEgbWluaW1pemVkIGZyYW1lIgogICAg ICAgIChpbnRlcmFjdGl2ZSkKICAgICAgICAodzMyLXNlbmQtc3lzLWNvbW1hbmQgNjE3MjgpKQoK ICAgICAgKGRlZnVuIHczMi1tYXhpbWl6ZS1mcmFtZSAoKQogICAgICAgICJNYXhpbWl6ZSB0aGUg Y3VycmVudCBmcmFtZSIKICAgICAgICAoaW50ZXJhY3RpdmUpCiAgICAgICAgKHczMi1zZW5kLXN5 cy1jb21tYW5kIDYxNDg4KSkKCiAgICAgIChpZiBteS1nbnVwCiAgICAgICAgICAodzMyLW1heGlt aXplLWZyYW1lKSkKCiAgICAgIDs7IFRoZSBkb2NzIHNheSB0aGF0IHRoaXMgaXMgZGVwcmVjYXRl ZCwgYnV0IHNvIGZhciBpdCdzIHRoZQogICAgICA7OyBvbmx5IHdheSB0byBtYWtlIHRoaW5ncyB3 b3JrIHJpZ2h0LiAgV2hpY2ggdGhpbmdzPyAgSSBkb24ndAogICAgICA7OyByZW1lbWJlciBhbnlt b3JlLiAgSXQncyBjZXJ0YWlubHkgYnJlYWtpbmcgdGhpbmdzIHVuZGVyCiAgICAgIDs7IFhFbWFj cy4gIFR1cm5lZCBvZmYgZXZlcnl3aGVyZSB1bnRpbCBJIGRpc2NvdmVyIGEgcHJvYmxlbQogICAg ICAoYW5kIG5pbCBteS1nbnVwIChzZXRxIGRpcmVjdG9yeS1zZXAtY2hhciA/LykpCiAgICAgIAog ICAgICApKQoKOzsgKGRlZnVuIG15LWZvcndhcmQtc2xhc2hlcyAoZmlsZW5hbWUpCjs7ICAgImNv bnZlcnQgZWFjaCBiYWNrc2xhc2ggaW4gZmlsZW5hbWUgdG8gYSBmb3J3YXJkIHNsYXNoIgo7OyAg IChjb25jYXQgKG1hcGNhciAoZnVuY3Rpb24gKGxhbWJkYSAoYykKOzsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGlmICg9IGMgP1xcKSA/LyBjKSkpCjs7ICAgICAgICAgICAgICAgICAg IGZpbGVuYW1lKSkpCgoKOzsgZm9udC1sb2NrLW1vZGUgaXMgd2hhdCBpbXBsZW1lbnRzIHN5bnRh eCBjb2xvcmluZyBhbmQgaGlsaWdodGluZy4KKHJlcXVpcmUgJ2ZvbnQtbG9jaykgICAgICAgICAg ICA7IHJlcXVpcmUgZm9yY2VzIHRoZSBtb2R1bGUgdG8gbG9hZCByaWdodCBhd2F5Lgo7IChzZXRx IGZvbnQtbG9jay1zdXBwb3J0LW1vZGUgJ2xhenktbG9jay1tb2RlKQoKOzsgU2V0dGluZyB5b3Vy IGRlZmF1bHQgZm9udAo7Owo7OyBUbyBzZXQgdGhlIGZvbnQgZm9yIGEgc2luZ2xlIHNlc3Npb24s IHVzZSBzaGlmdC1sZWZ0LW1vdXNlLWJ1dHRvbiAoUy1kb3duLW1vdXNlLTEpCjs7IFRvIHNldCB0 aGUgZm9udCBmb3IgYWxsIHNlc3Npb25zLCBtb2RpZnkgdGhlIHNob3J0Y3V0IHRoYXQgc3RhcnRz IGVtYWNzIHRvIHVzZQo7OyBhbiBhcmd1bWVudCBvZiB0aGUgZm9ybSAtZm9udCAiZm9udG5hbWUi Cjs7Cjs7IFRvIGZpbmQgdGhlIG5hc3R5IHN0cmluZyB0byB1c2UgYXMgYSBmb250bmFtZSwgcHV0 IHRoZSBjdXJzb3Igb24gdGhlICcqJyBpbiB0aGUKOzsgZm9sbG93aW5nIGxpbmU6Cjs7ICAgICAg KHczMi1zZWxlY3QtZm9udCkgKgo7OyB0eXBlIEMteEMtZSB0byBldmFsdWF0ZSB0aGUgbGlzcCBl eHByZXNzaW9uLiBNYWtlIGEgY2hvaWNlIGluIHRoZSByZXN1bHRpbmcKOzsgZGlhbG9nLCBhbmQg Qy14LWIgKk1lc3NhZ2VzKiB0byBzd2l0Y2ggdG8gdGhlICpNZXNzYWdlcyogYnVmZmVyLiBDb3B5 IHRoZSBsaW5lCjs7IHlvdSBzZWUgbmVhciB0aGUgYm90dG9tIHdoaWNoIGxvb2tzIGxpa2UgdGhp czoKOzsgICAiLSotTHVjaWRhIENvbnNvbGUtbm9ybWFsLXItKi0qLTEzLTk3LTk2LTk2LWMtKi1p c284ODU5LTEiCjs7IHRoYXQncyB3aGF0IHlvdSB3YW50IHRvIHBhc3RlIGludG8gdGhlIHNob3J0 Y3V0IHByb3BlcnRpZXMgZGlhbG9nIGFmdGVyICctZm9udCcuCgoKOzsgSSBsaWtlIGEgc2xpZ2h0 bHkgZ3JheSBiYWNrZ3JvdW5kIGZvciBlZGl0aW5nIG9uIG15IHJhc3RlciBkaXNwbGF5cwo7OyBj b250cmFzdCB0ZW5kcyB0byB3b3JrIGJldHRlciBvbiBteSBsYXB0b3AsIGtub3duIGFzICJNT1JF UElFIgo7Owo7OyBUbyBzZWUgYSBsaXN0IG9mIGNvbG9yIG5hbWVzLCB1c2UgY29udHJvbC1taWRk bGUtbW91c2UtYnV0dG9uIChDLWRvd24tbW91c2UtMikKOzsgYW5kIGNob29zZSAiRGlzcGxheSBD b2xvcnMiIGZyb20gdGhlIHJlc3VsdGluZyBtZW51LgoKOzsgQ2hhbmdlZCBteSBtaW5kIGFib3V0 IHRoaXMKOzsgKGlmIChub3QgKGVxdWFsIChnZXRlbnYgIkNPTVBVVEVSTkFNRSIpICJNT1JFUElF IikpCjs7ICAgIChzZXQtYmFja2dyb3VuZC1jb2xvciAiZ3JheTg1IikKCjsgKHNldC1iYWNrZ3Jv dW5kLWNvbG9yICJ3aGl0ZSIpCgo7OyAgKQoKOzsKOzsgT3ZlcnJpZGUgc29tZSBvZiB0aGUgZGVm YXVsdCB2ZXJzaW9uLWNvbnRyb2wgYmVoYXZpb3IKOzsKKHJlcXVpcmUgJ3ZjLWhvb2tzKQoKKGRl ZnVuIG15LWZvcmNlLXdyaXRhYmxlICgpCiAgIk1ha2UgdGhpcyBidWZmZXIgYW5kIGl0cyBmaWxl IHdyaXRhYmxlLiAgSGFzIG5vIGVmZmVjdCBvbgogIGJ1ZmZlcnMgbm90IGFzc29jaWF0ZWQgd2l0 aCBhIGZpbGUiCiAgCiAgKGludGVyYWN0aXZlKQogIAogIChsZXQgKChmIChidWZmZXItZmlsZS1u YW1lKSkpCiAgICAoaWYgZgogICAgICAgIChsZXQqICgobW9kZXMgKGZpbGUtbW9kZXMgZikpCiAg ICAgICAgICAgICAgIChuZXdtb2RlcyAobG9naW9yID9cMjAwIG1vZGVzKSkKICAgICAgICAgICAg ICAgKQogICAgICAgICAgIAogICAgICAgICAgKGlmIChub3QgKGVxdWFsIG1vZGVzIG5ld21vZGVz KSkKICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgIChzZXQtZmlsZS1tb2RlcyBm IG5ld21vZGVzKQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAoaWYgKG5vdCAoYnVm ZmVyLW1vZGlmaWVkLXApKQogICAgICAgICAgICAgICAgICAgIChyZXZlcnQtYnVmZmVyIG5pbCB0 IHQpKQogICAgICAgICAgICAgICAgKSkKICAgICAgICAgICkpKSkgCgooZGVmdW4gbXktdmMtZmls ZS1vd25lciAoZmlsZSkKICA7OyB2Yy1tb2RlIGRvZXNuJ3Qgc2VlbXMgb3Zlcmx5IHN0cmljdCBp biBjaGVja2luZyB0aGUgd3JpdGFibGUgc3RhdHVzIG9mCiAgOzsgY2hlY2tlZC1vdXQgZmlsZXM6 IEl0IHdhbnRzIHRoZSBDVlMgdXNlcm5hbWUgdG8gYmUgaWRlbnRpY2FsIHRvIHRoZSBsb2dpbgog IDs7IG9mIHRoZSBlbWFjcyB1c2VyLiBUaGlzIGlzIHByb2JsZW1hdGljIGlmIHlvdSB3b3JrIHdp dGggcmVwb3NpdG9yaWVzIHdoZXJlCiAgOzsgeW91ciB1c2VySUQgaXMgZGlmZmVyZW50IGZyb20g eW91ciBPUyBsb2dpbi4gVGhpcyBpcyB0eXBpY2FsIHdoZW4gd29ya2luZwogIDs7IHdpdGggcmVt b3RlIHJlcG9zaXRvcmllcy4gSGVyZSB3ZSBqdXN0IGZha2UgZW1hY3MgaW50byB0aGlua2luZyB0 aGF0IHRoZXNlCiAgOzsgdGhpbmdzIGFsd2F5cyBtYXRjaC4KICAodmMtdXNlci1sb2dpbi1uYW1l KSkKCjs7Cjs7IFNldCBkZWZhdWx0cyB0aGF0IHdpbGwgYmUgcGlja2VkIHVwIGJ5IHZhcmlvdXMg bW9kZXMgYW5kIG90aGVyIGVtYWNzIHBhY2thZ2VzLgo7Owooc2V0cS1kZWZhdWx0CgogOzsgIkVs ZWN0cmlmeSIgYSBmZXcga2V5cyBpbiBTR01MLW1vZGUgZm9yIGVkaXRpbmcgSFRNTCBkb2N1bWVu dHMKIHNnbWwtcXVpY2sta2V5cyB0CiAgc2dtbC12YWxpZGF0ZS1jb21tYW5kICJndGlkeSIKOyBz Z21sLXZhbGlkYXRlLWNvbW1hbmQgInRpZHkgLWkgLXdyYXAgNzggLS1rZWVwLXRpbWUgMCAtLWdu dS1lbWFjcyAxIC0tZ251LWVtYWNzLWZpbGUiCiAKIDs7IFRlbGwgbWUgaWYgSSB1c2UgTS14IDxj b21tYW5kLW5hbWU+IHdoZW4gdGhlcmUgd2FzIGEga2V5IGJpbmRpbmcgZm9yIGl0CiB0ZWFjaC1l eHRlbmRlZC1jb21tYW5kcy1wIHQKIAogOzsgTm9uLW5pbCBtZWFucyB0cnVuY2F0ZSBsaW5lcyBp biBhbGwgd2luZG93cyBsZXNzIHRoYW4gZnVsbCBmcmFtZSB3aWRlLgogdHJ1bmNhdGUtcGFydGlh bC13aWR0aC13aW5kb3dzIG5pbAoKIDs7IFNob3cgdGhlIGZpbGUgbmFtZSBpbiB0aGUgYnVmZmVy J3MgbW9kZS1saW5lCiBtb2RlLWxpbmUtYnVmZmVyLWlkZW50aWZpY2F0aW9uICcoIiUxMmIgWyVm XSIpCgogOzsgQWx3YXlzIGluZGVudCB1c2luZyBzcGFjZXMgaW5zdGVhZCBvZiB0YWJzIChob29r ZWQgc2VwYXJhdGVseSBmb3IgbWFrZWZpbGVzIGJlbG93KQogaW5kZW50LXRhYnMtbW9kZSBuaWwK CiA7OyBCeSBkZWZhdWx0LCBlZGlmZiBhbGwgaW4gb25lIGZyYW1lLgogZWRpZmYtd2luZG93LXNl dHVwLWZ1bmN0aW9uICdlZGlmZi1zZXR1cC13aW5kb3dzLXBsYWluCgogOzsgdmlldyBkaWZmcyBz aWRlLWJ5LXNpZGUKIGVkaWZmLXNwbGl0LXdpbmRvdy1mdW5jdGlvbiAnc3BsaXQtd2luZG93LWhv cml6b250YWxseQoKIDs7IG9ubHkgaGlnaGxpZ2h0IHRoZSBzZWxlY3RlZCBkaWZmIChrZWVwcyBk b3duIGdyYXkgY3J1ZnQgb25zY3JlZW4pCiBlZGlmZi1oaWdobGlnaHQtYWxsLWRpZmZzIG5pbAoK IDs7IGRvbid0IHRyeSB0byB1c2UgcGt1bnppcCB0byBleHRyYWN0CiBhcmNoaXZlLXppcC11c2Ut cGt6aXAgbmlsCgogOzsgV2hlcmUgdG8gZmluZCBlbWFpbCBhZGRyZXNzZXMKIG1haWwtcGVyc29u YWwtYWxpYXMtZmlsZSAifmRhdmUvLm1haWxyYyIKIG1haWwtYWJicmV2LW1haWxyYy1maWxlICJ+ ZGF2ZS8ubWFpbHJjIgogKQoKKGlmIG15LWdudXAKICAgIChwcm9nbgogICAgICA7OyBBdXRvbWF0 aWNhbGx5IHJldmVydCB1bm1vZGlmaWVkIGJ1ZmZlcnMgd2hlbiB0aGV5IGNoYW5nZSBvdXQgZnJv bSB1bmRlciB1cyBvbiBkaXNrLgogICAgICAoZ2xvYmFsLWF1dG8tcmV2ZXJ0LW1vZGUgMSkKCiAg ICAgIDs7IFR1cm4gb24gc3ludGF4IGhpZ2hsaWdodGluZyBpbiBhbGwgbW9kZXMgYnkgZGVmYXVs dAogICAgICAoZ2xvYmFsLWZvbnQtbG9jay1tb2RlIDEpCiAgICAgIAogICAgICA7OyBJZiB5b3Ug ZG9uJ3Qgc2V0IGhzY3JvbGwtZ2xvYmFsLW1vZGUsIGVtYWNzIHdpbGwgc29tZXRpbWVzIHByZXZl bnQgeW91IGZyb20gbmF2aWdhdGluZwogICAgICA7OyB0byBwYXJ0cyBvZiB0cnVuY2F0ZWQgbGlu ZXMgd2hpY2ggYXJlIG9mZiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgd2luZG93IChwYW5lKS4gSSBm aW5kCiAgICAgIDs7IHRoaXMgaW5jcmVkaWJseSBhbm5veWluZywgc28gSSB0dXJuIGl0IG9mZi4K ICAgICAgKGNvbmRpdGlvbi1jYXNlIG5pbAogICAgICAgICAgKGhzY3JvbGwtZ2xvYmFsLW1vZGUg MSkKICAgICAgICAoZXJyb3IgbmlsKSkKCiAgICAgIDs7IFRoaXMgaGlnaGxpZ2h0cyB0aGUgcmVn aW9uIChiZXR3ZWVuIHBvaW50IGFuZCBtYXJrKSB3aGVuZXZlciB0aGUgbWFyayBpcwogICAgICA7 OyBhY3RpdmUuIEl0IGFsc28gY2F1c2VzIHRoZSBtYXJrIHRvIGJlIGFibGUgdG8gYmVjb21lIGlu YWN0aXZlIChlLmcuIGJ5CiAgICAgIDs7IHR5cGluZyBDLWcuIFRvIGdldCB0aGUgbWFyayBiYWNr LCBqdXN0IHR5cGUgQy14IEMteC4KICAgICAgKHRyYW5zaWVudC1tYXJrLW1vZGUgMSkKKSkKCjs7 IEVuYWJsZSB0aGVzZSB0d28gc3VwcG9zZWRseSAiYWR2YW5jZWQiIGNvbW1hbmRzIHdoaWNoIGNv bWUgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKHB1dCAndXBjYXNlLXJlZ2lvbiAnZGlzYWJsZWQgbmls KQoocHV0ICdkb3duY2FzZS1yZWdpb24gJ2Rpc2FibGVkIG5pbCkKCihzZXRxIG15LWVtYWNzLXZl cnNpb24KICAgICAgKGlmIChzdHJpbmctbWF0Y2ggIlxcKFswLTldK1suXVswLTldK1xcKSIgKGVt YWNzLXZlcnNpb24pKQogICAgICAgICAgKHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAx IChlbWFjcy12ZXJzaW9uKSkpKSkKIAoKKGlmIChhbmQgbXktd2luZG93cyAoPCBteS1lbWFjcy12 ZXJzaW9uIDIxLjMpKQogICAgKGN1c3RvbS1zZXQtZmFjZXMKICAgICAnKGJvbGQgKCh0ICg6d2Vp Z2h0IGJvbGQgOmhlaWdodCAwLjk5IDpmYW1pbHkgInRhaG9tYSIpKSkpCiAgICAgJyhpdGFsaWMg KCh0ICg6c2xhbnQgaXRhbGljIDpmYW1pbHkgImFyaWFsIikpKSkKICAgICAnKGJvbGQtaXRhbGlj ICgodCAoOnNsYW50IGl0YWxpYyA6d2VpZ2h0IGJvbGQgOmZhbWlseSAiYXJpYWwiKSkpKSAKKSkK Cjs7IFRoaXMgbWFrZXMgaXQgc28geWFua2VkL3R5cGVkIHRleHQgcmVwbGFjZXMgYW55IGFjdGl2 ZSBzZWxlY3Rpb24KOzsgSW4gWEVtYWNzIGl0IGlzIGFsaWFzZWQgdG8gcGVuZGluZy1kZWxldGUt bW9kZQooaWYgbXktZ251cAogICAgKGlmIChub3QgZGVsZXRlLXNlbGVjdGlvbi1tb2RlKQogICAg ICAgIChkZWxldGUtc2VsZWN0aW9uLW1vZGUpKQogIChpZiAobm90IHBlbmRpbmctZGVsZXRlLW1v ZGUpCiAgICAgIChwZW5kaW5nLWRlbGV0ZS1tb2RlKSkpCgo7OyBGb3Igc29tZSByZWFzb24sIFhF bWFjcyBkb2Vzbid0IGxldCBuZXdsaW5lIGluc2VydGlvbiBkbyBwZW5kaW5nCjs7IGRlbGV0ZSBi eSBkZWZhdWx0LiAgVGhlIHdheSBpdHMgcGVuZGluZy1kZWxldGUtbW9kZSB3b3JrcywgaXQKOzsg Y2hlY2tzIGVhY2ggY29tbWFuZCBzeW1ib2wgZXhlY3V0ZWQgdG8gc2VlIGlmIGl0IGhhcyB0aGUK OzsgJ3BlbmRpbmctZGVsZXRlIHByb3BlcnR5LCBzbyBzaW1wbHkgYWRkaW5nIHRoZSBwcm9wZXJ0 eSB0byB0aGUKOzsgY29tbWFuZHMgaW4gcXVlc3Rpb24gZ2V0cyB1cyB3aGVyZSB3ZSB3YW50IHRv IGJlLgooY29uZCAoKG5vdCBteS1nbnVwKQogICAgICAgKHB1dCAnbmV3bGluZSAncGVuZGluZy1k ZWxldGUgdCkKICAgICAgIChwdXQgJ25ld2xpbmUtYW5kLWluZGVudCAncGVuZGluZy1kZWxldGUg dCkpCiAgKQoKOzsgQWRkIGRpcmVjdG9yaWVzIHRvIHRoZSBwYXRoIHRoYXQgZW1hY3MgdXNlcyB0 byBsb2FkIGl0cyBwYWNrYWdlcwooc2V0cSBsb2FkLXBhdGggKGNvbnMgIi91c3Ivc2hhcmUvZW1h Y3Mvc2l0ZS1saXNwL21haWxjcnlwdCIgbG9hZC1wYXRoKSkKKHNldHEgbG9hZC1wYXRoIChjb25z ICJ+ZGF2ZS9lbGlzcCIgbG9hZC1wYXRoKSkKOzsgKHNldHEgbG9hZC1wYXRoIChjb25zICJ+L2Vs aXNwL3czbSIgbG9hZC1wYXRoKSkKKHNldHEgbG9hZC1wYXRoIChjb25zICJ+ZGF2ZS9lbGlzcC91 bm9mZmljaWFsLyIgbG9hZC1wYXRoKSkKCjsgKHJlcXVpcmUgJ3RyYW1wKQoKKHNldHEgbG9hZC1w YXRoIChjb25zICJ+ZGF2ZS9lbGlzcC93MyIgbG9hZC1wYXRoKSkKOyAocmVxdWlyZSAndzMtYXV0 bykKCjs7IGFkZCBzb21lIGRpcmVjdG9yaWVzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwg ZGVwZW5kaW5nIG9uIHRoZSBlbWFjcyB2ZXJzaW9uCihpZiBteS1lbWFjcy12ZXJzaW9uCiAgICAo bWFwY2FyIChsYW1iZGEgKGRpcikKICAgICAgICAgICAgICAoaWYgKGFuZCAoc3RyaW5nLW1hdGNo ICJwcmUtXFwoWzAtOV0rWy5dWzAtOV0rXFwpIiBkaXIpCiAgICAgICAgICAgICAgICAgICAgICAg KDwgbXktZW1hY3MtdmVyc2lvbiAoc3RyaW5nLXRvLW51bWJlciAobWF0Y2gtc3RyaW5nIDEgZGly KSkpKQogICAgICAgICAgICAgICAgICAoc2V0cSBsb2FkLXBhdGggKGNvbnMgKGNvbmNhdCAifmRh dmUvZWxpc3AvIiBkaXIpIGxvYWQtcGF0aCkpKSkKICAgICAgICAgICAgKGRpcmVjdG9yeS1maWxl cyAifmRhdmUvZWxpc3AiIG5pbCAicHJlLVxcKFswLTldK1suXVswLTldK1xcKSIpKSkKCjs7OyBz dHVmZiBmcm9tIEJyYWQKCihhdXRvbG9hZCAnc3BlZWRiYXItZnJhbWUtbW9kZSAic3BlZWRiYXIi ICJQb3B1cCBhIHNwZWVkYmFyIGZyYW1lIiB0KQooYXV0b2xvYWQgJ3NwZWVkYmFyLWdldC1mb2N1 cyAgInNwZWVkYmFyIiAiSnVtcCB0byBzcGVlZGJhciBmcmFtZSIgdCkKCjsgQWRkIGEgbWVudSBl bnRyeSBjYWxsZWQgVG9vbHMgd2hlcmUgc3BlZWRiYXIgY2FuIGxpdmUKKGlmIG15LWdudXAKICAg IChkZWZpbmUta2V5LWFmdGVyIChsb29rdXAta2V5IGdsb2JhbC1tYXAgW21lbnUtYmFyIHRvb2xz XSkKICAgICAgW3NwZWVkYmFyXSAnKCJTcGVlZGJhciIgLiBzcGVlZGJhci1mcmFtZS1tb2RlKSBb Y2FsZW5kYXJdKSkKCjsgICAgIChzZXRxIHNlbmQtbWFpbC1mdW5jdGlvbiAnZmVlZG1haWwtc2Vu ZC1pdCkKOyAgICAgKGF1dG9sb2FkICdmZWVkbWFpbC1zZW5kLWl0ICJmZWVkbWFpbCIpCgooY29u ZGl0aW9uLWNhc2UgbmlsCiAgKGxvYWQtZmlsZSAifmRhdmUvYXV0aC1jcmVkZW50aWFscy5lbCIp CiAgKGVycm9yIG5pbCkpCgo7OyBEb2VzIFhFbWFjcyBoYXZlIHNvbWUgcHJvYmxlbSB3aXRoIG1h aWwgYWxpYXMgZXhwYW5zaW9uPwo7KGlmIChub3QgbXktZ251cCkKOyAgICAoc2V0cS1kZWZhdWx0 IG1lc3NhZ2UtbWFpbC1hbGlhcy10eXBlIG5pbCkpCgooZGVmdW4gbXktbWVzc2FnZS1pbnNlcnQt Y2l0YXRpb24tbGluZSAoKQogICJJbnNlcnQgYSBzaW1wbGUgY2l0YXRpb24gbGluZS4iCiAgKHdo ZW4gbWVzc2FnZS1yZXBseS1oZWFkZXJzCiAgICAoaW5zZXJ0ICJcbm9uICIgKGZvcm1hdC10aW1l LXN0cmluZyAiJWEgJWIgJWQgJVkiIChkYXRlLXRvLXRpbWUgKG1haWwtaGVhZGVyLWRhdGUgbWVz c2FnZS1yZXBseS1oZWFkZXJzKSkpICIsICIKICAgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcg IkAiICItQVQtIiAobWFpbC1oZWFkZXItZnJvbSBtZXNzYWdlLXJlcGx5LWhlYWRlcnMpKSAiIHdy b3RlOlxuXG4iKSkpCgooY29uZGl0aW9uLWNhc2UgbmlsCiAgICAocHJvZ24KKGxvYWQtbGlicmFy eSAibWFpbGNyeXB0IikKKG1jLXNldHZlcnNpb24gImdwZyIpCihhdXRvbG9hZCAnbWMtaW5zdGFs bC13cml0ZS1tb2RlICJtYWlsY3J5cHQiIG5pbCB0KQooYXV0b2xvYWQgJ21jLWluc3RhbGwtcmVh ZC1tb2RlICJtYWlsY3J5cHQiIG5pbCB0KQooYWRkLWhvb2sgJ2dudXMtc3VtbWFyeS1tb2RlLWhv b2sgJ21jLWluc3RhbGwtcmVhZC1tb2RlKQooYWRkLWhvb2sgJ21lc3NhZ2UtbW9kZS1ob29rICdt Yy1pbnN0YWxsLXdyaXRlLW1vZGUpCihhZGQtaG9vayAnbmV3cy1yZXBseS1tb2RlLWhvb2sgJ21j LWluc3RhbGwtd3JpdGUtbW9kZSkKCjs7IFVzZSB0aGUgcGdwMiBjb21wYXRpYmlsaXR5IHdyYXBw ZXIKOyAoc2V0cSBtYy1ncGctcGF0aCAiL3Vzci9iaW4vZ3BnLWNvbXBhdCIpCjs7IElmIHlvdSBo YXZlIG1vcmUgdGhhbiBvbmUga2V5LCBzcGVjaWZ5IHRoZSBvbmUgdG8gdXNlCjsgKHNldHEgbWMt Z3BnLXVzZXItaWQgIjB4MTIzNDU2NzgiKQo7OyBBbHdheXMgc2lnbiBlbmNyeXB0ZWQgbWVzc2Fn ZXMKKHNldHEgbWMtcGdwLWFsd2F5cy1zaWduIHQpCjs7IEhvdyBsb25nIHNob3VsZCBtYWlsY3J5 cHQgcmVtZW1iZXIgeW91ciBwYXNzcGhyYXNlCihzZXRxIG1jLXBhc3N3ZC10aW1lb3V0IDYwMCkK CgopCihlcnJvciBuaWwpCikKCgooc2V0cS1kZWZhdWx0IDs7IGZpbGwtY29sdW1uIDgwIDs7Ozs7 IE1heWJlIG5hcnJvd2VyIGlzIGJldHRlcgogICAgICB0YWItd2lkdGggNAogICAgICBuZXh0LWxp bmUtYWRkLW5ld2xpbmVzIG5pbAogICAgICByZXF1aXJlLWZpbmFsLW5ld2xpbmUgbmlsCgogICAg ICBTaGVsbC1jb21tYW5kLXN3aXRjaCAiLWMiCgogICAgICA7OyBNYWlsIHNldHRpbmdzCiAgICAg IHVzZXItZnVsbC1uYW1lICJEYXZpZCBBYnJhaGFtcyIKICAgICAgdXNlci1tYWlsLWFkZHJlc3Mg ImRhdmVAYm9vc3QtY29uc3VsdGluZy5jb20iCiAgICAgIG1haWwtdXNlci1hZ2VudCAnbWVzc2Fn ZS11c2VyLWFnZW50Cgo7ICAgICAgc2VuZC1tYWlsLWZ1bmN0aW9uICdzbXRwbWFpbC1zZW5kLWl0 CjsgICAgICBtZXNzYWdlLXNlbmQtbWFpbC1mdW5jdGlvbiAnc210cG1haWwtc2VuZC1pdAoKICAg ICAgOzsgRm9yIHVzZSB3aXRoIG15IExvY2FsIEV4aW0gTVRBCiAgICAgIHNlbmQtbWFpbC1mdW5j dGlvbiAnc2VuZG1haWwtc2VuZC1pdAogICAgICA7IG1lc3NhZ2Utc2VuZC1tYWlsLWZ1bmN0aW9u ICdtZXNzYWdlLXNlbmQtbWFpbC13aXRoLXNlbmRtYWlsCiAgICAgIG1lc3NhZ2Utc2VuZC1tYWls LWZ1bmN0aW9uICdzbXRwbWFpbC1zZW5kLWl0CiAgICAgIHNlbmRtYWlsLXByb2dyYW0gImV4aW0i CiAgICAgIAogICAgICBtZXNzYWdlLXN1YmplY3QtcmUtcmVnZXhwICJeWyAJXSpcXChcXChbUnJd W0VlXVxcfFtBYV1bV3ddXFwpXFwoXFxbWzAtOV0qXFxdXFwpKjpbIAldKlxcKSpbIAldKiIKICAg ICAgbWVzc2FnZS1zeW50YXgtY2hlY2tzICcoKHNlbmRlciAuIGRpc2FibGVkKSAobG9uZy1saW5l cyAuIGRpc2FibGVkKSkKICAgICAgc210cG1haWwtY29kZS1jb252LWZyb20gbmlsCiAgICAgIAog ICAgICBzbXRwbWFpbC1kZWZhdWx0LXNtdHAtc2VydmVyICJib29zdC1jb25zdWx0aW5nLmNvbSIK ICAgICAgc210cG1haWwtbG9jYWwtZG9tYWluICJib29zdC1jb25zdWx0aW5nLmNvbSIKICAgICAg OyBzbXRwbWFpbC1kZWJ1Zy1pbmZvIHQgOzsgbWFrZSBhIHRyYWNlIG9mIGFsbCBTTVRQIHRyYW5z YWN0aW9ucwoKICAgICAgOyBzbXRwbWFpbC1zbXRwLXNlcnZpY2UgNDY1IDs7IFNTTCAtIGFwcGFy ZW50bHkgbm90IHN1cHBvcnRlZCBieSBlbWFjcwogICAgICAKICAgICAgOyBoYXZlIGdudXRscyAo dWJ1bnR1IHBhY2thZ2UgZ251dGxzLWJpbikgaW5zdGFsbGVkIG9yIHRoaXMgd29uJ3Qgd29yay4K ICAgICAgOyBzdGFydHRscyBkb2Vzbid0IGRvIGl0IQogICAgICBzbXRwbWFpbC1zbXRwLXNlcnZp Y2UgNTg3CiAgICAgIAogICAgICA7IHNtdHBtYWlsLWF1dGgtY3JlZGVudGlhbHMgIn4vLmF1dGhp bmZvIiA7OyB0aGF0J3MgdGhlIGRlZmF1bHQKICAgICAgc210cG1haWwtc3RhcnR0bHMtY3JlZGVu dGlhbHMKICAgICAgJygKICAgICAgICAoImJvb3N0LWNvbnN1bHRpbmcuY29tIiA1ODcgIiIgIiIp CjsgICAgICAgICgibmV3LmJvb3N0LWNvbnN1bHRpbmcuY29tIiA1ODcgIn4vLm9wZW5zc2xfcHJp dmF0ZS9DQWtleS5wZW0iICJ+Ly5vcGVuc3NsX3ByaXZhdGUvQ0FjZXJ0LnBlbSIpCiAgICAgICAg KCJzbXRwLnN0bHBvcnQuY29tIiA1ODcgIn5kYXZlLy5vcGVuc3NsX3ByaXZhdGUvQ0FrZXkucGVt IiAifmRhdmUvLm9wZW5zc2xfcHJpdmF0ZS9DQWNlcnQucGVtIikKICAgICAgICApCgogICAgICA7 OwogICAgICA7OyBQcmludGVyIFNldHRpbmdzCiAgICAgIDs7CiAgICAgIHBzLXByaW50ZXItbmFt ZSAiaHBfTGFzZXJqZXRfMTMwMCIKICAgICAgcHJpbnRlci1uYW1lICJocF9MYXNlcmpldF8xMzAw IgoKICAgICAgcHMtbGFuZHNjYXBlLW1vZGUgbmlsCiAgICAgIHBzLWZvbnQtZmFtaWx5ICdDb3Vy aWVyCiAgICAgIHBzLWZvbnQtc2l6ZSA5LjAKICAgICAgcHMtaW50ZXItY29sdW1uIDE4CiAgICAg IHBzLXRvcC1tYXJnaW4gMzAKICAgICAgcHMtbGVmdC1tYXJnaW4gMTgKICAgICAgcHMtcmlnaHQt bWFyZ2luIDE4CiAgICAgIHBzLWJvdHRvbS1tYXJnaW4gMTgKICAgICAgcHMtaGVhZGVyLXBhZCA5 CiAgICAgIHBzLWhlYWRlci1saW5lLXBhZCAwCiAgICAgIHBzLWhlYWRlci1mb250LXNpemUgOS4w CiAgICAgIHBzLWhlYWRlci10aXRsZS1mb250LXNpemUgMTAKICAgICAgcHMtaGVhZGVyLW9mZnNl dCA5CiAgICAgIHBzLW51bWJlci1vZi1jb2x1bW5zIDEKICAgICAgKQoKKHNldC1mYWNlLWZvcmVn cm91bmQgZm9udC1sb2NrLWJ1aWx0aW4tZmFjZSAicmVkMyIpCihzZXQtZmFjZS1mb3JlZ3JvdW5k IGZvbnQtbG9jay1jb21tZW50LWZhY2UgInJlZDMiKQooc2V0LWZhY2UtZm9yZWdyb3VuZCBmb250 LWxvY2stY29uc3RhbnQtZmFjZSAic2xhdGVibHVlIikKKHNldC1mYWNlLWZvcmVncm91bmQgZm9u dC1sb2NrLXN0cmluZy1mYWNlICJkYXJrZ3JlZW4iKQoKOzsgKGlmIChub3QgbXktZ251cCkgIDsg SSBkb24ndCBrbm93IGhvdyB0byB1c2UgQkJEQiB5ZXQgYW55d2F5Lgo7OyAgICAgKHJlcXVpcmUg J2JiZGIpCjs7ICAgKGJiZGItaW5pdGlhbGl6ZSAnZ251cyAnbWVzc2FnZSAnc2MgJ3czICdyZXBv cnRtYWlsKSkKCjs7Cjs7IFNwZWNpYWwgc3R1ZmYgZm9yIE5UCjs7CgooaWYgKGVxIHN5c3RlbS10 eXBlICd3aW5kb3dzLW50KQogICAgKHByb2duCiAgICAgIDs7CiAgICAgIDs7IFdlIGRvbid0IGtu b3cgd2hhdCB0aGlzIGRvZXMgYnV0IEJyYWQgc3dlYXJzIGl0IGhlbHBzIHdpdGggTlQKICAgICAg OzsKICAgICAgKHJlcXVpcmUgJ2NvbWludCkKICAgICAgKGZzZXQgJ29yaWdpbmFsLWNvbWludC1l eGVjLTEgKHN5bWJvbC1mdW5jdGlvbiAnY29taW50LWV4ZWMtMSkpCiAgICAgIChkZWZ1biBjb21p bnQtZXhlYy0xIChuYW1lIGJ1ZmZlciBjb21tYW5kIHN3aXRjaGVzKQogICAgICAgIChsZXQgKChi aW5hcnktcHJvY2Vzcy1pbnB1dCB0KQogICAgICAgICAgICAgIChiaW5hcnktcHJvY2Vzcy1vdXRw dXQgbmlsKSkKICAgICAgICAgIChvcmlnaW5hbC1jb21pbnQtZXhlYy0xIG5hbWUgYnVmZmVyIGNv bW1hbmQgc3dpdGNoZXMpKSkpKQogICAgICAKKGlmIG15LXdpbmRvd3MKICAgICAgOzsgU2V0IG91 ciBjb21tb24gYmFja3VwIGZpbGUgcmVwb3NpdG9yeQogICAgICAoc2V0cSBiYWNrdXAtZmlsZS1k aXIgKGNvbmNhdCAob3IgKGdldGVudiAiVEVNUCIpICIvdG1wIikgIi9lbWFjc34iKSkKCiAgOzsg ZWxzZQogIChzZXRxIGJhY2t1cC1maWxlLWRpciAiL3RtcC9lbWFjc34iKQogICkKCgo7Owo7OyBT dHVmZiBmb3IgZGVhbGluZyB3aXRoIGVtYWNzIGJhY2t1cCBmaWxlcy4gSW5zdGVhZCBvZiBsaXR0 ZXJpbmcgb3VyCjs7IGRpcmVjdG9yaWVzIHdpdGggdGhlbSB0aGV5IHdpbGwgZ28gaW50byBhIGNv bW1vbiBibGFjayBob2xlIGZvciBsYXRlcgo7OyBkaXNwb3NhbC4KOzsKCjs7IENyZWF0ZSB0aGUg YmFja3VwIGZpbGUgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgZXhpc3QKKGlmIChub3QgKGZpbGUt ZGlyZWN0b3J5LXAgYmFja3VwLWZpbGUtZGlyKSkKICAgIChtYWtlLWRpcmVjdG9yeSBiYWNrdXAt ZmlsZS1kaXIpKQoKKGRlZnVuIG15LWNvbnZlcnQtc2xhc2hlcyAoZmlsZW5hbWUpCiAgIkxvb2sg YXQgZWFjaCBjaGFyYWN0ZXIgaW4gYSBzdHJpbmcgYW5kIGNoYW5nZSAnOicgdG8gJy0nIGFuZCAn LycgdG8gJ18nIgogIChjb25jYXQgKG1hcGNhciAoZnVuY3Rpb24gKGxhbWJkYSAoYykKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQgKCg9IGMgPy8pID9fKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoPSBjID86KSA/LSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodCBjKSkpKQogICAgICAgICAgICAgICAgICBmaWxl bmFtZSkpKQoKOzsKOzsgQ3JlYXRlIG5hbWUgbWFuZ2xlciBmb3IgYmFja3VwIGZpbGVzLiBDcmVh dGVzIG9uZSBob25raW5nIGZpbGUKOzsgbmFtZSBieSBtb3JwaGluZyBwYXRoIGNvbXBvbmVudHMg aW50byB0aGUgZmlsZW5hbWUuIFVzZWQgdG8ga2VlcAo7OyBiYWNrdXAgZmlsZXMgaW4gb25lIGxv Y2F0aW9uIHdpdGhvdXQgY29uZmxpY3RzLgo7OwooaWYgKG9yIChub3QgbXktZW1hY3MtdmVyc2lv bikgKDwgbXktZW1hY3MtdmVyc2lvbiAyMS4xKSkKICAgIAogICAgKGRlZnVuIG1ha2UtYmFja3Vw LWZpbGUtbmFtZSAoZmlsZW5hbWUpCiAgICAgICJDcmVhdGUgYSBub24tbnVtZXJpYyBiYWNrdXAg ZmlsZSBuYW1lIGZvciBGSUxFTkFNRS4gQ29udmVydCB0aGUgZmlsZSBwYXRoCmludG8gb25lIGxv bmcgZmlsZSBuYW1lIGFuZCBwbGFjZXMgaXQgaW4gdGhlIGRpcmVjdG9yeSBnaXZlbiBieSBiYWNr dXAtZmlsZS1kaXIuIgogICAgICAoZXhwYW5kLWZpbGUtbmFtZSAoY29uY2F0IChteS1jb252ZXJ0 LXNsYXNoZXMgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHBhbmQtZmlsZS1u YW1lIChmaWxlLW5hbWUtZGlyZWN0b3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IGZpbGVuYW1lKSAifmRhdmUiKQogICAgICAg ICAgICAgICAgICAgICAgICBiYWNrdXAtZmlsZS1kaXIpKQoKICAoc2V0cS1kZWZhdWx0CiAgIGJh Y2t1cC1kaXJlY3RvcnktYWxpc3QgKGxpc3QgKGNvbnMgIi4iIGJhY2t1cC1maWxlLWRpcikpKQog ICAKICApCgo7OyAoc2V0cSBtYWtlLWJhY2t1cC1maWxlLW5hbWUtZnVuY3Rpb24gJ215LW1ha2Ut YmFja3VwLWZpbGUtbmFtZSkKCjs7IFRoZSBlbWFjcyBjb21tYW5kICdzaGVsbCcgbm9ybWFsbHkg YnJpbmdzIHlvdSBiYWNrIHRvIHRoZSBzYW1lCjs7ICpTaGVsbCogYnVmZmVyIGV2ZXJ5IHRpbWUu CihkZWZ1biBuZXctc2hlbGwoKQogICJTdGFydCB1cCBhIG5ldyBzaGVsbCBpbiBhIHVuaXF1ZWx5 LW5hbWVkIGJ1ZmZlci4iCiAgKGludGVyYWN0aXZlKQogIChzaGVsbCkKICA7OwogIDs7IExvb2sg Zm9yIHRoZSBwcm9jZXNzIHRoYXQgZXhpc3RzIGZvciB0aGUgbm93IGN1cnJlbnQgYnVmZmVyLiBS ZW5hbWUKICA7OyBpdCB0byBpbmNsdWRlIGl0cyBwcm9jZXNzIElELgogIDs7CiAgKGxldCAoKHBy b2NzIChwcm9jZXNzLWxpc3QpKQogICAgICAgIChhUHJvYyBuaWwpCiAgICAgICAgKGJ1ZiAoY3Vy cmVudC1idWZmZXIpKQogICAgICAgIChwaWQgbmlsKSkKICAgICh3aGlsZSBwcm9jcwogICAgICAo c2V0cSBhUHJvYyAoY2FyIHByb2NzKQogICAgICAgICAgICBwcm9jcyAoY2RyIHByb2NzKSkKICAg ICAgKGlmIChlcSBidWYgKHByb2Nlc3MtYnVmZmVyIGFQcm9jKSkKICAgICAgICAgIChzZXRxIHBp ZCAocHJvY2Vzcy1pZCBhUHJvYykKICAgICAgICAgICAgICAgIHByb2NzIG5pbCkpKQogICAgKGlm IHBpZAogICAgICAgIChyZW5hbWUtYnVmZmVyIChmb3JtYXQgIiVzICglZCkiIHNoZWxsLWZpbGUt bmFtZSBwaWQpKQogICAgICAocmVuYW1lLWJ1ZmZlciAic2hlbGwiIHQpKSkpCgoKOzsgRG9uJ3Qg Y3JvYWsgaWYgeW91IGNhbid0IGZpbmQgcHl0aG9uLW1vZGUKKGNvbmRpdGlvbi1jYXNlIG5pbAog ICAgKHJlcXVpcmUgJ3B5dGhvbi1tb2RlKQogIChlcnJvciBuaWwpKQoKOzsKOzsgV2Ugd2FudCB0 byBlbXVsYXRlIFB5dGhvbiBtb2RlJ3MgaGlnaGxpZ2h0aW5nCjs7CihkZWZ2YXIgcHl0aG9uLXNo ZWxsLWZvbnQtbG9jay1rZXl3b3JkcwogIChhcHBlbmQgJygoIltdWygpe31dIiAuIGZvbnQtbG9j ay1jb25zdGFudC1mYWNlKSkKICAgICAgICAgICcoKCJecHl0aG9uJVxcfF4+XFx8XihwZGIpIiAu IGZvbnQtbG9jay1jb25zdGFudC1mYWNlKSkKICAgICAgICAgIHB5dGhvbi1mb250LWxvY2sta2V5 d29yZHMKICAgICAgICAgICkpCgo7Owo7OyBweXRob24gLS0gY3JlYXRlcyBhIHN1YnByb2Nlc3Mg cnVubmluZyBQeXRob24uIFN0b2xlbiBmcm9tIHB5dGhvbi1tb2RlLmVsCjs7CihkZWZ1biBweXRo b24gKCkKICAoaW50ZXJhY3RpdmUpCiAgKHN3aXRjaC10by1idWZmZXItb3RoZXItd2luZG93CiAg IChhcHBseSAnbWFrZS1jb21pbnQgcHktd2hpY2gtYnVmbmFtZSBweS13aGljaC1zaGVsbCBuaWwg cHktd2hpY2gtYXJncykpCiAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2NvbWludC1wcm9tcHQtcmVn ZXhwKQogIChtYWtlLWxvY2FsLXZhcmlhYmxlICdmb250LWxvY2stZGVmYXVsdHMpCiAgKHNldHEg Y29taW50LXByb21wdC1yZWdleHAgIl5weXRob24lIFxcfF4+IFxcfF4ocGRiKSAiCiAgICAgICAg Zm9udC1sb2NrLWRlZmF1bHRzICcocHl0aG9uLXNoZWxsLWZvbnQtbG9jay1rZXl3b3JkcyB0KSkK ICAoYWRkLWhvb2sgJ2NvbWludC1vdXRwdXQtZmlsdGVyLWZ1bmN0aW9ucyAncHktY29taW50LW91 dHB1dC1maWx0ZXItZnVuY3Rpb24pCiAgKHNldC1zeW50YXgtdGFibGUgcHktbW9kZS1zeW50YXgt dGFibGUpCiAgKHVzZS1sb2NhbC1tYXAgcHktc2hlbGwtbWFwKQogIChsb2NhbC1zZXQta2V5ICJc Qy1hIiAnY29taW50LWJvbCkKICAobG9jYWwtc2V0LWtleSAiXEMtY1xDLWEiICdiZWdpbm5pbmct b2YtbGluZSkKICAocHl0aG9uLW1vZGUpCiAgKGZvbnQtbG9jay1tb2RlKSkKCjs7Cjs7IE1hdGxh Ygo7OwooYXV0b2xvYWQgJ21hdGxhYi1tb2RlICJtYXRsYWIiICJFbnRlciBNYXRsYWIgbW9kZS4i IHQpCihhdXRvbG9hZCAnbWF0bGFiLXNoZWxsICJtYXRsYWIiICJJbnRlcmFjdGl2ZSBNYXRsYWIg bW9kZS4iIHQpCgoKOzsKOzsgbXktY29tcGlsZSwgbXktcmVjb21waWxlIC0gZWFzeSBjb21waWxh dGlvbiB3aXRoIHNjcm9sbGluZyBlcnJvcnMsIGFuZCBlYXN5Cjs7ICAgICAgcmVjb21waWxhdGlv biB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IHdoYXQgYnVmZmVyIHlvdSdyZSBpbi4KOzsKCjs7IFVz ZWQgYnkgbXktY29tcGlsZSBhbmQgbXktcmVjb21waWxlIHRvIGdldCBiYWNrIHRvIHRoZSBib3R0 b20gb2YgYQo7OyBjb21waWxhdGlvbiBidWZmZXIgYWZ0ZXIgc2F2ZS1leGN1cnNpb24gYnJpbmdz IHVzIGJhY2sgdG8gdGhlIHBsYWNlIHdlCjs7IHN0YXJ0ZWQuCihkZWZ1biBteS1lbmQtb2YtY3Vy cmVudC1jb21waWxhdGlvbi1idWZmZXIoKQogIChpZiAoZXF1YWwgKGJ1ZmZlci1uYW1lKSAiKmNv bXBpbGF0aW9uKiIpCiAgICAgIChlbmQtb2YtYnVmZmVyKSkpCiAgCihkZWZ1biBteS1jb21waWxl KCZvcHRpb25hbCBjb21tYW5kKQogIChpbnRlcmFjdGl2ZSkKICAoaWYgKGludGVyYWN0aXZlLXAp CiAgICAgIChjYWxsLWludGVyYWN0aXZlbHkgJ2NvbXBpbGUpCiAgICAoY29tcGlsZSBjb21tYW5k KSkKICAoc2F2ZS1leGN1cnNpb24KICAgIChwb3AtdG8tYnVmZmVyICIqY29tcGlsYXRpb24qIikK ICAgIChlbmQtb2YtYnVmZmVyKSkKICA7OyBmb3JjZSBzY3JvbGxpbmcgZGVzcGl0ZSBzYXZlLWV4 Y3Vyc2lvbgogIChteS1lbmQtb2YtY3VycmVudC1jb21waWxhdGlvbi1idWZmZXIpKQoKKGRlZnVu IG15LWJ1ZmZlci1leGlzdHMgKGJ1ZmZlcikKICAiUmV0dXJuIHQgaWYgdGhlIGJ1ZmZlciBleGlz dHMuCmJ1ZmZlciBpcyBlaXRoZXIgYSBidWZmZXIgb2JqZWN0IG9yIGEgYnVmZmVyIG5hbWUiCiAg KGJ1ZmZlcnAgKGdldC1idWZmZXIgYnVmZmVyKSkpCiAgCihkZWZ1biBteS1yZWNvbXBpbGUgKCkK ICAiUnVuIHJlY29tcGlsYXRpb24gYnV0IHB1dCB0aGUgcG9pbnQgYXQgdGhlICplbmQqIG9mIHRo ZSBidWZmZXIKc28gd2UgY2FuIHdhdGNoIGVycm9ycyBhcyB0aGV5IGNvbWUgdXAiCiAgKGludGVy YWN0aXZlKQogIChpZiAoYW5kIChteS1idWZmZXItZXhpc3RzICIqY29tcGlsYXRpb24qIikKICAg ICAgICAgICBjb21waWxlLWNvbW1hbmQpCiAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgIDs7 IHN3aXRjaGluZyB0byB0aGUgY29tcGlsYXRpb24gYnVmZmVyIGhlcmUgY2F1c2VzIHRoZSBjb21w aWxlIGNvbW1hbmQgdG8gYmUKICAgICAgICA7OyBleGVjdXRlZCBmcm9tIHRoZSBzYW1lIGRpcmVj dG9yeSBpdCBvcmlnaW5hdGVkIGZyb20uCiAgICAgICAgKHBvcC10by1idWZmZXIgIipjb21waWxh dGlvbioiKQogICAgICAgIChyZWNvbXBpbGUpCiAgICAgICAgKHBvcC10by1idWZmZXIgIipjb21w aWxhdGlvbioiKQogICAgICAgIChlbmQtb2YtYnVmZmVyKSkKICAgIDs7IGVsc2UKICAgIChjYWxs LWludGVyYWN0aXZlbHkgJ215LWNvbXBpbGUpKQogIDs7IGZvcmNlIHNjcm9sbGluZyBkZXNwaXRl IHNhdmUtZXhjdXJzaW9uCiAgKG15LWVuZC1vZi1jdXJyZW50LWNvbXBpbGF0aW9uLWJ1ZmZlcikp Cgo7Owo7OyBUTE0gKHZlcnNpb24tY29udHJvbCkgdXRpbGl0aWVzCjs7Cgo7IChkZWZ1biBteS10 bG0tZGlmZi1sYXRlc3QoKQo7ICAgInJ1biBUTE0gZGlmZiB3aXRoIHRoZSBjdXJyZW50IGJ1ZmZl ciBhZ2FpbnN0IHRoZSBsYXRlc3QgdmVyc2lvbiB1bmRlciB2ZXJzaW9uIGNvbnRyb2wuIgo7ICAg KGludGVyYWN0aXZlKQo7ICAgKGxldCAoKGZpbGUtbmFtZSAoZmlsZS1uYW1lLW5vbmRpcmVjdG9y eSAoYnVmZmVyLWZpbGUtbmFtZSkpKSkKOyAgICAgKGxldCAoKHRlbXAtZmlsZSAoY29uY2F0IHRl bXBvcmFyeS1maWxlLWRpcmVjdG9yeSBmaWxlLW5hbWUpKSkKOyAgICAgICAoc2hlbGwtY29tbWFu ZCAoY29uY2F0ICJybSAtZiAiIHRlbXAtZmlsZSkpIDs7IHJlbW92ZSBhbnkgZXhpc3RpbmcgdGVt cCBmaWxlCjsgICAgICAgKHNoZWxsLWNvbW1hbmQgKGNvbmNhdCAidGxtIGdldCAiIGZpbGUtbmFt ZSAiICogIiB0ZW1wLWZpbGUpKQo7ICAgICAgIChzaGVsbC1jb21tYW5kIChjb25jYXQgImNobW9k IC13ICIgdGVtcC1maWxlKSkgOzsgc2hvdWxkIG5vdCBiZSB3cml0YWJsZQo7ICAgICAgIChlZGlm ZiAoYnVmZmVyLWZpbGUtbmFtZSkgdGVtcC1maWxlKQo7ICAgICAgIChkZWxldGUtZmlsZSB0ZW1w LWZpbGUpKSkpCgo7Owo7OyBHZW5lcmFsIHV0aWxpdGllcwo7OwoKKGRlZnVuIG15LWtpbGwtYnVm ZmVyICgpCiAgIkp1c3Qga2lsbCB0aGUgY3VycmVudCBidWZmZXIgd2l0aG91dCBhc2tpbmcsIHVu bGVzcyBvZiBjb3Vyc2UgaXQncyBhCm1vZGlmaWVkIGZpbGUiCiAgKGludGVyYWN0aXZlKQogIChr aWxsLWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKSkKCihkZWZ1biBteS1zd2l0Y2gtdG8tcHJldmlv dXMtYnVmZmVyICgpCiAgIlN3aXRjaCB0byB0aGUgbW9zdCByZWNlbnRseSB2aXNpdGVkIGJ1ZmZl ciB3aXRob3V0IGFza2luZyIKICAoaW50ZXJhY3RpdmUpCiAgKHN3aXRjaC10by1idWZmZXIgbmls KSkKCihkZWZ1biBteS1pbmZvLW90aGVyLWZyYW1lICgpCiAgKGludGVyYWN0aXZlKQogIChzZWxl Y3QtZnJhbWUgKG1ha2UtZnJhbWUpKQogIChpbmZvKSkKCgooZGVmdW4gbXktbWF0Y2hpbmctcGFy ZW4gKGFyZykKICAoaW50ZXJhY3RpdmUgIlAiKQogIChpZiBhcmcKICAgICAgKCkgOzsoaW5zZXJ0 ICIlIikgIDsgaW5zZXJ0IHRoZSBjaGFyYWN0ZXIgd2UncmUgYm91bmQgdG8KICAgIChjb25kICgo bG9va2luZy1hdCAiW1soe10iKQogICAgICAgICAgIChmb3J3YXJkLXNleHAgMSkKICAgICAgICAg ICAoZm9yd2FyZC1jaGFyIC0xKSkKICAgICAgICAgICgobG9va2luZy1hdCAiW119KV0iKQogICAg ICAgICAgIChmb3J3YXJkLWNoYXIgMSkKICAgICAgICAgICAoZm9yd2FyZC1zZXhwIC0xKSkKICAg ICAgICAgICh0CiAgICAgICAgICAgOzsgKGluc2VydCAiJSIpICA7IGluc2VydCB0aGUgY2hhcmFj dGVyIHdlJ3JlIGJvdW5kIHRvCiAgICAgICkpKSkKCjsgU29tZXRoaW5nIGZvciBjb252ZXJ0aW5n IERPUyBmaWxlcyB0byB1bml4IGZvcm1hdAooZGVmdW4gbXktdXNlLWNvZGUtdW5kZWNpZGVkLXVu aXggKCkKICAoaW50ZXJhY3RpdmUpCiAgKHNldC1idWZmZXItZmlsZS1jb2Rpbmctc3lzdGVtICd1 bmRlY2lkZWQtdW5peCkKICAoc2F2ZS1idWZmZXIpKQoKKGRlZnVuIG15LW90aGVyLXdpbmRvdy1i YWNrd2FyZCAoJm9wdGlvbmFsIG4pCiAgIlNlbGVjdCB0aGUgcHJldmlvdXMgd2luZG93LiBDb3Bp ZWQgZnJvbSBcIldyaXRpbmcgR251IEVtYWNzIEV4dGVuc2lvbnNcIi4iCiAgKGludGVyYWN0aXZl ICJQIikKICAob3RoZXItd2luZG93ICgtIChvciBuIDEpKSkKICApCgo7IHJldHVybiB0aGUgZmly c3Qgbm9uLW5pbCByZXN1bHQgb2YgYXBwbHlpbmcgZiB0byBlYWNoIGVsZW1lbnQgb2Ygc2VxCihk ZWZ1biBteS1maXJzdC1ub24tbmlsIChzZXEgZikKICAoYW5kIHNlcQogICAgICAgKG9yCiAgICAg ICAgKGFwcGx5IGYgKGxpc3QgKGNhciBzZXEpKSkKICAgICAgICAobXktZmlyc3Qtbm9uLW5pbCAo Y2RyIHNlcSkgZikpKQogICkKICAgICAgICAgICAgCjs7IElmIHBvaW50IGlzIGluIGEgLmN4eCBm aWxlLCBicmluZyB1cCB0aGUgLmggZmlsZSBvZiB0aGUgc2FtZSBuYW1lLAo7OyBhbmQgdmljZSB2 ZXJzYS4gIElmIHRoZXJlJ3MgYW4gLml4eCBvciBhIC5pcHAgZmlsZSBvZiB0aGUgc2FtZSBiYXNl Cjs7IG5hbWUsIHRoYXQgZ29lcyBpbiB0aGUgY3ljbGUgYWZ0ZXIgdGhlIC5oIGZpbGUKKGRlZnVu IG15LWNwcC10b2dnbGUtc3JjLWhkciAoJm9wdGlvbmFsIGFyZykKICAiSWYgcG9pbnQgaXMgaW4g YSAuY3BwIGZpbGUsIHN3aXRjaCB0byBpdHMgY29ycmVzcG9uZGluZyAuaCBmaWxlLCBvciBhIC5p eHgvLmlwcCBmaWxlIGlmIG9uZSBleGlzdHMuCklmIHBvaW50IGlzIGluIGEgLml4eC8uaXBwIGZp bGUsIHN3aXRjaCB0byBpdHMgY29ycmVzcG9uZGluZyAuaCBmaWxlLCBvciBhIC5jcHAgZmlsZSBp ZiBvbmUgZXhpc3RzLgpJZiBwb2ludCBpcyBpbiBhIC5oIGZpbGUsIHN3aXRjaCB0byBpdHMgY29y cmVzcG9uZGluZyAuY3BwIGZpbGUuIgogIChpbnRlcmFjdGl2ZSAicCIpCiAgKGxldCAoKHRoaXMt ZmlsZSAoYnVmZmVyLWZpbGUtbmFtZSkpKQogICAgOzsgZmluZCB0aGlzIGZpbGUgc3VmZml4CiAg ICAoc2V0cSBwb2ludCAoc3RyaW5nLW1hdGNoICJcXC5bQ2NIaElpXVtYeFBwXT9bWHhQcF0/JCIg dGhpcy1maWxlKSkKICAgIChpZiBwb2ludAogICAgICAgIChwcm9nbgogICAgICAgICAgKGxldCoo KHN1ZmZpeCAoc3Vic3RyaW5nIHRoaXMtZmlsZSBwb2ludCkpCiAgICAgICAgICAgICAgICAocHJl Zml4IChzdWJzdHJpbmcgdGhpcy1maWxlIDAgcG9pbnQpKQogICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICA7OyBjb25zdHJ1Y3QgY2FuZGlkYXRlIHN1ZmZpeCBwYXR0ZXJucwogICAgICAg ICAgICAgICAgKG5ldy1zdWZmaXgtcGF0dGVybnMKICAgICAgICAgICAgICAgICAoY29uZAogICAg ICAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiXlxcLltDY10iIHN1ZmZpeCkgJygiLltoSF0q IiAiLltpSV1bWHhQcF1bWHhQcF0iKSkKICAgICAgICAgICAgICAgICAgKChzdHJpbmctbWF0Y2gg Il5cXC5bSGhdIiBzdWZmaXgpICcoIi5baUldW1h4UHBdW1h4UHBdIiAiLltjQ10qIikpCiAgICAg ICAgICAgICAgICAgICgoc3RyaW5nLW1hdGNoICJeXFwuW0lpXSIgc3VmZml4KSAnKCIuW2NDXSoi ICAiLltoSF0qIikpKSkKCiAgICAgICAgICAgICAgICA7OyBmaW5kIGFub3RoZXIgZmlsZSB0byBv cGVuCiAgICAgICAgICAgICAgICAob3RoZXItZmlsZQogICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgIChteS1maXJzdC1ub24tbmlsCiAgICAgICAgICAgICAgICAgIG5ldy1zdWZmaXgt cGF0dGVybnMKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIChsYW1iZGEgKHN1 ZnBhdCkKICAgICAgICAgICAgICAgICAgICAobGV0ICgoZXhwYW5kZWQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNhciAoZmlsZS1leHBhbmQtd2lsZGNhcmRzIChjb25jYXQgcHJlZml4IHN1 ZnBhdCkpKSkpCiAgICAgICAgICAgICAgICAgICAgICA7OyBpZiBhbiBleHBhbnNpb24gd2FzIGZv dW5kIGFuZCB0aGUgZmlsZSBleGlzdHMsIHJldHVybiBpdAogICAgICAgICAgICAgICAgICAgICAg KGFuZCBleHBhbmRlZCAoZmlsZS1leGlzdHMtcCBleHBhbmRlZCkgZXhwYW5kZWQpCiAgICAgICAg ICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgIAogICAg ICAgICAgICAoaWYgb3RoZXItZmlsZSAoZmluZC1maWxlIG90aGVyLWZpbGUpKSkpKSkpCgo7OyBP bGRlciB2ZXJzaW9ucyBvZiBHTlUgRW1hY3MgKHByZS0yMC42LCBwcm9iYWJseSBhIGJpdCBlYXJs aWVyKSBoYWQgYW4gYW5ub3lpbmcKOzsgaGFiaXQgb2YgY3JlYXRpbmcgbmV3IGJ1ZmZlcnMgZm9y IHlvdSBpZiB5b3UgcXVpY2tseSB1c2VkIFRBQiBSRVQgdG8gYXV0by1jb21wbGV0ZQo7OyBhIGJ1 ZmZlciBuYW1lIHdoZW4gc3dpdGNoaW5nIGJ1ZmZlcnMgYW5kIGlmIHRoZXJlIHdhcyBtb3JlIHRo YW4gb25lIHZhbGlkCjs7IGNvbXBsZXRpb24uIFRoaXMgYXBwZWFycyB0byBiZSBmaXhlZCBub3cs IGJ1dCB0aGVzZSBkZWZpbml0aW9ucyBkb24ndCBzZWVtIHRvIAo7OyBpbnRlcmZlcmUgYW5kIG1p Z2h0IGFsc28gd29yayB3ZWxsIGZvciBYRW1hY3MuCihkZWZhZHZpY2Ugc3dpdGNoLXRvLWJ1ZmZl ciAoYmVmb3JlIG15LWV4aXN0aW5nLWJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhY3RpdmF0ZSBjb21waWxlKQogICJXaGVuIHN3aXRjaGluZyBidWZmZXJzIGludGVy YWN0aXZlbHksIG9ubHkgc3dpdGNoIHRvIGV4aXN0aW5nIGJ1ZmZlcnMKdW5sZXNzIGdpdmVuIGEg cHJlZml4IGFyZ3VtZW50LiIKICAoaW50ZXJhY3RpdmUKICAgKGxpc3QgKHJlYWQtYnVmZmVyICJT d2l0Y2ggdG8gYnVmZmVyOiAiCiAgICAgICAgICAgICAgICAgICAgICAob3RoZXItYnVmZmVyKQog ICAgICAgICAgICAgICAgICAgICAgKG51bGwgY3VycmVudC1wcmVmaXgtYXJnKSkpKSkKCihkZWZh ZHZpY2Ugc3dpdGNoLXRvLWJ1ZmZlci1vdGhlci13aW5kb3cgKGJlZm9yZSBteS1leGlzdGluZy1i dWZmZXItb3RoZXItd2luZG93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFj dGl2YXRlIGNvbXBpbGUpCiAgIldoZW4gc3dpdGNoaW5nIGJ1ZmZlcnMgaW50ZXJhY3RpdmVseSwg b25seSBzd2l0Y2ggdG8gZXhpc3RpbmcgYnVmZmVycwp1bmxlc3MgZ2l2ZW4gYSBwcmVmaXggYXJn dW1lbnQuIgogIChpbnRlcmFjdGl2ZQogICAobGlzdCAocmVhZC1idWZmZXIgIlN3aXRjaCB0byBi dWZmZXIgaW4gb3RoZXIgd2luZG93OiAiCiAgICAgICAgICAgICAgICAgICAgICAob3RoZXItYnVm ZmVyKQogICAgICAgICAgICAgICAgICAgICAgKG51bGwgY3VycmVudC1wcmVmaXgtYXJnKSkpKSkK CihkZWZhZHZpY2Ugc3dpdGNoLXRvLWJ1ZmZlci1vdGhlci1mcmFtZSAoYmVmb3JlIG15LWV4aXN0 aW5nLWJ1ZmZlci1vdGhlci1mcmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhY3RpdmF0ZSBjb21waWxlKQogICJXaGVuIHN3aXRjaGluZyBidWZmZXJzIGludGVyYWN0aXZl bHksIG9ubHkgc3dpdGNoIHRvIGV4aXN0aW5nIGJ1ZmZlcnMKdW5sZXNzIGdpdmVuIGEgcHJlZml4 IGFyZ3VtZW50LiIKICAoaW50ZXJhY3RpdmUKICAgKGxpc3QgKHJlYWQtYnVmZmVyICJTd2l0Y2gg dG8gYnVmZmVyIGluIG90aGVyIGZyYW1lOiAiCiAgICAgICAgICAgICAgICAgICAgICAob3RoZXIt YnVmZmVyKQogICAgICAgICAgICAgICAgICAgICAgKG51bGwgY3VycmVudC1wcmVmaXgtYXJnKSkp KSkKCgo7OyBFbWFjcyBoYXMgYSBidW5jaCBvZiBidWlsdC1pbiBjb21tYW5kcyBmb3Igd29ya2lu ZyB3aXRoIHJlY3Rhbmd1bGFyIHJlZ2lvbnMKOzsgb2YgdGhlIHNjcmVlbiAodHJ5ICJNLXggYXBy b3BvcyBSRVQgcmVjdGFuZ2xlIiBmb3IgYSBsaXN0KS4gVGhlc2UgY2FuIGJlCjs7ICpyZWFsbHkg Y29vbCogZm9yIG1ha2luZyBkaWFncmFtcyBpbiB0ZXh0LiBUaGVyZSBhIGNvdXBsZSBvZiByZWFs bHkgdXNlZnVsCjs7IHRoaW5ncyBtaXNzaW5nIGZyb20gdGhlIGJ1aWx0LWluIHJlY3RhbmdsZSBz dXBwb3J0LCB0aG91Z2gsIGVzcGVjaWFsbHkgaWYKOzsgeW91J3JlIG1ha2luZyBwaWN0dXJlcy4g Rmlyc3QsIHRoZSBidWlsdC1pbiB5YW5rLXJlY3RhbmdsZSBtb3ZlcyB0ZXh0IHdoaWNoCjs7IGlz IHRvIHRoZSByaWdodCBvZiBwb2ludCBvdmVyIHRvIGF2b2lkIHRoZSBuZXcgdGV4dC4gU29tZXRp bWVzIHlvdSBqdXN0IHdhbnQKOzsgdGhhdCwgYnV0IG90aGVyIHRpbWVzIHlvdSBqdXN0IHdhbnQg dG8gZHJvcCBpbiBhIHlhbmtlZCByZWN0YW5nbGUgb24gdG9wIG9mCjs7IHdoYXQncyB0aGVyZSB3 aXRob3V0IGRpc3R1cmJpbmcgdGhlIHJlc3Qgb2YgdGhlIHBpY3R1cmUuIFRoYXQncyB3aGF0Cjs7 IG15LXlhbmstcmVwbGFjZS1yZWN0YW5nbGUgZG9lcy4gQWxzbywgdGhlcmUncyBubyBidWlsdC1p biB3YXkgb2YgY29weWluZyBhCjs7IHJlZ2lvbiB0byB0aGUgcmVjdGFuZ2xlIGtpbGwtYnVmZmVy LiBGb3IgdGhhdCwgd2UgaGF2ZSBteS1zYXZlLXJlY3RhbmdsZS4KKGRlZnVuIG15LXlhbmstcmVw bGFjZS1yZWN0YW5nbGUgKCkKICAiUmVwbGFjZSBhIHJlY3Rhbmd1bGFyIHJlZ2lvbiB3aXRoIHRo ZSBsYXN0IGtpbGxlZCByZWN0YW5nbGUsIHBsYWNpbmcgaXRzIHVwcGVyIGxlZnQgY29ybmVyIGF0 IHBvaW50LiIKICAoaW50ZXJhY3RpdmUpCiAgKG15LXJlcGxhY2UtcmVjdGFuZ2xlIGtpbGxlZC1y ZWN0YW5nbGUpKQoKKGRlZnVuIG15LXJlcGxhY2UtcmVjdGFuZ2xlIChyZWN0YW5nbGUpCiAgIlJl cGxhY2UgcmVjdGFuZ3VsYXIgcmVnaW9uIHdpdGggUkVDVEFOR0xFLCBwbGFjaW5nIGl0cyB1cHBl ciBsZWZ0IGNvcm5lciBhdCBwb2ludC4KUkVDVEFOR0xFJ3MgZmlyc3QgbGluZSBpcyBpbnNlcnRl ZCBhdCBwb2ludCwgaXRzIHNlY29uZApsaW5lIGlzIGluc2VydGVkIGF0IGEgcG9pbnQgdmVydGlj YWxseSB1bmRlciBwb2ludCwgZXRjLgpSRUNUQU5HTEUgc2hvdWxkIGJlIGEgbGlzdCBvZiBzdHJp bmdzLgpBZnRlciB0aGlzIGNvbW1hbmQsIHRoZSBtYXJrIGlzIGF0IHRoZSB1cHBlciBsZWZ0IGNv cm5lcgphbmQgcG9pbnQgaXMgYXQgdGhlIGxvd2VyIHJpZ2h0IGNvcm5lci4iCiAgKGxldCAoCiAg ICAgICAgKGxpbmVzIHJlY3RhbmdsZSkKICAgICAgICAoaW5zZXJ0Y29sdW1uIChjdXJyZW50LWNv bHVtbikpCiAgICAgICAgKHNhdmUtb3ZlcndyaXRlLW1vZGUgb3ZlcndyaXRlLW1vZGUpCiAgICAg ICAgKHdpZHRoIChsZW5ndGggKGNhciByZWN0YW5nbGUpKSkKICAgICAgICAoZW5kY29sdW1uICgr IChjdXJyZW50LWNvbHVtbikgKGxlbmd0aCAoY2FyIHJlY3RhbmdsZSkpKSkKICAgICAgICAoZmly c3QgdCkpCiAgICAocHVzaC1tYXJrKQogICAgKHNldHEgb3ZlcndyaXRlLW1vZGUgbmlsKQogICAg KHdoaWxlIGxpbmVzCiAgICAgIChvciBmaXJzdAogICAgICAgICAgKHByb2duCiAgICAgICAgICAg IChmb3J3YXJkLWxpbmUgMSkKICAgICAgICAgICAgKG9yIChib2xwKSAoaW5zZXJ0ID9cbikpKSkK ICAgICAgKG1vdmUtdG8tY29sdW1uLWZvcmNlIGVuZGNvbHVtbikKICAgICAgKGRlbGV0ZS1iYWNr d2FyZC1jaGFyIHdpZHRoKQogICAgICAoc2V0cSBmaXJzdCBuaWwpCiAgICAgIChpbnNlcnQgKGNh ciBsaW5lcykpCiAgICAgIChzZXRxIGxpbmVzIChjZHIgbGluZXMpKSkKICAgIChzZXRxIG92ZXJ3 cml0ZS1tb2RlIHNhdmUtb3ZlcndyaXRlLW1vZGUpCiAgICApKQoKKGRlZnVuIG15LXNhdmUtcmVj dGFuZ2xlIChzdGFydCBlbmQpCiAgIlNhdmUgcmVjdGFuZ2xlIHdpdGggY29ybmVycyBhdCBwb2lu dCBhbmQgbWFyayBhcyBsYXN0IGtpbGxlZCBvbmUuCkNhbGxpbmcgZnJvbSBwcm9ncmFtLCBzdXBw bHkgdHdvIGFyZ3MgU1RBUlQgYW5kIEVORCwgYnVmZmVyIHBvc2l0aW9ucy4iCiAgKGludGVyYWN0 aXZlICJyIikKICAoc2V0cSBraWxsZWQtcmVjdGFuZ2xlIChleHRyYWN0LXJlY3RhbmdsZSBzdGFy dCBlbmQpKSkKCihkZWZ1biBteS1raWxsLXJlY3RhbmdsZSAoc3RhcnQgZW5kKQogICJTYXZlIHJl Y3RhbmdsZSB3aXRoIGNvcm5lcnMgYXQgcG9pbnQgYW5kIG1hcmsgYXMgbGFzdCBraWxsZWQgb25l LAphbmQgZXJhc2UgaXQuICBDYWxsaW5nIGZyb20gcHJvZ3JhbSwgc3VwcGx5IHR3byBhcmdzIFNU QVJUIGFuZCBFTkQsCmJ1ZmZlciBwb3NpdGlvbnMuIgogIChpbnRlcmFjdGl2ZSAiciIpCiAgKG15 LXNhdmUtcmVjdGFuZ2xlIHN0YXJ0IGVuZCkKICAoY2xlYXItcmVjdGFuZ2xlIHN0YXJ0IGVuZCkp Cgo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKOzsgICAgICAgICAgICAgICAgICAgIDs7Cjs7IE1v ZGUgQ3VzdG9taXphdGlvbiA7Owo7OyAgICAgICAgICAgICAgICAgICAgOzsKOzs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Cgo7Owo7OyBkaXJlZCAoZGlyZWN0b3J5IG5hdmlnYXRpb24gaW4gdGhlIGVk aXRvcikKCjs7IE1ha2UgaXQgc28gZGlyZWQgbGV0cyB5b3UgZXhwbG9yZSBkaXJlY3RvcmllcyBp biBhIHNpbmdsZSB3aW5kb3cgKHBhbmUpIHdpdGhvdXQKOzsgY29uc3RhbnRseSBvcGVuaW5nIHN1 YmRpcmVjdG9yaWVzIGFuZCBmaWxlcyBpbiBuZXcgcGFuZXMuIFRoaXMgaXMgdGhlIHdheSBkaXJl ZAo7OyB3b3JrcyBpbiBYRW1hY3MKKGRlZnVuIGRpcmVkLW1vdXNlLWZpbmQtZmlsZShldmVudCkK ICAic3dpdGNoIHRvIHRoZSBjbGlja2VkIGZpbGUgb3IgZGlyZWN0b3J5IGluIHRoZSBzYW1lIHdp bmRvdyIKICAoaW50ZXJhY3RpdmUgImUiKQogIChtb3VzZS1zZXQtcG9pbnQgZXZlbnQpCiAgKGRp cmVkLWZpbmQtZmlsZSkpCgooYWRkLWhvb2sgJ2RpcmVkLW1vZGUtaG9vawogICAgICAgICAgJyhs YW1iZGEgKCkKICAgICAgICAgICAgIChkZWZpbmUta2V5IGRpcmVkLW1vZGUtbWFwIFsobW91c2Ut MildICdkaXJlZC1tb3VzZS1maW5kLWZpbGUpCiAgICAgICAgICAgICApKQoKOzsgbWVzc2FnZQoK KGFkZC1ob29rICdtZXNzYWdlLW1vZGUtaG9vawogICAgICAgICAgJyhsYW1iZGEgKCkgKGF1dG8t ZmlsbC1tb2RlIHQpKSkKCihyZXF1aXJlICdmb290bm90ZSkKKHNldHEKICAgICAgZm9vdG5vdGUt Ym9keS10YWctc3BhY2luZyAxCiAgICAgIGZvb3Rub3RlLXNwYWNlZC1mb290bm90ZXMgbmlsCiAg ICAgIGZvb3Rub3RlLXN0eWxlICdsYXRpbikKKGFkZC1ob29rICdtZXNzYWdlLW1vZGUtaG9vayAn Zm9vdG5vdGUtbW9kZSkKCjs7Cjs7IFBpY3R1cmUKOzsKKGRlZnVuIG15LXBpY3R1cmUtbW9kZS1o b29rICgpCiAgKG1vZGlmeS1zeW50YXgtZW50cnkgP3wgInciKQogIChtb2RpZnktc3ludGF4LWVu dHJ5ID8rICJ3IikpCgooYWRkLWhvb2sgJ3BpY3R1cmUtbW9kZS1ob29rICdteS1waWN0dXJlLW1v ZGUtaG9vaykKCgo7OyBxYmsKKGNvbmRpdGlvbi1jYXNlIG5pbAogICAgKGxvYWQtbGlicmFyeSAi cWJrLW1vZGUiKQooZXJyb3IgbmlsKSkKCjs7Cjs7IChodCkoc2cpKHgpbWwKOzsKCihyZXF1aXJl ICdzZ21sLW1vZGUpCjs7IGRvbid0IGluc2VydCBuZXdsaW5lcyBhcm91bmQgPGNvZGU+Li4uPC9j b2RlPiB0YWdzCihzZXRxIGh0bWwtdGFnLWFsaXN0CiAgICAgIChhcHBlbmQKICAgICAgICcoICgi Y29kZSIpKQogICAgICAgaHRtbC10YWctYWxpc3QpCiAgICAgICkKCjsgKHNldHEgbG9hZC1wYXRo IChjb25zICJ+L2VsaXNwL254bWwtbW9kZSIgbG9hZC1wYXRoKSkKOyhjb25kaXRpb24tY2FzZSBu aWwKOyAgICAobG9hZCAifi9lbGlzcC9ueGh0bWwtbW9kZS9hdXRvc3RhcnQuZWwiKQo7ICAoZXJy b3IgbmlsKQo7ICApCgo7OyAoaWYgKGZib3VuZHAgJ254aHRtbC1tb2RlKQo7OyAgICAgICAoc2V0 cSBhdXRvLW1vZGUtYWxpc3QKOzsgICAgICAgICAgICAgKGNvbnMgJygiXFwuXFwoeCpodG1sXFwp XFwnIiAuIG54aHRtbC1tb2RlKQo7OyAgICAgICAgICAgICAgICAgICBhdXRvLW1vZGUtYWxpc3Qp KSkKICAgIAooaWYgKGZib3VuZHAgJ2h0bWwtbW9kZSkKICAgICAgIChzZXRxIGF1dG8tbW9kZS1h bGlzdAogICAgICAgICAgICAgKGNvbnMgJygiXFwuXFwoeCpodG1sXFwpXFwnIiAuIGh0bWwtbW9k ZSkKICAgICAgICAgICAgICAgICAgIGF1dG8tbW9kZS1hbGlzdCkpKQoKKGNvbmRpdGlvbi1jYXNl IG5pbAogICAgKHByb2duCiAgICAgIChzZXRxIHVuaWNvZGUtY2hhcmFjdGVyLWxpc3QtZmlsZSAi fmRhdmUvZWxpc3AvdW5pY2hhcnMuZWwiKQogICAgICAobG9hZC1saWJyYXJ5ICJ4bWx1bmljb2Rl IikpCiAgKGVycm9yIG5pbCkKICApCgooZGVmdW4gbXktbnhtbC1jb21wbGV0ZSAoYXJnKQogIChp bnRlcmFjdGl2ZSAiKlAiKQogIChpZiAocnVuLWhvb2std2l0aC1hcmdzLXVudGlsLXN1Y2Nlc3Mg J254bWwtY29tcGxldGlvbi1ob29rKQogICAgICAodW5sZXNzIChlcXVhbCAoY2hhci1iZWZvcmUp ID8+KSAoaW5zZXJ0ID8+KSkKICAgIChkYWJicmV2LWV4cGFuZCBhcmcpKSkKCihkZWZ1biBteS1u eG1sLW1vZGUtaG9vayAoKQogIChsb2NhbC1zZXQta2V5ICJcTS0vIiAnbXktbnhtbC1jb21wbGV0 ZSkKICApCgooY29uZGl0aW9uLWNhc2UgbmlsCiAgICAocHJvZ24KICAgICAgKGxvYWQgInJuZy1h dXRvIikKICAgICAgKG1lc3NhZ2UgIm54bWwgbG9hZGVkIikKICAgICAgKHNldHEgYXV0by1tb2Rl LWFsaXN0CiAgICAgICAgICAgIChjb25zICcoIlxcLlxcKHhtbFxcfHhzbFxcfHJuZ1xcKVxcJyIg LiBueG1sLW1vZGUpCiAgICAgICAgICAgICAgICAgIGF1dG8tbW9kZS1hbGlzdCkpCiAgICAgIChh ZGQtaG9vayAnbnhtbC1tb2RlLWhvb2sgJ215LW54bWwtbW9kZS1ob29rKQogICAgICApCiAgKGVy cm9yIG5pbCkKICApCgoocmVxdWlyZSAnc2dtbC1tb2RlKQo7OyBkb24ndCBpbnNlcnQgbmV3bGlu ZXMgYXJvdW5kIDxjb2RlPi4uLjwvY29kZT4gdGFncwooc2V0cSBodG1sLXRhZy1hbGlzdAogICAg ICAoYXBwZW5kCiAgICAgICAnKCAoImNvZGUiKSkKICAgICAgIGh0bWwtdGFnLWFsaXN0KQogICAg ICApCgoKKGRlZmluZS1za2VsZXRvbiBodG1sLWhyZWYtYW5jaG9yCiAgIkhUTUwgYW5jaG9yIHRh ZyB3aXRoIGhyZWYgYXR0cmlidXRlLiIKICAiVVJMOiAiCiAgIjxhIGhyZWY9XCIiIHN0ciAiXCI+ IiBfICI8L2E+IikKCihkZWZ1biBteS1tYXJrLW9yLXBvaW50ICgpCiAgIlJldHVybiB0aGUgbWFy ayBpZiBpdCBpcyBhY3RpdmUsIG90aGVyd2lzZSB0aGUgcG9pbnQuIgogIChpZgogICAgICAoaWYg KGZib3VuZHAgJ3JlZ2lvbi1hY3RpdmUtcCkgKHJlZ2lvbi1hY3RpdmUtcCkgbWFyay1hY3RpdmUp CiAgICAgIChtYXJrKQogICAgKHBvaW50KSkpCgooZGVmdW4gbXktc2VsZWN0aW9uICgpCiAgIlJl dHVybiBhIHBhaXIgW3N0YXJ0IC4gZmluaXNoKSBkZWxpbWl0aW5nIHRoZSBjdXJyZW50IHNlbGVj dGlvbiIKICAgICAgKGxldCAoKHN0YXJ0IChtYWtlLW1hcmtlcikpCiAgICAgICAgICAgIChmaW5p c2ggKG1ha2UtbWFya2VyKSkpCiAgICAgICAgKHNldC1tYXJrZXIgc3RhcnQgKG1pbiAobXktbWFy ay1vci1wb2ludCkgKHBvaW50KSkpCgogICAgICAgIChzZXQtbWFya2VyIGZpbmlzaCAobWF4ICht eS1tYXJrLW9yLXBvaW50KSAocG9pbnQpKSkKICAgICAgICAoY29ucyBzdGFydCBmaW5pc2gpKSkK CihkZWZ1biBteS1yZXBsYWNlLWluLXJlZ2lvbiAoc3RhcnQgZmluaXNoIGtleSByZXBsYWNlbWVu dCkKICAiSW4gdGhlIHJhbmdlIFtTVEFSVCwgRklOSVNIKSwgcmVwbGFjZSB0ZXh0IG1hdGNoaW5n IEtFWSB3aXRoIFJFUExBQ0VNRU5UIgogIChnb3RvLWNoYXIgc3RhcnQpCiAgKHdoaWxlIChzZWFy Y2gtZm9yd2FyZCBrZXkgZmluaXNoIHQpCiAgICAocmVwbGFjZS1tYXRjaCByZXBsYWNlbWVudCkp KQoKKGRlZnVuIG15LWFjdGl2YXRlLW1hcmsgKCkKICAiTWFrZSB0aGUgbWFyayBhY3RpdmUgaWYg aXQgaXMgY3VycmVudGx5IGluYWN0aXZlIgogIChzZXQtbWFyayAobWFyayB0KSkpCgooZGVmdW4g bXktY29kZS10YWcgKCkKICAiU3Vycm91bmQgdGhlIHJlZ2lvbiB3aXRoIDxjb2RlPi4uLjwvY29k ZT4sIGZvcm1hdHRpbmcgaXQgYXMgY29kZS4iCiAgKGludGVyYWN0aXZlKQogIChzZ21sLXRhZyAi Y29kZSIpKQoKKGRlZnVuIG15LXNnbWwtdmFsaWRhdGUtd3JpdGViYWNrICgpCiAgKGludGVyYWN0 aXZlKQogIChsZXQqICgoZmlsZSAoYnVmZmVyLWZpbGUtbmFtZSkpCiAgICAgICAgIChjbWQKICAg ICAgICAgIChmb3JtYXQgInRpZHkgLS10aWR5LW1hcmsgbm8gLWkgLXdyYXAgNzggLW0gLWFzeGh0 bWwgLS1tZXJnZS1kaXZzIG5vIC0tbWVyZ2Utc3BhbnMgbm8gLS1kb2N0eXBlIHN0cmljdCAtdXRm OCAlcyIgZmlsZSBmaWxlKSApKQoKICAoc2F2ZS1zb21lLWJ1ZmZlcnMgKG5vdCBjb21waWxhdGlv bi1hc2stYWJvdXQtc2F2ZSkgbmlsKQogIChjb21waWxlLWludGVybmFsIGNtZCAiTm8gbW9yZSBl cnJvcnMiKQo7ICAoc2dtbC12YWxpZGF0ZSBjbWQpCiAgICApKQoKKGRlZnVuIG15LWNvbnZlcnQt aHRtbC1saXRlcmFscyAoKQogICJjb252ZXJ0IHNwZWNpYWwgY2hhcmFjdGVycyBpbiB0aGUgcmVn aW9uIGFzIGZvbGxvd3M6CgogICBcIiZcIiA9PiBcIiZhbXA7XCIgICAgIFwiPFwiID0+IFwiJmx0 O1wiICAgICAgXCI+XCIgPT4gXCImZ3Q7XCIgICAgXCJcXFwiXCIgPT4gXCImcXVvdDtcIgpUaGlz IG1ha2VzIGEgcmVnaW9uIG9mIHNvdXJjZSBjb2RlIGFwcGVhciBjb3JyZWN0bHkgaW4gYW4gSFRN TCBmaWxlLiIKICAoaW50ZXJhY3RpdmUpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAobGV0ICgoc3Rh cnQgKGNhciAobXktc2VsZWN0aW9uKSkpCiAgICAgICAgICAoZmluaXNoIChjZHIgKG15LXNlbGVj dGlvbikpKSkKICAgICAgKG15LXJlcGxhY2UtaW4tcmVnaW9uIHN0YXJ0IGZpbmlzaCAiJiIgIiZh bXA7IikKICAgICAgKG15LXJlcGxhY2UtaW4tcmVnaW9uIHN0YXJ0IGZpbmlzaCAiPCIgIiZsdDsi KQogICAgICAobXktcmVwbGFjZS1pbi1yZWdpb24gc3RhcnQgZmluaXNoICI+IiAiJmd0OyIpCiAg ICAgIChteS1yZXBsYWNlLWluLXJlZ2lvbiBzdGFydCBmaW5pc2ggIlwiIiAiJnF1b3Q7IikKICAg ICAgKSkpCgooZGVmdW4gbXktcHJlZm9ybWF0dGVkICgpCiAgIlN1cnJvdW5kIHRoZSByZWdpb24g d2l0aCA8cHJlPi4uLjwvcHJlPiBhbmQgY29udmVydApzcGVjaWFsIGNoYXJhY3RlcnMgY29udGFp bmVkIHdpdGhpbiBhcyBmb2xsb3dzOgoKICAgXCImXCIgPT4gXCImYW1wO1wiICAgICBcIjxcIiA9 PiBcIiZsdDtcIiAgICAgIFwiPlwiID0+IFwiJmd0O1wiICAgIFwiXFxcIlwiID0+IFwiJnF1b3Q7 XCIKVGhpcyBtYWtlcyBhIHJlZ2lvbiBvZiBzb3VyY2UgY29kZSBhcHBlYXIgY29ycmVjdGx5IGlu IGFuIEhUTUwgZmlsZS4iCiAgKGludGVyYWN0aXZlKQogICAgICAgIChteS1jb252ZXJ0LWh0bWwt bGl0ZXJhbHMpCiAgKHNnbWwtdGFnICJwcmUiKQopCgooZGVmdW4gbXkteWFuay1jb2RlICgpCiAg Illhbmsgd2hhdGV2ZXIgd2FzIGxhc3Qga2lsbGVkLCBhZGQgSFRNTCBmb3JtYXR0aW5nIGFzIGJs b2NrcXVvdGVkLApwcmVmb3JtYXR0ZWQgdGV4dCwgYW5kIHRyYW5zbGF0ZSB0aGUgc3BlY2lhbCBj aGFyYWN0ZXJzIFwiPFxcXCI+JlwiIHRvIHRoZWlyIEhUTUwKZXF1aXZhbGVudHMuIgogIChpbnRl cmFjdGl2ZSkKICAoeWFuaykKICAobXktYWN0aXZhdGUtbWFyaykKICAobXktY29udmVydC1odG1s LWxpdGVyYWxzKSkKCjsgd29ya2Fyb3VuZCBmb3IgWEVtYWNzCihpZiAobm90IChib3VuZHAgJ3No b3ctcGFyZW4tbW9kZSkpCiAgICAoZGVmdW4gc2hvdy1wYXJlbi1tb2RlICh5ZXMpKSkKCihkZWZ1 biBteS1jb2RlLW1vZGUtaG9vayAoKQogIChmb250LWxvY2stbW9kZSB0KQogIChzaG93LXBhcmVu LW1vZGUgdCkKICAobG9jYWwtc2V0LWtleSBbcmV0dXJuXSAnbmV3bGluZS1hbmQtaW5kZW50KQog IChsb2NhbC1zZXQta2V5IFsoY29udHJvbCByZXR1cm4pXSAnbmV3bGluZSkKICAobG9jYWwtc2V0 LWtleSBbKCBjb250cm9sID9cKCApXSAnbXktbWF0Y2hpbmctcGFyZW4pCiAgCiAgOzsgVHJ5IHRv IG1ha2UgY29tcGxldGlvbiBjYXNlIHNlbnNpdGl2ZSBpbiBjb2RlIGJ1ZmZlcnMuCiAgKG1ha2Ut bG9jYWwtdmFyaWFibGUgJ2RhYmJyZXYtY2FzZS1mb2xkLXNlYXJjaCkKICAoc2V0cSBkYWJicmV2 LWNhc2UtZm9sZC1zZWFyY2ggbmlsKQogICkKCjs7Cjs7IEphbQo7OwoocmVxdWlyZSAnamFtLW1v ZGUpCgogOzsgSWYgYGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uJyBpc24ndCBhdmFpbGFibGUsIHBy b3ZpZGUgb25lLgogICh1bmxlc3MgKGZib3VuZHAgJ2xpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKQog ICAgKGRlZnVuIGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uICgmb3B0aW9uYWwgbikKICAgICAgIlJl dHVybiB0aGUgYHBvaW50JyBvZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IGxpbmUuIgog ICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUgbikKICAgICAg ICAocG9pbnQpKSkpCgogIDs7IElmIGBsaW5lLWVuZC1wb3NpdGlvbicgaXNuJ3QgYXZhaWxhYmxl LCBwcm92aWRlIG9uZS4KICAodW5sZXNzIChmYm91bmRwICdsaW5lLWVuZC1wb3NpdGlvbikKICAg IChkZWZ1biBsaW5lLWVuZC1wb3NpdGlvbiAoJm9wdGlvbmFsIG4pCiAgICAgICJSZXR1cm4gdGhl IGBwb2ludCcgb2YgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBsaW5lLiIKICAgICAgKHNhdmUtZXhj dXJzaW9uCiAgICAgICAgKGVuZC1vZi1saW5lIG4pCiAgICAgICAgKHBvaW50KSkpKQoKKGRlZnVu IG15LWphbS1lbGVjdHJpYy1zZW1pY29sb24gKCkKICAoaW50ZXJhY3RpdmUgIioiKQogIChpbnNl cnQtc3RyaW5nCiAgIChzYXZlLWV4Y3Vyc2lvbgogICAgIChsZXQgKChzdGFydCAocG9pbnQpKSkK ICAgICAgIChpZiAoYW5kIChyZS1zZWFyY2gtYmFja3dhcmQgIl5bXiNdKlteIFx0XG5dIiAobGlu ZS1iZWdpbm5pbmctcG9zaXRpb24pKQogICAgICAgICAgICAgICAgKGVxdWFsIChtYXRjaC1lbmQg MCkgc3RhcnQpKQogICAgICAgICAgICIgOyIgIjsiKSkpKSkKICAgICAgICAgIAoKKGRlZnVuIG15 LXNoLWluZGVudGF0aW9uICgpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoc2V0LW1hcmsgKHBvaW50 KSkgOyB7ICAKICAgIChpZiAocmUtc2VhcmNoLWJhY2t3YXJkICJeW14jXG5dKlxcKFxcW1xcfF1c XHwoXFx8KVxcfHtcXHx9XFwpIiBuaWwgdCkKICAgICAgICAoKyAoY3VycmVudC1pbmRlbnRhdGlv bikKICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lu bmluZyAxKSkKICAgICAgICAgICAgIChpZiAobG9va2luZy1hdCAiW1t7KF0iKSA0IDApKSkKICAg ICAgMCkpKQoKKGRlZnVuIG15LXNoLW5ld2xpbmUtYW5kLWluZGVudCAoKQogIChpbnRlcmFjdGl2 ZSAiKiIpCiAgKG5ld2xpbmUpCiAgKGluZGVudC1saW5lLXRvCiAgIChzYXZlLWV4Y3Vyc2lvbgog ICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHRcbiIpIAogICAgICgrIChteS1zaC1pbmRlbnRh dGlvbikKICAgICAgICAobGV0ICgoc3RhcnQgKHBvaW50KSkpCiAgICAgICAgICAoaWYgKGFuZCAo cmUtc2VhcmNoLWJhY2t3YXJkICJeW14jXG5dKls7e31dIiAobGluZS1iZWdpbm5pbmctcG9zaXRp b24pIHQpCiAgICAgICAgICAgICAgICAgICAoZXF1YWwgKG1hdGNoLWVuZCAwKSBzdGFydCkpCiAg ICAgICAgICAgICAgMCA0KSkpKSkpCiAgICAKKGRlZnVuIG15LXNoLWVsZWN0cmljLWJyYWNlcyAo KQogIChpbnRlcmFjdGl2ZSAiKiIpCiAgKGxldCAoKGluZGVudGF0aW9uIChteS1zaC1pbmRlbnRh dGlvbikpKQogICAgKGlmIChlcXVhbCAoY3VycmVudC1pbmRlbnRhdGlvbikgKGN1cnJlbnQtY29s dW1uKSkKICAgICAgICAoaW5kZW50LWxpbmUtdG8gaW5kZW50YXRpb24pKQogICAgKGluc2VydC1z dHJpbmcgInt9IikKICAgIChiYWNrd2FyZC1jaGFyKQogICAgKG5ld2xpbmUpCiAgICAobmV3bGlu ZSkKICAgIChpbmRlbnQtbGluZS10byBpbmRlbnRhdGlvbikKICAgIChwcmV2aW91cy1saW5lIDEp CiAgICAoaW5kZW50LXRvICgrIGluZGVudGF0aW9uIDQpKSkpCgooZGVmdW4gbXktc2gtZWxlY3Ry aWMtb3Blbi1icmFjZSAoKQogIChpbnRlcmFjdGl2ZSAiKiIpCiAgKGxldCAoKGluZGVudGF0aW9u IChteS1zaC1pbmRlbnRhdGlvbikpKQogICAgKGlmIChlcXVhbCAoY3VycmVudC1pbmRlbnRhdGlv bikgKGN1cnJlbnQtY29sdW1uKSkKICAgICAgICAoaW5kZW50LWxpbmUtdG8gaW5kZW50YXRpb24p KQogICAgKGluc2VydC1zdHJpbmcgInsiKQogICAgKG5ld2xpbmUpCiAgICAoaW5kZW50LWxpbmUt dG8gKCsgaW5kZW50YXRpb24gNCkpKSkKCjs7IFN0b2xlbiBmcm9tIGxpc3AtbW9kZS5lbCwgd2l0 aCBzbGlnaHQgbW9kaWZpY2F0aW9ucyBmb3IgcmVmb3JtYXR0aW5nIGNvbW1lbnRzCjs7CihkZWZ1 biBteS1zaC1maWxsLXBhcmFncmFwaCAoJm9wdGlvbmFsIGp1c3RpZnkpCiAgIkxpa2UgXFxbZmls bC1wYXJhZ3JhcGhdLCBidXQgaGFuZGxlIEVtYWNzIExpc3AgY29tbWVudHMuCklmIGFueSBvZiB0 aGUgY3VycmVudCBsaW5lIGlzIGEgY29tbWVudCwgZmlsbCB0aGUgY29tbWVudCBvciB0aGUKcGFy YWdyYXBoIG9mIGl0IHRoYXQgcG9pbnQgaXMgaW4sIHByZXNlcnZpbmcgdGhlIGNvbW1lbnQncyBp bmRlbnRhdGlvbgphbmQgaW5pdGlhbCBzZW1pY29sb25zLiIKICAoaW50ZXJhY3RpdmUgIlAiKQog IChsZXQgKAogICAgOzsgTm9uLW5pbCBpZiB0aGUgY3VycmVudCBsaW5lIGNvbnRhaW5zIGEgY29t bWVudC4KICAgIGhhcy1jb21tZW50CgogICAgOzsgTm9uLW5pbCBpZiB0aGUgY3VycmVudCBsaW5l IGNvbnRhaW5zIGNvZGUgYW5kIGEgY29tbWVudC4KICAgIGhhcy1jb2RlLWFuZC1jb21tZW50Cgog ICAgOzsgSWYgaGFzLWNvbW1lbnQsIHRoZSBhcHByb3ByaWF0ZSBmaWxsLXByZWZpeCBmb3IgdGhl IGNvbW1lbnQuCiAgICBjb21tZW50LWZpbGwtcHJlZml4CiAgICApCgogICAgOzsgRmlndXJlIG91 dCB3aGF0IGtpbmQgb2YgY29tbWVudCB3ZSBhcmUgbG9va2luZyBhdC4KICAgIChzYXZlLWV4Y3Vy c2lvbgogICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgIChjb25kCgogICAgICAgOzsgQSBs aW5lIHdpdGggbm90aGluZyBidXQgYSBjb21tZW50IG9uIGl0PwogICAgICAgKChsb29raW5nLWF0 ICJbIFx0XSojWyMgXHRdKiIpCiAgICAoc2V0cSBoYXMtY29tbWVudCB0CiAgICAgICAgICBjb21t ZW50LWZpbGwtcHJlZml4IChidWZmZXItc3Vic3RyaW5nIChtYXRjaC1iZWdpbm5pbmcgMCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1lbmQgMCkpKSkKCiAgICAgICA7OyBBIGxp bmUgd2l0aCBzb21lIGNvZGUsIGZvbGxvd2VkIGJ5IGEgY29tbWVudD8gIFJlbWVtYmVyIHRoYXQg dGhlCiAgICAgICA7OyBzZW1pIHdoaWNoIHN0YXJ0cyB0aGUgY29tbWVudCBzaG91bGRuJ3QgYmUg cGFydCBvZiBhIHN0cmluZyBvcgogICAgICAgOzsgY2hhcmFjdGVyLgogICAgICAgKChjb25kaXRp b24tY2FzZSBuaWwKICAgICAgICAoc2F2ZS1yZXN0cmljdGlvbgogICAgICAgICAgKG5hcnJvdy10 by1yZWdpb24gKHBvaW50LW1pbikKICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbiAoZW5k LW9mLWxpbmUpIChwb2ludCkpKQogICAgICAgICAgKHdoaWxlIChub3QgKGxvb2tpbmctYXQgIiNc XHwkIikpCiAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiXiNcblwiXFxcXD8iKQogICAgICAg IChjb25kCiAgICAgICAgICgoZXEgKGNoYXItYWZ0ZXIgKHBvaW50KSkgP1xcKSAoZm9yd2FyZC1j aGFyIDIpKQogICAgICAgICAoKG1lbXEgKGNoYXItYWZ0ZXIgKHBvaW50KSkgJyg/XCIgPz8pKSAo Zm9yd2FyZC1zZXhwIDEpKSkpCiAgICAgICAgICAobG9va2luZy1hdCAiIytbXHQgXSoiKSkKICAg ICAgKGVycm9yIG5pbCkpCiAgICAoc2V0cSBoYXMtY29tbWVudCB0IGhhcy1jb2RlLWFuZC1jb21t ZW50IHQpCiAgICAoc2V0cSBjb21tZW50LWZpbGwtcHJlZml4CiAgICAgICAgICAoY29uY2F0ICht YWtlLXN0cmluZyAoLyAoY3VycmVudC1jb2x1bW4pIDgpID9cdCkKICAgICAgICAgICAgICAobWFr ZS1zdHJpbmcgKCUgKGN1cnJlbnQtY29sdW1uKSA4KSA/XCApCiAgICAgICAgICAgICAgKGJ1ZmZl ci1zdWJzdHJpbmcgKG1hdGNoLWJlZ2lubmluZyAwKSAobWF0Y2gtZW5kIDApKSkpKSkpCgogICAg KGlmIChub3QgaGFzLWNvbW1lbnQpCiAgICAgICAgOzsgYHBhcmFncmFwaC1zdGFydCcgaXMgc2V0 IGhlcmUgKG5vdCBpbiB0aGUgYnVmZmVyLWxvY2FsCiAgICAgICAgOzsgdmFyaWFibGUgc28gdGhh dCBgZm9yd2FyZC1wYXJhZ3JhcGgnIGV0IGFsIHdvcmsgYXMKICAgICAgICA7OyBleHBlY3RlZCkg c28gdGhhdCBmaWxsaW5nIChkb2MpIHN0cmluZ3Mgd29ya3Mgc2Vuc2libHkuCiAgICAgICAgOzsg QWRkaW5nIHRoZSBvcGVuaW5nIHBhcmVuIHRvIGF2b2lkIHRoZSBmb2xsb3dpbmcgc2V4cCBiZWlu ZwogICAgICAgIDs7IGZpbGxlZCBtZWFucyB0aGF0IHNleHBzIGdlbmVyYWxseSBhcmVuJ3QgZmls bGVkIGFzIG5vcm1hbAogICAgICAgIDs7IHRleHQsIHdoaWNoIGlzIHByb2JhYmx5IHNlbnNpYmxl LiAgVGhlIGA7JyBhbmQgYDonIHN0b3AgdGhlCiAgICAgICAgOzsgZmlsbGVkIHBhcmEgYXQgZm9s bG93aW5nIGNvbW1lbnQgbGluZXMgYW5kIGtleXdvcmRzCiAgICAgICAgOzsgKHR5cGljYWxseSBp biBgZGVmY3VzdG9tJykuCiAgICAobGV0ICgocGFyYWdyYXBoLXN0YXJ0IChjb25jYXQgcGFyYWdy YXBoLXN0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXHxcXHMt KltcKCM6XCJdIikpKQogICAgICAgICAgKGZpbGwtcGFyYWdyYXBoIGp1c3RpZnkpKQoKICAgICAg OzsgTmFycm93IHRvIGluY2x1ZGUgb25seSB0aGUgY29tbWVudCwgYW5kIHRoZW4gZmlsbCB0aGUg cmVnaW9uLgogICAgICAoc2F2ZS1leGN1cnNpb24KICAgIChzYXZlLXJlc3RyaWN0aW9uCiAgICAg IChiZWdpbm5pbmctb2YtbGluZSkKICAgICAgKG5hcnJvdy10by1yZWdpb24KICAgICAgIDs7IEZp bmQgdGhlIGZpcnN0IGxpbmUgd2Ugc2hvdWxkIGluY2x1ZGUgaW4gdGhlIHJlZ2lvbiB0byBmaWxs LgogICAgICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICh3aGlsZSAoYW5kICh6ZXJvcCAoZm9y d2FyZC1saW5lIC0xKSkKICAgICAgICAgICAgIChsb29raW5nLWF0ICJeWyBcdF0qIyIpKSkKICAg ICAgICAgOzsgV2UgbWF5IGhhdmUgZ29uZSB0b28gZmFyLiAgR28gZm9yd2FyZCBhZ2Fpbi4KICAg ICAgICAgKG9yIChsb29raW5nLWF0ICIuKiMiKQogICAgICAgICAoZm9yd2FyZC1saW5lIDEpKQog ICAgICAgICAocG9pbnQpKQogICAgICAgOzsgRmluZCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJz dCBsaW5lIHBhc3QgdGhlIHJlZ2lvbiB0byBmaWxsLgogICAgICAgKHNhdmUtZXhjdXJzaW9uCiAg ICAgICAgICh3aGlsZSAocHJvZ24gKGZvcndhcmQtbGluZSAxKQogICAgICAgICAgICAgICAobG9v a2luZy1hdCAiXlsgXHRdKiMiKSkpCiAgICAgICAgIChwb2ludCkpKQoKICAgICAgOzsgTGluZXMg d2l0aCBvbmx5IHNlbWljb2xvbnMgb24gdGhlbSBjYW4gYmUgcGFyYWdyYXBoIGJvdW5kYXJpZXMu CiAgICAgIChsZXQqICgocGFyYWdyYXBoLXN0YXJ0IChjb25jYXQgcGFyYWdyYXBoLXN0YXJ0ICJc XHxbIFx0I10qJCIpKQogICAgICAgICAocGFyYWdyYXBoLXNlcGFyYXRlIChjb25jYXQgcGFyYWdy YXBoLXN0YXJ0ICJcXHxbIFx0I10qJCIpKQogICAgICAgICAocGFyYWdyYXBoLWlnbm9yZS1maWxs LXByZWZpeCBuaWwpCiAgICAgICAgIChmaWxsLXByZWZpeCBjb21tZW50LWZpbGwtcHJlZml4KQog ICAgICAgICAoYWZ0ZXItbGluZSAoaWYgaGFzLWNvZGUtYW5kLWNvbW1lbnQKICAgICAgICAgICAg ICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgMSkg KHBvaW50KSkpKQogICAgICAgICAoZW5kIChwcm9nbgogICAgICAgICAgICAoZm9yd2FyZC1wYXJh Z3JhcGgpCiAgICAgICAgICAgIChvciAoYm9scCkgKG5ld2xpbmUgMSkpCiAgICAgICAgICAgIChw b2ludCkpKQogICAgICAgICA7OyBJZiB0aGlzIGNvbW1lbnQgc3RhcnRzIG9uIGEgbGluZSB3aXRo IGNvZGUsCiAgICAgICAgIDs7IGluY2x1ZGUgdGhhdCBsaWtlIGluIHRoZSBmaWxsaW5nLgogICAg ICAgICAoYmVnIChwcm9nbiAoYmFja3dhcmQtcGFyYWdyYXBoKQogICAgICAgICAgICAgICAgIChp ZiAoZXEgKHBvaW50KSBhZnRlci1saW5lKQogICAgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUg LTEpKQogICAgICAgICAgICAgICAgIChwb2ludCkpKSkKICAgICAgICAoZmlsbC1yZWdpb24tYXMt cGFyYWdyYXBoIGJlZyBlbmQKICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnkgbmlsCiAgICAg ICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAgICAoZ290 by1jaGFyIGJlZykKICAgICAgICAgICAgICAgICAgICAoaWYgKGxvb2tpbmctYXQgZmlsbC1wcmVm aXgpCiAgICAgICAgICAgICAgICAgICAgICAgIG5pbAogICAgICAgICAgICAgICAgICAgICAgKHJl LXNlYXJjaC1mb3J3YXJkIGNvbW1lbnQtc3RhcnQtc2tpcCkKICAgICAgICAgICAgICAgICAgICAg IChwb2ludCkpKSkpKSkpCiAgICB0KSkKCjs7IG5vdCB2ZXJ5IHVzZWZ1bAooZGVmdW4gbXktc2gt ZWxlY3RyaWMtY2xvc2UtYnJhY2UgKCkKICAoaW50ZXJhY3RpdmUgIioiKQogIChsZXQgKChpbmRl bnRhdGlvbgogICAgICAgIChwcm9nbgogICAgICAgICAgKGRlbGV0ZS1yZWdpb24gKHBvaW50KQog ICAgICAgICAgICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAo b3IgKHplcm9wIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHRcbiIpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpZiAoc2gtcXVvdGVkLXApCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChmb3J3YXJkLWNoYXIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkp KQogICAgICAgICAgKGlmIChlcXVhbCAoY2hhci1iZWZvcmUpIDEyMykgKGN1cnJlbnQtaW5kZW50 YXRpb24pCiAgICAgICAgICAgICAgKC0gKGN1cnJlbnQtaW5kZW50YXRpb24pIDQpKSkpKQogICAg KG5ld2xpbmUpCiAgICAoaW5kZW50LXRvIGluZGVudGF0aW9uKQogICAgKGluc2VydC1zdHJpbmcg In0iKQogICAgKG5ld2xpbmUpCiAgICAoaW5kZW50LXRvIGluZGVudGF0aW9uKSkpCgoKKGRlZnVu IG15LWphbS1kZWJ1Zy1tb2RlICgpCiAgKGludGVyYWN0aXZlKQo7OyAgKGNvbXBpbGF0aW9uLW1v ZGUpCiAgKGxvY2FsLXNldC1rZXkgWyhjb250cm9sIGYxMCldICdqYW0tZGVidWctcHJldikKICAo bG9jYWwtc2V0LWtleSBbZjEwXSAnamFtLWRlYnVnLW5leHQpCiAgKGxvY2FsLXNldC1rZXkgWyhz aGlmdCBmMTEpXSAnamFtLWRlYnVnLWZpbmlzaCkKICAobG9jYWwtc2V0LWtleSBbKGNvbnRyb2wg c2hpZnQgZjExKV0gJ2phbS1kZWJ1Zy1jYWxsZXIpCiAgKGxvY2FsLXNldC1rZXkgW2YxMV0gJ2ph bS1kZWJ1Zy1pbikpCgo7Owo7OyBodG1sCjs7CihkZWZ1biBteS1odG1sLW1vZGUtaG9vayAoKQog IChsb2NhbC1zZXQta2V5IFtmN10gJ215LXNnbWwtdmFsaWRhdGUtd3JpdGViYWNrKQo7ICAobG9j YWwtc2V0LWtleSBbXEMtZjddICdzZ21sLXZhbGlkYXRlKQogIChsb2NhbC1zZXQta2V5IFsoY29u dHJvbCBmNyldICdzZ21sLXZhbGlkYXRlKQogIChsb2NhbC1zZXQta2V5ICJcQy1jXEMtY1xDLWMi ICdteS1jb2RlLXRhZykKICAobG9jYWwtc2V0LWtleSAiXEMtY1xDLWNcQy1xIiAnbXktcHJlZm9y bWF0dGVkKQogIChsb2NhbC1zZXQta2V5ICJcQy1jXEMtY3kiICdteS15YW5rLWNvZGUpCiAgKQoo YWRkLWhvb2sgJ2h0bWwtbW9kZS1ob29rICdteS1odG1sLW1vZGUtaG9vaykKCjs7Cjs7IHNoCjs7 CihkZWZ1biBteS1zaC1tb2RlLWhvb2sgKCkKICAoaW50ZXJhY3RpdmUgIioiKQogIChteS1jb2Rl LW1vZGUtaG9vaykKICAoYXV0by1maWxsLW1vZGUgdCkKICAobG9jYWwtc2V0LWtleSBbcmV0dXJu XSAnbXktc2gtbmV3bGluZS1hbmQtaW5kZW50KQogIChsb2NhbC1zZXQta2V5ICJ7IiAnbXktc2gt ZWxlY3RyaWMtb3Blbi1icmFjZSkKICAobG9jYWwtc2V0LWtleSBbXFMtXE0te10gJ215LXNoLWVs ZWN0cmljLWJyYWNlcykKICAoc2V0cSBmaWxsLXBhcmFncmFwaC1mdW5jdGlvbiAnbXktc2gtZmls bC1wYXJhZ3JhcGgpCiAgOzsgKGxvY2FsLXNldC1rZXkgIn0iICdteS1zaC1lbGVjdHJpYy1jbG9z ZS1icmFjZSkKICApCihhZGQtaG9vayAnc2gtbW9kZS1ob29rICdteS1zaC1tb2RlLWhvb2spCgoo ZGVmdW4gbXktbXktamFtLW1vZGUtaG9vayAoKQogIChpbnRlcmFjdGl2ZSAiKiIpCiAgKGxvY2Fs LXNldC1rZXkgIjsiICdteS1qYW0tZWxlY3RyaWMtc2VtaWNvbG9uKQogIChhdXRvLWZpbGwtbW9k ZSkKICApCihhZGQtaG9vayAnbXktamFtLW1vZGUtaG9vayAnbXktbXktamFtLW1vZGUtaG9vaykK ICAKOzsKOzsgUGVybAo7OwooZGVmdW4gbXktcGVybC1tb2RlLWhvb2sgKCkKICAobXktY29kZS1t b2RlLWhvb2spCiAgKQooYWRkLWhvb2sgJ3BlcmwtbW9kZS1ob29rICdteS1wZXJsLW1vZGUtaG9v aykKCjs7Cjs7IGxpc3AKOzsKCihkZWZ1biBteS1saXNwLW1vZGUtaG9vayAoKQogIChteS1jb2Rl LW1vZGUtaG9vaykKICApCihhZGQtaG9vayAnbGlzcC1tb2RlLWhvb2sgJ215LWxpc3AtbW9kZS1o b29rKQooYWRkLWhvb2sgJ2VtYWNzLWxpc3AtbW9kZS1ob29rICdteS1saXNwLW1vZGUtaG9vaykK KGFkZC1ob29rICdsaXNwLWludGVyYWN0aW9uLW1vZGUtaG9vayAnbXktbGlzcC1tb2RlLWhvb2sp CgooZGVmdW4gbXktdW5lZGVidWctZGVmdW4gKCkKICAiSSBjYW4ndCBiZWxpZXZlIGVtYWNzIGRv ZXNuJ3QgZ2l2ZSB5b3UgYSB3YXkgdG8gZG8gdGhpcyEhIgogIChpbnRlcmFjdGl2ZSkKICAoZXZh bC1leHByZXNzaW9uCiAgIChlZGVidWctcmVhZC10b3AtbGV2ZWwtZm9ybSkpCiAgKQoKOzsKOzsg Y29tcGlsYXRpb24KOzsKKGRlZnVuIG15LWNvbXBpbGF0aW9uLW1vZGUtaG9vayAoKQogIChzZXRx IHRydW5jYXRlLWxpbmVzIG5pbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7IERvbid0IHRydW5jYXRlIGxpbmVzIGluIHRoZSBjb21waWxhdGlvbiB3aW5kb3cKKGFk ZC1ob29rICdjb21waWxhdGlvbi1tb2RlLWhvb2sgJ215LWNvbXBpbGF0aW9uLW1vZGUtaG9vaykK CihzZXRxLWRlZmF1bHQgY29tcGlsYXRpb24tY29udGV4dC1saW5lcyAwKQoKOzsKOzsgcHl0aG9u Cjs7CihkZWZ1biBteS1weXRob24tbW9kZS1ob29rICgpCiAgKGF1dG8tZmlsbC1tb2RlIHQpCiAg OzsgIChmaWxsYWRhcHQtbW9kZSB0KQogIChmb250LWxvY2stbW9kZSB0KQogIChzaG93LXBhcmVu LW1vZGUgdCkKICAobWFrZS1sb2NhbC12YXJpYWJsZSAnYWRhcHRpdmUtZmlsbC1yZWdleHApCiAg KHNldHEgYWRhcHRpdmUtZmlsbC1yZWdleHAgIl5bICAgICBdKiMgIikKICAobG9jYWwtc2V0LWtl eSBbcmV0dXJuXSAnbmV3bGluZS1hbmQtaW5kZW50KQogIChsb2NhbC1zZXQta2V5IFsoY29udHJv bCByZXR1cm4pXSAnbmV3bGluZSkKICAobG9jYWwtc2V0LWtleSBbKCBjb250cm9sID9cKCApXSAn bXktbWF0Y2hpbmctcGFyZW4pCiAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ3BhcmVucy1yZXF1aXJl LXNwYWNlcykKICAoc2V0cSBwYXJlbnMtcmVxdWlyZS1zcGFjZXMgbmlsKQogIChzZXRxIGZpbGwt Y29sdW1uIDgwKQogICkKCihhZGQtaG9vayAncHl0aG9uLW1vZGUtaG9vayAnbXktcHl0aG9uLW1v ZGUtaG9vaykKCjs7Cjs7IHJlc3RydWN0dXJlZCB0ZXh0Cjs7CihkZWZ1biBteS1yc3QtbW9kZS1o b29rICgpCiAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2xhenktbG9jay1kZWZlci10aW1lKQogICht YWtlLWxvY2FsLXZhcmlhYmxlICdsYXp5LWxvY2stc3RlYWx0aC10aW1lKQogIChtYWtlLWxvY2Fs LXZhcmlhYmxlICdsYXp5LWxvY2stc3RlYWx0aC1sb2FkKQogIChzZXRxIGxhenktbG9jay1zdGVh bHRoLXRpbWUgNSkKICAoc2V0cSBsYXp5LWxvY2stZGVmZXItdGltZSA3KQogIChzZXRxIGxhenkt bG9jay1zdGVhbHRoLXZlcmJvc2UgdCkKICAoc2V0cSBsYXp5LWxvY2stc3RlYWx0aC1sb2FkIDEw MCkKICAKICA7OyBBV0wgZ3VpZGVsaW5lcyBzYXkgY29kZSBibG9ja3MgbXVzdCBiZSA2NSBjaGFy YWN0ZXJzIHdpZGUgb3IKICA7OyBmZXdlci4gIExlYXZlIDIgc3BhY2VzIGZvciBpbmRlbnQuCiAg KHNldHEgZmlsbC1jb2x1bW4gNjcpCgogIChhdXRvLWZpbGwtbW9kZSB0KQogICkKCihhZGQtaG9v ayAncnN0LW1vZGUtaG9vayAnbXktcnN0LW1vZGUtaG9vaykKCjs7IEN1c3RvbWl6ZSB3aGljaCBt b2RlcyBhcmUgYXV0b21hdGljYWxseSBpbnZva2VkIG9uIGZpbGVzIG1hdGNoaW5nIGNlcnRhaW4K OzsgcGF0dGVybnMuCihzZXRxIGF1dG8tbW9kZS1hbGlzdAogICAgICAoYXBwZW5kCiAgICAgICAn KCAoIlxcLnB5JCIgLiBweXRob24tbW9kZSkKICAgICAgICAgICgiXFwubGl0JCIgLiBweXRob24t bW9kZSkKICAgICAgICAgICgiXFwubmxwJCIgLiBweXRob24tbW9kZSkKICAgICAgICAgICgiXFwu amFtJCIgLiBqYW0tbW9kZSkKICAgICAgICAgICgiW0pqXWFtXFwoYmFzZVxcfHJ1bGVzXFx8cm9v dFxcKSQiIC4gamFtLW1vZGUpCiAgICAgICAgICAoIltKal1hbWZpbGUiIC4gamFtLW1vZGUpICAg ICA7OyBoYW5kbGUgSmFtZmlsZSBhbmQgSmFtZmlsZS52MgogICAgICAgICAgKCJcXC4ucHAkIiAu IGMrKy1tb2RlKQogICAgICAgICAgKCJcXC5qZXJyJCIgLiBteS1qYW0tZGVidWctbW9kZSkKICAg ICAgICAgICgiXFwubVxcJyIgLiBtYXRsYWItbW9kZSkKICAgICAgICAgICgiXFwucnN0JCIgLiBy c3QtbW9kZSkKICAgICAgICAgICkKICAgICAgIGF1dG8tbW9kZS1hbGlzdCkpCgooY29uZGl0aW9u LWNhc2UgbmlsIChsb2FkLWxpYnJhcnkgInJzdCIpCiAgKGVycm9yIG5pbCkpCgo7Owo7OyBDdXN0 b21pemUgcmVndWxhciBleHByZXNzaW9ucyB3aGljaCBtYXRjaCBjb21waWxhdGlvbiBlcnJvciBt ZXNzYWdlcwo7OwoKOzsgTWFrZSBzdXJlIHdlIGhhdmUgYSBkZWZpbml0aW9uIG9mIGNvbXBpbGF0 aW9uLWVycm9yLXJlZ2V4cC1hbGlzdCBiZWZvcmUKOzsgbW9kaWZ5aW5nIGl0CihyZXF1aXJlICdj b21waWxlKQoKKGlmIChub3QgKGJvdW5kcCAnY29tcGlsYXRpb24tZmlsZS1yZWdleHAtYWxpc3Qp KQogICAoc2V0cSBjb21waWxhdGlvbi1lcnJvci1yZWdleHAtYWxpc3QKICAgICAgICAgKGFwcGVu ZAogICAgICAgICAgJygKICAgICAgICAgICAgOzsgRG9jdXRpbHMgZXJyb3Igb3V0cHV0CiAgICAg ICAgICAgICgiXlxcKFxcKD86W2EtekEtWl06XFwpP1teOigJXG5dK1xcKTpcXChbMC05XSpcXCk6 IChcXCg/OlxcKFdBUk5JTkdcXClcXHxFUlJPUlxcKSIKICAgICAgICAgICAgIDEgMiBuaWwgKDMp CiAgICAgICAgICAgICApCgogICAgICAgICAgICAoIl4jIyMgbXdbXlxuXStcbiMgKkluOiBcIj9c XChbYS16QS1aXT86P1teXCI6XG5dK1xcKVwiPyQiIDEpCiAgICAgICAgICAgICgiXiMjIyBtd1te XG5dK1xuIyAqRmlsZTogXCI/XFwoW2EtekEtWl0/Oj9bXlwiOlxuXStcXClcIj8kIiAxKQogICAg ICAgICAgICAoIlxcKCMjIyBtd1teXG5dK1xuXFwpPyMgK1xcKFswLTldK1xcKToiIG5pbCAyKQog ICAgICAgICAgICApCiAgICAgICAgIAogICAgICAgICAgY29tcGlsYXRpb24tZXJyb3ItcmVnZXhw LWFsaXN0CiAgICAgICAgICAnKAogICAgICAgICAgICA7OyBpbmZvIGZyb20gTVNWQwogICAgICAg ICAgICAoIl4gKlxcKFxcKD86W2EtekEtWl06XFwpP1teOigJXG5dK1xcKShcXChbMC05XStcXCkp ICo6IgogICAgICAgICAgICAgMSAyIG5pbCAwKQogICAgICAgICAgICApCiAgICAgICAgICApCiAg ICAgICAgICkKICAKICAocHJvZ24gOzsgb2xkIHN0eWxlIG1hdGNoaW5nCiAgICAKICAgIChzZXRx IGNvbXBpbGF0aW9uLWZpbGUtcmVnZXhwLWFsaXN0CiAgICAgIChhcHBlbmQKICAgICAgICcoCiAg ICAgICAgIDs7IFRoaXMgZXhwcmVzc2lvbiBtYXRjaGVzIG1ldHJvd2Vya3MgY29tbWFuZC1saW5l IHRvb2wgb3V0cHV0LCB3aGljaAogICAgICAgICA7OyBvbmx5IGRpc3BsYXlzIHRoZSBmaWxlbmFt ZSBvbmNlIGZvciBtdWx0aXBsZSBlcnJvcnMKICAgICAgICAgKCIjIyMgbXdbXlxuXStcbiMgKklu OiBcIj9cXChbYS16QS1aXT86P1teXCI6XG5dK1xcKVwiPyQiIDEpCiAgICAgICAgICgiIyMjIG13 W15cbl0rXG4jICpGaWxlOiBcIj9cXChbYS16QS1aXT86P1teXCI6XG5dK1xcKVwiPyQiIDEpCiAg ICAgICAgIAogICAgICAgICAoIl4oXFwoLipcLnRleFxcKVxcfFxcKC4qdGV4XC5jZmdcXClcbkxh VGVYMmUiIDEpCiAgICAgICAgICkKICAgICAgICAgICBjb21waWxhdGlvbi1maWxlLXJlZ2V4cC1h bGlzdCkpCgogICAgKHNldHEgY29tcGlsYXRpb24tZXJyb3ItcmVnZXhwLWFsaXN0CiAgICAgICAg ICAoYXBwZW5kCiAgICAgICAgICAgJygKICAgICAgICAgICAgICgiXFxzLSojXFxzLSpsaW5lXFxz LStcXChbMC05XStcXClcXHMtK1wiXFwoW2EtekEtWl0/Oj9bXlwiOlxuXStcXClcIiIgMiAxKQog ICAgICAgICAKICAgICAgICAgICAgIDs7IFRoaXMgZXhwcmVzc2lvbiBjYW4gYmUgdXNlZCB0byBt YXRjaCBlcnJvciBtZXNzYWdlcyBmcm9tIEphbQogICAgICAgICAgICAgKCJcIj9cXChbYS16QS1a XT86P1teXCI6XG5dK1xcKVwiPzpcXChbMC05XStcXCk6IiAxIDIpCgogICAgICAgICAgICAgOzsg bWF0Y2hlcyBzb21lIGdjYyBlcnJvciBvdXRwdXQKICAgICAgICAgICAgICgiXFwoXFwoICAgICAg ICAgICAgICAgICBcXClcXHxcXChJbiBmaWxlIGluY2x1ZGVkIFxcKVxcKWZyb20gXCI/XFwoW2Et ekEtWl0/Oj9bXlwiOlxuXStcXClcIj86XFwoWzAtOV0rXFwpIiA0IDUpCiAKCiAgICAgICAgICAg ICA7OyBtYXRjaGVzIHNvbWUgdmM3IGVycm9yIG91dHB1dAogICAgICAgICAgICAgKCIgK1xcKFxc KFthLXpBLVpdOlxcKT9bXjooCVxuXStcXCkoXFwoWzAtOV0rXFwpKTouKicuKiIgMSAzKQogICAg ICAgICAKIAogICAgICAgICAgICAgOzsgVGhpcyBleHByZXNzaW9uIG1hdGNoZXMgbWV0cm93ZXJr cyBjb21tYW5kLWxpbmUgdG9vbCBvdXRwdXQuIFdlIGp1c3QKICAgICAgICAgICAgIDs7IHBpY2sg dXAgdGhlIGxpbmUgbnVtYmVyLCBzaW5jZSB0aGUgZmlsZSBuYW1lIGlzIGhhbmRsZWQgZWxzZXdo ZXJlCiAgICAgICAgICAgICAoIlxcKCMjIyBtd1teXG5dK1xuXFwpPyMgK1xcKFswLTldK1xcKToi IG5pbCAyKQoKICAgICAgICAgICAgICgiICAgICAgICBcXChcXChbYS16QS1aXTpcXCk/W146KFx0 XG5dK1xcKShcXChbMC05XStcXCkpIFwKOiBzZWUgIiAxIDMpCgogICAgICAgICAgICAgKCIuKmF0 XFxzLStbTGxdaW5lXFxzLStcXChbMC05XStcXClcXHMtK29mXFxzLStcIlxcKFthLXpBLVpdPzo/ W15cIjpcbl0rXFwpXCIiIDIgMSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7IFB5dGhvbiBiYWNrdHJhY2VzIGluY2x1ZGUgdGhlc2UKICAgICAgICAgICAgICgiXlsg XHRdKkZpbGUgXCJcXChbYS16QS1aXT86P1teXCI6XG5dK1xcKVwiLFsgXHRdK1tMbF1pbmVbIFx0 XStcXChbMC05XStcXCkuKiIgMSAyKQoKICAgICAgICAgICAgIDs7IFRoZXNlIGFyZSAiaGVscGZ1 bGx5IiBzdXBwbGllZCB3aGVuIEJvb3N0LkJ1aWxkIHRlc3RpbmcgcHJpbnRzIGEgYmFja3RyYWNl CiAgICAgICAgICAgICAoIl5bIFx0XSpcXChhdFxcfGZyb21cXClbIFx0XStsaW5lWyBcdF0rXFwo WzAtOV0rXFwpWyBcdF0rb2ZbIFx0XStcIj9cXChbYS16QS1aXT86P1teXCI6XG4oXStcXCkuKiIg MyAyKQogICAgICAgICAgICAgKQogICAgICAgICAgIGNvbXBpbGF0aW9uLWVycm9yLXJlZ2V4cC1h bGlzdCkpCiAgICApCiAgKQoKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cgooc2V0cSBp bnRlcnByZXRlci1tb2RlLWFsaXN0CiAgICAgIChjb25zICcoInB5dGhvbiIgLiBweXRob24tbW9k ZSkKICAgICAgICAgICAgaW50ZXJwcmV0ZXItbW9kZS1hbGlzdCkpCgooYXV0b2xvYWQgJ3B5dGhv bi1tb2RlICJweXRob24tbW9kZSIgIlB5dGhvbiBlZGl0aW5nIG1vZGUuIiB0KQoKOzsKOzsgQy9D KysKOzsKCihkZWZ1biBteS1jLWxlYWRpbmctY29tbWEtcCAoKQogIChzYXZlLWV4Y3Vyc2lvbgog ICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgKGMtZm9yd2FyZC10b2tlbi0yIDAgbmlsIChjLXBv aW50ICdlb2wpKQogICAgKGVxIChjaGFyLWFmdGVyKSA/LCkpKQoKKGRlZnVuIG15LWMtY29tbWEt dW5pbmRlbnQgKGxhbmdlbGVtKQogICJVbmluZGVudCBmb3IgbGVhZGluZyBjb21tYXMiCiAgKGlm IChteS1jLWxlYWRpbmctY29tbWEtcCkgJy8pKQoKKGRlZnVuIG15LWMtY29tbWEtaW5kZW50IChs YW5nZWxlbSkKICAiSW5kZW50IGZvciBsZWFkaW5nIGNvbW1hcyIKICAoaWYgKG15LWMtbGVhZGlu Zy1jb21tYS1wKSAnKikpCgooZGVmdW4gbXktY2xlYW51cC1wcC1vdXRwdXQgKCkKICAiQ2xlYW4g dXAgcHJlcHJvY2Vzc29yIG91dHB1dCBzbyB0aGF0IGl0J3MgYXQgbGVhc3Qgc2VtaS1yZWFkYWJs ZSIKICAoaW50ZXJhY3RpdmUpCgogIChsZXQgKChzZWxlY3Rpb24gKG15LXNlbGVjdGlvbikpCiAg ICAgICAgKHN0YXJ0IChtYWtlLW1hcmtlcikpCiAgICAgICAgKGVuZCAobWFrZS1tYXJrZXIpKQog ICAgICAgICkKICAgIChzZXQtbWFya2VyIHN0YXJ0IChjYXIgc2VsZWN0aW9uKSkKICAgIChzZXQt bWFya2VyIGVuZCAoY2RyIHNlbGVjdGlvbikpCiAgICAKICAgIChjKystbW9kZSkKICAgIDs7IENS IGJlZm9yZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBpZAogICAgKHJlcGxhY2UtcmVnZXhwICJcXChb YS16QS1aMC05X11cXCkgK1xcKFthLXpBLVpfXVthLXpBLVowLTlfXSooXFwpIiAiXFwxXG5cXDIi IG5pbCBzdGFydCBlbmQpCiAgICAocmVwbGFjZS1yZWdleHAgIlxcKFxcPHJldHVyblxcPlxcfFxc PG5ld1xcPlxcKVxuIiAiXFwxICIgbmlsIHN0YXJ0IGVuZCkKCiAgICA7OyBDUiBhZnRlciB0ZW1w bGF0ZSBwYXJhbWV0ZXIgbGlzdAogICAgKHJlcGxhY2UtcmVnZXhwICJcXDx0ZW1wbGF0ZVxcPiAq PFxcKFtePD5dK1xcKT4iICJ0ZW1wbGF0ZSA8XFwxPlxuIiBuaWwgc3RhcnQgZW5kKQoKICAgIChy ZXBsYWNlLXJlZ2V4cCAiICpcXChcXHMuXFx8WygpXVxcKSAqIiAiXFwxIiBuaWwgc3RhcnQgZW5k KQogICAgKHJlcGxhY2UtcmVnZXhwICIgKyIgIiAiIG5pbCBzdGFydCBlbmQpCiAgICAKICAgIChy ZXBsYWNlLXJlZ2V4cCAiXFwoW3t9XTsqXFwpIiAiXFwxXG4iIG5pbCBzdGFydCBlbmQpICA7CiAg ICAocmVwbGFjZS1yZWdleHAgIlxcKFteIF0uKlxcKVxcKFt7fV1cXCkiICJcXDFcblxcMiIgbmls IHN0YXJ0IGVuZCkKICAgIAogICAgKHJlcGxhY2UtcmVnZXhwICI7XFwoLlxcKSIgIjtcblxcMSIg bmlsIHN0YXJ0IGVuZCkKICAgIAogICAgKHJlcGxhY2UtcmVnZXhwICJcXChbKF0rXFwpXFwoWyhd XFwpIiAiXFwxXG5cXDIiIG5pbCBzdGFydCBlbmQpCiAgICAocmVwbGFjZS1yZWdleHAgIj5cXChc XDxzdHJ1Y3RcXD5cXHxcXDxjbGFzc1xcPlxcKSIgIj5cblxcMSIgbmlsIHN0YXJ0IGVuZCkKICAg IChpbmRlbnQtcmVnaW9uIHN0YXJ0IGVuZCBuaWwpCiAgKSkKCihkZWZ1biBteS1lbXB0eS1icmFj ZXMgKCkKICAiaW5zZXJ0IHt9IgogIChpbnRlcmFjdGl2ZSAiKiIpCiAgKGluc2VydC1zdHJpbmcg Int9IikKICAoaW5kZW50LWFjY29yZGluZy10by1tb2RlKQogICkKCihkZWZ1biBteS1lbGVjdHJp Yy1icmFjZXMgKCkKICAiSW5zZXJ0IGEgcGFpciBvZiBicmFjZXMgc3Vycm91bmRpbmcgYSBibGFu ayBsaW5lLCBpbmRlbnRpbmcgZWFjaCBhY2NvcmRpbmcgdG8gdGhlIG1vZGUiCiAgKGludGVyYWN0 aXZlICIqIikKICAobGV0ICgoYm9scAogICAgICAgICAoc2F2ZS1leGN1cnNpb24gKHNraXAtY2hh cnMtYmFja3dhcmQgIiBcdCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKGN1cnJl bnQtY29sdW1uKSAwKSkpKQogICAgKGluc2VydC1zdHJpbmcgInt9IikKICAgIChpZiBib2xwCiAg ICAgICAgKGV2YWwgKGxpc3QgaW5kZW50LWxpbmUtZnVuY3Rpb24pKSkKICAgICkKICAgIChiYWNr d2FyZC1jaGFyKQogICAgKG5ld2xpbmUtYW5kLWluZGVudCkKICAgIChwcmV2aW91cy1saW5lIDEp CiAgICAoZW5kLW9mLWxpbmUpCiAgICAobmV3bGluZS1hbmQtaW5kZW50KSkKCihzZXRxIG15LWlu aXRpYWxzICJkd2EiKQoKKGRlZnVuIGJvb3N0LWNvcHlyaWdodCAoKQogICJSZXR1cm4gdGhlIGFw cHJvcHJpYXRlIGJvb3N0IGNvcHlyaWdodCBmb3IgdGhlIGN1cnJlbnQgdXNlciBhbmQgeWVhciIK ICAoY29uY2F0ICJDb3B5cmlnaHQgIiAodXNlci1mdWxsLW5hbWUpICIgIiAobnVtYmVyLXRvLXN0 cmluZyAobnRoIDUgKGRlY29kZS10aW1lKSkpCiAgICAgICAgICAiLiBEaXN0cmlidXRlZCB1bmRl ciB0aGUgQm9vc3RcblwKU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21w YW55aW5nXG5cCmZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29z dC5vcmcvTElDRU5TRV8xXzAudHh0KSIpKQogICAgICAKKGRlZnVuIGZsdWlkLWNvcHlyaWdodCAo KQogICJSZXR1cm4gdGhlIGFwcHJvcHJpYXRlIEZsdWlkT2JqZWN0cyBjb3B5cmlnaHQgZm9yIHRo ZSBjdXJyZW50IHVzZXIgYW5kIHllYXIiCiAgKGNvbmNhdCAiQ29weXJpZ2h0IEZsdWlkT2JqZWN0 cyBTb2Z0d2FyZSAiIChudW1iZXItdG8tc3RyaW5nIChudGggNSAoZGVjb2RlLXRpbWUpKSkKICAg ICAgICAgICIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIikpCgooZGVmdW4gbXktc3BsaXQtZmlsZW5h bWUgKGZpbGVuYW1lKQogICJzcGxpdCBhIEZJTEVOQU1FIHN0cmluZyBpbnRvIGEgKGJhc2VuYW1l IC4gZXh0ZW5zaW9uKSBwYWlyIgogIChsZXQqICgoZm5hbWUgZmlsZW5hbWUpCgogICAgICAgICAo cHJlZml4CiAgICAgICAgICAoaWYgKHN0cmluZy1tYXRjaCAiXFwoLipcXClcXChcXC4uKlxcKSIg Zm5hbWUpCiAgICAgICAgICAgICAgKHN1YnN0cmluZyBmbmFtZSAwIChtYXRjaC1lbmQgMSkpCiAg ICAgICAgICAgIGZuYW1lKSkKICAgICAgICAgKGV4dGVuc2lvbgogICAgICAgICAgKGlmIChtYXRj aC1iZWdpbm5pbmcgMikKICAgICAgICAgICAgICAoc3Vic3RyaW5nIGZuYW1lICgrIDEgKG1hdGNo LWJlZ2lubmluZyAyKSkpCiAgICAgICAgICAgIG5pbCkpKQogICAgKGNvbnMgcHJlZml4IGV4dGVu c2lvbikKICApKQoKKGRlZnVuIG15LXNwbGl0LWN1cnJlbnQtZmlsZW5hbWUgKCkKICAobXktc3Bs aXQtZmlsZW5hbWUgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgKGJ1ZmZlci1maWxlLW5hbWUpKSkp CgooZGVmdW4gbXktaW5jbHVkZS1ndWFyZCAocGF0aC1lbHRzKQogICJDb21wdXRlIHRoZSBhcHBy b3ByaWF0ZSAjaW5jbHVkZSBndWFyZCBiYXNlZCBvbiB0aGUgY3VycmVudCBidWZmZXIncyBuYW1l IGFuZCB0aGUgZ2l2ZW4gcGF0aCBlbGVtZW50cyIKICAobGV0KiAoKHNwbGl0LW5hbWUgKG15LXNw bGl0LWN1cnJlbnQtZmlsZW5hbWUpKQogICAgICAgICAodGltZSAoZGVjb2RlLXRpbWUpKQogICAg ICAgICAocHJlZml4IChjYXIgc3BsaXQtbmFtZSkpCiAgICAgICAgIChleHQgKGNkciBzcGxpdC1u YW1lKSkKICAgICAgICAgKGV4dGVuc2lvbiAoaWYgZXh0IChjb25jYXQgIl8iIGV4dCkgIiIpKQog ICAgICAgICApCiAgICAodXBjYXNlCiAgICAgKGNvbmNhdAogICAgICAoZXZhbCAoY29ucyAnY29u Y2F0IChtYXBjYXIgKGxhbWJkYSAocykgKGNvbmNhdCBzICJfIikpIHBhdGgtZWx0cykpKSAKICAg ICAgcHJlZml4ICJfIiBteS1pbml0aWFscwogICAgICAobnVtYmVyLXRvLXN0cmluZyAobnRoIDUg dGltZSkpCiAgICAgIChudW1iZXItdG8tc3RyaW5nIChudGggNCB0aW1lKSkKICAgICAgKG51bWJl ci10by1zdHJpbmcgKG50aCAzIHRpbWUpKSBleHRlbnNpb24pKSkpCiAgICAgICAgICAgICAgICAg IAooZGVmdW4gbXktc3BsaXQtcGF0aCAocGF0aCkKICAobGV0ICgocmVzdWx0IG5pbCkgKGVsdCBu aWwpKQogICAgKHdoaWxlIChhbmQgcGF0aAogICAgICAgICAgICAgICAgKG5vdCAoZXF1YWwgKHNl dHEgZWx0IChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IHBhdGgpKSAiIikpKQogICAgICAoc2V0cSBy ZXN1bHQgKGNvbnMgZWx0IHJlc3VsdCkpCiAgICAgIChzZXRxIHBhdGggKGZpbGUtbmFtZS1kaXJl Y3RvcnkgcGF0aCkpCiAgICAgIChzZXRxIHBhdGggKGFuZCBwYXRoIChkaXJlY3RvcnktZmlsZS1u YW1lIHBhdGgpKSkpCiAgICByZXN1bHQpKQoKKGRlZnVuIG15LWNvcHlyaWdodCAoJm9wdGlvbmFs IGNvcHlyaWdodCkKICAiSW5zZXJ0IGEgY29tbWVudGVkIENPUFlSSUdIVCBzdHJpbmcuIElmIENP UFlSSUdIVAppcyBub3Qgc3VwcGxpZWQsIHRoZSBib29zdCBjb3B5cmlnaHQgaXMgdXNlZCBieSBk ZWZhdWx0IgogIChpbnRlcmFjdGl2ZSkKICAobGV0ICgoY29weS1zdGFydCAocG9pbnQpKSkKICAg ICAgCiAgICAoaW5zZXJ0LXN0cmluZyAoY29uY2F0IChvciBjb3B5cmlnaHQKICAgICAgICAgICAg ICAgICAgICAgICAob3IgKGFuZCAobXktcGF0aC1lbHRzKSAoYm9vc3QtY29weXJpZ2h0KSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGV2YWwgKGxpc3QgbXktZGVmYXVsdC1jb3B5cmlnaHQp KSkpCiAgICAgICAgICAgICAgICAgICAiXG4iKSkKICAgICAgCiAgICAoY29tbWVudC1yZWdpb24g Y29weS1zdGFydCAocG9pbnQpKSkpCgooZGVmdW4gbXktcGF0aC1lbHRzICgpCiAgKHN1YnNlcSAo bXktc3BsaXQtcGF0aCAoYnVmZmVyLWZpbGUtbmFtZSkpIDAgLTEpKQoKKGRlZmN1c3RvbSBteS1u YW1lc3BhY2Utcm9vdHMKICAgICAgJygoImJvb3N0Ii4gYm9vc3QtY29weXJpZ2h0KSAoImZsdWlk IiAuIGZsdWlkLWNvcHlyaWdodCkpCiAgICAgICJBbiBhbGlzdCBvZiByb290IGRpcmVjdG9yeSBu YW1lcyBhbmQgYXNzb2NpYXRlZCBjb3B5cmlnaHQKICAgICAgZnVuY3Rpb25zIGZyb20gd2hpY2gg dG8gZGVkdWNlIEMrKyBuYW1lc3BhY2UgbmFtZXMuIgogICAgICAnOnR5cGUgJ2FsaXN0ICkKCihk ZWZ1biBteS1wcmVwYXJlLXNvdXJjZSAoKQogIChsZXQqICgoYWxsLXBhdGgtZWx0cyAobXktcGF0 aC1lbHRzKSkKICAgIAogICAgICAgICA7OyBwcnVuZSBvZmYgdGhlIGhlYWQgb2YgcGF0aC1lbHRz IHVwIHRvIHRoZSBsYXN0IG9jY3VycmVuY2UKICAgICAgICAgOzsgb2YgYm9vc3QsIGlmIGFueSBv dGhlcndpc2UsIHBhdGgtZWx0cyB3aWxsIGJlIG5pbAoKICAgICAgICAgOzsgdGhpcyBpcyB0aGUg aW5kZXggb2YgdGhlIG5hbWVzcGFjZSByb290IGluIHRoZSBwYXRoCiAgICAgICAgIChpbmRleCAo cG9zaXRpb24taWYKICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKHgpCiAgICAgICAgICAgICAg ICAgICAgIChmaW5kLWlmCiAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICh5KSAoZXF1YWwg KGNhciB5KSB4KSkKICAgICAgICAgICAgICAgICAgICAgIG15LW5hbWVzcGFjZS1yb290cykpCiAg ICAgICAgICAgICAgICAgICBhbGwtcGF0aC1lbHRzIDpmcm9tLWVuZCAwKSkKCiAgICAgICAgIDs7 IHRoZSBuYW1lIG9mIHRoZSByb290IGVsZW1lbnQKICAgICAgICAgKHJvb3QgKGFuZCBpbmRleCAo bnRoIGluZGV4IGFsbC1wYXRoLWVsdHMpKSkKCiAgICAgICAgIDs7IHRoZSBwYXRoIGVsZW1lbnRz IHRvIHVzZSBmb3IgdGhlIG5hbWVzcGFjZQogICAgICAgICAodG9wLXBhdGgtZWx0cyAoYW5kIGlu ZGV4IChzdWJzZXEgYWxsLXBhdGgtZWx0cyBpbmRleCkpKQoKICAgICAgICAgKHBhdGgtZWx0cwog ICAgICAgICAgKGlmIChhbmQgdG9wLXBhdGgtZWx0cwogICAgICAgICAgICAgICAgICAgKGVxdWFs IHJvb3QgImJvb3N0IikKICAgICAgICAgICAgICAgICAgIChlcXVhbCAibGlicyIgKGNhZHIgdG9w LXBhdGgtZWx0cykpCiAgICAgICAgICAgICAgICAgICAoZXF1YWwgInNyYyIgKGNhZGRkciB0b3At cGF0aC1lbHRzKSkpCiAgICAgICAgICAgICAgKGFwcGVuZCAobGlzdCByb290IChjYWRkciB0b3At cGF0aC1lbHRzKSkgKGNkZGRkciB0b3AtcGF0aC1lbHRzKSkKICAgICAgICAgICAgdG9wLXBhdGgt ZWx0cykpCiAgICAgICAgICAgCiAgICAgICAgIChjb3B5cmlnaHQtZnVuY3Rpb24KICAgICAgICAg IChhbmQgaW5kZXgKICAgICAgICAgICAgICAgKGNkciAoZmluZC1pZiAobGFtYmRhICh5KSAoZXF1 YWwgKGNhciB5KSByb290KSkgbXktbmFtZXNwYWNlLXJvb3RzKSkpKQogICAgICAgICAgIAogICAg ICAgICAoY29weXJpZ2h0CiAgICAgICAgICAoYW5kIGluZGV4CiAgICAgICAgICAgICAgIChldmFs IChsaXN0IGNvcHlyaWdodC1mdW5jdGlvbikpKSkKICAgICAgICAgICAgICAgICAKICAgICAgICAg KQogICAgKGNvbnMgcGF0aC1lbHRzIGNvcHlyaWdodCkpKQoKKGRlZnVuIG15LWJlZ2luLWhlYWRl ciAoKQogICJCZWdpbiBhIEMvQysrIGhlYWRlciB3aXRoIGluY2x1ZGUgZ3VhcmRzIGFuZCBhIGNv cHlyaWdodC4iCiAgKGludGVyYWN0aXZlKQogIChsZXQqICgKICAgICAgICAgKHNvdXJjZS1wcmVw IChteS1wcmVwYXJlLXNvdXJjZSkpCiAgICAgICAgIChwYXRoLWVsdHMgKGNhciBzb3VyY2UtcHJl cCkpCiAgICAgICAgIChndWFyZCAobXktaW5jbHVkZS1ndWFyZCBwYXRoLWVsdHMpKQogICAgICAg ICAoY29weXJpZ2h0IChjZHIgc291cmNlLXByZXApKSkKCiAgICAoYmVnaW5uaW5nLW9mLWJ1ZmZl cikKICAgIChpZiBjb3B5cmlnaHQKICAgICAgICAobXktY29weXJpZ2h0IGNvcHlyaWdodCkKICAg ICAgKG15LWNvcHlyaWdodCkpCiAgICAgIAogICAgKGluc2VydC1zdHJpbmcgKGNvbmNhdCAiI2lm bmRlZiAiIGd1YXJkICJcbiIKICAgICAgICAgICAgICAgICAgICIjIGRlZmluZSAiIGd1YXJkICJc biIpKQoKICAgIChsZXQgKChmaW5hbCBuaWwpIDs7IGZpbmFsIHBvc2l0aW9uCiAgICAgICAgICAo bnNmaW5pIChpZiBwYXRoLWVsdHMgIlxuIiAiIikpKQogICAgICAKICAgICAgOzsgb3BlbmluZyBu YW1lc3BhY2Ugc3R1ZmYKICAgICAgKGluc2VydC1zdHJpbmcgbnNmaW5pKQogICAgICAobWFwYyAo bGFtYmRhIChuKSAoaW5zZXJ0LXN0cmluZyAoY29uY2F0ICJuYW1lc3BhY2UgIiBuICIgeyAiKSkp CiAgICAgICAgICAgIHBhdGgtZWx0cykKICAgICAgKGluc2VydC1zdHJpbmcgbnNmaW5pKQogICAg ICAgIAogICAgICAoc2V0cSBmaW5hbCAocG9pbnQpKQogICAgICAobmV3bGluZSkKICAgICAgCiAg ICAgIChlbmQtb2YtYnVmZmVyKQogICAgICA7OyBtYWtlIHN1cmUgdGhlIG5leHQgc3R1ZmYgZ29l cyBvbiBpdHMgb3duIGxpbmUKICAgICAgKGlmIChub3QgKGVxdWFsIChjdXJyZW50LWNvbHVtbikg MCkpCiAgICAgICAgICAobmV3bGluZSkpCiAgICAgIAogICAgICA7OyBjbG9zaW5nIG5hbWVzcGFj ZSBzdHVmZgogICAgICAobWFwYyAobGFtYmRhIChuKSAoaW5zZXJ0LXN0cmluZyAifSIpKSBwYXRo LWVsdHMpCiAgICAgIChyZWR1Y2UgKGxhbWJkYSAocHJlZml4IG4pCiAgICAgICAgICAgICAgICAo aW5zZXJ0LXN0cmluZyAoY29uY2F0IHByZWZpeCBuKSkgIjo6IikKICAgICAgICAgICAgICBwYXRo LWVsdHMKICAgICAgICAgICAgICA6aW5pdGlhbC12YWx1ZSAiIC8vIG5hbWVzcGFjZSAiKQogICAg ICAoaW5zZXJ0LXN0cmluZyBuc2ZpbmkpCiAgICAgIChpbnNlcnQtc3RyaW5nIG5zZmluaSkKICAg ICAgKGluc2VydC1zdHJpbmcgKGNvbmNhdCAiI2VuZGlmIC8vICIgZ3VhcmQpKQogICAgICAoZ290 by1jaGFyIGZpbmFsKSkKICAgICkKICApCgoKKGRlZnVuIG15LWJlZ2luLXNvdXJjZSAoKQogICJC ZWdpbiBhIEMvQysrIHNvdXJjZSBmaWxlIgogIChpbnRlcmFjdGl2ZSkKICAobGV0KiAoKHNvdXJj ZS1wcmVwIChteS1wcmVwYXJlLXNvdXJjZSkpCiAgICAgICAgIChwYXRoLWVsdHMgKGNhciBzb3Vy Y2UtcHJlcCkpCiAgICAgICAgIChjb3B5cmlnaHQgKGNkciBzb3VyY2UtcHJlcCkpCiAgICAgICAg IChiYXNlbmFtZSAoY2FyIChteS1zcGxpdC1jdXJyZW50LWZpbGVuYW1lKSkpCiAgICAgICAgICkK CiAgICAKICAgIChiZWdpbm5pbmctb2YtYnVmZmVyKQogICAgKGlmIGNvcHlyaWdodAogICAgICAg IChteS1jb3B5cmlnaHQgY29weXJpZ2h0KQogICAgICAobXktY29weXJpZ2h0KSkKICAgIAogICAg KGxldCAoKGZpbmFsIG5pbCkgOzsgZmluYWwgcG9zaXRpb24KICAgICAgICAgIChuc2ZpbmkgKGlm IHBhdGgtZWx0cyAiXG4iICIiKSkpCiAgICAgIAogICAgICA7OyBvcGVuaW5nIG5hbWVzcGFjZSBz dHVmZgogICAgICAoaW5zZXJ0LXN0cmluZyBuc2ZpbmkpCiAgICAgIChpZiBwYXRoLWVsdHMKICAg ICAgICAgIChwcm9nbgogICAgICAgICAgICAoaW5zZXJ0LXN0cmluZyAiI2luY2x1ZGUgXCIiKQog ICAgICAgICAgICAobWFwYyAobGFtYmRhIChuKSAoaW5zZXJ0LXN0cmluZyBuICIvIikpCiAgICAg ICAgICAgICAgICAgIHBhdGgtZWx0cykKICAgICAgICAgICAgKGluc2VydC1zdHJpbmcgKGNvbmNh dCAoZG93bmNhc2UgYmFzZW5hbWUpICIuaHBwXCJcblxuIikpKSkKICAgICAgCiAgICAgIChtYXBj IChsYW1iZGEgKG4pIChpbnNlcnQtc3RyaW5nIChjb25jYXQgIm5hbWVzcGFjZSAiIG4gIiB7ICIp KSkKICAgICAgICAgICAgcGF0aC1lbHRzKQogICAgICAKICAgICAgKGluc2VydC1zdHJpbmcgbnNm aW5pKQogICAgICAgIAogICAgICAoc2V0cSBmaW5hbCAocG9pbnQpKQogICAgICAobmV3bGluZSkK ICAgICAgCiAgICAgIChlbmQtb2YtYnVmZmVyKQogICAgICA7OyBtYWtlIHN1cmUgdGhlIG5leHQg c3R1ZmYgZ29lcyBvbiBpdHMgb3duIGxpbmUKICAgICAgKGlmIChub3QgKGVxdWFsIChjdXJyZW50 LWNvbHVtbikgMCkpCiAgICAgICAgICAobmV3bGluZSkpCiAgICAgIAogICAgICA7OyBjbG9zaW5n IG5hbWVzcGFjZSBzdHVmZgogICAgICAobWFwYyAobGFtYmRhIChuKSAoaW5zZXJ0LXN0cmluZyAi fSIpKSBwYXRoLWVsdHMpCiAgICAgIChyZWR1Y2UgKGxhbWJkYSAocHJlZml4IG4pCiAgICAgICAg ICAgICAgICAoaW5zZXJ0LXN0cmluZyAoY29uY2F0IHByZWZpeCBuKSkgIjo6IikKICAgICAgICAg ICAgICBwYXRoLWVsdHMKICAgICAgICAgICAgICA6aW5pdGlhbC12YWx1ZSAiIC8vIG5hbWVzcGFj ZSAiKQogICAgICAoaW5zZXJ0LXN0cmluZyBuc2ZpbmkpCiAgICAgIChnb3RvLWNoYXIgZmluYWwp CiAgICAgICkKICAgICkKICApCgooZGVmY3VzdG9tIG15LWJ1ZmZlci1pbml0aWFsaXphdGlvbi1h bGlzdAogICAgICAnKAogICAgICAgICgiXFwuW2loXVxcKHBwXFx8eHhcXCk/JCIgLiBteS1iZWdp bi1oZWFkZXIpCiAgICAgICAgKCJcXC5jXFwocHBcXHx4eFxcKSQiIC4gbXktYmVnaW4tc291cmNl KQogICAgICAgICgiXFwuXFwoamFtXFx8XFxodG1sP1xcfHNoXFx8cHlcXHxyc3RcXHx4bWxcXCkk IiAuIG15LWNvcHlyaWdodCkKICAgICAgICApCiAgICAgICJBIGxpc3Qgb2YgcGFpcnMgKFBBVFRF Uk4gLiBGVU5DVElPTikgZGVzY3JpYmluZyBob3cgdG8gaW5pdGlhbGl6ZSBhbiBlbXB0eSBidWZm ZXIgd2hvc2UKZmlsZSBuYW1lIG1hdGNoZXMgUEFUVEVSTi4iCiAgICAgICc6dHlwZSAnYWxpc3QK ICAgICAgKQoKKGRlZmN1c3RvbSBteS1kZWZhdWx0LWNvcHlyaWdodAogICAgICAnYm9vc3QtY29w eXJpZ2h0CiAgICAgICJBIHN5bWJvbCBuYW1pbmcgYSBmdW5jdGlvbiB3aGljaCBnZW5lcmF0ZXMg dGhlIGRlZmF1bHQgY29weXJpZ2h0IG1lc3NhZ2UiCiAgICAgICc6dHlwZSAnc3ltYm9sCiAgICAg ICkKCihkZWZhZHZpY2UgZmluZC1maWxlIChhZnRlciBteS1ndWQtdHJhbnNsYXRlLWN5Z3dpbi1w YXRocyBhY3RpdmF0ZSkKICA7OyBpZiB0aGUgZmlsZSBkb2Vzbid0IGV4aXN0IHlldCBhbmQgaXMg ZW1wdHkKICAoaWYgKGFuZCAoZXF1YWwgKGJ1ZmZlci1zaXplKSAwKQogICAgICAgICAgIChub3Qg KGZpbGUtZXhpc3RzLXAgKGJ1ZmZlci1maWxlLW5hbWUpKSkpCgogICAgICA7OyB0cnkgdG8gZmlu ZCBhbiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbgogICAgICAobGV0ICgoaW5pdGlhbGl6ZXIKICAg ICAgICAgICAgIChmaW5kLWlmCiAgICAgICAgICAgICAgKGxhbWJkYSAocGFpcikgKHN0cmluZy1t YXRjaCAoY2FyIHBhaXIpIChidWZmZXItZmlsZS1uYW1lKSkpCiAgICAgICAgICAgICAgbXktYnVm ZmVyLWluaXRpYWxpemF0aW9uLWFsaXN0KSkpCgogICAgICAgIDs7IGlmIGZvdW5kLCBjYWxsIGl0 CiAgICAgICAgKGlmIGluaXRpYWxpemVyCiAgICAgICAgICAgIChwcm9nbiAoZXZhbCAobGlzdCAo Y2RyIGluaXRpYWxpemVyKSkpCiAgICAgICAgICAgICAgICAgICAoc2V0LWJ1ZmZlci1tb2RpZmll ZC1wIG5pbCkpKQogICAgICApKSkKCihkZWZ1biBteS1hdC1wcmVwcm9jZXNzb3ItZGlyZWN0aXZl LXAgKCkKICAicmV0dXJuIG5vbi1uaWwgaWYgcG9pbnQgaXMgc2l0dGluZyBhdCB0aGUgYmVnaW5u aW5nIG9mIGEgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBuYW1lIgogIChhbmQKICAgKHNhdmUtZXhj dXJzaW9uCiAgICAgKHJlLXNlYXJjaC1iYWNrd2FyZCAiXlxcKFsgXHRdKlxcKSNcXChbIFx0XSpc XCkiIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgdCkpCiAgICg+PSAocG9pbnQpIChtYXRjaC1i ZWdpbm5pbmcgMikpCiAgICg8PSAocG9pbnQpIChtYXRjaC1lbmQgMikpCiAgICApKQoKKGRlZnVu IG15LXByZXByb2Nlc3Nvci1pbmRlbnRhdGlvbiAoKQogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGJl Z2lubmluZy1vZi1saW5lKQogICAgKHJlLXNlYXJjaC1iYWNrd2FyZCAiXlsgXHRdKiNbIFx0XSoi IG5pbCB0KQogICAgKGdvdG8tY2hhciAobWF0Y2gtZW5kIDApKQogICAgKCsgKGN1cnJlbnQtY29s dW1uKQogICAgICAgKGlmIChsb29raW5nLWF0ICJcXChpZlxcKVxcfFxcKGVsXFwpIikgMSAwKSkp KQogIAooZGVmdW4gbXktZWxlY3RyaWMtcG91bmQtPCAoKQogIChpbnRlcmFjdGl2ZSkKICAobXkt bWF5YmUtaW5zZXJ0LWluY3VkZSAiPCIgIj4iKSkKCihkZWZ1biBteS1lbGVjdHJpYy1wb3VuZC1x dW90ZSAoKQogIChpbnRlcmFjdGl2ZSkKICAobXktbWF5YmUtaW5zZXJ0LWluY3VkZSAiXCIiICJc IiIpKQoKKGRlZnVuIG15LW1heWJlLWluc2VydC1pbmN1ZGUgKG9wZW4gY2xvc2UpCiAgKGlmICht eS1hdC1wcmVwcm9jZXNzb3ItZGlyZWN0aXZlLXApCiAgICAgIChwcm9nbgogICAgICAgIChtb3Zl LXRvLWNvbHVtbiAobXktcHJlcHJvY2Vzc29yLWluZGVudGF0aW9uKSB0KQogICAgICAgIChpbnNl cnQtc3RyaW5nIChjb25jYXQgImluY2x1ZGUgIiBvcGVuKSkKICAgICAgICAoc2F2ZS1leGN1cnNp b24KICAgICAgICAgIChpbnNlcnQtc3RyaW5nIGNsb3NlKSkpCiAgICAoaW5zZXJ0LXN0cmluZyBv cGVuKSkpCgooZGVmdW4gbXktZWxlY3RyaWMtcG91bmQgKCkKICAoaW50ZXJhY3RpdmUpCiAgKGlu c2VydC1zdHJpbmcgIiMiKQogIChpZiAobXktYXQtcHJlcHJvY2Vzc29yLWRpcmVjdGl2ZS1wKQog ICAgICAocHJvZ24KICAgICAgICAoZGVsZXRlLXJlZ2lvbiAobWF0Y2gtYmVnaW5uaW5nIDEpICht YXRjaC1lbmQgMSkpCiAgICAgICAgKG1vdmUtdG8tY29sdW1uIChteS1wcmVwcm9jZXNzb3ItaW5k ZW50YXRpb24pIHQpKSkpCgooZGVmdW4gbXktZWxlY3RyaWMtcG91bmQtZSAoKQogIChpbnRlcmFj dGl2ZSkKICAKICAoaWYgKG15LWF0LXByZXByb2Nlc3Nvci1kaXJlY3RpdmUtcCkKICAgICAgKHBy b2duCiAgICAgICAgKG1vdmUtdG8tY29sdW1uICgtIChteS1wcmVwcm9jZXNzb3ItaW5kZW50YXRp b24pIDEpKSkpCiAgKGluc2VydC1zdHJpbmcgImUiKSkKICAgICAgICAKKGRlZnVuIG15LWMtbmFt ZXNwYWNlLWluZGVudCAobGFuZ2VsZW0pCiAgIlVzZWQgd2l0aCBjLXNldC1vZmZzZXQsIGluZGVu dHMgbmFtZXNwYWNlIHNjb3BlIGVsZW1lbnRzIDIgc3BhY2VzCmZyb20gdGhlIG5hbWVzcGFjZSBk ZWNsYXJhdGlvbiBpZmYgdGhlIG9wZW4gYnJhY2Ugc2l0cyBvbiBhIGxpbmUgYnkgaXRzZWxmLiIK ICAoc2F2ZS1leGN1cnNpb24KICAgIChpZiAocHJvZ24gKGdvdG8tY2hhciAoY2RyIGxhbmdlbGVt KSkKICAgICAgICAgICAgICAgKHNldHEgY29sdW1uIChjdXJyZW50LWNvbHVtbikpCiAgICAgICAg ICAgICAgIChlbmQtb2YtbGluZSkKICAgICAgICAgICAgICAgKHdoaWxlIChhbmQgKHNlYXJjaC1i YWNrd2FyZCAieyIgbmlsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChhc3NvYyAnaW5j b21tZW50IChjLWd1ZXNzLWJhc2ljLXN5bnRheCkpKSkKICAgICAgICAgICAgICAgKHNraXAtY2hh cnMtYmFja3dhcmQgIiBcdCIpCiAgICAgICAgICAgICAgIChib2xwKSkKICAgICAgICAyKSkpCgoo ZGVmdW4gbXktYy1iYWNrd2FyZC10ZW1wbGF0ZS1wcmVsdWRlICgpCiAgIkJhY2sgdXAgb3ZlciBl eHByZXNzaW9ucyB0aGF0IGVuZCB3aXRoIGEgdGVtcGxhdGUgYXJndW1lbnQgbGlzdC4KCkV4YW1w bGVzIGluY2x1ZGU6CgogICAgICAgIHR5cGVuYW1lIGZvbzxiYXI+OjpiYXo6Om11bWJsZQoKICAg ICAgICBmb28oYmFyLCBiYXopLnRlbXBsYXRlIGJpbmcKIgogICh3aGlsZQogICAgICAoc2F2ZS1l eGN1cnNpb24KICAgICAgICA7OyBJbnNwZWN0IHRoZSBwcmV2aW91cyB0b2tlbiBvciBiYWxhbmNl ZCBwYWlyIHRvCiAgICAgICAgOzsgc2VlIHdoZXRoZXIgdG8gc2tpcCBiYWNrd2FyZHMgb3ZlciBp dAogICAgICAgIChjLWJhY2t3YXJkLXN5bnRhY3RpYy13cykKICAgICAgICAob3IKICAgICAgICAg OzsgaXMgaXQgdGhlIGVuZCBvZiBhIG5lc3RlZCB0ZW1wbGF0ZSBhcmd1bWVudCBsaXN0PwogICAg ICAgICAoYW5kCiAgICAgICAgICAoZXEgKGNoYXItYmVmb3JlKSA/PikKICAgICAgICAgIChjLWJh Y2t3YXJkLXRva2VuLTIgMSB0KSA7OyBza2lwcyBvdmVyIGJhbGFuY2VkICI8PiIgcGFpcnMKICAg ICAgICAgIChlcSAoY2hhci1hZnRlcikgPzwpKQogICAgICAgICAgICAgICAgICAgCiAgICAgICAg IChhbmQKICAgICAgICAgIChjLWJhY2t3YXJkLXRva2VuLTIgMSB0KQogICAgICAgICAgKGxvb2tp bmctYXQgIltBLVphLXpfXFxbKC5dXFx8OjpcXHwtPiIpKSkpCiAgICAgICAgICAgICAgCiAgICAo Yy1iYWNrd2FyZC10b2tlbi0yIDEgdCkpKQogIAooZGVmdW4gbXktbGluZXVwLWZpcnN0LXRlbXBs YXRlLWFyZ3MgKGxhbmdlbGVtKQogICJBbGlnbiBsaW5lcyBiZWdpbm5pbmcgd2l0aCB0aGUgZmly c3QgdGVtcGxhdGUgYXJndW1lbnQuCgpUbyBhbGxvdyB0aGlzIGZ1bmN0aW9uIHRvIGJlIHVzZWQg aW4gYSBsaXN0IGV4cHJlc3Npb24sIG5pbCBpcwpyZXR1cm5lZCBpZiB3ZSBkb24ndCBhcHBlYXIg dG8gYmUgaW4gYSB0ZW1wbGF0ZSBhcmd1bWVudCBsaXN0LgoKV29ya3Mgd2l0aDogdGVtcGxhdGUt YXJncy1jb250LiIKICAobGV0ICgobGVhZGluZy1jb21tYSAobXktYy1sZWFkaW5nLWNvbW1hLXAp KSkKICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAoYy13aXRoLXN5bnRheC10YWJsZSBjKystdGVt cGxhdGUtc3ludGF4LXRhYmxlCiAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgICAgIChi YWNrd2FyZC11cC1saXN0IDEpCiAgICAgICAgKGlmIChlcSAoY2hhci1hZnRlcikgPzwpCiAgICAg ICAgICAgIAogICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAobXktYy1iYWNrd2FyZC10 ZW1wbGF0ZS1wcmVsdWRlKQogICAgICAgICAgICAgIAogICAgICAgICAgICAgICh2ZWN0b3IKICAg ICAgICAgICAgICAgKCsgKGN1cnJlbnQtY29sdW1uKQogICAgICAgICAgICAgICAgICAoaWYgbGVh ZGluZy1jb21tYSAoLyBjLWJhc2ljLW9mZnNldCAyKSBjLWJhc2ljLW9mZnNldCkKICAgICAgICAg ICAgICAgICAgKSkKCiAgICAgICAgICAgICAgKSkpKSkpCgoKKGRlZnVuIG15LWxpbmV1cC1tb3Jl LXRlbXBsYXRlLWFyZ3MgKGxhbmdlbGVtKQogICJMaW5lIHVwIHRlbXBsYXRlIGFyZ3VtZW50IGxp bmVzIHVuZGVyIHRoZSBmaXJzdCBhcmd1bWVudCwKYWRqdXN0aW5nIGZvciBsZWFkaW5nIGNvbW1h cy4gVG8gYWxsb3cgdGhpcyBmdW5jdGlvbiB0byBiZSB1c2VkIGluCmEgbGlzdCBleHByZXNzaW9u LCBuaWwgaXMgcmV0dXJuZWQgaWYgdGhlcmUncyBubyB0ZW1wbGF0ZQphcmd1bWVudCBvbiB0aGUg Zmlyc3QgbGluZS4KCldvcmtzIHdpdGg6IHRlbXBsYXRlLWFyZ3MtY29udC4iCiAgKGxldCAoKHJl c3VsdCAoYy1saW5ldXAtdGVtcGxhdGUtYXJncyBsYW5nZWxlbSkpKQogICAgKGlmIChub3QgKGVx IHJlc3VsdCBuaWwpKQogICAgICAgIChpZiAobXktYy1sZWFkaW5nLWNvbW1hLXApCiAgICAgICAg ICAgICh2ZWN0b3IgKC0gKGFyZWYgcmVzdWx0IDApICgvIGMtYmFzaWMtb2Zmc2V0IDIpKSkKICAg ICAgICAgIHJlc3VsdCkpKSkKCihkZWZ1biBteS1saW5ldXAtdGVtcGxhdGUtY2xvc2UgKGxhbmdl bGVtKQogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGMtd2l0aC1zeW50YXgtdGFibGUgYysrLXRlbXBs YXRlLXN5bnRheC10YWJsZQogICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgIChjLWZvcndh cmQtc3ludGFjdGljLXdzIChjLXBvaW50ICdlb2wpKQogICAgICAoaWYgKGFuZAogICAgICAgICAg IChlcSAoY2hhci1hZnRlcikgPz4pCiAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAoZm9y d2FyZC1jaGFyKQogICAgICAgICAgICAgKGMtYmFja3dhcmQtdG9rZW4tMiAxIHQpCiAgICAgICAg ICAgICAoZXEgKGNoYXItYWZ0ZXIpID88KSkpCiAgICAgICAgICAocHJvZ24KICAgICAgICAgICAg KG15LWMtYmFja3dhcmQtdGVtcGxhdGUtcHJlbHVkZSkKICAgICAgICAgICAgKHZlY3RvciAoY3Vy cmVudC1jb2x1bW4pKSkpKSkpCgooZGVmdW4gbXktYy1lbGVjdHJpYy1jb21tYSAoYXJnKQogICJB bWVuZCB0aGUgcmVndWxhciBjb21tYSBpbnNlcnRpb24gYnkgcG9zc2libHkgYXBwZW5kaW5nIGEK ICBzcGFjZS4iCiAgKGludGVyYWN0aXZlICIqUCIpIDsgUmVxdWlyZSBhIHdyaXRhYmxlIGJ1ZmZl ci90YWtlIGEgcHJlZml4IGFyZyBpbiByYXcgZm9ybQoKICA7OyBEbyB0aGUgcmVndWxhciBhY3Rp b24uICBQZXJoYXBzIHdlIHNob3VsZCBiZSB1c2luZyBkZWZhZHZpY2UgaGVyZT8KICAoYy1lbGVj dHJpYy1zZW1pJmNvbW1hIGFyZykKCiAgOzsgSW5zZXJ0IHRoZSBzcGFjZSBpZiB0aGlzIGNvbW1h IGlzIHRoZSBmaXJzdCB0b2tlbiBvbiB0aGUgbGluZSwgb3IKICA7OyBpZiB0aGVyZSBhcmUgcHJl Y2VkaW5nIGNvbW1hcyBmb2xsb3dlZCBieSBhIHNwYWNlLgogIChhbmQgKGVxIChjaGFyLWJlZm9y ZSkgPywpCiAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgKGJhY2t3YXJkLWNoYXIpCiAg ICAgICAgIChza2lwLXN5bnRheC1iYWNrd2FyZCAiICIpCiAgICAgICAgIChib2xwKQogICAgICAg ICApCiAgICAgICAoaW5zZXJ0LXN0cmluZyAiICIpKQogICkKICAgICAgICAgCihkZWZ1biBteS1j LWVsZWN0cmljLWd0IChhcmcpCiAgIkluc2VydCBhIGdyZWF0ZXItdGhhbiBjaGFyYWN0ZXIuClRo ZSBsaW5lIHdpbGwgYmUgcmUtaW5kZW50ZWQgaWYgdGhlIGJ1ZmZlciBpcyBpbiBDKysgbW9kZS4K RXhjZXB0aW9ucyBhcmUgd2hlbiBhIG51bWVyaWMgYXJndW1lbnQgaXMgc3VwcGxpZWQsIHBvaW50 IGlzIGluc2lkZSBhCmxpdGVyYWwsIG9yIGBjLXN5bnRhY3RpYy1pbmRlbnRhdGlvbicgaXMgbmls LCBpbiB3aGljaCBjYXNlIHRoZSBsaW5lCndpbGwgbm90IGJlIHJlLWluZGVudGVkLiIKICAoaW50 ZXJhY3RpdmUgIipQIikKICAobGV0ICgoaW5kZW50cCAoYW5kIGMtc3ludGFjdGljLWluZGVudGF0 aW9uCgkJICAgICAgKG5vdCBhcmcpCgkJICAgICAgKG5vdCAoYy1pbi1saXRlcmFsKSkpKQoJOzsg c2h1dCB0aGlzIHVwCgkoYy1lY2hvLXN5bnRhY3RpYy1pbmZvcm1hdGlvbi1wIG5pbCkpCiAgICAo c2VsZi1pbnNlcnQtY29tbWFuZCAocHJlZml4LW51bWVyaWMtdmFsdWUgYXJnKSkKICAgIChpZiBp bmRlbnRwCgkoaW5kZW50LWFjY29yZGluZy10by1tb2RlKSkpKQoKKGRlZnVuIG15LWMtbmFtZXNw YWNlLW9wZW4taW5kZW50IChsYW5nZWxlbSkKICAiVXNlZCB3aXRoIGMtc2V0LW9mZnNldCwgaW5k ZW50cyBuYW1lc3BhY2Ugb3BlbmluZyBicmFjZXMgdG8gdGhlCnNhbWUgaW5kZW50YXRpb24gYXMg dGhlIGxpbmUgb24gd2hpY2ggdGhlIG5hbWVzcGFjZSBkZWNsYXJhdGlvbgpzdGFydHMuIgogIChz YXZlLWV4Y3Vyc2lvbgogICAgKGdvdG8tY2hhciAoY2RyIGxhbmdlbGVtKSkKICAgIChsZXQgKChj b2x1bW4gKGN1cnJlbnQtY29sdW1uKSkpCiAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKICAgICAg KHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0IikKICAgICAgKC0gKGN1cnJlbnQtY29sdW1uKSBjb2x1 bW4pKSkpCgooZGVmdW4gbXktYy1kZWZ1bi1ibG9jay1pbnRyby1pbmRlbnQgKGxhbmdlbGVtKQog ICJVc2VkIHdpdGggYy1zZXQtb2Zmc2V0LCBtYWtlcyBzdXJlIGRlZnVuLWJsb2NrLWludHJvIGRv ZXNuJ3QKICBjYXVzZSBpbmRlbnRhdGlvbiB3aGVuIHdlJ3JlIGp1c3QgaW5zaWRlIGEgbmFtZXNw YWNlLiIKICAoaWYgKGFzc29jICdpbm5hbWVzcGFjZSAoYy1ndWVzcy1iYXNpYy1zeW50YXgpKQog ICAgICAwCiAgICAnKykpCgooZGVmdW4gbXktYy10YWIgKCkKICAoaW50ZXJhY3RpdmUgIioiKQog IChkZWxldGUtcmVnaW9uIChjYXIgKG15LXNlbGVjdGlvbikpIChjZHIgKG15LXNlbGVjdGlvbikp KQogIChjLWluZGVudC1jb21tYW5kKQogICkKICAKKGRlZnVuIG15LWMtbW9kZS1ob29rICgpCiAg KHNldHEgYy1kZWZhdWx0LXN0eWxlICJic2QiCiAgICAgICAgYy1iYWNrc3BhY2UtZnVuY3Rpb24g J2JhY2t3YXJkLWRlbGV0ZS1jaGFyCiAgICAgICAgYy1iYXNpYy1vZmZzZXQgNAogICAgICAgIGMt dGFiLWFsd2F5cy1pbmRlbnQgdCkKCiAgOzsgQWRkIDIgc3BhY2VzIG9mIGluZGVudGF0aW9uIHdo ZW4gdGhlIG9wZW4gYnJhY2UgaXMgb24gYSBsaW5lIGJ5IGl0c2VsZgogIChjLXNldC1vZmZzZXQg J2lubmFtZXNwYWNlICdteS1jLW5hbWVzcGFjZS1pbmRlbnQpCiAgCiAgOzsgaW5kZW50IHNvbG8g b3BlbmluZyBicmFjZXMgdG8gdGhlIHNhbWUgaW5kZW50YXRpb24gYXMgdGhlIGxpbmUgb24KICA7 OyB3aGljaCB0aGUgbmFtZXNwYWNlIHN0YXJ0cwogIChjLXNldC1vZmZzZXQgJ25hbWVzcGFjZS1v cGVuICdteS1jLW5hbWVzcGFjZS1vcGVuLWluZGVudCkKCiAgOzsgSSBkb24ndCBrbm93IHdoeSB0 aGlzIGlzIHJlcXVpcmVkLCBidXQgcmVjZW50IGNjLW1vZGVzIHNlZW0gdG8KICA7OyBuZWVkIGl0 IHRvIGdldCBteSBuYW1lc3BhY2UgaW5kZW50aW5nIHJpZ2h0LgogIChjLXNldC1vZmZzZXQgJ2Rl ZnVuLWJsb2NrLWludHJvICdteS1jLWRlZnVuLWJsb2NrLWludHJvLWluZGVudCkKICAKICA7OyBp bmRlbnQgYWNjZXNzIGxhYmVscyBwdWJsaWMvcHJpdmF0ZS9wcm90ZWN0ZWQgYnkgMSBzcGFjZSwg YXMgaW4gJ00nLiBJCiAgOzsga2luZGEgbGlrZSB0aGF0LgogIChjLXNldC1vZmZzZXQgJ2FjY2Vz cy1sYWJlbCAtMykKCgogIDs7CiAgOztmaXh1cCB0ZW1wbGF0ZSBpbmRlbnRhdGlvbgogIDs7CiAg KGMtc2V0LW9mZnNldCAndGVtcGxhdGUtYXJncy1jb250CiAgICAgICAgICAgICAgICAocXVvdGUK ICAgICAgICAgICAgICAgICAobXktbGluZXVwLW1vcmUtdGVtcGxhdGUtYXJncwogICAgICAgICAg ICAgICAgICBteS1saW5ldXAtdGVtcGxhdGUtY2xvc2UKICAgICAgICAgICAgICAgICAgbXktbGlu ZXVwLWZpcnN0LXRlbXBsYXRlLWFyZ3MKICAgICAgICAgICAgICAgICAgKykpKQogIAogIChzZXQt dmFyaWFibGUgJ2MtYmFja3NsYXNoLW1heC1jb2x1bW4gMjAwKQogIAogIChteS1jb2RlLW1vZGUt aG9vaykKCiAgKGxvY2FsLXNldC1rZXkgW3RhYl0gJ215LWMtdGFiKQogIChsb2NhbC1zZXQta2V5 IFs/XE0te10gJ215LWVsZWN0cmljLWJyYWNlcykKICAobG9jYWwtc2V0LWtleSBbKGNvbnRyb2wg P3spXSAnbXktZW1wdHktYnJhY2VzKQogIChsb2NhbC1zZXQta2V5IFsobWV0YSBcYCldICdteS1j cHAtdG9nZ2xlLXNyYy1oZHIpCiAgKGxvY2FsLXNldC1rZXkgWz8jXSAnbXktZWxlY3RyaWMtcG91 bmQpCiAgKGxvY2FsLXNldC1rZXkgWz88XSAnbXktZWxlY3RyaWMtcG91bmQtPCkKICAobG9jYWwt c2V0LWtleSBbPz5dICdteS1jLWVsZWN0cmljLWd0KQogIChsb2NhbC1zZXQta2V5IFs/XCJdICdt eS1lbGVjdHJpYy1wb3VuZC1xdW90ZSkKICAobG9jYWwtc2V0LWtleSBbP2VdICdteS1lbGVjdHJp Yy1wb3VuZC1lKQogIChsb2NhbC1zZXQta2V5IFs/LF0gJ215LWMtZWxlY3RyaWMtY29tbWEpCiAg KG1ha2UtbG9jYWwtdmFyaWFibGUgJ3BhcmVucy1yZXF1aXJlLXNwYWNlcykKICAoc2V0cSBwYXJl bnMtcmVxdWlyZS1zcGFjZXMgbmlsKQopCgooYWRkLWhvb2sgJ2lkbC1tb2RlLWhvb2sgJ215LWMt bW9kZS1ob29rKQooYWRkLWhvb2sgJ2MtbW9kZS1ob29rICdteS1jLW1vZGUtaG9vaykKKGFkZC1o b29rICdjKystbW9kZS1ob29rICdteS1jLW1vZGUtaG9vaykKKGFkZC1ob29rICdqYXZhLW1vZGUt aG9vayAnbXktYy1tb2RlLWhvb2spCgo7OyBTaW5jZSBwcmV0dHkgbXVjaCBhbGwgbXkgLmggZmls ZXMgYXJlIGFjdHVhbGx5IEMrKyBoZWFkZXJzLCB1c2UgYysrLW1vZGUgaW5zdGVhZCBvZgo7OyBj LW1vZGUgZm9yIHRoZXNlIGZpbGVzLgooc2V0cSBhdXRvLW1vZGUtYWxpc3QKICAgICAgKGNvbnMg JygiXFwuaCQiIC4gYysrLW1vZGUpIGF1dG8tbW9kZS1hbGlzdCkpCgoKOzsKOzsgbWFrZWZpbGUK OzsKKGRlZnVuIG15LW1ha2VmaWxlLW1vZGUtaG9vayAoKQogIChmb250LWxvY2stbW9kZSB0KQog IChzaG93LXBhcmVuLW1vZGUgdCkKICAoc2V0cSBpbmRlbnQtdGFicy1tb2RlIHQpICA7IE1ha2Vm aWxlcyBhY3R1YWxseSBfbmVlZF8gdGFicyA6KAogIChsb2NhbC1zZXQta2V5IFsoIGNvbnRyb2wg P1woICldICdteS1tYXRjaGluZy1wYXJlbikKICAobG9jYWwtc2V0LWtleSBbcmV0dXJuXSAnbmV3 bGluZS1hbmQtaW5kZW50KQogIChsb2NhbC1zZXQta2V5IFsoY29udHJvbCByZXR1cm4pXSAnbmV3 bGluZSkKKSAgCgooYWRkLWhvb2sgJ21ha2VmaWxlLW1vZGUtaG9vayAnbXktbWFrZWZpbGUtbW9k ZS1ob29rKQoKOzsgQ292ZXIgLm1hayBmaWxlcyBhbmQgRGVhbidzIGF1dG8tZ2VuZXJhdGVkIC5t azEgZmlsZXMKKHNldHEgYXV0by1tb2RlLWFsaXN0CiAgICAgIChjb25zICcoIlxcLm1hayQiIC4g bWFrZWZpbGUtbW9kZSkgYXV0by1tb2RlLWFsaXN0KSkKCihzZXRxIGF1dG8tbW9kZS1hbGlzdAog ICAgICAoY29ucyAnKCJcXC5tazEkIiAuIG1ha2VmaWxlLW1vZGUpIGF1dG8tbW9kZS1hbGlzdCkp CgoKCjs7Cjs7IFBhdGggdHJhbnNsYXRpb24gZm9yIGN5Z3dpbgo7OwooZGVmdW4gbXktdHJhbnNs YXRlLWN5Z3dpbi1wYXRocyAoZmlsZSkKICAiQWRqdXN0IHBhdGhzIGdlbmVyYXRlZCBieSBjeWd3 aW4gc28gdGhhdCB0aGV5IGNhbiBiZSBvcGVuZWQgYnkgdG9vbHMgcnVubmluZyB1bmRlciBlbWFj cy4iCgogIDs7IElmIGl0J3Mgbm90IGEgd2luZG93cyBzeXN0ZW0sIG9yIHRoZSBmaWxlIGRvZXNu J3QgYmVnaW4gd2l0aCAvLCBkb24ndCBkbyBhbnkgZmlsdGVyaW5nCiAgKGlmIChhbmQgKGVxIHN5 c3RlbS10eXBlICd3aW5kb3dzLW50KSAoc3RyaW5nLW1hdGNoICJeLyIgZmlsZSkpCiAgICAgICAg CiAgICAgIDs7IFJlcGxhY2UgcGF0aHMgb2YgdGhlIGZvcm0gL2N5Z2RyaXZlL2MvLi4uIG9yIC8v Yy8uLi4gd2l0aCBjOi8uLi4KICAgICAgKGlmIChzdHJpbmctbWF0Y2ggIl5cXCgvL1xcfC9jeWdk cml2ZS9cXClcXChbYS16QS1aXVxcKS8iIGZpbGUpCiAgICAgICAgICAoc2V0cSBmaWxlIChmaWxl LXRydWVuYW1lIChyZXBsYWNlLW1hdGNoICJcXDI6LyIgdCBuaWwgZmlsZSkpKQoKICAgICAgICA7 OyBFTFNFCiAgICAgICAgOzsgUmVwbGFjZSBuYW1lcyBvZiB0aGUgZm9ybSAvLi4uIHdpdGggPGN5 Z251cyBpbnN0YWxsYXRpb24+Ly4uLgogICAgICAgIDs7IHRyeSB0byBmaW5kIHRoZSBjeWd3aW4g aW5zdGFsbGF0aW9uCiAgICAgICAgKGxldCAoKHBhdGhzIChwYXJzZS1jb2xvbi1wYXRoIChnZXRl bnYgInBhdGgiKSkpIDsgR2V0ICQoUEFUSCkgZnJvbSB0aGUgZW52aXJvbm1lbnQKICAgICAgICAg ICAgICAoZm91bmQgbmlsKSkKCiAgICAgICAgICA7OyBXaGlsZSB0aGVyZSBhcmUgdW5wcm9jZXNz ZWQgcGF0aHMgYW5kIGN5Z3dpbiBpcyBub3QgZm91bmQKICAgICAgICAgICh3aGlsZSAoYW5kIChu b3QgZm91bmQpIHBhdGhzKQogICAgICAgICAgICAoc2V0cSBwYXRoIChjYXIgcGF0aHMpKSA7IGdy YWIgdGhlIGZpcnN0IHBhdGgKICAgICAgICAgICAgKHNldHEgcGF0aHMgKGNkciBwYXRocykpIDsg d2FsayBkb3duIHRoZSBsaXN0CiAgICAgICAgICAKICAgICAgICAgICAgKGlmIChhbmQgKHN0cmlu Zy1tYXRjaCAiL2Jpbi8/JCIgcGF0aCkgOyBpZiBpdCBlbmRzIHdpdGggL2JpbgogICAgICAgICAg ICAgICAgICAgICAoZmlsZS1leGlzdHMtcCAgICAgICAgICAgICAgICA7IGFuZCBjeWd3aW4uYmF0 IGlzIGluIHRoZSBwYXJlbnQKICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQKICAgICAgICAg ICAgICAgICAgICAgICAoaWYgKHN0cmluZy1tYXRjaCAiLyQiIHBhdGgpIHBhdGggKGNvbmNhdCBw YXRoICIvIikpCiAgICAgICAgICAgICAgICAgICAgICAgIi4uL2N5Z3dpbi5iYXQiKSkpCiAgICAg ICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgICAgKHNldHEgZm91bmQgdCkgOyBkb25l IGxvb3BpbmcKICAgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaCAiXlxcKC4qXFwpL2Jpbi8/ JCIgcGF0aCkKICAgICAgICAgICAgICAgICAgKHNldHEgZmlsZSAoZmlsZS10cnVlbmFtZSAoY29u Y2F0IChtYXRjaC1zdHJpbmcgMSBwYXRoKSBmaWxlKSkpKQogICAgICAgICAgICAgICkpKSkpCiAg ZmlsZSkKCjs7IFRoaXMgImFkdmljZSIgaXMgYSB3YXkgb2YgaG9va2luZyBhIGZ1bmN0aW9uIHRv IHN1cHBseSBhZGRpdGlvbmFsCjs7IGZ1bmN0aW9uYWxpdHkuIEluIHRoaXMgY2FzZSwgd2Ugd2Fu dCB0byBwcmUtZmlsdGVyIHRoZSBhcmd1bWVudCB0byB0aGUKOzsgZnVuY3Rpb24gZ3VkLWZpbmQt ZmlsZSB3aGljaCBpcyB1c2VkIGJ5IHRoZSBlbWFjcyBkZWJ1Z2dpbmcgbW9kZSB0byBvcGVuCjs7 IGZpbGVzIHNwZWNpZmllZCBieSBkZWJ1ZyBpbmZvLgooZGVmYWR2aWNlIGd1ZC1maW5kLWZpbGUg KGJlZm9yZSBteS1ndWQtdHJhbnNsYXRlLWN5Z3dpbi1wYXRocyBhY3RpdmF0ZSkKICAoYWQtc2V0 LWFyZyAwIChteS10cmFuc2xhdGUtY3lnd2luLXBhdGhzIChhZC1nZXQtYXJnIDApKSB0KSkKCihk ZWZ1biBteS1ndWQtcnVuLXRvLWN1cnNvciAoKQogIChndWQtdGJyZWFrKQogIChndWQtY29udCkp CgooZGVmYWR2aWNlIGNvbXBpbGF0aW9uLWZpbmQtZmlsZSAoYmVmb3JlIG15LWNvbXBpbGF0aW9u LXRyYW5zbGF0ZS1jeWd3aW4tcGF0aHMgYWN0aXZhdGUpCiAgKGFkLXNldC1hcmcgMSAobXktdHJh bnNsYXRlLWN5Z3dpbi1wYXRocyAoYWQtZ2V0LWFyZyAxKSkgdCkpCgoKOzsgU3VidmVyc2lvbiBz dXBwb3J0Cihjb25kaXRpb24tY2FzZSBuaWwKICAgIChyZXF1aXJlICdwc3ZuKQogIChlcnJvciBu aWwpKQoKKHNldHEtZGVmYXVsdCBzdm4tc3RhdHVzLWN1c3RvbS1oaWRlLWZ1bmN0aW9uICdteS1z dm4tc3RhdHVzLWhpZGUtcHljLWZpbGVzKQooZGVmdW4gbXktc3ZuLXN0YXR1cy1oaWRlLXB5Yy1m aWxlcyAoaW5mbykKICAiSGlkZSBhbGwgcHljIGZpbGVzIGluIHRoZSBgc3ZuLXN0YXR1cy1idWZm ZXItbmFtZScgYnVmZmVyLiIKICAgKGxldCogKChmbmFtZSAoc3ZuLXN0YXR1cy1saW5lLWluZm8t PmZpbGVuYW1lLW5vbmRpcmVjdG9yeSBpbmZvKSkKICAgICAgICAgIChmbmFtZS1sZW4gKGxlbmd0 aCBmbmFtZSkpKQogICAgIChhbmQgKD4gZm5hbWUtbGVuIDQpIChzdHJpbmc9IChzdWJzdHJpbmcg Zm5hbWUgKC0gZm5hbWUtbGVuIDQpKSAiLnB5YyIpKSkpCgo7Owo7OyBLZXkgYmluZGluZ3MKOzsK Cjs7IE5hdmlnYXRpb24gYnkgd29yZHMKKGdsb2JhbC1zZXQta2V5IFsoY29udHJvbCAsKV0gJ2Jh Y2t3YXJkLXdvcmQpCihnbG9iYWwtc2V0LWtleSBbKGNvbnRyb2wgXC4pXSAnZm9yd2FyZC13b3Jk KQoKOzsgTmF2aWdhdGlvbiB0byBvdGhlciB3aW5kb3dzIChwYW5lcykKKGdsb2JhbC1zZXQta2V5 ICJcQy14XEMtbiIgJ290aGVyLXdpbmRvdykgIDsgTm9ybWFsbHkgYm91bmQgdG8gc2V0LWdvYWwt Y29sdW1uCihnbG9iYWwtc2V0LWtleSAiXEMteFxDLXAiICdteS1vdGhlci13aW5kb3ctYmFja3dh cmQpIDsgTm9ybWFsbHkgYm91bmQgdG8gbWFyay1wYWdlCgo7OyBncm93aW5nIGFuZCBzaHJpbmtp bmcgd2luZG93cyAocGFuZXMpCjs7Cjs7IFRoZXNlIGRlZmF1bHQgYmluZGluZ3MgaGFwcGVuIHRv IGJlIGR1cGxpY2F0ZWQgYW55d2F5Cjs7IChlLmcuIG1ldGEgbGVmdCA9IGNvbnRyb2wgbGVmdCA9 IGJhY2t3YXJkLXdvcmQpIHNvIFdlJ3JlIG5vdCBsb3NpbmcgYW55dGhpbmcKKGdsb2JhbC1zZXQt a2V5IFsobWV0YSBsZWZ0KV0gJ3Nocmluay13aW5kb3ctaG9yaXpvbnRhbGx5KQooZ2xvYmFsLXNl dC1rZXkgWyhtZXRhIHJpZ2h0KV0gJ2VubGFyZ2Utd2luZG93LWhvcml6b250YWxseSkKKGdsb2Jh bC1zZXQta2V5IFsobWV0YSB1cCldICdzaHJpbmstd2luZG93KQooZ2xvYmFsLXNldC1rZXkgWyht ZXRhIGRvd24pXSAnZW5sYXJnZS13aW5kb3cpCgo7OyBNaXNjZWxsYW5lb3VzCihnbG9iYWwtc2V0 LWtleSAiXEMteFxDLWciICdnb3RvLWxpbmUpCihnbG9iYWwtc2V0LWtleSAiXEMteFxDLWsiICdt eS1raWxsLWJ1ZmZlcikKKGdsb2JhbC1zZXQta2V5IFtmM10gJ2V2YWwtbGFzdC1zZXhwKQooZ2xv YmFsLXNldC1rZXkgIlxDLXhyXEMtayIgJ215LWtpbGwtcmVjdGFuZ2xlKQooZ2xvYmFsLXNldC1r ZXkgIlxDLXhyXEMteSIgJ215LXlhbmstcmVwbGFjZS1yZWN0YW5nbGUpCihnbG9iYWwtc2V0LWtl eSAiXEMteHJcQy13IiAnbXktc2F2ZS1yZWN0YW5nbGUpCihnbG9iYWwtc2V0LWtleSAiXEMteFxN LVEiICdteS1mb3JjZS13cml0YWJsZSkKCgoKKGN1c3RvbS1zZXQtdmFyaWFibGVzCiAgOzsgY3Vz dG9tLXNldC12YXJpYWJsZXMgd2FzIGFkZGVkIGJ5IEN1c3RvbS4KICA7OyBJZiB5b3UgZWRpdCBp dCBieSBoYW5kLCB5b3UgY291bGQgbWVzcyBpdCB1cCwgc28gYmUgY2FyZWZ1bC4KICA7OyBZb3Vy IGluaXQgZmlsZSBzaG91bGQgY29udGFpbiBvbmx5IG9uZSBzdWNoIGluc3RhbmNlLgogIDs7IElm IHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUsIHRoZXkgd29uJ3Qgd29yayByaWdodC4KICcoYmxpbmst Y3Vyc29yLW1vZGUgbmlsIG5pbCAoZnJhbWUpKQogJyhjLW9mZnNldHMtYWxpc3QgKHF1b3RlICgo aW5oZXItaW50cm8gLiAqKSAoYXJnbGlzdC1jb250IGMtbGluZXVwLWdjYy1hc20tcmVnIG15LWMt Y29tbWEtdW5pbmRlbnQgMCkgKGFyZ2xpc3QtY2xvc2UgLiAwKSAoYXJnbGlzdC1pbnRybyAuICsp IChtZW1iZXItaW5pdC1pbnRybyAuICopKSkpCiAnKGNhbmxvY2stcGFzc3dvcmQgIjY4Njk5ZjE2 MzI0OTY2ZWE2MWYxYjNmOTg1OWI0M2RkMWJmNTdiZDgiKQogJyhjcmlzcC1vdmVycmlkZS1tZXRh LXggbmlsKQogJyhjdnMtYWxsb3ctZGlyLWNvbW1pdCB0KQogJyhjdnMtYXV0by1yZW1vdmUtZGly ZWN0b3JpZXMgKHF1b3RlIGVtcHR5KSkKICcoY3ZzLWludmVydC1pZ25vcmUtbWFya3MgKHF1b3Rl ICgidGFnIikpKQogJyhkaWZmLWRlZmF1bHQtcmVhZC1vbmx5IHQpCiAnKGRpZmYtc3dpdGNoZXMg Ii1idSIpCiAnKGRpcmVkLWxpc3Rpbmctc3dpdGNoZXMgIi1hbGgiKQogJyhlZGlmZi1jdXN0b20t ZGlmZi1vcHRpb25zICItZHUiKQogJyhlZGlmZi1kaWZmLW9wdGlvbnMgIi1kIikKICcoZWRpZmYt a2VlcC12YXJpYW50cyBuaWwpCiAnKGdudXMtZXh0cmEtaGVhZGVycyAocXVvdGUgKFRvIE5ld3Nn cm91cHMgWC1TcGFtYmF5ZXMtQ2xhc3NpZmljYXRpb24pKSkKICcoZ251cy1waWNvbi1zdHlsZSAo cXVvdGUgcmlnaHQpKQogJyhnbnVzLXRyZWF0LWZyb20tcGljb24gKHF1b3RlIGhlYWQpKQogJyhn bnVzLXRyZWF0LW1haWwtcGljb24gKHF1b3RlIGhlYWQpKQogJyhnbnVzLXRyZWF0LW5ld3Nncm91 cHMtcGljb24gKHF1b3RlIGhlYWQpKQogJyhpbmhpYml0LXN0YXJ0dXAtc2NyZWVuIHQpCiAnKGxv YWQtaG9tZS1pbml0LWZpbGUgdCB0KQogJyhtYWlsLWludGVyYWN0aXZlIHQpCiAnKG1lc3NhZ2Ut Y2l0YXRpb24tbGluZS1mdW5jdGlvbiAocXVvdGUgbXktbWVzc2FnZS1pbnNlcnQtY2l0YXRpb24t bGluZSkpCiAnKG1lc3NhZ2UtZm9yd2FyZC1pZ25vcmVkLWhlYWRlcnMgIl5Db250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOlxcfF5YLVxcfF5SZWNlaXZlZDpcXHxeVXNlci1BZ2VudDpcXHxeUmVmZXJl bmNlczoiKQogJyhtbS1pbmxpbmUtdGV4dC1odG1sLXdpdGgtaW1hZ2VzIHQpCiAnKG15LWdyZXAt ZmluZC1jb21tYW5kICJmaW5kIC4gLXR5cGUgZiAtbm90IC1wYXRoIFwiKi9DVlMvKlwiIC1ub3Qg LW5hbWUgXCIqW34jXVwiIC1uYW1lIFwiKlwiIC1wcmludDAgfCB4YXJncyAtMCAtZSBncmVwIC1u IC1lICIpCiAnKG54bWwtc2xhc2gtYXV0by1jb21wbGV0ZS1mbGFnIHQpCiAnKHBhcmVuLW1vZGUg KHF1b3RlIHNleHApIG5pbCAocGFyZW4pKQogJyhybWFpbC1wb3AtcGFzc3dvcmQtcmVxdWlyZWQg dCkKICcocnN0LW1vZGUtbGF6eSBuaWwpCiAnKHNldC1tYXJrLWNvbW1hbmQtcmVwZWFjdXQtcG9w IHQpCiAnKHNnbWwteG1sLW1vZGUgdCkKICcodG9vbC1iYXItbW9kZSBuaWwpCiAnKHVzZS1kaWFs b2ctYm94IG5pbCkKICcodmlzaWJsZS1iZWxsIHQpCiAnKHczbS1kZWZhdWx0LWRpc3BsYXktaW5s aW5lLWltYWdlcyB0KQogJyh3M20taWNvbi1kaXJlY3RvcnkgIi9ob21lL2RhdmUvZWxpc3AvaW1h Z2VzL3czbSIpCiAnKHgtc2VsZWN0LWVuYWJsZS1jbGlwYm9hcmQgdCkpCgooY3VzdG9tLXNldC1m YWNlcwogIDs7IGN1c3RvbS1zZXQtZmFjZXMgd2FzIGFkZGVkIGJ5IEN1c3RvbS4KICA7OyBJZiB5 b3UgZWRpdCBpdCBieSBoYW5kLCB5b3UgY291bGQgbWVzcyBpdCB1cCwgc28gYmUgY2FyZWZ1bC4K ICA7OyBZb3VyIGluaXQgZmlsZSBzaG91bGQgY29udGFpbiBvbmx5IG9uZSBzdWNoIGluc3RhbmNl LgogIDs7IElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUsIHRoZXkgd29uJ3Qgd29yayByaWdodC4K ICcoZGlmZi1hZGRlZCAoKHQgKDppbmhlcml0IGRpZmYtY2hhbmdlZC1mYWNlIDpmb3JlZ3JvdW5k ICJncmVlbiIpKSkpCiAnKGl0YWxpYyAoKG5pbCAoOnNsYW50IGl0YWxpYykpKSkKICcobWVzc2Fn ZS1jaXRlZC10ZXh0LWZhY2UgKCgoKGNsYXNzIGNvbG9yKSAoYmFja2dyb3VuZCBsaWdodCkpICg6 Zm9yZWdyb3VuZCAiYmx1ZSIpKSkgdCkKICcobnhtbC1jb21tZW50LWNvbnRlbnQtZmFjZSAoKHQg KDpmb3JlZ3JvdW5kICJkYXJrcmVkIiA6c2xhbnQgaXRhbGljIDpmYW1pbHkgIlZlcmRhbmEiKSkp KQogJyhueG1sLWdseXBoLWZhY2UgKCh0ICg6YmFja2dyb3VuZCAibGlnaHQgZ3JleSIgOmZvcmVn cm91bmQgImJsYWNrIiA6c2xhbnQgbm9ybWFsIDp3ZWlnaHQgbm9ybWFsIDpmYW1pbHkgIkx1Y2lk YSBTYW5zIFVuaWNvZGUiKSkpKQogJyh0YWJsZS1jZWxsLWZhY2UgKCh0ICg6YmFja2dyb3VuZCAi cGluayIgOmludmVyc2UtdmlkZW8gbmlsKSkpKSkKCgoKOzsgQ29tcGlsYXRpb24KKGdsb2JhbC1z ZXQta2V5IFtmN10gJ215LXJlY29tcGlsZSkKKGdsb2JhbC1zZXQta2V5IFsoY29udHJvbCBmNyld ICdteS1jb21waWxlKQooZ2xvYmFsLXNldC1rZXkgW2Y0XSAnbmV4dC1lcnJvcikKKGdsb2JhbC1z ZXQta2V5IFsoc2hpZnQgZjQpXSAncHJldmlvdXMtZXJyb3IpCihnbG9iYWwtc2V0LWtleSBbKGNv bnRyb2wgZjQpXSAnZmlyc3QtZXJyb3IpCgooZ2xvYmFsLXNldC1rZXkgW2YxMl0gJ3BzLXByaW50 LWJ1ZmZlcikKCjs7IERlYnVnZ2luZwooZ2xvYmFsLXNldC1rZXkgW2Y1XSAnZ3VkLWNvbnQpCihn bG9iYWwtc2V0LWtleSBbZjExXSAnZ3VkLXN0ZXApCihnbG9iYWwtc2V0LWtleSBbZjEwXSAnZ3Vk LW5leHQpCihnbG9iYWwtc2V0LWtleSBbKHNoaWZ0IGYxMSldICdndWQtZmluaXNoKQooZ2xvYmFs LXNldC1rZXkgWyhjb250cm9sIGYxMCldICdteS1ndWQtcnVuLXRvLWN1cnNvcikKKGdsb2JhbC1z ZXQta2V5IFtmOV0gJ2d1ZC1icmVhaykKKGdsb2JhbC1zZXQta2V5IFsoc2hpZnQgZjkpXSAnZ3Vk LXJlbW92ZSkKCgo7OyBWZXJzaW9uIGNvbnRyb2wKOyAoZ2xvYmFsLXNldC1rZXkgIlxDLXh2ZCIg J215LXRsbS1kaWZmLWxhdGVzdCkKCjs7IFRoaXMgaXMgdGhlIHdheSBJIGxpa2UgaXQsIGJ1dCBX aW5kb3dzIChhbmQgTSkgdXNlcnMgbWF5IHByZWZlciB0aGUKOzsgY29tbWVudGVkLW91dCB2ZXJz aW9ucyBiZWxvdy4KKGdsb2JhbC1zZXQta2V5IFtob21lXSAnYmVnaW5uaW5nLW9mLWJ1ZmZlcikK KGdsb2JhbC1zZXQta2V5IFtlbmRdICdlbmQtb2YtYnVmZmVyKQoKOzsoZ2xvYmFsLXNldC1rZXkg W2hvbWVdICdiZWdpbm5pbmctb2YtbGluZSkKOzsoZ2xvYmFsLXNldC1rZXkgW2VuZF0gJ2VuZC1v Zi1saW5lKQo7OyhnbG9iYWwtc2V0LWtleSBbXEMtaG9tZV0gJ2JlZ2lubmluZy1vZi1idWZmZXIp IDs7IFlvdSBjYW4gYWx3YXlzIHVzZSBNLTwKOzsoZ2xvYmFsLXNldC1rZXkgW1xDLWVuZF0gJ2Vu ZC1vZi1idWZmZXIpIDs7IFlvdSBjYW4gYWx3YXlzIHVzZSBNLT4KCihnbG9iYWwtc2V0LWtleSBb KCBjb250cm9sID9cKCApXSAnbXktbWF0Y2hpbmctcGFyZW4pCgo7OyBUaGlzIGlzIG5vcm1hbGx5 IHNldCB0byBicmluZyB1cCBhIGJ1ZmZlciBsaXN0LCBidXQgdGhlcmUgYXJlIG1hbnkgb3RoZXIK Ozsgd2F5cyB0byBkbyB0aGlzIHNlbGRvbS1kZXNpcmVkIGZ1bmN0aW9uIChlLmcuIEMtbW91c2Ux LCBvciBsb29rIGF0IHRoZQo7OyAiQnVmZmVycyIgbWVudSBhdCB0aGUgdG9wIG9mIHRoZSBmcmFt ZSkuCihnbG9iYWwtc2V0LWtleSAiXEMteFxDLWIiICdteS1zd2l0Y2gtdG8tcHJldmlvdXMtYnVm ZmVyKQoKCjs7IExvdHMgb2YgbW9kZXMgdXNlIHRoZSB0YWIga2V5IHRvIHBlcmZvcm0gaW5kZW50 YXRpb24uIFNvbWV0aW1lcyB5b3UganVzdCB3YW50Cjs7IHRvIG1vdmUgdG8gdGhlIHJpZ2h0IGEg Yml0IHdoZW4geW91J3ZlIGFscmVhZHkgZ290IHRoZSBsaW5lIGluZGVudGVkCihnbG9iYWwtc2V0 LWtleSBbKGNvbnRyb2wgdGFiKV0gJ3RhYi10by10YWItc3RvcCkKCjs7IERlYWxpbmcgd2l0aCBt eSBpbmNvcnJpZ2libGUgV2luZG93cyBpbnN0aW5jdHMKKGdsb2JhbC1zZXQta2V5ICJcQy16IiAn dW5kbykgICA7IE5vcm1hbGx5IHRoaXMgbWluaW1pemVzIHRoZSBlbWFjcyB3aW5kb3c7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOyB5aWtlcyEKCjs7IEkgbm9ybWFsbHkgdXNlIHRo ZSBpbmNhbnRhdGlvbiAiQWx0LXNwYWNlIE4iIHRvIG1pbmltaXplIE1TV2luZG93cyB3aW5kb3dz Cjs7IGZyb20gdGhlIGtleWJvYXJkLCBidXQgdGhhdCBkb2Vzbid0IGNvb3BlcmF0ZSB3ZWxsIHdp dGggZW1hY3MsIHNvIEkndmUKOzsgZGVmaW5lZCBNZXRhLWNvbnRyb2wtZXNjYXBlIHRvIGRvIHRo ZSBzYW1lIHRoaW5nIGluc2lkZSBlbWFjcy4KKGdsb2JhbC1zZXQta2V5IFsobWV0YSBjb250cm9s IGVzY2FwZSldICdpY29uaWZ5LW9yLWRlaWNvbmlmeS1mcmFtZSkKCihnbG9iYWwtc2V0LWtleSAi XEMtdiIgJ3lhbmspICAgOyBJJ20gYWx3YXlzIHNjcm9sbGluZyB0aGUgd2luZG93IHdoZW4gSSBt ZWFuIHRvIHBhc3RlCihnbG9iYWwtdW5zZXQta2V5IFsobW91c2UtMildKSAgOyBJIGhpdCBtb3Vz ZS0yIGJ5IG1pc3Rha2UgdG9vIG9mdGVuLCBwYXN0aW5nIGp1bmsgaW50byBteSBmaWxlcwooZ2xv YmFsLXNldC1rZXkgWyhkb3duLW1vdXNlLTIpXSAnbW91c2UtZHJhZy1yZWdpb24pICAgIDsgTWFr ZSBpdCB0aGUgc2FtZSBhcyBtb3VzZS0xCgo7OyBPdGhlciB1c2VmdWwgc3Ryb2tlcyBhbmQgY29t bWFuZHMKOzsgTS06IChhbHQtc2hpZnQtOykgLSBldmFsdWF0ZSBsaXNwIGV4cHJlc3Npb24KOzsg Qy14IEMtZSAtIGV2YWx1YXRlIHRoZSBwcmVjZWRpbmcgbGlzcCBleHByZXNzaW9uIG9uIHRoaXMg bGluZQo7OyBlZGVidWctPHRhYj4gYSBzdWl0ZSBvZiBlbGlzcCBkZWJ1Z2dpbmcgZnVuY3Rpb25z IChlLmcuIGVkZWJ1Zy1kZWZ1bikKOzsgTS0hIChhbHQtc2hpZnQtMSkgLSBkbyBhIHNoZWxsIGNv bW1hbmQsIGUuZy4gdGxtIGVkaXQKOzsgQy14IEMtZiAodmlzaXQgZmlsZSkgdG8gbWFrZSBhIGJ1 ZmZlciBtb2RpZmlhYmxlIGFmdGVyIHlvdSd2ZSAndGxtIGVkaXRlZCcgaXQuCgo7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Cjs7IENoYW5nZWxvZwo7Owo7OyA4LzE2LzAxIC0gQ29wZSB3aXRoIHRoZSBk ZWZhdWx0IE1ldHJvd2Vya3MgZXJyb3IgbWVzc2FnZXMsIHdoaWNoIGFyZSBtb3JlCjs7ICAgICAg ICAgICBkZXNjcmlwdGl2ZSB0aGFuIHRob3NlIHlvdSBnZXQgd2l0aCAtbXNnc3R5bGUgZ2NjLiBB bHNvIGFkZGVkIHRoZQo7OyAgICAgICAgICAgc3RhbmRhcmQgTVNWQyBkZWJ1Z2dpbmcga2V5Ymlu ZGluZ3MuCjs7Cjs7IDgvMDIvMDEgLSBBZGRlZCBNYXRsYWIgbW9kZSBmcm9tIE1hcmsgUi4sIGFu ZCBmaXhlZCB0aGUgc2V0dGluZyBvZgo7OyAgICAgICAgICAgdXNlci1tYWlsLWFkZHJlc3MgZm9y IGFsdHJhYnJvYWRiYW5kIHVzZXJzLgo7Owo7OyA3LzI2LzAxIC0gQWRkZWQgYSBmaXggZm9yIHZj LW1vZGUgbG9zaW5nIHRoZSB3cml0YWJsZSBzdGF0dXMgb2YgY2hlY2tlZC1vdXQKOzsgICAgICAg ICAgIGZpbGVzLiBDb21tZW50ZWQgb3V0IG9ic29sZXRlIFRMTSB2ZXJzaW9uIGNvbnRyb2wgc3R1 ZmYuCjs7Cjs7IDcvMjEvMDEgLSBBZGRlZCBhdXRvLWZpbGwtbW9kZSB0byBteS1zaC1tb2RlLWhv b2sKOzsKOzsgNy8xMS8wMSAtIEZpeGVkIGN5Z3dpbiBwYXRoIHRyYW5zbGF0aW9uIHlldCBhZ2Fp bgo7Owo7OyA2LzI4LzAxIC0gQWRkZWQgY3lnd2luIHBhdGggdHJhbnNsYXRpb24gZm9yIGNvbXBp bGF0aW9uIGVycm9yIG1lc3NhZ2VzLgo7Owo7OyA2LzEzLzAxIC0gQWRkZWQgSmFtIGRlYnVnZ2lu ZyBrZXlzCjs7Cjs7IDUvMzEvMDEgLSBVcGRhdGVkIGVkaWZmIGRlZmF1bHRzCjs7Cjs7IDQvNy8w MSAtIEFkZGVkIHNoLW1vZGUgZm9yIEphbSBmaWxlcy4KOzsKOzsgMy82LzAxIC0gQWRkZWQgbXkt YmxvY2txdW90ZS1wcmVmb3JtYXR0ZWQsIG15LXlhbmstY29kZSwgYW5kIGFzc29jaWF0ZWQKOzsg aGVscGVyIGZ1bmN0aW9ucyB3aGljaCBoZWxwIHdpdGggSFRNTCBlZGl0aW5nIG9mIGNvZGUgZnJh Z21lbnRzLgo7Owo7OyAzLzEvMDEgLSBBZGRlZCBteS10cmFuc2xhdGUtY3lnd2luLXBhdGhzIHdo aWNoIGhhbmRsZXMgY3lnd2luIHBhdGhzIGZvciBHREIKOzsKOzsgMi8xLzAxIC0gRW5hYmxlZCBz Z21sLXF1aWNrLWtleXMKOzsKOzsgNS8xMS8wMCAtIEZpeGVkIG15LXJlY29tcGlsZSBzbyB0aGF0 IHRoZSBpbml0aWFsIGludm9jYXRpb24gY2FsbHMgY29tcGlsZQo7OyBpbnRlcmFjdGl2ZWx5IHdo ZW4gdGhlcmUgaXMgbm8gY29tcGlsZS1jb21tYW5kIHNldC4KOzsKOzsgNS8xMi8wMCAtIEFkZGVk IGxhenktbG9jayBtb2RlIHRvIGVsaW1pbmF0ZSBmb250aWZpY2F0aW9uIGRlbGF5cyB3aGVuIGEg bmV3Cjs7IGZpbGUgaXMgdmlzaXRlZC4gQWRkZWQgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucyBh dCB0b3Agb2YgZmlsZS4KOzsKOzsgNS8xMi8wMCAtIEFkZGVkIGFuZCB1cGRhdGVkIG15LWNwcC10 b2dnbGUtc3JjLWhkciBhbmQgTS1gIGJpbmRpbmcgKHRoYW5rcyB0bwo7OyBLZW4gU3RlZWxlKS4K OzsKOzsgNS8xOS8wMCAtIEFkZGVkIGdsb2JhbC1hdXRvLXJldmVydC1tb2RlCjs7Cjs7IDYvOC8w MCAtIG15LW1ha2VmaWxlLW1vZGUtaG9vayB3YXMgaW5hY3RpdmUuIEkgYWN0aXZhdGVkIGl0Lgo7 Owo7OyA2LzMwLzAwIC0gQmVnYW4gYXV0b21hdGVkIFRMTSBzdHVmZiB3aXRoIG15LXRsbS1kaWZm LWxhdGVzdAo7Owo7OyA3LzcvMDAgLSBDaGFuZ2VkIGRlZmF1bHQgaW5kZW50YXRpb24gb2YgQysr IGFjY2Vzcy1zcGVjaWZpZXJzIHRvIC0zCjs7Cjs7IDgvMjYvMDAgLSBBZGRlZCByZWN0YW5nbGUg bWFuaXB1bGF0aW9ucwo7Owo7OyA5LzEvMDAgLSBGaXhlZCByZXR1cm4gZW1haWwgYWRkcmVzcwo7 Owo7OyA5LzE4LzAwIC0gRm9yY2VkIGxvd2VyY2FzZSByZXN1bHRzIGZyb20gZGlyZWN0b3J5LWZp bGVzIGZvciBXaW5OVCBzeXN0ZW1zLgo7Owo7OyAxMS8wMi8wMCAtIEFkZGVkIHNtdHBtYWlsLXNt dHAtc2VydmVyIHNldHRpbmcKOzsKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OwoKCjs7IChpZiBteS1n bnVwCjs7ICAgICAgIChsZXQgKChsaW5lcyAoY2FyLXNhZmUgKGFzc3EgJ3Rvb2wtYmFyLWxpbmVz IGRlZmF1bHQtZnJhbWUtYWxpc3QpKSkpCjs7ICAgICAgICAgOzsgV29ya2Fyb3VuZCBmb3IgZW1h Y3MtMi4zIGFscGhhIGJ1ZywgYWRkaXRpb25hbGx5IHNldHRpbmcgYSBzdHJpbmcKOzsgICAgICAg ICA7OyB2YWx1ZSBvZiAwIHdpdGgga2V5IEhLTE1cU29mdHdhcmVcR251XEVtYWNzXEVtYWNzLlRv b2xiYXIgaW4gdGhlCjs7ICAgICAgICAgOzsgcmVnaXN0cnkuCjs7ICAgICAgICAgKHdoZW4gKGFu ZCBsaW5lcwo7OyAgICAgICAgICAgICAgICAgICAgKGludGVnZXJwIGxpbmVzKQo7OyAgICAgICAg ICAgICAgICAgICAgKD4gbGluZXMgMCkpCjs7ICAgICAgICAgICAoYWRkLWhvb2sgJ3dpbmRvdy1z ZXR1cC1ob29rICMnKGxhbWJkYSAoKSAodG9vbC1iYXItbW9kZSAtMSkpKSkKICAgICAgICAKOzsg ICAgICAgICAoc2V0cS1kZWZhdWx0IHRvb2wtYmFyLW1vZGUgbmlsKQo7OyAgICAgICAgIChzZXRx LWRlZmF1bHQgZGVmYXVsdC1mcmFtZS1hbGlzdCAocXVvdGUgKCh0b29sLWJhci1saW5lcyAuIDAp IChtZW51LWJhci1saW5lcyAuIDEpKSkpCjs7IDsgJyhkZWZhdWx0LWZyYW1lLWFsaXN0IChxdW90 ZSAoKHRvb2wtYmFyLWxpbmVzIC4gMCkgKG1lbnUtYmFyLWxpbmVzIC4gMSkpKSB0KQogICAgICAg IAo7OyAgICAgICAgICkKCjs7ICAgOzsgZWxzZQo7OyAgIChwcm9nbgo7OyAgICAgKGN1c3RvbWl6 ZS1zZXQtdmFyaWFibGUgJ3BhcmVuLW1vZGUgJ3NleHApCjs7ICAgICAoY3VzdG9taXplLXNldC12 YXJpYWJsZSAndG9vbGJhci12aXNpYmxlLXAgbmlsKQo7OyAgICkpCgoKCgoKCgoKKHB1dCAnc2Ny b2xsLWxlZnQgJ2Rpc2FibGVkIG5pbCkK --=-=-= -- Dave Abrahams Boost Consulting http://boost-consulting.com --=-=-=--