From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 19241 invoked from network); 16 May 2021 19:32:30 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 16 May 2021 19:32:30 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1621193550; b=pmUW+Zllt743O996fzsNp9fCUYl0JhpWzDqw2kSlR0NBaQMtNqAfgx0z5R/jeDXjNv3x05psqb AqSm+y/y3m+DE4F4eRGPbrz0MSSKDIweSIKcHxCotLcMSK2l/qrSIfbAHYzLJqTzmdb5AOHina 0TTw8/HBuymWF3G0tQZVBjTPGHZBBnTHswrvYamMiOCEyjsSVzjCulj4XpacB4UX+DDoxn8XyU 318v0x+bSLeYCuULJ4mim6bmxxSwaGXW5StBNYH05i9xStywBtpLmKtWgrcsbHMnKqJm1d0s6x UB/+qH29oqeszrtgSX9CjsyPbbuElDjpZlymSCYrwGykcA==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-lf1-f44.google.com) smtp.remote-ip=209.85.167.44; dkim=pass header.d=gmail.com header.s=20161025 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20200801; t=1621193550; bh=ylaMsFiPd3vnaodRBlSIsOOIVFz7kIvTG0DAtge0aXs=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:DKIM-Signature:DKIM-Signature; b=T6oh3tbhGhNTkv0wqSgLI2q0PVTvuZMR0kJTMQ5MhwnLSdIovgEO68K/jofbZ+9+/Nbd6iJzRZ wnrUzwVg16735RnDMN2XRWx4Wo9yC2E8ZBfWRLAZ7fn/+l8Nhk42ggQbpCJyxCadg+FmYioqlr fruhgc1Z3U9R0ROW4dNhgi4HNDSIEf9Cup6uBToZqsDnvll/lEDQuihLAq2Z+/V7cld/Z9gn31 6p2x3ktCGrNbd5JyaUUcMpdPnabq/ciwmNhBJeGvqaOl9iKVZ8jYzKu674iiIOYFHrTCIU+Wi2 afP4J+bYgyC5HH1b2x0winVC3SK3+VZNDrER2DlY8mF4IQ==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20200801; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID :Date:From:In-Reply-To:References:MIME-Version:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=sN3Gmz2IXLW0K3wbhzqTj/gZWH3EH+9hDEJzyQ+MlX0=; b=KjGP9mDheT/I9A9uZ2tewHWiRP n1y5IBDA6T4j2z/aEc+ErdPPdCCi2l4jI2WkIKBZ2zDIwQ/xOt3dO4h6+EWV4GvP3iT70K1z4nOd8 TnCWgnXbiZBNQzmg5wgQXIU9YDt7PiEm4JSnhhxGHevQWWUXnxZOHXf9le7ZOFOgi0gXi09BGpSEF yNoRwUY6pRasmj0OM0FGdvsswiyvCQwGh2YXkGlwhywalftCJxyfLo8gux5P45/GDOXSFTCUftFvw V4fYN+71jZRlfNmARy4SuQNF3+Kw47Rp2l96pQjK6wysQHJNQvhWoGir0usozUc2gwsKyG7apLnir MysWYEug==; Received: from authenticated user by zero.zsh.org with local id 1liMV4-0009vP-02; Sun, 16 May 2021 19:32:30 +0000 Authentication-Results: zsh.org; iprev=pass (mail-lf1-f44.google.com) smtp.remote-ip=209.85.167.44; dkim=pass header.d=gmail.com header.s=20161025 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-lf1-f44.google.com ([209.85.167.44]:47052) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1liMUT-0009cn-RG; Sun, 16 May 2021 19:31:55 +0000 Received: by mail-lf1-f44.google.com with SMTP id i9so5594264lfe.13; Sun, 16 May 2021 12:31:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=sN3Gmz2IXLW0K3wbhzqTj/gZWH3EH+9hDEJzyQ+MlX0=; b=pIDbYcSLUaa2KQ6AdHCpkGDO+GW6IqKknRtS2K4+keV5cQl3sCrwKwqwsziAHH0SSP vhrU2HhP1zV266Cb4Q77d4+0FXUJdeLSzP37+yyIrE54L4tH8UFgcukpFtYhJQo36TRg RlvENEgW7veo3fRoPoLllm0WgtnpXEZX/6RSuJARw9CUXh8vriqNFVR8N9bD47Zgbfmf d1dS2lmOeRgtpohkbbRUCGKw1FJr7z/HjUpanPkx0PpVjTH7XhNS01ghqTDhBqv7ina4 GXMx92TIkppFhS1fNarYJSt2QZRX6ZtdPI+VGkpIkEMdulj9XrPRIwWTvJDR3oU4kMsT 0EQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=sN3Gmz2IXLW0K3wbhzqTj/gZWH3EH+9hDEJzyQ+MlX0=; b=bL/XZsJyIeGno0DJV31+TY83cqWBFIAQLzrGqz2oHsiBLfojAlgB6G7A8kSASkMsdW UFiby9HIdgm5BsTOQhFwIaqb7khojWcel8zSkn0x9+zyqaZrWRwiXqmoNoAIiosH4JxV 2ws1nZlc9zCf1qWizKCQ/DyF4evt2Xf1ISs5AP5oeM+ZUixBb/vfZGYB6P6Ekjj/hyJm 7/J1a++zxVb7DCHxrCoUtW/9DUnYrw1HFkDQl0sajMIROEdrFUeSlvbRkAcoDHV/O8UD 2yh7jpypMBSh6tn2H/ZyZnJJTKFI0o2DaLLpzibNFbzUPhRPXBoJCnVuB4kJ1jVAU8BI ZFqw== X-Gm-Message-State: AOAM531xVHZ6R8MZ3nrrWpTPmDF0Ug9PigMVE9SYCGVLcAGBxDSZHet5 eGedQnz5u22b2SgILuhfi+sH4NfUDA3Vm25jS5NxARaUvv8= X-Google-Smtp-Source: ABdhPJx8RNsU8L76XX95fFJXAk8fNqZlUREdv/yPRfZOrqmHQmQOch4jOgVc+F8BolEb/87PTITSwL8JYgVzHqgjrhc= X-Received: by 2002:ac2:548b:: with SMTP id t11mr38100231lfk.605.1621193512474; Sun, 16 May 2021 12:31:52 -0700 (PDT) MIME-Version: 1.0 References: <7E71FA83-356E-448B-9726-02DF3FF5BD14@gmail.com> <873D08A9-F321-474A-8440-CCE7DCCBA529@gmail.com> <20210414120551.GA3882@tarpaulin.shahaf.local2> <20210415213456.GE6669@tarpaulin.shahaf.local2> <728024c4-9706-442d-b922-f12fa99e0ddf@www.fastmail.com> In-Reply-To: <728024c4-9706-442d-b922-f12fa99e0ddf@www.fastmail.com> From: Marlon Richert Date: Sun, 16 May 2021 22:31:16 +0300 Message-ID: Subject: Re: [RFC][PATCH] Reset ZLE hooks when changing prompt themes (was Re: [RFC][PATCH] `newuser` prompt theme) To: =?UTF-8?Q?Lawrence_Vel=C3=A1zquez?= Cc: Zsh hackers list Content-Type: multipart/mixed; boundary="0000000000006d1d1505c27787e4" X-Seq: 48853 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: --0000000000006d1d1505c27787e4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Here's at least a new version of the patch that does away with the two lines discussed below. On Sun, May 16, 2021 at 6:27 PM Lawrence Vel=C3=A1zquez wr= ote: > > Hi, > > Is workers/48609 ready to commit, or should Marlon make further > changes, or...? > > vq > > On Wed, May 5, 2021, at 2:10 AM, Marlon Richert wrote: > > On Sun, May 2, 2021 at 8:59 PM Bart Schaefer wrote: > > > 2. This bit in the restore style: > > > + $( add-zsh-hook -L ) > > > + $( add-zle-hook-widget -L ) > > > There may not be anything to be done about this, but unless I'm > > > mistaken that just re-adds all the previous hooks, it doesn't remove > > > any? The code it is replacing clobbered the entire list of precmd an= d > > > preexec hooks, which I suppose also might also be wrong if anything > > > other than the prompt theme was manipulating them. > > > > `add-zsh-hook -L` outputs statements in the form of `typeset -g -a > > _functions=3D( ... )`, while `add-zle-hook-widget -L` > > outputs statements in the form of `zstyle zle- widgets > > : ...` (which is where add-zle-hook-widget stores the hook > > widgets to call internally). eval'ing either of these results in the > > same good, old-fashioned clobbering as in the old code. So, no > > functional change there. :) > > > > I just realized, though, that these lines (new and old) don't actually > > do anything useful: > > * When you call `prompt`, it will not unhook anything not called > > `prompt_*_`. So, whatever hooks you've set up that don't follow > > the naming scheme will still be there when you call `prompt restore`. > > No need to restore them. > > * When you call `prompt`, it will unhook everything called > > `prompt_*_`. So, if a prompt theme correctly implements the > > prompt system contract, its hook functions will already get unhooked > > when switching themes. Again, no need to do anything special when > > calling `prompt restore`. > > > > The only case I can think of that would need special handling is if > > you already had hooks installed that follow the `prompt_*_` > > naming convention before calling `prompt` for the first time. > > > > Should we just get rid of this part of the "restore" logic? And > > instead just document clearly that `prompt` will auto-remove all hooks > > that follow its naming scheme? --0000000000006d1d1505c27787e4 Content-Type: text/plain; charset="US-ASCII"; name="0001-Reset-ZLE-hooks-when-changing-prompt-themes.txt" Content-Disposition: attachment; filename="0001-Reset-ZLE-hooks-when-changing-prompt-themes.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_korkp3540 RnJvbSBjMTE3ZTYzYmFhZjliNGFkZDhlZDJkZWQ4OWMwODIwZDIyMzEwNGFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJsb24gUmljaGVydCA8bWFybG9uLnJpY2hlcnRAZ21haWwu Y29tPgpEYXRlOiBTdW4sIDE2IE1heSAyMDIxIDIyOjI2OjQ2ICswMzAwClN1YmplY3Q6IFtQQVRD SF0gUmVzZXQgWkxFIGhvb2tzIHdoZW4gY2hhbmdpbmcgcHJvbXB0IHRoZW1lcwoKLS0tCiBEb2Mv WnNoL2NvbnRyaWIueW8gICAgICAgICAgIHwgIDEwICsrLQogRnVuY3Rpb25zL1Byb21wdHMvcHJv bXB0aW5pdCB8IDE2NSArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxl cyBjaGFuZ2VkLCA3NyBpbnNlcnRpb25zKCspLCA5OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9Eb2MvWnNoL2NvbnRyaWIueW8gYi9Eb2MvWnNoL2NvbnRyaWIueW8KaW5kZXggYjc3NzcwM2Iz Li4xZDIwZmU1MjAgMTAwNjQ0Ci0tLSBhL0RvYy9ac2gvY29udHJpYi55bworKysgYi9Eb2MvWnNo L2NvbnRyaWIueW8KQEAgLTIwNDEsMTAgKzIwNDEsMTIgQEAgc2V0b3B0cyAodHQocHJvbXB0YmFu ZyksIGV0Yy4pIGFyZSB0dXJuZWQgb24sIGFsbCBvdGhlciBwcm9tcHQtcmVsYXRlZAogb3B0aW9u cyBhcmUgdHVybmVkIG9mZi4gIFRoZSB0dChwcm9tcHRfb3B0cykgYXJyYXkgcHJlc2VydmVzIHNl dG9wdHMgZXZlbgogYmV5b25kIHRoZSBzY29wZSBvZiB0dChsb2NhbG9wdGlvbnMpLCBzaG91bGQg eW91ciBmdW5jdGlvbiBuZWVkIHRoYXQuCiApCi1pdGVtKE1vZGlmeSBwcmVjbWQgYW5kIHByZWV4 ZWMpKAotVXNlIG9mIHR0KGFkZC16c2gtaG9vaykgaXMgcmVjb21tZW5kZWQuICBUaGUgdHQocHJl Y21kKSBhbmQgdHQocHJlZXhlYykKLWhvb2tzIGFyZSBhdXRvbWF0aWNhbGx5IGFkanVzdGVkIGlm IHRoZSBwcm9tcHQgdGhlbWUgY2hhbmdlcyBvciBpcwotZGlzYWJsZWQuCitpdGVtKE1vZGlmeSBo b29rcykoDQorVXNlIG9mIHR0KGFkZC16c2gtaG9vaykgYW5kIHR0KGFkZC16bGUtaG9vay13aWRn ZXQpIGlzIHJlY29tbWVuZGVkIChzZWUNCitpZnptYW4odGhlIGJmKE1hbmlwdWxhdGluZyBIb29r IEZ1bmN0aW9ucykgc2VjdGlvbiBhYm92ZSlcDQoraWZuem1hbihub2RlcmVmKE1hbmlwdWxhdGlu ZyBIb29rIEZ1bmN0aW9ucykpXA0KKykuIEFsbCBob29rcyB0aGF0IGZvbGxvdyB0aGUgbmFtaW5n IHBhdHRlcm4gdHQocHJvbXB0Xyl2YXIodGhlbWUpdHQoXyl2YXIoaG9vaykNCithcmUgYXV0b21h dGljYWxseSByZW1vdmVkIHdoZW4gdGhlIHByb21wdCB0aGVtZSBjaGFuZ2VzIG9yIGlzIGRpc2Fi bGVkLg0KICkKIGl0ZW0oRGVjbGFyZSBjbGVhbnVwKSgKIElmIHlvdXIgZnVuY3Rpb24gbWFrZXMg YW55IG90aGVyIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgdW5kb25lIHdoZW4gdGhlCmRpZmYgLS1n aXQgYS9GdW5jdGlvbnMvUHJvbXB0cy9wcm9tcHRpbml0IGIvRnVuY3Rpb25zL1Byb21wdHMvcHJv bXB0aW5pdAppbmRleCAzN2Q2OWYxMDAuLjIwNTAzZDc4YiAxMDA2NDQKLS0tIGEvRnVuY3Rpb25z L1Byb21wdHMvcHJvbXB0aW5pdAorKysgYi9GdW5jdGlvbnMvUHJvbXB0cy9wcm9tcHRpbml0CkBA IC0xNCw2ICsxNCw4IEBAIHByb21wdF90aGVtZXM9KCkKIHByb21wdGluaXQgKCkgewogICBlbXVs YXRlIC1MIHpzaAogICBzZXRvcHQgZXh0ZW5kZWRnbG9iCisgIGF1dG9sb2FkIC1VeiBhZGQtenNo LWhvb2sgYWRkLXpsZS1ob29rLXdpZGdldAorCiAgIGxvY2FsIHBwYXRoPScnIG5hbWUgdGhlbWUK ICAgbG9jYWwgLWEgbWF0Y2ggbWJlZ2luIG1lbmQKIApAQCAtMzIsOSArMzQsNiBAQCBwcm9tcHRp bml0ICgpIHsKICAgICBmaQogICBkb25lCiAKLSAgIyBUbyBtYW5pcHVsYXRlIHByZWNtZCBhbmQg cHJlZXhlYyBob29rcy4uLgotICBhdXRvbG9hZCAtVXogYWRkLXpzaC1ob29rCi0KICAgIyBWYXJp YWJsZXMgY29tbW9uIHRvIGFsbCBwcm9tcHQgc3R5bGVzCiAgIHByb21wdF9uZXdsaW5lPSQnXG4l e1xyJX0nCiB9CkBAIC00NywzOCArNDYsMjMgQEAgcHJvbXB0X3ByZXZpZXdfc2FmZWx5KCkgewog ICAgIHJldHVybgogICBmaQogCi0gICMgVGhpcyBoYW5kbGVzIGFsbCB0aGUgc3R1ZmYgZnJvbSB0 aGUgZGVmYXVsdCA6cHJvbXB0LXRoZW1lIHJlc3RvcmUKLSAgbG9jYWwgK2ggUFMxPSRQUzEgUFMy PSRQUzIgUFMzPSRQUzMgUFM0PSRQUzQgUlBTMT0kUlBTMSBSUFMyPSRSUFMyCi0gIGxvY2FsICto IFBST01QVD0kUFJPTVBUIFJQUk9NUFQ9JFJQUk9NUFQgUlBST01QVDI9JFJQUk9NUFQyIFBTVkFS PSRQU1ZBUgotICBsb2NhbCAtYSBwcmVjbWRfZnVuY3Rpb25zIHByZWV4ZWNfZnVuY3Rpb25zIHBy b21wdF9wcmV2aWV3X3Jlc3RvcmUKLSAgbG9jYWwgLWFMbCAraCB6bGVfaGlnaGxpZ2h0CisgICMg UnVuIHRoaXMgaW4gYSBzdWJzaGVsbCwgc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhbiB1cCBhZnRl cndhcmRzLgorICAoCisgICAgIyBFeGVjdXRlIGN1cnJlbnQgdGhlbWUncyBjbGVhbnVwIHNlcXVl bmNlLCBpZiBhbnkuCisgICAgenN0eWxlIC10IDpwcm9tcHQtdGhlbWUgY2xlYW51cAogCi0gIHsK LSAgICAjIFNhdmUgYW5kIGNsZWFyIGN1cnJlbnQgcmVzdG9yZS1wb2ludCBpZiBhbnkKLSAgICB6 c3R5bGUgLWcgcHJvbXB0X3ByZXZpZXdfcmVzdG9yZSA6cHJvbXB0LXRoZW1lIHJlc3RvcmUKLSAg ICB7Ci0gICAgICB6c3R5bGUgLWQgOnByb21wdC10aGVtZSByZXN0b3JlCi0gICAgICAjIEV4ZWN1 dGUgY3VycmVudCBjbGVhbnVwIHNlcXVlbmNlLCBpZiBhbnkuCi0gICAgICB6c3R5bGUgLXQgOnBy b21wdC10aGVtZSBjbGVhbnVwCi0KLSAgICAgICMgVGhlIG5leHQgbGluZSBpcyBhIGJpdCB1Z2x5 LiAgSXQgKHBlcmhhcHMgdW5uZWNlc3NhcmlseSkKLSAgICAgICMgcnVucyB0aGUgcHJvbXB0IHRo ZW1lIHNldHVwIGZ1bmN0aW9uIHRvIGVuc3VyZSB0aGF0IGlmCi0gICAgICAjIHRoZSB0aGVtZSBo YXMgYSBfcHJldmlldyBmdW5jdGlvbiB0aGF0IGl0J3MgYmVlbiBhdXRvbG9hZGVkLgorICAgICMg SWYgd2UgY2FuJ3QgZmluZCBhIF9wcmV2aWV3IGZ1bmN0aW9uLCBydW4gdGhlIF9zZXR1cCBmdW5j dGlvbiB0byBzZWUgaWYKKyAgICAjIGl0IHdpbGwgY3JlYXRlIG9uZS4KKyAgICB0eXBlc2V0ICtm IHByb21wdF8kezF9X3ByZXZpZXcgPiYvZGV2L251bGwgfHwKICAgICAgIHByb21wdF8kezF9X3Nl dHVwCiAKLSAgICAgIGlmIHR5cGVzZXQgK2YgcHJvbXB0XyR7MX1fcHJldmlldyA+Ji9kZXYvbnVs bDsgdGhlbgotICAgICAgICBwcm9tcHRfJHsxfV9wcmV2aWV3ICIkQFsyLC0xXSIKLSAgICAgIGVs c2UKLSAgICAgICAgcHJvbXB0X3ByZXZpZXdfdGhlbWUgIiRAIgotICAgICAgZmkKLSAgICB9IGFs d2F5cyB7Ci0gICAgICAjIFJ1biBhbnkgdGhlbWUtc3BlY2lmaWMgY2xlYW51cCwgdGhlbiByZXNl dCByZXN0b3JlIHBvaW50Ci0gICAgICB6c3R5bGUgLXQgOnByb21wdC10aGVtZSBjbGVhbnVwCi0g ICAgfQotICB9IGFsd2F5cyB7Ci0gICAgKCggJCNwcm9tcHRfcHJldmlld19yZXN0b3JlICkpICYm Ci0gICAgICB6c3R5bGUgLWUgOnByb21wdC10aGVtZSByZXN0b3JlICIke3Byb21wdF9wcmV2aWV3 X3Jlc3RvcmVbQF19IgotICB9CisgICAgIyAuLi50aGVuIHRyeSBhZ2Fpbi4KKyAgICBpZiB0eXBl c2V0ICtmIHByb21wdF8kezF9X3ByZXZpZXcgPiYvZGV2L251bGw7IHRoZW4KKyAgICAgIHByb21w dF8kezF9X3ByZXZpZXcgIiRAWzIsLTFdIgorICAgIGVsc2UKKyAgICAgIHByb21wdF9wcmV2aWV3 X3RoZW1lICIkQCIKKyAgICBmaQorICApCiB9CiAKIHNldF9wcm9tcHQoKSB7CkBAIC05NywyMSAr ODEsNiBAQCBPcHRpb25zOgogVXNlIHByb21wdCAtaCA8dGhlbWU+IGZvciBoZWxwIG9uIHNwZWNp ZmljIHRoZW1lcy4nCiAKICAgZ2V0b3B0cyAiY2hscHM6IiBvcHQKLSAgY2FzZSAiJG9wdCIgaW4K LSAgICAoaHxwKQotICAgICAgc2V0b3B0IGxvY2FsdHJhcHMKLSAgICAgIGlmIFtbIC16ICIkcHJv bXB0X3RoZW1lWzFdIiBdXTsgdGhlbgotICAgICAgICAjIE5vdCB1c2luZyBhIHByb21wdCB0aGVt ZTsgc2F2ZSBzZXR0aW5ncwotICAgICAgICBsb2NhbCAraCBQUzE9JFBTMSBQUzI9JFBTMiBQUzM9 JFBTMyBQUzQ9JFBTNCBSUFMxPSRSUFMxIFJQUzI9JFJQUzIKLSAgICAgICAgbG9jYWwgK2ggUFJP TVBUPSRQUk9NUFQgUlBST01QVD0kUlBST01QVCBSUFJPTVBUMj0kUlBST01QVDIgUFNWQVI9JFBT VkFSCi0gICAgICAgIGxvY2FsIC1hIHByZWNtZF9mdW5jdGlvbnMgcHJlZXhlY19mdW5jdGlvbnMK LSAgICAgICAgbG9jYWwgdGhlbWVfcmVzZXQ9JycKLSAgICAgIGVsc2UKLSAgICAgICAgbG9jYWwg dGhlbWVfcmVzZXQ9J3Byb21wdF8ke3Byb21wdF90aGVtZVsxXX1fc2V0dXAgIiR7KEApcHJvbXB0 X3RoZW1lWzIsLTFdfSInCi0gICAgICBmaQotICAgICAgdHJhcCAnenN0eWxlIC10IDpwcm9tcHQt dGhlbWUgY2xlYW51cDsnIiR7dGhlbWVfcmVzZXQ6KyAkdGhlbWVfcmVzZXR9IiAwCi0gICAgICA7 OwotICBlc2FjCiAgIGNhc2UgIiRvcHQiIGluCiAgICAgYykgaWYgW1sgLW4gJHByb21wdF90aGVt ZSBdXTsgdGhlbgogICAgICAgICAgcHJpbnQgLW4gIkN1cnJlbnQgcHJvbXB0IHRoZW1lIgpAQCAt MTIzLDIxICs5MiwyNiBAQCBVc2UgcHJvbXB0IC1oIDx0aGVtZT4gZm9yIGhlbHAgb24gc3BlY2lm aWMgdGhlbWVzLicKICAgICAgICByZXR1cm4KICAgICAgICA7OwogICAgIGgpIGlmIFtbIC1uICIk MiIgJiYgLW4gJHByb21wdF90aGVtZXNbKHIpJDJdIF1dOyB0aGVuCi0gICAgICAgICBpZiBmdW5j dGlvbnMgcHJvbXB0XyQyX3NldHVwID4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgICMgUnVuIHRo aXMgaW4gYSBzdWJzaGVsbCwgc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhbiB1cCBhZnRlcndhcmRz LgorICAgICAgICAgKAorICAgICAgICAgICAjIEV4ZWN1dGUgY3VycmVudCB0aGVtZSdzIGNsZWFu dXAgc2VxdWVuY2UsIGlmIGFueS4KICAgICAgICAgICAgenN0eWxlIC10IDpwcm9tcHQtdGhlbWUg Y2xlYW51cAotICAgICAgICAgICAjIFRoZSBuZXh0IGxpbmUgaXMgYSBiaXQgdWdseS4gIEl0IChw ZXJoYXBzIHVubmVjZXNzYXJpbHkpCi0gICAgICAgICAgICMgcnVucyB0aGUgcHJvbXB0IHRoZW1l IHNldHVwIGZ1bmN0aW9uIHRvIGVuc3VyZSB0aGF0IGlmCi0gICAgICAgICAgICMgdGhlIHRoZW1l IGhhcyBhIF9oZWxwIGZ1bmN0aW9uIHRoYXQgaXQncyBiZWVuIGF1dG9sb2FkZWQuCi0gICAgICAg ICAgIHByb21wdF8kMl9zZXR1cAotICAgICAgICAgZmkKLSAgICAgICAgIGlmIGZ1bmN0aW9ucyBw cm9tcHRfJDJfaGVscCA+L2Rldi9udWxsOyB0aGVuCi0gICAgICAgICAgIHByaW50ICJIZWxwIGZv ciAkMiB0aGVtZTpcbiIKLSAgICAgICAgICAgcHJvbXB0XyQyX2hlbHAKLSAgICAgICAgIGVsc2UK LSAgICAgICAgICAgcHJpbnQgIk5vIGhlbHAgYXZhaWxhYmxlIGZvciAkMiB0aGVtZS4iCi0gICAg ICAgICBmaQotICAgICAgICAgcHJpbnQgIlxuVHlwZSBcYHByb21wdCAtcCAkMicgdG8gcHJldmll dyB0aGUgdGhlbWUsIFxgcHJvbXB0ICQyJyIKLSAgICAgICAgIHByaW50ICJ0byB0cnkgaXQgb3V0 LCBhbmQgXGBwcm9tcHQgLXMgJDInIHRvIHVzZSBpdCBpbiBmdXR1cmUgc2Vzc2lvbnMuIgorCisg ICAgICAgICAgICMgSWYgd2UgY2FuJ3QgZmluZCBhIF9oZWxwIGZ1bmN0aW9uLCBydW4gdGhlIF9z ZXR1cCBmdW5jdGlvbiB0byBzZWUKKyAgICAgICAgICAgIyBpZiBpdCB3aWxsIGNyZWF0ZSBvbmUu CisgICAgICAgICAgIHR5cGVzZXQgK2YgcHJvbXB0XyQyX2hlbHAgPi9kZXYvbnVsbCB8fAorICAg ICAgICAgICAgICAgcHJvbXB0XyQyX3NldHVwCisKKyAgICAgICAgICAgIyAuLi50aGVuIHRyeSBh Z2Fpbi4KKyAgICAgICAgICAgaWYgdHlwZXNldCArZiBwcm9tcHRfJDJfaGVscCA+L2Rldi9udWxs OyB0aGVuCisgICAgICAgICAgICAgcHJpbnQgIkhlbHAgZm9yICQyIHRoZW1lOlxuIgorICAgICAg ICAgICAgIHByb21wdF8kMl9oZWxwCisgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICBwcmlu dCAiTm8gaGVscCBhdmFpbGFibGUgZm9yICQyIHRoZW1lLiIKKyAgICAgICAgICAgZmkKKyAgICAg ICAgICAgcHJpbnQgIlxuVHlwZSBcYHByb21wdCAtcCAkMicgdG8gcHJldmlldyB0aGUgdGhlbWUs IFxgcHJvbXB0ICQyJyIKKyAgICAgICAgICAgcHJpbnQgInRvIHRyeSBpdCBvdXQsIGFuZCBcYHBy b21wdCAtcyAkMicgdG8gdXNlIGl0IGluIGZ1dHVyZSBzZXNzaW9ucy4iCisgICAgICAgICApCiAg ICAgICAgZWxzZQogICAgICAgICAgcHJpbnQgIiR1c2FnZSIKICAgICAgICBmaQpAQCAtMTc4LDgg KzE1MiwxMyBAQCBVc2UgcHJvbXB0IC1oIDx0aGVtZT4gZm9yIGhlbHAgb24gc3BlY2lmaWMgdGhl bWVzLicKIAogICAgICAgICMgUmVzZXQgc29tZSBjb21tb25seSBhbHRlcmVkIGJpdHMgdG8gdGhl IGRlZmF1bHQKICAgICAgICBsb2NhbCBob29rCi0gICAgICAgZm9yIGhvb2sgaW4gY2hwd2QgcHJl Y21kIHByZWV4ZWMgcGVyaW9kaWMgenNoYWRkaGlzdG9yeSB6c2hleGl0OyBkbwotICAgICAgICAg YWRkLXpzaC1ob29rIC1EICIke2hvb2t9IiAicHJvbXB0XypfJHtob29rfSIKKyAgICAgICBmb3Ig aG9vayBpbiBjaHB3ZCBwcmVjbWQgcHJlZXhlYyBwZXJpb2RpYyB6c2hhZGRoaXN0b3J5IHpzaGV4 aXQgXAorICAgICAgICAgICB6c2hfZGlyZWN0b3J5X25hbWU7IGRvCisgICAgICAgICBhZGQtenNo LWhvb2sgLUQgIiRob29rIiAicHJvbXB0XypfJGhvb2siCisgICAgICAgZG9uZQorICAgICAgIGZv ciBob29rIGluIGlzZWFyY2gtZXhpdCBpc2VhcmNoLXVwZGF0ZSBsaW5lLXByZS1yZWRyYXcgbGlu ZS1pbml0IFwKKyAgICAgICAgICAgbGluZS1maW5pc2ggaGlzdG9yeS1saW5lLXNldCBrZXltYXAt c2VsZWN0OyBkbworICAgICAgICAgYWRkLXpsZS1ob29rLXdpZGdldCAtRCAiJGhvb2siICJwcm9t cHRfKl8kaG9vayIKICAgICAgICBkb25lCiAgICAgICAgdHlwZXNldCAtZ2EgemxlX2hpZ2hsaWdo dD0oICR7emxlX2hpZ2hsaWdodDojZGVmYXVsdDoqfSApCiAgICAgICAgKCggJHsjemxlX2hpZ2hs aWdodH0gKSkgfHwgdW5zZXQgemxlX2hpZ2hsaWdodApAQCAtMTkyLDExICsxNzEsOCBAQCBVc2Ug cHJvbXB0IC1oIDx0aGVtZT4gZm9yIGhlbHAgb24gc3BlY2lmaWMgdGhlbWVzLicKIAogcHJvbXB0 X2NsZWFudXAgKCkgewogICBsb2NhbCAtYSBjbGVhbnVwX2hvb2tzIHRoZW1lX2FjdGl2ZQotICBp ZiAhIHpzdHlsZSAtZyBjbGVhbnVwX2hvb2tzIDpwcm9tcHQtdGhlbWUgY2xlYW51cAotICB0aGVu Ci0gICAgKCggJCtwcm9tcHRfcHJldmlld19yZXN0b3JlID09IDAgKSkgJiYKLSAgICBpZiAhIHpz dHlsZSAtZyB0aGVtZV9hY3RpdmUgOnByb21wdC10aGVtZSByZXN0b3JlCi0gICAgdGhlbgorICBp ZiAhIHpzdHlsZSAtZyBjbGVhbnVwX2hvb2tzIDpwcm9tcHQtdGhlbWUgY2xlYW51cDsgdGhlbgor ICAgIGlmICEgenN0eWxlIC1nIHRoZW1lX2FjdGl2ZSA6cHJvbXB0LXRoZW1lIHJlc3RvcmU7IHRo ZW4KICAgICAgIHByaW50IC11MiAicHJvbXB0X2NsZWFudXA6IG5vIHByb21wdCB0aGVtZSBhY3Rp dmUiCiAgICAgICByZXR1cm4gMQogICAgIGZpCkBAIC0yMjUsMjIgKzIwMSwyMSBAQCBwcm9tcHQg KCkgewogICAgIFtbIC1vIHByb21wdHBlcmNlbnQgXV0gJiYgcHJvbXB0X29wdHMrPShwZXJjZW50 KQogICAgIFtbIC1vIHByb21wdHNwIF1dICYmIHByb21wdF9vcHRzKz0oc3ApCiAgICAgW1sgLW8g cHJvbXB0c3Vic3QgXV0gJiYgcHJvbXB0X29wdHMrPShzdWJzdCkKLSAgICB6c3R5bGUgLWUgOnBy b21wdC10aGVtZSByZXN0b3JlIFwKLSAgICAgICAgJ3pzdHlsZSAtZCA6cHJvbXB0LXRoZW1lIHJl c3RvcmU7JyBcCi0JJ3Byb21wdF9kZWZhdWx0X3NldHVwOycgXAotICAgICAgICAke1BTMStQUzE9 IiR7KHEpUFMxfSJ9IFwKLSAgICAgICAgJHtQUzIrUFMyPSIkeyhxKVBTMn0ifSBcCi0gICAgICAg ICR7UFMzK1BTMz0iJHsocSlQUzN9In0gXAotICAgICAgICAke1BTNCtQUzQ9IiR7KHEpUFM0fSJ9 IFwKLSAgICAgICAgJHtSUFMxK1JQUzE9IiR7KHEpUlBTMX0ifSBcCi0gICAgICAgICR7UlBTMitS UFMyPSIkeyhxKVJQUzJ9In0gXAotICAgICAgICAke1JQUk9NUFQrUlBST01QVD0iJHsocSlSUFJP TVBUfSJ9IFwKLSAgICAgICAgJHtSUFJPTVBUMitSUFJPTVBUMj0iJHsocSlSUFJPTVBUMn0ifSBc Ci0gICAgICAgICR7UFNWQVIrUFNWQVI9IiR7KHEpUFNWQVJ9In0gXAotICAgICAgICAicHJlY21k X2Z1bmN0aW9ucz0oJHsocSlwcmVjbWRfZnVuY3Rpb25zW0BdfSkiIFwKLSAgICAgICAgInByZWV4 ZWNfZnVuY3Rpb25zPSgkeyhxKXByZWV4ZWNfZnVuY3Rpb25zW0BdfSkiIFwKLSAgICAgICAgInBy b21wdF9vcHRzPSggJHtwcm9tcHRfb3B0c1sqXX0gKSIgXAotICAgICAgICAncmVwbHk9KHllcykn CisgICAgenN0eWxlIC1lIDpwcm9tcHQtdGhlbWUgcmVzdG9yZSAiCisgICAgICAgIHpzdHlsZSAt ZCA6cHJvbXB0LXRoZW1lIHJlc3RvcmUKKyAgICAgICAgcHJvbXB0X2RlZmF1bHRfc2V0dXAKKyAg ICAgICAgJHtQUzErUFMxPSR7KHErKVBTMX19CisgICAgICAgICR7UFMyK1BTMj0keyhxKylQUzJ9 fQorICAgICAgICAke1BTMytQUzM9JHsocSspUFMzfX0KKyAgICAgICAgJHtQUzQrUFM0PSR7KHEr KVBTNH19CisgICAgICAgICR7UlBTMStSUFMxPSR7KHErKVJQUzF9fQorICAgICAgICAke1JQUzIr UlBTMj0keyhxKylSUFMyfX0KKyAgICAgICAgJHtSUFJPTVBUK1JQUk9NUFQ9JHsocSspUlBST01Q VH19CisgICAgICAgICR7UlBST01QVDIrUlBST01QVDI9JHsocSspUlBST01QVDJ9fQorICAgICAg ICAke1BTVkFSK1BTVkFSPSR7KHErKVBTVkFSfX0KKyAgICAgICAgcHJvbXB0X29wdHM9KCAkcHJv bXB0X29wdHNbKl0gKQorICAgICAgICByZXBseT0oIHllcyApCisgICAgIgogICB9CiAgIHNldF9w cm9tcHQgIiRAIgogCkBAIC0yNTMsMTIgKzIyOCw2IEBAIHByb21wdCAoKSB7CiBwcm9tcHRfcHJl dmlld190aGVtZSAoKSB7CiAgIGVtdWxhdGUgLUwgenNoCiAKLSAgIyBDaGVjayBmb3IgcHJvcGVy IHN0YXRlIGhhbmRsaW5nCi0gICgoICQrcHJvbXB0X3ByZXZpZXdfcmVzdG9yZSApKSB8fCB7Ci0g ICAgcHJvbXB0X3ByZXZpZXdfc2FmZWx5ICIkQCIKLSAgICByZXR1cm4KLSAgfQotCiAgICMgTWlu aW1hbCBwcmV2aWV3IGZvciBwcm9tcHRzIHRoYXQgZG9uJ3Qgc3VwcGx5IG9uZQogICBsb2NhbCAt YSBwcm9tcHRfb3B0cwogICBwcmludCAtbiAiJDEgdGhlbWUiCkBAIC0yNjgsMTIgKzIzNywyMCBA QCBwcm9tcHRfcHJldmlld190aGVtZSAoKSB7CiAgIHByb21wdF8kezF9X3NldHVwICIkQFsyLC0x XSIKICAgKCggJHsjcHJvbXB0X29wdHN9ICkpICYmCiAgICAgICBzZXRvcHQgbm9wcm9tcHR7YmFu ZyxjcixwZXJjZW50LHNwLHN1YnN0fSAicHJvbXB0JHtecHJvbXB0X29wdHNbQF19IgorCisgIFtb IC1uICR7Y2hwd2RfZnVuY3Rpb25zWyhyKXByb21wdF8kezF9X2NocHdkXX0gXV0gJiYKKyAgICAg IHByb21wdF8kezF9X2NocHdkCiAgIFtbIC1uICR7cHJlY21kX2Z1bmN0aW9uc1socilwcm9tcHRf JHsxfV9wcmVjbWRdfSBdXSAmJgotICAgIHByb21wdF8kezF9X3ByZWNtZAotICBbWyAtbyBwcm9t cHRjciBdXSAmJiBwcmludCAtbiAkJ1xyJzsgOgotICBwcmludCAtUCAiJHtQUzF9Y29tbWFuZCBh cmcxIGFyZzIgLi4uIGFyZ24iCisgICAgICBwcm9tcHRfJHsxfV9wcmVjbWQKKworICAjIFdlJ2Qg bGlrZSB0byBjYWxsIHpsZS1saW5lLWluaXQvZmluaXNoIGhvb2tzLCB0b28sIGJ1dCB0aGF0J3Mg bm90IHBvc3NpYmxlCisgICMgd2hpbGUgdGhlIFpMRSBpcyBub3QgYWN0aXZlLgorCisgIFtbIC1v IHByb21wdGNyIF1dICYmIHByaW50IC1uICQnXHInCisgIDo7IHByaW50IC1QIC0tICIke1BTMX1j b21tYW5kIGFyZzEgYXJnMiAuLi4gYXJnbiIKKwogICBbWyAtbiAke3ByZWV4ZWNfZnVuY3Rpb25z WyhyKXByb21wdF8kezF9X3ByZWV4ZWNdfSBdXSAmJgotICAgIHByb21wdF8kezF9X3ByZWV4ZWMK KyAgICAgIHByb21wdF8kezF9X3ByZWV4ZWMKIH0KIAogW1sgLW8ga3NoYXV0b2xvYWQgXV0gfHwg cHJvbXB0aW5pdCAiJEAiCi0tIAoyLjMxLjEKCg== --0000000000006d1d1505c27787e4--