From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: =?UTF-8?Q?Fran=C3=A7ois_?= =?UTF-8?Q?F=C3=A9votte?= Newsgroups: gmane.emacs.bugs Subject: bug#15539: [PATCH] Setting user-emacs-directory Date: Thu, 2 Apr 2015 10:12:01 +0200 Message-ID: References: <87384jhn9u.fsf@gmail.com> <87d23npzez.fsf@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a11352cacf7a81b0512b96275 X-Trace: ger.gmane.org 1427962415 18985 80.91.229.3 (2 Apr 2015 08:13:35 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 2 Apr 2015 08:13:35 +0000 (UTC) Cc: 15539@debbugs.gnu.org, Oleh Krehel To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Apr 02 10:13:26 2015 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1YdaFa-00017t-Uw for geb-bug-gnu-emacs@m.gmane.org; Thu, 02 Apr 2015 10:13:19 +0200 Original-Received: from localhost ([::1]:56392 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YdaFZ-0002QW-Sq for geb-bug-gnu-emacs@m.gmane.org; Thu, 02 Apr 2015 04:13:17 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45951) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YdaFR-0002Oc-Ia for bug-gnu-emacs@gnu.org; Thu, 02 Apr 2015 04:13:14 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YdaFL-0000PO-BR for bug-gnu-emacs@gnu.org; Thu, 02 Apr 2015 04:13:09 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:53069) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YdaFL-0000P8-4N for bug-gnu-emacs@gnu.org; Thu, 02 Apr 2015 04:13:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1YdaFK-0002pl-F0 for bug-gnu-emacs@gnu.org; Thu, 02 Apr 2015 04:13:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: =?UTF-8?Q?Fran=C3=A7ois_?= =?UTF-8?Q?F=C3=A9votte?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 02 Apr 2015 08:13:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 15539 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 15539-submit@debbugs.gnu.org id=B15539.142796233510821 (code B ref 15539); Thu, 02 Apr 2015 08:13:02 +0000 Original-Received: (at 15539) by debbugs.gnu.org; 2 Apr 2015 08:12:15 +0000 Original-Received: from localhost ([127.0.0.1]:42845 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YdaEW-0002oO-GJ for submit@debbugs.gnu.org; Thu, 02 Apr 2015 04:12:15 -0400 Original-Received: from mail-qg0-f52.google.com ([209.85.192.52]:35193) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YdaER-0002nv-Ft for 15539@debbugs.gnu.org; Thu, 02 Apr 2015 04:12:10 -0400 Original-Received: by qgh3 with SMTP id 3so63601724qgh.2 for <15539@debbugs.gnu.org>; Thu, 02 Apr 2015 01:12:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=N4WkctFYg4UVxbCyiDgHETRfVjH1ZK9bGnHp6WCggyQ=; b=ovbmtGQO9oSP43sT/LCg4Z2u2qs50vcguqN2mQpe3/q8NLes1l4gTh/xNdsQK9YV5g +DHFeO/VCuOu5+bqK6s4uT23qwhxJ072+ix//u7OoS3PV8wE13krySAHfUnkxcCC6QMD 57eR/vtfeKpJSfJqT9Dh9gLEDb96fUQUuZ4TEUarRtDXNpE9XMHrmqZRl+JlitcnRjd1 3tn+VPW2ZqHb8EpKU7Mw8tBJNg1J/j5cwCMqbbycN3yT+371sLjcfCNSNWp13x+NI4eL PZh7JRUV2nmADuCcpcHFkmFridye52VXW3r1SpqEVV3ht+5TYVxC2N1SOKgRlesQUiEd Ld0g== X-Received: by 10.140.233.78 with SMTP id e75mr60178422qhc.92.1427962322167; Thu, 02 Apr 2015 01:12:02 -0700 (PDT) Original-Received: by 10.229.14.72 with HTTP; Thu, 2 Apr 2015 01:12:01 -0700 (PDT) In-Reply-To: X-Google-Sender-Auth: tshuFmrJc3Q9MGg7IpmBy7_B-QY X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:101129 Archived-At: --001a11352cacf7a81b0512b96275 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Here is a new version introducing a `let' form spanning everything needed. There is no need for two calls to `getenv' anymore. I've attached the patch in two versions: with and without whitespace changes (git diff -b), to make it easier to review. Thanks, Fran=C3=A7ois On Wed, Apr 1, 2015 at 11:03 PM, Stefan Monnier wrote: >> 1- add one (which might be the most correct implementation, but >> generates a very large patch for mostly unchanged lines) > > That's the better option. > You can ask diff to ignore whitespace changes, which keeps the patch read= able. > > > Stefan --001a11352cacf7a81b0512b96275 Content-Type: text/x-patch; charset=US-ASCII; name="EMACS_USER_DIRECTORY-nowhitespace.patch" Content-Disposition: attachment; filename="EMACS_USER_DIRECTORY-nowhitespace.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i7zvqdw80 RnJvbSBlMTVmZDMxMjBhOTk1ZTM4NzA4Y2E3M2QyOTM5NzNkZDhlNTk2YjIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/RnJhbj1DMz1BN29pcz0yMEY9QzM9QTl2b3R0 ZT89IDxmcmFuY29pcy5mZXZvdHRlQGVuc3RhLm9yZz4KRGF0ZTogVGh1LCAyIEFwciAyMDE1IDA5 OjE3OjAzICswMjAwClN1YmplY3Q6IFtQQVRDSF0gTG9vayBmb3IgYW4gYEVNQUNTX1VTRVJfRElS RUNUT1JZJyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KClRoaXMgc2V0cyBgdXNlci1lbWFjcy1kaXJl Y3RvcnknIGFuZCBsb29rcyBmb3IgYGluaXQuZWwnIGluIGl0LgoKRml4ZXM6IGJ1ZyMxNTUzOQot LS0KIGRvYy9lbWFjcy9jbWRhcmdzLnRleGkgfCAgICA5ICsrKysrKysrLQogZG9jL2VtYWNzL2N1 c3RvbS50ZXhpICB8ICAgIDggKysrKysrKysKIGxpc3AvY3VzdG9tLmVsICAgICAgICAgfCAgICAx ICsKIGxpc3Avc3RhcnR1cC5lbCAgICAgICAgfCAgIDIwICsrKysrKysrKysrKysrKystLS0tCiA0 IGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZG9jL2VtYWNzL2NtZGFyZ3MudGV4aSBiL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkKaW5k ZXggMDcxY2Q2OC4uMzBkMzQ3MiAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL2NtZGFyZ3MudGV4aQor KysgYi9kb2MvZW1hY3MvY21kYXJncy50ZXhpCkBAIC0zNDksNyArMzQ5LDkgQEAgRG8gbm90IHJl bG9hZCBhbnkgc2F2ZWQgZGVza3RvcC4gIEB4cmVme1NhdmluZyBFbWFjcyBTZXNzaW9uc30uCiBA b3BpbmRleCAtLXVzZXIKIEBjaW5kZXggbG9hZCBpbml0IGZpbGUgb2YgYW5vdGhlciB1c2VyCiBM b2FkIEB2YXJ7dXNlcn0ncyBpbml0aWFsaXphdGlvbiBmaWxlIGluc3RlYWQgb2YgeW91cgotb3du QGZvb3Rub3Rle1RoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gTVMtV2luZG93cy59Lgorb3du QGZvb3Rub3Rle1RoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gTVMtV2luZG93cywgbm9yIHdo ZW4gdGhlCitAZW52e0VNQUNTX1VTRVJfRElSRUNUT1JZfSBlbnZpcm9ubWVudCB2YXJpYWJsZSBp cyBzZXQgKEBweHJlZntHZW5lcmFsCitWYXJpYWJsZXN9KS59LgogCiBAaXRlbSAtLWRlYnVnLWlu aXQKIEBvcGluZGV4IC0tZGVidWctaW5pdApAQCAtNjQyLDYgKzY0NCwxMSBAQCBkb2VzIG5vdCB1 c2UgQGVudntUWn0gYXQgYWxsLgogQHZpbmRleCBVU0VSLCBlbnZpcm9ubWVudCB2YXJpYWJsZQog VGhlIHVzZXIncyBsb2dpbiBuYW1lLiAgU2VlIGFsc28gQGVudntMT0dOQU1FfS4gIE9uIE1TLURP UywgdGhpcwogZGVmYXVsdHMgdG8gQHNhbXB7cm9vdH0uCitAaXRlbSBFTUFDU19VU0VSX0RJUkVD VE9SWQorVGhpcyBzcGVjaWZpZXMgYSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGluaXRpYWxpemF0 aW9uIGZpbGUgd2lsbCBiZQorbG9va2VkIGZvcjsgQHhyZWZ7RmluZCBJbml0fS4gVGhpcyBkaXJl Y3Rvcnkgd2lsbCBhbHNvIGJlIHVzZWQgYXMgdGhlCitkZWZhdWx0IHBsYWNlIHdoZXJlIHVzZXIt c3BlY2lmaWMgY29uZmlndXJhdGlvbiBkYXRhIHdpbGwgYmUgc3RvcmVkOworQHhyZWZ7U3RhbmRh cmQgRmlsZSBOYW1lcywsLCBlbGlzcH0uCiBAaXRlbSBWRVJTSU9OX0NPTlRST0wKIEB2aW5kZXgg VkVSU0lPTl9DT05UUk9MLCBlbnZpcm9ubWVudCB2YXJpYWJsZQogVXNlZCB0byBpbml0aWFsaXpl IHRoZSBAY29kZXt2ZXJzaW9uLWNvbnRyb2x9IHZhcmlhYmxlIChAcHhyZWZ7QmFja3VwCmRpZmYg LS1naXQgYS9kb2MvZW1hY3MvY3VzdG9tLnRleGkgYi9kb2MvZW1hY3MvY3VzdG9tLnRleGkKaW5k ZXggOWZkODIzYi4uMWUxZDQ4MiAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL2N1c3RvbS50ZXhpCisr KyBiL2RvYy9lbWFjcy9jdXN0b20udGV4aQpAQCAtMjUxNiw2ICsyNTE2LDE0IEBAIG90aGVyd2lz ZSwgaXQgbG9va3MgdXAgdGhlIGhvbWUgZGlyZWN0b3J5IGNvcnJlc3BvbmRpbmcgdG8gdGhhdCB1 c2VyCiBuYW1lIGluIHRoZSBzeXN0ZW0ncyBkYXRhIGJhc2Ugb2YgdXNlcnMuCiBAYyAgTG9jYWxX b3JkczogIGJhY2t0YWIKIAorICBUaGUgd2hvbGUgbWVjaGFuaXNtIGRlc2NyaWJlZCBhYm92ZSBp cyBieXBhc3NlZCBpZiB0aGUKK0BlbnZ7RU1BQ1NfVVNFUl9ESVJFQ1RPUll9IGVudmlyb25tZW50 IHZhcmlhYmxlIGlzIHNwZWNpZmllZCwgaW4gd2hpY2gKK2Nhc2UgRW1hY3MgZGlyZWN0bHkgbG9v a3MgZm9yIEBmaWxle2luaXQuZWx9IGluc2lkZSB0aGUgZGlyZWN0b3J5CitzcGVjaWZpZWQgYnkg QGVudntFTUFDU19VU0VSX0RJUkVDVE9SWX0gKEBweHJlZntHZW5lcmFsIFZhcmlhYmxlc30pLgor VGhpcyBkaXJlY3RvcnkgaXMgYWxzbyB1c2VkIHRvIGhvbGQgdXNlci1zcGVjaWZpYyBjb25maWd1 cmF0aW9uCisoQHB4cmVme1N0YW5kYXJkIEZpbGUgTmFtZXMsLCwgZWxpc3B9KS4KKworCiBAbm9k ZSBJbml0IE5vbi1BU0NJSQogQHN1YnNlY3Rpb24gTm9uLUBhY3Jvbnlte0FTQ0lJfSBDaGFyYWN0 ZXJzIGluIEluaXQgRmlsZXMKIEBjaW5kZXggaW50ZXJuYXRpb25hbCBjaGFyYWN0ZXJzIGluIEBm aWxley5lbWFjc30KZGlmZiAtLWdpdCBhL2xpc3AvY3VzdG9tLmVsIGIvbGlzcC9jdXN0b20uZWwK aW5kZXggZTVmZTBlYi4uMzY5ODNhYSAxMDA2NDQKLS0tIGEvbGlzcC9jdXN0b20uZWwKKysrIGIv bGlzcC9jdXN0b20uZWwKQEAgLTExMTksNiArMTExOSw3IEBAIGRpcmVjdG9yeS4gIEJ5IGRlZmF1 bHQsIEVtYWNzIHNlYXJjaGVzIGZvciBjdXN0b20gdGhlbWVzIGluIHRoaXMKIGRpcmVjdG9yeSBm aXJzdC0tLXNlZSBgY3VzdG9tLXRoZW1lLWxvYWQtcGF0aCcuIgogICA6dHlwZSAnc3RyaW5nCiAg IDpncm91cCAnY3VzdG9taXplCisgIDppbml0aWFsaXplICdjdXN0b20taW5pdGlhbGl6ZS1kZWxh eQogICA6dmVyc2lvbiAiMjIuMSIpCiAKIChkZWZjdXN0b20gY3VzdG9tLXRoZW1lLWxvYWQtcGF0 aCAobGlzdCAnY3VzdG9tLXRoZW1lLWRpcmVjdG9yeSB0KQpkaWZmIC0tZ2l0IGEvbGlzcC9zdGFy dHVwLmVsIGIvbGlzcC9zdGFydHVwLmVsCmluZGV4IDdmYTkyOWEuLjFjNDAzYzYgMTAwNjQ0Ci0t LSBhL2xpc3Avc3RhcnR1cC5lbAorKysgYi9saXNwL3N0YXJ0dXAuZWwKQEAgLTM5Nyw3ICszOTcs OCBAQCBTZXQgdGhpcyB0byBuaWwgaWYgeW91IHdhbnQgdG8gcHJldmVudCBgYXV0by1zYXZlLWxp c3QtZmlsZS1uYW1lJwogZnJvbSBiZWluZyBpbml0aWFsaXplZC4iCiAgIDp0eXBlICcoY2hvaWNl IChjb25zdCA6dGFnICJEb24ndCByZWNvcmQgYSBzZXNzaW9uJ3MgYXV0byBzYXZlIGxpc3QiIG5p bCkKIAkJIHN0cmluZykKLSAgOmdyb3VwICdhdXRvLXNhdmUpCisgIDpncm91cCAnYXV0by1zYXZl CisgIDppbml0aWFsaXplICdjdXN0b20taW5pdGlhbGl6ZS1kZWxheSkKIAogKGRlZnZhciBlbWFj cy1iYXNpYy1kaXNwbGF5IG5pbCkKIApAQCAtODE0LDYgKzgxNSwxMiBAQCBBbW9uZ3N0IGFub3Ro ZXIgdGhpbmdzLCBpdCBwYXJzZXMgdGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuIgogCSAgKCht ZW1iZXIgdmMgJygibmV2ZXIiICJzaW1wbGUiKSkKIAkgICAoc2V0cSB2ZXJzaW9uLWNvbnRyb2wg J25ldmVyKSkpKQogCisgIDs7IFNldCBgdXNlci1lbWFjcy1kaXJlY3RvcnknIGVhcmx5IHNvIHRo YXQgZGVsYXllZCBpbml0IHZhcmlhYmxlcworICA7OyBjYW4gYmUgdXBkYXRlZC4KKyAgKGxldCAo KHVzZXItZW1hY3MtZGlyZWN0b3J5LS1mcm9tLWVudiAoZ2V0ZW52ICJFTUFDU19VU0VSX0RJUkVD VE9SWSIpKSkKKyAgICAod2hlbiB1c2VyLWVtYWNzLWRpcmVjdG9yeS0tZnJvbS1lbnYKKyAgICAg IChzZXRxIHVzZXItZW1hY3MtZGlyZWN0b3J5IChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IHVzZXIt ZW1hY3MtZGlyZWN0b3J5LS1mcm9tLWVudikpKQorCiAgIDs7ISBUaGlzIGhhcyBiZWVuIGNvbW1l bnRlZCBvdXQ7IEkgY3VycmVudGx5IGZpbmQgdGhlIGJlaGF2aW9yIHdoZW4KICAgOzshIHNwbGl0 LXdpbmRvdy1rZWVwLXBvaW50IGlzIG5pbCBkaXN0dXJiaW5nLCBidXQgaWYgSSBjYW4gZ2V0IHVz ZWQKICAgOzshIHRvIGl0LCB0aGVuIGl0IHdvdWxkIGJlIGJldHRlciB0byBlbGltaW5hdGUgdGhl IG9wdGlvbi4KQEAgLTExMDUsNyArMTExMiwxMCBAQCBwbGVhc2UgY2hlY2sgaXRzIHZhbHVlIikK IAkJICAgICAgOzsgVGhpcyB0ZWxscyBgbG9hZCcgdG8gc3RvcmUgdGhlIGZpbGUgbmFtZSBmb3Vu ZAogCQkgICAgICA7OyBpbnRvIHVzZXItaW5pdC1maWxlLgogCQkgICAgICAoc2V0cSB1c2VyLWlu aXQtZmlsZSB0KQotCQkgICAgICAobG9hZCB1c2VyLWluaXQtZmlsZS0xIHQgdCkKKworICAgICAg ICAgICAgICAgICAgICAgICAgOzsgRG9uJ3QgbG9hZCBgfi8uZW1hY3MnIGlmIEVNQUNTX1VTRVJf RElSRUNUT1JZIHdhcyBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICh1bmxlc3MgdXNlci1l bWFjcy1kaXJlY3RvcnktLWZyb20tZW52CisgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2Fk IHVzZXItaW5pdC1maWxlLTEgdCB0KSkKIAogCQkgICAgICAod2hlbiAoZXEgdXNlci1pbml0LWZp bGUgdCkKIAkJCTs7IElmIHdlIGRpZCBub3QgZmluZCB+Ly5lbWFjcywgdHJ5CkBAIC0xMTE0LDcg KzExMjQsOSBAQCBwbGVhc2UgY2hlY2sgaXRzIHZhbHVlIikKIAkJCSAgICAgICAoZXhwYW5kLWZp bGUtbmFtZQogCQkJCSJpbml0IgogCQkJCShmaWxlLW5hbWUtYXMtZGlyZWN0b3J5Ci0JCQkJIChj b25jYXQgIn4iIGluaXQtZmlsZS11c2VyICIvLmVtYWNzLmQiKSkpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGlmIHVzZXItZW1hY3MtZGlyZWN0b3J5LS1mcm9tLWVudgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci1lbWFjcy1kaXJlY3Rv cnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJ+IiBpbml0 LWZpbGUtdXNlciAiLy5lbWFjcy5kIikpKSkpKQogCQkJICAobG9hZCBvdGhlcmZpbGUgdCB0KQog CiAJCQkgIDs7IElmIHdlIGRpZCBub3QgZmluZCB0aGUgdXNlcidzIGluaXQgZmlsZSwKQEAgLTEy MjcsNyArMTIzOSw3IEBAIHRoZSBgLS1kZWJ1Zy1pbml0JyBvcHRpb24gdG8gdmlldyBhIGNvbXBs ZXRlIGVycm9yIGJhY2t0cmFjZS4iCiAgICAgOzsgYmUgcmVhbGl6ZWQuCiAgICAgKHVubGVzcyAo YW5kIChlcSBzY2FsYWJsZS1mb250cy1hbGxvd2VkIG9sZC1zY2FsYWJsZS1mb250cy1hbGxvd2Vk KQogCQkgKGVxIGZhY2UtaWdub3JlZC1mb250cyBvbGQtZmFjZS1pZ25vcmVkLWZvbnRzKSkKLSAg ICAgIChjbGVhci1mYWNlLWNhY2hlKSkpCisgICAgICAgIChjbGVhci1mYWNlLWNhY2hlKSkpKQog CiAgIDs7IElmIGFueSBwYWNrYWdlIGRpcmVjdG9yeSBleGlzdHMsIGluaXRpYWxpemUgdGhlIHBh Y2thZ2Ugc3lzdGVtLgogICAoYW5kIHVzZXItaW5pdC1maWxlCi0tIAoxLjcuMi41Cgo= --001a11352cacf7a81b0512b96275 Content-Type: text/x-patch; charset=US-ASCII; name="EMACS_USER_DIRECTORY.patch" Content-Disposition: attachment; filename="EMACS_USER_DIRECTORY.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i7zvqibi1 RnJvbSBlMTVmZDMxMjBhOTk1ZTM4NzA4Y2E3M2QyOTM5NzNkZDhlNTk2YjIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/RnJhbj1DMz1BN29pcz0yMEY9QzM9QTl2b3R0 ZT89IDxmcmFuY29pcy5mZXZvdHRlQGVuc3RhLm9yZz4KRGF0ZTogVGh1LCAyIEFwciAyMDE1IDA5 OjE3OjAzICswMjAwClN1YmplY3Q6IFtQQVRDSF0gTG9vayBmb3IgYW4gYEVNQUNTX1VTRVJfRElS RUNUT1JZJyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KClRoaXMgc2V0cyBgdXNlci1lbWFjcy1kaXJl Y3RvcnknIGFuZCBsb29rcyBmb3IgYGluaXQuZWwnIGluIGl0LgoKRml4ZXM6IGJ1ZyMxNTUzOQot LS0KIGRvYy9lbWFjcy9jbWRhcmdzLnRleGkgfCAgICA5ICstCiBkb2MvZW1hY3MvY3VzdG9tLnRl eGkgIHwgICAgOCArCiBsaXNwL2N1c3RvbS5lbCAgICAgICAgIHwgICAgMSArCiBsaXNwL3N0YXJ0 dXAuZWwgICAgICAgIHwgIDgzMiArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgNDM5IGluc2VydGlvbnMoKyksIDQxMSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2MvZW1hY3MvY21kYXJncy50ZXhpIGIvZG9jL2VtYWNz L2NtZGFyZ3MudGV4aQppbmRleCAwNzFjZDY4Li4zMGQzNDcyIDEwMDY0NAotLS0gYS9kb2MvZW1h Y3MvY21kYXJncy50ZXhpCisrKyBiL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkKQEAgLTM0OSw3ICsz NDksOSBAQCBEbyBub3QgcmVsb2FkIGFueSBzYXZlZCBkZXNrdG9wLiAgQHhyZWZ7U2F2aW5nIEVt YWNzIFNlc3Npb25zfS4KIEBvcGluZGV4IC0tdXNlcgogQGNpbmRleCBsb2FkIGluaXQgZmlsZSBv ZiBhbm90aGVyIHVzZXIKIExvYWQgQHZhcnt1c2VyfSdzIGluaXRpYWxpemF0aW9uIGZpbGUgaW5z dGVhZCBvZiB5b3VyCi1vd25AZm9vdG5vdGV7VGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiBN Uy1XaW5kb3dzLn0uCitvd25AZm9vdG5vdGV7VGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiBN Uy1XaW5kb3dzLCBub3Igd2hlbiB0aGUKK0BlbnZ7RU1BQ1NfVVNFUl9ESVJFQ1RPUll9IGVudmly b25tZW50IHZhcmlhYmxlIGlzIHNldCAoQHB4cmVme0dlbmVyYWwKK1ZhcmlhYmxlc30pLn0uCiAK IEBpdGVtIC0tZGVidWctaW5pdAogQG9waW5kZXggLS1kZWJ1Zy1pbml0CkBAIC02NDIsNiArNjQ0 LDExIEBAIGRvZXMgbm90IHVzZSBAZW52e1RafSBhdCBhbGwuCiBAdmluZGV4IFVTRVIsIGVudmly b25tZW50IHZhcmlhYmxlCiBUaGUgdXNlcidzIGxvZ2luIG5hbWUuICBTZWUgYWxzbyBAZW52e0xP R05BTUV9LiAgT24gTVMtRE9TLCB0aGlzCiBkZWZhdWx0cyB0byBAc2FtcHtyb290fS4KK0BpdGVt IEVNQUNTX1VTRVJfRElSRUNUT1JZCitUaGlzIHNwZWNpZmllcyBhIGRpcmVjdG9yeSBpbiB3aGlj aCB0aGUgaW5pdGlhbGl6YXRpb24gZmlsZSB3aWxsIGJlCitsb29rZWQgZm9yOyBAeHJlZntGaW5k IEluaXR9LiBUaGlzIGRpcmVjdG9yeSB3aWxsIGFsc28gYmUgdXNlZCBhcyB0aGUKK2RlZmF1bHQg cGxhY2Ugd2hlcmUgdXNlci1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGRhdGEgd2lsbCBiZSBzdG9y ZWQ7CitAeHJlZntTdGFuZGFyZCBGaWxlIE5hbWVzLCwsIGVsaXNwfS4KIEBpdGVtIFZFUlNJT05f Q09OVFJPTAogQHZpbmRleCBWRVJTSU9OX0NPTlRST0wsIGVudmlyb25tZW50IHZhcmlhYmxlCiBV c2VkIHRvIGluaXRpYWxpemUgdGhlIEBjb2Rle3ZlcnNpb24tY29udHJvbH0gdmFyaWFibGUgKEBw eHJlZntCYWNrdXAKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9jdXN0b20udGV4aSBiL2RvYy9lbWFj cy9jdXN0b20udGV4aQppbmRleCA5ZmQ4MjNiLi4xZTFkNDgyIDEwMDY0NAotLS0gYS9kb2MvZW1h Y3MvY3VzdG9tLnRleGkKKysrIGIvZG9jL2VtYWNzL2N1c3RvbS50ZXhpCkBAIC0yNTE2LDYgKzI1 MTYsMTQgQEAgb3RoZXJ3aXNlLCBpdCBsb29rcyB1cCB0aGUgaG9tZSBkaXJlY3RvcnkgY29ycmVz cG9uZGluZyB0byB0aGF0IHVzZXIKIG5hbWUgaW4gdGhlIHN5c3RlbSdzIGRhdGEgYmFzZSBvZiB1 c2Vycy4KIEBjICBMb2NhbFdvcmRzOiAgYmFja3RhYgogCisgIFRoZSB3aG9sZSBtZWNoYW5pc20g ZGVzY3JpYmVkIGFib3ZlIGlzIGJ5cGFzc2VkIGlmIHRoZQorQGVudntFTUFDU19VU0VSX0RJUkVD VE9SWX0gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc3BlY2lmaWVkLCBpbiB3aGljaAorY2FzZSBF bWFjcyBkaXJlY3RseSBsb29rcyBmb3IgQGZpbGV7aW5pdC5lbH0gaW5zaWRlIHRoZSBkaXJlY3Rv cnkKK3NwZWNpZmllZCBieSBAZW52e0VNQUNTX1VTRVJfRElSRUNUT1JZfSAoQHB4cmVme0dlbmVy YWwgVmFyaWFibGVzfSkuCitUaGlzIGRpcmVjdG9yeSBpcyBhbHNvIHVzZWQgdG8gaG9sZCB1c2Vy LXNwZWNpZmljIGNvbmZpZ3VyYXRpb24KKyhAcHhyZWZ7U3RhbmRhcmQgRmlsZSBOYW1lcywsLCBl bGlzcH0pLgorCisKIEBub2RlIEluaXQgTm9uLUFTQ0lJCiBAc3Vic2VjdGlvbiBOb24tQGFjcm9u eW17QVNDSUl9IENoYXJhY3RlcnMgaW4gSW5pdCBGaWxlcwogQGNpbmRleCBpbnRlcm5hdGlvbmFs IGNoYXJhY3RlcnMgaW4gQGZpbGV7LmVtYWNzfQpkaWZmIC0tZ2l0IGEvbGlzcC9jdXN0b20uZWwg Yi9saXNwL2N1c3RvbS5lbAppbmRleCBlNWZlMGViLi4zNjk4M2FhIDEwMDY0NAotLS0gYS9saXNw L2N1c3RvbS5lbAorKysgYi9saXNwL2N1c3RvbS5lbApAQCAtMTExOSw2ICsxMTE5LDcgQEAgZGly ZWN0b3J5LiAgQnkgZGVmYXVsdCwgRW1hY3Mgc2VhcmNoZXMgZm9yIGN1c3RvbSB0aGVtZXMgaW4g dGhpcwogZGlyZWN0b3J5IGZpcnN0LS0tc2VlIGBjdXN0b20tdGhlbWUtbG9hZC1wYXRoJy4iCiAg IDp0eXBlICdzdHJpbmcKICAgOmdyb3VwICdjdXN0b21pemUKKyAgOmluaXRpYWxpemUgJ2N1c3Rv bS1pbml0aWFsaXplLWRlbGF5CiAgIDp2ZXJzaW9uICIyMi4xIikKIAogKGRlZmN1c3RvbSBjdXN0 b20tdGhlbWUtbG9hZC1wYXRoIChsaXN0ICdjdXN0b20tdGhlbWUtZGlyZWN0b3J5IHQpCmRpZmYg LS1naXQgYS9saXNwL3N0YXJ0dXAuZWwgYi9saXNwL3N0YXJ0dXAuZWwKaW5kZXggN2ZhOTI5YS4u MWM0MDNjNiAxMDA2NDQKLS0tIGEvbGlzcC9zdGFydHVwLmVsCisrKyBiL2xpc3Avc3RhcnR1cC5l bApAQCAtMzk3LDcgKzM5Nyw4IEBAIFNldCB0aGlzIHRvIG5pbCBpZiB5b3Ugd2FudCB0byBwcmV2 ZW50IGBhdXRvLXNhdmUtbGlzdC1maWxlLW5hbWUnCiBmcm9tIGJlaW5nIGluaXRpYWxpemVkLiIK ICAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIkRvbid0IHJlY29yZCBhIHNlc3Npb24ncyBh dXRvIHNhdmUgbGlzdCIgbmlsKQogCQkgc3RyaW5nKQotICA6Z3JvdXAgJ2F1dG8tc2F2ZSkKKyAg Omdyb3VwICdhdXRvLXNhdmUKKyAgOmluaXRpYWxpemUgJ2N1c3RvbS1pbml0aWFsaXplLWRlbGF5 KQogCiAoZGVmdmFyIGVtYWNzLWJhc2ljLWRpc3BsYXkgbmlsKQogCkBAIC04MTQsNDIwICs4MTUs NDMxIEBAIEFtb25nc3QgYW5vdGhlciB0aGluZ3MsIGl0IHBhcnNlcyB0aGUgY29tbWFuZC1saW5l IGFyZ3VtZW50cy4iCiAJICAoKG1lbWJlciB2YyAnKCJuZXZlciIgInNpbXBsZSIpKQogCSAgIChz ZXRxIHZlcnNpb24tY29udHJvbCAnbmV2ZXIpKSkpCiAKLSAgOzshIFRoaXMgaGFzIGJlZW4gY29t bWVudGVkIG91dDsgSSBjdXJyZW50bHkgZmluZCB0aGUgYmVoYXZpb3Igd2hlbgotICA7OyEgc3Bs aXQtd2luZG93LWtlZXAtcG9pbnQgaXMgbmlsIGRpc3R1cmJpbmcsIGJ1dCBpZiBJIGNhbiBnZXQg dXNlZAotICA7OyEgdG8gaXQsIHRoZW4gaXQgd291bGQgYmUgYmV0dGVyIHRvIGVsaW1pbmF0ZSB0 aGUgb3B0aW9uLgotICA7OyEgOzsgQ2hvb3NlIGEgZ29vZCBkZWZhdWx0IHZhbHVlIGZvciBzcGxp dC13aW5kb3cta2VlcC1wb2ludC4KLSAgOzshIChzZXRxIHNwbGl0LXdpbmRvdy1rZWVwLXBvaW50 ICg+IGJhdWQtcmF0ZSAyNDAwKSkKLQotICA7OyBDb252ZXJ0IHByZWxvYWRlZCBmaWxlIG5hbWVz IGluIGxvYWQtaGlzdG9yeSB0byBhYnNvbHV0ZS4KLSAgKGxldCAoKHNpbXBsZS1maWxlLW5hbWUK LQkgOzsgTG9vayBmb3Igc2ltcGxlLmVsIG9yIHNpbXBsZS5lbGMgYW5kIHVzZSB0aGVpciBkaXJl Y3RvcnkKLQkgOzsgYXMgdGhlIHBsYWNlIHdoZXJlIGFsbCBMaXNwIGZpbGVzIGxpdmUuCi0JIChs b2NhdGUtZmlsZSAic2ltcGxlIiBsb2FkLXBhdGggKGdldC1sb2FkLXN1ZmZpeGVzKSkpCi0JbGlz cC1kaXIpCi0gICAgOzsgRG9uJ3QgYWJvcnQgaWYgc2ltcGxlLmVsIGNhbm5vdCBiZSBmb3VuZCwg YnV0IHByaW50IGEgd2FybmluZy4KLSAgICA7OyBBbHRob3VnaCBpbiBtb3N0IHVzYWdlIHdlIGFy ZSBnb2luZyB0byBjcnlwdGljYWxseSBhYm9ydCBhIG1vbWVudAotICAgIDs7IGxhdGVyIGFueXdh eSwgZHVlIHRvIG1pc3NpbmcgcmVxdWlyZWQgYmlkaSBkYXRhIGZpbGVzIChlZyBidWcjMTM0MzAp LgotICAgIChpZiAobnVsbCBzaW1wbGUtZmlsZS1uYW1lKQotCShsZXQgKChzdGFuZGFyZC1vdXRw dXQgJ2V4dGVybmFsLWRlYnVnZ2luZy1vdXRwdXQpCi0JICAgICAgKGxpc3BkaXIgKGV4cGFuZC1m aWxlLW5hbWUgIi4uL2xpc3AiIGRhdGEtZGlyZWN0b3J5KSkpCi0JICAocHJpbmMgIldhcm5pbmc6 IENvdWxkIG5vdCBmaW5kIHNpbXBsZS5lbCBvciBzaW1wbGUuZWxjIikKLQkgICh0ZXJwcmkpCi0J ICAod2hlbiAoZ2V0ZW52ICJFTUFDU0xPQURQQVRIIikKLQkgICAgKHByaW5jICJUaGUgRU1BQ1NM T0FEUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQsIFwKKyAgOzsgU2V0IGB1c2VyLWVt YWNzLWRpcmVjdG9yeScgZWFybHkgc28gdGhhdCBkZWxheWVkIGluaXQgdmFyaWFibGVzCisgIDs7 IGNhbiBiZSB1cGRhdGVkLgorICAobGV0ICgodXNlci1lbWFjcy1kaXJlY3RvcnktLWZyb20tZW52 IChnZXRlbnYgIkVNQUNTX1VTRVJfRElSRUNUT1JZIikpKQorICAgICh3aGVuIHVzZXItZW1hY3Mt ZGlyZWN0b3J5LS1mcm9tLWVudgorICAgICAgKHNldHEgdXNlci1lbWFjcy1kaXJlY3RvcnkgKGZp bGUtbmFtZS1hcy1kaXJlY3RvcnkgdXNlci1lbWFjcy1kaXJlY3RvcnktLWZyb20tZW52KSkpCisK KyAgICA7OyEgVGhpcyBoYXMgYmVlbiBjb21tZW50ZWQgb3V0OyBJIGN1cnJlbnRseSBmaW5kIHRo ZSBiZWhhdmlvciB3aGVuCisgICAgOzshIHNwbGl0LXdpbmRvdy1rZWVwLXBvaW50IGlzIG5pbCBk aXN0dXJiaW5nLCBidXQgaWYgSSBjYW4gZ2V0IHVzZWQKKyAgICA7OyEgdG8gaXQsIHRoZW4gaXQg d291bGQgYmUgYmV0dGVyIHRvIGVsaW1pbmF0ZSB0aGUgb3B0aW9uLgorICAgIDs7ISA7OyBDaG9v c2UgYSBnb29kIGRlZmF1bHQgdmFsdWUgZm9yIHNwbGl0LXdpbmRvdy1rZWVwLXBvaW50LgorICAg IDs7ISAoc2V0cSBzcGxpdC13aW5kb3cta2VlcC1wb2ludCAoPiBiYXVkLXJhdGUgMjQwMCkpCisK KyAgICA7OyBDb252ZXJ0IHByZWxvYWRlZCBmaWxlIG5hbWVzIGluIGxvYWQtaGlzdG9yeSB0byBh YnNvbHV0ZS4KKyAgICAobGV0ICgoc2ltcGxlLWZpbGUtbmFtZQorICAgICAgICAgICA7OyBMb29r IGZvciBzaW1wbGUuZWwgb3Igc2ltcGxlLmVsYyBhbmQgdXNlIHRoZWlyIGRpcmVjdG9yeQorICAg ICAgICAgICA7OyBhcyB0aGUgcGxhY2Ugd2hlcmUgYWxsIExpc3AgZmlsZXMgbGl2ZS4KKyAgICAg ICAgICAgKGxvY2F0ZS1maWxlICJzaW1wbGUiIGxvYWQtcGF0aCAoZ2V0LWxvYWQtc3VmZml4ZXMp KSkKKyAgICAgICAgICBsaXNwLWRpcikKKyAgICAgIDs7IERvbid0IGFib3J0IGlmIHNpbXBsZS5l bCBjYW5ub3QgYmUgZm91bmQsIGJ1dCBwcmludCBhIHdhcm5pbmcuCisgICAgICA7OyBBbHRob3Vn aCBpbiBtb3N0IHVzYWdlIHdlIGFyZSBnb2luZyB0byBjcnlwdGljYWxseSBhYm9ydCBhIG1vbWVu dAorICAgICAgOzsgbGF0ZXIgYW55d2F5LCBkdWUgdG8gbWlzc2luZyByZXF1aXJlZCBiaWRpIGRh dGEgZmlsZXMgKGVnIGJ1ZyMxMzQzMCkuCisgICAgICAoaWYgKG51bGwgc2ltcGxlLWZpbGUtbmFt ZSkKKyAgICAgICAgICAobGV0ICgoc3RhbmRhcmQtb3V0cHV0ICdleHRlcm5hbC1kZWJ1Z2dpbmct b3V0cHV0KQorICAgICAgICAgICAgICAgIChsaXNwZGlyIChleHBhbmQtZmlsZS1uYW1lICIuLi9s aXNwIiBkYXRhLWRpcmVjdG9yeSkpKQorICAgICAgICAgICAgKHByaW5jICJXYXJuaW5nOiBDb3Vs ZCBub3QgZmluZCBzaW1wbGUuZWwgb3Igc2ltcGxlLmVsYyIpCisgICAgICAgICAgICAodGVycHJp KQorICAgICAgICAgICAgKHdoZW4gKGdldGVudiAiRU1BQ1NMT0FEUEFUSCIpCisgICAgICAgICAg ICAgIChwcmluYyAiVGhlIEVNQUNTTE9BRFBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0 LCBcCiBwbGVhc2UgY2hlY2sgaXRzIHZhbHVlIikKLQkgICAgKHRlcnByaSkpCi0JICAodW5sZXNz IChmaWxlLXJlYWRhYmxlLXAgbGlzcGRpcikKLQkgICAgKHByaW5jIChmb3JtYXQgIkxpc3AgZGly ZWN0b3J5ICVzIG5vdCByZWFkYWJsZT8iIGxpc3BkaXIpKQotCSAgICAodGVycHJpKSkpCi0gICAg ICAoc2V0cSBsaXNwLWRpciAoZmlsZS10cnVlbmFtZSAoZmlsZS1uYW1lLWRpcmVjdG9yeSBzaW1w bGUtZmlsZS1uYW1lKSkpCi0gICAgICAoc2V0cSBsb2FkLWhpc3RvcnkKLQkgICAgKG1hcGNhciAo bGFtYmRhIChlbHQpCi0JCSAgICAgIChpZiAoYW5kIChzdHJpbmdwIChjYXIgZWx0KSkKLQkJCSAg ICAgICAobm90IChmaWxlLW5hbWUtYWJzb2x1dGUtcCAoY2FyIGVsdCkpKSkKLQkJCSAgKGNvbnMg KGNvbmNhdCBsaXNwLWRpcgotCQkJCQkoY2FyIGVsdCkpCi0JCQkJKGNkciBlbHQpKQotCQkJZWx0 KSkKLQkJICAgIGxvYWQtaGlzdG9yeSkpKSkKLQotICA7OyBDb252ZXJ0IHRoZSBhcmd1bWVudHMg dG8gRW1hY3MgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24uCi0gIChsZXQgKChhcmdzIGNvbW1hbmQt bGluZS1hcmdzKSkKLSAgICAod2hpbGUgYXJncwotICAgICAgKHNldGNhciBhcmdzCi0JICAgICAg KGRlY29kZS1jb2Rpbmctc3RyaW5nIChjYXIgYXJncykgbG9jYWxlLWNvZGluZy1zeXN0ZW0gdCkp Ci0gICAgICAocG9wIGFyZ3MpKSkKLQotICAobGV0ICgoZG9uZSBuaWwpCi0JKGFyZ3MgKGNkciBj b21tYW5kLWxpbmUtYXJncykpCi0JZGlzcGxheS1hcmcpCi0KLSAgICA7OyBGaWd1cmUgb3V0IHdo aWNoIHVzZXIncyBpbml0IGZpbGUgdG8gbG9hZCwKLSAgICA7OyBlaXRoZXIgZnJvbSB0aGUgZW52 aXJvbm1lbnQgb3IgZnJvbSB0aGUgb3B0aW9ucy4KLSAgICAoc2V0cSBpbml0LWZpbGUtdXNlciAo aWYgbm9uaW50ZXJhY3RpdmUgbmlsICh1c2VyLWxvZ2luLW5hbWUpKSkKLSAgICA7OyBJZiB1c2Vy IGhhcyBub3QgZG9uZSBzdSwgdXNlIGN1cnJlbnQgJEhPTUUgdG8gZmluZCAuZW1hY3MuCi0gICAg KGFuZCBpbml0LWZpbGUtdXNlcgotICAgICAgICAgKGVxdWFsIGluaXQtZmlsZS11c2VyICh1c2Vy LXJlYWwtbG9naW4tbmFtZSkpCi0JIChzZXRxIGluaXQtZmlsZS11c2VyICIiKSkKLQotICAgIDs7 IFByb2Nlc3MgdGhlIGNvbW1hbmQtbGluZSBhcmdzLCBhbmQgZGVsZXRlIHRoZSBhcmd1bWVudHMK LSAgICA7OyBwcm9jZXNzZWQuICBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgd2F5IG1haW4g aW4gZW1hY3MuYwotICAgIDs7IGRvZXMgdGhpbmdzLgotICAgICh3aGlsZSAoYW5kIChub3QgZG9u ZSkgYXJncykKLSAgICAgIChsZXQqICgobG9uZ29wdHMgJygoIi0tbm8taW5pdC1maWxlIikgKCIt LW5vLXNpdGUtZmlsZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgKCItLW5vLXgtcmVzb3Vy Y2VzIikgKCItLWRlYnVnLWluaXQiKQotICAgICAgICAgICAgICAgICAgICAgICAgICgiLS11c2Vy IikgKCItLWljb25pYyIpICgiLS1pY29uLXR5cGUiKSAoIi0tcXVpY2siKQotCQkJICgiLS1uby1i bGlua2luZy1jdXJzb3IiKSAoIi0tYmFzaWMtZGlzcGxheSIpKSkKLSAgICAgICAgICAgICAoYXJn aSAocG9wIGFyZ3MpKQotICAgICAgICAgICAgIChvcmlnLWFyZ2kgYXJnaSkKLSAgICAgICAgICAg ICBhcmd2YWwpCi0JOzsgSGFuZGxlIC0tT1BUSU9OPVZBTFVFIGZvcm1hdC4KLQkod2hlbiAoc3Ry aW5nLW1hdGNoICJcXGBcXCgtLVtePV0qXFwpPSIgYXJnaSkKLQkgIChzZXRxIGFyZ3ZhbCAoc3Vi c3RyaW5nIGFyZ2kgKG1hdGNoLWVuZCAwKSkKLSAgICAgICAgICAgICAgICBhcmdpIChtYXRjaC1z dHJpbmcgMSBhcmdpKSkpCi0JKHdoZW4gKHN0cmluZy1tYXRjaCAiXFxgLS0uIiBvcmlnLWFyZ2kp Ci0JICAobGV0ICgoY29tcGxldGlvbiAodHJ5LWNvbXBsZXRpb24gYXJnaSBsb25nb3B0cykpKQot CSAgICAoY29uZCAoKGVxIGNvbXBsZXRpb24gdCkKLQkJICAgKHNldHEgYXJnaSAoc3Vic3RyaW5n IGFyZ2kgMSkpKQotCQkgICgoc3RyaW5ncCBjb21wbGV0aW9uKQotCQkgICAobGV0ICgoZWx0IChh c3NvYyBjb21wbGV0aW9uIGxvbmdvcHRzKSkpCi0JCSAgICAgKHVubGVzcyBlbHQKLQkJICAgICAg IChlcnJvciAiT3B0aW9uIGAlcycgaXMgYW1iaWd1b3VzIiBhcmdpKSkKLQkJICAgICAoc2V0cSBh cmdpIChzdWJzdHJpbmcgKGNhciBlbHQpIDEpKSkpCi0JCSAgKHQKLQkJICAgKHNldHEgYXJndmFs IG5pbAotCQkJIGFyZ2kgb3JpZy1hcmdpKSkpKSkKLQkoY29uZAotCSA7OyBUaGUgLS1kaXNwbGF5 IGFyZyBpcyBoYW5kbGVkIHBhcnRseSBpbiBDLCBwYXJ0bHkgaW4gTGlzcC4KLQkgOzsgV2hlbiBp dCBzaG93cyB1cCBoZXJlLCB3ZSBqdXN0IHB1dCBpdCBiYWNrIHRvIGJlIGhhbmRsZWQKLQkgOzsg YnkgYGNvbW1hbmQtbGluZS0xJy4KLQkgKChtZW1iZXIgYXJnaSAnKCItZCIgIi1kaXNwbGF5Iikp Ci0JICAoc2V0cSBkaXNwbGF5LWFyZyAobGlzdCBhcmdpIChwb3AgYXJncykpKSkKLQkgKChtZW1i ZXIgYXJnaSAnKCItUSIgIi1xdWljayIpKQotCSAgKHNldHEgaW5pdC1maWxlLXVzZXIgbmlsCi0J CXNpdGUtcnVuLWZpbGUgbmlsCi0gICAgICAgICAgICAgICAgaW5oaWJpdC14LXJlc291cmNlcyB0 KSkKLSAgICAgICAgICgobWVtYmVyIGFyZ2kgJygiLW5vLXgtcmVzb3VyY2VzIikpCi0gICAgICAg ICAgKHNldHEgaW5oaWJpdC14LXJlc291cmNlcyB0KSkKLQkgKChtZW1iZXIgYXJnaSAnKCItRCIg Ii1iYXNpYy1kaXNwbGF5IikpCi0JICAoc2V0cSBuby1ibGlua2luZy1jdXJzb3IgdAotCQllbWFj cy1iYXNpYy1kaXNwbGF5IHQpCi0JICAocHVzaCAnKHZlcnRpY2FsLXNjcm9sbC1iYXJzIC4gbmls KSBpbml0aWFsLWZyYW1lLWFsaXN0KSkKLQkgKChtZW1iZXIgYXJnaSAnKCItcSIgIi1uby1pbml0 LWZpbGUiKSkKLQkgIChzZXRxIGluaXQtZmlsZS11c2VyIG5pbCkpCi0JICgobWVtYmVyIGFyZ2kg JygiLXUiICItdXNlciIpKQotCSAgKHNldHEgaW5pdC1maWxlLXVzZXIgKG9yIGFyZ3ZhbCAocG9w IGFyZ3MpKQotCQlhcmd2YWwgbmlsKSkKLQkgKChlcXVhbCBhcmdpICItbm8tc2l0ZS1maWxlIikK LQkgIChzZXRxIHNpdGUtcnVuLWZpbGUgbmlsKSkKLQkgKChlcXVhbCBhcmdpICItZGVidWctaW5p dCIpCi0JICAoc2V0cSBpbml0LWZpbGUtZGVidWcgdCkpCi0JICgoZXF1YWwgYXJnaSAiLWljb25p YyIpCi0JICAocHVzaCAnKHZpc2liaWxpdHkgLiBpY29uKSBpbml0aWFsLWZyYW1lLWFsaXN0KSkK LQkgKChtZW1iZXIgYXJnaSAnKCItbmJjIiAiLW5vLWJsaW5raW5nLWN1cnNvciIpKQotCSAgKHNl dHEgbm8tYmxpbmtpbmctY3Vyc29yIHQpKQotCSA7OyBQdXNoIHRoZSBwb3BwZWQgYXJnIGJhY2sg b24gdGhlIGxpc3Qgb2YgYXJndW1lbnRzLgotCSAodAotICAgICAgICAgIChwdXNoIGFyZ2kgYXJn cykKLSAgICAgICAgICAoc2V0cSBkb25lIHQpKSkKLQk7OyBXYXMgYXJndmFsIHNldCBidXQgbm90 IHVzZWQ/Ci0JKGFuZCBhcmd2YWwKLQkgICAgIChlcnJvciAiT3B0aW9uIGAlcycgZG9lc24ndCBh bGxvdyBhbiBhcmd1bWVudCIgYXJnaSkpKSkKLQotICAgIDs7IFJlLWF0dGFjaCB0aGUgLS1kaXNw bGF5IGFyZy4KLSAgICAoYW5kIGRpc3BsYXktYXJnIChzZXRxIGFyZ3MgKGFwcGVuZCBkaXNwbGF5 LWFyZyBhcmdzKSkpCi0KLSAgICA7OyBSZS1hdHRhY2ggdGhlIHByb2dyYW0gbmFtZSB0byB0aGUg ZnJvbnQgb2YgdGhlIGFyZyBsaXN0LgotICAgIChhbmQgY29tbWFuZC1saW5lLWFyZ3MKLSAgICAg ICAgIChzZXRjZHIgY29tbWFuZC1saW5lLWFyZ3MgYXJncykpKQotCi0gIDs7IE1ha2Ugc3VyZSB3 aW5kb3cgc3lzdGVtJ3MgaW5pdCBmaWxlIHdhcyBsb2FkZWQgaW4gbG9hZHVwLmVsIGlmCi0gIDs7 IHVzaW5nIGEgd2luZG93IHN5c3RlbS4KLSAgOzsgSW5pdGlhbGl6ZSB0aGUgd2luZG93LXN5c3Rl bSBvbmx5IGFmdGVyIHByb2Nlc3NpbmcgdGhlIGNvbW1hbmQtbGluZQotICA7OyBhcmdzIHNvIHRo YXQgLVEgY2FuIGluZmx1ZW5jZSB0aGlzIGluaXRpYWxpemF0aW9uLgotICAoY29uZGl0aW9uLWNh c2UgZXJyb3IKLSAgICAodW5sZXNzIG5vbmludGVyYWN0aXZlCi0gICAgICAoaWYgKGFuZCBpbml0 aWFsLXdpbmRvdy1zeXN0ZW0KLQkgICAgICAgKG5vdCAoZmVhdHVyZXAKLQkJICAgICAoaW50ZXJu Ci0JCSAgICAgIChjb25jYXQgKHN5bWJvbC1uYW1lIGluaXRpYWwtd2luZG93LXN5c3RlbSkgIi13 aW4iKSkpKSkKLQkgIChlcnJvciAiVW5zdXBwb3J0ZWQgd2luZG93IHN5c3RlbSBgJXMnIiBpbml0 aWFsLXdpbmRvdy1zeXN0ZW0pKQotICAgICAgOzsgUHJvY2VzcyB3aW5kb3ctc3lzdGVtIHNwZWNp ZmljIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzLgotICAgICAgKHNldHEgY29tbWFuZC1saW5lLWFy Z3MKLQkgICAgKGZ1bmNhbGwKLSAgICAgICAgICAgICAoZ3VpLW1ldGhvZCBoYW5kbGUtYXJncy1m dW5jdGlvbiBpbml0aWFsLXdpbmRvdy1zeXN0ZW0pCi0JICAgICBjb21tYW5kLWxpbmUtYXJncykp Ci0gICAgICA7OyBJbml0aWFsaXplIHRoZSB3aW5kb3cgc3lzdGVtLiAoT3BlbiBjb25uZWN0aW9u LCBldGMuKQotICAgICAgKGZ1bmNhbGwKLSAgICAgICAoZ3VpLW1ldGhvZCB3aW5kb3ctc3lzdGVt LWluaXRpYWxpemF0aW9uIGluaXRpYWwtd2luZG93LXN5c3RlbSkpCi0gICAgICAocHV0IGluaXRp YWwtd2luZG93LXN5c3RlbSAnd2luZG93LXN5c3RlbS1pbml0aWFsaXplZCB0KSkKLSAgICA7OyBJ ZiB0aGVyZSB3YXMgYW4gZXJyb3IsIHByaW50IHRoZSBlcnJvciBtZXNzYWdlIGFuZCBleGl0Lgot ICAgIChlcnJvcgotICAgICAocHJpbmMKLSAgICAgIChpZiAoZXEgKGNhciBlcnJvcikgJ2Vycm9y KQotCSAgKGFwcGx5ICdjb25jYXQgKGNkciBlcnJvcikpCi0JKGlmIChtZW1xICdmaWxlLWVycm9y IChnZXQgKGNhciBlcnJvcikgJ2Vycm9yLWNvbmRpdGlvbnMpKQotCSAgICAoZm9ybWF0ICIlczog JXMiCi0gICAgICAgICAgICAgICAgICAgIChudGggMSBlcnJvcikKKyAgICAgICAgICAgICAgKHRl cnByaSkpCisgICAgICAgICAgICAodW5sZXNzIChmaWxlLXJlYWRhYmxlLXAgbGlzcGRpcikKKyAg ICAgICAgICAgICAgKHByaW5jIChmb3JtYXQgIkxpc3AgZGlyZWN0b3J5ICVzIG5vdCByZWFkYWJs ZT8iIGxpc3BkaXIpKQorICAgICAgICAgICAgICAodGVycHJpKSkpCisgICAgICAgIChzZXRxIGxp c3AtZGlyIChmaWxlLXRydWVuYW1lIChmaWxlLW5hbWUtZGlyZWN0b3J5IHNpbXBsZS1maWxlLW5h bWUpKSkKKyAgICAgICAgKHNldHEgbG9hZC1oaXN0b3J5CisgICAgICAgICAgICAgIChtYXBjYXIg KGxhbWJkYSAoZWx0KQorICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChhbmQgKHN0cmluZ3Ag KGNhciBlbHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZmlsZS1u YW1lLWFic29sdXRlLXAgKGNhciBlbHQpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNvbnMgKGNvbmNhdCBsaXNwLWRpcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNhciBlbHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj ZHIgZWx0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZWx0KSkKKyAgICAgICAgICAgICAg ICAgICAgICBsb2FkLWhpc3RvcnkpKSkpCisKKyAgICA7OyBDb252ZXJ0IHRoZSBhcmd1bWVudHMg dG8gRW1hY3MgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24uCisgICAgKGxldCAoKGFyZ3MgY29tbWFu ZC1saW5lLWFyZ3MpKQorICAgICAgKHdoaWxlIGFyZ3MKKyAgICAgICAgKHNldGNhciBhcmdzCisg ICAgICAgICAgICAgICAgKGRlY29kZS1jb2Rpbmctc3RyaW5nIChjYXIgYXJncykgbG9jYWxlLWNv ZGluZy1zeXN0ZW0gdCkpCisgICAgICAgIChwb3AgYXJncykpKQorCisgICAgKGxldCAoKGRvbmUg bmlsKQorICAgICAgICAgIChhcmdzIChjZHIgY29tbWFuZC1saW5lLWFyZ3MpKQorICAgICAgICAg IGRpc3BsYXktYXJnKQorCisgICAgICA7OyBGaWd1cmUgb3V0IHdoaWNoIHVzZXIncyBpbml0IGZp bGUgdG8gbG9hZCwKKyAgICAgIDs7IGVpdGhlciBmcm9tIHRoZSBlbnZpcm9ubWVudCBvciBmcm9t IHRoZSBvcHRpb25zLgorICAgICAgKHNldHEgaW5pdC1maWxlLXVzZXIgKGlmIG5vbmludGVyYWN0 aXZlIG5pbCAodXNlci1sb2dpbi1uYW1lKSkpCisgICAgICA7OyBJZiB1c2VyIGhhcyBub3QgZG9u ZSBzdSwgdXNlIGN1cnJlbnQgJEhPTUUgdG8gZmluZCAuZW1hY3MuCisgICAgICAoYW5kIGluaXQt ZmlsZS11c2VyCisgICAgICAgICAgIChlcXVhbCBpbml0LWZpbGUtdXNlciAodXNlci1yZWFsLWxv Z2luLW5hbWUpKQorICAgICAgICAgICAoc2V0cSBpbml0LWZpbGUtdXNlciAiIikpCisKKyAgICAg IDs7IFByb2Nlc3MgdGhlIGNvbW1hbmQtbGluZSBhcmdzLCBhbmQgZGVsZXRlIHRoZSBhcmd1bWVu dHMKKyAgICAgIDs7IHByb2Nlc3NlZC4gIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSB3YXkg bWFpbiBpbiBlbWFjcy5jCisgICAgICA7OyBkb2VzIHRoaW5ncy4KKyAgICAgICh3aGlsZSAoYW5k IChub3QgZG9uZSkgYXJncykKKyAgICAgICAgKGxldCogKChsb25nb3B0cyAnKCgiLS1uby1pbml0 LWZpbGUiKSAoIi0tbm8tc2l0ZS1maWxlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgi LS1uby14LXJlc291cmNlcyIpICgiLS1kZWJ1Zy1pbml0IikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICgiLS11c2VyIikgKCItLWljb25pYyIpICgiLS1pY29uLXR5cGUiKSAoIi0tcXVpY2si KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCItLW5vLWJsaW5raW5nLWN1cnNvciIpICgi LS1iYXNpYy1kaXNwbGF5IikpKQorICAgICAgICAgICAgICAgKGFyZ2kgKHBvcCBhcmdzKSkKKyAg ICAgICAgICAgICAgIChvcmlnLWFyZ2kgYXJnaSkKKyAgICAgICAgICAgICAgIGFyZ3ZhbCkKKyAg ICAgICAgICA7OyBIYW5kbGUgLS1PUFRJT049VkFMVUUgZm9ybWF0LgorICAgICAgICAgICh3aGVu IChzdHJpbmctbWF0Y2ggIlxcYFxcKC0tW149XSpcXCk9IiBhcmdpKQorICAgICAgICAgICAgKHNl dHEgYXJndmFsIChzdWJzdHJpbmcgYXJnaSAobWF0Y2gtZW5kIDApKQorICAgICAgICAgICAgICAg ICAgYXJnaSAobWF0Y2gtc3RyaW5nIDEgYXJnaSkpKQorICAgICAgICAgICh3aGVuIChzdHJpbmct bWF0Y2ggIlxcYC0tLiIgb3JpZy1hcmdpKQorICAgICAgICAgICAgKGxldCAoKGNvbXBsZXRpb24g KHRyeS1jb21wbGV0aW9uIGFyZ2kgbG9uZ29wdHMpKSkKKyAgICAgICAgICAgICAgKGNvbmQgKChl cSBjb21wbGV0aW9uIHQpCisgICAgICAgICAgICAgICAgICAgICAoc2V0cSBhcmdpIChzdWJzdHJp bmcgYXJnaSAxKSkpCisgICAgICAgICAgICAgICAgICAgICgoc3RyaW5ncCBjb21wbGV0aW9uKQor ICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGVsdCAoYXNzb2MgY29tcGxldGlvbiBsb25nb3B0 cykpKQorICAgICAgICAgICAgICAgICAgICAgICAodW5sZXNzIGVsdAorICAgICAgICAgICAgICAg ICAgICAgICAgIChlcnJvciAiT3B0aW9uIGAlcycgaXMgYW1iaWd1b3VzIiBhcmdpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgYXJnaSAoc3Vic3RyaW5nIChjYXIgZWx0KSAxKSkpKQor ICAgICAgICAgICAgICAgICAgICAodAorICAgICAgICAgICAgICAgICAgICAgKHNldHEgYXJndmFs IG5pbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnaSBvcmlnLWFyZ2kpKSkpKQorICAg ICAgICAgIChjb25kCisgICAgICAgICAgIDs7IFRoZSAtLWRpc3BsYXkgYXJnIGlzIGhhbmRsZWQg cGFydGx5IGluIEMsIHBhcnRseSBpbiBMaXNwLgorICAgICAgICAgICA7OyBXaGVuIGl0IHNob3dz IHVwIGhlcmUsIHdlIGp1c3QgcHV0IGl0IGJhY2sgdG8gYmUgaGFuZGxlZAorICAgICAgICAgICA7 OyBieSBgY29tbWFuZC1saW5lLTEnLgorICAgICAgICAgICAoKG1lbWJlciBhcmdpICcoIi1kIiAi LWRpc3BsYXkiKSkKKyAgICAgICAgICAgIChzZXRxIGRpc3BsYXktYXJnIChsaXN0IGFyZ2kgKHBv cCBhcmdzKSkpKQorICAgICAgICAgICAoKG1lbWJlciBhcmdpICcoIi1RIiAiLXF1aWNrIikpCisg ICAgICAgICAgICAoc2V0cSBpbml0LWZpbGUtdXNlciBuaWwKKyAgICAgICAgICAgICAgICAgIHNp dGUtcnVuLWZpbGUgbmlsCisgICAgICAgICAgICAgICAgICBpbmhpYml0LXgtcmVzb3VyY2VzIHQp KQorICAgICAgICAgICAoKG1lbWJlciBhcmdpICcoIi1uby14LXJlc291cmNlcyIpKQorICAgICAg ICAgICAgKHNldHEgaW5oaWJpdC14LXJlc291cmNlcyB0KSkKKyAgICAgICAgICAgKChtZW1iZXIg YXJnaSAnKCItRCIgIi1iYXNpYy1kaXNwbGF5IikpCisgICAgICAgICAgICAoc2V0cSBuby1ibGlu a2luZy1jdXJzb3IgdAorICAgICAgICAgICAgICAgICAgZW1hY3MtYmFzaWMtZGlzcGxheSB0KQor ICAgICAgICAgICAgKHB1c2ggJyh2ZXJ0aWNhbC1zY3JvbGwtYmFycyAuIG5pbCkgaW5pdGlhbC1m cmFtZS1hbGlzdCkpCisgICAgICAgICAgICgobWVtYmVyIGFyZ2kgJygiLXEiICItbm8taW5pdC1m aWxlIikpCisgICAgICAgICAgICAoc2V0cSBpbml0LWZpbGUtdXNlciBuaWwpKQorICAgICAgICAg ICAoKG1lbWJlciBhcmdpICcoIi11IiAiLXVzZXIiKSkKKyAgICAgICAgICAgIChzZXRxIGluaXQt ZmlsZS11c2VyIChvciBhcmd2YWwgKHBvcCBhcmdzKSkKKyAgICAgICAgICAgICAgICAgIGFyZ3Zh bCBuaWwpKQorICAgICAgICAgICAoKGVxdWFsIGFyZ2kgIi1uby1zaXRlLWZpbGUiKQorICAgICAg ICAgICAgKHNldHEgc2l0ZS1ydW4tZmlsZSBuaWwpKQorICAgICAgICAgICAoKGVxdWFsIGFyZ2kg Ii1kZWJ1Zy1pbml0IikKKyAgICAgICAgICAgIChzZXRxIGluaXQtZmlsZS1kZWJ1ZyB0KSkKKyAg ICAgICAgICAgKChlcXVhbCBhcmdpICItaWNvbmljIikKKyAgICAgICAgICAgIChwdXNoICcodmlz aWJpbGl0eSAuIGljb24pIGluaXRpYWwtZnJhbWUtYWxpc3QpKQorICAgICAgICAgICAoKG1lbWJl ciBhcmdpICcoIi1uYmMiICItbm8tYmxpbmtpbmctY3Vyc29yIikpCisgICAgICAgICAgICAoc2V0 cSBuby1ibGlua2luZy1jdXJzb3IgdCkpCisgICAgICAgICAgIDs7IFB1c2ggdGhlIHBvcHBlZCBh cmcgYmFjayBvbiB0aGUgbGlzdCBvZiBhcmd1bWVudHMuCisgICAgICAgICAgICh0CisgICAgICAg ICAgICAocHVzaCBhcmdpIGFyZ3MpCisgICAgICAgICAgICAoc2V0cSBkb25lIHQpKSkKKyAgICAg ICAgICA7OyBXYXMgYXJndmFsIHNldCBidXQgbm90IHVzZWQ/CisgICAgICAgICAgKGFuZCBhcmd2 YWwKKyAgICAgICAgICAgICAgIChlcnJvciAiT3B0aW9uIGAlcycgZG9lc24ndCBhbGxvdyBhbiBh cmd1bWVudCIgYXJnaSkpKSkKKworICAgICAgOzsgUmUtYXR0YWNoIHRoZSAtLWRpc3BsYXkgYXJn LgorICAgICAgKGFuZCBkaXNwbGF5LWFyZyAoc2V0cSBhcmdzIChhcHBlbmQgZGlzcGxheS1hcmcg YXJncykpKQorCisgICAgICA7OyBSZS1hdHRhY2ggdGhlIHByb2dyYW0gbmFtZSB0byB0aGUgZnJv bnQgb2YgdGhlIGFyZyBsaXN0LgorICAgICAgKGFuZCBjb21tYW5kLWxpbmUtYXJncworICAgICAg ICAgICAoc2V0Y2RyIGNvbW1hbmQtbGluZS1hcmdzIGFyZ3MpKSkKKworICAgIDs7IE1ha2Ugc3Vy ZSB3aW5kb3cgc3lzdGVtJ3MgaW5pdCBmaWxlIHdhcyBsb2FkZWQgaW4gbG9hZHVwLmVsIGlmCisg ICAgOzsgdXNpbmcgYSB3aW5kb3cgc3lzdGVtLgorICAgIDs7IEluaXRpYWxpemUgdGhlIHdpbmRv dy1zeXN0ZW0gb25seSBhZnRlciBwcm9jZXNzaW5nIHRoZSBjb21tYW5kLWxpbmUKKyAgICA7OyBh cmdzIHNvIHRoYXQgLVEgY2FuIGluZmx1ZW5jZSB0aGlzIGluaXRpYWxpemF0aW9uLgorICAgIChj b25kaXRpb24tY2FzZSBlcnJvcgorICAgICAgICAodW5sZXNzIG5vbmludGVyYWN0aXZlCisgICAg ICAgICAgKGlmIChhbmQgaW5pdGlhbC13aW5kb3ctc3lzdGVtCisgICAgICAgICAgICAgICAgICAg KG5vdCAoZmVhdHVyZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZXJuCisgICAgICAg ICAgICAgICAgICAgICAgICAgIChjb25jYXQgKHN5bWJvbC1uYW1lIGluaXRpYWwtd2luZG93LXN5 c3RlbSkgIi13aW4iKSkpKSkKKyAgICAgICAgICAgICAgKGVycm9yICJVbnN1cHBvcnRlZCB3aW5k b3cgc3lzdGVtIGAlcyciIGluaXRpYWwtd2luZG93LXN5c3RlbSkpCisgICAgICAgICAgOzsgUHJv Y2VzcyB3aW5kb3ctc3lzdGVtIHNwZWNpZmljIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzLgorICAg ICAgICAgIChzZXRxIGNvbW1hbmQtbGluZS1hcmdzCisgICAgICAgICAgICAgICAgKGZ1bmNhbGwK KyAgICAgICAgICAgICAgICAgKGd1aS1tZXRob2QgaGFuZGxlLWFyZ3MtZnVuY3Rpb24gaW5pdGlh bC13aW5kb3ctc3lzdGVtKQorICAgICAgICAgICAgICAgICBjb21tYW5kLWxpbmUtYXJncykpCisg ICAgICAgICAgOzsgSW5pdGlhbGl6ZSB0aGUgd2luZG93IHN5c3RlbS4gKE9wZW4gY29ubmVjdGlv biwgZXRjLikKKyAgICAgICAgICAoZnVuY2FsbAorICAgICAgICAgICAoZ3VpLW1ldGhvZCB3aW5k b3ctc3lzdGVtLWluaXRpYWxpemF0aW9uIGluaXRpYWwtd2luZG93LXN5c3RlbSkpCisgICAgICAg ICAgKHB1dCBpbml0aWFsLXdpbmRvdy1zeXN0ZW0gJ3dpbmRvdy1zeXN0ZW0taW5pdGlhbGl6ZWQg dCkpCisgICAgICA7OyBJZiB0aGVyZSB3YXMgYW4gZXJyb3IsIHByaW50IHRoZSBlcnJvciBtZXNz YWdlIGFuZCBleGl0LgorICAgICAgKGVycm9yCisgICAgICAgKHByaW5jCisgICAgICAgIChpZiAo ZXEgKGNhciBlcnJvcikgJ2Vycm9yKQorICAgICAgICAgICAgKGFwcGx5ICdjb25jYXQgKGNkciBl cnJvcikpCisgICAgICAgICAgKGlmIChtZW1xICdmaWxlLWVycm9yIChnZXQgKGNhciBlcnJvcikg J2Vycm9yLWNvbmRpdGlvbnMpKQorICAgICAgICAgICAgICAoZm9ybWF0ICIlczogJXMiCisgICAg ICAgICAgICAgICAgICAgICAgKG50aCAxIGVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICht YXBjb25jYXQgKGxhbWJkYSAob2JqKSAocHJpbjEtdG8tc3RyaW5nIG9iaiB0KSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgKGNkciBlcnJvcikpICIsICIpKQorICAgICAg ICAgICAgKGZvcm1hdCAiJXM6ICVzIgorICAgICAgICAgICAgICAgICAgICAoZ2V0IChjYXIgZXJy b3IpICdlcnJvci1tZXNzYWdlKQogICAgICAgICAgICAgICAgICAgICAobWFwY29uY2F0IChsYW1i ZGEgKG9iaikgKHByaW4xLXRvLXN0cmluZyBvYmogdCkpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNkciAoY2RyIGVycm9yKSkgIiwgIikpCi0JICAoZm9ybWF0ICIlczogJXMiCi0g ICAgICAgICAgICAgICAgICAoZ2V0IChjYXIgZXJyb3IpICdlcnJvci1tZXNzYWdlKQotICAgICAg ICAgICAgICAgICAgKG1hcGNvbmNhdCAobGFtYmRhIChvYmopIChwcmluMS10by1zdHJpbmcgb2Jq IHQpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIGVycm9yKSAiLCAiKSkpKQot ICAgICAgJ2V4dGVybmFsLWRlYnVnZ2luZy1vdXRwdXQpCi0gICAgICh0ZXJwcmkgJ2V4dGVybmFs LWRlYnVnZ2luZy1vdXRwdXQpCi0gICAgIChzZXRxIGluaXRpYWwtd2luZG93LXN5c3RlbSBuaWwp Ci0gICAgIChraWxsLWVtYWNzKSkpCi0KLSAgKHJ1bi1ob29rcyAnYmVmb3JlLWluaXQtaG9vaykK LQotICA7OyBVbmRlciBYLCBjcmVhdGUgdGhlIFggZnJhbWUgYW5kIGRlbGV0ZSB0aGUgdGVybWlu YWwgZnJhbWUuCi0gICh1bmxlc3MgKGRhZW1vbnApCi0gICAgKGlmIChvciBub25pbnRlcmFjdGl2 ZSBlbWFjcy1iYXNpYy1kaXNwbGF5KQotCShzZXRxIG1lbnUtYmFyLW1vZGUgbmlsCi0JICAgICAg dG9vbC1iYXItbW9kZSBuaWwKLQkgICAgICBuby1ibGlua2luZy1jdXJzb3IgdCkpCi0gICAgKGZy YW1lLWluaXRpYWxpemUpKQotCi0gICh3aGVuIChmYm91bmRwICd4LWNyZWF0ZS1mcmFtZSkKLSAg ICA7OyBTZXQgdXAgdGhlIHRvb2wtYmFyIChldmVuIGluIHR0eSBmcmFtZXMsIHNpbmNlIEVtYWNz IG1pZ2h0IG9wZW4gYQotICAgIDs7IGdyYXBoaWNhbCBmcmFtZSBsYXRlcikuCi0gICAgKHVubGVz cyBub25pbnRlcmFjdGl2ZQotICAgICAgKHRvb2wtYmFyLXNldHVwKSkpCi0KLSAgOzsgVHVybiBv ZmYgYmxpbmtpbmcgY3Vyc29yIGlmIHNvIHNwZWNpZmllZCBpbiBYIHJlc291cmNlcy4gIFRoaXMg aXMgaGVyZQotICA7OyBvbmx5IGJlY2F1c2UgYWxsIG90aGVyIHNldHRpbmdzIG9mIG5vLWJsaW5r aW5nLWN1cnNvciBhcmUgaGVyZS4KLSAgKHVubGVzcyAob3Igbm9uaW50ZXJhY3RpdmUKLQkgICAg ICBlbWFjcy1iYXNpYy1kaXNwbGF5Ci0JICAgICAgKGFuZCAobWVtcSB3aW5kb3ctc3lzdGVtICco eCB3MzIgbnMpKQotCQkgICAobm90IChtZW1iZXIgKHgtZ2V0LXJlc291cmNlICJjdXJzb3JCbGlu ayIgIkN1cnNvckJsaW5rIikKLQkJCQknKCJubyIgIm9mZiIgImZhbHNlIiAiMCIpKSkpKQotICAg IChzZXRxIG5vLWJsaW5raW5nLWN1cnNvciB0KSkKLQotICA7OyBSZS1ldmFsdWF0ZSBwcmVkZWZp bmVkIHZhcmlhYmxlcyB3aG9zZSBpbml0aWFsIHZhbHVlIGRlcGVuZHMgb24KLSAgOzsgdGhlIHJ1 bnRpbWUgY29udGV4dC4KLSAgKG1hcGMgJ2N1c3RvbS1yZWV2YWx1YXRlLXNldHRpbmcKLSAgICAg ICAgOzsgSW5pdGlhbGl6ZSB0aGVtIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgd2VyZSBsb2FkZWQs IGluIGNhc2UgdGhlcmUKLSAgICAgICAgOzsgYXJlIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZW0u Ci0gICAgICAgIChwcm9nMSAobnJldmVyc2UgY3VzdG9tLWRlbGF5ZWQtaW5pdC12YXJpYWJsZXMp Ci0gICAgICAgICAgKHNldHEgY3VzdG9tLWRlbGF5ZWQtaW5pdC12YXJpYWJsZXMgbmlsKSkpCi0K LSAgKG5vcm1hbC1lcmFzZS1pcy1iYWNrc3BhY2Utc2V0dXAtZnJhbWUpCi0KLSAgOzsgUmVnaXN0 ZXIgZGVmYXVsdCBUVFkgY29sb3JzIGZvciB0aGUgY2FzZSB0aGUgdGVybWluYWwgaGFzbid0IGEK LSAgOzsgdGVybWluYWwgaW5pdCBmaWxlLiAgV2UgZG8gdGhpcyByZWdhcmRsZXNzIG9mIHdoZXRo ZXIgdGhlIHRlcm1pbmFsCi0gIDs7IHN1cHBvcnRzIGNvbG9ycyBvciBub3QgYW5kIHJlZ2FyZGxl c3MgdGhlIGN1cnJlbnQgZGlzcGxheSB0eXBlLAotICA7OyBzaW5jZSB1c2VycyBjYW4gY29ubmVj dCB0byBjb2xvci1jYXBhYmxlIHRlcm1pbmFscyBhbmQgYWxzbwotICA7OyBzd2l0Y2ggY29sb3Ig c3VwcG9ydCBvbiBvciBvZmYgaW4gbWlkLXNlc3Npb24gYnkgc2V0dGluZyB0aGUKLSAgOzsgdHR5 LWNvbG9yLW1vZGUgZnJhbWUgcGFyYW1ldGVyLgotICA7OyBFeGNlcHRpb246IHRoZSBgcGMnIGBg d2luZG93IHN5c3RlbScnIGhhcyBvbmx5IDE2IGZpeGVkIGNvbG9ycywKLSAgOzsgYW5kIHRoZXkg YXJlIGFscmVhZHkgc2V0IGF0IHRoaXMgcG9pbnQgYnkgYSBzdWl0YWJsZSBmdW5jdGlvbiBpbgot ICA7OyB3aW5kb3ctc3lzdGVtLWluaXRpYWxpemF0aW9uLWFsaXN0LgotICAob3IgKGVxIGluaXRp YWwtd2luZG93LXN5c3RlbSAncGMpCi0gICAgICAodHR5LXJlZ2lzdGVyLWRlZmF1bHQtY29sb3Jz KSkKLQotICAobGV0ICgob2xkLXNjYWxhYmxlLWZvbnRzLWFsbG93ZWQgc2NhbGFibGUtZm9udHMt YWxsb3dlZCkKLQkob2xkLWZhY2UtaWdub3JlZC1mb250cyBmYWNlLWlnbm9yZWQtZm9udHMpKQot Ci0gICAgOzsgUnVuIHRoZSBzaXRlLXN0YXJ0IGxpYnJhcnkgaWYgaXQgZXhpc3RzLiAgVGhlIHBv aW50IG9mIHRoaXMgZmlsZSBpcwotICAgIDs7IHRoYXQgaXQgaXMgcnVuIGJlZm9yZSAuZW1hY3Mu ICBUaGVyZSBpcyBubyBwb2ludCBpbiBkb2luZyB0aGlzIGFmdGVyCi0gICAgOzsgLmVtYWNzOyB0 aGF0IGlzIHVzZWxlc3MuCi0gICAgOzsgTm90ZSB0aGF0IHVzZXItaW5pdC1maWxlIGlzIG5pbCBh dCB0aGlzIHBvaW50LiAgQ29kZSB0aGF0IG1pZ2h0Ci0gICAgOzsgYmUgbG9hZGVkIGZyb20gc2l0 ZS1ydW4tZmlsZSBhbmQgd2FudHMgdG8gdGVzdCBpZiAtcSB3YXMgZ2l2ZW4KLSAgICA7OyBzaG91 bGQgY2hlY2sgaW5pdC1maWxlLXVzZXIgaW5zdGVhZCwgc2luY2UgdGhhdCBpcyBhbHJlYWR5IHNl dC4KLSAgICA7OyBTZWUgY3VzLWVkaXQuZWwgZm9yIGFuIGV4YW1wbGUuCi0gICAgKGlmIHNpdGUt cnVuLWZpbGUKLQkobG9hZCBzaXRlLXJ1bi1maWxlIHQgdCkpCi0KLSAgICA7OyBTaXRlcyBzaG91 bGQgbm90IGRpc2FibGUgdGhpcy4gIE9ubHkgaW5kaXZpZHVhbHMgc2hvdWxkIGRpc2FibGUKLSAg ICA7OyB0aGUgc3RhcnR1cCBzY3JlZW4uCi0gICAgKHNldHEgaW5oaWJpdC1zdGFydHVwLXNjcmVl biBuaWwpCi0KLSAgICA7OyBXYXJuIGZvciBpbnZhbGlkIHVzZXIgbmFtZS4KLSAgICAod2hlbiBp bml0LWZpbGUtdXNlcgotICAgICAgKGlmIChzdHJpbmctbWF0Y2ggIlt+Lzpcbl0iIGluaXQtZmls ZS11c2VyKQotCSAgKGRpc3BsYXktd2FybmluZyAnaW5pdGlhbGl6YXRpb24KLQkJCSAgIChmb3Jt YXQgIkludmFsaWQgdXNlciBuYW1lICVzIgotCQkJCSAgIGluaXQtZmlsZS11c2VyKQotCQkJICAg OmVycm9yKQotCShpZiAoZmlsZS1kaXJlY3RvcnktcCAoZXhwYW5kLWZpbGUtbmFtZQotCQkJICAg ICAgIDs7IFdlIGRvbid0IHN1cHBvcnQgflVTRVIgb24gTVMtV2luZG93cwotCQkJICAgICAgIDs7 IGFuZCBNUy1ET1MgZXhjZXB0IGZvciB0aGUgY3VycmVudAotCQkJICAgICAgIDs7IHVzZXIsIGFu ZCBhbHdheXMgbG9hZCAuZW1hY3MgZnJvbQotCQkJICAgICAgIDs7IHRoZSBjdXJyZW50IHVzZXIn cyBob21lIGRpcmVjdG9yeQotCQkJICAgICAgIDs7IChzZWUgYmVsb3cpLiAgU28gYWx3YXlzIGNo ZWNrICJ+IiwKLQkJCSAgICAgICA7OyBldmVuIGlmIGludm9rZWQgd2l0aCAiLXUgVVNFUiIsIG9y Ci0JCQkgICAgICAgOzsgaWYgJFVTRVIgb3IgJExPR05BTUUgYXJlIHNldCB0bwotCQkJICAgICAg IDs7IHNvbWV0aGluZyBkaWZmZXJlbnQuCi0JCQkgICAgICAgKGlmIChtZW1xIHN5c3RlbS10eXBl ICcod2luZG93cy1udCBtcy1kb3MpKQotCQkJCSAgICJ+IgotCQkJCSAoY29uY2F0ICJ+IiBpbml0 LWZpbGUtdXNlcikpKSkKLQkgICAgbmlsCi0JICAoZGlzcGxheS13YXJuaW5nICdpbml0aWFsaXph dGlvbgotCQkJICAgKGZvcm1hdCAiVXNlciAlcyBoYXMgbm8gaG9tZSBkaXJlY3RvcnkiCi0JCQkJ ICAgKGlmIChlcXVhbCBpbml0LWZpbGUtdXNlciAiIikKLQkJCQkgICAgICAgKHVzZXItcmVhbC1s b2dpbi1uYW1lKQotCQkJCSAgICAgaW5pdC1maWxlLXVzZXIpKQotCQkJICAgOmVycm9yKSkpKQot Ci0gICAgOzsgTG9hZCB0aGF0IHVzZXIncyBpbml0IGZpbGUsIG9yIHRoZSBkZWZhdWx0IG9uZSwg b3Igbm9uZS4KLSAgICAobGV0IChkZWJ1Zy1vbi1lcnJvci1mcm9tLWluaXQtZmlsZQotCSAgZGVi dWctb24tZXJyb3Itc2hvdWxkLWJlLXNldAotCSAgKGRlYnVnLW9uLWVycm9yLWluaXRpYWwKLQkg ICAoaWYgKGVxIGluaXQtZmlsZS1kZWJ1ZyB0KSAnc3RhcnR1cCBpbml0LWZpbGUtZGVidWcpKQot CSAgKG9yaWctZW5hYmxlLW11bHRpYnl0ZSAoZGVmYXVsdC12YWx1ZSAnZW5hYmxlLW11bHRpYnl0 ZS1jaGFyYWN0ZXJzKSkpCi0gICAgICAobGV0ICgoZGVidWctb24tZXJyb3IgZGVidWctb24tZXJy b3ItaW5pdGlhbCkKLQkgICAgOzsgVGhpcyBmdW5jdGlvbiBhY3R1YWxseSByZWFkcyB0aGUgaW5p dCBmaWxlcy4KLQkgICAgKGlubmVyCi0JICAgICAoZnVuY3Rpb24KLQkgICAgICAobGFtYmRhICgp Ci0JCShpZiBpbml0LWZpbGUtdXNlcgotCQkgICAgKGxldCAoKHVzZXItaW5pdC1maWxlLTEKLQkJ CSAgIChjb25kCi0JCQkgICAgICgoZXEgc3lzdGVtLXR5cGUgJ21zLWRvcykKLQkJCSAgICAgIChj b25jYXQgIn4iIGluaXQtZmlsZS11c2VyICIvX2VtYWNzIikpCi0JCQkgICAgICgobm90IChlcSBz eXN0ZW0tdHlwZSAnd2luZG93cy1udCkpCi0JCQkgICAgICAoY29uY2F0ICJ+IiBpbml0LWZpbGUt dXNlciAiLy5lbWFjcyIpKQotCQkJICAgICA7OyBFbHNlIGRlYWwgd2l0aCB0aGUgV2luZG93cyBz aXR1YXRpb24KLQkJCSAgICAgKChkaXJlY3RvcnktZmlsZXMgIn4iIG5pbCAiXlxcLmVtYWNzXFwo XFwuZWxjP1xcKT8kIikKLQkJCSAgICAgIDs7IFByZWZlciAuZW1hY3Mgb24gV2luZG93cy4KLQkJ CSAgICAgICJ+Ly5lbWFjcyIpCi0JCQkgICAgICgoZGlyZWN0b3J5LWZpbGVzICJ+IiBuaWwgIl5f ZW1hY3NcXChcXC5lbGM/XFwpPyQiKQotCQkJICAgICAgOzsgQWxzbyBzdXBwb3J0IF9lbWFjcyBm b3IgY29tcGF0aWJpbGl0eSwgYnV0IHdhcm4gYWJvdXQgaXQuCi0JCQkgICAgICAocHVzaCAnKGlu aXRpYWxpemF0aW9uCi0JCQkJICAgICAgImBfZW1hY3MnIGluaXQgZmlsZSBpcyBkZXByZWNhdGVk LCBwbGVhc2UgdXNlIGAuZW1hY3MnIikKLQkJCQkgICAgZGVsYXllZC13YXJuaW5ncy1saXN0KQot CQkJICAgICAgIn4vX2VtYWNzIikKLQkJCSAgICAgKHQgOzsgQnV0IGRlZmF1bHQgdG8gLmVtYWNz IGlmIF9lbWFjcyBkb2VzIG5vdCBleGlzdC4KLQkJCSAgICAgICJ+Ly5lbWFjcyIpKSkpCi0JCSAg ICAgIDs7IFRoaXMgdGVsbHMgYGxvYWQnIHRvIHN0b3JlIHRoZSBmaWxlIG5hbWUgZm91bmQKLQkJ ICAgICAgOzsgaW50byB1c2VyLWluaXQtZmlsZS4KLQkJICAgICAgKHNldHEgdXNlci1pbml0LWZp bGUgdCkKLQkJICAgICAgKGxvYWQgdXNlci1pbml0LWZpbGUtMSB0IHQpCi0KLQkJICAgICAgKHdo ZW4gKGVxIHVzZXItaW5pdC1maWxlIHQpCi0JCQk7OyBJZiB3ZSBkaWQgbm90IGZpbmQgfi8uZW1h Y3MsIHRyeQotCQkJOzsgfi8uZW1hY3MuZC9pbml0LmVsLgotCQkJKGxldCAoKG90aGVyZmlsZQot CQkJICAgICAgIChleHBhbmQtZmlsZS1uYW1lCi0JCQkJImluaXQiCi0JCQkJKGZpbGUtbmFtZS1h cy1kaXJlY3RvcnkKLQkJCQkgKGNvbmNhdCAifiIgaW5pdC1maWxlLXVzZXIgIi8uZW1hY3MuZCIp KSkpKQotCQkJICAobG9hZCBvdGhlcmZpbGUgdCB0KQotCi0JCQkgIDs7IElmIHdlIGRpZCBub3Qg ZmluZCB0aGUgdXNlcidzIGluaXQgZmlsZSwKLQkJCSAgOzsgc2V0IHVzZXItaW5pdC1maWxlIGNv bmNsdXNpdmVseS4KLQkJCSAgOzsgRG9uJ3QgbGV0IGl0IGJlIHNldCBmcm9tIGRlZmF1bHQuZWwu Ci0JCQkgICh3aGVuIChlcSB1c2VyLWluaXQtZmlsZSB0KQotCQkJICAgIChzZXRxIHVzZXItaW5p dC1maWxlIHVzZXItaW5pdC1maWxlLTEpKSkpCi0KLQkJICAgICAgOzsgSWYgd2UgbG9hZGVkIGEg Y29tcGlsZWQgZmlsZSwgc2V0Ci0JCSAgICAgIDs7IGB1c2VyLWluaXQtZmlsZScgdG8gdGhlIHNv dXJjZSB2ZXJzaW9uIGlmIHRoYXQKLQkJICAgICAgOzsgZXhpc3RzLgotCQkgICAgICAod2hlbiAo YW5kIHVzZXItaW5pdC1maWxlCi0JCQkJIChlcXVhbCAoZmlsZS1uYW1lLWV4dGVuc2lvbiB1c2Vy LWluaXQtZmlsZSkKLQkJCQkJImVsYyIpKQotCQkJKGxldCogKChzb3VyY2UgKGZpbGUtbmFtZS1z YW5zLWV4dGVuc2lvbiB1c2VyLWluaXQtZmlsZSkpCi0JCQkgICAgICAgKGFsdCAoY29uY2F0IHNv dXJjZSAiLmVsIikpKQotCQkJICAoc2V0cSBzb3VyY2UgKGNvbmQgKChmaWxlLWV4aXN0cy1wIGFs dCkgYWx0KQotCQkJCQkgICAgICgoZmlsZS1leGlzdHMtcCBzb3VyY2UpIHNvdXJjZSkKLQkJCQkJ ICAgICAodCBuaWwpKSkKLQkJCSAgKHdoZW4gc291cmNlCi0JCQkgICAgKHdoZW4gKGZpbGUtbmV3 ZXItdGhhbi1maWxlLXAgc291cmNlIHVzZXItaW5pdC1maWxlKQotCQkJICAgICAgKG1lc3NhZ2Ug Ildhcm5pbmc6ICVzIGlzIG5ld2VyIHRoYW4gJXMiCi0JCQkJICAgICAgIHNvdXJjZSB1c2VyLWlu aXQtZmlsZSkKLQkJCSAgICAgIChzaXQtZm9yIDEpKQotCQkJICAgIChzZXRxIHVzZXItaW5pdC1m aWxlIHNvdXJjZSkpKSkKLQotCQkgICAgICAodW5sZXNzIGluaGliaXQtZGVmYXVsdC1pbml0Ci0g ICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoaW5oaWJpdC1zdGFydHVwLXNjcmVlbiBuaWwp KQotICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBVc2VycyBhcmUgc3VwcG9zZWQgdG8gYmUg dG9sZCB0aGVpciByaWdodHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDs7IChQbHVzIGhv dyB0byBnZXQgaGVscCBhbmQgaG93IHRvIHVuZG8uKQotICAgICAgICAgICAgICAgICAgICAgICAg ICA7OyBEb24ndCB5b3UgZGFyZSB0dXJuIHRoaXMgb2ZmIGZvciBhbnlvbmUKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgOzsgZXhjZXB0IHlvdXJzZWxmLgotICAgICAgICAgICAgICAgICAgICAg ICAgICAobG9hZCAiZGVmYXVsdCIgdCB0KSkpKSkpKSkpCi0JKGlmIGluaXQtZmlsZS1kZWJ1Zwot CSAgICA7OyBEbyB0aGlzIHdpdGhvdXQgYSBjb25kaXRpb24tY2FzZSBpZiB0aGUgdXNlciB3YW50 cyB0byBkZWJ1Zy4KLQkgICAgKGZ1bmNhbGwgaW5uZXIpCi0JICAoY29uZGl0aW9uLWNhc2UgZXJy b3IKLQkgICAgICAocHJvZ24KLQkJKGZ1bmNhbGwgaW5uZXIpCi0JCShzZXRxIGluaXQtZmlsZS1o YWQtZXJyb3IgbmlsKSkKLQkgICAgKGVycm9yCi0JICAgICA7OyBQb3N0cG9uZSBkaXNwbGF5aW5n IHRoZSB3YXJuaW5nIHVudGlsIGFsbCBob29rcwotCSAgICAgOzsgaW4gYGFmdGVyLWluaXQtaG9v aycgbGlrZSBgZGVza3RvcC1yZWFkJyB3aWxsIGZpbmFsaXplCi0JICAgICA7OyBwb3NzaWJsZSBj aGFuZ2VzIGluIHRoZSB3aW5kb3cgY29uZmlndXJhdGlvbi4KLQkgICAgIChhZGQtaG9vawotCSAg ICAgICdhZnRlci1pbml0LWhvb2sKLQkgICAgICAobGFtYmRhICgpCi0JCShkaXNwbGF5LXdhcm5p bmcKLQkJICdpbml0aWFsaXphdGlvbgotCQkgKGZvcm1hdCAiQW4gZXJyb3Igb2NjdXJyZWQgd2hp bGUgbG9hZGluZyBgJXMnOlxuXG4lcyVzJXNcblxuXAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjZHIgZXJyb3IpICIsICIpKSkpCisgICAgICAgICdleHRlcm5hbC1kZWJ1Z2dpbmct b3V0cHV0KQorICAgICAgICh0ZXJwcmkgJ2V4dGVybmFsLWRlYnVnZ2luZy1vdXRwdXQpCisgICAg ICAgKHNldHEgaW5pdGlhbC13aW5kb3ctc3lzdGVtIG5pbCkKKyAgICAgICAoa2lsbC1lbWFjcykp KQorCisgICAgKHJ1bi1ob29rcyAnYmVmb3JlLWluaXQtaG9vaykKKworICAgIDs7IFVuZGVyIFgs IGNyZWF0ZSB0aGUgWCBmcmFtZSBhbmQgZGVsZXRlIHRoZSB0ZXJtaW5hbCBmcmFtZS4KKyAgICAo dW5sZXNzIChkYWVtb25wKQorICAgICAgKGlmIChvciBub25pbnRlcmFjdGl2ZSBlbWFjcy1iYXNp Yy1kaXNwbGF5KQorICAgICAgICAgIChzZXRxIG1lbnUtYmFyLW1vZGUgbmlsCisgICAgICAgICAg ICAgICAgdG9vbC1iYXItbW9kZSBuaWwKKyAgICAgICAgICAgICAgICBuby1ibGlua2luZy1jdXJz b3IgdCkpCisgICAgICAoZnJhbWUtaW5pdGlhbGl6ZSkpCisKKyAgICAod2hlbiAoZmJvdW5kcCAn eC1jcmVhdGUtZnJhbWUpCisgICAgICA7OyBTZXQgdXAgdGhlIHRvb2wtYmFyIChldmVuIGluIHR0 eSBmcmFtZXMsIHNpbmNlIEVtYWNzIG1pZ2h0IG9wZW4gYQorICAgICAgOzsgZ3JhcGhpY2FsIGZy YW1lIGxhdGVyKS4KKyAgICAgICh1bmxlc3Mgbm9uaW50ZXJhY3RpdmUKKyAgICAgICAgKHRvb2wt YmFyLXNldHVwKSkpCisKKyAgICA7OyBUdXJuIG9mZiBibGlua2luZyBjdXJzb3IgaWYgc28gc3Bl Y2lmaWVkIGluIFggcmVzb3VyY2VzLiAgVGhpcyBpcyBoZXJlCisgICAgOzsgb25seSBiZWNhdXNl IGFsbCBvdGhlciBzZXR0aW5ncyBvZiBuby1ibGlua2luZy1jdXJzb3IgYXJlIGhlcmUuCisgICAg KHVubGVzcyAob3Igbm9uaW50ZXJhY3RpdmUKKyAgICAgICAgICAgICAgICBlbWFjcy1iYXNpYy1k aXNwbGF5CisgICAgICAgICAgICAgICAgKGFuZCAobWVtcSB3aW5kb3ctc3lzdGVtICcoeCB3MzIg bnMpKQorICAgICAgICAgICAgICAgICAgICAgKG5vdCAobWVtYmVyICh4LWdldC1yZXNvdXJjZSAi Y3Vyc29yQmxpbmsiICJDdXJzb3JCbGluayIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJygibm8iICJvZmYiICJmYWxzZSIgIjAiKSkpKSkKKyAgICAgIChzZXRxIG5vLWJsaW5r aW5nLWN1cnNvciB0KSkKKworICAgIDs7IFJlLWV2YWx1YXRlIHByZWRlZmluZWQgdmFyaWFibGVz IHdob3NlIGluaXRpYWwgdmFsdWUgZGVwZW5kcyBvbgorICAgIDs7IHRoZSBydW50aW1lIGNvbnRl eHQuCisgICAgKG1hcGMgJ2N1c3RvbS1yZWV2YWx1YXRlLXNldHRpbmcKKyAgICAgICAgICA7OyBJ bml0aWFsaXplIHRoZW0gaW4gdGhlIHNhbWUgb3JkZXIgdGhleSB3ZXJlIGxvYWRlZCwgaW4gY2Fz ZSB0aGVyZQorICAgICAgICAgIDs7IGFyZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGVtLgorICAg ICAgICAgIChwcm9nMSAobnJldmVyc2UgY3VzdG9tLWRlbGF5ZWQtaW5pdC12YXJpYWJsZXMpCisg ICAgICAgICAgICAoc2V0cSBjdXN0b20tZGVsYXllZC1pbml0LXZhcmlhYmxlcyBuaWwpKSkKKwor ICAgIChub3JtYWwtZXJhc2UtaXMtYmFja3NwYWNlLXNldHVwLWZyYW1lKQorCisgICAgOzsgUmVn aXN0ZXIgZGVmYXVsdCBUVFkgY29sb3JzIGZvciB0aGUgY2FzZSB0aGUgdGVybWluYWwgaGFzbid0 IGEKKyAgICA7OyB0ZXJtaW5hbCBpbml0IGZpbGUuICBXZSBkbyB0aGlzIHJlZ2FyZGxlc3Mgb2Yg d2hldGhlciB0aGUgdGVybWluYWwKKyAgICA7OyBzdXBwb3J0cyBjb2xvcnMgb3Igbm90IGFuZCBy ZWdhcmRsZXNzIHRoZSBjdXJyZW50IGRpc3BsYXkgdHlwZSwKKyAgICA7OyBzaW5jZSB1c2VycyBj YW4gY29ubmVjdCB0byBjb2xvci1jYXBhYmxlIHRlcm1pbmFscyBhbmQgYWxzbworICAgIDs7IHN3 aXRjaCBjb2xvciBzdXBwb3J0IG9uIG9yIG9mZiBpbiBtaWQtc2Vzc2lvbiBieSBzZXR0aW5nIHRo ZQorICAgIDs7IHR0eS1jb2xvci1tb2RlIGZyYW1lIHBhcmFtZXRlci4KKyAgICA7OyBFeGNlcHRp b246IHRoZSBgcGMnIGBgd2luZG93IHN5c3RlbScnIGhhcyBvbmx5IDE2IGZpeGVkIGNvbG9ycywK KyAgICA7OyBhbmQgdGhleSBhcmUgYWxyZWFkeSBzZXQgYXQgdGhpcyBwb2ludCBieSBhIHN1aXRh YmxlIGZ1bmN0aW9uIGluCisgICAgOzsgd2luZG93LXN5c3RlbS1pbml0aWFsaXphdGlvbi1hbGlz dC4KKyAgICAob3IgKGVxIGluaXRpYWwtd2luZG93LXN5c3RlbSAncGMpCisgICAgICAgICh0dHkt cmVnaXN0ZXItZGVmYXVsdC1jb2xvcnMpKQorCisgICAgKGxldCAoKG9sZC1zY2FsYWJsZS1mb250 cy1hbGxvd2VkIHNjYWxhYmxlLWZvbnRzLWFsbG93ZWQpCisgICAgICAgICAgKG9sZC1mYWNlLWln bm9yZWQtZm9udHMgZmFjZS1pZ25vcmVkLWZvbnRzKSkKKworICAgICAgOzsgUnVuIHRoZSBzaXRl LXN0YXJ0IGxpYnJhcnkgaWYgaXQgZXhpc3RzLiAgVGhlIHBvaW50IG9mIHRoaXMgZmlsZSBpcwor ICAgICAgOzsgdGhhdCBpdCBpcyBydW4gYmVmb3JlIC5lbWFjcy4gIFRoZXJlIGlzIG5vIHBvaW50 IGluIGRvaW5nIHRoaXMgYWZ0ZXIKKyAgICAgIDs7IC5lbWFjczsgdGhhdCBpcyB1c2VsZXNzLgor ICAgICAgOzsgTm90ZSB0aGF0IHVzZXItaW5pdC1maWxlIGlzIG5pbCBhdCB0aGlzIHBvaW50LiAg Q29kZSB0aGF0IG1pZ2h0CisgICAgICA7OyBiZSBsb2FkZWQgZnJvbSBzaXRlLXJ1bi1maWxlIGFu ZCB3YW50cyB0byB0ZXN0IGlmIC1xIHdhcyBnaXZlbgorICAgICAgOzsgc2hvdWxkIGNoZWNrIGlu aXQtZmlsZS11c2VyIGluc3RlYWQsIHNpbmNlIHRoYXQgaXMgYWxyZWFkeSBzZXQuCisgICAgICA7 OyBTZWUgY3VzLWVkaXQuZWwgZm9yIGFuIGV4YW1wbGUuCisgICAgICAoaWYgc2l0ZS1ydW4tZmls ZQorICAgICAgICAgIChsb2FkIHNpdGUtcnVuLWZpbGUgdCB0KSkKKworICAgICAgOzsgU2l0ZXMg c2hvdWxkIG5vdCBkaXNhYmxlIHRoaXMuICBPbmx5IGluZGl2aWR1YWxzIHNob3VsZCBkaXNhYmxl CisgICAgICA7OyB0aGUgc3RhcnR1cCBzY3JlZW4uCisgICAgICAoc2V0cSBpbmhpYml0LXN0YXJ0 dXAtc2NyZWVuIG5pbCkKKworICAgICAgOzsgV2FybiBmb3IgaW52YWxpZCB1c2VyIG5hbWUuCisg ICAgICAod2hlbiBpbml0LWZpbGUtdXNlcgorICAgICAgICAoaWYgKHN0cmluZy1tYXRjaCAiW34v OlxuXSIgaW5pdC1maWxlLXVzZXIpCisgICAgICAgICAgICAoZGlzcGxheS13YXJuaW5nICdpbml0 aWFsaXphdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJJbnZhbGlk IHVzZXIgbmFtZSAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0 LWZpbGUtdXNlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmVycm9yKQorICAgICAg ICAgIChpZiAoZmlsZS1kaXJlY3RvcnktcCAoZXhwYW5kLWZpbGUtbmFtZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOzsgV2UgZG9uJ3Qgc3VwcG9ydCB+VVNFUiBvbiBNUy1XaW5k b3dzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBhbmQgTVMtRE9TIGV4Y2Vw dCBmb3IgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHVz ZXIsIGFuZCBhbHdheXMgbG9hZCAuZW1hY3MgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOzsgdGhlIGN1cnJlbnQgdXNlcidzIGhvbWUgZGlyZWN0b3J5CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7OyAoc2VlIGJlbG93KS4gIFNvIGFsd2F5cyBjaGVjayAi fiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBldmVuIGlmIGludm9rZWQg d2l0aCAiLXUgVVNFUiIsIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBp ZiAkVVNFUiBvciAkTE9HTkFNRSBhcmUgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA7OyBzb21ldGhpbmcgZGlmZmVyZW50LgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGlmIChtZW1xIHN5c3RlbS10eXBlICcod2luZG93cy1udCBtcy1kb3MpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ+IgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoY29uY2F0ICJ+IiBpbml0LWZpbGUtdXNlcikpKSkKKyAgICAgICAg ICAgICAgbmlsCisgICAgICAgICAgICAoZGlzcGxheS13YXJuaW5nICdpbml0aWFsaXphdGlvbgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJVc2VyICVzIGhhcyBubyBob21l IGRpcmVjdG9yeSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGVx dWFsIGluaXQtZmlsZS11c2VyICIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodXNlci1yZWFsLWxvZ2luLW5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbml0LWZpbGUtdXNlcikpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDplcnJvcikpKSkKKworICAgICAgOzsgTG9hZCB0aGF0IHVzZXIncyBpbml0IGZpbGUsIG9y IHRoZSBkZWZhdWx0IG9uZSwgb3Igbm9uZS4KKyAgICAgIChsZXQgKGRlYnVnLW9uLWVycm9yLWZy b20taW5pdC1maWxlCisgICAgICAgICAgICBkZWJ1Zy1vbi1lcnJvci1zaG91bGQtYmUtc2V0Cisg ICAgICAgICAgICAoZGVidWctb24tZXJyb3ItaW5pdGlhbAorICAgICAgICAgICAgIChpZiAoZXEg aW5pdC1maWxlLWRlYnVnIHQpICdzdGFydHVwIGluaXQtZmlsZS1kZWJ1ZykpCisgICAgICAgICAg ICAob3JpZy1lbmFibGUtbXVsdGlieXRlIChkZWZhdWx0LXZhbHVlICdlbmFibGUtbXVsdGlieXRl LWNoYXJhY3RlcnMpKSkKKyAgICAgICAgKGxldCAoKGRlYnVnLW9uLWVycm9yIGRlYnVnLW9uLWVy cm9yLWluaXRpYWwpCisgICAgICAgICAgICAgIDs7IFRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgcmVh ZHMgdGhlIGluaXQgZmlsZXMuCisgICAgICAgICAgICAgIChpbm5lcgorICAgICAgICAgICAgICAg KGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgKGxhbWJkYSAoKQorICAgICAgICAgICAgICAgICAg KGlmIGluaXQtZmlsZS11c2VyCisgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHVzZXItaW5p dC1maWxlLTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoZXEgc3lzdGVtLXR5cGUgJ21zLWRvcykKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJ+IiBpbml0LWZpbGUtdXNlciAiL19lbWFjcyIp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChub3QgKGVxIHN5c3RlbS10eXBlICd3 aW5kb3dzLW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJ+IiBp bml0LWZpbGUtdXNlciAiLy5lbWFjcyIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgRWxzZSBkZWFsIHdpdGggdGhlIFdpbmRvd3Mgc2l0dWF0aW9uCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKGRpcmVjdG9yeS1maWxlcyAifiIgbmlsICJeXFwuZW1hY3NcXChcXC5l bGM/XFwpPyQiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFByZWZlciAuZW1h Y3Mgb24gV2luZG93cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifi8uZW1hY3Mi KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkaXJlY3RvcnktZmlsZXMgIn4iIG5p bCAiXl9lbWFjc1xcKFxcLmVsYz9cXCk/JCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOzsgQWxzbyBzdXBwb3J0IF9lbWFjcyBmb3IgY29tcGF0aWJpbGl0eSwgYnV0IHdhcm4gYWJv dXQgaXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggJyhpbml0aWFsaXph dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImBfZW1hY3MnIGlu aXQgZmlsZSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIGAuZW1hY3MnIikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheWVkLXdhcm5pbmdzLWxpc3QpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIn4vX2VtYWNzIikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICh0IDs7IEJ1dCBkZWZhdWx0IHRvIC5lbWFjcyBpZiBfZW1hY3MgZG9lcyBub3Qg ZXhpc3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn4vLmVtYWNzIikpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIDs7IFRoaXMgdGVsbHMgYGxvYWQnIHRvIHN0b3JlIHRoZSBm aWxlIG5hbWUgZm91bmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IGludG8gdXNlci1pbml0 LWZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSB1c2VyLWluaXQtZmlsZSB0KQor CisgICAgICAgICAgICAgICAgICAgICAgICA7OyBEb24ndCBsb2FkIGB+Ly5lbWFjcycgaWYgRU1B Q1NfVVNFUl9ESVJFQ1RPUlkgd2FzIHNldAorICAgICAgICAgICAgICAgICAgICAgICAgKHVubGVz cyB1c2VyLWVtYWNzLWRpcmVjdG9yeS0tZnJvbS1lbnYKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxvYWQgdXNlci1pbml0LWZpbGUtMSB0IHQpKQorCisgICAgICAgICAgICAgICAgICAgICAg ICAod2hlbiAoZXEgdXNlci1pbml0LWZpbGUgdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgSWYgd2UgZGlkIG5vdCBmaW5kIH4vLmVtYWNzLCB0cnkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgOzsgfi8uZW1hY3MuZC9pbml0LmVsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAo bGV0ICgob3RoZXJmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhwYW5k LWZpbGUtbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbml0IgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiB1c2VyLWVtYWNzLWRpcmVjdG9y eS0tZnJvbS1lbnYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIt ZW1hY3MtZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNv bmNhdCAifiIgaW5pdC1maWxlLXVzZXIgIi8uZW1hY3MuZCIpKSkpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobG9hZCBvdGhlcmZpbGUgdCB0KQorCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOzsgSWYgd2UgZGlkIG5vdCBmaW5kIHRoZSB1c2VyJ3MgaW5pdCBmaWxlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHNldCB1c2VyLWluaXQtZmlsZSBjb25jbHVzaXZl bHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgRG9uJ3QgbGV0IGl0IGJlIHNldCBm cm9tIGRlZmF1bHQuZWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGVxIHVz ZXItaW5pdC1maWxlIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSB1c2Vy LWluaXQtZmlsZSB1c2VyLWluaXQtZmlsZS0xKSkpKQorCisgICAgICAgICAgICAgICAgICAgICAg ICA7OyBJZiB3ZSBsb2FkZWQgYSBjb21waWxlZCBmaWxlLCBzZXQKKyAgICAgICAgICAgICAgICAg ICAgICAgIDs7IGB1c2VyLWluaXQtZmlsZScgdG8gdGhlIHNvdXJjZSB2ZXJzaW9uIGlmIHRoYXQK KyAgICAgICAgICAgICAgICAgICAgICAgIDs7IGV4aXN0cy4KKyAgICAgICAgICAgICAgICAgICAg ICAgICh3aGVuIChhbmQgdXNlci1pbml0LWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGVxdWFsIChmaWxlLW5hbWUtZXh0ZW5zaW9uIHVzZXItaW5pdC1maWxlKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVsYyIpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAobGV0KiAoKHNvdXJjZSAoZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9u IHVzZXItaW5pdC1maWxlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbHQg KGNvbmNhdCBzb3VyY2UgIi5lbCIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBzb3VyY2UgKGNvbmQgKChmaWxlLWV4aXN0cy1wIGFsdCkgYWx0KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZpbGUtZXhpc3RzLXAgc291cmNlKSBz b3VyY2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0 IG5pbCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIHNvdXJjZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGZpbGUtbmV3ZXItdGhhbi1maWxlLXAgc291 cmNlIHVzZXItaW5pdC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVz c2FnZSAiV2FybmluZzogJXMgaXMgbmV3ZXIgdGhhbiAlcyIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc291cmNlIHVzZXItaW5pdC1maWxlKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2l0LWZvciAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChzZXRxIHVzZXItaW5pdC1maWxlIHNvdXJjZSkpKSkKKworICAgICAgICAgICAgICAg ICAgICAgICAgKHVubGVzcyBpbmhpYml0LWRlZmF1bHQtaW5pdAorICAgICAgICAgICAgICAgICAg ICAgICAgICAobGV0ICgoaW5oaWJpdC1zdGFydHVwLXNjcmVlbiBuaWwpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDs7IFVzZXJzIGFyZSBzdXBwb3NlZCB0byBiZSB0b2xkIHRoZWlyIHJp Z2h0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyAoUGx1cyBob3cgdG8gZ2V0IGhl bHAgYW5kIGhvdyB0byB1bmRvLikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBEb24n dCB5b3UgZGFyZSB0dXJuIHRoaXMgb2ZmIGZvciBhbnlvbmUKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICA7OyBleGNlcHQgeW91cnNlbGYuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGxvYWQgImRlZmF1bHQiIHQgdCkpKSkpKSkpKQorICAgICAgICAgIChpZiBpbml0LWZpbGUtZGVi dWcKKyAgICAgICAgICAgICAgOzsgRG8gdGhpcyB3aXRob3V0IGEgY29uZGl0aW9uLWNhc2UgaWYg dGhlIHVzZXIgd2FudHMgdG8gZGVidWcuCisgICAgICAgICAgICAgIChmdW5jYWxsIGlubmVyKQor ICAgICAgICAgICAgKGNvbmRpdGlvbi1jYXNlIGVycm9yCisgICAgICAgICAgICAgICAgKHByb2du CisgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBpbm5lcikKKyAgICAgICAgICAgICAgICAgIChz ZXRxIGluaXQtZmlsZS1oYWQtZXJyb3IgbmlsKSkKKyAgICAgICAgICAgICAgKGVycm9yCisgICAg ICAgICAgICAgICA7OyBQb3N0cG9uZSBkaXNwbGF5aW5nIHRoZSB3YXJuaW5nIHVudGlsIGFsbCBo b29rcworICAgICAgICAgICAgICAgOzsgaW4gYGFmdGVyLWluaXQtaG9vaycgbGlrZSBgZGVza3Rv cC1yZWFkJyB3aWxsIGZpbmFsaXplCisgICAgICAgICAgICAgICA7OyBwb3NzaWJsZSBjaGFuZ2Vz IGluIHRoZSB3aW5kb3cgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgIChhZGQtaG9vawor ICAgICAgICAgICAgICAgICdhZnRlci1pbml0LWhvb2sKKyAgICAgICAgICAgICAgICAobGFtYmRh ICgpCisgICAgICAgICAgICAgICAgICAoZGlzcGxheS13YXJuaW5nCisgICAgICAgICAgICAgICAg ICAgJ2luaXRpYWxpemF0aW9uCisgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiQW4gZXJyb3Ig b2NjdXJyZWQgd2hpbGUgbG9hZGluZyBgJXMnOlxuXG4lcyVzJXNcblxuXAogVG8gZW5zdXJlIG5v cm1hbCBvcGVyYXRpb24sIHlvdSBzaG91bGQgaW52ZXN0aWdhdGUgYW5kIHJlbW92ZSB0aGUKIGNh dXNlIG9mIHRoZSBlcnJvciBpbiB5b3VyIGluaXRpYWxpemF0aW9uIGZpbGUuICBTdGFydCBFbWFj cyB3aXRoCiB0aGUgYC0tZGVidWctaW5pdCcgb3B0aW9uIHRvIHZpZXcgYSBjb21wbGV0ZSBlcnJv ciBiYWNrdHJhY2UuIgotCQkJIHVzZXItaW5pdC1maWxlCi0JCQkgKGdldCAoY2FyIGVycm9yKSAn ZXJyb3ItbWVzc2FnZSkKLQkJCSAoaWYgKGNkciBlcnJvcikgIjogIiAiIikKLQkJCSAobWFwY29u Y2F0IChsYW1iZGEgKHMpIChwcmluMS10by1zdHJpbmcgcyB0KSkKLQkJCQkgICAgKGNkciBlcnJv cikgIiwgIikpCi0JCSA6d2FybmluZykpCi0JICAgICAgdCkKLQkgICAgIChzZXRxIGluaXQtZmls ZS1oYWQtZXJyb3IgdCkpKSkKLQotICAgICAgKGlmIChhbmQgZGVhY3RpdmF0ZS1tYXJrIHRyYW5z aWVudC1tYXJrLW1vZGUpCi0JICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyICh3aW5kb3ctYnVmZmVy KQotCSAgICAgIChkZWFjdGl2YXRlLW1hcmspKSkKLQotCTs7IElmIHRoZSB1c2VyIGhhcyBhIGZp bGUgb2YgYWJicmV2cywgcmVhZCBpdCAodW5sZXNzIC1iYXRjaCkuCi0JKHdoZW4gKGFuZCAobm90 IG5vbmludGVyYWN0aXZlKQotCQkgICAoZmlsZS1leGlzdHMtcCBhYmJyZXYtZmlsZS1uYW1lKQot CQkgICAoZmlsZS1yZWFkYWJsZS1wIGFiYnJldi1maWxlLW5hbWUpKQotCSAgICAocXVpZXRseS1y ZWFkLWFiYnJldi1maWxlIGFiYnJldi1maWxlLW5hbWUpKQotCi0JOzsgSWYgdGhlIGFiYnJldnMg Y2FtZSBlbnRpcmVseSBmcm9tIHRoZSBpbml0IGZpbGUgb3IgdGhlCi0JOzsgYWJicmV2cyBmaWxl LCB0aGV5IGRvIG5vdCBuZWVkIHNhdmluZy4KLQkoc2V0cSBhYmJyZXZzLWNoYW5nZWQgbmlsKQot Ci0JOzsgSWYgd2UgY2FuIHRlbGwgdGhhdCB0aGUgaW5pdCBmaWxlIGFsdGVyZWQgZGVidWctb24t ZXJyb3IsCi0JOzsgYXJyYW5nZSB0byBwcmVzZXJ2ZSB0aGUgdmFsdWUgdGhhdCBpdCBzZXQgdXAu Ci0JKG9yIChlcSBkZWJ1Zy1vbi1lcnJvciBkZWJ1Zy1vbi1lcnJvci1pbml0aWFsKQotCSAgICAo c2V0cSBkZWJ1Zy1vbi1lcnJvci1zaG91bGQtYmUtc2V0IHQKLQkJICBkZWJ1Zy1vbi1lcnJvci1m cm9tLWluaXQtZmlsZSBkZWJ1Zy1vbi1lcnJvcikpKQotICAgICAgKGlmIGRlYnVnLW9uLWVycm9y LXNob3VsZC1iZS1zZXQKLQkgIChzZXRxIGRlYnVnLW9uLWVycm9yIGRlYnVnLW9uLWVycm9yLWZy b20taW5pdC1maWxlKSkKLSAgICAgICh1bmxlc3MgKG9yIChkZWZhdWx0LXZhbHVlICdlbmFibGUt bXVsdGlieXRlLWNoYXJhY3RlcnMpCi0JCSAgKGVxIG9yaWctZW5hYmxlLW11bHRpYnl0ZSAoZGVm YXVsdC12YWx1ZQotCQkJCQkgICAgICAnZW5hYmxlLW11bHRpYnl0ZS1jaGFyYWN0ZXJzKSkpCi0J OzsgSW5pdCBmaWxlIGNoYW5nZWQgdG8gdW5pYnl0ZS4gIFJlc2V0IGV4aXN0aW5nIG11bHRpYnl0 ZQotCTs7IGJ1ZmZlcnMgKHByb2JhYmx5ICpzY3JhdGNoKiwgKk1lc3NhZ2VzKiwgKk1pbmlidWYt MCopLgotCTs7IEFyZ3VhYmx5IHRoaXMgc2hvdWxkIG9ubHkgYmUgZG9uZSBpZiB0aGV5J3JlIGZy ZWUgb2YKLQk7OyBtdWx0aWJ5dGUgY2hhcmFjdGVycy4KLQkobWFwYyAobGFtYmRhIChidWZmZXIp Ci0JCSh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlcgotCQkgIChpZiBlbmFibGUtbXVsdGlieXRl LWNoYXJhY3RlcnMKLQkJICAgICAgKHNldC1idWZmZXItbXVsdGlieXRlIG5pbCkpKSkKLQkgICAg ICAoYnVmZmVyLWxpc3QpKQotCTs7IEFsc28gcmUtc2V0IHRoZSBsYW5ndWFnZSBlbnZpcm9ubWVu dCBpbiBjYXNlIGl0IHdhcwotCTs7IG9yaWdpbmFsbHkgZG9uZSBiZWZvcmUgdW5pYnl0ZSB3YXMg c2V0IGFuZCBpcyBzZW5zaXRpdmUgdG8KLQk7OyB1bmlieXRlIChkaXNwbGF5IHRhYmxlLCB0ZXJt aW5hbCBjb2Rpbmcgc3lzdGVtICZjKS4KLQkoc2V0LWxhbmd1YWdlLWVudmlyb25tZW50IGN1cnJl bnQtbGFuZ3VhZ2UtZW52aXJvbm1lbnQpKSkKLQotICAgIDs7IERvIHRoaXMgaGVyZSBpbiBjYXNl IHRoZSBpbml0IGZpbGUgc2V0cyBtYWlsLWhvc3QtYWRkcmVzcy4KLSAgICAoaWYgKGVxdWFsIHVz ZXItbWFpbC1hZGRyZXNzICIiKQotCShzZXRxIHVzZXItbWFpbC1hZGRyZXNzIChvciAoZ2V0ZW52 ICJFTUFJTCIpCi0JCQkJICAgIChjb25jYXQgKHVzZXItbG9naW4tbmFtZSkgIkAiCi0JCQkJCSAg ICAob3IgbWFpbC1ob3N0LWFkZHJlc3MKLQkJCQkJCShzeXN0ZW0tbmFtZSkpKSkpKQotCi0gICAg OzsgSWYgcGFyYW1ldGVyIGhhdmUgYmVlbiBjaGFuZ2VkIGluIHRoZSBpbml0IGZpbGUgd2hpY2gg aW5mbHVlbmNlCi0gICAgOzsgZmFjZSByZWFsaXphdGlvbiwgY2xlYXIgdGhlIGZhY2UgY2FjaGUg c28gdGhhdCBuZXcgZmFjZXMgd2lsbAotICAgIDs7IGJlIHJlYWxpemVkLgotICAgICh1bmxlc3Mg KGFuZCAoZXEgc2NhbGFibGUtZm9udHMtYWxsb3dlZCBvbGQtc2NhbGFibGUtZm9udHMtYWxsb3dl ZCkKLQkJIChlcSBmYWNlLWlnbm9yZWQtZm9udHMgb2xkLWZhY2UtaWdub3JlZC1mb250cykpCi0g ICAgICAoY2xlYXItZmFjZS1jYWNoZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNl ci1pbml0LWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZXQgKGNhciBlcnJvcikg J2Vycm9yLW1lc3NhZ2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGNkciBlcnJv cikgIjogIiAiIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXBjb25jYXQgKGxhbWJk YSAocykgKHByaW4xLXRvLXN0cmluZyBzIHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoY2RyIGVycm9yKSAiLCAiKSkKKyAgICAgICAgICAgICAgICAgICA6d2Fybmlu ZykpCisgICAgICAgICAgICAgICAgdCkKKyAgICAgICAgICAgICAgIChzZXRxIGluaXQtZmlsZS1o YWQtZXJyb3IgdCkpKSkKKworICAgICAgICAgIChpZiAoYW5kIGRlYWN0aXZhdGUtbWFyayB0cmFu c2llbnQtbWFyay1tb2RlKQorICAgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAod2lu ZG93LWJ1ZmZlcikKKyAgICAgICAgICAgICAgICAoZGVhY3RpdmF0ZS1tYXJrKSkpCisKKyAgICAg ICAgICA7OyBJZiB0aGUgdXNlciBoYXMgYSBmaWxlIG9mIGFiYnJldnMsIHJlYWQgaXQgKHVubGVz cyAtYmF0Y2gpLgorICAgICAgICAgICh3aGVuIChhbmQgKG5vdCBub25pbnRlcmFjdGl2ZSkKKyAg ICAgICAgICAgICAgICAgICAgIChmaWxlLWV4aXN0cy1wIGFiYnJldi1maWxlLW5hbWUpCisgICAg ICAgICAgICAgICAgICAgICAoZmlsZS1yZWFkYWJsZS1wIGFiYnJldi1maWxlLW5hbWUpKQorICAg ICAgICAgICAgKHF1aWV0bHktcmVhZC1hYmJyZXYtZmlsZSBhYmJyZXYtZmlsZS1uYW1lKSkKKwor ICAgICAgICAgIDs7IElmIHRoZSBhYmJyZXZzIGNhbWUgZW50aXJlbHkgZnJvbSB0aGUgaW5pdCBm aWxlIG9yIHRoZQorICAgICAgICAgIDs7IGFiYnJldnMgZmlsZSwgdGhleSBkbyBub3QgbmVlZCBz YXZpbmcuCisgICAgICAgICAgKHNldHEgYWJicmV2cy1jaGFuZ2VkIG5pbCkKKworICAgICAgICAg IDs7IElmIHdlIGNhbiB0ZWxsIHRoYXQgdGhlIGluaXQgZmlsZSBhbHRlcmVkIGRlYnVnLW9uLWVy cm9yLAorICAgICAgICAgIDs7IGFycmFuZ2UgdG8gcHJlc2VydmUgdGhlIHZhbHVlIHRoYXQgaXQg c2V0IHVwLgorICAgICAgICAgIChvciAoZXEgZGVidWctb24tZXJyb3IgZGVidWctb24tZXJyb3It aW5pdGlhbCkKKyAgICAgICAgICAgICAgKHNldHEgZGVidWctb24tZXJyb3Itc2hvdWxkLWJlLXNl dCB0CisgICAgICAgICAgICAgICAgICAgIGRlYnVnLW9uLWVycm9yLWZyb20taW5pdC1maWxlIGRl YnVnLW9uLWVycm9yKSkpCisgICAgICAgIChpZiBkZWJ1Zy1vbi1lcnJvci1zaG91bGQtYmUtc2V0 CisgICAgICAgICAgICAoc2V0cSBkZWJ1Zy1vbi1lcnJvciBkZWJ1Zy1vbi1lcnJvci1mcm9tLWlu aXQtZmlsZSkpCisgICAgICAgICh1bmxlc3MgKG9yIChkZWZhdWx0LXZhbHVlICdlbmFibGUtbXVs dGlieXRlLWNoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgICAgIChlcSBvcmlnLWVuYWJsZS1t dWx0aWJ5dGUgKGRlZmF1bHQtdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdlbmFibGUtbXVsdGlieXRlLWNoYXJhY3RlcnMpKSkKKyAgICAgICAg ICA7OyBJbml0IGZpbGUgY2hhbmdlZCB0byB1bmlieXRlLiAgUmVzZXQgZXhpc3RpbmcgbXVsdGli eXRlCisgICAgICAgICAgOzsgYnVmZmVycyAocHJvYmFibHkgKnNjcmF0Y2gqLCAqTWVzc2FnZXMq LCAqTWluaWJ1Zi0wKikuCisgICAgICAgICAgOzsgQXJndWFibHkgdGhpcyBzaG91bGQgb25seSBi ZSBkb25lIGlmIHRoZXkncmUgZnJlZSBvZgorICAgICAgICAgIDs7IG11bHRpYnl0ZSBjaGFyYWN0 ZXJzLgorICAgICAgICAgIChtYXBjIChsYW1iZGEgKGJ1ZmZlcikKKyAgICAgICAgICAgICAgICAg ICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAoaWYgZW5h YmxlLW11bHRpYnl0ZS1jaGFyYWN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAoc2V0LWJ1 ZmZlci1tdWx0aWJ5dGUgbmlsKSkpKQorICAgICAgICAgICAgICAgIChidWZmZXItbGlzdCkpCisg ICAgICAgICAgOzsgQWxzbyByZS1zZXQgdGhlIGxhbmd1YWdlIGVudmlyb25tZW50IGluIGNhc2Ug aXQgd2FzCisgICAgICAgICAgOzsgb3JpZ2luYWxseSBkb25lIGJlZm9yZSB1bmlieXRlIHdhcyBz ZXQgYW5kIGlzIHNlbnNpdGl2ZSB0bworICAgICAgICAgIDs7IHVuaWJ5dGUgKGRpc3BsYXkgdGFi bGUsIHRlcm1pbmFsIGNvZGluZyBzeXN0ZW0gJmMpLgorICAgICAgICAgIChzZXQtbGFuZ3VhZ2Ut ZW52aXJvbm1lbnQgY3VycmVudC1sYW5ndWFnZS1lbnZpcm9ubWVudCkpKQorCisgICAgICA7OyBE byB0aGlzIGhlcmUgaW4gY2FzZSB0aGUgaW5pdCBmaWxlIHNldHMgbWFpbC1ob3N0LWFkZHJlc3Mu CisgICAgICAoaWYgKGVxdWFsIHVzZXItbWFpbC1hZGRyZXNzICIiKQorICAgICAgICAgIChzZXRx IHVzZXItbWFpbC1hZGRyZXNzIChvciAoZ2V0ZW52ICJFTUFJTCIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgKHVzZXItbG9naW4tbmFtZSkgIkAiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIG1haWwtaG9zdC1h ZGRyZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChzeXN0ZW0tbmFtZSkpKSkpKQorCisgICAgICA7OyBJZiBwYXJhbWV0ZXIgaGF2ZSBiZWVuIGNo YW5nZWQgaW4gdGhlIGluaXQgZmlsZSB3aGljaCBpbmZsdWVuY2UKKyAgICAgIDs7IGZhY2UgcmVh bGl6YXRpb24sIGNsZWFyIHRoZSBmYWNlIGNhY2hlIHNvIHRoYXQgbmV3IGZhY2VzIHdpbGwKKyAg ICAgIDs7IGJlIHJlYWxpemVkLgorICAgICAgKHVubGVzcyAoYW5kIChlcSBzY2FsYWJsZS1mb250 cy1hbGxvd2VkIG9sZC1zY2FsYWJsZS1mb250cy1hbGxvd2VkKQorICAgICAgICAgICAgICAgICAg IChlcSBmYWNlLWlnbm9yZWQtZm9udHMgb2xkLWZhY2UtaWdub3JlZC1mb250cykpCisgICAgICAg IChjbGVhci1mYWNlLWNhY2hlKSkpKQogCiAgIDs7IElmIGFueSBwYWNrYWdlIGRpcmVjdG9yeSBl eGlzdHMsIGluaXRpYWxpemUgdGhlIHBhY2thZ2Ugc3lzdGVtLgogICAoYW5kIHVzZXItaW5pdC1m aWxlCi0tIAoxLjcuMi41Cgo= --001a11352cacf7a81b0512b96275--